选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……
我的 Wiki 之前使用的是 Disqus 的评论系统, 而 remark42 支持多个网站,因此这次顺手把评论系统也搬到了上面。
Read more...上回书 说到启用了基于 isso 的评论系统,其实当时还发现了一个功能相当强的评论系统 remark42, 但该系统是 Go 写的,并且依赖的其他软件包要比 isso 多不少,因此当时没有下定决心换成这个。
Read more...最近 Apple 的一系列更新中的一项新的安全特性是 iCloud 的 Advanced Data Protection, 大概看了一下还是挺有意思的。
Read more...上回用 beancount 来手工记账是 2018 年的事,当时想要这么做的原因是贵厂的 Waze Carpool 项目当时并没有提供非常方便理解的记账系统,因此结合每月的对账单和 Waze 记录的数据来统计一下相关的数据,同时也把手中的现金一类没有对账单的小额资金给管起来。 后来又逐渐加入了一些其他的类似 PayPal 之类的付款记录,但是随着疫情的发展,到 2020 年初的时候已经不再有新的记录,慢慢也就把记账的事情给搁置下来了。
今年出于计算个税的需要,我又重新开始了记账。最初的想法是只把工资单的自动导入做好, 但后来想到既然 #来都来了 索性就把相关的解析全都做了好了。
Read more...今天无意中看了一眼服务器日志,结果发现了一些奇怪的消息:
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
编码的字符串。解码试试看,果然:
echo "UGFzc3dvcmQ6" | base64 --decode
Password:
这是个 Postfix 特有的特性,为了防止不慎在日志中写下用户的密码,它记录的是 SASL 库发给客户端的消息而不是用户名。
Read more...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.
Read more...今天 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
。
我们现在所说的 TCP 协议通常是指 1981 年 9 月 发表的 RFC 793 和一系列后续 RFC 定义的协议,其主体定义距今已经超过 40 年了(当然如果细究下去的话, 第一份正式的文档是 RFC 675, 而 RFC 793 本身也是针对一年前的 RFC 761 的修正,不过大部分实现者使用的基础依然是 RFC 793)。
于本月18日发布的 RFC 9293 把过去四十几年针对 TCP 协议的各种修补全部合订到了一起,一次性地替代了 RFC 879 The TCP Maximum Segment Size and Related Topics、 RFC 2873 TCP Processing of the IPv4 Precedence Field、 RFC 6093 On the Implementation of the TCP Urgent Mechanism、 RFC 6429 TCP Sender Clarification for Persist Condition、 RFC 6528 Defending against Sequence Number Attacks、 RFC 6691 TCP Options and Maximum Segment Size (MSS)、 和主体 RFC 793 TRANSMISSION CONTROL PROTOCOL, 此外它整体替换了 RFC 1122 Requirements for Internet Hosts – Communication Layers 中关于 TCP 的全部内容。
Read more...很久以前在 macOS 上配置了一次,然后具体怎么配给忘了一个干净,所以这次写一个作弊条。
Read more...Telegram 最近宣布了其订阅付费计划。 说起来我也不是特别信任其安全/隐私方面的特性(*),不过作为一个跨平台即时通讯软件来说, 其在不同平台上的功能基本上做到了完全一致,并且在这个礼崩乐坏 的时代,能够在不同平台上都做到不狂吃CPU/内存,在不同平台上的界面行为上高度一致, 并且完全没有各种令人抓狂的智障设计(举例来说:随便干什么事情都弄个二维码还非让你扫描一下借此获得摄像头权限、 多机登录时以手机为主并且时不时就得再扫描一次二维码、完全无法回溯的会话引用、 没头没脑地给一条「有人@你」的通知,却无法迅速定位到消息等等),并且公开客户端源代码以便第三方进行代码审计, 确实是十分难得的。
Read more...