Stanford CS140e 学习笔记 (1):Rust 基础、LED 闪烁

CS140e 是 Stanford 的一门操作系统课程。与其他操作系统课程相比,该课程使用现代的程序设计语言 Rust 来编写实验代码;且所有代码运行在 Raspberry Pi 3 上,通过真实硬件进行实验,学习起来应该更有乐趣。

目前有进一步熟悉操作系统基础知识的想法,而且手上刚好有一块正在吃灰的 Raspberry Pi,所以打算从这门课开始学习。

本文主要记录 Assignment 0: Blinky 的学习经过。

继续阅读“Stanford CS140e 学习笔记 (1):Rust 基础、LED 闪烁”

[WordPress 插件] 通过 Coinhive 评论验证码,以挖矿的形式过滤垃圾评论

Monero 挖矿网站 Coinhive 推出了一款 Proof of Work 验证码,用于取代传统验证码,通过进行一定量的挖矿运算,来验证用户是否为机器人,并为站长带来 XMR 收益。

本插件在 Add reCAPTCHA to comment form 的基础上进行修改,将 Google reCAPTCHA 替换为 Coinhive 验证码,实现垃圾评论过滤和 XMR 挖矿的功能。

可从 GitHub 中获取该插件:https://github.com/blanboom/coinhive-captcha-for-wordpress-comments

继续阅读“[WordPress 插件] 通过 Coinhive 评论验证码,以挖矿的形式过滤垃圾评论”

[iOS] AirTerminal: 用于 Raspberry Pi 等嵌入式设备的蓝牙终端

AirTerminal 是我近期完成的一个 iOS App 作品,能够通过蓝牙 4.0 BLE 连接蓝牙串口透传模块,访问 Raspberry Pi 等设备的串口终端。该 App 可在没有 Wi-Fi 或 SSH 连接的情况下访问嵌入式设备,方便对设备进行操作或调试。

经历了 Apple 谜一样的审核流程(等待审核状态持续了 45 天,然后只用了不到 45 分钟就审核通过😂),AirTerminal 已在 App Store 上架,下载链接:https://itunes.apple.com/cn/app/id1296588408

AirTerminal with screenfetch

继续阅读“[iOS] AirTerminal: 用于 Raspberry Pi 等嵌入式设备的蓝牙终端”

RT1900ac 路由器折腾笔记:安装 Homebridge 和 Plex Media Server

RT1900ac 是群晖 (Synology) 推出的第一款无线路由器,其操作系统 SRM 相当于简化版的 DSM(群晖 NAS 所使用的操作系统),在软件上较有优势。

可能是因为硬件性能,或是其他方面的考虑,群晖官方一直没有把其 NAS 上的大部分软件移植到 SRM 上,例如 Cloud Sync, Video Station 等,此外一些第三方软件,例如 Plex Media Server, 也没有推出兼容 SRM 的版本。

最近在网上看到了一篇在 RT2600ac 上安装 Plex Media Server 的教程,于是又有了折腾路由器的想法,开始在 RT1900ac 上安装自己需要软件。

运行在 RT1900ac 路由器上的 Plex Media Server

继续阅读“RT1900ac 路由器折腾笔记:安装 Homebridge 和 Plex Media Server”

一道智力题

最近在同学的 QQ 空间上,发现了这样一道智力题:

有一条河,河边有一个猎人牵着一头狼,一个男人带着两个小男孩,还有一个女人带着两个小女孩。
如果猎人离开,狼就会把所有人吃掉。
如果男人离开,女人会把两个小男孩掐死。
如果女人离开,男人会把两个小女孩掐死。
河里有一条船,船上只能乘坐两人(狼算一人),只有猎人、男人、女人会划船。
如何使他们全部过河?

看到这道题,首先想到的是农夫过河问题。既然这两个问题十分相似,那我就尝试按照农夫过河问题的思路,通过程序来找出该题的解。

继续阅读“一道智力题”

[iOS] HackerRemote: 蓝牙遥控器 App, 支持数据的双向收发

这是我前段时间学习 Swift 时的练手作品,也是我的第一个 iOS App.

HackerRemote 是一个游戏手柄形状的蓝牙 (BLE) 遥控器,可搭配 DFRobot Bluno 或蓝牙转串口模块,用于各种需要手机遥控的电子制作。

除了能将数据发送至蓝牙设备,该 App 还可以从设备中接收数据(例如电池电量、飞行器飞行高度等),并显示在界面上,方便查看设备信息,对设备进行调试。

HackerRemote 截图

App 的界面还比较简陋,在功能上,还有一些想法尚未实现。我会在空闲时间,根据情况对其进行进一步完善。

下载链接:

https://itunes.apple.com/cn/app/id1120243546

继续阅读“[iOS] HackerRemote: 蓝牙遥控器 App, 支持数据的双向收发”

使用 C 和 Allegro 实现的 NES 模拟器

NES (Nintendo Entertainment System, Wikipedia) 是历史上一款著名的游戏机,由任天堂于 1983 年推出,又被称做 FC (Family Computer) 或红白机。在国内,或许大家对「小霸王学习机」这个名字更加熟悉,应该有不少人就是在这台学习机上第一次接触了电子游戏。其实,「小霸王学习机」就是 NES 的山寨版,兼容 NES 游戏,在硬件上与 NES 基本相同。

即使对游戏不感兴趣的人,听到「超级马里奥」(超级玛丽)等,也应该不会陌生。而这些游戏角色,正是由于 NES 的普及,才变得更加知名。

在 NES 推出的时候,计算机多媒体技术并不是十分发达。而且不论是 NES,还是当时流行的 Apple II,其内存只有几 KB 到几百 KB. 为了能够流畅地显示游戏画面、播放游戏声音,NES 采用了不少巧妙的技术。

继续阅读“使用 C 和 Allegro 实现的 NES 模拟器”

2015 电赛风力摆题:我的方案

2015 年全国大学生电子设计竞赛刚刚结束。我们组选择了 B 题:风力摆控制系统。题目要求如下:

一长约 60cm~70cm 的细管上端用万向节固定在支架上,下方悬挂一组 (2~4 只) 直流风机,构成一风力摆,如图 1 所示。风力摆上安装一向下的激光笔,静止时,激光笔的下端距地面不超过 20cm。设计一测控系统,控制驱动各风机使风力摆按照一定规律运动,激光笔在地面画出要求的轨迹。

趁这段时间,整理一下我们组的方案。

继续阅读“2015 电赛风力摆题:我的方案”