星期日, 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。)

星期日, 12月 16, 2012

亂想

這一陣子看的關於歷史書有「明朝的那些事兒 1~7」與「橡皮推翻了滿清」。喜歡這兩本書的原因是,著重在還原歷史。我不太認為一件事的結果只是單一原因所造成,而這兩本書都有著類似的觀點。


「橡皮推翻了滿清」其實剛開始看感覺還蠻亂的,越是閱讀越是進入佳境,書中的主題主要是從各個方面(如: 地理、經濟、軍事、政治 ... 等等)來探討為什麼滿清會滅亡。因為作者是從寫作 blog 起家,有時候會有一種面對讀者的寫法 (如: 各位看倌認為 ...),封面和標題比較生動活潑一點,可能是想要吸引買氣,雖然我很久沒有看這種感覺的書了。但其實內容的考據與撰寫皆相當的嚴謹,分析原因相當的清晰,如果對清末民初的歷史感到興趣的人,是值得一讀的。


每個人都有其人性。有些人熱衷名利,有些人想對社會貢獻或改變,但我相信大多數的人想過平凡的生活。從歷史中看到批評者有之,但能實際做出貢獻者更使人尊敬。有人說歷史可以讓我們鑑往知來,但人性依舊如此,所以,我們能從歷史學到的事並不多,甚至是不斷的重覆無法避免的錯誤。


最近與人聊天,總覺得有好好寫(譯)的中文書好像不太好找,連工具書、科普書都邁入一樣的情形。所以看到這本書其實蠻開心的,有空也可以看一下藍戈丰的 出書心得。我真的還蠻願意買一本有好好認真寫且深入的書,但這種書並不好找(笑)。背後的原因,應該有蠻多人聊過的,但是至於如何改變這個現況,其實我心中沒個底。所以只能期許自己好好的寫一些東西,雖然這並不是我的本行,但是我很喜歡寫作(笑)。


在很久很久以前,有看到過一段文字「他只願意看出版超過十年以上還存在於市面上的書。因為如果經過了十年這本書還存在著,代表有其閱讀的價值」這個看法其實蠻有趣的,雖然有時候會有時候是因為好書實在是太難賣所以絕版了(還好現在網路上很容易找到 ... XD)。我在寫這篇文章的時候,嘗試的去尋找 "紫牛-讓產品自己說故事" 這本書,這本書在我的印象中,七八年前還蠻紅的,但是現在並不是這麼容易可以買到這本書 (笑)。我相信這種書應該會非常的多 XD。


這又讓我想到「暮光之城」與「飢餓遊戲」,前者我沒看過,後者我把小說看完了,但是後來才知道原來這兩個系列在美國是被歸類為青少年小說,早知道我就不看了 (笑),飢餓遊戲其實營造出了一個不錯的氣氛,有愛情故事,好像也有反烏托邦情節,具強烈故事性,但總給我一種想要好好說一個故事,但是失了焦的感覺,也不能說這本書不好,但是只能說不合我的胃口(笑)。


---
本來想要寫看歷史書的心得,不過後來變成亂寫了,先這樣吧(笑)。

星期日, 12月 02, 2012

最近

Factory Girls 推進到 Chapter 5 了,不過估計下禮拜之後就會慢的很 XD。

15-150 Functional Programming 兩個禮拜內推進到 lecture 11,15-210 Parallel & Sequential Data Structures and Algorithms 也推進到 lecture 3,也希望下禮拜能保持進度,很謝謝 Josh Ko 的每週討論與閒聊,讓我一直放寬心胸努力(笑)。


讀 EtherCalc 開發經驗談 想到了 Peopleware 中文版,於是在利用今天中午重看這本書,以往對於這本書的記憶大抵上是讓人適得其所,減少辦公室干擾。而現今重讀時發現其中的脈胳為討論從時間、環境、人才進而到團隊的管理,如果人才沒有問題,那麼一個專案是否能完成的關鍵在於人而非是技術。(雖然我覺得這兩者沒有什麼直接關係,大概是想看書就看了 XD)


另外也因為這篇經驗談中提到的 LiveScript,想到 Chi-En Wu 有跟我說過,有空我再好好看看,這一陣子可能 Standard ML 看的比 Haskell 還多(笑)。


---
暫時性的雜記,期望自己下禮拜能持續閱讀與思考了。

星期日, 11月 25, 2012

Factory Girls




起先是看了 「白板报 - 工厂女孩」的介紹進而開始閱讀。這本書要求的英文程度不高 (連我都看的懂),我現在看到 Chapter 3 結束,正如白板报所言這本書並不是想要反應所謂的血汗與不公平,而是去貼近描寫這些女孩的生活與想法。

這本書有中文版,書名是 「工廠女孩 Factory Girl」。經過某些訓練,我對於 Girl 該字不是複數其實有點感冒 XD。稍微翻了一下,其實沒很喜歡中文書的排版和封面,建議有興趣的人還是看英文版比較好。


至於完整的心得,可能要等看完以後了,那可能要很久很久(笑)。


題外話: 白板报是一個值得推薦閱讀的 blog,能看到有趣但平實的觀點,雖然我現在看簡體字很吃力 (我懶的用同文堂 XD),這個 blog 在對岸貌似很有名,或許也不用我多做著墨 :D。


---
在 FB 上字越寫越多,索性還是寫在 blog 上 XD。

星期二, 10月 23, 2012

The Collection of Perfume


大概只剩 Perfume ~Complete Best~ 和 Game 會想收,接下來應該都是收台壓了。
雖然 Spending All My Time 的風格我沒很喜歡,而 Perfume 現在的風格和以前也不盡相同了。但是應該還是會繼續再聽一陣子。


---
做個紀念。

星期六, 9月 29, 2012

分站

Yen3's Note

老實說,我也不知道為什麼我要搞這個分站,單純是想試試 hakyll 好不好用 XD。等以後有空再來思考要怎麼繼續寫 blog 這件事,先趕快把 Josh Ko 的 FLOLAC'12 文章看完再說。


---
其實只是單純不想讓使用 ipod touch 的文章在第一則才寫這篇 XD。

星期二, 6月 26, 2012

Remote control music play for iOS 5 through a broswer

這個是最近才想到的問題,我的問題很簡單,如何用電腦操控 ipod touch 的音樂播放 ? 為什麼會有這個問題的原因是,我的 ipod touch 是插在有音響的 dock 上的,如果我想要切換播放清單或換很多首歌,依靠音響所提供的遙控器多少會有些不便。所以才想要改善這個問題。


方法: 裝上 Reverse Remote。很簡單吧 XD


這個方法的限制是,控制的設備需要看的到 ipod touch。最簡單的方式就是兩個設備在同一個 wifi network 底下。而另外一個限制是,想要遠端操作,必需把該 Reverse Remote App 開啟才可以運作,這個限制倒是沒有這麼麻煩。如果你有 jailbreak 的話,透過 cyndia 安裝 backgrounder 後,讓 Reverse Remote 背景執行就解決問題了。


由於 Reverse Remote 的操作與內建音樂播放 App 的操作是互通的,所以我通常是讓 Reverse Remote 背景執行,然後開著內建音樂播放 App,對我而言,這樣子暫且夠用。


如果說有什麼不滿意的,第一個是傳過來的操作介面雖然可以接受,但是每首歌缺乏專輯及歌手名稱,第二個是連線的時候輸入 IP 不甚方便,雖然知這件事可以透過某些方式來解決,但我也懶的解決了 XD 因為我最需要操作的環境只有兩個設備會使用到 wifi network,猜不到 IP 的時候我再去看一下設備 XD。





題外話是,這是第一次 JB,僅僅只是為了操作上更佳方便 XD,其實這個方法以外,第一個想到是的 Josh Ko 提的 Reflection,但是後來發現,這好像只能看,不能操作啊 (我好蠢 ... Orz)。第二個方法是 cyndia 上的 Veeny ,簡單的來說就是在 iOS 上裝上 VNC Server,我在 Mac OSX 上試過了,chicken 無法連線,而 Finder 內建的 vnc 開起來奇慢無比,所以最後是嘗試這個作法。當然,朋友說我買錯音響了 XD,應該可以買支持 Airplay/ DLNA (這名詞我第一次聽到 XD) 播放的音響。我的心得是,來不及了,將錯就錯吧 XDXD。


---
寫個心得 XD。

星期五, 5月 25, 2012

中文直書與 Kindle DX

其實我在兩年前寫了關於 Kindle DX 如何閱讀中文小說的 blog,但是其實後來自己對於這樣子的方法不甚滿意,最主要的原因是。

用橫書看金庸感覺很怪 XD

但是我又是個懶人,於是這問題一直放著,一直到現在 iPad 或者是 Android 平板都有出相應的好讀網站閱讀軟體,我自己用 KDX 也是看英文居多,於是這問題就一直一直放著 ... 直到我開始看 "明朝的那些事兒"。剛開始我是用我自己的 ipod touch 看的 ... Orz,其實非常的耗時 (因為我翻了好多好多頁),後來索性再看看現在 KDX 破解的現況,KDX 現今可以看中文的破解,大抵上來說都是換掉內建的字體,比較好的可以做到英文字體是原本 KDX 內建,中文是黑體,也就是說,可以直接看中文的 mobi 檔,但是,它還是橫書 XD。只是那一瞬間覺得不能再懶下去了,所以乖乖來找解決方案。

如果自己不想去 hack KDX 但是又想看直書,最快的方法,把文字複製到 Word 上貼上,然後設定成直書之後輸出成 PDF 應該就解決了 XD 可惜我比較喜歡用 LaTeX ,所以就使用了一個簡單的方法: 在 XeLaTeX 上的 xeCJK package 配合 fontspec package 可以直接把字旋轉 90 度並中文輸出就可以了。最主要關於字型的設定如下


# use fontspect package
\usepackage{fontspec}
  
# use xeCJK package
\usepackage{xeCJK}     

# set CJK main font and rotate
\setCJKmainfont[Vertical=RotatedGlyphs]{Hei TC}

最主要的設定只有最後一行,其他的都是使用所需要的套件,於是乎,剩下的就是讀出內容,加上 header 和 footer 形成 tex 檔,然後 complie 生成 pdf 檔,丟到 Kindle DX 上,收工。


在 Kindle DX 上的效果如下圖,照片中所使用的字體是 "華康明體 Std W5",實際看起來對比照片略粗




為此,我自己寫了一個簡單的好讀網站的 pdb file 轉成 tex file 的小程式,也符上一個簡單的 XeLaTeX template,皆放在 github 上,如果有使用上的問題,歡迎留言或來信。


github: PDB-TeX-Converter


其中有幾點討論如下。

  1. 為什麼生出來的檔案沒有頁碼 ?
    頁碼在 LaTeX 直書排版上一直是一個很大的問題,但是 Kindle DX 本身就有頁碼,所以直接省略。
  2. 為什麼不讀 updb 檔 ?
    我嘗試搞了幾個晚上之後放棄,我對於編碼實在是不了解,如果可以,我會試試看。
  3. 如何使用 XeLaTeX ?
    這個要講要講很久,在 Mac OSX 上是安裝 MacTeX,在 Linux 上是安裝 TeXLive,在 Windows 上 ... 嗯,應該是 TeXLive,但是我沒研究 XD。如果你使用的是 Mac OSX 或者是在 Linux 從 package manager 直接安裝 TeXLive,這隻小程式在運作上應該不會有問題。目前已知在安裝好 MacTeX 2011 的 Mac OSX 上運作可直接生出 pdf 檔。
  4. 如何知道字體的英文名稱?
    首先,先行建立字體列表,在 command line 中輸入fc-cache -f -c -v接下來,在 command line 中輸入fc-list
    即可看到字體的相對應英文名稱,在上面的範例是 Hei TC,這其實就是 Mac OSX 中的 "黑體 TC"。


---
這個應該是很小眾的需求 XD。


2012/06/07 --- 根據 Josh Ko 的建議,還是使用直向直書模式,不過生出來的 pdf 需手動旋轉頁面。示範圖更新如上,代碼更新已上傳至 github 。

2012/08/08 --- 根據 anynomous 的建議,天火藏書排版系統是現有的方案,而我自己也已經建立了一個新專案為 convert2tex ,主要是可以把 epub/ txt/ pdb (限好讀網站格式)轉換成 tex 檔和支援簡體轉繁體。雖然現在已經是 stable,但還在補強中,修好就會上傳並說明關於這個專案。(可能會很久很久 XDXD)

星期三, 5月 02, 2012

在 Mac OSX 下觀看 process 的記憶體使用量

寫這個小程式的目的只是想知道 Chrome 總共吃了多少記憶體而己 ... Orz (我好無聊 XD)

這件事其實很簡單,但是我不太會用 shell,所以仿造 godfat 以前寫的 mem_usb.rb (原 po 提供連結了 XD)(連結找不到了 XD)。寫了一個簡單的 proc_mem.py 程式碼如下



#!/usr/bin/env python
import subprocess
import sys

def main():
    proc_name = sys.argv[1] if len(sys.argv) >=2 else "Google Chrome"
    proc_list = subprocess.check_output(["ps", "-Ao", "rss,comm"])
    print str(sum([int(proc.split()[0]) for proc in proc_list.split('\n') if proc.count(proc_name)>0])/1024.0) + " M"

if __name__ == "__main__":
    main()
使用上很簡單,輸入你想看的 process 名字就可以看到了,如果什麼都不輸入,預設是 "Google Chrome"。

---

我的 Google Chrome 吃了 3.5 gb 啊 ... (遠目)。

星期三, 1月 18, 2012

YiViewer - pandoc HTML Viewer

Download



What is YiViewer ?

YiViewer is a html previwer for restructed text by pandoc. It can previrew markdown, reStructuredText, latex, … etc as a html page.

It is written by Python and QtWebKit (by PySide). The program is very small. It can run smoothly in Mac OSX and Linux.

Feature

  1. Stay in the same location when you regenerate the preview for file.
  2. Regenerate the preview automatically when the file saved.
  3. Support the all file formats for pandoc, it can decide the file formt automatically by subfilename.
  4. A simple and beauty look preview CSS is designed by C.E.W.

Connect Author

If you have any problem with YiViewer

  1. Leave message in my blog
  2. Mail to me (yen3rc AT GMAIL).

Install

There are two steps for installization.

  1. Install Dependence Librays/ Tools — PySide and pandoc
  2. Install YiViewer

Install Dependence Librarys/ Tools

  • Install in Mac OSX
  • Install in Fedora 14+
  • Install in Ubuntu (unfinished)

Install for Mac OSX

  • Install from homebrew. Type the following command.

     brew install pyside 
     brew instal haskell-platform
     cabal install pandoc --flags=highlighting
    
  • Install from package

    1. Download Qt, PySide, haskell-platform package and install it.

    2. Type the following command

       cabal install pandoc --flags=highlighting
      

Install for Fedora 14+

  • Type the following command

    sudo yum install python-pyside* pandoc -y
    

Install for Ubuntu

I don’t have any computer running with Ubuntu OS. If you test it successd in Ubuntu, please mail to me. Thank you.

Install YiViewer

  • untar yiviewer.tar.gz and copy to a run path.

    tar zxvf yiviewer.tar.gz
    cd yiviewer
    chmod +x yiviewer.py
    sudo cp yiviewer.py /usr/local/bin
    

How to use ?

You have two ways to use YiViewer

  1. from command line

    yiviewer.py README.md
    
  2. from GUI

    yiviewer.py
    

    File -> Open -> Select Restructed Text File

  3. The previwer has the following shortcuts
    1. Ctrl + r: Regenerate the page
    2. Ctrl + o: Open file
    3. Ctrl + s: Save as a html file.
    4. Ctrl + +: Zoom in
    5. Ctrl + -: Zoom out
    6. Ctrl + 0: Set default zoom size.

To Do List

  1. 上傳到 Github

    這件事我沒做過,我連開 Issue 都不會 XD,看來我真的得好好學一學。(ps: 因為之前都是在學校的 Server 直接走 git with ssh XD。)

  2. 打包程式以順利支持各種平台。

    還蠻重要的,但是我沒有相關經驗,希望二月底前可以做完。(因為我蠻希望可以直接把檔案拖到 dock 的程式執行圖示上就開啟的 XD。)

  3. 在 VIM 上支援即打即顯示。

    目前構想是去讀取 swp file,不知道可不可行,有稍微 parse swp file一下,感覺上是可行的,但是得要知道檔案結束在那個地方。

  4. 支援 pandoc 的自訂格式與 command

    這沒很難,只是很麻煩,目前已經可以從檔名判斷格式,如果真的有需要可以自行從程式碼中修改。而想做的事如下。

    1. 使用者自行定義 input formt,可從 arguments or option 或 GUI (這得要好好想想怎麼設計會比較好)
    2. 可支援使用者自行定義 executing pandoc command

Question

  1. 這隻程式會持續的維護嗎 ?

    會,因為我平常都是用這樣子的模式在寫文件,所以有什麼問題我會自己試著去修改。如果有一天沒有維護了,原因不外乎是我不用這隻程式或懶了 XD。

  2. 為什麼使用 PySide & pandoc ?

    用 pandoc 的原因支援檔案格式的多樣性,我覺得這也是 Mou 的一個可惜之處。另外一個原因是: 兩個都有裝 XD 其實 PySide (QtWebKit) 和 haskell-platform 都不小,但是目前沒有改用別的套件的計畫。

  3. 為什麼不支援 Windows ?

    因為非常懶,而且我身邊也沒有可以測的 Windows 電腦 XD。如果上述的套件在 Windows 底下裝的起來,這隻程式應該能執行 (吧?)。相依的套件在 Windows 上都可以直接安裝就是了,有人要幫我測試我會很感激的 (笑)。

  4. 為什麼不能按兩下執行 ?

    因為我不知道怎麼打包一個 Python Program 在各種平台上 XD (尤其是 Mac OSX XD),有需要的話會加到 To Do List 裡面 XD。

  5. 為什麼不支援多檔開啟 ?

    因為懶 XD 如果真的有需要可以加到 To Do List

Version

  • [01.18.2012] - v0.1 - Written by Yen3

星期三, 11月 23, 2011

Copy and Past words from OS's clipborad in vim.

In actually, it’s a problem for me when I copy and past words to vim from OS's clipboard.

So I write a simple vim script to support switching modes between autoindent and noautoindents and set keymap “\ i”.


function! SwitchAutoIndent()
if &autoindent  
    set noautoindent
else
    set autoindent
endif
endfunction

nmap <LEADER>i :call SwitchAutoIndent()<CR>

I think it can resolve my problem temporary. Maybe I have to use MacVim because it has no the problem. XD


---
Take notes.



godfat mentioned to use past mode when we want to past words. So I founded some information about pastmode from vim wikiJust set command as the following.


nmap <LEADER>p :set invpaste paste?<CR>

星期日, 11月 20, 2011

llvm 2.9 can not generate doxygen files

I  have solved the problem for the whole night XD.

In fact, it is dissuced in llvm mailing list. What you have to do is to patch the file, reconfigure, recompile and finish the problem. (When I find ethe soluion, I feel I am a stupid guy. Why do I find llvm mailing list first ?)

You can download the path for generating doxygen files from Here.

The following is my personal note for the problem.



  1. First, you have to install graphviz

    1. For MacOSX

       brew install graphviz
      

      If you meet some problem with Mac OSX 10.7 Lion, There are some linking library errors (The issuse is dissued in github: homebrew issues 6645). Just type

       cd /usr/X11/lib
       sudo ln -s libpng12.0.dylib libpng12.dylib
      
      
    2. For Fedora/ CentOS

       sudo yum install graphviz -y
      
      
  2. Patch to support llvm 2.9 can generate the doxygen files
    (The issue is dissued in mailing list)

     cp doxygen.patch $HOME/usr/src/llvm-2.9
     cd $HOME/usr/src/llvm-2.9
     patch -p1 < doxygen.patch
    
    
  3. Add the option in configure command and reconfigure, recompile

     ./configure --prefix=$HOME/usr --with-clang=$HOME/usr --enable-debug-symbols=yes --enable-debug-runtime=yes --enable-shared --enable-static --with-pic --enable-pic --with-clang=$HOME/usr  --enable-doxygen
     make -j4   # It's upto your computer
     make install
    
    

星期六, 11月 05, 2011

An Advice for Students in CGUCSIE

Agenda of the Slides


  1. Have Fun

    1. 自我介紹
    2. B94 同學介紹
  2. Do the right thing, do the thing right.

    1. Do the right thing.
    2. Do the thing right.

      1. Time Management
      2. Calculus & Physics
      3. Something about note
  3. Especially for CGUCSIE
  4. Q&A




About me


  1. Wen-Shih Chao a.k.a Yen3
  2. SoC Lab, CGUCSIE & CS Lab, NCTUCSIE
  3. Blog: No titile, no thinking, no meaning
  4. Email:
  5. 光榮事蹟 (XD)

    1. 參加兩次大型比賽未得獎 (with eating, Clara, fire7617, decay and Eighteen)
    2. 普物期末考 3 分被當掉
    3. 資料結構與演算法(下)期末考睡過頭被當掉 (with fire7617 XD)
    4. 國中數學物理都不會但是還是念了博士班 (comment by Yung-Cheng Ma)


About B94 Classmates


  1. eating & Mocho Lin
  2. Po-ya & Lee1126


Do the right thing, do the thing right


  1. Reference: The Last Lecture – Randy Pausch
  2. 重點不在於你把一件事做的多好,而是你是不是把這件事做對了
  3. 尋找你的熱情比什麼都來的更重要,縱使會上花上一輩子。
  4. 大量閱讀,樂於思考,勇敢競爭。 (from Chung-Ping Chung)


Time management


  1. Reference: Time Management – Randy Pausch
  2. Consider Time as money as important.
  3. Don’t use EDF(Earliy-Deadline First) Scheduling. (from Yung-Cheng Ma)
  4. Be good at to-list, Calendar and time Journal


Calculus & Physics


  1. Reference:

    1. 基礎數學 – 白啟光老師 – 交大應數系
    2. 微積分(一) – 白啟光老師 – 交大應數系
    3. 微積分(二) – 白啟光老師 – 交大應數系
  2. 萬物運作都有基本道理,而這些基本道理都藏在數學與物理等基礎學門中。
  3. 以無用為大用
  4. 如何練習思考 ? 從假設與定義出發。 (from Yung-Cheng Ma)

    1. 不要用自己解釋自己。
    2. 了解基本數學邏輯 (每句話都講的合情合理,前後文可以相連)


Something abot note


  1. 電腦無於思考
  2. Outline! Outline! Outline!
  3. 思考結構與目錄
  4. 從假設與定義出發 (from Yung-Cheng Ma)


Especially for CGUCSIE


  1. What is Computer Science? Why not Information Engineering.

    1. Why Science ?
    2. Coder and Programmer (from Guang-Wu Chen)
    3. Not just for Programming.
    4. You have to be good at presentation.
  2. To CGUCSIE students.

    1. 專注於自己所熱情的,要不要念資工 ?
    2. 樂於競爭
    3. 創造適合自己的環境
    4. 建議閱讀

      1. Communications of the ACM
      2. Computing Now
      3. MIT News
      4. Lambda the Ultimate
      5. Wired


Q&A


  1. How to find the agenda ? (If you have interesting in these topic)

      Google: yen3
    
  2. If you have other problems, you could discuss with me in my blog or email.

星期三, 10月 19, 2011

Just for fun

夜深人靜,打開音樂,想著,好久好久沒有寫 blog 了 XD。

來到風城一個多月了,在這裡,把自己當成白紙,重新打造一切,希望這一切能持續下去。很謝謝身邊的人對我的幫助與容忍。

選了應數系大一的基礎數學課,雖然小馬馬覺得練習寫證明要從中學幾何或者是微積分的極限證明練習開始比較重要。不過顯然上了課之後發現,我真的是一無所知的 XD。雖然證明對我來說是一件很痛苦的事,不過證久了還蠻喜歡的。履履想數學證明到半夜,一半是為了趕作業,但是一半是我真的還蠻喜歡思考這樣子的問題的。漸漸能理解所謂的證明的結構性,思考能力的訓練 ? 我也不知道,一切且戰且走。我就開玩笑的對自己說,希望明年我可以去修高等微積分,小馬馬說,這是一個會把全校自認為是數學高手聚集的課,但是對我來說,我只是想要知道,這一切到底可以到什麼地步,我不是高手,但是我希望能體會到其中道理。

在正規語言課程中,我努力學習使用圖形思考證明 (因為到目前為止都是 automata XD),課堂習題不太會寫,但是總是覺得很有趣,與其說為了資格考而準備,不如說我想為了搞懂這一切而認真,可以用數學模型搞懂所謂的計算極限在那裡,感覺是一件很好玩的事。老實說,理解到證明並不恐怖,反正多多練習就是了,雖然目前還是沒有找到人幫我改證明,但是我想我會一直持續玩下去。

老實說,做這一切只是覺得有趣而己。資格考一向不是我所思考的重點 XD。

至於本科 (老實說我也不知道什麼是本科了 XD? 這種東西存在嗎 XD?) 還是致力於 Embedded System Verification 的部分,目前還蠻簡單的,先搞懂整個的過程吧。還有好多好多書可以看,好多事可以做,有空就會聽聽 BBC Learning English,看看 CACM & Wired (Computing Now 是下一個目標 XD)。生活其實簡單,但是還是持續的前進。

臨時寫的,還蠻混亂的。想到再補充哩

---
Just for fun --- Randy Pausch

星期二, 7月 05, 2011

最近

所謂的堅強是面對自己的軟弱,我想這需要不斷的練習(笑)。


---
等告一段落再說 XD。