Development

Overhaul of libc Berkeley DB has been committed

| Development | #BerkeleyDB | #FreeBSD

First of all, thanks goes to all people who has helped me on this project, especially Pav (portmgr@) who gave it a twist on pointyhat.

It seems that this has taken me almost a month and 20 commits to get into the tree, after the code is ready. At the beginning, the changeset was ~200KB, and I believe it’s not good to just go ahead and commit it in one time, since it makes reviewing hard. Instead, I manually split it into smaller, functional related chunks, and commit it part-by-part.

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

如何:转换旧式编码的MySQL数据库到UTF-8

| Development | #convert | #i18n | #MySQL | #unicode | #utf-8

最近帮公司的一个客户做了一个数据库迁移,客户声称数据是 utf-8 的,然而在使用过程中出现了许多乱码,检查发现数据并非 utf-8,而是 utf-8 编码之后的 big5,而排序方式更是混乱不堪的默认的utf8-swedian-ci

MySQL的国际化支持很差。MySQL从 4.1 版本开始大刀阔斧地进行了不兼容的改动,简单地说,这些改动让相当多的操作默认以UTF-8进行,然而这会给旧的应用程序带来很多问题。许多文献推荐使用 SET CHARACTER SET 作为 workaround,尽管这能够解决一些问题,但这种做法本质上会导致 MySQL 进行额外的转换,因此并不是十分理想。

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

Google SoC 2009/FreeBSD

| Development | #FreeBSD | #Google | #SoC

之前在水木社区发过,这里也发一下。

我们目前正在寻找有意参加这次活动的在校学生。Google Summer of Code 是由Google公司赞助的供在校学生参与开源项目的暑期活动。目前,FreeBSD已经被选为符合资格的 mentoring organization,这是 FreeBSD 第 5 年参与 GSoC。

重要的日期:

Google将为获得资助的学生提供每人 $4,500 的资助,分3次支付;同时,对于每个项目,Google还会为对应的开源项目提供 $500 的资助。

关于 FreeBSD 本次 SoC 活动的 网站

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

为什么FreeBSD没有CIRCLEQ_*

| Development | #algorithm | #API | #BSD | #FreeBSD | #OpenBSD

最近在看 Berkeley DB,发现一套 FreeBSD 上没有的宏, CIRCLEQ_*

看了一下,这组宏是来自 4.4BSD 的,因此 FreeBSD 曾经有过这个宏;后来, phk 在 2000 年 12 月 29 日从 FreeBSD 里面把它拿掉了(SVN revision 70469),当时的说明如下:

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

OpenJDK on FreeBSD

| Development | #FreeBSD | #Java

Maho今天正式commit了 OpenJDKport,表面上看这是一小步,但在我看来这却是一项历史性的进步,因为终于可以不再受到之前那个 click-through 许可证的限制了(也就是说,可以几乎没有任何限制地随光盘,或者通过网站提供可用的jdk源代码和二进制版本了)。

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

为什么是RAID-Z[2]而不是RAID-5

| Development

注意:如果您熟悉RAID请不必浪费时间阅读这篇文章。

为什么用RAID-Z/RAID-Z2而不是RAID-5呢?

答案是:RAID-5有一个不可避免的问题,即它必须使用后备电源才能保证写入的正确性。这也是为什么我一直极力反对使用低档RAID卡和软件实现的RAID-5的原因。

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

fgetc()返回值是int而不是char

| Development | #C standard

其实是个很简单的常识,居然搞了我半个小时……

fgetc()的返回值是int,因为这个值除了返回拿到的字符之外,还兼作错误标志。由于fgetc()允许文件中包含任意内容,所以只好增大返回值的宽度来表达。

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

一个问题请教WxWidget高手

| Development | #madedit | #WxWidget

WxClassInfo的析构函数(~WxClassInfo)死循环是什么原因?检查发现RTTI的那个链表有个环,但是不太明白这个表(从上下文看是由Register()方法维护的)为什么能出现环?

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

BeOS Reborn: Haiku

| Development | #BeOS | #BSD | #MIT

Pretty interesting project: Haiku.

It looks like that it uses a lot of FreeBSD code by creating glue between FreeBSD and BeOS API, on the other hand they are using MIT license for most of their code, making sharing code easy.

参与评论

memchr(3) rewrite

| Development

I have taken some time to rewrite memchr(3) to utilize similiar algorithm as my strlen(3) did. Two different formular, however, would have a roughly 1/3 difference.

Currently I have taken an approach that when memchr(3) is trying to match a pattern of 8-bit, then consider the string as 8-bit, which uses the first formular which is expected to have uniform O(n) time complexity by reducing unnecessary branches.

This approach, however, might be bogus since if you find 7-bit character within a 8-bit string, in that case, memchr(3) would perform poorly, if there are a lot of characters having their MSB as 1.

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