星期六, 6月 19, 2010

繼續

繼續,需要很大的勇氣,不過我相信我可以。


---
生活啊。

星期四, 6月 17, 2010

買書

這一學期買的書不少,做個記錄

工具或者是學習

  • Compilers: Principles, Techniques, and Tools 2/e
  • Building an Optimizing Compiler - 這本買不到... XD
  • Advanced Compiler Design and Implementation - 是較為適合初學者的
  • Optimizing Compilers for Modern Architectures: A Dependence-based Approach
  • Engineering a Compiler
  • Digital Signal Processing: Principles, Algorithms and Applications 4/e
  • Introduction to Algorithms 3/e
  • Computer Alogirthm 2/e
  • Embedded Linux Primer
  • Pragmatic Version Control Using Git

其他書

  • 全部成為 F - allents 推薦,理科系推理小說
  • 八百萬種死法 - allents 推薦,社會寫實推理小說
  • 微積分的歷史步道 - Josh Ko 推薦,之前已經看了一半
  • 尋找腦中幻影 - Josh Ko 最近提到,也一起訂了回來

Perfume 部分

  • Perfume Second Tour 2009 『直角二等辺三角形TOUR』- 這是演唱會 DVD
  • 不自然なガール - 這是單曲 CD XD

電子書閱讀部分

  • 絕代雙驕
  • 浣花洗劍錄

理論上應該有所遺漏,不過我也懶的想了


---
好多錢 ... Orz

星期二, 6月 15, 2010

Page Rank

不知道什麼時候 Page Rank 變成 3 分了 (2分好多年了 ...) 在不事生產下的狀況還能升還真是 ....


---
記錄

星期三, 6月 09, 2010

睡不著

在這個時間點,睡不著,腦中有無數的想法在衝突,疲累。


---
面對。

星期二, 6月 08, 2010

最近

已經想不起來上次寫作是什麼時候了。

嵐達網的文章也很久沒動了,我知道,太難的寫不出來,簡單的,寫了似乎又沒意義,就一直卡著而讓時間流逝。

學弟妹的事告一段落了(雖然應該說都是學妹的事)。

從 Trimaran 改成 LLVM ,很多事是解決了,但是也有更多問題產生,只能說,自己硬著頭皮上了。

從垃圾變成廢物,感覺似乎不錯的樣子。

還有二十天就要期末報告,現在似乎什麼都沒有。

我不是一個好人,只能說是一個爛人。

語畢,其實,回歸平凡。

不坐以待弊

公佈自己所有的爛行為


---
生活

星期一, 5月 24, 2010

Haskell Learning Source

從 wiki 上移過來,大概會改變寫長文的寫作風格,拆成許多個小篇的來寫。

  • Hayoo, Hoogle - function's type information (include hackageDB's package)
  • hackageDB - package information, we can use cabal command install it.
  • Haskell Cafe – Mailing List. You can google keyword, for example you can use google search like the following
    keyword site:http://www.haskell.org/pipermail/haskell-cafe/

---
持續寫作

中文小說與 Kindle DX

其實 Kindle DX 本身並不支援中文格式,所以如果在不變更任何程式的狀況下,有 pdf 可以選擇,如果想選擇破解的話,可以安裝 Unicode 字型,不過英文字體連帶閱讀起來感覺不好。我以下說說我的做法

目前中文小說網站有兩個比較有名

後者網站我還沒有試過,不過好讀網站的 pdb file 在 Mac OSX 上讓我很頭痛,仔細看看大家都有這個困擾。我簡述步驟如下。
  1. 利用網路上高手所提供的方法先把 pdb 轉成純文字./a.out xxx.pdb > xxx.txt
  2. 得到 xxx.txt 之後,編碼是 Big5 的 Windows DOS file,這時候可以利用內建的 Mac OSX 文字編輯器,編碼時選擇這個打開,之後另存新檔成 utf8 即可(有想過要用 iconv ,這樣子可以寫成一個 script ,但是我不知道相對應的編碼名稱為何 ... Orz)使用iconv -f big5-2003 -t utf8 input.txt > output.txt即可,就可以把 Big5 的檔案轉成 utf8,如果是使用第一個程式製作出來的文字檔在轉換時會出錯,是不用理會的,因為那是第一隻程式所產生的一些資訊。
  3. 得到 txt 之後基本上想做什麼事都可以,Kindle DX 對於 pdf 的支援度不高,而我大部分只是線性閱讀,所以丟到 calibre 中轉成 pdf 即可,行高記得選擇 20 pt ,output 可針對 Kindle DX 最佳化。
  4. 丟到 Kindle DX 上即可閱讀

輸出後在 Kindle DX 上成果大概如下 (對不起,我不會取景...Orz)


預設輸出是黑體,有想過要用 LaTeX 排版,不過這可能要花很多功夫,所以暫時交給 calibre 來做這些事,而我覺得這樣子的輸出結果我可以接受啦。至少字夠大,閱讀起來不太吃力。

---
簡單記錄一下。

Compiler Research: The Next 50 Years

這篇是寫在嵐達網上,在自己的 blog 上做個備份。本文不開放回覆,統一至這篇回覆(寫這麼差...Orz)

Compiler Research: The Next 50 Years
Communication of the ACM - Febuary 2009

這篇是一篇很有趣的文章,在 CACM 上的文章都是接近科普類型,這篇也不例外,所以我花了幾天看懂這篇文章,又著實想了好幾天。

其實在這個領域中,要預測下一個十年比預測下一個五十年容易的多,那麼他覺得下一個 50 年的問題是什麼 ? 簡單的來說就是。 Program Optimization (Mulit-core, Architecture-Specific ... etc) 與 Security & Robust

就 parallel program 來說,multi-core 是一個趨勢(因為 Moore's Law 逼得大家努力的製作 multi-core CPU XD),在過去的三十年來,Compiler 對於 parallel 並沒有一個泛用的方案(General Solution),不管怎麼操作,lock, race condition 都是避免不了的問題,很多人嘗試要提出方案來解決,不過到目前為止沒有成功。

就 Security 來說,現在的 Compiler 勢必得去面對如何讓一個更複雜更為大型的程式保持正確(Corectess)且穩固(Robustic),要用到很多手段報分析,讓一個程式在各個方面都 保持穩定。

回到 parallel 與 Compiler 的關係來說,用一個小故事來開個頭。有一天,我的指導老師問我,在 Embedded System 上,大部分的 CPU 是沒有 Floating Point Unit ,可是勢必得要去處理很多相關的運算,請問是怎麼解決的 ? 我想了很久想不出來,他說,其實解決不了(我被框了 ... Orz),但是如果切割成許多個領域來解決是可以的,以 FFT 來說,在硬體上,只需要數個加法器與乘法器就可以搞定,以某個影像編碼來說,雖然每次都會用到 sin, cos,但是實際上來說,會轉的角度只有九個,所以查表即可解決。

回到正題,parallel programming 對於 Compiler 來說,如果切割成許多個領域來分別進行最佳化,其實到目前為止算是有相當的成果的, MIT 的 StreamIt Programming Langauge & Raw Processor (for streaming),Google 的 Map Reduce (從 Functional Programming 來的 XD),切割開來的時候,每個領域的平行其實都可以用巧妙的方式來解決,但是組在一起卻沒這麼容易。所以這篇文章有嘗試建議一些方法,例如說,撰寫高效能 的平行演算法並加以封裝,而寫程式的人就使用這些封裝的好的演算法來組合(BLAST ?),這大概是目前可以做到的,或者是你可以想出一個全新的方法來解決現在的問題。綜合以上,這篇文章寫了很有趣的話,誰可以在平行上做出突破就可以引領 下一個研究年代。

而針對不同的平台來說,現在寫程式並比較不會這麼局限在單一架構上,你有可能寫程式寫在手機上,一張開發版上,自己的 CPU 上,針對不同的平台要做最佳化,其實是有一定的困難度的,而這也是 Compiler 下一個很重要的事。如果以 Embedded System 來說,多個晶片要協同運作是一個很常見的事,而這件事都需要很多方面來配合 (OS, Programming Langauge, Compiler ...etc)。這也是一個值得著力的點。

要寫出一個安全且穩固的程式是一件相當困難的事,可以就程式語言層面設計出一個更為安全的程式語言,教育程式員怎麼寫,或者是利用 Compiler 去做一些事,program analysis 就 wiki 來說有 Program Optimization 與 Program Correctness ,前者我不清楚,不過現在已經有很多現成工具可以用了,硬體設計上,用以分析出一個電路的 critical path,軟體設計上用以分析耗掉多少記憶體,那邊佔用的時間最多之類的。但是 Program Corectness 來說,我覺得是很重要,但是並不是我所了解的領域(這讓我想到這次 FLOLAC 10 的 Frama-C),要如何保證程式在每個層面皆能正確運作,我相信有許多的議題需要討論。Compiler 在過去這麼多年來越來越重要有一個原因是因為 high-level programming language 受到了廣泛的使用,然而分析這些語言會不會產生更多的問題呢 ? (這個問題是個人猜測)

最後這篇文章提到一些有趣的建議,不外乎是針對 Compiler 設計一連串的專門課程啦,建立一個 Compiler 協會之類的,老實說,我覺得每個領域都會想這樣子建議吧 XD。所以我這個部分就沒有很認真的看了 XD。

題外話: 我的指導老師跟我說,這篇文章提到許多論點是許多傳統做 Compiler 的人不願意接受的,我看起來是覺得很不錯啊,至少我覺得蠻有趣的,他舉了一個例子,你要一個練了許多年武功的人不用這個武功來解決問題是很困難的。老實說 我也不知道是什麼,或許聽了 CHTPC 會有一些感覺吧 ... ?

---
為什麼我覺得我怎麼寫都像寫廢話一樣 ... Orz

星期三, 5月 12, 2010

FLOLAC 10 - 邏輯、語言與計算 暑期研習營

2010 Formosan Summer School on Logic, Language, and Computation (FLOLAC '10) (課程名稱在左邊,有時候我都會找不到 XD)

基本上,雖然這是一個每年都會告急的活動,大概是標題看起來不吸引人吧 XD 不過誠如嵐達網上所說的

嵐達網是一個為程式語言同好設置的中文社群網站。程式語言學原本即是計算科學之中有悠久傳統的重要類別。近年來,面對諸如並行處理等日益複雜的程式設計挑戰,不論學界或業界都再度對程式語言學感到興趣。

而 FLOLAC 10 就是一個這樣子的積極的嘗試。

我大一學微積分與普物的時候,我時常問我自己一個問題,到底學這些有什麼用呢 ? 其實莊子說了,以無用為大用,並不是學習的每件事物有效用能去學,我們必需去注視,他所能對我們產生質的影響。課程內容真的值得一聽(雖然我在三年前曾經去聽過,聽不太懂 XDXD),對我而言,參加這個課程是可以重新省思日常生活所用的一切。這三個東西對於現在的我而言,每一天都在使用,但是我卻每一天都不了解,我是基於這樣子的理由在參加的。

課程會不會很可怕,應該會吧,不過就參加吧,如果可以用報名費換到一個新的視野,老實說我覺得是非常值得的。我還記得我第一次參加的時候,沒有一個課程名稱是看的懂的 XDXD 現在好一點,只有一個看的懂 XDXDXD 有時候,不太在乎看不看的懂,反正最後去了,了解了就好,不了解了,也嘗試從中抓到一點東西。這個過程對我而言是相當有趣的。

為什麼不說課程在教什麼,第一,我不會,第二,看到這邊的人應該會自己看吧 (我是非常這樣子自以為的 XD),所以有興趣的人不妨試試 :)


---
失敗的廣告文 XD。

星期二, 5月 11, 2010

八百萬種死法

Eight Million ways to die.

紐約是一個有八百萬人的城市,如果有八百萬個故事,理所當然會有他媽的八百萬種死法。

我並不打算描述故事本身的內容有什麼,只是想提出一些有趣的事。一個小說的故事如果接近真實,會比較少人看的,因為冷硬無趣,我在 Perfume 的文章就說過,其實大部分的人生活是很平靜的,沒有什麼特殊之處,我們是不可能硬為自己製造出特殊的故事,大部分的人生活就是如此。而這本小說就是這樣子的小說,真實人生其實充滿了缺陷,然而我們在自己認為的錯誤中不斷的前進。

另外一種常見的小說寫法是,主角相當的不錯,不然就是你不太可能變成那種人,個性上雖然說不上完美,但是也算是非常不錯的,而這種小說的故事通常會比較精采,但是我看完這種小說通常忘了裡面在說什麼 XD。因為我的感官已經麻木了。有的人看小說為的是體驗另外一種生活,我看小說則是希望透過另外一個方式更為接近現實。

一百個華麗故事描述對於一個平靜冷酷的現實述寫。我想,我看到的就是這樣子的一個故事。

還是來寫一些有關推理小說的事好了。其實這本書不算是本格推理(就是你認為該有的元素都要有,有福爾摩斯就要有華生,犯人一定列舉過的,不能有不合理之處,線索不能突然跳出來之類的),推理小說其實後來出了相當多的說法,不過我一點都不在乎,我只在乎,一個小說的故事是不能描述一個符合現實的社會。日本非本格推理的小說我覺得我看過最有印象的大概是 宮部美幸 的 "模仿犯",這兩種完全走向不同的方向,當然,我覺得模仿犯的故事性還是強烈了些。以八百萬種死法來看,我覺得,如果一本書可以用平淡的描述完四百頁,而肯閱讀的狀況下,是相當能夠說服人的。我的文字不行,充滿了組織般的華麗(簡單的來說,就是空洞)


---
結果變成亂寫 XD。

星期一, 5月 10, 2010

寫作

老實說,我一點都不覺得我會寫作,也一點都不覺得我善用文字編織華麗,寫來寫去都是這些東西,這大概是這近一年來發文次數變少的原因,寫個學習心得是 ok 的,寫其他的東西似乎就是如此了。也某個程度證明,我的心境毫無長進,甚至後退了。

簡單的來說,認清現實並且前進,認份和突破是不同的事,先認份的把事情做好,再尋求有所突破,我不知道是不是有所遺漏,不過當下的我只能這樣子做了。


---
認份與突破

星期四, 5月 06, 2010

Precision-Timed Machine

Goal: 大部分的 Hard-real time system define deadline by worest-case exeuction time (WCET) 而現在大部分的 Computer Architecutre 是針對 averange-case 在做改善,所以 deadline time 可能不會改變,甚至變的更糟,於是作者嘗試在 hard-real time 提出一個新的架構讓 WCET 不會這麼糟,採用了 pipeline multi-thread interleaved ,也改進了對於 memory 存取的方式


---
其實看完目的,這篇大概就知道要幹麻了。

星期三, 5月 05, 2010

最近

希望自己的生活可以過的正常一點。

其實有些事也不知道怎麼說,好不容易決定自己要走 Compiler 相關研究了,如果細分的話,我會把 Compiler 分成 From-end, IR optimization, Back-end,但是其實對 Programming Language 的研究真的了解嗎,其實我一無所知 (Josh Ko 說是帶我參觀,不過我懷疑我自己是不是太混了 ...),決定還是該好好的專心研究吧,針對 VLIW Compiler ,邊做邊想 Functional Programming 是否能用 (對,我就是那個有了槌子就什麼都想敲的人 XD),只是邊做邊想會不會很對不起 scm 呢 ? 唉,真是三心二意的娘們啊 ...

IR optimization 本身會拆成數個 phase ,每一個 phase Input/ Ouput 是一樣的,只是重新做一些更動,以 basic block 來分,分為 local shceduing & global scheduling ,而 Instruction Scheduling & Register Allocaiton 是互相問題,通常做完一次之後,要再 rescheduling 一次(其實幾次都可以,只是看有沒有必要性),而在這個領域上可以用的工具大概就是 Graph Theory 與 組合最佳化。其實從這個過程中,認清了自己什麼都不會,沒有辦法深入去解決一個問題是我最大的問題。

Trimaran 的 Elcor 是一個針對 VLIW 的 Compiler ,Target Architecture 是 HPL-PD ,為了學會怎麼改它,竟然因此學會基本的 gdb 與 gdb script (Python Binding 研究中),不過到現在還是不會改,只能說 C 與 C++ 混合的 code ,再加一堆 global variable,實在是難以定義,不過大概有個頭緒了。

Precision-Timed Machine ,不如說是一個 Computer Architecture ,聚集各方大全(就是很多 paper 啦),嘗試在 hard real-time embedded system 做,consider time as a function to predict and repeat. 使用的技巧是 deadline instruction ,但是我抓不到這篇 paper 想要解決什麼問題或目的,因為感覺上我目前所看到的點,利用現有系統就可以解決了,那麼為什麼要造這一個新的 Architecture ,答案仍在尋找中。

嵐達網的文章真的是應該要好好寫,logan 真的寫的很好,我真的覺得是我不夠用心,但是最近竟然覺得自己的英文閱讀能力下降了 (明明讀的比以前多很多啊,怎麼會下降),不要為自己找理由。


---
記錄自己最近。

星期三, 4月 28, 2010

gdb save breakpoints

define bsave
    shell rm -f brestore.txt
    set logging file brestore.txt
    set logging on
    info break
    set logging off
    # reformat on-the-fly to a valid gdb command file
    shell perl -n -e 'print "break $1\n" if /^\d+.+?(\S+)$/g' brestore.txt > bps.gdb 
end

其實這是從網路上來的,不過這個 code 在 cgdb, gdbtui 上似乎不可行,看懂 code 之後(大概只有 Perl 那行比較難懂 XD),其實發現蠻暴力的,gdb 在 v7 之後支援 Python Scirpt binding ,是該來研究研究,今天也是試著用很破爛的方法達成 gdb 自動環境設定的方法就是了。大概這幾天持續嘗試之後再說。

gdb note's wiki


---
最近常備份 XD。

星期二, 4月 27, 2010

隨想

在城市中看不到程式,卻在程式中看到城市。


---
隨想。

星期一, 4月 26, 2010

cgdbrc

單純備個份,參考自網路上的,自己單純加了兩行,除非有必要,不然我應該是不會用 gdb 原生 XD (可能連 qemu 例外之類的 XD)。

以下放在 ~/.cgdb/cgdbrc

set arrowstyle=highlight
set autosourcereload
set tabstop=4
set winsplit=top_big
set showtgdbcommands
map <F2> :set<SPACE>winsplit=top_big<CR>
map <F3> :set<SPACE>winsplit=bottom_big<CR>
hi Statement cterm=bold ctermfg=6
hi PreProc cterm=bold ctermfg=4
hi IncSearch ctermfg=2
hi LineHighlight cterm=bold ctermfg=3 ctermbg=4

這樣子按 F2 或 F3 時即可選擇要放大上面視窗,還是放大下面視窗


---

星期四, 4月 22, 2010

Try

Try to explain something, but It's fail.


---
question or problem.

星期日, 4月 18, 2010

Perfume 與偶像

本篇同時在 love the Perfume World 與 No title, no thinking, no meaning 發表。

這個主題想寫很久了,但是寫出來只有一點點 XD

有一天,我和 allxxxxxts 在閒聊,他說有些 Perfume 在 A-Chan 唱歌的時候會一直喊 A~Chan,守住所謂的舊時代的榮光。但是 A~Chan 並不喜歡這樣子,我還蠻好奇的問了為什麼 XD?

因為這樣子 A~Chan 唱歌會不專心 XD

這答案真是出乎意外的簡單 XD,但是其實我對偶像開始思考是有一次我在李玟簽唱會說我的歌迷們,而張懸說聽眾開始想的。到底人們是怎麼看待偶像這回事的 ? 其實答案出乎意外的簡單,大概就跟我們這些寫 blog 的人一樣,寫自己想寫的,我們都很明白的知道寫 blog 的人不可能透露自己全部的事,但是確實也沒有必要將自己完全包裝 (這讓我想到某個日本團體 XXXXX XD),雖然忘了那個哲學家的思維是,沒有全部說出來就是謊謊,然後其實在事實上,我們對於大部分的人是可以接受的。

每個人在他的位置上就做好該位置的事,Perfume 大概就是我覺得很好的例子,可能 Perfume 是現在日本的一線偶像,她們是保持了部分真實在這個世界就可以了,其實我並不是很在乎她們跟我們的距離要多平民 XD 素人偶像其實就很平民,因為本來就從平民出身的 XD。

與其說是追星偶像,倒不如說,我們試著相信這樣子的人。


---
下次來討論 A~Chan, Nocchi, Yuka 三派的現象 XD

星期五, 4月 16, 2010

紀念不事生產的日子

Slide: Programming Tempratory Integrated Distributed Embedded System
僅紀念我這一兩個月不事生產的日子。

在 ycma 的指導下,我終於破破爛爛的讀完這篇 paper 了(還是是想完 XD?) 簡單的來說,就是學習如何建立 programming model ,學習怎麼樣思考問題,建立模型及描述進而解決問題。以後會做相關 paper 的問題嗎? 我想不會,我單純相信,這篇只是單純訓練而己。在這念這篇 paper 的過程中也學了 Haskell ,也決定了下個要念的主題 --- Precision-Time Machine

所有的事情也該繼續前進而不要再裝死了。該寫的 lambdawn, Perfume, Haskell 是該繼續進行了。


---
希望能繼續過著開心的生活。

星期一, 3月 29, 2010

學習雜想

ycma 要我推導的東西,我終於推出一點頭緒來,不過不知道是不是他要的。從這個中間體會到慢即是快,現在竟然非常習慣在紙上書寫所有的想法,以前總是要盡量的把所有東西電子化,其實現在也可以,寫完掃起來就好了,也不是一件很麻煩的事 XD。

現在思考比較不會想要用電腦,習慣靜靜的想,想的過程中也不會想用電腦,很大的原因是,在那個當下,用電腦並不會幫助我思考,所以我可以專心在紙筆上,可能是體會到了一點,我正在想我想要解決的問題,所以脫離是有可能的。也因為這個樣子,希望自己的桌子簡單一些好吧。

這個禮拜一忙起來是要人命,花了一天半的時間在搞 onlinejudge system ,寫程式還是適合集中時間,不過集中時間的同時,每天空兩三個小時下來想問題是必要的。對現在的我而言,用 Python 操作 List 總是會覺得用 Haskell 來操作會來的更好玩些。用 List 會想到我第一次上 Database 時,jdwei 教 Relational Algebra,重新定義了所有 symbol 與其操作方式,每個產生都是一個 table,就可以用這套 Algebra 來做展開或化簡,這是我第一次覺得 Algebra 很好用,Boolean Algebra 沒有辦法給我這樣子的感覺大概是操作的東西比較小,讓我會直覺認為就是如此。而在 Haskell 的 List 操作也讓我有相同的感覺,今天才想到,稍微延伸一下,如果我們把一個 type 及其操作視為一個 Algebra,沒有 side effect 的影響下,這應該是很容易成立的(如果不要轉型的話 XD),只是對於 function 而言,我們可能會得到一個 fun:: a -> b 的映射,這恐怕就要另外再想想了,用我目前的破爛數學大概是想不到什麼東西 XDXD。寫到這裡,突然讓我想到 Josh Ko 提及的一本書 "The Algebra of Programming",不知道要裡面寫了什麼? 算哩,繼續學習吧,就不要想太多了。


---
相當有趣。