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。