C语言的”代码化石“出土:1979年的英文文本判别器

6 月 6 日
阅读 4 分钟
158
图中是一段出土自 Unix V7 系统“遗迹”的 C 语言代码,这段代码可追溯至距今 40 余年的 1979 年左右,作者是 Ian Darwin。它是早期 file 命令源代码的一部分。

小众语言的巧思:F#为基础类型添加了单位

5 月 30 日
阅读 2 分钟
303
NASA 火星气候轨道器的灾难性事故:混淆了英制单位(磅力)和公制单位(牛顿),导致经过近 10 个月的长途跋涉后,上亿美元的探测器在接近火星时解体

Go语言如何处理计量单位不一致的数值运算

5 月 28 日
阅读 2 分钟
328
这个问题的本质在于,一旦使用原始类型(如 float64 或 int 等)表示长度、时间、重量等带单位的数值,就极易导致单位混淆——不小心将“1 米”和“1 英尺”直接相加,算出 2 米,犯个低级错误。因此,关键在于如何巧妙地利用 Go 的类型系统,在编译阶段就杜绝这类失误。

跨越数百年的巧合:Python 选中 @ 符号表示矩阵乘法

5 月 23 日
阅读 3 分钟
263
该提案以解决当前代码中的问题为主,没有任何“考古”元素,并没有参考 @ 在人类历史上的其他用法。于是,从提案落地实施的那一刻起,一个跨越数百年的巧合悄然发生了。

订阅按钮上的文字可以有多古怪?Tedium把“SUBSCRIBE”写成了“SHORYUKEN!”

5 月 18 日
阅读 2 分钟
363
在浏览器的地址栏中输入 tedium.co,映入眼帘的便是一个极具辨识度的首页:醒目到晃眼的红白配色,大字号的文本,巨大的文本框……环绕在红色方框周围的是一排排紧凑排列、循环播放的灰白色动画,短促且重复。与其说是动画,不如说是有规律的连续抽动,给人一种奇妙的感觉。[链接] 的首页这时,目光很容易被那个大大的文本...

操作系统有个代号不稀奇,但轮番换了多个就离谱了

5 月 13 日
阅读 2 分钟
337
操作系统厂商通常会为旗下的操作系统赋予有别于正式名称的代号。比如,微软曾用 Chicago、Memphis、Whistler 分别作为 Windows 95、Windows 98、Windows XP 的代号;苹果则一开始是大猫系列的代号,Cheetah、Panther、Tiger……,后来改走国家地理风,什么 Yosemite、Mojave、Big Sur……。这些代号往往只是开发团队用来区分...

浅谈Go语言的time.Duration:优雅还是鸡肋?

5 月 7 日
阅读 3 分钟
382
在日常的代码中,我们经常要和时间间隔(duration)打交道。比如设置超时时间或过期时间、接口调用失败后等几秒再重试、测量某段代码跑了多久,等等。总之——不是在设置等待多久,就是在计算花费了多长时间。

PHP核心开发者Nikita的首次提交,就实现了个寂寞啊

4 月 25 日
阅读 2 分钟
573
Nikita Popov 曾是 PHP 社区中备受尊敬的核心开发者之一。几年间,他深度参与了性能优化工作,一边不断实现新功能,一边修复历史遗留的大量错误,是把 PHP 从“老旧脚本语言”推动为“现代编程语言”的关键人物之一。

会写TypeScript就能理解日语语法——Typed Japanese项目能做到(吗?)

4 月 16 日
阅读 6 分钟
437
近日,Yifeng Wang 和 Satoshi Terasaki 发布了名为 Typed Japanese 的开源项目。该项目旨在借助 TypeScript 的类型系统帮助程序员学习日语。会写 TypeScript 就能理解日语语法——自然语言的语法规则完全可以映射到 TypeScript 的类型系统之中。
封面图

AI画疯了,扛着AI反AI的也来了!开发Chrome插件专门屏蔽吉卜力风格的图片

4 月 9 日
阅读 3 分钟
557
近日,ChatGPT 解锁了全新的 AI 图片生成功能,现在只需一句话,就能把照片变成“吉卜力风格”。没过几个小时,网络就已经被各种吉卜力风格的图片和梗图攻占。

PHP又出Bug了?md5('240610708')竟然等于 md5('QNKCDZO')!

3 月 30 日
阅读 2 分钟
700
如下图所示,'240610708' 和 'QNKCDZO' 是两个完全不同的字符串,它们的 MD5 哈希值自然也不相同。可为什么明明不同,PHP 还会认为这两个哈希值相等呢?更离谱的是,从 2004 年底的 PHP 4.3.10 版本开始,这个“问题”至今一直存在,所有后续版本都会认为它们是相等的!

氛围编程Vibe Coding的梗图

3 月 27 日
阅读 2 分钟
741
今年 2 月初,OpenAI 联合创始人、前特斯拉 AI 负责人 Andrej Karpathy 于社交平台上提出了氛围编程 Vibe Coding 这一概念。仅仅过了一个多月,这一术语就迅速席卷了开发者社区。

难以想象!cURL的前身竟是如此粗糙的300多行代码?

3 月 20 日
阅读 4 分钟
608
今天,cURL 无疑是全球最受欢迎的网络工具之一,下载量突破百亿次,几乎每个开发者的工具箱里都少不了它。无论是大型项目,还是写着玩的小脚本,往往都要依赖 cURL 来进行数据传输。据说 NASA 使用了 cURL 进行火星探测器数据传输!这让 cURL 成为第一个在地球外运行的开源软件。

Python 3.14版本的彩蛋

3 月 17 日
阅读 2 分钟
596
使用 3.14 版本的 Python 创建一个虚拟环境,会看到在虚拟环境的 bin 目录中,不仅有 python3、python3.14 等常规文件,竟然还存在一个特殊的文件 𝜋thon。

用汇编语言编写计算两整数之和的程序(下)

3 月 4 日
阅读 3 分钟
497
本文节选自《计算机是怎样跑起来的(第2版)》第 3 章“体验汇编语言”的草稿。在翻译本章时,我们发现原书所使用的软件仅提供日文界面,并且介绍的是主要用于日本计算机相关考试的 CASLⅡ 汇编语言,其通用性相对较低。为了让内容更广泛适用,并便于读者实践操作,与作者及编辑老师商议后,决定采用更为通用的 NASM 汇编语...

用汇编语言编写计算两整数之和的程序(中)

3 月 3 日
阅读 4 分钟
670
本文节选自《计算机是怎样跑起来的(第2版)》第 3 章“体验汇编语言”的草稿。在翻译本章时,我们发现原书所使用的软件仅提供日文界面,并且介绍的是主要用于日本计算机相关考试的 CASLⅡ 汇编语言,其通用性相对较低。为了让内容更广泛适用,并便于读者实践操作,与作者及编辑老师商议后,决定采用更为通用的NASM 汇编语...

用汇编语言编写计算两整数之和的程序(上)

3 月 3 日
阅读 4 分钟
618
本文节选自《计算机是怎样跑起来的(第2版)》第 3 章“体验汇编语言”的草稿。在翻译本章时,我们发现原书所使用的软件仅提供日文界面,并且介绍的是主要用于日本计算机相关考试的 CASLⅡ 汇编语言,其通用性相对较低。为了让内容更广泛适用,并便于读者实践操作,与作者及编辑老师商议后,决定采用更为通用的 NASM 汇编语...

还记得十几年前PHP那个0x00+2=4的Bug吗

2 月 28 日
阅读 4 分钟
586
十几年前,在还能因“PHP 是最好的语言”而争论起来、还能在上海举办 PHPCon 的那个时代,记得看到过 0x00+2=4 这么一个有关十六进制加法的 Bug([链接])。

也许错过了这期杂志就没有今天的微软公司了

2 月 24 日
阅读 2 分钟
611
1974 年 12 月,冒着剑桥市清晨刺骨的寒风,保罗·艾伦兴奋地捧着一本《Popular Electronics》(大众电子)杂志,像跑步冠军一样飞奔到哈佛大学去找好友比尔·盖茨。谁能想到,这本 1975 年 1 月刊的杂志,竟然促成了微软公司的诞生。

在2000年前后,硬盘分区把26个字母都用完会怎样?——c(24)来自DOS v4.0源代码的答案

2 月 20 日
阅读 3 分钟
519
2000 年前后,主流的 Windows 95/98 并未提供图形化的硬盘分区工具,人们不得不先使用一个叫作fdisk的命令来创建分区,再格式化 C 盘,然后才能开始安装 Windows。

Rust中non_exhaustive的enum

2023-11-01
阅读 3 分钟
816
Rust中non_exhaustive的enum所谓non_exhaustive的enum就是定义中带有#[non_exhaustive]的enum,如 {代码...} 在定义了这个enum的crate中,non_exhaustive没有任何效果。 {代码...} 但若引用的crate中存在non_exhaustive的enum,会发生什么呢?以libpnet这个crate为例,在[链接]这个页面给出的示例代码中,可以看到这么一...
封面图

用Rust实现UDP Echo服务器和客户端

2023-10-27
阅读 9 分钟
1.2k
相较于TCP Echo服务器(参考用Rust实现TCP Echo服务器),UDP Echo服务器要简单不少,不但没有listen()和accept()之类的系统调用,也不需要为每个客户端都创建一个新线程。数据通过所有客户端共享的?(待确认)套接字server_socket到达UDP Echo服务器后,服务器就将数据再通过这个套接字原样返回,仅此而已。
封面图