每月收藏与分享(201902)

通过 RSS、社交网站等途径,每个月自己都能获取不少信息。对于自己阅读过的、有价值的文章,我曾尝试使用过 Instapaper、DEVONthink 等工具进行保存和归档,方便后续回顾和搜索。

后来,我看到有人通过博客等形式,每周分享自己阅读到的文章(例如这个这个),我觉得这是一种更好的方式,既能定期回顾自己获取的知识,也能同时将这些内容分享给其他人。所以,我也准备尝试一下,通过每月分享的形式,整理自己阅读到的有意思的内容。

当然,这仅仅是一个尝试,后续可能会根据实际情况,改为每周、每两周、或者每两月分享。或者进一步尝试使用个人 Wiki 等形式来进行更系统的整理和分享。

另外对于本文的排版,由于一些原因,无法达到理想中的效果。在后面的文章中自己将尝试解决。

继续阅读“每月收藏与分享(201902)”

课程推荐:Hacker Tools

Hacker Tools 是 MIT 的一系列讲座,介绍了在软件开发等场景中,能够大幅度提升效率的工具,例如 Shell 脚本、纯文本编辑器、版本控制系统等。

虽然对于课程中的大部分内容,很多人都应该或多或少的接触过,但是通过这门课程,能将这些知识系统的整理下来,从而在今后遇到问题时,能够意识到需要使用哪些工具,并主动尝试去使用。所以,如果想要进一步提升自己在电脑使用、软件开发方面的效率,推荐大家学习一下这一系列课程。

在我学习 Hacker Tools 之后,通过本文以思维导图的形式整理了课程的主要内容,方便进行查漏补缺和针对性的学习。

思维导图:Hacker Tools 简介
继续阅读“课程推荐:Hacker Tools”

Arduino Bootloader 程序下载协议

单片机通常通过编程器来下载程序。而 Arduino 中有一小段 bootloader 程序,在复位的时候运行,可以通过串口接收程序并写入单片机,因此可以不使用额外的编程器,直接通过串口下载程序。

前段时间,在为 AirTerminal 增加 XMODEM 协议的支持后,打算在下一个版本增加 Arduino 程序下载功能。所以先提前了解一下 Arduino Bootloader 使用的程序下载协议,并通过本文整理相关知识。

文章仅提供了解这些协议所需要的链接,对于协议的具体内容不再过多描述。文章内容将会根据自己的进一步了解不断更新。

Arduino 程序编译后的 HEX 文件,能被 Vim 正确识别并进行语法高亮
Arduino 程序编译生成的 HEX 文件,能被 Vim 正确识别并进行语法高亮
继续阅读“Arduino Bootloader 程序下载协议”

个人网站实现方案更新:Traefik 反向代理、与 NAS 共用 Wildcard 证书等

最近在我的 VPS 服务器升级完操作系统之后,想体验一下使用 Docker Swarm Mode + Traefik 部署应用,这样还可以把自己电脑、NAS 等设备加入 Swarm 集群,方便本地的 Docker 服务通过 overlay 网络在 VPS 服务器上供外部访问。

但由于 Swarm 模式下使用 IPv6 有一些不方便的地方,所以暂时还是考虑使用普通的非 Swarm 模式,通过 docker-compose 部署应用,同时进行了如下几点修改:

  1. 停用 nginx-proxy, 反向代理改用 Traefik
  2. 子域名使用通配符证书
  3. 通过脚本,使自己的 NAS、无线路由器,能够自动从 VPS 服务器中获取 SSL 证书,从而使自己的服务器和设备能够共用同一套证书
Traefik 的 Web 控制台截图,截图中是 HEALTH 界面,里面包含 Uptime, PID, Total Response, Average Response Time, Total Code Count, Code Count 统计计数。下方有两个图标,分别为 Average Response Time 折线图,以及 HTTP 状态码统计信息的柱状图。
继续阅读“个人网站实现方案更新:Traefik 反向代理、与 NAS 共用 Wildcard 证书等”

AirTerminal 1.2 更新:XMODEM 文件传输、自定义终端工作模式

AirTerminal 在 1.2 版本中增加了两个新功能:

  1. XMODEM 文件传输: 通过 XMODEM 协议,可以方便地在 iOS 设备和 BLE 设备中之间传输文件
  2. 自定义终端工作模式: 除了标准的终端,还可以设置将终端设置为本地回显行模式,以兼容没有实现完整 shell 的设备

新版 AirTerminal 已提交至 App Store,欢迎下载或更新。本文将详细介绍这两个功能的工作原理和使用方法。

AirTerminal 软件截图:使用 XMODEM 协议接收文件
继续阅读“AirTerminal 1.2 更新:XMODEM 文件传输、自定义终端工作模式”

再次折腾 HomeBridge

在我的 NAS 中,通过 Docker 运行了 HomeBridge,将第三方硬件接入 Apple HomeKit,实现了基于 iOS 的远程控制和自动化。

之前我的 HomeBridge 里只添加了三个 Yeelight 灯泡。而米家 Wi-Fi 插线板、空调伴侣等设备,没有对应的 HomeBridge 插件,所以无法添加。这个周末重新 HomeBridge 插件后,才发现由于 OpemMiHomemiio 等项目的出现,之前小米的那些不支持的设备,现在都有了 HomeKit 插件。所以趁这个周末,重新折腾了一下 HomeBridge,并通过本文记录了自己正在使用的 HomeBridge 插件。

我的 macOS 「家庭」 App 界面,界面中列出了我的所有设备,包括开关、传感器、摄像头等

继续阅读“再次折腾 HomeBridge”

今后打算实现的几个 Side Projects

可能是上小学时,家中的两本《无线电》杂志引起了我对电子制作的兴趣,上大学后,有了更多属于自己的时间,再加上学校提供了一个开放的实验室,以及在社团中遇到了几个同样对 DIY 有兴趣的同学,从此开始了自己的电子 DIY 之旅。

毕业上班之后,空闲时间大大减少,每次刷 RSS,看到 Hackaday 或者 Instructables 中的作品,都想亲手尝试制作一下。可想想自己的空闲时间,只好放弃。虽然也完成了 AirTerminal 等 App,但仅仅属于练手作品,功能上还非常简陋……

另外,从上大学起到现在,我一直习惯将自己的一些 ideas 收集、记录到 DEVONthink 中,不过也面临着「想法太多,时间太少」的问题。最近,在毕业两年的时候,重新回顾和整理了自己之前收集的想法,并确定了今后打算实现的一个软件项目和两个硬件项目

其实我也明白,这几个项目的工程量比较大,而我已经毕业,不像在学校那样有着非常多的空闲时间。只是希望通过这篇博客,提醒自己在有空的时候,按照计划,尽可能多地实现自己的想法。

我平时的一些想法,主要记录在 DEVONthink App 中

(PS:这是我毕业两年总结的一部分,完整的总结暂时仅对自己可见,可能会在进一步完善后,更新到博客上)

继续阅读“今后打算实现的几个 Side Projects”