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

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

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

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

技术类

APFS 与 Fusion Drive

我的电脑曾经使用了 Fusion Drive,将固态硬盘与机械硬盘整合成一个硬盘,并自动将常用文件放在固态硬盘上、将不常用文件放在机械硬盘上,以取得性能和容量上的平衡。

在 macOS High Sierra 上,APFS 成为了 macOS 的默认文件系统,但这个版本的 APFS 不支持 Fusion Drive,也没有对机械硬盘做优化。所以为了体验 APFS,我把我的 Fusion Drive 拆分成固态硬盘和机械硬盘,分开来使用。虽然这样做能充分发挥固态硬盘的性能,但是需要手动维护将文件放在哪块硬盘上;而且 FileVault 只对系统盘生效,另一块硬盘如果想使用全盘加密的话,必须单独打开;另外两块硬盘上的快照是各自维护的,无法整合在一起。总之,对我来说,使用体验上,还是 Fusion Drive 更出色。

macOS Mojave 上的 APFS,终于带来了对 Fusion Drive 和机械硬盘的支持,所以在这个月,我又重新把硬盘设置为 Fusion Drive,同时进一步了解了一下基于 APFS 上 Fusion Drive.

简单说,旧版的 Fusion Drive 是基于 Core Storage 逻辑卷管理器(LVM)的,文件系统不感知、也无法决定将文件放在哪块硬盘上,而是靠 LVM 以 Block 为单位来管理。APFS 上的 Fusion Drive 不基于 Core Storage,而是直接基于文件系统,所以能够根据文件类型,更加「智能」地决定文件存放在哪块硬盘上。具体体现在如下几个方面:

  • APFS 能够根据文件类型,决定将哪些类型的文件放在 SSD 上,如果某些类型的文件(例如较大的视频)放在 SSD 上,并不能对使用体验有太多提升,则不会将文件放在 SSD 上
  • APFS 将文件的元信息(metadata)全部存放在 SSD 上,加速 Spotlight 搜索和文件属性查看
  • APFS 的 CoW 等特性会产生大量硬盘碎片,对机械硬盘有较大的性能影响,个人猜测 APFS 对 Fusion Drive 中的机械硬盘,做过类似碎片整理的优化(只是个人猜测,没找到具体的资料,也没有实际验证)

对于 APFS 和 Fusion Drive 的实现细节,可阅读如下几篇文章:

如下文章以开发者角度对 APFS 进行详细介绍:

  • Apple File System Guide:这份文档主要介绍了 APFS 的新特性

  • Apple File System Reference:APFS 的数据结构(根据文档内容,APFS Fusion Drive 中的固态硬盘,似乎是做为缓存盘使用的,固态硬盘中的数据在机械硬盘中也会保存一份,而不是在两个硬盘上来回移动。但文档中对 APFS 的介绍太少,无法详细确认)

  • APFS:介绍 APFS 实现的一份 PPT

对于第三方应用的开发者,可以使用 APFS 的新特性来实现更多功能,或者优化程序的性能,具体可参考如下几个例子:

通过命令行工具,可以实现对 APFS 的高级操作,例如:

  • diskutil apfs list:列出所有 APFS 容器,并显示其状态
  • diskutil apfs listSnapshots:显示 APFS 的快照信息
  • diskutil apfs defragment:对机械硬盘进行碎片整理,也可以设置为自动整理机械硬盘的碎片

另外,这篇文章介绍了开发者所需要了解的 SSD 基础知识。虽然与 APFS 无关,但也值得阅读:

Windows 10 on ARM

Windows 10 已经支持 ARM 架构,所以之前已经有人在 Raspberry Pi 和 Lumia 950 上运行了完整桌面版的 Windows 10.

但是之前的方法太过繁琐,我并没有尝试。而最近发现的 WOA Deployer 这款工具,能够更加方便地将 Windows 10 on ARM 部署到 ARM 设备上:

在没有 Raspberry Pi 或者 Lumia 950 的情况下,还可以使用 QEMU 来体验 Windows 10 on ARM:

空闲时间我也尝试使用在 Raspberry Pi 上安装了 Windows 10,并意外地发现,Windows Subsystem for Windows 也支持 ARM 架构。同时,我还用鲁大师给 Raspberry Pi 跑了个分😂:

Windows 10 on Raspberry Pi,鲁大师上显示的系统信息,能够正确识别出来是树莓派
Raspberry Pi 上鲁大师显示的系统信息,能够识别出来 CPU 型号
Windows 10 on Raspberry Pi 的鲁大师跑分结果,2855 分
Raspberry Pi 上鲁大师的跑分结果:2855 分
Windows Subsystem for Linux 在 Raspberry Pi 上正常运行,uname 信息里面能够看到是 aarch64 架构
Windows Subsystem for Linux 在 Raspberry Pi 上正常运行,uname 信息里面能够看到是 aarch64 架构

使用 GDB 调试 Linux 内核

下面几篇文章介绍了在 QEMU 或 VirtualBox 上,使用 GDB 调试 Linux 内核的方法。自己平时也会接触一些 Linux 内核态的代码,希望这几篇文章在以后能够对自己一定的帮助。

安全相关

其他

书单

工具

Making

游戏

俄罗斯方块的玩法与技巧

最近任天堂发布了俄罗斯方块 99,将俄罗斯方块与「吃鸡」的玩法结合起来。通过这个游戏,我才第一次知道现代俄罗斯方块中,T-Spin 之类的技巧。

如下几个视频,是噗哟噗哟俄罗斯方块(官方译名:魔法气泡™ TETRiS®)中关于俄罗斯方块的教学视频,通过这些视频,我才知道俄罗斯方块有这么多的技巧:

另外,这个视频介绍俄罗斯方块的历史,包括在这个游戏上发生过的,复杂的版权之争:

关于游戏的无障碍设计(Accessbility)

其他

更多

最后修改日期: 2021-05-11

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据