Development
共 367 篇文章。
关系代数中的除
Ruby用实际行动向GPLv3吐槽,Ruby 1.9.3将改用 BSD 许可证发布
Ruby 从下一个版本,也就是 1.9.3 开始,从原先的 GPLv2 许可证换成了 2-clause BSD 许可证(大体上相当于 MIT 许可证)。
早期 Ruby 采用的是自由软件基金会推荐的 GPLv2 or later 许可证方式。在实际操作中这种许可方式十分常见,这种许可证方式包含两层意思:
.svn目录
今天同事跑来问我为什么没办法checkout一个子目录,发现svn提示说某个目录已有既有的、未有版本的副本(这是一个新的checkout)。
删除重新checkout,问题依旧。
检查是否有多余#include的小工具
记一笔,关于 syslogd
syslogd 的 -8 参数可以让汉字通过。以下摘自 manual page:
| |
不过这事有点坑人,为啥默认不 -8 呢?出于安全方面的原因吗?差点就开始改代码了……
一个奇怪的移位计算结果
今天 强迫症 朱小瘦同学提到一个非常有意思的问题,一个32bit的无符号整数算术右移32个bit应该得多少?
我们知道算术右移一个bit相当于除2,所以一个32bit无符号整数除以 ,理论上,应该得0。
然而事实不是这样。测试显示在 x86 系统上,一个32bit无符号整数算术右移32个bit之后得到的是原数。例如下面这个测试程序:
| |
不启用任何优化的话,编译出来的程序得到的结果是:
5a5a5a5a更进一步,我们将上面的测试改写为:
| |
sizeof(void *)和sizeof(int(*)(void))
以前一直没注意过这个问题,今天在邮件列表看到 Matthew Flemming 发的邮件才知道实际上 C 标准并不保证 sizeof(void *) == sizeof(int(*)(void))。不过,几乎所有的现代系统上这个等式都是成立的。
ZendOptimizer和PHP 5.3的兼容问题
我完全无法理解为什么会有人愿意被一个应用程序绑住。无非两种情况:一种是这个应用程序是花钱买来的,一种是这个应用程序没花钱。花钱买来的程序,没啥可废话的,直接要求对方提供就好了。如果不是花钱买的,可选的东西那么多,为什么非得选那么一个破玩意呢?
FreeBSD的textdump
最近遇到一些奇怪的bug,因为是对恢复时间有比较高要求的系统,所以顺便研究了一下用FreeBSD的textdump来代替更早前出现的minidump的方法。