星期日, 10月 06, 2013

文字雜想

其實不甚清楚以下描述能不能稱為寫作,這種廢話文很多,你大可以跳過 (笑)。其實只有一點想表達:

創作重要的從來都不是工具,而是我們想要表現的。

一開始我想要摘錄人月神話所說的一段話 (懶的翻書了)

程式語言並不會大幅度影響開發時間,而團隊中如果有某個語言的高手,那麼使用該語言或許益處還會大些。

在這邊並不想討論從該書第一版出版 35 年後是否有需要修正的地方,在這邊有一個簡單的猜想(不過也無需驗證)。使用文字編輯器或許會影響寫作時間,但是該著重的是你想要表達的。

來說說自己的故事,當兵的時候因為覺得自己想要好好寫些東西,但是自己用 VIM 寫中文不甚方便,於是乎開始嘗試 Sublime Text 及 iA Writer,然後很快的 (其實也花了好幾天) 決定要使用這兩個分別來做什麼事。最後,我面對到的問題是

我想要寫什麼 XD?

我不知道,於是乎寫文章還是慢慢寫(硬碟裡面躺了很多寫到一半的文字),然後在這中間也嘗試了發佈的平台 (從 logdown 到 nikola + snpa)。一直到最近才覺得可以開工了。但心中不甚踏實,總覺得寫出自己可以接受的文字比把寫作環境搞定來的困難的多。

或許下次自己可以先把寫作的主題想好,開始動工之後自己覺得環境有那裡需要加強再來做也不遲,邊改善寫作環境邊寫作是一個不錯的主意。

至於我現在要寫些什麼 ? 心中大致上有個底了,而 snpa 的初步開發也接近尾聲,或許可以開始嘗試一些自己想寫的東西了 (希望這句話過三個月後不是嘴炮 XD)。

星期日, 9月 15, 2013

工作與未來想做的事

從退伍以後不到一個月到進入工作第一禮拜,其實還蠻有蠻多不適應的地方。想來也蠻有趣的,當兵前在新竹念了一年書,入伍後下部隊第一站還是新竹,一直到工作後還是在新竹,到底接下來會去那呢 ? 以後就會知道這個問題的答案是什麼了 (笑)。不過還是要找個時間和當兵的朋友吃飯 (Harold Shaw, Sean Kuo, Jan Chen,對不起,最近真的沒有時間,我一定會找一個時間跟你們吃飯的。)

老實說,第一個禮拜工作還蠻不習慣的,不過希望接下來可以好一點,我似乎有點過於緊張放不開了 (指的是工作態度,不是對人態度 XD),期待下禮拜可以修正嘍。不過還是要說,工作最不習慣的是不能用自己的電腦,所有的工作習慣都要重新建立 … Orz 。當初從學校畢業之前只有希望不要去那種一定要穿西裝的公司上班,現在看來這個願望是有達成,不過下次應該要加一個可以用自己的電腦做事,不過我看這個願望大概還要很久很久以後才會實現了 XD。

老實說真的要有什麼結論,現在說出來都是不準的,畢竟只有工作一個禮拜就是了,不過真的從這個禮拜學到不少事,很謝謝公司同仁的幫忙。

很謝謝我的家人與我的女友,在這一路上一直的包容與忍耐,我不敢說我現在是一個成熟的人,但希望自己離小屁孩這個定義稍微遠一點就很開心了。

這個禮拜有和哈密瓜吃飯,他鼓勵我,工程師的個性就是動手去做(當然除了這件事以外還有一堆啦),我捫心問我自己,我到底最想做什麼 ? 其實就只是寫寫程式解解問題而己,為了不讓自己淪落到嘴炮人的境界,還是會想要讓自己努力動手做一些事。小馬馬曾對我說過,擴展人類的知識是很難的,我現在能體會,所以至少希望自己可以把人類已知的知識好好善用就夠了。

未來最想做什麼,我還有一段很長的時間要去探索吧。

最近還是很想寫 parallel and concurrent program,所以我決定繼續學習 Haskell ,然後把 Simon Marlow 的大作看一看,這件事做完最快大概也要半年過去了 (因為是在不影響工作的事情為前提之下),無聊在 104 上打 haskell ,發現台灣真的有公司要聘用寫 haskell 的人,是做 WhatsTheNumbers app 的公司,之前在某個計畫上看到創辦人說他從 MIT 畢業之後,他做的主題不僅僅在台灣找不到工作,美國也找不到工作。我看到就笑了出來,他做的博士論文真的是一個很有趣的問題呢,有空的人可以去看看喔(不附連結的原因是因為我懶的找了 XD。)

---
可能最大的希望就是以後自己還有力氣說這麼多廢話 XD?

星期六, 9月 07, 2013

[Haskell] Read the contents from the clipboard in Haskell

有時候只是想要做一點簡單的事情的時候,其實會直接貼上 string 做處理。但是因為不知道怎麼在 ghci 上貼入 multiple line string,所以想到可以直接讀取複製的內容直接做處理。


在 Mac OSX 裡有一個相當好用的指令是 pbpaste,可以直接蛉出在剪貼簿中的指令。開一個 subprocess 把指令的 output pipe 進來就可以了。嘗試如下。


嘗試執行結果如下

Prelude> :l read_pbpaste.hs
[1 of 1] Compiling Main             ( read_pbpaste.hs, interpreted )
Ok, modules loaded: Main.
*Main> import Data.Char
*Main Data.Char> processPaste Data.Char.to
Data.Char.toLower  Data.Char.toTitle  Data.Char.toUpper
*Main Data.Char> processPaste $ map Data.Char.toUpper
Loading package array-0.4.0.1 ... linking ... done.
Loading package deepseq-1.3.0.1 ... linking ... done.
Loading package filepath-1.3.0.1 ... linking ... done.
Loading package old-locale-1.0.0.5 ... linking ... done.
Loading package time-1.4.0.1 ... linking ... done.
Loading package bytestring-0.10.0.2 ... linking ... done.
Loading package unix-2.6.0.1 ... linking ... done.
Loading package directory-1.2.0.1 ... linking ... done.
Loading package process-1.1.0.2 ... linking ... done.
ING PACKAGE ARRAY-0.4.0.1 ... LINKING ... DONE.
LOADING PACKAGE DEEPSEQ-1.3.0.1 ... LINKING ... DONE.
LOADING PACKAGE FILEPATH-1.3.0.1 ... LINKING ... DONE.
LOADING PACKAGE OLD-LOCALE-1.0.0.5 ... LINKING ... DONE.
LOADING PACKAGE TIME-1.4.0.1 ... LINKING ... DONE.
LOADING PACKAGE BYTESTRING-0.10.0.2 ... LINKING ... DONE.
LOADING PACKAGE UNIX-2.6.0.1 ... LINKING ... DONE.
LOADING PACKAGE DIRECTORY-1.2.0.1 ... LINKING ... DONE.
LOADING PACKAGE PROCESS-1.1.0.2 ... LINKING ... DONE.
HTTPS://EN.WIKIPEDIA.ORG/WIKI/CONTINUATION-PASSING_STYLE
*Main Data.Char>

2013/09/08 09:17 AM 早上試一下,還可以這樣子幹也蠻方便的

Prelude System.Process> putStrLn =<< readProcess "pbpaste" [] []
http://hackage.haskell.org/packages/archive/process/1.0.1.1/doc/html/System-Process.html
Prelude System.Process> import Data.Char
Prelude System.Process Data.Char> putStrLn . (map toUpper) =<< readProcess "pbpaste" [] []
HTTP://HACKAGE.HASKELL.ORG/PACKAGES/ARCHIVE/PROCESS/1.0.1.1/DOC/HTML/SYSTEM-PROCESS.HTML

所以想要寫完全沒有彈性的碼可以這樣子寫。


星期五, 9月 06, 2013

選擇筆記用紙心得

這其實是一個蠻簡單的問題,但是這個問題其實困擾了我還蠻長一段時間的,因為我一直有一個問題。

下筆的那一刻,這張紙是否要被保留下來 ?

老實說,很多時候我是不知道答案的。不過後來想出一個可以接受的方法解決了這個問題。那麼方法是什麼呢 ?

買 A4 30 孔資料夾(or 魚骨頭) + A4 30 孔打孔機。重要的重新整理到電腦上

這個方法應該很多人提過,下面都是我為什麼會選擇這個方法的故事,如果沒興趣的可以跳頁了 XD。

從大學開始,試著自己開始整理筆記遇到很大的困難。因為我上的課很多課堂都是使用投影片,大概到大二的時候,我買了一台雷射印表機把投影片印出來然後在上課的時候試著做註記,還有自己閱讀課本及寫到 blog 上,大部分的筆記都很零零散散的,不過就這樣子過完了大學四年 XD。到了碩士班,我們還多了一個東西叫做論文,看論文也是一絕,因為一剛開始,真的還蠻難只使用電腦就看論文(中間有買 Kindle DX 試過,但是反應速度實在是有點囧,現在還是認命的買 iPad 了),所以唯一選擇也是印出來,久而久之,如何整理印出來及自己寫的東西變成一個很麻煩的問題。

那麼現在來談談做筆記的用紙及收集,最常見的方式是 B5 26 孔夾,大小適中,外觀多樣,紙也容易補充,是很好的選擇,不過會遇到我一開始說的問題,我在我下筆的時候,除非明確知道是要做筆記,不然拿 B5 26 孔紙當計算紙也是有點浪費 (26 孔紙和 Dobule A 一包比起來還是貴了點)。經過了很多嘗試,最後還是決定使用 A4 紙做筆記。

但是使用 A4 紙做筆記會產生最大的問就會跟前面提到的一樣,不容易整理,這中間試了很多方式。一開始印投影片的時候,就買了一個20入的資料夾,每印出一份投影片,就塞進去,要看再拿出來. 也試著夾起來,但是這其實只是進化版的訂書機整理法而己。在碩士班寫的 A4 紙筆記最後全部掃入電腦,然後全部收好,要看的時候就一張一張的看,這個狀況持續了好幾年。

有一天,我看見 Jacky Liu 帶了一個 2 孔 A4 資料夾裡面塞著他自己打的 A4 紙,我看到的時候覺得可以把筆記紙和自己印出來的資料同時整理,是一個不錯的做法。那時自己先買了一個簡單的打孔器,再買了一個 A4 4 孔資料夾,這個方法雖然滿意,不過也有一些缺點,因為自己買的是單孔打孔器,所以紙打起來並不美觀,另一方面,可以買到 A4 孔夾其實都偏大。在那時候,我自己買了一個 A4 4 孔夾,自己把夾子割小一點,雖然邊緣不怎麼美觀,但是是一個可行性的方法。

IMG_2387

後來在逛文具行的時候,意外看到大小趨近 A4 紙大小的 A4 4/ 30 孔夾(如下圖),看到這一款相當的開心,當下買了很多個回去存 XD,整理起來效果也很不錯,到此剩下的問題就剩下打孔了。

IMG_2385

IMG_2384

打孔如何打的漂亮,問題在打孔機。一般的書店可以買到的打孔機一般是 2/ 4 孔打孔機,而且紙無法對齊。最後決定在網路上尋找合適的打孔機,在女友的幫助下,發現 Carl GP-130 打孔機的價錢可以接受 (如下圖), 紙可以對齊,打出來也很美觀,於是就決定這個解決方案。

IMG_2383

Carl GP-130 的優點就是打起來整理美觀,容易攜帶,但是缺點還不少。第一,價錢不算便宜,我買的時候是 NTD 600,不知道現在有沒有便宜一點。第二,打一張紙的步驟不算少,要先對齊然後一張紙要打孔 5 次,這速度其實不算快。第三,一次只能打 2 張 80 磅的紙(如 Dobule A) 或 3 張 70 磅的紙,如果有很多紙要打其實蠻耗時的。如果真的想要用這個方法的話,預算足夠可以買 Carl SP-30N (不過因為預算的關係,我和我女友合買一台 XD),雖然紙一樣只能打兩張,但是打孔只要刷一次就搞定,還在可以接受的範圍。

假設用上述兩台打孔機,那麼一次只能打兩張怎麼辦 ? 有兩個不是方法的方法,第一個,買更專業的打孔機 (笑),第二,利用閒暇時間打孔,我自己是利用看日劇/ 動漫/ 電影的時候打孔,不然就是晚上想睡的時候邊聽音樂打孔,如果有其他方法請跟我說,我也很想知道,謝謝你。

整理起來效果如何 ? 論文翻閱比起以前方便的多也容易整理,當然,要做註記的時候可能還是要從活頁夾拿出來會比較方便,一般為了筆記方便,通常會再買一個 A4 筆記板 (如下圖),而投影片依舊是個死穴,因為一般是 4 頁投影片一張,用活頁夾翻閱沒這麼方便,直向翻閱的話,可以考慮印 2/ 6 張一張(如下圖),如果要橫向翻閱的話,建議可以買魚骨頭。

IMG_2382

IMG_2386

這個方法最大的優點就有如一開始所說的,不太需要考慮這次的寫作為何,缺點當然也有,一開始要花錢花時間適應,但是以我自己來說,我很喜歡這樣子的整理方式。但是最後還是會想要用電腦整理,原因在於搜尋,不過這又是另外一篇文章了,以後再說吧。

如果有興趣的話不妨試試看這個方式,如果有什麼想討論的,我也會很樂意討論。

星期日, 9月 01, 2013

Lambda Mind & Yen3's Note


從今天開始,No title, no thinking, no meaning 改名為 Lambda Mind。其實一直想改名很久了,但是一直找不到一個符合自己心情的名字,這次在女友的幫忙下才想到這個好名字。當然我也不否認有抄襲 Trek through Pure Reason 的味道,只是我英文和意境沒這麼好,所以只能想簡單一點的 XDXD。

寫了這麼多年,知道寫出滿意的內容其實並不容易。雖然自己喜歡寫作,但是總覺得自己腦袋沒啥東西可以寫。看著自己當兵時立下退伍後的志願就有一項,希望自己退伍後能持續寫作這件事。這大概也是為什麼硬碟裡面躺了一堆沒寫完的東西(笑)。

同一時間,經過一些日子的想法,還是決定開個分站 Yen3's Note 來記載一些隨筆,如果有可能(這通常不太可能),會再想辦法整理再放回 Lambda Mind 上,有沒有可能全部移過去 ? 暫時不太可能 XD。從 Google Reader 關閉以來,每次看到一個新的服務,我的第一個想法是,這個服務到底可以撐多久,blogger 這個服務也是有可能被 Google 關閉的。logdown 是個好主意,也做的很不錯,但是我還是會想,我們可以用多久 ? 所以其實很謝謝 logdown 可以把所有的文章以 markdown 的形式匯出,至少是留了一個不錯的後路。

---
最近大概就這樣 XD?



2013/09/08 19:26 經過一番想法之後,還是決定使用 nikola 來做筆記之用,會改的原因大部分都不是技術原因,雖然會比較麻煩一點,不過就先這樣子將就用吧 XD。

星期六, 8月 31, 2013

epub 簡轉繁

我知道這個題目已經做到爛掉了,不過在之前看到 OpenCC Projrect,決定利用一個中午休息時間把 epub 簡體轉繁體 + OpenCC 這件事做完。

暫時成果在 epubs2t_opencc.py

下載之後,只要輸入 python epubs2t_opencc.py filename 即可轉檔。

這個檔案最大的問題是,其實 opencc-python 安裝會失敗,必需自己 download source code 之後,在該 source code folder 加上 distributed_setup.py 之後執行 python setup.py install,才有辦法把 opencc-python 安裝成功(或許我應該送一個 patch 給原作者 XD)。

這也算是剛當完兵後寫寫小程式的暖身吧,還是要趕快開始念書才是。



更新 2013/09/01 10:49 AM - 我直接參考 opencc-python package 的內容,直接把該 function 貼上到 epubs2t_opencc.py裡。現在直接下載不需額外安裝其他套件即可使用,使用方法仍然是 python epubs2t_opencc.py filename,但是需安裝 opencc 才可以使用。如果有需要,我再分別寫 Mac OSX 和 Fedora, ubuntu 的使用文件(其實不難寫,只是我好懶 XD)。

星期六, 5月 25, 2013

Modern Times 摩登時代 - 在一個規則名為國家的機器背後



(註1:可以先看魔王,魔王是摩登時代沒有太大關係的前傳,兩本書我都很喜歡。)

(註2:請把這本書看完再來看此篇心得,雖然沒啥破梗。)

你有沒有勇氣 ?

這句話很簡單,但沒有很容易回答,因為我們也不是對每一件事都很有勇氣(笑)。我嘗試在網路上搜尋關於這本書的資訊時,我看到了卓別林的電影(稍微看了一下 wiki,好像沒有什麼直接關係),也看到了另外一個人的心得。他沒有很推薦這本書,不過出乎意外的,我還蠻喜歡這本書的。

我的朋友看完此書跟我提及,這本書談的是關於人,實在是有很多可以說的。我同意,但是也因為如此,我也不知道從何說起。

人類形成了村落,再由村落往上一層一層的組成了國家,但是走到了國家這一步,我們反而不了解國家的組成及運作,甚至難以去改變其中的運作,這相較於民主的概念,其實很諷刺。而國家是由許多不同的組織及人民所構成。真正的在上位者,要做出一個決定也得考量許多利害,沒有完全的一個人決定能力。

那麼國家及人民到底是什麼 ? 我們好像兩邊都過著不相干但是必然有關連的生活。我不知道,或許,這本書講述了某個程度的答案(笑)。

書中的對於問題的答案並不唯一,我們可以慢慢的想。伊坂幸太郎提出國家與社會的問題,並嘗試了給予了一個我們可以做的小答案,試著從自己的身邊改變,我喜歡這樣子的想法與故事結尾。這樣子的答案讓我想到了長尾效應與蝴蝶效應(長尾效應比較沒關係,不過我就是想到了。)。至少,比很多只提出問題批判一番卻毫無答案的書來的好。

這本書是伊坂幸太郎的後期作品,與前期的溫暖說故事並不一樣,這本書嘗試用了一種與他以往不同的方式來說故事,雖然並不完美,但是因為這樣子的不完美,我們可以慢慢的看這本書。有人認為書中某些角色過於生硬,但是我倒是覺得這樣子的個性是獵奇與搞笑,我並不會覺得這樣子不好,因為作者已經說明了他想說的了。

雖然知道作者應該是看不到也看不太懂這篇文章,不過我衷心的希望伊坂幸太郎可以這樣子改變自己的風格繼續寫作。

---
我好像寫的很玄啊 XD。

星期日, 3月 31, 2013

學習 monad

這兩天才花時間把 Learn You a Haskell for Great Good 關於 monad 的章節大概掃過一次,只能說自己不太會使用 monad,感覺上很像 Josh 很久很久以前在 blog 上說的話:

我現在對 Haskell 的感覺很奇特,有點熟又不太熟,會的部分都是靠著唸理論(而不是練習)而學起來的。

稍微列一下關於 monad 的文章,只列出我有印象的 XD。

因為我數學不太好(我到現在還是沒看 category theory),我所了解的 monad 是在解決如何儲存狀態的問題。如果要寫一個真正的程式,多個 monad 的結合勢必是要
處理的,而我所看到的文章皆提及了 monad transformer,我想可能要等到繼續看下去才會有所辦法就是了。

很多小程式其實只需要用到簡單的 IO 概念,把 do block 裡面視為一個 imperative program 來寫,再加上 pure function 的概念就可以解決了。再進階一點可以是 IO monad + state monad 來解決,再下去我就得要繼續學習跟看書了。

其次在王垠在他的 blog 中提到 monad 這個概念的種種問題,想到與 Josh 跟我提及的話,programer 必需了解程式中每一個狀態的轉換,想法大異其趣。王垠最近寫了很多關於 Lisp 及 Scheme 的文章,忽略掉文章中的情感,他的文章是值得一讀的。

這幾年反反覆覆的學習又放棄 Haskell,不過現在的我還是想要繼續堅持的學到一個段落就是了。

---
繼續看書去。

星期六, 3月 30, 2013

Guessing Number using Haskell

今天利用一點時間寫出來的簡單版(困難版我也不會 XD),明天有空再補心得 XD。如果有什麼可以加強或改寫的的地方還請指教,我會很開心的,謝謝 :)。

import System.Random

checkNum :: [Integer] -> [Integer] -> (Integer, Integer)
checkNum input ans = (posNum input ans, correctNum input ans) 
    where posNum input ans = sum $ zipWith (boolValue (x==y)) input ans 
          correctNum input ans = foldr (\x y -> y + boolValue (any (== x) ans)) 0 input
          boolValue a = if a == True then 1 else 0

game :: [Integer] -> IO ()
game ans = do
    input <- fmap (fmap (\x -> read [x])) getLine
    
    let (rpn, rn) = checkNum input ans
    if rpn == 4 then
        do putStrLn "Win"
           return () 
    else
        do putStrLn $ show rpn ++ "A" ++ show rn ++ "B"
           game ans

main = do
    gen <- getStdGen
    let ans = take 4 (randomRs (1,9) gen)
    game ans

---
繼續前進。


T55555的回應給了許多寶貴的意見,真的很謝謝他每次都給予很好的建議(至於我這麼晚回的原因是因為仍在當兵中...Orz),我也做出了回應,現在把整個修完的 code 再貼一次如下。


import System.Random

-- Wrong game logic
-- checkNum :: [Int] -> [Int] -> (Int, Int)
-- checkNum input ans = (posNum input ans, correctNum input ans) 
--    where posNum input ans = foldr (\x y -> y + fromEnum x) 0 $ zipWith (==) input ans 
--          correctNum input ans = foldr (\x y -> y + (fromEnum (any (==x) ans))) 0 input 

checkNum' :: [Int] -> [Int] -> (Int, Int)
checkNum' input ans = foldr (check ans) (0, 0) $ zip input ans 
    where check ans (x,y) (p,c) = 
            if x == y then (p+1,c)
            else
                if (any (==x) ans) then (p,c+1)
                else (p,c)

game :: [Int] -> IO ()
game ans = do
    input <- fmap (fmap (\x -> read [x])) getLine
    
    let (rpn, rn) = checkNum' input ans
    if rpn == 4 then
        do putStrLn "Win"
           return () 
    else
        do putStrLn $ show rpn ++ "A" ++ show rn ++ "B"
           game ans

main = do
    gen <- getStdGen
    let ans = take 4 (randomRs (1,9) gen)
    putStrLn $ show ans
    game ans

星期日, 3月 03, 2013

最近

最近的 blog article 都是用 markdown 寫好之後工人貼上到 blogger 上,很希望 blogger 可以支援 markdown editor,但也知道短時間內不太可能(笑)。

一直很想幫 blog 改個名字,不過暫時不知道要改什麼,所以還是將就用吧。

還是不習慣用 Vim 配合嘸蝦米來寫中文的東西,剛好想到 godfat 和 ihower 推薦的 Sublime Text 2 。所以使用 ST2 配合 markdown 來寫中文 blog (預覽就交給自己寫的 yiviewer)。

最近做的事不少,做個簡單記錄如下

  • 電影

    • 黑暗騎士: 黎明升起 (The Dark Night Rises)
    • 007 空降危機 (Skyfall)
    • BBS 鄉民的正義
    • 蜘蛛人: 驚奇再起 (The Amazing Spider-man)
    • 黑影家族 (Dark Shadows) --- 不推薦,我原本很期待 Tim Burton 和 Johnny Depp 的說。
  • 演唱會

    • Perfume 3rd Tour 「JPN」 --- 買了快一年才看,中間的純電音表演值得推薦,至於其他部分的推薦可能要好好寫一篇文章(笑)。
  • 音樂

    • LIVING THINGS --- Linkin Park
    • Spring of Life(Single) --- Perfume
    • Spending All My Time (Single) --- Perfume
    • In Blue --- The Corrs
    • Marry You(Single) --- Bruno Mars

正在看的

未來想買的

看到覺得是很好的機會但是自己沒辦法的(笑)

從當兵以來一直在專注 parallel and concurrent programming 的學習與可能性。本來有寫雜記,但是寫的太長了,我懶的修稿,就不貼上來了 XD。


---
很感謝最近遇到的朋友與一直持續幫助的人,我就不另外寫出來了。

星期六, 2月 02, 2013

Calculate the raw sum

上個禮拜看到自己以前寫的 blog 小試牛刀 - 算出檔案每一列的總和,我覺得其實沒有這麼難寫成 Haskell 的版本,T55555 在留言中有提供一個 Haskell one liner version,我在今天早上自己練習寫了一個,沒有 one liner,只是單純做個記錄。

import System.IO

rawSum :: [[Integer]] -> [Integer]
rawSum = foldr1 (zipWith (+))

readContents :: [Char] -> [[Integer]]
readContents s = map (map read) $ map words $ lines s

main = do
    s <- readFile "num_matrix.txt"
    print $ rawSum . readContents $ s 

星期六, 1月 26, 2013

gitit custom css

I don't like the default looking, so I try find a css from the internet and modify it. The preview is as the following.


The modified gitit template


How to use the css?


  1. Download code from here
  2. Replace the file with the existed one

    cp custom.css $GITIT_FOLDER/static/css/custom.css

murmur
The orginal css is founded from the internet, but I can't find it again. If you know the original one, you can mail to me. I will add the reference in the end of the article. Thank you.


What are the differentences from the default css?

  1. Looks beautiful. :)
  2. Move the sidebar to the right side because I seldom use the functions of the sidebar.
  3. Change the color of the link to light blue (#5588aa) because I love the color and the blog uses the same one.

Btw, you can get more information to know gitit from walkingice's blog article (including custom css.)


---
I hope you use gitit with the custom css happily.

星期六, 1月 19, 2013

Yield commands

其實技巧很簡單,只是自己寫著暫記一下,要寫這個的原因是,Learn X The Hard Way 似乎要下架了,索性自己寫一個抓一抓比較快 XD。

mapM_ putStrLn $ map (\x -> "wget http://c.learncodethehardway.org/book/ex" ++ (show x) ++ ".html") [0..52]


---
我相信應該是沒有說明的必要 XD。



2013/01/19 21:03 經由 Josh Ko 建議應該可以執行 commands 的 System.Cmd,這行 code 可以改寫如下。


mapM_ system $ map (\x -> "wget http://c.learncodethehardway.org/book/ex" ++ (show x) ++ ".html") [0..52]

在 ghci 的執行結果如下

Prelude> import System.Cmd
Prelude System.Cmd> mapM_ system $ map (\x -> "wget http://c.learncodethehardway.org/book/ex" ++ (show x) ++ ".html") [0..52]
Loading package filepath-1.3.0.0 ... linking ... done.
Loading package old-locale-1.0.0.4 ... linking ... done.
Loading package old-time-1.1.0.0 ... linking ... done.
Loading package bytestring-0.9.2.1 ... linking ... done.
Loading package unix-2.5.1.1 ... linking ... done.
Loading package directory-1.1.0.2 ... linking ... done.
Loading package process-1.1.0.1 ... linking ... done.
--2013-01-19 20:34:37--  http://c.learncodethehardway.org/book/ex0.html
Resolving c.learncodethehardway.org... 71.19.145.23
Connecting to c.learncodethehardway.org|71.19.145.23|:80... connected.
HTTP request sent, awaiting response... 200 OK
...

朝著更便利性前進一步(其他程式語言都可以透過相關的函式來達成目的,只是我都很懶都是直接複製貼上 XD。)