暂停 Facebook 集成

这几天收到了几次来自 Facebook 的通知,第一次是 “Request for Information/Action” (最早申请时还没有 Privacy Policy,但后来补上了),但过了几天之后系统表示无法完成 compliance review,并直接禁用了该 App。

阅读全文…( 本文约 271 字,阅读大致需要 1 分钟 )

作弊条:Dokuwiki 和 Remark42 的集成

我的 Wiki 之前使用的是 Disqus 的评论系统, 而 remark42 支持多个网站,因此这次顺手把评论系统也搬到了上面。

阅读全文…( 本文约 279 字,阅读大致需要 1 分钟 )

迁移到了基于 Remark42 的评论系统

上回书 说到启用了基于 isso 的评论系统,其实当时还发现了一个功能相当强的评论系统 remark42, 但该系统是 Go 写的,并且依赖的其他软件包要比 isso 多不少,因此当时没有下定决心换成这个。

阅读全文…( 本文约 2067 字,阅读大致需要 5 分钟 )

iCloud 的 Advanced Data Protection

最近 Apple 的一系列更新中的一项新的安全特性是 iCloud 的 Advanced Data Protection, 大概看了一下还是挺有意思的。

阅读全文…( 本文约 1473 字,阅读大致需要 3 分钟 )

重启手工记账

上回用 beancount 来手工记账是 2018 年的事,当时想要这么做的原因是贵厂的 Waze Carpool 项目当时并没有提供非常方便理解的记账系统,因此结合每月的对账单和 Waze 记录的数据来统计一下相关的数据,同时也把手中的现金一类没有对账单的小额资金给管起来。 后来又逐渐加入了一些其他的类似 PayPal 之类的付款记录,但是随着疫情的发展,到 2020 年初的时候已经不再有新的记录,慢慢也就把记账的事情给搁置下来了。

今年出于计算个税的需要,我又重新开始了记账。最初的想法是只把工资单的自动导入做好, 但后来想到既然 #来都来了 索性就把相关的解析全都做了好了。

阅读全文…( 本文约 1342 字,阅读大致需要 3 分钟 )

UGFzc3dvcmQ6 是什么?

| Security | #Postfix | #SASL | #Base64 | #Logging | #Debug | #Email

今天无意中看了一眼服务器日志,结果发现了一些奇怪的消息:

1
2
3
4
5
6
7
8
9
warning: unknown[122.168.199.151]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[176.8.89.240]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[185.232.21.42]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[206.217.216.13]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[220.196.249.145]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[5.253.204.74]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[70.45.212.49]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[93.177.73.82]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
warning: unknown[93.177.75.66]: SASL LOGIN authentication failed: UGFzc3dvcmQ6

这里的 UGFzc3dvcmQ6 是什么呢?从直觉上看似乎是个 base64 编码的字符串。解码试试看,果然:

阅读全文…( 本文约 221 字,阅读大致需要 1 分钟 )

Moving toward a standarized qsort_r(3)

History of qsort_r(3)

First introduced in Research Unix V3 and eventually standardized as part of C Standard Library as of ANSI/ISO C89, qsort(3) provided an abstract interface where programmers can perform sort operation over an array of objects, by supplying a pointer to that array, the total number of the member objects, the size of individual member object, as well as a compare function. The compare function is expected to take two parameters, both pointers to a member object, and it shall return a negative number, 0, or a positive number, if the first object is considered smaller, equal, or greater respectively.

阅读全文…( 本文约 2277 字,阅读大致需要 11 分钟 )

BIOS 串口波特率设置

今天 Warner 改了一段注释,我于是学到了一些新的 犀利而无用的知识,在这记一笔。

当从 BIOS 引导时,假如是使用 FreeBSD 的 boot manager(写入VBR的boot0或boot0sio), 该 boot manager 实现了一个菜单,因为这个菜单的原因,实现串口异步通讯的代码就塞不下了, 于是 boot0sio 会调用 BIOS int 14h 去初始化串口。

然而 int 14h 提供的接口是1981年的设计(IBM 5150的BIOS是1981年4月24日发表的, 当时只有 8 kB),用来表达波特率的只有3个bit,这3 bit作为波特率除数表的索引值, 该表在1981年写死成了:1047, 768, 384, 192, 96, 48, 24, 12,因此最高的波特率就是 115200 / 12 = 9600

由于 9600 还是比较慢(每秒只能传1200字节),因此现时的 BIOS / EFI 往往默认将串口波特率设为 115200,然而 FreeBSD 的 boot0sio 在引导时仍然会一上来就把串口波特率设为 9600, 解决方法是干脆不要用 boot0sio 而是使用 BIOS 提供的 Console Redirect 功能, 或是在编译时将 BOOT_COMCONSOLE_SPEED 设置为 0

阅读全文…( 本文约 661 字,阅读大致需要 2 分钟 )

TCP 协议合订本出了

| Networking | #TCP/IP | #RFC | #TCP | #IETF | #Networking | #Standards | #网络

我们现在所说的 TCP 协议通常是指 1981 年 9 月 发表的 RFC 793 和一系列后续 RFC 定义的协议,其主体定义距今已经超过 40 年了(当然如果细究下去的话, 第一份正式的文档是 RFC 675, 而 RFC 793 本身也是针对一年前的 RFC 761 的修正,不过大部分实现者使用的基础依然是 RFC 793)。

阅读全文…( 本文约 356 字,阅读大致需要 1 分钟 )

在 Thunderbird 中使用另外的 email 地址和 SMTP 服务器发邮件

| Cheatsheets | #Thunderbird | #作弊条

很久以前在 macOS 上配置了一次,然后具体怎么配给忘了一个干净,所以这次写一个作弊条。

阅读全文…( 本文约 345 字,阅读大致需要 1 分钟 )