2013年8月19日 星期一

[Fedora] 讓 yum 保留更多的 kernel

最近 Fedora 18/19 的 kernel 升級到 3.10 系列。這樣平常的事情(喔喔!又有新核心升級了!),讓我了解所謂悲劇(好吧其實沒那麼嚴重XD)就是從這些看似日常生活的小事來的。

有天我要使用隨身碟,發現系統無論如何都無法讓隨身碟就緒(是指放到 /dev/sdX1 使可以掛載)。檢視 dmesg 輸出後發現該裝置以某個頻率被重設。搜尋後的結果發現不是電源供應器的問題,而是新發行的 3.10 核心的蟲。這個蟲應該只會影響到某些廠牌,某些型號的隨身碟。

當時已經有個可以解決這個問題 patch 存在,(看了 patch 的感想:僅僅三行的改變,就修復了這個臭蟲。反過來說,僅僅差三行,就讓電腦的隨身碟功能無法運作...)然而,處理作業系統核心對我來說太陌生,所以決定要等 rpm 包裝小組所謂的「上游修復 (upstream)」。這時候我可以用系統內的 3.9 系列核心來擋一下。

2013年8月4日 星期日

使用前請先看說明書喔~

使用任何東西之前,即使自以為熟悉,也要掃描過說明書。如果不恰當的使用這個東西會造成不幸,那就要詳讀說明書。

看了上面的話會不會覺得接著要說的事情很嚴肅?其實這句話是這樣來的,請聽我娓娓道來..

因為有可能會在沒有網路的情況下寫 haskell 程式,很擔心寫到一半發現漏掉了某個程式庫,就只能輕扯頭髮,責罵自己的糊塗...。但我沒有預測未來的能力,很難判斷自己會不會突然需要哪個程式庫..那,如果可以擁有整個 hackage 的話呢(也就是做一個 hackage 的私人 mirror)?

在這樣的構想下,對 hackage 進行探索,發現藉由取得 00-index.tar.gz 即可得到所有 hackage package 存放的位置等珍貴資訊。我可以依據這樣的資料下載整個 hackage 到自己的電腦裡。

對這個程式有興趣的見這裡。這個程式的流程大概是:使用 http-conduit 的 simpleHttp 下載索引檔,剖析它的目錄結構,接著規劃下載(當然也利用 http-conduit 的 simpleHttp),然後全部下載完後做解壓縮測試看有沒有下載錯誤。這樣就結束了是也~為什麼用 http-conduit 的 simpleHttp?它就寫在 http-conduit 說明文件最上端的範例裡,就用下去了。

2013年8月2日 星期五

Parsec 練習:寫個 ass 字幕剖析程式

有些事情很講求緣份,像是遇到不錯且值得去認識的人,或是看到了不錯的程式語言,或是注意到某家餐廳的文宣...。這裡也一樣。

某天在讀 Real World Haskell 的 parsec 那章,有點累想看影片的時候,發現某個 ass 字幕和影片不同步...(差了一秒鐘左右)。隨手找了個叫做 AegisSub 的軟體,正打算安裝起來時發現它需要 wxWidget 2.9 (的樣子),而 Fedora 19 附帶的只有 wx 2.8。正在思考要不要安裝 wx 2.9 的時候突然有種靈光一閃的感覺:「這不是練習使用 hasell parser combinator 的好時機嗎?」,就動工了 :p