images/default1.jpg

妥善处理Flutter的404 Not Found 未找到错误

Saturday, Jul 4, 2020

Flutter已经支持了Web端, 我们可以使用其创建动态网站了. Flutter能够处理来自Web的错误, 比如404未找到. 但是如何为Flutter应用创建自定义的404页面呢? 本文将介绍如何创建自定义页面, 用于用户在试图搜索不存在的页面时给用户友好提示. 在Flutter中将客户端重定向至自定义404页面 每个人在上网冲浪时都遇到过"404 Not Found"、“页面不存在"等等. Flutter通过自动将你重定向至初始路由来解决此问题(通常是APP首页). 观赏下一些大厂好看的404页面: AirBnb(爱彼迎) 的404页面 Github 的 404页面 Flutter 的 404页面 如果你想拥有一个类似上方精美的404页面该怎么办? Flutter可以轻松做到这一点. 想创建自定义404错误页面, 你的APP需要使用MaterialApp, CupertinoApp或WidgetsApp小部件. 大多数APP也是使用它们三个之一. 它是创建Flutter APP时调用的第一个小部件. MaterialApp通过以下顺序搜索路径来配置顶级导航器: 对于/路由, 使用 home 属性(如果不是null). 否则, 若 routes 包含该路由, 则通过其处理. 否则将会调用 onGenerateRoute (如果提供). 对于任何未被 home 和 routes 处理的有效路由, 它应返回非null值. 最后, 若上述均未处理路由, 则会调用 onUnknownRoute . 如果上述的方法均未处理路由, 将使用 onUnknownRoute 来处理. 此函数通常用于异常处理. 比如此函数总是生成一个"404"页面, 该页面描述了未找到的路由. 不存在的404路由可能是APP的bug生成, 也有可能来自外部请求. 下面将演示如何为onUnknownRoute属性定义匿名函数, 该函数使用了一个RouteFactory函数. 它是一个工厂函数, 该函数传入一个RouteSettings函数类型并返回一个Route. 以下代码块将会展示定义onUnknownRoute属性有多简单: `onUnknownRoute: (settings) { return MaterialPageRoute(builder: (_) => PageNotFound()); },` PageNotFound()是一个窗口Widget, 也就是404页面.
1 minute read
images/default1.jpg

WordPress 短代码 shortcode 转义为普通字符串

Tuesday, Jun 23, 2020

在使用WordPress进行创作时, 阿航碰到了需要将短代码转为普通字符展示在文章内. 本篇文章就来记录下如何将WordPress的短代码转义为普通字符串. 效果 将短代码转为普通字符串, 展示在屏幕上的 3 个方案的 2 种效果: [[epcl_box type=“information”]这是一条被短代码包住的信息![/epcl_box]] [epcl_box type="information"]这是一条被短代码包住的信息![/epcl_box] 场景 阿航的网站上有这样的提示短代码: [epcl_box type=“information”]这是一条被短代码包住的信息![/epcl_box] 在转义前, 我们是这样输入的: [epcl_box type="information"]这是一条被短代码包住的信息![/epcl_box] 很明显, 这样输入会被WordPress自动转为短代码. 需具备的条件 你掌握WordPress的基础使用 本篇文章的环境: 解决方案 方案一: 被"“包裹 此方案非常简单, 只要我们使用<code></code>标签将短代码括住, 代码将被自动转义, HTML写法 (区块编辑器直接找"代码"区块, 输入即可) : <code> [epcl_box type="information"]这是一条被短代码包住的信息![/epcl_box] 效果: [epcl_box type="information"]这是一条被短代码包住的信息![/epcl_box] [epcl_box type=“success”]顺利搞定![/epcl_box] 方案二: 被”[]“包裹 此方案也相当简单, 我们在短代码外包裹一层”[]". 写法改为: [[epcl_box type="information"][/epcl_box]] 效果: [[epcl_box type=“information”]这是一条被短代码包住的信息![/epcl_box]] [epcl_box type=“success”]搞定! 本方法相当方便![/epcl_box] 方案三: 使用转义字符串 此方法需要我们的重点就是把[和]转为转义字符串. 一张表格查看对应关系: 转义前 转义后 [ &#91; ] &#93; [shortcode] &#91;shortcode&#93; 那么, 我们上述例子的最终写法应为:
1 minute read
images/default4.jpg

IDEA 一键部署 SpringBoot 项目到远程服务器 Docker 内

Sunday, Jun 21, 2020

Docker作为当前较为流行的微服务容器管理工具, 极大的方便了传统运维部署的工作. IDEA作为地表最强Java开发IDE, 自然提供了对Docker服务的支持. 本篇文章就来记录下如何使用IDEA 一键部署 SpringBoot 到远程服务器 Docker 内. 应用场景 先来看下传统的部署流程: 传统开发流程还好, 每个版本的间隔时间较长. 但是对于小型敏捷开发团队, 这个流程就很要命了! 阿航个人的经验, 每个项目从打包到重启Docker服务器, 预计要花费近10~20分钟! 痛不欲生. 需具备的条件 你了解服务器的基本使用. 你掌握Docker/Dockerfile的使用. 你掌握基础的Bash命令. 本篇文章的环境: 实战开始 [epcl_box type=“notice”]本篇教程小步骤较多! 只要稍有疏忽就可能导致失败! 请实践时仔细阅读教程![/epcl_box] 生成CA公钥私钥 进入安装了Docker的远程服务器, 创建目录ca, 用于存储docker ca认证文件: mkdir -p /usr/local/ca 进入该目录中: cd /usr/local/ca 执行以下命令, 生成公钥及私钥. 需要输入你自己的密码. 记住该密码, 下面会多次使用: openssl genrsa -aes256 -out ca-key.pem 4096 执行以下命令, 根据提示分别输入你的信息: openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem 执行以下命令生成key: openssl genrsa -out server-key.pem 4096 执行以下命令, 把$HOST替换为你的远程服务器的IP地址:
2 minute read