夏天的野兽

在直面灵魂深处的一次拷问后,我所坚信,所践行的生存准则产生了自相矛盾的问题。

第一

在家挂了两次科目二以后,我跑到上海来玩了一圈,美名其曰毕业旅行。

阅读剩余部分

Ubuntu 中所包含的 Snap 为我们解决了什么问题?

在过去,想发布一个 Linux 应用程序会带来很多问题:

  • 程序文件遍布整个系统
  • 需要复杂的代码来管理安装与更新
  • 操作不是事务性的(如果操作失败,对系统的影响仍然会保留)

如今,在 Ubuntu 中已经提供了解决这些问题的方案,这就是 Snap 与 Snapcraft(https://snapcraft.io/)。它可以提高应用程序的发布频率,支持订阅渠道来控制用户风险级别(例如用户可以订阅测试版),即使发布更新失败也不需要用户参与。

Snap 同时也伴随着一些问题:

  • 理论上支持安装到任何操作系统,但目前还不支持 CentOS
  • 服务端是闭源的,需要通过 Snap 应用商店来发布你的应用,你无法运行一个私有的软件源

而 Ubuntu 自 16.04 版本开始内置了 Snap 应用程序,如果今天想发布一个 Linux 下的应用,Snap 可以算是一个还不错的方案。

阅读剩余部分

2017 工程实践总结

在 2017 年我没有将时间花在学习任何一门新技术上,仅仅读了《调试九法:软硬件错误的排查之道》与《代码之髓》。更多地将时间花在了在工程与业务实践:用 Laravel 及周边的生态环境来开发项目。

在这一年我参与开发了五个项目:

  • 考试系统
  • 掌上校园
  • 工资条
  • 在线表单
  • ERP

考试系统与在线表单不同于其他的业务型项目,无论是前端还是后端的逻辑都有着不同程度的复杂度,是存在技术挑战的。比如在线考试模块,分为参与考试以及预览,对于前端工程化的要求更高,需要将功能拆分成一个个小组件,同时也需要以 Vue 的思路来达到效果。还有模拟 Web 分页,Canvas / GD 图像操作,PDF 操作等问题,好在这些功能一个个算是可以使用了。

开源社区方面:

  • 在 GitHub 创建了一个新的项目
  • 用 Bulma.css 写了一个 Typecho 模板

代码之外:

  • 参与了一次 GDG China 的社区活动
  • 为 Laravel 文档的中文翻译以及 PHP 之道的中文翻译分别提交了一次 PR
Laravel 的 Migrations 为我们解决了什么问题?

Laravel 为我们提供了数据库结构操作功能 Migrations (数据库迁移),我们可以通过它创建一张数据库表,改变其中的结构,并在此基础上提供迁移回滚功能。

但是,我们公司在进行 Laravel 开发的时候没有用到这个功能,先谈谈我们是怎么做的:

  1. 通过数据库建模工具导出 SQL 到数据库
  2. 大家连接到服务器上的公共数据库进行开发
  3. 表结构因需求变化时用 Navicat for MySQL 直接更改

直到我发现 Django 和 Cake PHP、Ruby On Rails 也提供类似的功能,我觉得我需要重新认识 Migrations 了。

阅读剩余部分