2005年8月30日 星期二

screen - multiuser mode!

[lang_zh]原來 screen 有 multiuser mode![/lang_zh]
[lang_en]Oh, screen has multiuser mode![/lang_en]

http://wiki.osafoundation.org/bin/view/Jungle/GnuScreen

2005年8月25日 星期四

E17!

等了三年,三年之中偶爾看到有人問 E17 發展的情形。今天早上在 OSNews 上看到這篇,仔細看了一下感覺到好像進步滿多的。他有附了一個 link,提供 Linux 各個 distribution 的安裝方法及檔案來源。於是我就裝了 Debian 的 package 來試試。

驚為天人。

跟我三年前的印象完全不一樣了,而且好得太多。首先是一個歡迎動畫(當然可以 disable),進去之後,title bar、menu 等等的效果都做得好炫。而且模組化做得很好,任何東西都可以動態加入或移除:``E17 can be as light or heavy as you want it to be - loadable E17 modules that can add certain features.'' (BTW, 預設的很多設定我很不習慣,不過透過 enlightenment_remote 這個指令,可以改變他的行為。我也在這裡面發現他強大的、或者說細致的靈活性。)於是我又從 fvwm 跳回 enlightenment :P

關於 E17 的發展,根據這個非官方(?)網站 Get-E.orgstatus report 裡面這段話:

There will sometimes be freeze periods during the development. This means
that no more features are added until the current known bugs/problems are
fixed. The reason for this is to ensure that the development version maintains
a certain level of stability. E17 is currently not in a freeze mode so new
features are being implemented.


不知道是這個原因,還是其實沒人開發(? XD),E17 的發展還滿慢的。之後可能也會很慢吧。不過今天真的是覺得等待很值得。

加油加油!

2005年8月24日 星期三

HMM

之前自己看 HMM (Hidden Markov Model) 一直有一些盲點沒克服,剛才看到這篇,說明很清楚,釐清了我的概念 :)

2005年8月21日 星期日

一些高中的回憶

看到洗鞋子的 blog,浮現了一些我們高中的回憶。
薯條山... CIRC Inside!!!... :)

2005年8月8日 星期一

Gallery bug 又一枚

[lang_zh]
我的 Gallery(我目前是用 1.5)在 ML_mode = 2(偵測 browser 的 Accept-Language 做 i18n),跑他的 locale = zh_TW.utf8、並 alias zh_TW 成 zh_TW.utf8 時,會發現網頁是 UTF-8,但是 HTTP header 的 charset 卻是 Big5。修了一下這個問題,patch 在這兒,不過我不確定這是不是正解。這是完整的 bug report。
[/lang_zh]

[lang_en]
My gallery (version 1.5) is running in ML_mode = 2 (which is to detect browser's Accept-Language for i18n), with it's locale = zh_TW.utf8 and zh_TW aliased to zh_TW.utf8. But when visit the page, the content will correctly be UTF-8, whereas the ``charset'' of the HTTP header is Big5. This is my patch, but I'm not sure it's the correct solution. This is the full bug report.
[/lang_en]

2005年7月14日 星期四

2005年7月13日 星期三

xorg 終於要進 sid 了!

剛發現現在 xorg 已經在 incoming.debian.org 出現了!不過我是裝 ubuntu 的 xorg,所以沒什麼差就是了 :Q

BTW,好久沒 blog 了。

Bloglines 不能搜尋中文?

Bloglines 不能搜尋中文? 會被轉成 %u4E2D%u6587 :(

之前不知道在那裡看到年底新聞台數量減半的消息,到 Bloglines 上找,卻不能找中文。其實是看到這個新聞,不知道有沒有關係。

APUE 2nd Ed.

[lang_zh]APUE 第二版出來了,由 Stephen A. Rago 改版。[/lang_zh]
[lang_en]APUE 2nd Ed. comes out! Revised by Stephen A. Rago.[/lang_en]

http://books.slashdot.org/books/05/07/09/2258248.shtml?tid=156&tid=130&tid=6

2005年6月9日 星期四

[lang_zh]感覺很差[/lang_zh][lang_en]Hates...[/lang_en]

[lang_zh]昨天發現有個簡單的 case 能讓 g++ 3.3 link error,但 3.4 之後會正常。[/lang_zh]
[lang_en]I found that an easy/small program can make g++ 3.3 unhappy, but 3.4 (and after) feels good.[/lang_en]


#include

int main(void)
{
std::basic_string ustr;
ustr.append(ustr);
return 0;
}


[lang_zh]
不過 report 上去之後,才知道原來 GCC 這麼快就把 3.3 close 掉了。

不過讓我感覺很差的是,當我試圖把 gcc-3.3, g++-3.3 remove 時,發現還不少東西 depends on 他們。系統上得存在這種 bug 感覺很差 orz
[/lang_zh]

[lang_en]
But after the bug report, they tell me 3.3 branch has been closed.

But why I feel really bad is when I tried to remove gcc-3.3 and g++3.3 from my box, I found the many things depend on them. It's really sad that I have to let this bug living in my box :(
[/lang_en]

Star Wars ASCII 版

[lang_zh]
感覺像是 piaip 的 pmore :Q

> telnet towel.blinkenlights.nl


還真長 orz
[/lang_zh]

[lang_en]
OH MY GOD…
> telnet towel.blinkenlights.nl

It’s very very long.
[/lang_en]

2005年6月8日 星期三

臺北市河濱腳踏車道圖

這張地圖看起來真不錯 :P 下次去就可以看這張地圖了

http://www.dot.taipei.gov.tw/ch/web/bicycle/bicycle.htm

dpkg -S

[lang_zh]
之前要查一個檔案在那一個 package 裡面都用 apt-file,它有個壞處是要手動更新 package 的資訊(麻煩,且導致 apt-file 跟 package system 不同步)。剛才發現原來 dpkg -S 可以做到同樣的事情!
[/lang_zh]

[lang_en]
I used to use apt-file to search which file is in which package. But the disadvantage is you have to upda the package information manually (annoying, also causing the asynchronization to the package system).

I just found the dpkg -S can do the same thing. Since it use the same database as the package system, there's not the same problem!
[/lang_en]

2005年5月23日 星期一

image google 硬兔

image google "硬兔",會出現儀隊耶 XD

Self-reproduce

Jserv's blog 上看到一篇文章:
自我複製程式理論依據
提到 zao 的文章: http://s88.dyndns.org/index.php?p=144#more-144 ,他用
Turing Machine 來 prove 並 implement 一個 self-reproduce 的程式。

寫得還不錯 :)

2005年5月18日 星期三

FTP to SMTP

嘗試在自己的機器上 telnet port 21 (proftpd),然後 PORT xxx,xxx,xxx,xxx,0,25,GET mail_with_smtp.txt。結果 PORT 失敗,看 source 發現他說 PORT 六個參數都不能為零 Q_Q 惡搞失敗 orz

2005年5月15日 星期日

glibc 的 charmaps/UTF-8

最近在試用 rxvt-unicode,遇到了一些字寬[1]的問題。於是動手修了 glibc 的 charmaps/UTF-8.gz(Debian 是放在 /usr/share/i18n/charmaps/UTF-8.gz)。如果不想自己動手來,可以下載 http://victor.csie.org/archive/UTF-8.gz,跳到之後的 locale-gen 那段。這是用 Debian 的 glibc 2.3.2.ds1-22 + EastAsianWidth-4.1.0.txt 做出來的。

動手前,請先備份 charmaps/UTF-8.gz。

首先,到 unicode.org 抓一份表格(EastAsianWidth),這個表裡面定義了亞洲字形的寬度。可參考 http://www.unicode.org/reports/tr11/。

接下來我寫了一個 script 來產生符合 glibc 的 charmaps/XXX.gz 的格式。Script 裡面的 __DATA__ 是我目前 charmaps/UTF-8.gz 的 WIDTH 那段中,所有寬度為零的 range。因為來源有好幾個,所以為了方便,就直接從那邊 copy 過來。

./EastAsianWidth.pl  UTF-8.txt


接著,


cp /usr/share/i18n/charmaps/UTF-8.gz UTF-8.gz
gunzip UTF-8.gz


解開得到 UTF-8 後,開個 editor 把檔案最後面,從 "WIDTH" 一直到 "END WIDTH" 取代成 UTF-8.txt 裡面的東西。再壓好放回去原來的位置:


gzip UTF-8
cp UTF-8.gz /usr/share/i18n/charmaps/UTF-8.gz # you need root here.


最後,執行 locale-gen,你可能會看到:


# locale-gen
Generating locales...
zh_TW.BIG5... done
zh_TW.UTF-8...
/usr/share/i18n/charmaps/UTF-8:28542: unknown character `U00002614'
/usr/share/i18n/charmaps/UTF-8:28560: unknown character `U0000FAD9'
/usr/share/i18n/charmaps/UTF-8:28564: unknown character `U0000FE19'
/usr/share/i18n/charmaps/UTF-8:28576: unknown character `U0003FFFD'
/usr/share/i18n/charmaps/UTF-8:28579: unknown character `U000E0100'
#


後面的錯誤是說,EastAsianWidth.txt 裡面定義的字,這幾個不在你的 charmaps/UTF-8 裡面。並不是什麼嚴重的問題,可以不理他。

這樣就大功告成了!接下來如果還有問題,就是 Big5 轉碼表跟字型的問題了吧。

[1] urxvt 是用 wcwidth(3)(也就是在 glibc 裡)判斷字寬。

2005年5月11日 星期三

找到 firefox 裡面 flash plugin crash 的原因了

不知道從什麼時候開始,我的 notebook 上的 firefox + flash 總是會 crash,但在別人的電腦上、我宿舍的電腦上都不會。今天終於發現是跟 xorg 不相容(?)的問題。有人說 xorg 如果不要 load Composite 的話就沒事,不過我沒試過。另一個方法是 export XLIB_SKIP_ARGB_VISUALS=1,我是放在 .xinitrc 裡面,現在看起來很好 :D

ii xserver-xorg 6.8.2-10 the X.Org X server

glibc typo

[lang_zh]
glibc 裡面的 localedata/charmaps/BIG5 裡面,把 Arphic 拚錯了 :p
[/lang_zh]

[lang_en]
There is a wrong spelling in file localedata/charmaps/BIG5 of glibc. The "Aprhic should be Arphic.
[/lang_en]



% This charmap is converted from:
% ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
% and also merged several characters (/xc6/xa1-/xc7/xfc) from:
% Aprhic Tech. CO., LTD. Big5 Unicode mapping table.

2005年5月10日 星期二

AuthComments

[lang_zh]
把之前寫的 Comments 改成用 SQLite 為後端,感覺好多了 :D 順便把名字改成 AuthComments.

下載 AuthComments.
[/lang_zh]

[lang_en]
I change the back-end of my previous Comments to SQLite. It's much better, uh? I rename this plugin to AuthComments at the same time.

Download AuthComments.
[/lang_en]

2005年5月9日 星期一

WWW::OpenSVN !!

[lang_zh]
竟然出現了 WWW::OpenSVN !!
[/lang_zh]

[lang_en]
Wow, wow, wow! WWW::OpenSVN on CPAN!!
[/lang_en]

2005年5月6日 星期五

How to Report Bugs Effectively

Tsung's Blog這篇
看到 How to Report Bugs Effectively
這篇文章。給一般的 user 看看還不錯,丟到 PttBug 板上 :P

2005年5月4日 星期三

irssi 0.8.10-rc5

[lang_zh]
參考這篇 把 irssi 0.8.9 + recode.pl upgrade 成 irssi 0.8.10-rc5 with native recode。Everything works perfectly! :D

BTW, debian 的 package 在這兒:
[/lang_zh]

[lang_en]
Refering to this article, I just upgrade my irssi from 0.8.9 + recode.pl to 0.8.10-rc5 with native recode. Everything works perfectly! :D

BTW, debian's package is over here:
[/lang_en]


deb http://irssi.qvr.info/debian/ sarge/

2005年5月3日 星期二

no OpenSSL in lftp 3.1.3-1 :X

[lang_zh]
lftp 3.1.3-1 把 OpenSSL 拿掉了 Orz,因為 OpenSSL 的 license 與 GPL 相容性的爭議 :X
[/lang_zh]

[lang_en]
OpenSSL is removed in lftp 3.1.3-1 because of the license incompatibility with GTL :/
[/lang_en]


lftp (3.1.3-1) unstable; urgency=medium

* new upstream from 2005-04-15
* disabled ssl support because of license problem. See:
http://bugs.debian.org/305160
http://www.mail-archive.com/lftp%40uniyar.ac.ru/msg02012.html
http://www.openssl.org/support/faq.html#LEGAL2
http://www.gnome.org/~markmc/openssl-and-the-gpl.html
If the author add the needed exception to allow to link
against openssl it will be enabled again.
Better a lftp without ssl than no lftp in sarge.
(closes: Bug#305160)

-- Noèl Köthe Thu, 28 Apr 2005 18:11:59 +0200

無聊看看 awstats

真有趣,我在 awstats 裡面發現有大陸人從搜尋「顺针转 逆针转 flash」進來我的 blog。最多的 keyword 是「仙劍奇俠傳三」、「XX結局」 orz 還有... 「中秋節柚子」 XD 還有像是 「为什么cpu usage 100%」、「orz」 等等怪怪的東西 :/

2005年5月1日 星期日

Comments

[lang_zh]
找不到 Blosxom 3.0 的 comment plugin,所以就暴力地寫了一個 @_@ 主要的功能除了
一般 comment 之外,還特別加進了 authority image (captcha?) 來避免 bot 的 spam
攻擊。不過我這邊應該是不會有 bot 來發 spam 啦,寫爽的而已 XD

使用說明在 Comments.pm 的 pod 中。
[/lang_zh]

[lang_en]
I just wrote a comment plugin for Blosxom 3.0 because I can't find one! (strange :/) It has capability like not only the normal comment form, but also authority image (is it called captcha?) to avoid spam for bots. Well, I think no bot will come to attack my blog, ha, just for fun ;)

Please read the pod of Comments.pm for further information.
[/lang_en]

Download Blosxom::Plugin::Comments.

2005年4月25日 星期一

[lang_zh]Page Rank 忽然增加了[/lang_zh][lang_en]Page Rank increased recently[/lang_en]

[lang_zh]
忽然發現 http://victor.csie.org/ 的 page rank 變成 3 了,不知道是什麼原因 XD
[/lang_zh]

[lang_en]
I just found the page rank of http://victor.csie.org/ was increased to 3 without knowing the reason :/
[/lang_en]

2005年4月24日 星期日

FreeBSD ports in Debian

我一直滿喜歡 FreeBSD 的 ports 的,但是比較習慣 Linux 的 kernel。至於 Gentoo 嘛,python-base 玩起來實在很慢,雖然有一些可以加速的 solution,但是我覺得還是滿慢的。所以我試著在 Debian 上玩 FreeBSD 的 ports。

首先,當然是先裝一下 cvsup (Debian 的 pool 就有了)。因為有些工具 FreeBSD 跟 Linux 不相容的關係,還得裝一下 freebsd5-buildutils。

然後找台 FreeBSD 把他的 /usr/share/examples/cvsup/standard-supfile 偷過來。裡面有些設定得改一下,例如像這樣:

*default host=freebsd.csie.ntu.edu.tw
*default base=/home/victor/usr/var/db
*default prefix=/home/victor/usr


檔名如果取成 ports-supfile 的話,就執行

cvsup -g -Z -L 2 ports-supfile


把 ports 拉回來。

另外,freebsd5-buildutils 的 /usr/share/freebsd5-buildutils/ports/bsd.port.mk 是沒辦法直接用的(version 5.3+2-2)。剛才把這個 bug report 上去了(URL),不知道他會不會理我 XD 如果不行的話,可以拿這個 patch 去用。裡面應該還有其他東西要改啦,不過這樣子已經夠 make 不少東西了。

由於 FreeBSD ports 本來就是設計給 FreeBSD 用的(?),所以有些參數得從 /etc/make.conf override 掉。例如:

ARCH=i686
OSVERSION=502123
PKGINSTALLVER=0

GNU_CONFIGURE=1
CONFIGURE_MAX_CMD_LEN!=/usr/bin/getconf ARG_MAX

FETCH_CMD=/usr/bin/wget

# override default SH=sh , 避免 configure 產生錯的 libtool
SH=/bin/sh

PREFIX=/home/victor/usr
PORTSDIR=/home/victor
PORT_DBDIR=$(PREFIX)/var/db/ports
PKG_DBDIR=$(PREFEX)/var/db/pkg

NO_DEPENDS=1
WITH_GLIB=2


最後就是真的 make install 啦。由於 make 版本不同的關係,必須用 freebsd5-buildutils 裡提供的 freebsd-make 來裝(pmake 是 NetBSD make)。如果沒意外的話,就可以 make 啦:

freebsd-make WITH_OPENSSL_BASE=1


至於 make install 的話,因為我懶得去追 sed(1) regular expression 格式有些不一樣的問題,所以沒去修。我在 bug report 裡面建議他生個 freebsd-sed 出來。

結論是,為什麼我要做這種事呢 XD 還是用之前寫的 debpatch 比較實在 XD 缺點就是 patch 們得自己 maintain 了。

2005年4月20日 星期三

TouchTags

昨天晚上 Hao 寄了封信來,提到 TouchTags,一個很有趣的東西。

以前如果想在搬東西時,把這個動作記錄下來,通常會在那個物體上面貼一個 RFID tag,手上再載上 RFID reader 這類的方式。TouchTags 提供了另一個有趣的方法。

首先,物體上還是有個 tag(詳細作法我還沒有看懂),而 reader 呢,則是將某片東西放在鞋子裡面(paper 裡面舉的例子),然後整個人就變成了一個 reader 了!!

這篇 paper 在這兒,只有兩頁。

2005年4月19日 星期二

[lang_zh]順時針? 逆時針?[/lang_zh][lang_en]clockwise or counterclockwise[/lang_en]

[lang_zh]
這是一個有趣的 flash: http://pya.cc/pyaimg/pimg.php?imgid=12882

她是順時針轉還是逆時針轉? 我第一眼看到的是順時針,後來知道要訣之後,就能切換了。
[/lang_zh]

[lang_en]
This is an interesting flash: http://pya.cc/pyaimg/pimg.php?imgid=12882

Do she rotate in clockwise or counterclockwise? It's clockwise to me at the first sight. After getting the point, I can switch between both modes.
[/lang_en]

[lang_zh]power supply 的風扇不轉了[/lang_zh][lang_en]power supply's fan is broken[/lang_en]

[lang_zh]
今天早上起來,發現電腦竟然不動了 @@ 原因可能是 power supply 的風扇壞掉導致的過熱。可惡,果然不該買雜牌的 Orz
[/lang_zh]

[lang_en]
I found that my computer is down surprisingly this morning. The reason could be overheating caused by the broken fan of power supply. Damn it, I shouldn't buy the inferior brand!
[/lang_en]

2005年4月18日 星期一

[lang_zh]科博館網頁[/lang_zh][lang_en]NMNS's web page[/lang_en]

[lang_zh]你不要用 VB script 啊,這樣我開不了啦[/lang_zh]
[lang_en]Could you just do not use VB script? Not everyone can read it![/lang_en]

http://www.nmns.edu.tw/

忘了一件事

[lang_zh]
二十歲生日那年,決定在每年生日買給自己一本書,不同領域的書。今年那時候好像在忙什麼事,沒去買,得找個時間去找本書。

我想找一本小說,描寫一個人的小說。
[/lang_zh]

[lang_en]
On my 20th birthday, I made my mind to buy me a book as a present in my every birthdays, something different to my field. I was busy at that time on this birthday, so I haven't bought it until now. Hmm... I need to find a book quickly.

I like to find a novel, a novel which depict someone normal.
[/lang_en]

2005年4月12日 星期二

perl blog

寫個 perl 語的 blog !?

MultiViews

[lang_zh]
又寫了一個 Blosxom 3.0 的 plugin Orz MultiViews 是一個可以讓你同時擁有多個語言
的 blog entries 的 plugin。MultiViews 這個詞是從 Apache 的設定來的,它允許不同
的人讀到不同的語言的同一個網頁。

你可以將你的 blog 加上多個語言版本,來看個例子:

我試圖在我的 blog 上同時維護中英兩個版本。今天我寫了一個中文的檔案 XXXX.txt,
跟另一個英文的檔案 XXX.txt.en。這樣已經足夠做到基本的語言選擇。我把我的
default language 設成 "en" 給大多數的人使用,並將設定支援 "zh" 這個語言。這
個設定會透過 HTTP header 裡的 Accept-Language 來實作,也可用參數的方式來指定。

下載 MultiViews.
[/lang_zh]

[lang_en]
Another Blosxom 3.0 plugin! MultiViews let you maintain multi-language entries for Blosxom 3.0. MultiViews refer to Apache's configuration, which allow visitors to read different language of your pages.

You can add multiple-language version of entries to your blog. Let's see an example:

I'm a Taiwanese. I'm trying to keep both Chinese and English version in my blog (http://victor.csie.org/blog/). I wrote XXXX.txt in chinese and XXXX.txt.en in English. I'm going to set my default language to "en" for the most people use English, and people who use Chinese will read the Chinese version if their prefer language Accept-Language in HTTP heder) is "zh", "zh-tw", etc.

Get MultiViews.
[/lang_en]

2005年4月9日 星期六

makecontext(3)

竟然有這種東西 orz

#include

void makecontext(ucontext_t *ucp, void *func(), int argc, ...);
int swapcontext (ucontext_t *oucp, ucontext_t *ucp);

2005年4月4日 星期一

抓到小偷

剛才離開系館,在牽車時,看到一個人在找腳踏車。在我把車牽出來之前,他牽著車(一台淑女車)經過我旁邊,就讓他先過了。我騎了一下子,忽然覺得怪怪的,剛才他好像沒開鎖就牽出來了 @@; 而且還牽往反方向! 猶豫了一下,決定回去看看。

結果,看到他在另一排腳踏車旁邊看來看去。過去問說「這台車是你的嗎」「不是」 orz
操著香港人的口音,說他車被幹了,想幹一台回來用 -_- 念了他一陣子,看他的樣子還滿老實的,就沒再做什麼。後來有到他會經過的路徑看一下,他應該是有看到我,希望別再犯了。

後來想想,我是不是可以很帥地說「你被補了!」現行犯不是人人可逮補嗎 XD 這樣好像滿爽的耶 XD

2005年4月3日 星期日

TIME_WAIT state

[lang_zh]
在寫計網作業時,發現只要有 client 連進來,在 httpd 砍掉之後,沒辦法馬上再 bind 同一個 port。netstat 看到了 TIME_WAIT。

Active close 一個 connection 時,必須在 TIME_WAIT state 等待 2 x MSL (/maximum segment lifetime/) 的時間。RFC 1122 的建議值是 120 秒。但是 Linux 的實作上 follow BSD,把 MSL 設為 30 秒,net/ipv4/tcp_minisocks.c 裡面有這段註解:
[/lang_zh]

[lang_en]
When I wrote my Computer Network's homework, I found that binding to the same port will be failed after a client comes in and stop the httpd. I see TIME_WAIT state when execute netstat.

One should wait in TIME_WAIT state for 2 x MSL (/maximum segment lifetime/) after close one connection. The suggestion time interval in RFC 1122 is 120 seconds. But the implementation of Linux follows BSD, which set MSL to 30 seconds. There's a comment in net/ipv4/tcp_minisocks.c:
[/lang_en]


* [ BTW Linux. following BSD, violates this requirement waiting
* only for 60sec, we should wait at least for 240 secs.
* Well, 240 consumes too much of resources 8)
* ]



[lang_zh]
試了一下時間,真的是一分鐘 Q_Q 本來是在做測試,懶得把 port 寫在參數裡面。看來得辛苦一點點啦 XD

BTW, Unix Network Programming 真是好書呀!!

Update:
用 setsockopt 打開 SO_REUSEADDR 可以解決這個問題
[/lang_zh]

[lang_en]
I observed the time, and it really about 1 minute Q_Q So I should add a port to the argument :/

BTW, Unix Network Programming is really a great book!

Update:
Use setsockopt to enable SO_REUSEADDR will solve this problem.
[/lang_en]

Live Bookmark based on RSS

今天下午想到一個 idea,實作了出來。

很多人有要同時 maintain 多份 Bookmark/Favoriate 的問題,所以我在想是不是能將 RSS feed 餵給 Firefox 的 Live Bookmark,來解決這個問題。因為 Firefox 的 Live Bookmark 跟一般的 bookmark 放在一起,所以能用這種方式產生 bookmark 的效果。當然其他瀏覽器就不一定能用啦,privacy 的問題也先不理他 :P

screenshot


source code (bookmark-*.tar.gz)

2005年4月2日 星期六

accept(2) and SIGINT

在寫計網作業時,發現如果用 signal(2) 去 override default signal handler,當 accept(2) block 住時,接到了那個 signal,並不會 return 回來。這跟平常沒 override 時,會傳回 -1 並將 errno 設為 EINTR 的情形不同。翻了 > 才發現原因。

在 accept, read 這類的 /slow system call/ 裡面接到 signal 後,當 signal handler return 時,傳回 EINTR。``有些''系統會重新回到該 system call 執行 (現在的 Linux & FreeBSD 都是),我在想也是因為這個原因,我的 accept 不會 return。

後來,我用 sigaction(2) 取代 signal(2),sa_flags 不要設 SA_RESTART,就可以如我所願讓 blocked 的 accept 回來了。這個方法在 Linux 跟 FreeBSD 下都 work。

2005年3月25日 星期五

Submit Blosxom's Plugins

昨天送了兩個 plugin 到 The Unofficial Blosxom User Group,結果剛才發現在 V3 的 plugin list 裡面占了前兩個位置 orz 這該說是名字取得好嗎 XD

2005年3月22日 星期二

BlosxomCache for Blosxom 3.0

Since Blosxom 3.0 do not have static rendering so far, I wrote a plugin called BlosxomCache for speeding up Blosxom.

It works as /cache/. User's request will be cached so that the same page won't be needed to regenerate every time. Users will not see the dirty page use this plugin. The more plugin you use, the more CPU you save in your box!

Note that the database entries are not going to be deleted, so you might want to delete the database on the first day of each month (But it's harmless if you don't do it unless your disk is full).

Get BlosxomCache.

2005年3月20日 星期日

AutoRef.pm

AutoRef is a Blosxom plugin to refer specified keywords in your blog to their
references. It uses a perl module called HTML::Parser, so it'll convert those
keywords correctly with braking the HTML grammer.

You can download AutoRef for Blosxom 2.0 here, or here for 3.0.

Blosxom 3.0

我真是太閒了,把 Blosxom upgrade 到 3.0,順便把網頁也修正成符合 XHTML 1.0。
不過 Blosxom 3.0 的架構比 2.0 漂亮多了! :D

2005年3月19日 星期六

Fontconfig 2.3.1

upgrade 到 Fontconfig 2.3.1 後,很多地方的英文字型會變成兩倍寬。花了不少時間,終於找到問題了。遠在天邊,近在眼前,找到這個網頁,再對照 eric 的 fontconfig 文件,才知道原來問題就跟細明體一樣。

文鼎的字型有這個問題,不過調 globaladvance 沒有用,所以我在 .fonts.conf 中加入這段:





AR PL

0




mailing list 上這篇文章列出了一些有問題的亞洲字型,還有一個待解決的問題 ...
http://lists.freedesktop.org/archives/fontconfig/2005-March/001250.html
http://lists.freedesktop.org/archives/fontconfig/2005-March/001251.html

2005年3月17日 星期四

系統實驗/Ubicomp Idea


  1. 3D model maker

    • 掃描指定的物品,建出 3D model

  2. 實體書本字串搜尋

    • 就像平常讀電子書的 Ctrl-F,但這是實體的 :D

  3. Graphical based tracking/identification system

    • 在一個房間內 track 指定的物品

  4. 人工水晶體

    • 給水晶體受傷的人

  5. 隱形眼鏡搜尋器

    • 掉隱形眼鏡時很有用 XD

2005年3月11日 星期五

Spork::TKSlide


Spork::TKSlide 好像壞一陣子,我這兩天把他修好了,只為了下禮拜要報告 paper orz。
剩下的問題是 Spork 本身的 bug Q_Q





寫了封信直接找 Ingy,希望能得到正面的回應 :)

2005年3月8日 星期二

slab in Linux kernel


之前看了 <<Linux Kernel Development>> 中談到 Memory Management 那章。今天剛好在 irc 上聊到,這是一點點對 slab 的介紹 :P




22:31  slab 算是 kernel 裡面 kmalloc 的一個 "page (概念上)"
22:32 kernel 裡面會對各種不同的 slab 作 cache 之類的
22:33 slabtop(1) 可以看不同 slab 中的最大值 (對各個欄位)

22:36 slab 的 cache 是這樣的,因為去拿一個新的 slab 的 cost 比較高,
所以每當有 slab 被 free 掉時,會存起來當 cache
22:37 100% usage 可能是目前站上比較 active :Q
22:38 slab 應該沒有什麼夠不夠的

2005年3月6日 星期日

2005/03/05 李瑞麟紀念賽


第一次去棒球場看比賽,我覺得是場很輕鬆的比賽。





11:4





這樣下來,總算是對李老師,球員們都有個交待了吧。
唯一的遺憾是褚志遠出車禍沒辦法來 >



啦啦,想把這種感覺留在心裡面品嘗 :)





---





比賽前要到了曾貴章跟陳慶國的簽名,可惜廖敏雄的時間不夠沒排到 :(

2005年3月2日 星期三

cpanplus's dependency.deb


我把 cpanplus depend 的 perl packages 全包成 deb 了。如果想裝這些 cpanplus 跟這些 packages,可以在 /etc/apt/sources.list 中加入




deb http://victor.csie.org/debian/ unstable cpanplus


並安裝 libcpanplus-perl-snapshot :)





順便讀了 Debian Policy Manual 中關於 Conflics, Provieds, Replaces 的部分 :)

2005年2月20日 星期日

[lang_zh]CPU 的 iowait (top(1) 的 wa)[/lang_zh][lang_en]CPU's iowait (wa in top(1))[/lang_en]

[lang_zh]
ptt 的 CPU 在 iowait 的部分吃了非常多的 cpu time (30% 以上),我們覺得 iowait
應該是指 disk I/O, memory I/O 的部分。但是在有 DMA 的前提下,為什麼 CPU 能在
這個部分吃這麼多 cpu?

Trace 進 kernel 看的結果,這個時間在 io_schedule() 時會加上去:
[/lang_zh]

[lang_en]
Ptt's CPU is eaten a lot in the part of iowait, we thought iowait means disk I/O. But with DMA, why CPU takes such a lot of CPU time?

Trace into the kernel, I found the time of iowait will be added inside io_schedule():
[/lang_en]


void __sched io_schedule(void)
{
struct runqueue *rq = &per_cpu(runqueues, _smp_processor_id());

atomic_inc(&rq->nr_iowait);
schedule();
atomic_dec(&rq->nr_iowait);
}



[lang_zh]
中間 context switch 出去之後,每次 timer interrupt 來時,會計一次時間。其中 system time 的部分,如果 nr_iowait 是 true 的話,iowait 就會加上去。於是這個 iowait 就不只是等待 I/O 的時間了。Process 數量少時當然可以忽略,但是在 ptt 上 25000 隻 process ...
[/lang_zh]

[lang_en]
During the context switch from the middle, each time interrupt increase the value if nr_iowait is true. So iowait is no longer the waiting time of I/O. Of course it can be omitted if the process number is small, but ptt has more than 25000 process ...
[/lang_en]

2005年2月19日 星期六

有趣的一些 perl module


原來惡搞的 perl module 那麼多 orz,Acme 裡面好像都是惡搞的耶 XD 隨便來幾個




Acme::BadExample


use Acme::BadExample;


然後就 compile 不過了 orz






Acme::Bleach


#!/usr/bin/perl
use Acme::Bleach
print "blah";


然後執行這個檔之後,這個檔就只剩 use Acme::Bleach 了 orz!
所有 printable character 都會被變成 tab/space。 讓我想到王尹的泡沫化程式 ^^;






Acme::Debug




use 之後 如果開 debugger mode,會把程式碼裡面含 b, u, g 的 subsequence 找出來 O_o






Acme::ComeFrom




goto 的逆向操作 autrijus 的作品,不太直覺就是了 ^^;





不過也有另一些不同的有趣的 ^^;
像是 use Acme::Intraweb; 之後如果 use use SomeModule; 但是 @INC 找不到的話,
他就直接上網抓下來 O_O





Have fun! :D

2005年2月16日 星期三

ext3 sucks!!

[lang_zh]
過年前大家都回家了,剛好在這個時候宿舍斷電。我 BIOS 有設好,所以之前斷電後都會自動重開。但是這次卻沒起來,停了大概有 10 天吧 @@; 回來後發現是 ext3 爛掉了。真是太差了,一般非 journal fs 開機後可以先自動 fsck 再開進去,但這次我的 ext3 竟然在 loader 就 load 不進來 kernel -_- 我決定以後 root 也不用 ext3 了。
[/lang_zh]

[lang_en]
Everybody went home during the Chinese New Year. Gosh, the power of the dorm went off line during this time. My BIOS was set properly, so everything went very well before. But it didn't this time. My computer was halt for about 10 days @@; After coming back, I found it caused by corrupt ext3. It sucks, non-journal fs can fsck after the booting at least, but my ext3 dead in the loader -_- I won't use ext3 anymore.
[/lang_en]