Windows上的Exposé

剛發現一個好軟體TopDesk,它在Windows XP上模仿Mac上的Exposé和Vista的alt-tab。這類軟體還不少,但重點是這套很快,對系統資源要求也不高,我的Notebook只有256MB RAM,沒有3D加速卡也是跑得很順。它的預設快速鍵也跟Mac一樣,就是F9~F11,裝好後什麼都不用改就有一種回到Mac的愉快感覺,真是太棒啦!!閱讀全文

Delicious Library

剛在Applewoods看到前十名 OS X 唯美軟體的列表,十名中我最喜歡的就是Delicious Library這軟體了。它是一個虛擬圖書館,可以用iSight掃描條碼,接著就能自動抓到該item(書、電影、音樂)的資料!除此之外還能夠記錄書被誰借走了.. 對於我這種書很多又常被借的人真是一大福音啊!可惜的是它看起來似乎沒有中文書的資料...Q_Q (沒有open source,不然我就直接幫它寫了><)閱讀全文

GDB的妙用

今天有個同學跑來跟我求救。他說有隻重要的程式在工作站上面跑,但沒有放在screen裡面,可是Windows的鍵盤滑鼠都卡死了,有沒有辦法能重新開機(也就是關掉windows上的terminal, putty)而且讓程式能繼續跑下去..。其實我以前也遇過同樣的問題,只是一直沒去想怎麼解決,後來都習慣用screen,就自然不會遇到這問題了。可是我最近發現,其實有不少人都不知道UNIX上有screen這個好東西,於是只要跑些重要的程式,就得擺一個terminal在桌面上,而且千千萬萬不能關掉,否則跑了數天的結果就這樣白費了。今天再次碰到這個問題時,仔細想了一下,terminal關掉會讓程式中斷的關鍵在於,程式會在terminal關閉時收到SIGHUP這個signal,而不處理這個signal的結果就是結束程式。在以前還不知道screen這東西前,都得用nohup這個指令來事先攔截SIGHUP。那現在碰到的問題就是,有沒有辦法在程式執行到一半的時候,先在它收到SIGHUP之前把這signal擋下來?或是直接在它執行中修改它的程式碼,讓它忽略SIGHUP...?想在runtime時變更程式的行為,讓我馬上想到gdb這個好東西。gdb可以在程式執行到一半時,attach到它的process上,接著就能做所有gdb能做的事情..。gdb能做的當然不只是debug啦,gdb可以在runtime改變程式的執行流程和行為,還能攔截程式本來應該要收到的signal...,咦,這好像就是解答了嘛!從Debugging with GDB可以查到,只要在gdb裡輸入這樣的指令,底下的程式就不會收到SIGHUP了。handle SIGHUP nopass所以這問題的解法很簡單。
  1. 從另一台電腦連上正在跑重要程式的工作站
  2. 用ps和grep找出那個程式的pi
  3. 用gdb attach它: gdb [program] ...
閱讀全文

Why is Lisp so great?

自從看完了駭客與畫家後,就開始看Common Lisp相關的書和文章。其中我最有興趣的是Paul Graham不斷提起的macro。一開始我還不了解macro到底強在哪裡,為什麼能讓Lisp如此特別,直到發現Why is Lisp so great? or Why so many parenthesis?這篇文章,才大大一驚,原來macro是這樣玩的!這篇文章舉了Haskell著名的quicksort implementation為例
qsort []     = []qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_xwhereelts_lt_x   = [y | y < - xs, y < x]elts_greq_x = [y | y<- xs, y >= x]
這份實做真的非常漂亮,短短幾行就說完了qsort。但如果用原始的Lisp語法寫起來還蠻複雜的,因為Lisp沒有提供list comprehension(Haskell的中括號)這種特殊的簡潔語法。但透過macro,就可以自己幫Lisp加上新的語法,而且完全不用動到compiler。
(defun qsort (ax)(and ax(let ((a (car ax))(x (cdr ax)))(append (qsort [y (y < - x) (< y a)])   ; A(list a)          ; B(qsort [y (y<- x) (>= y a)])))))   ; C
多麼神奇的特色啊,也難怪Lisp可以活這麼久而且永遠有許多死忠支持者..。閱讀全文

剛從這篇文章發現一件有趣的事:
但是在無名小站上面,不管你是什麼等級的 VIP,你還是逃不掉廣告的攻擊,差別只在於機率和受害程度罷了,而且它的廣告有越來越大張的趨勢,現在連去首頁,我 browser 如果不捲動的話,整個螢幕都是...
閱讀全文

Google Browser Sync

Google又有新東西了,這次是Google Browser Sync。它是一個firefox extension,可以全自動sync不同電腦間的browser設定,包括bookmark, history, cookie, saved password(註), 甚至可以把目前看的所有tabs存下來,再到另一台電腦打開..。註.連saved password都要放到google上,真是有點恐怖。雖然它號稱會用你的PIN code加密過,但真的能這麼放心的把密碼也交給google嗎?閱讀全文

Musicpedia

musicpedia真是太酷了,可以用它畫面上的keyboard彈幾個音符來search音樂,也可以直接唱一段給它聽,真是很有趣。musicpedia除了能search它自已的資料庫外,也能對整個web作search,比較可惜的是search的目標只有midi而已。(這點蠻奇怪的,它明明就可以錄人聲辨識出旋律,那對一般的wave用同樣的方式做成index不就好了?)閱讀全文