星期日, 7月 29, 2007

[link] ozearch 中文最佳化搜尋引擎釋出

來自kalug/www.linux.org.tw的第一手消息:
http://www.linux.org.tw/node/350

kevinwatt在昨天的Kalug聚會中宣布以GPL版權釋出他用 Python 語言撰寫的 ozearch 0.0.1,
主要的特點是融合N-gram 以及 Word-based 這兩種斷詞方法對中文搜尋作最佳化,根據kevinwatt的現身說法是, 目前仍在大幅修改中, 之後的版本會越來越好, 所以如果有對中文搜尋引擎實作有興趣或有時間跟精力對本土自由軟體開發提供協助的朋友可以到官方網站http://ozearch.org/一探究竟. :D

星期六, 7月 28, 2007

[funny] [link] 尤拉會怎麼作? What Would Euler Do?

知名版本控制系統Subversion的作者Karl Fogel本月在他的blog透漏了這則趣事: 他在2004年跟美國數學協會購買了Excursions in Calculus,不過等付完錢拿到書之後, 過一陣子才拿到了帳單. 但是他其實早已付了錢, 美國數學協會寄給他的是一個0元的帳單,可能是作為存根之用. 不過他做了一件非常耍寶的事.


他開了一張e + 1元的支票給美國數學協會.



想當然爾, 被退了回來.

Karl Fogel對這件事的評論則是:
"""
Oh, how I wanted them to deposit it! But they didn't even try; they sent the check back uncashed. Maybe the MAA is using one of those accounts-receivable clearinghouse services, and it isn't really their fault. But if you can't write a check for e + 1 to the Mathematical Association of America, whom can you write one to?
"""

我只能說..... 醒醒吧...阿宅... XD

原文在此: http://www.rants.org/2007/07/14/what-would-euler-do/

星期四, 7月 26, 2007

續: shell script裡使用python的技巧

http://timchen119.blogspot.com/2007/02/shell-scriptpython.html
繼上次這篇文章裡的方法, lloyd大大又教了我更多用python只寫一行程式碼的方法,比如:

cat /etc/passwd | python -c "$(echo -e 'import sys \nfor i in sys.stdin: \n s=i.split(":")\n if s[0] == "root": \n  for j in range(len(s)): print s[j],')"

或者是
source lpython.sh

#lpython.sh
lpython ()
{
python -c "$(echo -e "$@")"
}
然後
cat /etc/passwd | lpython 'import sys \nfor i in sys.stdin: \n s=i.split(":")\n if s[0] == "root": \n  for j in range(len(s)): print s[j],'


這個方法巧妙的運用了 \n 跟空白來避開python在one-liner情況下的縮排問題, 不失為一種方便的方法.

相同的需求也有例如pyone之類的實作方式, 不過比較起來我比較喜歡lloyd的方法.

星期日, 7月 22, 2007

Xen Merged into Linux 2.6.23

http://kerneltrap.org/node/13917, 來自kernel trap的最新消息.

Xen是一個開放原始碼虛擬機監視器,
簡單的說, Xen可以讓一台機器同時跑好幾個作業系統,
而且模擬的速度接近原本cpu速度.
(目前就我所知執行速度是比User mode linux/KVM/kqemu都快的多,
跟qemu/virtualbox/vmware當然更不是同一個檔次的)

前陣子才剛在一台debian etch(dom0)上安裝netbsd跟freebsd的domU,
(DomU 其實就是Xen對guest OS的術語. 而Dom0就是host os.
netbsd是*bsd裡對xen支援最完善的,
目前3.1 release版本就直接支援, 既可以當host OS也可以當guest OS.
如果有人想安裝FreeBSD作guest OS的話, 我建議可以直接參考FreeBSD handbook,21.2.2.1 Setup Xen 3 on Linux dom0,有個不怎麼新的7-current(N個月前的)可以玩,有VT支援的cpu的話應該就比較簡單一點,
也因為我身邊沒半台可以支援VT的cpu(啥怪cpu都有就是沒intel core2duo XD),不然應該可以裝個windows當guest os)
但是說真的, 目前安裝xen還是有點麻煩,
不過我想xen merge進i386的linux之後,
xen應該會越來越得到關愛的眼神才對.
以後搞不好哪天apt-get install xen-netbsd-domU-image就裝好了. (希望啦 XD)

(ps: 差點忘了提最大的重點/亮點:
除去kernel部份 xen大部分的程式碼都是用python寫的!! XDXDXD)

星期六, 7月 21, 2007

[tip] django + oracle on debian linux.

目前SVN裡最新版本django已經由官方直接支援oracle資料庫,
也因此我也花了點時間測試一下django跟oracle的配合.
用起來覺得還不錯, 所以跟大家分享一下我的簡易安裝心得.

首先我是直接安裝oracle 10g 的XE版本,
在debian linux上安裝oracle 10g xe其實很簡單, (我是用etch)
因為oracle連apt套件庫都幫你準備好了.

只要在你的sources.list加上這行:


deb http://oss.oracle.com/debian/ unstable main non-free

並安裝:

#wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
#apt-get update;apt-get install orcale-xe-universal

最後跑個/etc/init.d/oracle-xe configure即可作oracle的安裝設定.
如果想測試安裝oracle xe的結果可以連上Web的8080port看管理介面:
http://127.0.0.1:8080/apex/

這個版本的oracle除了有內定最大只能使用4G資料庫大小,1G Memory
跟只會使用單顆CPU的限制外,
並沒有限制其他特別嚴苛的條件, 連商業使用都在可允許的範圍.
而因為這個限制其實很夠用,且高階一點的機器可以跑個vserver還是memcache.
然後你要多跑幾個database也不在限制範圍內,
所以其實我個人覺得就是oracle資料庫大放送, 隨便你用.
再來這個版本又比我印象中的oracle好安裝的太多.
還送你一個web管理介面(而且oracle似乎有心要繼續維護10g XE,我安裝時有根據官網的說明順便升級到了目前最新的apex版本3.0.1),可以說是物超所值.

再來就是安裝python的oracle支援套件cx_oracle,
因為官方網站只有提供windows跟fedora的binary套件, 我就直接抓source回來安裝,

export ORACLE_HOME='/usr/lib/oracle/xe/app/oracle/product/10.2.0/server'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

python setup.py install


接下來當然就是安裝django的最新svn版本,
這點看官方網站的Installing the development version說明應該就很清楚了,
http://www.djangoproject.com/documentation/install/

安裝完之後其實就跟其他資料庫沒什麼太大的差異了,
就可以寫個小程式測試一下了,
不過我上次測試的時候遇到了一點小問題,
就是我在syncdb時出現了一個
TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode'
的錯誤訊息,
我推測應該是因為oracle這個branch剛好跟unicode這個branch同時進了svn trunk,
所以漏掉了這個,
可以暫時先依照我丟到http://code.djangoproject.com/ticket/4827的patch修正,
不過我想下一版release的django應該就會修正這個問題才對.

總算,oracle成為
django除了mysql,postgresql,sqlite之外的第四個直接支援的database.
也是第一個support的商業database.
雖然我目前用不大到(postgres還是不錯滴), 不過還是可喜可賀. :)

星期五, 7月 20, 2007

[tip] 使用yolk管理python套件.

yolk是一個可以查詢pypi套件及本機所安裝的python套件資訊的實用工具.

python自從這幾年引入setuptools,cheese shop等新技術之後,
安裝新套件變的相當容易.
大多時候我想新安裝套件除了透過作業系統的套件管理之外,
幾乎只要透過easy_install來安裝即可.
除了少部份仍未支援setuptools的pypi套件外,
大部份列在chesse shop裡的套件基本上都可以透過easy_install的方法安裝.

但是安裝變的容易了, setuptools裡卻沒有附上簡單的命令可以協助使用者管理套件,
包括版本的控管及升級, python套件安裝的數量等等資訊, 都要由系統管理者來自行紀錄.
實在不是一個很好的作法. 然而yolk這個好用的工具正可以填補這個缺陷,

首先當然是先安裝yolk, 最簡單的方法是用easy_install安裝.


easy_install -Z yolk


沒有easy_install這個程式的話 (會有人沒有裝嗎? @_@ )
則可以用你常用的套件管理程式安裝setuptools,
或請把下面的script抓下來並執行,就會安裝setuptools了:
http://peak.telecommunity.com/dist/ez_setup.py

(如果你跟我一樣也使用gentoo, 可以用overlay裡的pythonhead來安裝,
我建議你可以順便安裝g-pypi, 這是由同一作者所寫可以直接由pypi裡的套件產生ebuild的工具.
安裝g-pypi就會連yolk一起安裝了.)

幾個我常用的命令說明如下:
(請注意以下指的套件, 在python2.5之前是只限於用setuptools,easy_install安裝的python套件,
若使用python2.5+則是全部的套件都可以管理.)

yolk -l
列出這台機器所安裝的套件.
yolk -U
列出這台機器可以更新的套件及最新的版本.
yolk -F nose -T svn
將nose這個套件的最新svn版本抓下來放在./nose_svn
yolk -M nose
列出nose這個套件的meta資訊(版本,說明,版權等)
yolk -D ezpyinline
列出可以抓到ezpyinline這個套件的位址.
yolk -H nose
打開瀏覽器並連到nose這個套件的官方網站.

星期二, 7月 03, 2007

台灣opensource社群活動行事曆

YurenJu目前正在維護台灣OpenSource社群活動行事曆, 台灣各地其實到處都有各種開放原始碼的社群聚會, 只是有時這些活動的時間不大容易記住, 也很容易排定的時間上有所衝突, 有個可以一目瞭然的行事曆的確是好的多.

目前我已在維護的kalugpython星球上加入連結,
其他社群的朋友如果想加入到自己的網站上的話,
只要插入下面這一段HTML碼就可以了.

<div>
<iframe style=" border-width:0 " width="240"
frameborder="0"
src="http://www.google.com/calendar/embed?src=p09uh8cg4uvt2ij4obf45cltsk%40group.calendar.google.com&chrome=NONE&mode=AGENDA&hl=zh_TW&height=350"
height="350">
</iframe>
<a target="_blank"
href="http://www.google.com/calendar/render?cid=p09uh8cg4uvt2ij4obf45cltsk%40group.calendar.google.com">
<img border="0"
src="http://www.google.com/calendar/images/ext/gc_button1_en.gif"/></a>
</div>

另外yurenju也在號召有興趣共同參與更新行事曆的朋友, 如果您的組織有經常性的活動的話, 可以跟yurenju聯絡.

星期日, 7月 01, 2007

[rant] 三星硬碟三年保固.... 根本只是個噱頭....

只怪我當初沒做好功課, 兩年前被賣場的人唬了...

兩年多前對硬碟保固極度無知的我, 當時聽信賣場人員的SamSung硬碟堅持三年保固的說法,

傻傻的買了一顆80G的三星SitePoint硬碟給我老爸當主硬碟...想說可能比較有保障.

前幾天無預警掛了之後 就準備拿來去換顆"良品". 所以開始查說是在那邊維修.

根據我硬碟上的保固貼紙, 就去查到了建達國際的網站,

沒想到不查還好, 一查才發現.... 根本就是被騙了...

沒錯 是三年保固 不過不是免錢的保固,

買了硬碟30天過後, 硬碟壞了就不會換新品給你了, 就是換良品.

第一年過了之後即使在保固期內, 送修就開始要收費了,

那所謂三星的三年保固跟一年保固又有啥不同呢?

講難聽一點就是過了三年他連理都不理你了. 要送修? 直接買新品吧...

建達國際對於出貨只要滿一年的硬碟.....要收500元的手續費...

這手續費還真高. 也不會換個新品給你, 就是會換個良品(就是以前大概壞過被修好的吧)

那現在市場上主流根本也沒有在賣80G的IDE硬碟了,

想送修時順便換個大一點的硬碟的話,

這建達國際從80GB"升級"到250G 還要再加1500元...

然後呢 這保固期限也並沒有延長...

是"延續原送修硬碟之剩餘保限".... 我實在不明白這啥道理?

昏倒, 我重買一顆全新的 WD 250 GB, 7200rpm ,

8M緩衝的硬碟也不過2200多還有新的三年保固呢... 這擺明了不想讓你換.

唉 認栽了 買到爛貨就算了...還得享受這種三流服務...

以後不再聽信這三星保固什麼鬼的了...

還是sony的保固好,

數位相機最重要的ccd壞了問也沒問就幫我修好也沒收半毛錢...

(註 建達國際也代理maxtor硬碟 所以 自求多福 :P)