2006年12月27日 星期三

Auto-MDI/MDIX


我爸去買了一台 DI-524,結果我在他的 spec 上看到「Auto-MDI/MDIX」這個東西。看他的說明大概猜得出來是可以自動偵測線是一般網路線還是跳線。原來這年頭有這種東西。

google 看到的幾乎都是產品介紹,前幾頁只有看到一篇波蘭文 wikipedia 的簡介可能是還沒進標準的規格?


My Dad just bought a DI-524 yesterday, and I find a feature called "Auto-MDI/MDIX" on the spec. I can guess that's an autodetection of common cable or crossover, but when I googled it, almost all of them are product information, except one like this breif introduction in Polish wikipedia. Could be a non-standard spec?


Ethernet_crossover_cable
Medium_dependent_interface

2006年12月26日 星期二

WP Plugin: Polyglot

[lang_zh]
使用 Polyglot plug-in,獲得多國語言支援 :D

把 blog 換成 wp之前,我的 Blosxom 有 Blosxom::MultiView 支援多國語言。不過之前換成 wp 時並沒有順便把英文版也 import 過來。Survey 了一下相關 plug-in,我發現 Polyglot 還滿強大而且又好用的,所以就把之前的舊文章 merge 進來了。

使用 Polyglot 時,文章裡面可以用 [lang_en}(括號要對稱,這邊只是為了說明,要讓它認不出來)來區別語言,有興趣直接看官方網頁比較清楚。而只要在 url 後面加上 /lang/en/ 就會變成英文版;如果是 /lang-pref/en/ 就會把"習慣"存到 cookie 裡面。除了文章本身,title、comment、甚至是 category 也都可以改。

英文版也有 feed: http://feeds.feedburner.com/VictorsBlogEnglish,不過我猜沒人會看啦 :p
[/lang_zh]

[lang_en]
Here comes my multilingual blog, with help from Polyglot plug-in!

Before moving blog to wp, my Blosxom used to support multi-language with my plug-in called Blosxom::MultiView. However, I didn't move those English posts here that time. Today, I found Polyglot is just suitable for me, either in funtionality and usability. Now, I got more chance to practice my English :P

With Polyglot , you can write [lang_en} (actually it's "[]") for English version in the post. Not only post itself, title, comment, and even category can be multilingual. Appending "/lang/en/" to the post's url will show the English version, if you append "/lang-pref/en/", your behavior will be stored in your cookie.


English version feed: http://feeds.feedburner.com/VictorsBlogEnglish
[/lang_en]

2006年12月24日 星期日

嘉義市第九屆諸羅山盃ABC...WX

2006 嘉義市第九屆諸羅山盃棒球賽的分組名稱好有趣呀,分別是「嘉」、「義」、「市」、「第」、「九」、「屆」…「A」、「B」、「C」…「X」共 34 組 XD

官方網站的目錄名稱也很有趣,2006piggame XDD

不過諸羅跟 pig 有什麼關係嗎? 嘉義縣政府的解釋是:

嘉義縣境原為原民散居之地,古名諸羅山,是平埔洪雅族諸羅山社社名的漢字音譯;漢人謂「諸羅」為諸山羅列之意,實為附會的說法。

2006年12月18日 星期一

聽說北華興可能明年解散

http://www.ettoday.com/2006/12/16/341-2028733.htm

看到華興棒球隊明年可能解散的消息,我想到上次在李瑞麟老師紀念賽拿到募款活動的宣傳單,大意差不多就是「北華興南美和」的美和資源不足,需要大家的捐助。美和,明天跟廖敏雄所帶領的大理高中將進行95年度高中棒球聯賽硬式木棒組第三階段比賽,而華興卻出現這樣的消息,希望不要成真 @@

目前大理高中正在跟台南海事打,台南海事的教練是蔡旭峰的樣子,之前也是時報的 :p 三代鷹加油! :D

2006年12月16日 星期六

Feed Burner URL of This Blog

剛申請了 FeedBurner 帳號,這是這個 blog 的 feed: http://feeds.feedburner.com/VictorsBlog

AdSense

前幾天 Google AdSense 繁體中文版出來,好像是滿有趣的東西,所以加進網頁上玩玩 :D

不過我很好奇,如果有人無聊亂 dos 別人的廣告...

2006年12月5日 星期二

InvSqrt()

看到開根號倒數 (InvSqrt(), 1 / sqrt(x)) 速算法,這真是太棒了。寫了一段 code 測試,跑 1..1000000000 出來的時間,1 / sqrtf(i) 出來平均大約是 9 秒多一點,而 InvSqrt() 是接近 3 秒。至於數值的精確度,我對 1 .. MAX 每個值丟給兩個方法看他們的差,發現數字越大越準,而 InvSqrt() 出來的值「略小於」1 / sqrtf(x)。

Let f1 = 1 / sqrtf(x), f2 = InvSqrt(x)
這個表第一欄是 MAX,第二欄是 \sigma_{1..MAX}(f1 - f2),第三欄是把第二欄 sigma 裡面的值取絕對值,第四欄是平均誤差。

1000000000: 8.0000000000 8.0000000000 0.0000000800
10000000: 5.7150559425 5.7150559425 0.0000005715
1000000: 1.8854961395 1.8854961395 0.0000018855
100000: 0.5647696257 0.5647696257 0.0000056478
10000: 0.1864424646 0.1864424646 0.0000186461


另外,這是多次 (f1 - f2) / f1 跟平均值:

1000000: 944.7488403320 0.0009447498
100000: 85.7057800293 0.0008570664
10000: 9.4323215485 0.0009433264
1000: 0.9615601301 0.0009625227


1/1000 以下的相對誤差,看起還不賴呀。以後應該會用得著 XD

2006年12月3日 星期日

WordPress now

放棄 Blosxom,自己刻東西和 maintain 太累了 :p

現在改用 WordPress,看起來還不錯用,只是要麻煩訂 feed 的人更新一下了。目前原有的 feed address 暫時 redirect 到新的。

2006年11月5日 星期日

收視率

收視率,目前主導台灣電視台產業的奇怪數字。建議大家讀一下這兩篇文章。

關於收視率
http://www.wretch.cc/blog/deardale&article_id=2185523

我們的社會優劣,取決於小數點後面的數字
http://www.wretch.cc/blog/deardale&article_id=3390613

2006年11月3日 星期五

debpatch 0.99.10

[lang_zh]
這幾天幫 debpatch 加了新功能 :D

debpatch 舊的功能是自動幫 package 加 patch 然後重新 dpkg-buildpackage 出新的 deb。你所需要做的事是把你的 patch 丟到 /etc/debpatch/PACKAGE.d/ 底下。甚至 patch 之前,還可以 prepatch (PACKAGE.prepatch) 他(例如說在 debian/rules 裡面加一行
include /usr/share/cdbs/1/rules/simple-patchsys.mk

但是如果今天要 patch 的 package 是 locales 的一個檔案(我有這個需求,因為要改 UTF-8.gz),就得把「整個」glibc 重編... 所以我這兩天幫 debpatch 加上新功能,來「取代」package 裡的檔案。

所以現在我要做的事情就變成把我的 UTF-8.gz 丟到 /etc/debpatch/locales.d/data/usr/share/i18n/charmaps/UTF-8.gz 然後 build 就行了 :D (注意那個 data 目錄,概念上可以當成是 install 時的根目錄)
[/lang_zh]

[lang_en]
I add a new feature to debpatch :)

debpatch is a application to help you patch package in a easy manner, it'll like to put your patch in to /etc/debpatch/PACKAGE.d/ or prepatch with /etc/debpatch/PACKAGE.prepatch .

But when I wanted to patch a file like /usr/share/i18n/charmaps/UTF-8.gz , I had to rebuild the whole glibc package"s", which are a big job. So I added a new feature to replace files during these few days.

So what I have to do now is to put my own UTF-8.gz into /etc/debpatch/locales.d/data/usr/share/i18n/charmaps/UTF-8.gz and rebuild. That's it. (Note the "data" directory. Conceptually it can be regarded as the root directory when you install that package)
[/lang_en]

2006年11月1日 星期三

ar / dpkg-deb

[lang_zh]
昨天我提過的問題我在一個討論串中找到答案了。

ar 有不同的版本,例如 SVr4/GNU 的 ar 包成 archive 時,檔名是以 '/' 當作結尾,而 BSD 的 ar 不是。dpkg 用的是 BSD 的格式(而不是 GNU? XD),所以當我在 Debian 上用 GNU 的 ar 做 deb 時,檔名是用 '/' 結尾。而 apt-get 抓下來安裝時,卻發現檔名多了 '/',這不是他喜歡的樣子。

新的 dpkg 應該是同時 support 兩種格式的,但是我測試的 package (in fact, it's locales) 裡面的 debian-binary 是 2.0 (舊版)。不過.. dpkg tools 好像還是沒支援對 deb 寫入的功能 :(

暫時先不理他好了,反正這是 harmless ..
[/lang_zh]

[lang_en]
My problem is located in this discussion

There are different versions of ar. SVr4/GNU's ar packs archive with filename delimited by '/', but BSD's doesn't. dpkg(1) uses BSD's ar format (instead of GNU? XD). So what I built my deb with GNU ar, filenames are end with '/'. When apt-get is trying to install it, it found the filename is not what it expects.

New dpkg supposes to support both format, but the package I'm working on (in fact, it's locales) says it's debian-binary is 2.0, which is old. Anyway, it seems that dpkg tools doesn't support writing to deb until now.

Well, I guess I could ignore it since it's harmless..
[/lang_en]

2006年10月31日 星期二

not a valid DEB package

[lang_zh]
今天在用 ar 取代 .deb 裡面的 control.tar.gz 跟 data.tar.gz 時(關於 ar 跟 deb,請見我之前提過的這篇,發現做出來的 deb 會讓 apt-get install 叫 "not a valid DEB package"。雖然只是 warning,不過看了很不爽。

經過這篇 Creating Debian Packages 的提示,發現要用 dpkg-deb 做才不會有這個 warning。於是我好奇地拿兩個方法做出來的 deb 解開看,內容(包括 data 跟 control)完全一模一樣。但 dinary diff 之後的確有一小段差異,不知道是不是什麼 comment @@

不過.. 我要寫的東西只是將 package 裡面的少數幾個檔案換掉。所以用 ar 來做,所需的步驟大概是:

  1. ar x 解開

  2. gunzip data.tar.gz

  3. tar uf data.tar my_file

  4. gzip data.tar

  5. ar r data.tar.gz


但是用 dpkg-deb 的話,就必須把整個 data.tar.gz 「全解開」,丟我的檔案進去,tgz 起來... 有時間再來看看那段疑似 comment/signature 的東西是什麼 @@
[/lang_zh]

[lang_en]
I was trying to "replace" control.tar.gz and data.tar.gz in a .deb package using ar(1) command. Yes it works, but the new package make apt-get cry "not a valid DEB package." Although it's just a warning, it makes me feel bad.

I searched this problem with google and found Creating Debian Packages. It said you have to use dpkg-deb(1) to build .deb to free the warning. Curiously, I checked the two .deb (generated by ar and dpkg-deb) by extracting the package, but they were all the same. Then I took a look at the binary diff of these two, they really had some bytes of different. I don't know if they were comment or so.

Actually, what I want to do is to replace a few files in a deb package. Do it with ar(1), I only need to:


  1. ar x to extract
  2. gunzip data.tar.gz
  3. tar uf data.tar my_file
  4. gzip data.tar
  5. ar r data.tar.gz


However, with dpkg-deb(1), I have to extract the whole data.tar.gz, putting my file in, and then re-tgz it, which is very bad. I'll try to figure what the magic bytes is later.
[/lang_en]

2006年9月24日 星期日

守備數據書

昨天看到 Debugger 從美國帶回來的一堆數據書,其中有一本統計 2003-2005 全 MLB 守備的書很有趣。基本上他的概念就是 Money Ball 上提到的那樣,把球場分區、統計全聯盟平均在每一區能守下多少百分比的球,再拿每一個球員、每一隊守過某區域的球員,計算他(們)守下多少球、再跟聯盟平均相比。

書上的 abstract (還是 introduction) 一開始就挑了每個位置得過金手套,但是統計結果卻很慘的球員,例如 Mike Lowell, Derek Jeter, Bobby Abreu, etc. 有些球員還滿意外的。

有幾頁是一個球場的圖,每一隊一張圖。圖中顯示每一隊在每一區的守備水準,高於平均用藍色顯示、低於平均用紅色、差不多在平均左右的就用白色 (應該是切三等分,至少白色的 range 不是太小)。結果 NYY 的守備一片紅 Orz

全聯盟每個守位的球員,也有拿來一起比。書後面還有對每一個人,有一段簡短的評價,寫得很狠,例如 Johnny Damon 那段的最後一句..

His arm, however, is a joke.


Orz

NYY 幾乎每個人都排倒數 3 名內。當然,拿打擊成績一起來看的話,他們的貢獻度應該還是高於平均之上的。

所以... Wang 不知道被多打了多少安打,當然他也得到了非常多來自隊友的支持。說到這個,當時有人提到另一個投手,叫 Roger Clemens... XD

2006年9月6日 星期三

RSS Feed Changed

之前改過 Bloxsom 後,沒有注意到我舊的 RSS 不能用了 ... 如果您有訂閱的話,麻煩把 feed url 改成 http://victor.csie.org/blog/index.rss 。舊的目前是可以用了,但是過一陣子我可能會拿掉 :)

Baseball::Sabermetrics 0.03

Baseball::Sabermetrics 0.03 released XD

example/ws.pl(這也是我寫這個 module 的主要目的之一)距上一次的 release 前進了一大步,主要是跟 Debugger.bbs@ptt 合作 debug。最近事情比較少,看能不能把 Win Share 公式整個弄完,這樣就可以即時知道每個球員的 WS 了 :p

2006年8月8日 星期二

個人網頁

group 要研一新生做個人網頁,於是趁這個機會整理一下。

主要的變動是把 blog 整合進原本的網頁(但事實上是去改 Blosxom 讓他可以嵌東西進來),還有把相簿改成 gallery2,於是我在 gallery 遇到的問題也解決了。

2006年6月6日 星期二

Baseball::Sabermetrics

之前為了統計自己玩 cpb2 (an old dos game) 的成績,也正巧遇到 ptt Sabermetrics 板上 Debugger 提到他手動抓 CPBL 官網的資料算 Win Shares (WS 的計算很複雜,需要的資料量很多),於是寫了 Baseball::Sabermetrics 這個 perl module。他的功能是提供一個簡單的 programming interface 去抓一個聯盟的統計數據,目前內建 CPB2 與 CPBL 兩個聯盟。前幾天已經 upload 到 CPAN 上了,有興趣可以到 http://search.cpan.org 找 Baseball::Sabermetrics :D

使用方法跟範列,請見 http://search.cpan.org。

目前還有不少想加強的東西,例如 CPBL 的支援目前只有當季成績,而沒有歷史成績;聯盟的支援太少,想看看能不能用 WWW::Baseball::NPB 來納入對 NPB 的支援;MLB.com 的介面已經做得很不錯,我不確定有沒有人會需要,就再看看囉。

BTW, 為了簡化介面,裡面用了一些噁心的技巧,例如 sub AUTOLOAD : lvalue,另外還有 lazy evaluation with cache :D

2006年5月30日 星期二

Perl: ref LVALUE

[lang_zh]
前幾天在寫 Sabermetrics.pm (一個用來計算棒球一些統計數據的 pm, 弄完整一點再 release) 時,遇到了某個問題 (這個之後再說)。於是在 perldoc -f ref 裡面看到 ref 會傳回 'LVALUE',但其餘什麼都沒說啊 O_O

於是找到了這個範例程式:

http://www.farid-hajji.net/books/de/Hajji_Farid/pbv2/pw/ref-lvalue.pl.html

滿噁心的。不過看起來像是只用能在 built-in function 上,我試不出怎麼讓自己定義的 function 也能這樣用 :(
[/lang_zh]

[lang_en]
While I'm working on Sabermetrics.pm (which is for basebal statistics. It'll be released soon) these days, I encountered some problem and refered to 'perldoc -f ref'. It mentions about returning LVALUE' without any other information.

And I just find this sample program:

http://www.farid-hajji.net/books/de/Hajji_Farid/pbv2/pw/ref-lvalue.pl.html

Quite ugly. It seems to work on built-in function. I can't figure out how to use it with my own function :(
[/lang_en]

2006年3月18日 星期六

debian 的 urxvt 7.5-1 ...

好一陣子前升級到 urxvt 7.5-1 之後,每次開它都會叫 "urxvt: unable to load base fontset, please specify a valid one using -fn, aborting." 結果查不到原因只好 downgrade 回 stable,變成這樣... Orz

剛發現... 問題是上傳的 binary 有問題 %^!#$^#!$%#%$!
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=351371

2006年3月13日 星期一

惡搞 DISPLAY (for screen)

我工作時通常會 ssh 連回宿舍的電腦的 screen。有時候,例如收信(我用 mutt)收到有附圖檔時,我都得先另存下來再 scp/firefox 去開來看 。因為有 screen 的關係,所以就算用 ssh -X 也沒辦法開。不過當然也可以再開個 terminal 連一個新的 ssh -X。

於是想來惡搞一下,這樣就可以輕鬆地按 enter 開 mutt 的圖檔了 :p

(screen 裡面舊的窗當然還是不能用)

--

在下列檔案加入..

.xinitrc:

echo $DISPLAY > /tmp/display
chmod 600 /tmp/display

.bash_profile:

if [ "$DISPLAY" ]; then
echo $DISPLAY > /tmp/display
chmod 600 /tmp/display
else
rm -f /tmp/display
fi

.bashrc:

if [ "$PS1" ]; then
if [ -e /tmp/display ] && [ "$TERM" = "screen" ]; then
export DISPLAY=`cat /tmp/display`
fi
fi