python耶~~
今天同事跑來問我mips上有否uc版本的python,
一問之下原來是某版子的tv tuner附的sample application是日本人用python寫的, 沒python的話沒辦法試.
也剛剛好我也才剛編完mips uc版本的python 2.5.1沒多久,
所以就剛好直接拿過去用.
不過嚇我一跳,
以前都是得主動出擊之外還要忍受冷嘲熱諷,
這可是第一次有embedded業務上的code是要求"必須"有python的.
:D
"拜Python教" 是一個低耦合高熱血密度的小型地下傳教組織.
專門研究並推廣Python崇拜
"Django光明會支部"
是一實驗性分享Python, Django及自由軟體心得的中文部落格
今天同事跑來問我mips上有否uc版本的python,
一問之下原來是某版子的tv tuner附的sample application是日本人用python寫的, 沒python的話沒辦法試.
也剛剛好我也才剛編完mips uc版本的python 2.5.1沒多久,
所以就剛好直接拿過去用.
不過嚇我一跳,
以前都是得主動出擊之外還要忍受冷嘲熱諷,
這可是第一次有embedded業務上的code是要求"必須"有python的.
:D
張貼者: 使徒提姆 !? 於 星期四, 12月 13, 2007 0 意見
因為lloyd大大說他可愛的老婆說, 『不要因為便宜而買,然後嫌棄壞掉,還不如買好一點,用久一點來的划算』,於是就買了一支logitech的g5滑鼠, 但是linux下沒有windows上的setpoint driver, 所以就自己來了.
一插上就會自動有的功能包括左右中鍵滾輪上下跟硬體dpi設定,
不過滾輪向左向右水平滾動的功能未啟動,
另外大姆指鍵要自己做一些設定以符合自己的需求.
首先是/etc/X11/xorg.conf的基本配置
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "G5" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "G5"
Driver "evdev"
Option "Name" "Logitech USB Gaming Mouse"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "no"
EndSection
pointer = 1 8 3 4 5 7 6 2 9 10 11 12 13 14 15 16 17 18 19 20
(xbindkey '("b:6") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Up]'")
(xbindkey '("b:7") "/usr/bin/xvkbd -xsendevent -text '\\[Control_L]\\[Page_Down]'")
(xbindkey '("b:8") "/usr/bin/xvkbd -window gnome-terminal -xsendevent -text '\\[Control_L]\\[V]'")
這句可能會成為Python Programmers的本月(年?)最經典.
此句的出典為本月在駭客圈裡非常知名但原本推崇perl語言的XKCD網站漫畫 (xkcd的作者昨天學了python, 注意看的話會發現Tooltip上還寫著Perl, I'm Leaving you.):
隨即有網友作了T-shirt:
加上 TIOBE Programming Community Index 的本月頭條: December Headline: Python surpasses Perl for the first time in history.
這個月似乎python推廣的好消息不斷. (或是perl ain't cool anymore?!)
所以,
下次記得老闆要叫你"""飛給他看"""的時候,
python可是連反重力模組都幫你寫好了.
;)
I've found trac's fastcgi backend simply out-dated. I thinks it's direct copied from an old flup source, and since then flup really updates a lot, I've already use thread pool techniques everywhere in our web applications/frameworks for a while, so current trac's fastcgi backend implement just so out-dated and looks wierd when I installed it, really.
But thanks there's WSGI to save us ! I could just replace the fastcgi backend to flup-0.5 (latest, and author claims it maybe final version of flup) and SAVE MEMORY !
and it's simple too,
just install the flup package, and edit your old trac.fcgi / lighttpd's settings.
trac.fcgi:
try:
import pkg_resources
from trac import __version__ as VERSION
from trac.web.main import dispatch_request
from flup.server.fcgi import WSGIServer
WSGIServer(dispatch_request,maxSpare=100,minSpare=100,maxThreads=100).run()
except SystemExit:
raise
except Exception, e:
print 'Content-Type: text/plain\r\n\r\n',
print 'Oops...'
print 'Trac detected an internal error:'
print e
import traceback
import StringIO
tb = StringIO.StringIO()
traceback.print_exc(file=tb)
print tb.getvalue()
fastcgi.server += ("/sandbox" =>
("sandbox" =>
("socket" => "/tmp/trac-sandbox.sock", #need to change for each
"bin-path" => "/var/trac/cgi-bin/trac.fcgi",
"max-procs" => 1, #default 4
"check-local" => "disable",
"bin-environment" =>
("TRAC_ENV" => "/var/trac/sandbox")
)
)
)
來自 Slashdot 的報導:
耶魯大學政治聯盟(Yale
Political Union, YPU,美國最古老的學生政治組織)的學生
仿效著名geek漫畫xkcd, 在耶魯一場Stallman對於DRM(Digital restrictions management)議題的演講裡, 對Stallman進行(玩笑似的)攻擊.
Richard Stallman主要在耶魯大學講述的議題為DRM,
RMS 認為現在大型商業公司(Apple,Microsoft,Sony)推動的DRM(數位著作權管理)是非法的,
常用的DRM限制包括:
* 必須在指定電腦或播放機才能播放
* 必須在特定的日期前才能播放
* 播放的次數
* 傳輸到播放機的次數
* 燒錄到光碟的次數
* 以上限制的混合
(引用自Wikipedia的DRM條目)
而GPLv3也可說是RichardStallman對DRM全面宣戰的GPL改進條款.
耶魯大學政治聯盟在RMS演講之後, 進行對 "DRM是非法的"這個議題的投票, 以33對20票通過.
不論我喜不喜歡GPL, RMS無疑是自由軟體界真正的鬥士,
他對於他眼中的惡向來從不讓步,
沒有GPL與FSF, 今日的自由軟體絕不能如此蓬勃.
而這樣具有風骨的人物跟信念堅持, 不論我是否同意他的論點, 都是讓我值得尊敬的.
張貼者: 使徒提姆 !? 於 星期日, 10月 21, 2007 0 意見
標籤: drm, humor, opensource, talk, xkcd
我下的果然是聳動的標題 :X
不過這陣子來Theo de Raadt (正反評價兩極化的openbsd hacker)對GPL的抨擊可以說是將沈睡已久的聲音再吶喊出來.
關於這件八卦有興趣的人其實可以在網上搜索一下,應該可以查到不少消息. 所以我只發表一下我無聊的感想.
一直以來信仰GPL的人們對於BSD license的評價就是以BSD-like版權放出的程式有機會被大企業給偷盜,然後變成close sourced的商業軟體. 所以最好自由軟體都使用GPL license才不會有問題.
簡而言之以GPL信仰者的觀點就是:
GPL --> 正義的一方
商業公司,closed source --> 邪惡的一方
BSD --> 爛好人,鄉愿
不過以BSD版權使用者的觀點來看, 似乎就不是這樣了.
大部份使用BSD版權釋出的軟體, 在實務上即使是被公司當作是closed source軟體販賣, 這些公司經常仍會回報patch給原本的團隊或作者. 此外, 增加使用的人數並真實的在商業上運用也有助於程式的測試改進.
所以公司或商業化的軟體 就算沒有幫助 基本上對BSD版權的危害並不如GPL的信仰者們所說的大.
而如果有人將軟體做了一些改進, 並用GPL版權釋出, 結果會變成怎樣呢?
今天舉個例子,比如說如果某個原本是用BSD版權開發的blog軟體,被某個GPL信仰者做了一些改進,並且改用GPL版權釋出. 這會造成原本都是自由軟體的使用族群分散之外, 另外如果新的修正是基於GPL版本的blog做的修正, 原本的BSD軟體就不再能拿回來用了. 因為新的修正會受到GPL的影響. 不得不變成一個GPL patch.(任何基於GPL衍生的程式碼均得為GPL授權), 知道這樣的嚴重性了吧, 也就是說GPL比封閉軟體還狠, 作完自己的修正之後不僅要奪走BSD版權的軟體現在的顧客,還要剝奪未來原本BSD可參考改進的程式碼, 變成只剩GPL-only授權釋出的程式有做修正. (當然 可以請求每個patch的原作者再用BSD版權釋出,然後再基於這個patch再做修改,不過在實務上似乎很少能做到如此)
Theo事件的導火線也在於此, linux people將BSD/GPL dual license的driver版權宣告拿掉, 然後re-license成GPL. 拿掉別人原本的版權宣告沒有任何問題吗? GPL people認為是沒有的, 總而言之 為了GPL people相信的正義 是可以犧牲BSD people的, 即使以後所有在linux上的driver的code patch都不得不為GPL, BSD版權的人們一點都不能拿來用也無所謂, 非我族類, 其心必殊.....
所以說... 就算theo過去怎樣怎樣 這次我覺得他講的倒有點道理... gpl 信仰者們, 也許BSD對於你們是異教徒, 但, 所謂自由軟體的正義真的是只有一條道路吗? 刪掉別人的雙版權宣告, 然後改成GPL only 真的是那麼的正義那麼理所當然吗? 我想值得再思考思考.
張貼者: 使徒提姆 !? 於 星期六, 9月 29, 2007 0 意見
看了Digg上這篇文章之後, 才發現gimp建圖檔時可以選衛生紙這個選項~~
試了一下還真的哩...
喔 這個概念真不錯 不過我家印表機可能印不出來吧....
還是美國的衛生紙現在改用 Double A材質了 ??? XD
張貼者: 使徒提姆 !? 於 星期一, 9月 24, 2007 0 意見
不知道國家找我這種沒戰鬥力的文官去幹嘛~~ 我當兵都在寫公文跟當客服處理客訴啊~~
哪會作啥戰...
還要去屏東某營區一個禮拜~~ 禮拜天早上就得出發~~
唉唉~~ 真不想去~~
我是很愛好和平的啊~~ (其實是不爽錯過一個禮拜的新番 Arrrrrgh~~ XD)
祝我平安歸來吧~~
張貼者: 使徒提姆 !? 於 星期五, 9月 07, 2007 0 意見
Part I
Part II
Slide
這兩部影片是在OSCON2007裡Simon Peyton-Jones的Haskell演講, 其實已經隔了一段時間, 今天晚上才一時興起去看,
因為知道是Microsoft Research裡的Haskell創造者之一,
原本是預期一個長得鬍鬚長長的老頭 然後開始講一些誰都聽不懂的玄學...
不然應該至少要長得像星際大戰的尤達吧~~
結果看了影片之後發現根本就大錯特錯... 大師不僅可以把玄學講成簡單的道理,
長得還比較像歐比王跟魁剛金...
連我都似乎開始有點聽懂了 @@ (雖然說這肯定是大師的催眠術)
Haskell最大的賣點不僅在於他是一個純粹的functional programming language,
更重要的是Haskell還帶有非常多在其他語言看不到的高等特性,包括惰性(laziness),型態類別(type classes), monads等等, 而這些特性將有可能會強烈的影響到我們下一個世代的程式設計語言.
也因此在諸多語言裡面也慢慢可以看到Haskell的色彩, 包括Simon Peyton-Jones所提到的C# 3.0, (LINQ據說是受到monads的直接影響), 還有python2之後的list comprehension等等都是例子,我覺得這些特性應該會慢慢的從Haskell中被帶出來讓世人所熟知.
(對了 講到python, lambda,map,filter都還在python 3.0a的builtin/keywords裡面,
只有reduce被移到functools裡. 之前map filter說要被降級好像是誤傳?(未查證))
Simon一開始講的是xmonad, 主要是一個haskell寫的
window manager, 非常的小所以他拿來作說明, 然後就開始講一些functional programming的基礎特性, 我主要注意到他說Haskell的types跟UML一樣是用來表示High level design, 這倒很有意思, 我是個python user/advocators我會喜歡duck typing跟lisp這種dynamic types的語言是很自然的, 但是像Haskell這樣的static typing語言不僅有type inference可以減少累贅感, 另外還可以透過compiler檢查高階設計, Data types的construct語法看起來其實也很接近BNF, 倒是讓我覺得static typing也沒有那麼壞了起來.
不過type classes有點複雜, 這是連Simon這種神人都覺得未來仍有發展空間的東西 我並沒有完全跟上, 改天還要再深入研究.然後就開始講到I/O跟scripting, IO的部份, 並不是很直觀, 網路上對於monad的討論也多到暴 所以我也是聽得很霧 另外也提到了Haskell library的現狀(就我以前try過的一些經驗, Haskell的library不算多, Cabel比較像是python的distutils, 可以裝一些3rd party的module, 不過dependency的部份有點麻煩, 似乎現在有人在發展一些工具在處理不過還是沒有很成熟), 這部份其實我目前比較沒有那麼大的興趣, 所以聽得有點散, 其實python就目前實務使用(套件,標準庫...等等)來說還是比Haskell成熟的多,並沒有很急著要學太多實務部份, 但我覺得Haskell是非常具未來性的語言, 所以現在多花點時間了解一些更基礎的特性或許也是對的.
之後開始聽到有關laziness跟first-class control structures, 這很有趣, 如果有學過lisp的話肯定知道lisp有所謂的special form跟macro, 因為lisp是一種語言的語言(meta language), 可以透過macro來無限制的擴展語言, 所以雖然是在1990年代的OOP風潮前就有的語言但卻可以不改變語言的本身特性而發展CLOS這樣的物件系統, 這也是為甚麼lisp之所以吸引人並且長久有穩定支持族群的原因, Haskell的laziness就是讓function跟data constructors不在第一時間就被evaluate, 直到真正需要的時候才去eval, 而這讓Haskell靠著laziness來取代lisp透過macro來支援special form的方法, 只要單純的撰寫函式就可以更動control structure, 這真是非常酷的特點.
最後simon講到Haskell跟其他語言採取完全不同的方法設計, 其他語言主要是一開始先想辦法讓語言有用(Useful)而慢慢的再來加一些限制讓語言更安全(safe), 而Haskell則是採取一開始是Useless(無用處)但是Safe的設計,然後慢慢的讓語言更加具有功能性.
之後simon也講了一些工具跟網站 畢竟這個演講也只是粗淺的導引, 還是有很多深入的內容要多看多玩才會了解 不過之前也看過一些Haskell的介紹跟導引, 他的演講對於個人提高興趣及指點迷津上我倒覺得成效還不錯.
看完演講總算比較有信心覺得這是個正常人可以玩的程式語言了, 知道玩這個語言沒那麼容易變成瘋狂數學家總是安心不少 ;) 不知道為啥突然想起研究所唸過的Kiyoshi Itō這個超神的家伙,記得聽以前的教授說Ito calculus是他的碩士論文發明了之後, 讓我真是想去再生兩個腦袋, 不過還好haskell裡的lambda caluli沒那麼困難, 只要知道\在haskell裡面是代表lambda, 其他只要lisp學好的話搞不好會更欣賞haskell滿直覺的表示法, 型別的理論我比較少接觸看起來還要多摸, 比較困難的是monad, 有時間的話繼續努力玩玩. (話說大師的催眠術果然是無敵的, 看來只要一直想著這很簡單這很簡單終究會變得..感覺..簡單起來 XD)
張貼者: 使徒提姆 !? 於 星期五, 9月 07, 2007 0 意見
標籤: haskell, link, programming
替你的iphone灌個django吧.... (不過沒iphone orz)
圖片:
http://www.flickr.com/photos/jacobian/1160698795/
iPhone call database using django
一些文章:
http://simonwillison.net/2007/Aug/19/worked/
http://livinghardknox.com/2007/08/20/django-and-the-iphone/
http://livinghardknox.com/2007/08/21/more-on-django-and-the-iphone/
張貼者: 使徒提姆 !? 於 星期三, 8月 22, 2007 0 意見
同事跟我說他想把x.org裡滑鼠中鍵貼上的功能改成用滑鼠的右鍵貼上, 雖然我搞不懂為啥會有人想這麼作,但還是有辦法的...
在xorg.conf裡:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
.....
Option "ButtonMapping" "1 2 2 4 5 6 7 8 9"
EndSection
只要加上ButtonMapping這個選項, 就可以把實體的按鍵跟
邏輯上的按鍵分開來定義,而這個選項的定義方式就是將邏輯上按鈕照實體上的順序排列,而實體上的1通常代表滑鼠左鍵 2代表滑鼠中鍵3代表滑鼠右鍵.
像上例中 "ButtonMapping" "1 2 2 4 5 6 7 8 9"
就是表示將邏輯上的1 2 2 定義到實體上的 1 2 3
也就是將滑鼠實體上的右鍵現在定義了原本滑鼠中鍵貼上的功能
如果要把滑鼠實體中鍵的功能完全取消, 也只要拿一個原本邏輯上未定義的按鈕替換掉即可,
如: "ButtonMapping" "1 9 2 4 5 6 7 8 9"
這樣即可將原本中鍵的功能取消, 並將右鍵變成貼上的功能.
張貼者: 使徒提姆 !? 於 星期二, 8月 21, 2007 0 意見
update:
Space shuttle Endeavour lands safely in Florida 十數天後平安歸來了! 可喜可賀!
http://science.slashdot.org/science/07/08/11/0110236.shtml
NASA的奮進號太空梭於日前發射, 執行第118號太空任務, 不過根據最新的消息, 似乎發射過程中有被冰塊擊中機腹,
造成機腹有一塊三平方英吋凹槽的情形發生.
也許聽起來不嚴重, 但這也不禁令人想起就在四年前, NASA發射的哥倫比亞號, 也是在發射時被泡棉擊中機翼,
經NASA技師判定無問題, 管理階層開會數次且判定為不處理的情況下,
再兩個禮拜後回到地球地表時過熱而解體爆炸導致全部太空人死亡的悲劇.
這次發射任務眾所矚目的焦點是自從二十年前挑戰者號搭載教師卻在發射過程中爆炸後,
第一次搭載教師上太空梭, 這次上太空的女教師芭芭拉摩根, 其實就是跟二十年前挑戰者號不幸罹難的女教師克莉絲塔在Teacher_in_space計畫裡一起受訓,也名列在挑戰者號太空任務的候補名單, 自從挑戰者號失事之後, 計畫被迫中斷, Barbara繼續回去教書, 而這期間為了替代挑戰者號建造了奮進號, 因此到了1998, Barbara才重新回到nasa.Teacher_in_space計畫也才得以重新繼續, Barbara也直到今日才能升空一圓夢想彌補遺憾.
話說為啥我這麼關心這段故事咧... 話說前幾個月才剛看完歡樂收場的"Rocket Girl",對於這種現實發生而被變調過的故事橋段特別的有愛...:P 祝福這次Endeavour飛航成功順利啊... 不, マツリ, 你一定要成功啊~~~ XD
就在三四年後, NASA的太空船也將全部退休, 改由新一代的可拋式Orion宇宙飛船接替, 希望接下來的這幾次飛行任務都不要出甚麼大狀況才好. 加油吧 NASA. 奮鬥吧 太空人們... :D
張貼者: 使徒提姆 !? 於 星期六, 8月 11, 2007 0 意見
Maybe someone would interested, so I posted the results here:
(Benchmarking on a p4 3.4G SMP debian stable-etch, 2giga ram machine, all SCM software use packages from debian stable, checkout/branch occurs on localhost)
conclude:
initial speed: hg==git(3Min) >> bzr(15Min) >> svn(71Min)
checkout/clone speed: hg == git(3Min) >> svn(11Min) >> bzr(21Min)
space effiency: hg==git(123Mb) >> bzr (230Mb) >> svn(repo:82Mb+workingdir:573Mb = 655Mb)
== report ==
hg:
/usr/bin/time -o ../hginit.usage hg init
/usr/bin/time -o ../hgadd.usage hg add .
/usr/bin/time -o ../hgcommit.usage hg commit -m "first import"
real 3m25.284s
user 0m34.130s
sys 0m4.868s
git:
/usr/bin/time -o ../gitinit.usage git init-db
/usr/bin/time -o ../gitadd.usage git add .
/usr/bin/time -o ../gitcommit.usage git commit -m "first import"
real 3m20.346s
user 0m23.061s
sys 0m5.032s
bzr:
/usr/bin/time -o ../bzrinit.usage bzr init
/usr/bin/time -o ../bzradd.usage bzr add .
/usr/bin/time -o ../bzrcommit.usage bzr commit -m "first import"
real 15m10.689s
user 1m59.299s
sys 0m9.617s
svn:
svnadmin create --fs-type fsfs /home/tim/test/testsvnrepo/
svn import -m "New import" linux-2.6-2.6.18.dfsg.1 file:///home/tim/test/testsvnrepo/
real 71m3.704s
user 0m53.467s
sys 0m24.998s
#### Checkout/Branch(Clone) time ####
#time bzr clone linux-2.6-2.6.18.dfsg.1/ testbzrclone
Branched 1 revision(s).
real 21m5.351s
user 1m38.898s
sys 0m11.465s
# time hg clone linux-2.6-2.6.18.dfsg.1/ testhgclone
20690 files updated, 0 files merged, 0 files removed, 0 files unresolved
real 3m15.951s
user 0m12.449s
sys 0m4.016s
#time git-clone linux-2.6-2.6.18.dfsg.1 testgitclone
remote: Generating pack...
remote: Done counting 21351 objects.
remote: Deltifying 21351 objects.
remote: 100% (21351/21351) done
Indexing 21351 objects.
remote: Total 21351, written 21351 (delta 2213), reused 0 (delta 0)
100% (21351/21351) done
Resolving 2213 deltas.
100% (2213/2213) done
Checking files out...
100% (20323/20323) done
real 3m27.516s
user 0m59.908s
sys 0m5.132s
#time svn co file:///home/tim/test/testsvnrepo/ testsvnco
Checked out revision 1.
real 11m44.980s
user 0m35.294s
sys 0m15.849s
####SPACE USAGE ####
123M linux-2.6-2.6.18.dfsg.1/.hg
123M linux-2.6-2.6.18.dfsg.1/.git
230M linux-2.6-2.6.18.dfsg.1/.bzr
82M testsvnrepo
573M testsvnco
Note: I've installed bzr 0.18, and results shows no big difference.
張貼者: 使徒提姆 !? 於 星期四, 8月 09, 2007 0 意見
來自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月 29, 2007 0 意見
知名版本控制系統Subversion的作者Karl Fogel本月在他的blog透漏了這則趣事: 他在2004年跟美國數學協會購買了Excursions in Calculus,不過等付完錢拿到書之後, 過一陣子才拿到了帳單. 但是他其實早已付了錢, 美國數學協會寄給他的是一個0元的帳單,可能是作為存根之用. 不過他做了一件非常耍寶的事.
他開了一張eiπ + 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 eiπ + 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月 28, 2007 0 意見
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],')"
然後
#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],'
張貼者: 使徒提姆 !? 於 星期四, 7月 26, 2007 2 意見
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)
目前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
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
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
YurenJu目前正在維護台灣OpenSource社群活動行事曆, 台灣各地其實到處都有各種開放原始碼的社群聚會, 只是有時這些活動的時間不大容易記住, 也很容易排定的時間上有所衝突, 有個可以一目瞭然的行事曆的確是好的多.
目前我已在維護的kalug及python星球上加入連結,
其他社群的朋友如果想加入到自己的網站上的話,
只要插入下面這一段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月 03, 2007 0 意見
標籤: kalug, opensource, talk
只怪我當初沒做好功課, 兩年前被賣場的人唬了...
兩年多前對硬碟保固極度無知的我, 當時聽信賣場人員的SamSung硬碟堅持三年保固的說法,
傻傻的買了一顆80G的三星SitePoint硬碟給我老爸當主硬碟...想說可能比較有保障.
前幾天無預警掛了之後 就準備拿來去換顆"良品". 所以開始查說是在那邊維修.
根據我硬碟上的保固貼紙, 就去查到了建達國際的網站,
沒想到不查還好, 一查才發現.... 根本就是被騙了...
沒錯 是三年保固 不過不是免錢的保固,
買了硬碟30天過後, 硬碟壞了就不會換新品給你了, 就是換良品.
第一年過了之後即使在保固期內, 送修就開始要收費了,
那所謂三星的三年保固跟一年保固又有啥不同呢?
講難聽一點就是過了三年他連理都不理你了. 要送修? 直接買新品吧...
建達國際對於出貨只要滿一年的硬碟.....要收500元的手續費...
這手續費還真高. 也不會換個新品給你, 就是會換個良品(就是以前大概壞過被修好的吧)
那現在市場上主流根本也沒有在賣80G的IDE硬碟了,
想送修時順便換個大一點的硬碟的話,
這建達國際從80GB"升級"到250G 還要再加1500元...
然後呢 這保固期限也並沒有延長...
是"延續原送修硬碟之剩餘保限".... 我實在不明白這啥道理?
昏倒, 我重買一顆全新的 WD 250 GB, 7200rpm ,
8M緩衝的硬碟也不過2200多還有新的三年保固呢... 這擺明了不想讓你換.
唉 認栽了 買到爛貨就算了...還得享受這種三流服務...
以後不再聽信這三星保固什麼鬼的了...
還是sony的保固好,
數位相機最重要的ccd壞了問也沒問就幫我修好也沒收半毛錢...
(註 建達國際也代理maxtor硬碟 所以 自求多福 :P)
張貼者: 使徒提姆 !? 於 星期日, 7月 01, 2007 1 意見
標籤: rant
一直都耳聞django的apache+mod_fastcgi+thread mode在高負載狀況下有問題,
甚至也有人將之歸結於python的thread實作有問題,
所以我一直以來都是使用prefork的方式來啟動fastcgi/wsgi,
上禮拜在替django作負載調試的時候,
也發現thread mode在超高壓力測試的情況下,的確會停止運作造成service unavailable
(concurrency > 1000)
因此才花時間找出真正的原因(至少在我這邊的原因),
應該是django所採用(其實不止django, pylons跟turbogears也有採用)
的FastCGI to WSGI adapter -- flup,
在threadpool的實作上有些許的小問題, 沒有對運作異常的thread拋出例外的情形加以處理,
才導致了發生問題的thread沒有再次進入threadpool,所以運作一陣子後會讓所有thread悄悄死去.
在修正了這個問題之後, 即使在concurrency > 1000的情況下仍然保持順暢運作,
也擺脫了使用modpython或prefork mode的fastcgi大量耗用伺服器記憶體的情形,
thread mode + FastCGI/WSGI 果然才是王道!
我已提交patch, 期待新版的flup收納之後, 讓python的web framework在thread mode下運作更順利.
Python 3000 Status Update 來自BDFL (GvR) 的消息, 說明目前python 3.0的發展狀況.
python 3.0的第一個alpha測試版本將延至今年八月底釋出. (還有兩個月!)
所以預定3.0的最終釋出版本也順延至2008年第二季後.
恩, 照這個估算2009才是python3.0正式的開始.
還有一年半的時間可以假裝這世界上沒有python 3.0 ;)
張貼者: 使徒提姆 !? 於 星期二, 6月 19, 2007 0 意見
http://wolfram.kriesing.de/blog/index.php/2007/generate-django-project-api-docs
這篇講到如何用epydoc產生比admin裡的doc更完整的django API文件.
當然會包含自己專案裡面API的doc string.
very useful.
馬克·沙特爾沃思(Mark Shuttleworth)先生 -- 如果你不知道我在講誰的話....
就是世界第二位平民太空人,早期debian開發者跟Ubuntu創辦人啦...
在他的blog上談論了他對VCS的一系列看法.
Choose Lossless VCS tools if you have the luxury
Further thoughts on version control
Renaming is the killer app of distributed version control
我讀了一下他的觀點大概就像這樣...
"""
VCS最重要的功能就是renaming, 而bzr把renaming視為非常重要的功能,
不管你的目錄怎麼搬, branch怎麼merge, bzr就是玩不爛.
bzr就像raw-format, 什麼都紀錄所以速度較慢但是卻可以無損轉換成其他格式...
在不同的情形不同的狀況下, 都可能有不同的最佳VCS工具.
何況世界變化很快, 從tarball, RCS到CVS到SVN...
現在很明顯的又進入到了分散式VCS的戰國時代,
而過一陣子搞不好又有更新更好的工具.
所以... 就像你最寶貝的片子/照片(通常)會存個無損RAW檔一樣,
bzr什麼都給你記下來, 當你真的需要在特定環境作特定應用而bzr辦不到的時候,
可以很快轉換過去.
"""
當然底下的評論自然有darcs眾,水銀黨(hg)跟git幫要戰mark...
這個就跟我沒關係了...
我只是普通用戶一枚,
反正這個系列的文章可能還會繼續下去,
就等著隔山觀虎鬥, 爆米花買好, 戰的好記得出來拍手就好了.... XD
http://www.python.org/dev/peps/pep-3104/
python 2.1以前, python是沿用C對scope的思維,
只有很簡單的global跟local的scope概念.
(and builtin)
python 2.1之後引進nested scoping,的確帶來了不少彈性,
不過比起一些更為彈性的語言來說, 對於scoping的控制
仍然無法稱作完善.
而PEP 3104引進了nonlocal這個關鍵字後,
總算讓在python使用closure顯得自然.
目前2.X的狀況:
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def x():
... t=9
... def y():
... print t
... t = 10
... print t
... return y
...
>>> z = x()
>>> z()
Traceback (most recent call last):
File "", line 1, in ?
File "", line 4, in y
UnboundLocalError: local variable 't' referenced before assignment
Python 3.0x (p3yk:55958, Jun 13 2007, 18:39:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def x():
... t=9
... def y():
... nonlocal t
... print(t)
... t=10
... print(t)
... return y
...
>>> z = x()
>>> z()
9
10
張貼者: 使徒提姆 !? 於 星期三, 6月 13, 2007 0 意見
剛剛讀到這篇 Whither所寫的 漫步在綠海豚街上: 以 New Gameday 數據解析王建民的投球特性, 看到這篇文章用心的透過Gameday的XML數據分析王建民的投球. 着實又讓大家見識到所謂的"有愛"是怎麼回事 :D
MLB於2006年裝設了新版的gameday,除了將線上轉播帶進了一個新的時代,在棒球場上更裝設了30fps的高速攝影機以便能及時的分析到投打對決的實況, 然而目前只有九隊安裝高速攝影裝備, 很可惜洋基目前尚未裝設, 所以大大的減少了分析王建民投球數據的資料, 而該文便是在分析王建民於2007/05/16芝加哥白襪隊客場先發時所留下的XML數據. 內文有詳實的內容跟美觀的圖表, 透過科學化的角度分析投球內容 ,非常值得所有洋基/王建民的球迷一讀.
張貼者: 使徒提姆 !? 於 星期日, 6月 10, 2007 0 意見
今天進 google reader的時候發現右上角多了幾個字: offline
好奇的按下去之後發現 google reader已經引進了
google的離線儲存新技術: google gears.
也就是說安裝之後,
google reader瞬間變成離線也能閱讀的RSS瀏覽器了 !
看來離線的gmail也不遠了...
以技術面來說google gears
以new bsd license放出,是完完全全的自由軟體.
支援Windows/Mac/Linux ,
並且支援IE/Firefox/Safari(未來將會支援,目前在mac上支援firefox)
等於所有主流系統全部支援.
google gears除了離線存取現有的web application之外,
還提供了一個WorkerPool的API幫助programmer將資源吃重的一部份程式以非同步方式存取,
並且還內建輕量級資料庫sqlite 支援使用javascript撰寫sql
(沒錯... 就是像下面這樣
var rs = db.execute('SELECT dish FROM recipe WHERE recipe MATCH ?', ['tomatoes']);
)
之前雖然也有如dojo storage之類的解決方案.但總不如早已習慣的rdbms來的方便. google幹的好啊!
google gears目前雖然仍是beta中,
但解決了web application離線存取這個麻煩的問題,
由於是完完全全的自由軟體(允許商業使用)
在未來有機會成為業界的新標準.
更多詳細的資訊請參考:
http://code.google.com/apis/gears/index.html
http://gears.google.com/
張貼者: 使徒提姆 !? 於 星期四, 5月 31, 2007 0 意見
標籤: google, javascript, link, web
從白菜的blog上看到的
http://dis.4chan.org/read/prog/1180084983/
我也來加一個:
Python mind but Lisp/Scheme in heart Programmer:
Y = ( lambda func:
( lambda f: func(lambda x: (f(f))(x)))
( lambda f: func(lambda x: (f(f))(x))))
F = lambda f: lambda x : x==0 and 1 or x*(f)(x-1)
T = Y(F)
print T(6)
氯丙嗪(Chlorpromazine, C17H19ClN2S1 •HCl ),是第一個用於精神病的藥物,
這個在1950年代被研發, 又稱作冬眠靈的藥物, 扭轉19世紀重病理輕治療的風氣,
在20世紀末期揭起"二次生物精神醫學"的大旗.
將精神醫學帶到一個新的領域 -- 精神藥理學.
而這本由心靈工坊出版, 吳佳璇醫師透過訪談並編寫整理出版的 ,
正是其英文自傳被收錄在國際神經精神藥理學會(CINP)出版的
<<1980年代傑出神經精神藥理學家自傳集>>裡,
在精神藥理學界極為知名的張文和張教授,
他一生在精神藥理學術領域裡耕耘,與艱困的外在環境持續搏鬥,
但卻始終不曾放棄的奮鬥傳記.
由於舍姊的緣故 運氣不錯的拿到了一本張教授親筆簽名,
內容300頁左右的自傳書籍. 這次回到家中總算有閒暇仔細閱讀.
張教授從生物化學轉而研究精神藥理學後, 幾十年來熱情不曾中斷, 並培養後學不遺餘力.
儘管經歷中國的文革下放, 來台的凶險難行 也曾經歷外在環境的刁難,
但為了繼續能研究精神藥理學, 不斷求取新知, 走進國際, 毫不畏懼的接受一場又一場的生命試煉.
雖然我不是這個領域的內行人, 卻很容易的從書中描述張教授一生的行為與事蹟,
讀出張教授對這個領域的熱情與專注.
書裡有提到精神藥物領域之所以特別重要,
是因為一般的疾病較容易理解病因,
而經由病因開發藥物加以治療.
而精神疾病卻不然,
反而通常是因為運氣不錯湊巧發現了能加以治療的有效藥物,
才有辦法透過研究有療效的藥物來了解真正的精神病因.
而正因為精神藥物學正是象徵著一顆能解讀人類精神疾病奧秘的希望之石.
也無怪乎張教授本身極為喜歡那顆導致人類破解古埃及文字奧秘,
目前已被放在大英博物館展覽的Rosetta Stone.
如果連個人平常的喜好都能透露出這樣的願景跟理想,
從此的確可看出張教授對於精神藥物學的喜愛跟專注精神, 委實令人感動.
書中張教授的自序的標題即是"有生涯無規劃" ,
不論是在哪個領域 這種作研究的精神著實令人佩服.
想起之前有次讀到日本鎖國時代的日本人,
為了翻譯一本由荷蘭語所撰寫的解剖書籍:"解體新書"
在沒有任何字典的輔助跟文字完全看不懂的情況下,
翻譯了整整四年才得以翻譯成功.
也因此才促進了當時日本醫學技術的大幅進展.
而反觀在這個資訊非常容易獲得的時代,
卻有許多連非常基本的問題都不肯自行研究並搜尋資料
卻只會等待別人告訴他答案或根本不願求知的人,
所以我想這種有志者事竟成的心理素質,
正是我們這個世代所需要學習和效法的.
張貼者: 使徒提姆 !? 於 星期六, 5月 26, 2007 1 意見
http://www.google.com/experimental/
包括用時間跟地圖分類搜尋/鍵盤操作版的介面/還有相關搜尋等.
時間跟地圖分類很酷不過不知道為啥資料量很少.
鍵盤操作版用起來不大習慣....(不如用conkeror還有emacs binding ^o^).
目前看起來最實用的應該是 Right-hand contextual search navigation
會列一個小搜尋視窗在右邊可以選擇要查的確切意思跟相關搜尋
像查python可以選擇你是要查真的蟒蛇還是程式語言的Python,
也可以特別選擇在Blogs/Books/Groups/Code之中搜尋.
張貼者: 使徒提姆 !? 於 星期六, 5月 19, 2007 0 意見
Update緊急聲明:
Chih-Hsiang 在評論裡提到合勤PL-100的效能不彰...
而我昨天因為這裡傳輸需求並不高所以沒有實測,
但剛剛一測結果讓我下巴差點沒掉下來...
我沒想到能有這麼差... @_@
所以擁有或未來打算升級到2M以上對外頻寬的千千萬萬不要買PL-100!
剛剛實測結果, 網內FTP互傳居然只到240~230Kb/s均值...?
也就是說實際效能是85Mbits的40分之一不到,約為2M bits
這實際的效能差異未免太...
當然我的效能測試未必準確,
不過既然是實際發生的狀況,
還是請大家做為慘痛的教訓參考看看 XD
==
因為家裡的牆壁太厚,轉彎太多,
又遇到一張某"XDLINK"無線網路卡, 沒事就給我25%的連線品質,
上網實在太容易斷線了,
偏偏我老爸又嫌牽網路線太醜...
於是今天就去建國路買了一組兩個的HomePlug電力線網路橋接器回來裝.
我買的是合勤的PL-100
一開始本來想試試插在延長線上可不可行, 不過我家的延長線都有防突波
似乎太高檔了一點,所以一開始試連就連不上.
不過換插平常的插頭一插上去就很順利的就可以動了.
HomePlug基本上不同電表訊號就過不去了,最多能接十五個裝置.
合勤的設定程式只有Windows版,不過也不是什麼大問題,
基本上如果你不是有安全潔癖的話根本可以不用設定,
電源跟網路線插上就會動了,
我是順手設了不同的網路名稱,預設的網路名稱好像都是HomePlug.
用到目前為止還算滿意, 至少比之前常常莫名其妙斷線的無線網路好多了,
不過85Mbits的頻寬其實覺得有點太多(雖然是理論頻寬,我還沒測過),
因為基本上我也很少網內互傳開檔, 如果真有這種需求的人應該可以考慮買200Mbits(HomePlugAV)型的.(不過我也只有100Mbits的網路卡)
推薦大家家裡裝無線網路有訊號問題(例如有好幾樓),
但是又覺得牽條網路線難看的可以試試看HomePlug.
至少不必老擔心訊號不足的問題. :)
張貼者: 使徒提姆 !? 於 星期六, 5月 05, 2007 2 意見
http://groups.google.com/group/net.jobs/msg/4f2cf440919eeda9
a mail in 1984...
"""
I consider Microsoft an excellent home for the software wizard because:
1) its a great place to work. The company is owned (a key issue)
and operated by software wizards: Bill Gates and Paul Allen.
....
Since the development people report strictly to software
engineers, who report directly to chairman/CEO Gates, we
never do anything stupid because some manager/MBA/suit-type
has power without knowledge. (When we do something stupid,
its our own fault!) Likewise, there are no "politics", just
engineering.
"""
(save-buzz-and-die "/WhatYouSeeIsWhatPeopleMarketing" :executable t)
張貼者: 使徒提姆 !? 於 星期六, 5月 05, 2007 0 意見
張貼者: 使徒提姆 !? 於 星期六, 5月 05, 2007 0 意見
標籤: javascript, link, programming, web
#!/usr/bin/env python
class tim:
def __init__(self,tim):self.chen=tim
def __rlshift__(self,chen):return tim(lambda x,z=self,tim=chen:z.chen(tim,x))
def __rshift__(self,tim):return self.chen(tim)
def __call__(self,x,tim):return self.chen(x,tim)
print "0"+hex(((reduce(lambda chen,tim: tim*chen,[int (x,32) for x in "timchen119"])
*4+119<<tim(lambda tim,chen: tim*chen+119)>>((int("119"+str(93828751754616119383408*127*119))
-1190929898972105379252210654550)))-5210475734-119))[2:-1]
張貼者: 使徒提姆 !? 於 星期五, 5月 04, 2007 0 意見
標籤: humor, opensource, programming, python, talk
我說, 這名字對了!!! ;D
有了Jim Hugunin的加持之後,
Microsoft這次沒有笨到取一個Sxxxxt Language Runtime這種蠢名字,
看來Microsoft這次真的知道他們在作什麼. ;D
來自Jython/Ironpython作者Jim Hugunin的消息, 看來Microsoft吸收了以往對於網路不夠重視的教訓, 這次對於業界的Dynamic Language潮投注了不少心力.
消息節錄重點如下:
"""
We're initially building four languages on top of the DLR - Python, JavaScript (EcmaScript 3.0), Visual Basic and Ruby. We shipped today both Python and JavaScript as part of the Silverlight 1.1alpha1 release today.
"""
所以說DLR 目前已經支持 Python, Javascript,Visual Basic跟Ruby...
!? Python跟Ruby...!?
喔妳沒看錯... Microsoft居然開始注意Python跟Ruby的支援...
這一天終於要來了嗎?...
並且今天釋出的Silverlight 1.1alpha1版已支援python跟Javascript. (Silverlight看起來將會是下一代Microsoft主推的web平台??)
"""
In addition to the Silverlight release, we've also made the full source code for both IronPython and all of the new DLR platform code available on codeplex under the BSD-style Microsoft Permissive License.
"""
BSD-style Microsoft Permissive License !???
BSD style?!沒聽錯吧... 會不會..太opensource了一點? :DD
看來我這文章標題應該改成==> 神奇的Jim Hugunin
,Microsoft的自由軟體跟Python/Dynamic Language推手... XD
雖然我常常沒事虧一下MS,
不過這次還是得替Jim Hugunin跟Microsoft鼓鼓掌...
在MS裡搞自由軟體... 讚啊...
張貼者: 使徒提姆 !? 於 星期二, 5月 01, 2007 0 意見
標籤: javascript, link, microsoft, opensource, programming, python, ruby, web
Which Programming Language are You?
hmm 不知道為啥又吹起這股流行風...
反正有趣嘛... 就作了一下 XD
不過怎麼是prolog啊 比較希望是python還是lisp...
update:
最近太常用debian了??? @_@
Which OS are You?
張貼者: 使徒提姆 !? 於 星期二, 5月 01, 2007 2 意見
這個月號稱"非常秘密"的kalug聚會剛結束,
Yuren也在他的blog上發表了他文情並茂的感想.
文章寫的很傳神,
但又突然發現南部的OpenSource使用者都太習慣秘密活動了...
Yuren Ju僅僅自介自己是"""普通的Linux End-User 一枚..."""
這也謙虛的太過份了...明明就是Blog上知性+感性的文章產量無數,秘密的研究如何用P2P征服世界,而帶來的筆記型電腦上有火焰特效+3Dberyl旋轉桌面還轉到有人說"原來用這linux就好像在打電動一樣"的無敵閃光Linux使用者吧... :D
此外, 這個在南部據說真的很秘密的秘密組織又新開了一個秘密的irc頻道在freenode,
又很秘密的被Yuren Ju秘密的推廣了一下. 我當然就很秘密的拿來秘密的引用了. XD
"""我覺得這個聚會很棒啊, 不過為什麼KaLUG聚會一個月只辦一次 ???"""
PostgreSQL中文社群網誌裡覺得一個月五十篇還嫌少的熱血作者Kuo Chaoyi這麼問.
blueKnows說他一天辦一次都奉陪,這真是太熱血了啦.....
不過我秘密的心想.... 那這咖啡店賺我們這群秘密的顧客還真夠賺的啊!! XD << 哪個要秘密的開秘密的咖啡店的請趕快啊! >>
ps: 喔對了... 我要很秘密的說: Postgresql真的讚! 還有Postgresql中文網誌也不算很秘密的在找寫手喔... :D
張貼者: 使徒提姆 !? 於 星期日, 4月 29, 2007 0 意見
Simon Willison just release first version of django_openidconsumer.
As Simon says:
"""
I plan to keep the package under active development, with the aim of using it to demonstrate best practises in implementing OpenID (hence the support for multiple OpenIDs and simple registration out of the box). Next on the list is integration with Django's built in authentication system, including the ability to associate one or more OpenIDs with an existing user account.
"""
This is so cool if you need any openid support in django. :)
一些 OpenID 的連結:
How to use OpenID
Six cool things you can build with OpenID
The Future of OpenID
Web developer Simon Willison talks to Vitamin about OpenID
What is OpenID good for?
MikeH在django mailing list上丟出了db migration的工具.
Django原本也有個schema-evolution的branch, 但是很可惜由於過於複雜, 野心又太大,Developer加入又離開,一直都沒有什麼太大的進展,到現在trunk仍然沒有一個可用來作scheme migrate的工具,基本上每次要新增欄位, 大家不是手寫SQL,就是自己寫script轉換舊資料,都在作重覆的事,沒有一個很pythonic的解決方案.(Actaully it's not really a big problem, since everything is so easy in python. However, I believe everyone who use django are all tired of keeping hear some newcomers yelling that rails 'already' had that. :P)
不過這次丟出的dbmigration看起來非常的不錯, 雖然版本只有0.1, 不過現在已經可以支援用django的ORM及SQL寫migration,如果繼續發展下去,應該會是非常有用的工具.
Version Control System Shootout Redux Redux
"""
It's important to realize the headline here isn't "Mozilla Project picks Mercurial for Next Generation Version Control System." It's "Mozilla Project moves to Next Generation Version Control System."
"""
根據引用文章的說明, 不是pick而是move :D (註:原文在這邊要表示的意思是bzr跟hg都是很好的系統, 所以Mozilla不是選了hg而是移向下一代的版本控制系統)
我不是標題黨, 不過Mozilla的確要改變原本使用CVS的方式,
改採現正流行的distributed SCM (DSCM, Distributed Software Configuration Management 話說現在每次只要寫縮寫不打全文就會被某人唸, XD ) ,
而選中的正是由python實作的: mercurial.
由該文引用的這張被kuso過的真人快打系統圖中,
可看出下面這幾種是曾經在mozilla會議中提出來討論過的:
rcs,mecurial,cvs,svn,svk,bazaar,arch,bitkeeper,sourcesafe,clearcase,Perforce,git.
根據該文的說法, 有被認真考慮過的只有底下4個: bazaar / mercurial / git / Monotone
git跟Monotone也很快就因為win32 client支援程度不好的問題被ruleout.
(比較意外的是非常先進但使用haskell實作的darcs似乎完全沒有被考量. 不過根據該篇文章的一篇評論,似乎有人在開始匯入時就out of memory了.)
因此很快的, 剩下兩個均由python實作(也意味著跨平台應該非常好 :D)的DSCM mercurial/bazaar就被mozilla同時考慮了.
mercurial(以下簡稱hg)跟bazaar(以下簡稱bzr),是兩個性質非常類似的DSCM, 基本上兩個幾乎可以等同看待, 操作命令也幾乎一模一樣, 就我個人非常淺薄的使用體會跟認知,bzr功能略強一些, 而hg速度快上不少.
我個人使用的是bzr, 所以其實就私心來說是希望bzr能被mozilla採用的. 很可惜的, 根據這篇文章的說明, mozilla也很想採用bzr, 但是發現匯入mozilla cvs庫卻需要用上一個月 :P (使用的是0.14/最新的0.15已經試圖想解決performance問題) 相反的採用hg就只有7天.
不論如何mozilla似乎已經要決定轉換到hg了,
去年shawn跟我提過的hg現在果然是紅了,
曾經有一次開玩笑的跟yungyuc在線上聊天聊到如果那天bzr停止發展了那我大概就會在hg的船上. 沒想到這麼快機會就來了 XD 不過事實上bzr還在積極發展並改善速度加上也可以使用hg的repos,且又由於我的檔案大部分都不大, 加上binary file都還在100MB以內, 倒是還沒遇到太多效能上的問題. 也許哪天真的有需要也可改用hg,暫時我將還是使用bzr為主. 不過大家在選用時可以將hg列入考慮. 另外該篇文章也提到:
"""
There was a lot of support in the project for both tools, and I personally know that the Bazaar developers spent a bunch of their 0.15 development time working on some of the performance issues we ran into. The great thing about these "nextgen" version control systems is that they all track the information necessary to re-create history. Because of this, switching between systems is much eaier, and in some cases, using your favorite system is possible (bzr, for instance, can pull directly from Mercurial).
"""
所以我認為至少在這短時間內, 這兩者都是非常好的選擇. :)
底下列出目前使用hg跟bzr的知名opensource專案, 僅供參考:
hg:
Mozilla,opensolaris,ALSA,mutt.Xen,MoinMoin,e2fsprogs. (gpl-sun-java is considering hg too)
bzr:
Ubuntu, Drupal,BitlBee,nose,PyChart,Samba.
(當然, 更大部分的專案都使用svn 事實上我也很愛用svn 只要svn符合你的需求,svn目前還是非常正確的選擇, and, Nobody ever got fired for picking IBM :^)
張貼者: 使徒提姆 !? 於 星期五, 4月 20, 2007 0 意見
James Bennett發佈了django-template-utils
django的template tags的使用跟抉擇一直是個藝術,
有些人嫌他功能過於強大(ex: guido),也有不少朋友覺得他功能過少,
James Bennett開發了一些template tags並整理了不錯的使用文件.有興趣的人可以參考看看.
每個使用emacs的人emacs管理方法都各有不同,
未必我的經驗就是好的, 網路上也有不少先進有他們獨到的看法,
我也時常受益良多,
不過在這之前我得先說個悲慘的emacs小故事:
從前有一個喜愛使用emacs的人,
因為他慣用的.emacs被人弄丟了,
從此之後就使用了vi.
(註: 這個人的名字叫Tim O'reilly.)
這個被我渲染過的悲慘小故事告訴了我們,
如果想要好好使用emacs,
就不得不用點心思在管理emacs files上.
何況別人的.emacs對你而言經常是無用的,
而一旦你丟失了你的慣用.emacs,
想重新打造一個屬於自己的.emacs將耗盡你的青春,
甚至還不如去學一個別的editor.
我目前的一些管理方法是這樣的,當然我說過了,
我的作法未必正確,而且未來也可能會改變我的看法,
這篇將就將就參考看看吧:
1. 維持~/.emacs 簡單, 使用~/.emacs.d來管理emacs
我的.emacs目前只放了一些很簡單的事情,
如: Custom 跟我的initial .el"s" function.
好處就是.emacs很清爽, 如果有需要的話,
也只要將非常重要的設定放在這邊就好了 其他的利用.emacs.d來對設定分門別類.
2. Add functions to auto-compile every .el after you edit it.
編譯成.elc會加快你loading emacs的速度.
我寫了一個elisp function來自動作這件事情:
(.emacs可另外處理)
(defun auto-byte-compile-el-file ()
(let* ((filename (file-truename buffer-file-name)))
(cond ((string= (substring filename
(- (length filename) 3)) ".el")
(byte-compile-file filename)))))
(add-hook 'after-save-hook 'auto-byte-compile-el-file)
張貼者: 使徒提姆 !? 於 星期六, 4月 14, 2007 0 意見
Author: timchen119 (timchen119.blogspot.com)
openvpn有非常多種設定方法, 依個人遇到的需求不同有所變化.
我這邊整理的是使用一台server跟一台client共安裝兩台openvpn機器(linux gateway),
讓兩個可能地理位置不同的區域網路連接起來的方法.
Network 10.1.0.x Network 10.2.0.x
10.1.0.2 <---> 10.1.0.1 ============================= 10.2.0.1 <---> 10.2.0.2
GW VPN GW
(10.8.0.0)
OpenVPN Client OpenVPN Server
192.168.23.39 192.168.23.38
張貼者: 使徒提姆 !? 於 星期六, 4月 14, 2007 0 意見
由於我的gentoo機器不止一台, 所以一直以來都是先mirror一份portage進LAN之後, 再rsync自己.
不過由於我的機器IO太慢了, 最近總算忍不住向lloyd借了一台freebsd機器來架了一個portage rsync server, 想說順便將portage裡的distfiles share出去, 這樣就不用將distfiles一抓再抓. 沒想到只要一mount,emerge就出現問題.會一直掛在那邊不抓檔案. 實在非常詭異.
不過稍微研究了一下就被我找到問題點了, 原來是fbsd上的rpc.lockd沒開.
解決方法有二.
1. edit freebsd's /etc/rc.conf 將rpc_lockd_enable 改成"YES", 然後再將rpcbind restart.
2. mount option + "nolock" for gentoo.
將mount option改成
rw,soft,timeo=1,noatime,rsize=1024,wsize=1024,nolock
我是採用了第2個方法.
果然加上了nolock之後emerge就很順暢了.
起床就看到好消息:
http://www.debian.org/News/2007/20070408
"etch" Debian 4.0 released.
(sarge...我終於可以擺脫你了 XD)
老天終於聽到我的呼喊了~~ XD
張貼者: 使徒提姆 !? 於 星期一, 4月 09, 2007 0 意見
I'm not going to explain too much pypy, I'll just list my instructions on C version PyPy 1.0 + jit (pypy-c with jit) build.
* you may need install these first *
apt-get install
gcc libc6-dev make autoconf libgc-dev bzip2
subversion python2.4 python2.4-dev
python-ctypes python-pygame
Note: you don't really need python-pygame if you specify with --text.
Note for debian stable user:
if you're using debian stable, you have to manually install ctypes.
python2.4-ctypes is 0.9.5-1 in debian stable,
pypy need version 0.9.9.6 or later:
wget http://nchc.dl.sourceforge.net/sourceforge/ctypes/ctypes-1.0.1.tar.gz
tar zxvf ctypes-1.0.1.tar.gz
cd ctypes-1.0.1
python2.4 setup.py install
* how to translate pypy to c-version pypy with jit *
WARNING: YOU AT LEAST NEED a 512MB RAM box...
I'll recommend 1GB RAM box.
since this will generate a 700mb python process
( 704m 693m 5872 R 99.9 78.3 53:14.25 python2.4,
I build this on 3.2GHZCPU+1GB ram debian stable box)
I first translate pypy in a 512MB RAM gentoo box,
after 3 days memory swapping I gave up.
wget http://codespeak.net/download/pypy/pypy-1.0.0.tar.bz2
#or svn co http://codespeak.net/svn/pypy/dist pypy-dist
tar jxvf pypy-1.0.0.tar.bz2
cd pypy-1.0.0/pypy/translator/goal/
python2.4 translate.py --batch --text --jit targetpypystandalone
and wait 2 hours (if you have 1gb ram)
* woot! pypy-c !
let's check this:
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# ls -lh pypy-c
-rwxr-xr-x 1 root root 9.2M Apr 3 16:22 pypy-c
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# ldd pypy-c
linux-gate.so.1 => (0xffffe000)
libgc.so.1 => /usr/lib/libgc.so.1 (0x4001e000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x4004f000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x40074000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x40086000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x401b7000)
/lib/ld-linux.so.2 (0x40000000)
* The benchmark part
1. startup time is great
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time ./pypy-c -c "print 'hello world!' "
hello world!
real 0m0.006s
user 0m0.003s
sys 0m0.003s
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time python -c "print 'hello world!' "
hello world!
real 0m0.009s
user 0m0.005s
sys 0m0.005s
2. jit speed seems promising.
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time ./pypy-c demo/jit/f1.py > /dev/null 2>&1
real 0m0.449s
user 0m0.442s
sys 0m0.007s
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time python demo/jit/f1.py > /dev/null
real 0m5.347s
user 0m5.343s
sys 0m0.004s
however current JIT not faster than psyco.full():
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time python demo/jit/f1-psyco.py > /dev/null
real 0m0.048s
user 0m0.046s
sys 0m0.002s
3. it's a bit slow in a real test in this stage.
I took the nbody test in "Computer Language Shootout",
http://shootout.alioth.debian.org/gp4/benchmark.php?test=nbody&lang=python&id=0
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time python nbody.py 20000
-0.169075164
-0.169089263
real 0m1.729s
user 0m1.724s
sys 0m0.005s
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time ./pypy-c nbody.py 20000
-0.169075164
-0.169089263
real 0m13.542s
user 0m13.539s
sys 0m0.003s
pypy-c without jit almost 8 times slower :(
and, with the current 1.0 alpha stage JIT, the performance isn't any better.
(since nbody.py use lots of floating arithmetic)
I add these in nbody.py:
import pypyjit
pypyjit.enable(advance.func_code)
pypyjit.enable(energy.func_code)
pypyjit.enable(offset_momentum.func_code)
pypy:/home/tim/pypy-1.0.0/pypy/translator/goal# time ./pypy-c nbody.py 20000 > /dev/null 2>&1
real 0m19.550s
user 0m19.531s
sys 0m0.019s
* conclusion:
1. I don't think pypy 1.0 is ready for production. At least not in my project.
So don't try to replace CPython via pypy at this stage.
(but maybe you have a good reason)
2. pypy 1.0 is not faster than CPython at this stage. Actually, much slower.
(JIT looks promising, however it's still in alpha stage.)
3. pypy really need a 2.0 release. (A joe average user branch)
It looks good,
since it wanna try to do something really different,
but not good enough yet.
we need more.
4. my benchmarking is so naive here, so if you don't like it,
you should do it your own self.
5. despite these, good work.
Thanks the effort from pypy team. we really really need more.
張貼者: 使徒提姆 !? 於 星期二, 4月 03, 2007 0 意見
標籤: programming, pypy, python, tips
上次shawn問我了一個問題,
怎麼用emacs遠端登入之後sudo成root編輯遠方的檔案(如:/etc/fstab).
如果是使用emacs-unicode2 branch其實很簡單. 因為內建的tramp是2.0.55
只要使用C-x C-f後鍵入
/multi:ssh:user@host:sudo:root@127.0.0.1:/etc/fstab
不過由於我另裝的tramp裝的是比較新的2.1.9pre
原來的方法就行不通
需要改成使用proxies的方法
在.emacs內加入
(add-to-list 'tramp-default-proxies-alist
'("blah\\.blah2\\.org\\.tw\\'" "\\`root\\'" "/ssh:%h:"))
這次改成C-x C-f後鍵入
/sudo:root@blah.blah2.org.tw:/etc/fstab
即可透過emacs跟sudo直接遠端編輯/etc/fstab
需要更多資訊還可以參考
http://www.gnu.org/software/tramp/#Multi_002dhops
http://www.emacswiki.org/cgi-bin/wiki/TrampMode
張貼者: 使徒提姆 !? 於 星期二, 4月 03, 2007 0 意見
http://pythononplanes.com/
"Planes is the most well thought-out snake oil framework I’ve ever sniffed."
這個我一看就知道很明顯的不僅可以減少程式碼,
還可以快速增加生產力10000倍!!! XD
"it lets you write beautiful code by favoring snake oil over gems."
Snake Oil 萬歲! XD
Tim O'reilly, O'Reilly Media 的Founder,
就在不久之前發表了Call for a Blogger's Code of Conduct
也拋出了這樣的一個早已存在但終於不得不正視的新議題.
事件的導火線在於Kathy Sierra,著名的Head First系列的女作者,
(Head First Java,Head First Design Patterns,Head First Servlets and JSP,Head First EJB)
不久前因在其blog上受到了死亡威脅,
而中止參加一場O'Reilly在San Diego的ETech conference.
有圖有真相: http://headrush.typepad.com/photos/uncategorized/2007/03/26/unclebobpicture.jpg
http://headrush.typepad.com/photos/uncategorized/2007/03/26/unclebobcomments1.png
於是有鑑於此, Tim O'reilly拋出了的新的Blogger行為準則草稿, 略譯之後加上個人的感想如下:
(如果以Web 2.0行銷術語來說, 也就是"Web 2.0時代的新部落客行為準則" XD)
1)Take responsibility not just for your own words, but for the comments you allow on your blog.
不只對在blog上的發表的文章負責, 也要包括blog上的評論.
提姆註: Tim O'reilly對於Chris Locke的'YOYOW -- You Own Your Own Words'的論點提出的對應觀點, 在目前, 有非常多的blogger認同Chris Locke的觀點, 也就是評論者應對自己的評論負起責任, 而網站所有者不應對此負責. Tim O'reilly認為, 這樣的YOYOW的觀點不應無限上綱, 而應該有個最低限度, 就像我們常說的所謂"自由"的前提是在不妨礙他人的情況下.
Tim O'reilly: """Yes, you own your own words. But you also own the tone that you allow on any blog or forum you control."""
2) Label your tolerance level for abusive comments.
在blog上標示對含攻擊性的評論之容忍限度.
提姆註: Tim O'reilly 提到 BlogHer所提出的"不可接受的內容"應該是一個不錯的起點.
3) Consider eliminating anonymous comments.
可考慮停用匿名評論
提姆註: Tim O'reilly認為雖然匿名性仍然在某些地方有必要,
不過在大部分的情況下,Identity會改變人們的行為.
4) Ignore the trolls.
忽略小白
提姆註: 避戰而不畏戰是也, 有不得不戰的理由時再踩小白幾腳,
大部分時間請直接忽略小白. 因為小白是殺不死的 :D
5) Take the conversation offline, and talk directly, or find an intermediary who can do so.
將對話內容離線,直接面對面交談或者找一個和事佬.
提姆註: 這點可以注意看一下Tim O'reilly的說明, Tim的意思是儘量不要就某一議題在blog上隔空對罵.很多事情見了面交談或許會好一點.比如Chris Locke覺得Kathy明明知道圖片不是他發表的,為什麼公開的指責他是網站所有者之類的. 當然, 人如果都能這麼理性的話...那就世界和平了 XD
不過Tim O'reilly的意思是, 如果可以的話, 不論如何多製造私底下交談的機會都會比對罵來的好一點.
6) If you know someone who is behaving badly, tell them so.
如果妳知道誰的舉止不佳, 告知他們.
提姆註: 可能的話, 婉轉一點 :P 我自己覺得比較糟糕的一點是, 這個時代, 大家都怕瘋子. :P 不過Tim O'reilly在這邊主要指的是自己的朋友, 不要畏懼告訴自己的朋友妳覺得他的評論或文章有過於攻擊性的問題, 應持續的溝通.
7) Don't say anything online that you wouldn't say in person.
不要在網路上說任何妳平常不會直接面對面的對人說的話.
Tim O'reilly的Blogger七準則草稿只是一個起點,
(當然, 我認為是一個好的起點)
國外也有相當多正反皆有的評論跟相關討論,
對於複雜的網路生態跟blogger習性,
未來想必有更多思考跟討論的空間.
張貼者: 使徒提姆 !? 於 星期日, 4月 01, 2007 0 意見
對岸愛好Python的朋友黄毅的博客白菜也於今日加入了我們Python星球, 從今天開始也可以看到他發表的Python文章了, 歡迎歡迎!
只要對Python有興趣的朋友, 我們都希望能夠有這緣份跟您結交,這裡的大家都對Python非常的熱情,只要您有寫blog,我們就想看到您的文章能在星球上出現,所以尤其千萬不要害怕自己的blog文章不夠多不夠精之類的問題,因為大家身處的環境不同,即使您覺得極簡單不值一提的事情,對於另外一位朋友卻可能就是非常新鮮的事.我們這些朋友也分別都從大家星球上的文章獲得了不少資訊跟進步,所以千萬不要吝於來信加入,Python星球不論新來後到,一直都歡迎對Python愛好的朋友加入.
而兩岸能有越來越多的朋友參與討論Python互相切磋進步實在是一件值得高興的事, 除了星球之外 http://wiki.python.org.tw/PotResources 的wiki上也有列出不少資源可以利用. 如果各位還有什麼建議也請不吝提出.
ps: 一併回覆前面有位廈門匿名的讀者在評論中提到是否兩岸有屏蔽的問題, 請不用疑慮, 實在是剛好星球放置的主機昨日有流量異常的狀況發生主機不大穩定, 今天已經修復並且由管理者yungyuc在密切調查中了, 應該不是什麼太大的問題, 請大家放心.
在 gasolin 的熱情邀約之下,
對岸也非常愛好Python的朋友 limodou 即日起加入了我們的Python星球,
很感謝網路無遠弗屆的力量,
讓無論身處世界各地所有愛好Python的華人朋友,
都能夠藉由Python星球來互相交流跟進步.
希望有更多的朋友不論是身處大江南北,
只要是喜愛Python,
都能不吝來信加入我們Python星球,
讓所有只要愛好Python的朋友,
只要訂閱一個Python星球的RSS/ATOM Feed,
就能同步接收到最新的Python中文消息跟知識.
如果您有認識愛好Python的朋友, 也請不吝邀請他來參與我們.
張貼者: 使徒提姆 !? 於 星期一, 3月 12, 2007 2 意見
網路上有不少使用emacs透過gmail收發信的文章,
不過這篇Bill Clementson發表的vm跟emacs的使用方法可以說解釋的最為清楚.
http://bc.tech.coop/blog/061023.html
如果你有完全使用emacs收發信的需求, 可以參考這篇.
如果你跟我一樣, 其實只需要使用emacs寄信, 你可以接下去繼續看.
話說我習慣了emacs的編輯方式之後,
自然會想利用emacs透過gmail來幫我作簡單的信件功能.
由於收信比較沒有打字的需求,
其實直接用firefox瀏覽就可以了.
(對了 最近發現這個conkeror http://conkeror.mozdev.org/ 真是個好東西,
這個相當於firefox+emacs的plugin裝在筆記型電腦上 會很快就讓你忘了為什麼操作瀏覽器還需要滑鼠.)
所以其實呢,
我也不必像上述的網頁中的說明特地去多裝一個vm來收信.
只要用emacs內建的mail功能就好了.
而這個設定其實是相當簡單的.
只要在你的.emacs上加入這段:
;; ***** setup email sending names*****
(setq user-full-name "username")
(setq user-mail-address "username@gmail.com")
;; Configure outbound mail (SMTP)
(setq smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil))
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-default-smtp-server "smtp.gmail.com"
send-mail-function 'smtpmail-send-it
message-send-mail-function 'smtpmail-send-it
smtpmail-smtp-service 587
smtpmail-auth-credentials '(("smtp.gmail.com"
587
"username@gmail.com"
nil)))
只要把上面例子的3個username替換成你的gmail帳號名字就好了.
加了幾行設定之後,以後你只要M-x mail 就可以透過emacs舒舒服服的寫信,
C-c C-c 就送出囉.
也不必裝什麼postfix還是exim,sendmail的,
emacs會透過gmail的SMTP來替你送信.
所以寄出的信件也能自動備份在你的gmail帳號裡.
這所有的一切都讓emacs跟gmail幫你搞定. 真的是很方便喔. :)
其實關於emacs我還有很多可以說的,
看一下我的.emacs.d大小:
localhost tim # du -sh .emacs.d
21M .emacs.d
就知道我真的有很多東西想說啊,
不過這篇只能算是個備忘記事,
就等有機會再慢慢講好了,,,
張貼者: 使徒提姆 !? 於 星期一, 3月 12, 2007 3 意見
""" 不要相信任何失去熱情的人跟你說程式語言不重要,
程式語言只是工具... 不要為了程式語言而戰...
那些人都已經失去戰場跟舞台, 早已不在第一線上了...
遺棄舞台的人, 舞台也終將遺棄他."""
-- by 戰の使徒 使徒提姆
網路上的資訊經常錯誤百出,
老實說我已經見怪不怪了,
由於我很懶惰而且還有其他想作的事情要作,
所以通常我都是扮演跳過之後順便恭維兩句:
"您真內行..." 等等無恥獻媚的鄉愿之徒.
不過阿西摩這篇標題跟文章都讓我看起來就像是
""" Javascript鳥腳本語言 才不是 太陽微電子工業語言 aka. Java宇宙大無敵語言"""
可以說統合了一般非javascript工程師對Javascript天大的誤解之集精華大成.
由於這種百年難得一見的落井下石機會實在難得,
所以基於Python傳教士捨己為人路見不平拔刀相助的仁人理念,
不得不好好的落井下石一番.
雖然說我們Python星球跟Ruby Perl幫的仁人善士早已把這篇批鬥的體無完膚,
卻遲遲不見追Javascript妹幫的js仔出來踢館,
基於前人造出井就是要拿來落井下石的偉大抱負,
我發現我還是得站出來為javascript妹辯護兩句.
我們先來看看阿西摩同學怎麼說的, 阿西摩先引用了wikipedia,
JavaScript並非Java
JavaScript是由網景通訊公司(Netscape)最初在它的Navigator 2.0產品上設計並實現的
,原名LiveScript,除了句法上有一些相似之處以及都能夠提供網頁中的可執行內容以外,
JavaScript和Java是完全不相干的。
JavaScript並不簡單
實際上儘管JavaScript是作為一種給非程式設計師提供的腳本語言而不是給程式設計師提供
的程式語言來推廣和宣傳的,但是 JavaScript是一門具有非常豐富特性的程式語言,和其他所有
的語言一樣複雜或者更複雜,你需要對JavaScript有紮實的理解才能用 JavaScript執行比較複雜
的任務。
原文出處: Wikipedia - JavaScript
張貼者: 使徒提姆 !? 於 星期日, 3月 11, 2007 3 意見
標籤: humor, javascript, link, programming
FizzBuzz的問題由來已久, 基本上"應該"很簡單,
而且你"應該"不需要知道這問題還有個名字叫FizzBuzz:
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.
不過這篇由tickletux發表的個人牢騷像野火一般燒遍了國外的programmer blog,讓FizzBuzz聲名大噪了一番,
那篇講的主要其實也只是在抱怨他找的Programmer人選連解決像FizzBuzz的簡單問題都沒辦法,
不過這抱怨也激盪了出不少網路上最不缺的戰火話題跟創意,
以至於目前不少blog將FizzBuzz議題發表視為一種時尚.
(比如本blog接下來要做的事 :P)
基於傳教士的天性, 及追隨時尚盲從潮流的一種特殊快感,
篤信寫Python得永生的我也不得不特地趕上風潮:
def fizzbuzz(n,x):
"""tim like buzz, you like tim, so you get my dear john letter"""
if n == 100: return x + "Buzz"
elif not n % 15 : x += "FizzBuzz"
elif not n % 5 : x += "Buzz"
elif not n % 3 : x += "Fizz"
else: x += str(n)
return fizzbuzz(n+1,x)
print fizzbuzz(1,"")
張貼者: 使徒提姆 !? 於 星期六, 3月 10, 2007 0 意見
各位愛好python的朋友大家好,
目前http://planet.python.org.tw 經過一陣子的測試,
運作狀況良好, 已經正式上線了.
在yungyuc的熱情感召之下,
目前由小弟tim我來維護planet.python.org.tw的大小事項,
往後有任何planet相關的問題或建議,
歡迎來信planet#at#python.org.tw或在freenode irc上的#python.tw詢問.
歡迎大家吸收更多愛好Python的朋友進入我們POT眾溫暖的小星球!
張貼者: 使徒提姆 !? 於 星期日, 3月 04, 2007 0 意見
"""I don’t do test driven development. I do stupidity driven testing... I wait until I do something stupid, and then write tests to avoid doing it again.
— Titus Brown"""
Python有很多testing的工具,
包括內建的unittest/doctest,
3rd party的py.test/nose,
web application也可用twill,Selenium等特殊工具.
django目前的svn也有內建testing工具.
所以其實工具並不是什麼大問題.反而真正的重點是:
何時要testing? 要testing到什麼程度?
我在kalug有一次介紹python模組的時候有講過py.test,
曾聽過snowwolf在kalug介紹GUI testing(JUnit and Swing testing)
我也用過很pythonic的doctest,nose, 也用過django的testing模組(with unittest),
但是儘管對於工具本身並不陌生,
卻對於所謂的test-driven development這個概念還是覺得過於理想化,
因為能做的testing永遠覺得不夠, 到底一個項目要testing多少個Case?
到底要testing到何種程度才算完整才算足夠?
如果什麼都測我要什麼時候才開始真的寫code跟除錯?
Titus Brown在pycon2007的一語驚醒我這個夢中人:
古語有云: 知錯能改 善莫大焉!
一旦你coding時犯了一次錯,就把他寫成一個testing case!
testing不是要讓你不犯錯, 而是要避免你一錯再錯!
張貼者: 使徒提姆 !? 於 星期四, 3月 01, 2007 0 意見
標籤: programming, pycon, python, testing
圖片請點此
http://wamber.net/static/PyCon-2007/export-with-imagemap/PyCon2007.html
http://wamber.net/static/PyCon-2007/
William McVey用FreeMind製作了pycon2007的筆記,
除了筆記製作的非常精緻之外,
我也注意到One Laptop Per Child這場talk又被打了兩顆星星,
網路上也不少有參與pycon的 blogger也大都對這場OLPC talk讚譽有加.
Python原本就是適合兒童學習使用, 能開闊心智的程式語言跟開發環境,
而這次OLPC計畫選擇了Python,
全面採用Python開發GUI圖形介面(called sugar)跟檔案系統(a version-controled "object store "called "Yellow"),
而在鍵盤上有一個瀏覽程式碼的按鍵可以方便有興趣的兒童瀏覽及修改.
讓開放原始碼的精神徹底的被實現(使用者這次真的可以輕易的獲得原始碼修改並即時調整系統)
的確是可以被稱作一項了不起,
可以改變世界教育方式跟傳達開放原始碼精神的計畫.
也難怪國外的Pythoner會對這場talk如此讚賞了.
OLPC百元電腦預計於今年將會出貨,
OLPC的軟體將會是100%自由軟體,從BIOS,作業系統跟應用軟體全部都是,
主要會先供貨至開發中國家,
相信對Python知名度及普及度的提高將有大大的幫助.
(我也好想買一台: 三千多塊台幣內含linux,browser,mplayer跟Python的筆記型電腦...
你說你想不想買...)
有關OLPC在這次Pycon的熱烈情況及更詳細的內容可以看這篇: http://www.freesoftwaremagazine.com/blogs/olpc_kicks_off_pycon_2007/
另外Wikipedia也有OLPC的簡要說明
果然有個Wiki是好東西,
可以很方便的融合大家對"Python之禪"的理解.
如果有Python玩家還沒"禪定"的就趕快去POT報到吧!
這句句都是至理名言的The Zen of Python
翻成中文的感覺還是很酷啊~~ ^_^
http://wiki.python.org.tw/The_Zen_Of_Python
The Zen of Python "Python之道" 整合版
美優於醜,
顯明好過隱晦。
簡為上,繁複次之。
晦澀為下。
平順善於巢雜。
寧散不為短巧,
村婦可讀。
特例並不值得我們打破原則。
雖然,理想終究不敵現實。
不靜靜的放過任何錯誤,
除非你是故意的。
隱者,晦者。不臆,不筮。
事情要有一種明顯的作法,最好也只有一種,
雖然不是荷蘭人的你,一開始可能看不出來。
現在開始,強過不作,
雖然有時候不處理比*馬上*處理更好。
不易解釋的實作方式,就不是好方式。
容易解釋的實作方法,說不定是好方式。
命名空間是個頂呱呱的點子 -- 儘量用!
ps: 如果分成古文版跟白話文版 分開來翻譯那就更好了,
古文典雅容易記誦,白話淺顯容易理解,
看看有沒有高手能編個RAP出來還能當饒舌歌唱那就更酷了 :P
ps2: Thinker解釋了Sparse is better than dense, Readability counts. 寧散不為短巧,村婦可讀 的Python精神.
http://mail.python.org/pipermail/python-dev/2007-February/071375.html
看來這次似乎是認真的, 準備一口氣把GvR感覺不pythonic的東西全拿掉了.
這次語法淨化一次到位果然是大手筆:
照py3k的規劃, print 改成function,
map(),reduce(),filter()全移了.
xrange() raw_input() apply()也不見了.
operator / 不再是c的整數除法 改成浮點數運算了,
classic class消失了...
blahblah還有很多請自行參考http://www.python.org/dev/peps/pep-3100/
似乎由於不向後相容的關係, 這次會發表python2升3語法的工具,
不過還是沒想到今年的年中就會發表第一個alpha版,
之前GvR不是還在抱怨py3k沒人理嗎? =.=
明年就會有3.0final.... 這實在來的太快了 =)
話說這不少linux distribution都還停在python2.4啊...
總而言之, 這語法改變的適應期也還不算太短, 就慢慢來吧.
張貼者: 使徒提姆 !? 於 星期一, 2月 26, 2007 0 意見
標籤: link, programming, python
http://wiki.python.org.tw/Pot
[本blog訊] 台灣官方Python維基於農曆新年期間上線,全台人民歡欣鼓舞,共同迎接Python台灣官方維基的到來。激情滿懷的Pot User四處奔走相告,PyTUG眾無不信心滿滿,幹勁倍增。
展望未來,Potwiki是推動全台Python跨越目前發展的重大民心工程、發展工程、希望工程。而深入閱讀Potwiki的內容,總能喚起一股青春的力量,一種創造的激情,一段永不停止的追求。
新的一年,讓人充滿了對Python@TW的憧憬和期待。
妳也喜歡Python嗎? 現在就加入Pot的行列吧!
[記者小正太提姆 於 光明會幼幼台激昂報導]
http://developer.yahoo.com/yui/articles/hosting/
YUI最近除了把版本跳了兩號之外, 又作出大動作: Free Hosting For YUI users.
YUI內含javascript/CSS/圖片, 現在免去下載直接可以使用確實省了一番功夫.
jQuery原本也是這麼做, 不過據說一陣子下來流量驚人.
所以後來就不建議人直接內嵌.
jQuery不過20K就流量驚人. 何況是更"碩大"的YUI.
不過 Yahoo! 果然是財大氣粗. 連widget的圖片都幫忙hosting了.
看來是有流量限制的網站的首選js library. YAHOO! 幫妳節省了頻寬. :P
Anyway, Nice Job!
看來過一陣子可以試試看直接在blogger用YUI了.
(無責任發言: 怎麼不快把jack簽下來這樣可以順便hosting一下ext :P)
張貼者: 使徒提姆 !? 於 星期五, 2月 23, 2007 0 意見
標籤: ajax, javascript
http://showmedo.com/videos/video?name=pythonNapleonePyConTech2&fromSeriesID=54
ShowMeDo上放了有關這次PyCon2007網站架設的講題影片,
看了之後才發現原來PyCon2007的網站是由php的wiki跟django"合力"製作完成的. :)
這個影片示範了這次PyCon2007如何透過Django的Custom Template Loader
整合PHP的wiki pmwiki (恰好是Kalug的Wiki Engine :) )進入Django,
講者還示範了整合他老婆的Wordpress Blog進入Django的過程.
very cool!
http://codespeak.net/pypy/dist/pypy/doc/news.html
光看這個版本號就非常令人興奮. 沒想到1.0指日可待了 :)
PyPy一直是我非常關注的專案,
作者群裡面包含了Psyco的作者跟不少很有經驗的開發者,
加上有金主奧援, 可以看作是Scripting Language的指標專案之一.
專案的目標主要是用python來撰寫Python Interpreter,
PyPy的實作相對於其他如Cpython/Jython/Ironpython的好處是:
1. 讓Interpreter核心程式碼更容易懂:
使用Python而非傳統使用C或C++或java或C#
2.更容易移植
PyPy基本上顛覆了傳統撰寫Interpreter的方式,
PyPy並不是對特定平台而寫,而是寫出來之後低階與機器相關的部份透過"language specification"來翻譯.
所以實際上Interpreter的核心不論在哪個平台其實程式碼都是一樣的.
只有低階的部分由rpython撰寫並透過不同的翻譯器翻譯成目標平台的語言.
目前的svn code裡面的平台翻譯器有C/Java/.net/Common Lisp/Java script/squeak(small talk)/llvm. (翻成Javascript倒是挺有趣的, 這裡還示範了怎麼用pypy在django裡作ajax =.= 不過這麼前衛然後再加一層的技術目前我是不敢真的用在專案上的 除非pypy1.0之後有很多人採用 不然暫時我還是喜歡乖乖的寫我的javascript :P 不過有興趣而且不喜歡javascript的人倒是可以看這篇Developing web applications with PyPy)
3.更容易加入JIT compiler
官方宣稱透過"language specification"的方式可以作到傳統Interpreter作不到的事情,
例如替Interpreter加入JIT compiler,讓Interpreter也能達到接近native language的速度.
不過0.99版由於JIT尚未整合進Pypy核心, 所以還未放入,
所以實在是不知道未來PyPy到底能多快. (我對這個一向是抱持著看到才相信的態度 :P)
不過當初的秘密謠言(Rumors have it that the secret goal is being faster-than-C which is nonsense, isn't it?)...
對比現在的0.99版官方宣稱的overall 2-3 slower than CPython實在是無法令人滿意...
最主要是JIT的速度不如預期, 所以只能說請PyPy Team裡的高手多加加油了...
也希望快點有1.0出來囉也希望1.0文件多一點...
現在的文件數目對於我這種只是看著code流口水的EndUser來說實在是有點太少而且編排太亂...
ps: 剛看到reddit上也有人在討論 看起來像是rpython的使用範例.
範例中透過translatorshell.py翻譯Rpython成為C code可以比原先的pure python code快了70倍.
http://programming.reddit.com/info/152lr/comments/c156v0
張貼者: 使徒提姆 !? 於 星期一, 2月 19, 2007 0 意見
標籤: ajax, link, programming, python
應該不少人都有聽過osCommerce這個Opensource的PHP&GPL線上開店架站軟體.
那麼Django有沒有什麼對應方案呢?
答案似乎是有的, Chris Moffitt用BSD版權釋出了基於Django開發的電子商務開店軟體: satchmo
對於這類軟體, 大家總是有疑問, 它穩定嗎, 馬上能用嗎?
基本上這類軟體一定要經過客製化的程序,
而Satchmo還在先期開發中,雖然可用,但不見得符合你的需要.
如果你想要完全不修改就能使用那可能還是花錢買公司的Support比較妥當.
好處是satchmo以BSD版權釋出, 如果你有這類的需求, 多看看別人的程式碼也無妨.
你可以先看看Demo:
Demo站台在此
原作者在Mailing list上也有回答:
"""
1. I think Satchmo is ready with the caveat that it needs to be the
right kind of site. I do not believe any Satchmo sites are live in the
wild. I will say that the "Demo Store" is the current code and does get
a fair amount of activity (i.e. probably more then my real-life store ;)
and so far nothing has gone up in smoke. The features that Satchmo have
work and for me, they are > 90% of the features I need. My wife's store
would have < 50 items, some discounts, authorize.net integration and
possibly some other custom CMS type features. I am confident I could
put Satchmo in and it would work well for me. The only reason I haven't
is that my current site works and I haven't spent the time doing the
HTML/CSS re-design I'd like to do. In some ways, Satchmo already does
more for me than the stock OsCommerce site I'm running now. Of course,
Satchmo does not have the rich amount of modules available like OsCommerce.
I will say that OsCommerce becomes a real nightmare once you start doing
anything more than the stock store. It just feels crufty (partially
because I'm no PHP expert) and I just fear making changes to the store.
I never know how things will break.
I also think Satchmo is stable because it's based on Django. A lot of
the scary stuff around security and having different db support is
handled by the robust Django framework. There's also lots of experience
with how to scale Django that should apply directly to Satchmo.
"""
簡單來說只要有熟Python/Django跟Html/css的人持續修改維護就可以開店了.
大部分用Django開發的軟體,如果了解Django的基本架構就大概知道要怎麼修改而不會爛掉.
(有金主找不到的話, 就到Unofficial Python Planet跟Kalug灑大錢加上三顧茅廬大概就會有高手跑出來了 XD)
話說似乎有人搞不懂為啥我部落格的授權是CC強攻魯魯修...
解釋出來就不有趣了, 不過既然有人問了(這些不點連結的傢伙)還是解釋一下.
魯魯修是很紅的動畫CodeGeass的男主角,
CC是CodeGeass的女主角, 剛好跟創用CC授權同名.
而CC強攻魯魯修是我看片的感想(跟願望XD)
就拿來Kuso一下了咩.
好吧這個其實也不是重點, 重點是有人看到了我的極惡之華裡的CC照片之後
說: "這個長的這麼受怎麼強攻" ....
人不可貌相你聽過沒有... 特別是你才看過幾眼... orz
這個前幾個月出了特別篇的女主角看起來夠受了吧
可是只要幾年前有看過動畫的都知道.... 她是人人敬畏的人氣養樂多黨黨主席啊 XD
這個看起來溫柔文靜萌死人的少女:
其實是大名鼎鼎的2006萌王腹黑石啊:
動畫是很深奧的啊 XD
張貼者: 使徒提姆 !? 於 星期日, 2月 18, 2007 0 意見
Aha! While writing YAQL I accidentally discovered Lisp
Greg Trasuk's Weblog:
"""
And then the AHA! moment happens. I finally "get" Lisp! It's just a string representation of the abstract syntax tree for any language! I could embed a Lisp interpreter in the query parser! I could use Lisp macros to perform optimizations on the query! There's a JJTree grammar for Python in the Jython package, I could parse Python into Lisp programs! I'm onto a Really Big Concept! Possibly the Next Big Thing, the grand unification of all scripting languages! Now I have to move back to Xemacs from Netbeans! All I need to do is increase the output by 15% and the city will be mine! If only I had More Power!
"""
話說自從lloyd大大傳授我他壓箱(真的是壓了好多層箱)
的Emacs Lisp聖書三大本,
最近寫Emacs Lisp寫出興趣來了,
發現其實Lisp很好玩,
以前雖然也沒事會裝裝武林高手,
用用lambda,map,filter...blahblah...
雖然把Code寫成一副很有"尊嚴"的樣子,
但是其實心裡總是覺得夾在Python的Code裡面就怪怪的,
多寫幾個就覺得很醜... 所以其實也只是偶而拿來減少一下loop需求而已.
但是, 果然玩了Lisp之後才知道人家是正牌的... XD
所以最近沒事都在讀讀Practical Common Lisp跟玩玩Emacs,
(不過最常幹的還是看動畫念日文跟網路亂逛), 然後看到這篇其實寫的很不錯.
他沒講到的話 我還真的不知道... 覺得這篇很有啟發性...
把任何語言的AST寫成字串形式其實就是LISP...(筆記筆記)
1958年就應該要知道的東西...
結果總是有人(就是我們這代人)在重造輪子...
算了, 反正造輪子總是比較爽... 自產自銷 XD
不過還是要說... 拜Python教的大家絕對不用氣餒...
Python+Django是無敵的...
(ㄟ lloyd大大...你又可以演吐槽角色了...)
張貼者: 使徒提姆 !? 於 星期日, 2月 18, 2007 2 意見
標籤: humor, lisp, programming, python, talk
http://xkcd.com/
節選幾篇... (xkcd是CC-NC授權)
其實我們的世界是用perl hack出來的... =.= ...
這亂數產生器寫的真是簡潔有力啊...
就叫它MT-AgileDice-19937好了
一直在喊多接觸大自然... 但其實是宅在心裡 :P
嘴巴說不要... 身體倒是挺老實的...
這世界上壞人很多啊...
小弟弟可不要沒事傻傻的去論壇po文章啊...
網路上的叔叔都有練過的喔...
這Youtube鄉民... 當然是千錘百鍊囉...
這... 有用就見鬼了...
張貼者: 使徒提姆 !? 於 星期日, 2月 18, 2007 0 意見