星期二, 9月 09, 2008

魔幻奇緣

簡介

常聽過胡迪尼,但是不知道是誰。看wiki也覺得這個人頗有趣的。

---
應該從內心來關心,而不是從表面。

星期四, 9月 04, 2008

國境之南

國境之南

詞:嚴云農

如果海會說話 如果風愛上砂
如果 有些想念遺忘在漫長的長假
我會聆聽浪花 讓風吹過頭髮
任記憶裡的愛情在時間潮汐裡喧嘩

非得等春天遠了夏天才近了
我是在回首時終於懂得(也許天氣永遠會那麼熱)
當陽光再次回到那 飄著雨的國境之南
我會試著把那一年的故事 再接下去說完

當陽光再次離開那 太晴朗的國境之南
妳會不會把妳曾帶走的愛 在告別前用微笑全歸還

海很藍 星光燦爛 我仍空著我的臂彎
天很寬 在我獨自唱歌的夜晚
請原諒我的愛 訴說的太緩慢

星期二, 9月 02, 2008

認真

認真的玩一場吧。

---
人生

想法

人是一種以形而上的思考和形而下的慾望結合。

若說要懂了什麼,恐怕只能說什麼都不懂,但是學會面對自我想法時,往往帶著一種嘲笑,拆開成赤裸裸的慾望時,其實人與人之間沒什麼不同。

堂而皇之的華麗遮掩了原始慾望的單純,拆開包裝之後剩下的又是什麼呢?但不幸的是,人長越大,自已為自己覆蓋的一層包裝,張愛玲所說的荒涼於心中徘徊不散。

一個故事就此開始。

---

星期一, 9月 01, 2008

最近

最近,其實,生活很平靜,今天才去看了海角七號,有很多想法,等過一陣子再寫。

禮拜六日,為了不要讓自己太無聊,繼續寫程式,把cllee交待的新工作做的差不多了,明天要meeting,希望能順利一點,明天早上再把最後一個bug修掉即可。閒暇時利用一些時間在看boost,覺得有趣的東西都是functional programming的東西,所以我還是回來看FP好了。

還有三個禮拜複賽截止,還有二個禮拜就開學,不用打卡,不用寫工作日誌的第一天,其實很棒,但生理時鐘早就被調成打卡的作息了,早上八點醒來,下午五點吃飯,或許就這樣子發現我很容易被某件事制約?

也一直想寫一些黑暗的東西,但是心情太平靜,反而寫不出來? 也好,寫些平淡的東西也不錯。

---
閒聊文

星期六, 8月 30, 2008

小試一下

第一次裝boost,雖然知道很久,但是一直沒時間試,今天寫了簡單到爆的程式碼

#include <boost/array.hpp>
#include <iostream>
#include <algorithm>
int main(){
boost::array<int, 10> a;
for(unsigned int i=0;i<a.size();i++) a[i] = i;
std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
輸入指令如下
g++ -I /usr/local/include/boost-1_36/ test.cpp
可獲得如下結果
0 1 2 3 4 5 6 7 8 9 

---
我真無聊XD

星期四, 8月 28, 2008

Fink Project

Fink Project 是一個可以讓你以套件管理形式來管理OpenSource的安裝套件,整個安裝說明在此在dkg解壓縮之後,安裝完,記得把"FinkComander" 移入應用程式中,會有一個非常像ubuntu的套件管理程式(其實安裝指令也有部分雷同,估計兩者有血緣關係XD),可以試試,比起MacPorts而言,有更多選擇。

---
學習。

旅行

暫定這個時候,09/20複賽截止,還有很多事可以做。

---
準備與期待

星期二, 8月 26, 2008

專題

有一個段落,比較不會那麼擔心,有一種放鬆的感覺,雖然還有很多事要做,但是是安心了些。

---
平衡

星期一, 8月 25, 2008

Sixpence None The Richer - Within A Room Somewhere

I breathe the mist
Floating about the stars
I can caress
With velvet hands
I breathe the mist
Floating within, without this pen
This pen between my fingers

Messiah
I know you are there
Within, without me
Holding me
Messiah
I know you are there
Catching, carrying
This beautiful mess

Escape the pain
Within a room somewhere
Escape the pain
So deep inside the soul
I have no key
No map to find

星期日, 8月 24, 2008

裝死

這是一個連裝死阿宅都會被打擾變成嚇死阿宅的年代~

---
下次要記得啊...Orz

真實與性

今天下午花了時間去看了 失樂園 這部電影,不過我沒有看完我就關掉了,因為我的心底很沉重。

我不懂性,因為我不知道。

看這部電影時,導演用冷色調的藍色表示夜景,不斷的切斷內心與真實的場景,其實,當人深陷其中時,是愛情造就了性還是性造就了愛情,已經分不清楚了,一再的沉倫,當男主角說我們一起下地獄時,何謂救贖呢? 在這部的電影,冷色調的夜景,似乎對我而言是一個失恆的世界

閱讀的小說,多多少少都會有少則數行,多則成頁的有關性的描述,有的表達,只是為了一種情感的抒發,有的想要藉由性表達某一些觀點,更有者只是為了讓書更有看頭,等到人漸漸了解是怎麼一回事之後,突然有個感想

人長越大不是祕密越少,而是越無法承認自己真實的內心,或許真實的內心參雜慾望時,越發難以了解真實想法。人之所以複雜,是無法面對真實的自我,就有如日劇白夜行的最後警官所說,她已經無法說出實話了。

看著很多發生的事,其實我還蠻喜好閱讀D51的小說,但總是有一個心中的疑問,為什麼每篇小說都脫離不了夜店?

當人陷入一個巨大而被吞噬的寂寞時,性與真實,謊言與否已不重要,唯一的是抓住當下的快樂,而何謂解放,其實已經失焦。

這個社會存在著多種角度的社會,只是剛好我選擇了一個最簡單又幸福生活,但是豈又能知道進入這個旋渦時,又能剩下多少真實的自我,不哭泣面對明天的太陽。

唯一能做的,快樂的過生活。

---
有感

星期日, 8月 17, 2008

如何用Haskell寫出笨拙的99乘法表

目前想法如下。

mult_line x = map (x*) [1..9]
mult_table x = map mult_line [1..x]

之後,我在ghci中呼叫
*Main> mult_table 9
[[1,2,3,4,5,6,7,8,9],[2,4,6,8,10,12,14,16,18],[3,6,9,12,15,18,21,24,27],[4,8,12,16,20,24,28,32,36],[5,10,15,20,25,30,35,40,45],[6,12,18,24,30,36,42,48,54],[7,14,21,28,35,42,49,56,63],[8,16,24,32,40,48,56,64,72],[9,18,27,36,45,54,63,72,81]]

星期六, 8月 16, 2008

雞湯哲學

yen3媽: 兒子,今天喝雞湯好嗎?
yen3: 嗯嗯
yen3媽: 有一塊雞肉如何?
yen3: 嗯
yen3媽: 二塊雞肉?
yen3: 嗯
yen3媽: 三塊雞肉?
yen3: 我沒辦法吃這麼多...
yen3媽: 那三塊半?
yen3: ...

---
母親總是富有哲理XD

返家

已經不記得上次是什麼時候返家,這次回來透露著陌生的熟悉感,家人聚在一起的感覺非常美好,從美國回來的姊姊送與我和efang衣服各一件,也拿到了Introduction to Funcitonal Programming 2/e,雖然上面沒有簽名XD,還是開心的想要大叫XD

---
我回家了。

星期四, 8月 14, 2008

信仰

我並不是一個無神論者,我是一個普通人,我相信很多事。本來還想寫很多很多事,先從這篇寫起吧。

昨日看"旅美小簡",陳之藩先生在1955年29歲時完成了這本書,,其實人的核心概念並沒有改變多少,但是我們卻了花了更多時間來證明真理的價值。看著他的大學時代與胡適的信,邊看邊感覺汗顏,在大學時代,能對這個世界抱有遠見及書寫社會,讓身為大學生的我,愧對大學生的名稱。

現在不是自我檢討的時候,看旅美小簡可以理解一些事。科學家的信仰是所追求的真理,及其這個存在理性的社會。不是不相信宗教,而是超越宗教之上,還有更值得我們做的事。我不是一個科學家,但是我的信仰是科學。

說一點輕鬆的,不知道美國那個有名的研究機構,對於一群大學生做了問卷調查,其中有一群人立志成為有錢人,有一群人立志把事做好。過了很久之後再做一次問卷調查,發現立志把事做好變為錢人的比例比立志成為有人錢的人比例更高。不過我可以預估到我以後會很窮...XD

從事學習或研究工作最有趣,也是我最喜歡的一點,透過自己的力量,用一個自己所能理解的角度,多接近世界一些。

---
或許有一天我會需要別人救濟XD?

星期三, 8月 13, 2008

感嘆

Thinking in Java 4/e 中文版現身了,但是The Java Programming Language 4/e 中文版卻不知在何處...

---
Orz...

星期二, 8月 12, 2008

有關物件導向的胡言亂語

老實說我也不知道我要下什麼標題比較好XD

昨天閒逛時發現,今年人次快要接近一萬了,想一想也沒什麼好高興的,從Google點進來的都是去年的文章居多XD 可以說今年到現在為止是過的比較懶散的生活,不過我想,寫blog還是一件相當有趣的事。

暑假過一個多月了,每天都在寫程式中與閱讀渡過,可謂是過的相當充實,目前只有滿心希望能夠把眼前這個專題完成。並不是每一次都可以遇到很好的合作對象的。

最近也沒什麼空在閱讀小說上,以前幾個禮拜看的"殺人本能"就覺得不甚讓人覺得緊張,還是戰慄遊戲比較提升我的腎上線素,應該是說,我最近的興趣是閱讀重構之類的書,書的清單如下。

  • 物件導向設計模式: 可再利用物件導向軟體之要素(Design Patterns)
  • Object-Oriented Analysis and Design with Applications 2/e (這本尚末閱讀)
  • 重構 - 改善即有的程式設計(Refactoring - Improving The Design of Existing Code)
  • 重構 - 向範式前進(Refactoring to Patterns)
  • 敏捷軟體開發 - 原則、樣式及實務(Agile Software Development: Principles, Patterns, and Practices)

其實看了好幾次Design Patterns,我從來沒有記得裡面的經典patterns,這種書本來就是看完就忘,如果為了pattern而pattern,很容易陷入一般教科書所謂的pattern happy,有幾本書提到使用XP(eXtreme Progarmming)來使用OO,對我而言,從這邊開始去了解整個思維是不錯的,雖然好像不是那麼多人注意就是了,在前陣子 "Refactoring to Patterns" 在天瓏暢銷排行榜上,我們只能保佑,不要有一堆人買回去供養XD。

以自己大膽的猜測而言,其實學習 OO 沒有入口,因為原則非常簡單,OOP 是一門藝術,但是並不科學,因為他並不像數學一樣,經過一連串的演算即可獲得結果。而是得靠一個一個unit testing去確認程式的正確性。其實進入這個世界,就有如木匠帶領學徒一樣,技巧只有幾樣,但是不斷的精練自己的能力,方能寫出有如藝術品的程式。雖然擁護者會說,OO 是最接近人類思考的方式,並輔以相當的科學佐證。

物件導向最重要概念為class hierarchy,利用class hierarchy方有可能把物件導向用到淋漓盡致,但是問題來了,要用多少技巧來包裝? 過或不及都會造成整隻程式的有趣現象。書上所提及的所有物件導向技術都是用以改善一個程式的class hierarchy,抓住這個重點再來閱讀,我的心思越辯越明。

此外再提及一個在學校有趣現象,大家都會說,物件導向很重要,要盡快學會,但是卻看不到幾人能夠善加利用而教授他人,或許過幾年我也會聽到XP很重要,programming的發展長時間在配合業界,而非配合科學。

何謂Computer Science,推薦ptt CSSE版上瞧瞧高手討論。也是不錯

---
果真是胡言亂語

星期六, 8月 09, 2008

感謝

不知道要下什麼標題才好

Clara's blog article about birthday

朋友提及才發現,升大四的時候,好像很少有人有過生日的習慣了,蠻感謝同組組員的,應該是說,我不是一個擅長表達的人,一直不知道怎麼說自己的感謝之情。還是很感謝eating, Clara, fire7617。

想想我們這組感情也不錯,始終都是自己白目了些。謝謝大家。

---
謝天

Josh Ko 與 scm


昨天得到甚為有趣的照片,為Josh Ko 和 scm 的合照,兩個人亦師亦友,不錯不錯

順便幫Josh Ko徵煮飯婆女友,需要長期飯碗熱情專注的人,可以出門左轉,歡迎歡迎(記得給介紹費)

---
紀念一下

星期二, 8月 05, 2008

生日

其實,每一年都會思考,我是否有足夠的資格過生日...

不知道從什麼時候開始,我覺得我少不更事的年紀太長,認為自己不甚好,從理所當然,到覺得自己應貢獻社會。在更多時候,覺得自己應該要會某些事,卻總是一事無成。雖有Josh鼎力相助,發現自己興趣為何,從imperative programming 跳到 functional programming 學習(我曾自嘲,這跟我打了九年的注音不打從嘸蝦米的基本學起其實差不多(笑))。不知為何想起國文課本所提及的一句話。

真實偉大的樸實無華

少不更事看書時,只是為了炫耀自己會了什麼,並不是一個可取的想法,現在看書的時候,只是單純想要了解一件事,到現在我不認為我理解了這句話,但是我所想,持續的努力,或許可以了解這件事。雖然一事無成,但努力前進,總有一天會找到答案,笨笨的前進,總可以讓一群人了解你笨笨的前進為何。

我曾跟Josh聊過一連串的事,才覺得自己總是浪費了一堆時間,不過我總是不後悔,因為因此我才會更珍惜當下與未來。就某個程度而言,有著一群我很感謝的朋友,我可以安靜的過生活,雖然實力不足,但更應該努力幫忙身邊的人。今年並不想和往年一樣列了一堆人名,大家不一定認識,且少列誰我都會覺得抱歉。我想說的是

希望,身邊的大家都活的平安快樂。

---
謝謝大家,今年是一個相當愉快的回憶。

星期一, 8月 04, 2008

列印

第一次買碳粉,才知道原來很貴,2650...Orz

人生因有夢想而為大,所以我正在K我印下來的兩份文件 "Introduction to lambda Calculus" 和 "Yet Another Haskell Tutorial"。

我的夢想很簡單,我想知道如何寫好程式,然後帶領一個團隊把程式寫好。我的兒時夢想很簡單,我想要寫出一個可以讓很多很多人用的好程式,我一直都因為這個原因前進。我不是一個有能力的人,我更不是聰明的人,但是我相信Randy Pausch說的兩句話

如果你認真過生活,那麼你的人生自然會帶給你答案
阻擋你的夢想必有其原因,而這道牆是讓你展示你有多麼想達成夢想。

其實在一兩個月前就知道有關Randy Pausch教授的事,但是腦中一直在思考非常多事,我想我有非常多的事想說,而這篇,只是一個開始


---
認真過生活,人生自然會帶給你答案。

星期日, 7月 27, 2008

Haskell Learning Note(2)

欠稿很大,預估要寫到folder後才能停一下。

環境
建議是用ghc(The Glasgow Haskell Compiler),大部分的環境都有提供binary,直接安裝即可,而ghci是一個互動介面,較為常用指令如下。

  • :q 離開ghci
  • :l xd.hs 載入某個module(Haskell副檔名為.hs)
  • :r 重新載入module
  • :e 編輯所載入的module的文字檔(我在mac上,預設是用vim開啟)

簡單的開始
如果撰寫了一個function,可以使用:t 來看其形別要求,舉個例子

Prelude> :t sum . map read . words
sum . map read . words :: (Read a, Num a) => String -> a
剛開始學習,學會看type是一件非常重要的事。然而,就此打住,想先講講一些別的東西

Just Function
在Haskell中最小的組成單位是function,想要表達一堆資料,可以用list(不知道對不對,不過倒是知道list沒有這麼簡單),一個function必有其input 和 output,然而,我學習的第一個問題,怎麼樣得知input和output的要求為何,如果跟C++ STL一樣,use type as an argument,必有其限制,所以:t非常的重要(因為就是拿來看型別要求),在Haskell裡,有著非常神奇的type system,有好幾次我問Josh,為什麼會如此時,卻超出我的範圍,以剛剛說的例子而言

Prelude> :t words
words :: String -> [String]
(yen3註:一個String為input,產生一個為String的List)

Prelude> :t read
read :: (Read a) => String -> a
(yen3註: 一個String為input,產生一個型別為a符合Read的要求)

Prelude> :t map
map :: (a -> b) -> [a] -> [b]
(yen3註: map是一個神奇的function,基本原理就是,input為一個list,output也是一個list,但是map會套用一個function,將list of a轉換到list of b,簡單的來說,就是對每個元素做同一個動作)

Prelude> :t sum
sum :: (Num a) => [a] -> a
(yen3註: input 為一個list,輸出後型別為a符合Num的要求)
接著再回來看看原來的例子
Prelude> :t sum . map read . words
sum . map read . words :: (Read a, Num a) => String -> a
(yen3註: 變的很明顯,輸入一個字串,而輸出一個型別為a符合 Read 和 Num,全部串起來做一次就會變成...)

Prelude> sum . map read . words $ "123 456"
579
(yen3註:把字串根據空白分開成為個一list,然後每個元素被讀取成某一個型別之後,sum把每個元素做一求和的動作。)
其實這一行沒有解釋的很清楚,何謂Read要求 ? 還有,轉型的時候為什麼要轉成a? 這就再說XD (因為我也不會XD) 其實就學到這裡的時候,可以猜到一件事,Haskell自己幫你做了非常多的事,很多事硬要推測到底,其實反正看不懂。看清楚一個function的要求為何,似乎變的很重要,看懂他的運作方式會更有趣



每次連載都不會寫太長,基本上都是利用專題空閒寫作,我就盡量寫啦XD


---
基本上這篇的註都是大膽的猜測,但是想不到要用什麼字XD

Haskell Learning Note(1)

原本想說要用什麼 Learing about fuctnional programming using Haskell 之類的標題,但是一則是標題太長,一則是,我沒這麼專業,受到Josh Ko幫忙甚多,如果有任何錯誤是我表達不好,如果你看的懂,請出門左轉到Joshsoft留言感謝XD

What? Why?
什麼是functional programming? 簡而言之,一個programming組成的最小元素為數學性的function,在真實世界中的數學函式是沒有任何side effect,也就是說,給你一個input就會產生一個output,中間不會改變其他事。所以就某種狀況而且,這種思維非常適合數學好的人學習(我數學不好XD)。

functional programming之所以紅不起來的原因有很多,主要原因有二,第一,比起現在大部分的主流語言都來的慢,第二,如果很習慣現代的主流語言,學FP就會很痛苦(我就是那一個...Orz),但是誰都不能忽略FP本身強大的特性。在Erlang本身而言,善用了No side effect特性,以較為簡單的方法寫出平行程式。最重要的原因,現在的FP不再像以前一樣這麼慢了,但是良好的特性還是存在的。

Haskell是一個不怎麼紅而且推廣者也不打算讓他紅的語言,紅的FPL很多,Erlang, ML, F#都是,但是這些較紅的語言都允許一些現代主流語言的特性,反正都要踏入這個不紅的領域了,學比較純的東西或許比較有趣?

為什麼要學Haskell,最重要的原因,Haskell is a pure functional programming language,次要的原因,Josh Ko誘拐我成功了XD,如果夠純,或許我會從裡面學到非常多有趣的東西。

參考資料
基本上Haskell的參考資料中文的不是很多,入門的更少,看英文是一個比較好的方法,網站參考資料如下


而我目前的參考書單只有兩本
  • Introduction to Functional Programming using Haskell 2/e
  • Real World Haskell
然後我都沒有看過XD

連載中XD

---
考慮要不要寫在GooglePage還是wiki上

訂書

剛剛透過在美國的姊姊訂了一本 Introduction to Functional Programming using Haskell只能說,便宜一點點,不過還是覺得天瓏的代訂價3227有點誇張。

---
耶~期待~XD

星期五, 7月 25, 2008

寫程式的胡言亂語

這是一篇有關programming的文章,不想看的可以跳過了XDXD,不過最近的我似乎很少寫這些文章。

最近一直在寫C# with .net compact framework,老實說,我一直被微軟的名詞搞的暈頭轉向,當我有問題只能靠著MSDN來解決的時候,有一種很深刻的無力感...不過我不得不說,Visual Studio .net 是一個很棒的軟體開發工具(雖然eating畫GUI時常常出現記憶體堆疊錯誤,她應該是畫太好...Orz),這部分是專題兼比賽關係,所以我大概等到比賽之後才會提及可以提及的部分,如果中華電信有保密條款之類的,我也只能說聲抱歉啦。

所以我想要提及一些我最近覺得很有趣的部分。寫程式越久只會覺得自己越來越不會寫程式,最近的興趣著重在兩個大重點functional programming 和 Refactoring。

functional programming 最近頗有復活的傾向,據我粗淺的知道(轉錄自某個老師告訴我的故事),上一次FP紅的時候是在一堆人瘋AI(Artificial Intelligence)時,Lisp是一個非常聞名的FPL,在1990年代附近一堆人在做這個題目,但是並不是有那麼實際的成果,結果做這類的題目變人人討打。FP其實專長並不止於此,就我的了解,讓你寫程式更像寫數學一樣,No side effect,lazy evaluation,等等之類的特性,使得近代的FPL極具威力,而跟現在主流的Imperative programming大異其趣,著實是一個讓我產生高度興趣學習的領域,據Josh Ko描述,有比較靠近主流的ML和pure FPL的Haskell,外加我自己所買的Erlang,我想我的學習會以後面兩個為主。到目前為止,我還是不會寫,或許過一陣子,可以自己試著寫出一堆有趣的東西。

舉個例子好了sum . map read . words $ "123 456"我當初看到這行程式碼我就哭了,這可是我第一次碰C寫的要死要活的題目,轉成簡單的C++ Code;

std::string s = "123 456";

s += " ";
int sum = 0, temp=0;
for(std::size_t i=0; i< s.length();i++){
if(s[i]>='0' && s[i]<='9') temp = temp*10 + s[i]-'0';
else{
sum += temp;
temp = 0;
}
}

當然,上述的程式碼沒有做任何的最佳化寫法,不然可以用C的atoi()之類的function,重點是,再看一次FP的程式碼,光看字面就可以猜到程式的意思了(要了解沒那麼簡單,我被Josh Ko搞死了好久...Orz),以後會盡量把自己學習寫FP的筆記放上來,我想我有很大的機率會喜歡上這種程式思維。

接下來回主流Imperative programming XD,昨天嘗試的把Refactoring從第二章推進到第八章,這是一本我很少數後會後悔大一沒有買來看的書(當初錯過Effective C++也沒那麼嚴重),裡面提到種種的方法太漂亮了,從function level的Composing Method到Object之間的Moving Features Between Objects& Organizing Data等等的方法,給我在OOP上很多體悟,也再一次深深的了解自己基本功的不足,舉個例子而言,一般寫身份字號產生器時,最難處理的是每個英文數字所代表的數字,我在寫作時就提出了一個很簡單的方法

// normal writing
char c = 'a';
int value = 0;
if(c=='a') value = 10;
else if(c=='b') value = 11;
/*...*/

// better writing
const int c_value[] = {10, 11 /*...*/};
char c = 'a';
int value = c_value[c-'a'];

這個方法在Refactoring也有收錄,名字為Substitute Algorithm(6.9),Refactoring並不會改變程式所要表現為何,很多時候會把一個複雜的function拆成由許多小function所組合,由專家告訴你如何測試及重構出一個更好的程式,在看這本書時,是一個很棒的體驗,縱使自己原本就會復審自己所寫的程式碼,我想我還是會不定期的看看這本書,會給我什麼體悟

學習相關OOP的運用最大的問題是,我一定得知道這些事(Design Patterns, Refactroing ...),但是我又得忘掉他,然後在需要的時候想起來,而不是為了運用而運用,但是我想,或許我會在Refactoring改變一下作法,或許我很難體會怎麼用Design Patterns,但是我想我會很樂意的使用Refactoring來學會Design Patterns,這時候就不得不提到 "重構-向範式前進(Refactoring to Patterns)",我還沒閱讀,但是我覺得或許是一個行的通的閱讀。

還有很多想提的沒有提及,就下次再說吧。

---
好長的一篇XD

星期三, 7月 23, 2008

無言

繼主機掛點之後,螢幕(Benq FP71Q+)又壞了,跟上一次死在同一個錯誤,螢幕的開關壞了,距離上一次送修一年多。

我的桌上型電腦大概整組壞完了...有一種懶的修的衝動...

---
有一種很衰的感覺...Orz

星期日, 7月 20, 2008

程式與人生

原本想要回彰中講Generic Programming的,不小心講成這個XD

只能說自己在認識的人面前都會爆走,顯然是一個不太好的現象,講解的主軸還是GP,不過中間穿插了許多小故事,也講解了許多自己的想法,我想在這個blog再講一次。

我遇到許多人都跟我說要努力達成某件事,但是只有少數人能達到,沒到的人不是沒有這樣子想。
如果想要對自己構成某件改變,不改變自己的生活形態是不可能的,如果只有想一想之後,生活仍然一模一樣,我想不會有什麼改變。

要認真是一件好事,我想以後如果有類似問題,我會這樣子回答的。

---
所以我連NFS都戒掉了XD

星期五, 7月 18, 2008

表達

以前可以暢所欲言的我,似乎漸漸的消失。或許因為知道世界之大而安靜,保持更好的觀察與學習能力,在前進。

明天準備回去講我忘的差不多泛型程式設計,今天因為颱風只有中部停止上班上課。想一想還是頗要有趣的,一般都是其他地方停課的。還是說我可以就此偷懶,讓他們今天的上明天的課XD 不過人得認清現實,有這麼好嗎XD

時間充足的狀況下,我蠻願意準備這堂課給大家的。

---
似乎不會有時間充足的狀況

星期四, 7月 17, 2008

電腦

我的桌上型電腦掛的差不多了。

現在想想,這台當初升大一買的時候,可是一個不錯的配備,Athlon64 3500 + 1 GB DDR + Geforce 6200,在這台寫程式,著實十分快樂(不過那時候寫的程式老實說也不吃重),但是大一心情不好的時候,每天拿它來跑Need For Speed: Most Wanted跑到顯卡熱當為止,到大二之後,就不會這麼操了(和efang在一起了,沒時間玩XD),現在想想,大一操這麼兇的電腦,不掛也困難。

這個學期當機頻傳,不是顯示卡出錯,就是記憶體掛掉,昨天徹底掛點,開機時連逼聲都沒有,初步推測,主機板掛了,記憶體掛了一條(學弟幫忙測試得到的結果),顯卡應該也差不多了。想想,以前電腦掛掉,就會很有活力的自己下海測試,換零件,直到好為止,漸漸的,我只是想安心的寫程式,這學期用MB的時間非常長,所以連這台什麼時候掛的,我都不甚清楚,想想也甚為慚愧,疏於照顧自己的電腦,電腦也不太可能會乖乖幫你忙。

或許暫時還是以MB為主工作,等比賽比完,再來好好的修理它,總是要盡心盡力照顧好每一台電腦的。

---
感觸良多。

星期六, 7月 12, 2008

男人

Clara: 朋友問,男人都用下半身思考嗎?
yen3: 是啊,但是大部分有色無膽。

---
(茶)

乖乖

看了Zerolex的blog,我明天去買一包乖乖回來放好了。

乖乖傳奇

今天順利的和eating把GUI相關部分取得一個初步成果,接下來還是得忙自己的事了,efang回家,很多事在暑假得適應。明天還有事要做,得買兩本書,還好都不是自己買的XD。

---
研究 pkizzy 中。

星期五, 7月 11, 2008

Visual Studio + svn

Visual Studio .net 2005 or 2008 雖有 Team Suite 協助做版本控制,但是並不是一個非常好的選擇,當然,Team Suite(2008稱為Team System)還包括版本控制以外的功能,例如說可以做單元測試(Unit Class Test),等等之類的,由於Team Suite太肥了,我決定還是朝向軟體來協助。最主要的原因,要做到Team Suite的版本控制,Server端要裝Windows Server 2003,什麼鬼...Orz

Subversion(svn) 在 OpenSource 界是一個非常常用的工具,如果在純Windows的環境下,伺服器端,可以使用Apache + svn,是一個不錯的選擇。也可使用IIS + VisualSvn,網路上可以爬文,我就不再多廢話,我是使用後者(因為Server原本就有裝IIS,不想相衝)。

在Visual Studio .net 2005, 2008,皆可使用 Ankhsvn,這個軟體為一個plug-in的形式存在於Visual Studio中,不過並不是那麼穩定,可以使用TortoiseSVN來做為輔助(雖然大部分的狀況下他比前者還重要XD)。

如何讓很多人用在Visual Studio 用svn寫同一個專案,我試出來的方法為,先讓其中一個人建好project,用svn上傳之後,其他人先用TrotoiseSVN下載下來,之後直接開啟裡面的專案檔,在Visual Studio裡面即可設定好,可直接Commit,非常方便,不建議使用Anksvn來做設定新專案的動作,通常會有一些奇怪的事發生。

設定好了,大家可以快樂的使用svn來寫同一個專案了。

---
為什麼我覺得這篇的口氣很怪啊...Orz

星期四, 7月 10, 2008

最近

其實很多事很難以解決,明明每天都忙到很晚,感覺上總是沒什麼進度。或許只能說自己太久沒有上緊發條了。

Qt其實是一個很有趣的東西,我建議自己的學弟去學習,我自己還是在Google Static Map API上打轉,pre-fetch map其實有很多事可以考慮,可以試試。

開始閱讀和運動習慣,算了,想到再寫,超多事可以寫的,下筆此刻竟一個思緒也無。

---
無狀態

星期三, 7月 02, 2008

架構

人跟人之間的問題果然非常難,還是生程式架構比較簡單...Orz

---
雖然這次要生的架構也超難就是了

星期一, 6月 30, 2008

新工作環境


這幾天一直忙著趕期末project,今天算是稍微告一段落,跟Clara借來相機照一下自己的工作環境,大概暑假都會在此定居了。

目前只差床墊了,明天就會有嘍。

---
持續寫程式~

星期日, 6月 29, 2008

今日

我決定叫自己 Event-Driven Yen3。

---
狀況還蠻像的

星期五, 6月 27, 2008

大三下回顧

雖然還有一個project要完成,對我而言,大三下已經正式邁入一個尾聲。雖然這學期寫的程式都不大,但是也不少,雖不能輕鬆應付,但是也沒有遇到多大的問題,我想,cllee帶我們去比賽,在這個學期是有產生決定性的效用的。

思考了很多事,以學業上而言,有時候人不能思考太多事情,笨笨的去做,反而會有更多的效果,對於寫程式這條路而言,我才剛開始,我並不是跟Josh一樣很努力又有很好的結果,我是一個不怎麼努力的人,且很笨(笑)。早期大一大二閱讀的書到現在漸漸用的上了,不過卻有一股心虛的感覺,越用才越發現,原來以前的自己所學是不怎麼踏實的,但是也得說,如果以前不堅持看某些書的話,現在可能更無法把事情做好了。

對我而言,我希望盡量把我的現實面對生活拖到最後一刻,一直到現在,我還是可以很熱情的學習每一項東西,雖然這每一項東西考試不會考到,對於實質的生活不一定會有幫助,但是我喜歡。ycfu跟我說,你書看太多了,應該直接下去接個project來實作才對。這句話是對的,我理論不好,我寫程式也不行,有時候寫程式,下去寫就對了,並不用思考太多能與不能的問題。

最該感謝的還是cllee老師,在我覺得心情不好啊,人生徬徨的時候,找他聊聊,總是會給我一股最直接的力量,也感謝老師一直容忍我們進度落後,暑假我會一次補回來。

smallpig老師,對我而言,他是一個講話有點毒的老師(雖然blog一點都看不出來XD),不過從他的身上學到不少的現實生活的程式設計的想法與技巧,非常感謝老師,我這學期有一半的時間在寫他要求的程式,也可見我的功力不足,但也無妨。

ycma老師,有人說他悶騷,我覺得他是對某些技術存在著狂熱的老師,unix programming上的非常精采,雖然我們一直拖課,不然會聽到更多東西,但是這些事物帶給我是全新而不同的想法,也從老師身上學到很多編程技巧,雖然老師常常被我們嚇到XD。

efang,我很感謝,心情不好的時候,總是會陪著我,我會努力寫程式的。

eating,雖然你可能覺得你做不了什麼,但是一個安心寫程式的環境非常難求,沒有你,我也辦不到。

clara,雖然你常手殘XD,不過常常從你身上學到很多很有趣的程式想法,讓我的腦子開通了不少。

fire7617,雖然你常看我不爽,但是感謝你容忍我一直犯錯,我們要一起向前衝。

gb014388,全方位的心靈導師,以後還是靠你了XD。

其實,在這學期才完全想通一件事,我一直很想認真做專題,但是專題會卡到研究所考試,我的想法很簡單,我想把專題做好的原因是,我想做好一件事,做好一件事的態度會影響我一輩子,然而,今天考研究所是一個選項,當然,沒有考上是一件可惜的事,重點是我考研究所是為了什麼。在人生的目標前面,路不只有一條,但是我要選擇我做起來不會後悔的路,如果今天沒有做好該做的事,考上研究所也是沒有用的,做好該做的事,接下來才能談下一步,能影響人生的,往往是想法,而非現實生活的事物。我會試著努力準備研究所,但是,在把這一件事做好之後。

這個學期生活非常的簡單,連愛看的日劇都很少看了(這跟桌上型一直當沒辦法抓日劇看也有很大的關係XD),事情比以前多的狀況下,如果保持同樣的生活,能做的事只會比以前更少,得要有所交換,才有辦完成自己想要做的事。

---
好零碎,不過想法只有這些。

qt

php project暫告一段落,明天試著用Qt看看

---
大膽的嘗試。

星期三, 6月 25, 2008

開始

期末考的結束,代表寫程式的開始。

---
現在的壓力比期末考還要來的大。

星期二, 6月 24, 2008

觀察



由於blog去年有寫了Graph Algorithm的筆記,剛好今年smallpig也用了相同的簡報來上課,其實,由圖中就可以知道,系上大概什麼時候期末考XD

---
真明顯XD

星期一, 6月 23, 2008

期末考

好久沒有對某一科這麼堅持了,明明沒有考試就會過的科目...

---
下午的科目是該堅持一下了

星期六, 6月 21, 2008

日落

很高興認識Zerolex這位朋友,他在PHP和C上的功力非常好,不像我一個四不像的人XD 私下聊天才發現,他是一個很有趣的人,但有身為資訊人應有的堅持,假以時日,會閃閃發亮的。

---
已加入blog sidebar

星期四, 6月 19, 2008

花園克拉拉

Clara是我少數認識會寫程式的女生(沒辦法,資工系女生本來就少XD),在認識她的大部分,她的寫程式其實架構良好,問題都不大。

不過當她的程式有問題,就是大家該撞牆的時候了XD 這是因為絕大部分時候,她錯的並不是程式問題,也不是邏輯問題,也不是架構問題,而是

打錯字問題...Orz

打錯字倒也不是一個很大的問題,她的手殘從來不會拖超過第二天就可以找到,只是想做個紀念,因為這個學期好像四次還是五次她的程式有大問題都是打錯字XD 這某個層面而言也不錯,至少沒有很大的問題存在。不過當辛苦幾個小時之發現是打錯字的問題,我想這心情也頗難描述XD。

不過總和而言,她還是一個很寶的人,尤其在寫程式上XD

---
做個紀念XD

星期二, 6月 17, 2008

小小嘗試

發現這個blog的程式文似乎沒啥人在看,所以想做一點嘗試,因為自己的英文很爛,寫程式文時,又很容易中英夾雜,所以以後應該會試著用英文寫作。但是鑑於自己的英文實在是很爛,所以請大家多多指正了~

---
拜託大家了~XD

星期日, 6月 15, 2008

Google Developer Day

這大概是我第一次參加Google的活動,也感覺到Google非常的有錢XD 同行的人不少,所以拿回來的餅乾也真的不少XD。

進入正題吧,由於專題需要,選擇了Maps API,由於自己的興趣,選擇了Clound Computing,我對於如何寫出平行程式具有蠻大的興趣的,做Application並不是我的強項。

Maps API 本身已經算是非常的完整,不過由於架構在Javascript上,事實上我覺得是AJAX,在手機上是無法使用的,雖然有Google Map Mobile,不過是一個close software,問了在會場的工程師,得到的Soluction有兩種,一種是,找到夠強的browser,一種是,嘗試去讀tile server(工程師說,網路上有很多破解可以直接讀的方法XD)。等事情告一段落會試試這些方法。

Clound Computing 這個技術其實是一個非常有趣的想法,一直會思考一個問題,如何寫出sequentional program,但是具有平行運算的效果,many to many,其實還是一個client-server的架構,但是把one server變成many server時,這個問題就變的很複雜而且很有趣。

題外話,每個人都跟我說在會場的女生很少,為什麼我會覺得很多,難不成我是錯覺嗎,在此節錄eating的想法 "少部分的女性中,大部分的女性來都是家眷而非相關科系的" hmm 觀察入微,不過我不知道耶,我現在一整個還是在思考會場所聽到的東西。

---
大概就是這樣XD

星期六, 6月 14, 2008

想法

我的想法跟大部分人沒什麼不同,如果對這個議題沒有興趣可以跳過(笑)。

前幾天,Smallpig老師丟出一個問題,我們憑什麼覺得Microsoft不好,你有付過一毛錢給他嗎? 而Google又真正好嗎? 免費的通常最貴 我只能說,我付了不少,不過我也承認,遠小於我使用的數目。

有關MS的討論,我在很久很久以前轉錄過一篇文章,我永遠都認為以前少不更事,當然,現在也沒多好(笑)。對我而言。

其實Google和Microsoft都在做一樣的事,只是Google做的比較成功。

MS其實是一個商業公司,通常在產品輸人時,會傾向把該公司買下來,不然就降價因應,最後不行才會真正想找人寫出一個不錯的軟體,今日的我不喜歡MS的原因,大概是不喜歡他的商業手法吧。雖然有時候我真的覺得MS有事沒事就要自己造一堆只有他的軟體能用的標準出來,讓software portable非常的低,這點也是讓我不喜歡用他的工具開發的原因。

我不喜歡被綁死的感覺,尤其是很貴的綁死。

Google其實是一個廣告公司,當然不可否認的,他們做的事真的非常棒,只是Google也是嘗試包下所有的Web Service,但是今天Google不會被人垢病的原因是,他所提供的服務通常是免費的,而且沒有很恐怖的廣告佔據你的眼睛。但是簡單的來說,Google就是想要包下所有的Web Service,然後放上廣告吸引人去點選,從中獲利。雖然表面上看起來沒有什麼很殘酷的商業手法,但是每推出新服務,無法避免的會對現有的廠商造成衝擊。其實會有一種猜測性的想法,如果今天新出來的一個idea,縱使想出來的人有辦法實作,那麼依今日Google的實力,是否有辦法找一群非常好的人把該創意複製下來呢? 不可否認的,Google可能有著全世界最頂尖的人才。

大者恆大,免費的最貴。

---
想法到此。

便當

今日參加Google Developer Day,中午的便當是我吃過最高級的,竟然會有我吃不完的便當XD

---
國網的便當...唉...Orz

星期五, 6月 13, 2008

誘人

雖然我對functional programming具有高度興趣,但一直沒有時間XD,如果我不太可能做相關理論,那麼學會寫functional program也是一個不錯的事情,今天看到了Erlang 程式設計 (Programming Erlang: Software for a Concurrent World)的出版,好誘人啊,有空應該會去看看。

此外,jjhou與陳裕成合譯的書也出來了"重構-向範式前進 (Refactoring to Patterns)"應該也會列入閱讀清單裡。

---
說不定就這樣子買了XD

星期四, 6月 12, 2008

BTree完工

比預計來的順利,簡單的文字介面也完工了。

---
介面比較難寫XD

當大Mac遇見小Mac



昨天有gscott老師詢問關於MacOS的相關設定問題,我主動要求幫忙整理他的電腦,於是有了一個很有趣的畫面。

---
雖然這還蠻常見的XD

最近

好久沒有紀錄一下了。

首先,還是恭喜好友的決定啊,畢竟是一件好事。

自己生病了兩個禮拜之後回來寫了三天的btree,預計明天或後天就接近尾聲了,生病的時候想了很多事,大部分都是蠻荒誕可笑,病好了之後也花了比較多時間在與朋友閒聊,讓自己不要那麼像機器。

人不是機器,如果像機器總有一天會倒。

養病時也看了一點書,母親也嘗試告訴我,人啊,一天的時間就是那麼多,每個人都很忙,與其還要想有多少事情要忙在擔心,不如想想完成多少事而開心吧,真是一個非常棒的想法,怪不得我的生活步調越來越慢,但是效率並不以前差。這個學期著實寫了不少的程式,雖然都是小程式居多,不過寫久了,對於寫程式的速度有相當的提升,人果然是要操的,雖然在這個學期休息時間是變的很少,不過依舊開心的過生活。縱使生活對於一般人乏善可陳,但是我越來越喜歡這樣子單純的生活了。

---
單純即是幸福。

星期三, 6月 11, 2008

debug

Btree實作的差不多了,只剩下delete要檢驗,而有關delete的部分寫超過200行。

---
大部分都重覆,所以還蠻煩的XD

星期日, 6月 08, 2008

seekg() and seekp() in C++

前幾天和efang討論一個問題,如何Random access a file,最主要要問題是能跳到檔案任一byte處進行寫檔和讀檔動作。我提出來的第一個解決方式,使用Unix System function即可搞定,對於unix而言,everything is a file,於是可以寫出這樣子的code

struct _bnode{  /* ... */  };

_bnode node;
int fd = open(filename.c_str(), O_RDONLY);
lseek(fd, index*sizeof(_bnode), SEEK_SET);
read(fd, &node, sizeof(_bnode));
close(fd);

write的code也差不多,我就不寫了,這樣子的確可以迅速的完成我想要的目的,不過efang問我,seekg和seekp呢? 好問題,我從來都不知道這兩個function(看來我熱愛C++的牌子可以收起來了XD),這兩個funtion也的確屬於C++ Standard,於是我又寫了測試碼如下

ifstream infile;
infile.open(filename.c_str(), ifstream::binary);
infile.seekg(index*sizeof(_bnode));
infile.read(static_cast<char*>(static_cast<void*>(&node)),
sizeof(_bnode));
infile.close();
infile.clear();

寫檔也一樣,只是把seekg改成seekp,也就不寫啦,其中inflie.read()是用了一點取巧的方法,因為C++是strong-type,所以得把_bnode*強制轉型成void*,才能再轉成read function protype的char*,這樣子對於讀取整個struct _bnode也方便的多。


---
看來efang比我更熱愛C++ XD



2008/06/17
In fact, it is not easy in random writing files. we can try to use the std::ofstream argument.

std::oftream outfile;
outfile.open(filename.c_str(), std::ios::in | std::ios::out | std::ios::binary);

It would avoid some problems.

星期二, 6月 03, 2008

休息

沒有全好,回家緩慢休養中,我答應了大家還要給大家一個健康的yen3 !!

---
努力休息中的XD~

星期六, 5月 31, 2008

上工

睡了好多天,該是上工的時候了,所有進度已經延後三四天了。

---
雖然中間還是偷偷解決了幾個簡單的作業XD

復原

大前天燒到37.6,前天燒到38.2,昨天燒到38.5,今天起床和一般沒生病感覺無異,只是體力差了一些,希望是好了。

---
一直發燒的感覺很討厭...Orz

星期四, 5月 29, 2008

休息

幾乎從大二以來每個學期都有一次過操勞發生偏頭痛,睡一整天就可以康復的差不多,這一次比較不一樣,剛開始是偏頭痛,後面直接發燒,在efang的陪同下看了醫生吃了退燒藥才沒事。

不過在此很感謝fire7617, gb014388, ColdFunciton, Edson,沒有大家,我不太可能好的這麼快。

---
聽說有人對我沒去上課很不爽XD。

星期二, 5月 27, 2008

寫作業

比想像中來的麻煩,不過積極解決中。

---
不解決也不行,哈

星期一, 5月 26, 2008

好友創作


今天好友snake傳了一張圖給我,是有關於期末考的感觸的,我看到了,雖然心有所感,但是不得不佩服這樣子的圖,極具大膽性的張力但是不失細節,還蠻喜愛的。

但是因為她才想到,對吼,期末考近了XD

---
管他的XD

星期日, 5月 25, 2008

戰略改變

聽從Josh的建議,一次專一解決一個程式,暫停分時多工模式

---
這對我也比較輕鬆

星期六, 5月 24, 2008

耐心

在什麼程式都很想寫的狀況下,寫程式得更具有耐心才行。

---
不過程式也有可能多到寫不完XD

星期四, 5月 22, 2008

OpenOffice 3.0 beta for mac

其實我一直是OpenOffice的愛好者,大概是因為他的跨平台性比起MS Office好了很多很多倍XD,3.0 beta脫離了x11,其實我也不知道是好是壞,但是執行起來還蠻穩定的,大部分不要太複雜的簡報都可以正常的觀看(隨機客的簡報看起來會變的非常慢XD),速度只能說差強人意,期待正式版嘍。

---
真是的一個很不錯的軟體。

閃光

最近不斷有人跟我反應說我和efang的blog太閃了,節錄某人對話如下

我一直很想看內文,不過旁邊那一塊太亮了,我都看不到

---
拍謝拍謝,我會改進XD

星期三, 5月 21, 2008

Windows Mobile 6 SDK 隨手筆記

由於完全沒有相關的開發經驗,所以其實去了是受益良多,一時之間也記不下來,我學新東西一向只著於兩點,一點是目的,一點是可用資源有那些。

Windows Mobile 6 Professional SDK應該安裝的有

  • Microsoft Visual Studio .net 2005
  • Visual Studio .net 2005 Service Pack 1
  • .net Framework v2.0 SP1
  • Microsoft ActiveSync 4.5
  • Microsoft Virtual PC 2007
  • Windows Mobile 6 SDK Professional
  • Windows Mobile 6 SDK Professional 6 - CHT Language Pack
  • Microsoft Device Emulator v2.0
  • Remote Display Control
  • (optional) WIndows Mobile Power Toy

列出來的參考書籍有
  • WIndows Mobile 平台應用與開發 by 劉彥博、胡硯、馬騏
  • SQL Server 2005行動裝置開發指南 ISBN: 9867198638
  • Microsoft Mobile Development Handbook ISBN: 0735623589
  • Microsoft .net Compact Framework ISBN: 0735617252 (以.net CF v1為底,觀念為主)
  • The Definitive Guide to the .net Compact Framework ISBN: 1590590953
  • .net Compact Framewrok Programming with C# ISBN : 0321174038

在Google中尋找有關Windows Mobile時,可以加入下列關鍵字

site: msdn2.microsoft.com inurl:library

如果想要看整個.net Compact Framework的概觀,可以

物件瀏覽器 -> 瀏覽 -> 編輯自訂元件集 -> 瀏覽 -> C:\Program Files\ Microsoft.NET\SDk\CompactFramwork\v2.0\WindowsCE\*.dll* 加入
然後
瀏覽 -> 自訂元件集 即可觀看所有compact framework的相關libarary

遠端工具操作介紹

  • Remote Zoom: 截取畫面
  • Remote Process Viewer: 遠端工具管理員
  • Remote Registry Editor: 遠端登錄檔編輯器
  • Remote File Viewer: 遠端檔案總管

如果有問題,可以至官方討論區討論: 微軟技術社群討論區 行動與嵌入式裝置開發或者去中國CSDN

C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE\Diagnostics\
底下可以找尋相關的CHT的cab檔裝在裝置上,可以獲得較多的Exception資訊


---
好亂...Orz

星期一, 5月 19, 2008

重灌

在MacBook上分割Windows磁區失敗,可能整台Mac又要重灌了...Orz

---
很久沒有寫blog,這個竟然是第一篇...Orz

星期三, 5月 14, 2008

地圖


今天早上逛痴漢水球的blog,看到了這張地圖XD

---
我笑了XD

星期六, 5月 10, 2008

返家

六個禮拜沒有返家,頗有一種近鄉情卻的感覺...

---
前陣子還蠻想回家的。

星期五, 5月 09, 2008

遺憾

我有關學Computer Science的遺憾有很多,現在遇到 SmallPig老師,有時候還真的蠻想把一堆有關網路相關呈現技術搞懂的,這也是我所不會的一塊,有空應該是要專心花時間搞懂,所謂的文件,應該不只有排版的pdf,在網路上的呈現也是相當重要的一環,不過我卻在網路這一塊知之甚少,該是花時間的時候到了。

昨天看到Erlang的介紹,應該會抽點時間去了解這是什麼,不過看到另外一篇介紹,想不到竟然是functional programming language,這更讓我覺得有趣了XD

---
雜記文一篇

星期四, 5月 08, 2008

可樂

今天中華電信桃園分公司經理(聽說是很大的職位XD),因為報名參加了中華電信加值比賽,來到我們學校送禮卷,有參加就有獎XD,一個人拿到了400塊統一集團禮卷,可以在7-11, Starbucks, mister donut, 康是美, Coldstone(我聽eating介紹才知道XD),等等消費,算是蠻方便的,於是我跟efang說了。


yen3: 我拿到400禮卷耶~可以用在7-11 balabala
efang: 請客~
yen3: 好啊
efang: 我要喝可樂~
yen3: XD

之後又有對話如下


yen3: Clara和eating聯名推薦 ColdStone http://www.coldstone.com.tw
efang: 喔喔喔
yen3: 你會想去嗎
efang: 還好耶,我比較想喝可樂XD

---
這樣子可以喝好多好多可樂XD

聽說 FLOLAC'08


這樣子的blog頗有被Josh入侵的感覺,只剩一個禮拜了,有興趣的可以趕快報名,我想想我能做的只有這樣子吧,有興趣的就可以進去喔,因應節慶,調整成Josh送的桌面

---
雖然我也蠻想去但是我不能去XD

星期二, 5月 06, 2008

體會

我一直以為我得到別人很正向的reponse是一件很幸福的事,現在漸漸在理解,如果自己給需別人的想法越大,所得到的reponse也是成正比的,也就是說,在正常的狀況下,可以帶動人與人之間的氣氛。

---
不過這個問題需要再思考

睡過頭

睡過頭導致全部的事都超出預料,還沒有午餐可以吃....Orz

---
再過一個小時就可以吃飯了...

星期一, 5月 05, 2008

Page Rank

Josh Ko 升成4分,我升成2分,神奇的是,efang 升成1分XDXD

---
PageRank的家族關係嗎XD

星期日, 5月 04, 2008

搞笑

剛剛突然想到,為什麼要有std::find()和std::find_if()的分別,翻了一下書,就知道為什麼了XD


template <class InputIterator, class EqualityCompareable>
InputIterator find(InputIterator first, InputIterator last,
const EqualityComparaable& value);

template <class InputIterator, class Predicate>
InputIterator find_if(InputerIterator first, InputIterator last,
Preicate pred);

在還沒有具現化之前,兩個function都是三個argument,是分不出來的,看來沒有睡醒真的不是一件好事

---
快樂的生活快結束啦XD

Heap Sort v2

在Josh Ko的幫忙下,終於寫成可接受的heap.hpp了,現在可以試試了

---
終於要進入正題了嗎...XD

Inclusion Model

事實上是為了回覆問題這一篇,在經過Josh Ko幫忙之後,我在"C++ Templates全覽" "6-1 置入式模型(Inclusion Model)"找到答案,實際上,template code是不支援 separation compile,在p.63有提及

function template的定義並沒有具現化,為了具現化一個template,編譯器必需知道"以那一份定義式"以及"以那哪些template arguments"對它具現化。不幸的是這個例子中,這兩項資訊被分置於兩個分開編譯的檔案...

而接著又在下面提到

解決這個問題最常見方法是,把template定義式放到其宣告式所在的表頭檔,可以在xxx.hpp最後一行加入#include "xxx.cpp";,也可以用到該template的每一個.c檔案中#include "xxx.cpp", 第三種作法是完全丟開xxx.cpp,把宣告和定義全部放進xxx.hpp ... 這種template的組織法稱為"置入式模型(inclusion model)"

在文中有說明,如果使用了,事實上也會連結hpp中其他的碼,讓程式碼非常的大,也會讓編譯時間變慢,但是不得不否認,這是一個最不會帶來問題的方法,書有說明,我引用的非常多啦,在此就不描述了

---
在Josh Ko幫忙之下,讓自己渡過一個愉快的週末XD。


Macintosh-2:huffmanTree yen3$ g++ -o test.out test.cpp heap.hpp
ld: warning in heap.hpp, file is not of required architecture

雖然compile過了,但是還是對這行waring非常感冒,還是想想怎麼解決好了


在回覆中有提到,其實g++ -o test.out test.cpp就可以解決了。

點名

A.被點到名的在自己的部落格裡寫下自己的答案,然後去掉一個你最不喜歡的問題再補上一個你的問題,仍然組成20個問題,傳給其他8個人,列出其他8個需要回答問題的人的名字,還要到這8個人部落格里留言通知對方~~~你被點名了,被點名者不得拒絕回答問題,完成遊戲的人將會永遠得到大家的祝福.

B.這8個人要在自己的部落格裡註明是從哪裡接到的,並且在傳給其他8個人,讓遊戲繼續下去"不得回傳".被點名字的人將會得到大家的祝福,並且所有美好的願望都會在不久的將來實現

我是被efang點名的,點到就寫吧,雖然我有很多朋友寫blog,但是沒啥人點到我XD

************************************************

1.如果喜歡的人把你撲倒,你的反應是?
答: 應該不可能發生(笑)

2.下輩子的你(妳)想當什麼?
答: 狼

3.你最想去哪個地方?為什麼?
答: Google 總部,那邊一定存在很多高手,可以學到很多東西

4.最受不了自己哪個缺點?
答: 過於自信

5.如果有不開心的事情,你會怎麼辦?
答: 找efang、寫程式、睡覺

6.最害怕失去的東西?
答: efang

7.喜歡當女人還是男人?
答: 男人

8.最令你難忘的人,事,物
答:efang, programming, thinking

9.如果你有一億元,你會拿來怎麼用?
答:七成交給父母,三成交給efang

10.對一場無即而終得戀情你會複合嗎?
答: 不會,不追求逝去的想法。

11.如果被喜歡的人拒絕,怎麼辦?
答: 不追求,雖然令人傷心,但是就隨風而去

12.誰曾經做過令你感動的事,什麼事?
答:太多了,每個人都做過很多讓我很感動的事

13.目前你的心裡有沒有喜歡的人?
答: efang

14.你愛錢嗎?
答: 夠生活就好,其他的錢可以拿來買書。

15..現在最想要做的事?
答: 休息

16.你最希望達成的願望?
答: 與efang平靜的渡過一生,每天快樂的寫程式

17.跟情人的發展程度
答: excellent

18.對現在的生活滿意嗎? 為什麼?
答: 還不錯,如果我可以再睡多一點的話XD。

19. 現在最想要的東西?
答: 朋友回來一起做事

20.說出傳給你的人的優點和缺點各一
答: 優點:可以依靠 缺點:依靠成習慣

我的題目:
No thinking

點點點
Josh Ko(雖然知道不會寫,還是期待一下 XD)
這會讓我想到小世界原理,我就不點了。

---
我習慣把事情快速解決

星期六, 5月 03, 2008

問題

遇到了一個我覺得不會發生問題的問題。


Macintosh-2:huffmanTree yen3$ g++ -o test heap.o test2.o
Undefined symbols:
"void heap_sort<__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > >(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >)", referenced from:
_main in test2.o
ld: symbol(s) not found
collect2: ld returned 1 exit status


---
克服中...Orz

休息

最近的我很閒嗎? 老實說也不會。

今早起來為了演算法作業裡面有提到的huffman tree實作,考慮使用heap-tree來實作,但是訪視自己所實作的heap-tree,實在是不盡人意,於是今天又重新利用Random Access Iterator的概念來實作,實作出來只能算差強人意,暫時把程式碼釋出,看看最近有沒有空,再把compare獨立成一個function object,讓程式碼的復用性更高。這也是一個蠻有趣的娛樂。

---
當然我還記得Huffman Code這回事XD。

星期五, 5月 02, 2008

合作

有很多事說穿了其實是一樣的東西。

我不否認我非常喜愛閱讀Design Patterns 和 Refactoring 之類的相關書籍,因為裡面提到的方法非常之吸引人,OO方法論是我非常早就接觸到的一件事物。不過在實際開發上,我鮮少用到這些東西,應該是說,有用到也只是皮毛而己。為什麼呢,說穿了很簡單,不要為了Patterns而Patterns,Refactoring也是。

我與人進行軟體開發時,也非常少用到這些我所喜愛的事物,我所認為的patterns,應該是程式寫到一半,腦袋上面突然有一個燈泡亮起來說,啊,這個地方可以這樣用,而不是,解決這個問題的方法,我們就用這個patterns吧,事實上書上提及的只是一個想法,鮮可以原封不動而直接套用的,這種機率非常低。而且更重要的是,我現在所寫的程式強度倒也沒有會用到,當然可以當作練習,不過強迫別人做這件事是非常奇怪的事。

我不否認我喜歡XeLaTeX這個排版語言,我也會四處與人推廣,但是一旦我與人合作寫文件時,我還是使用Word, Powerpoint來做為首選,XeLaTeX自己玩玩可以,但是沒有必要強迫別人跟自己一樣,當自己有興趣時,可以玩玩,甚至做大膽的嘗試都可以,但是與人合作時,應該以團隊都能達成的強度做為考量。就算整個團隊都會這些高度工程藝術了,也是得小心翼翼的使用,不太了解為什麼有些人可以成天開口閉口就OO,patterns。

但是有一件事還是很重要,就是可以推廣這些思考的存在,而不要讓自己思考時落入規格中,這些方法真的很漂亮,看看說不定會給自己另外的世界,但是如果真的硬要實作這些方法,我只能說。

招式是死的,人是活的

硬要用這些招式,恐怕只會逼死自己,一般狀況下大家都懂的已所不欲勿施於人,但是遇到這種狀況時,就忘了這件事,也是一個有趣的現象。

---
難得寫這個議題XD

星期三, 4月 30, 2008

生活

每天都把自己逼到很累...其實也不知道為什麼,工作是一種生活,而我就是實踐這種方式的人。其實也會有一點小失落,因為專題緣故,並不是我每天做的事都能對外釋出,所以我只能努力的做,然後期待專題結束,比照上次,把所寫的及所做過的東西釋放出來。

當然也有點對不起gb014388和snakexu,兩個人的生日我都沒空寫祝賀文了,在此還是得跟她們說生日快樂,有時候真的覺得自己這個身為朋友的不夠稱職,請大家多多擔待了。

其實寫作的另外一個好處是可以回顧自己的寫作軌跡,所以我也很喜歡看自己的blog,還好StatCounter不會計算我所造訪的次數,不然應該是大爆炸才是。我想我的人生如同我以前所說的,一切即劍,萬里一空。

不把自己的標準加諸於別人的身上,因為這就是我的生活。

---
但是感謝朋友加諸於我面對生活的動力。

早起

在經過很長一段時間睡眠不正常後,昨天正式回到十二點睡,已經很久沒有那麼早起過了

今早Mac OS更新時,看到一份期待已久的更新啊
---
我比較喜歡這種生活。

星期六, 4月 26, 2008

生活

聽從Clara的建議,讓自己放慢生活的腳步(其實我自己覺得我過的不快),有很多問題可以討論,我想等到過幾天再說吧。

今天藉由閱讀來放慢自己的生活腳步,於是我選擇"重構-改善既有的程式設計(Refactoring - Improving The Design of Existing Code)",在p.61 "間接層和重構(Indirection and Refactoring)" 文中提到

計算機科學是這樣一門科學:它相信所有問題都能藉由多一個間接層(indirection)來解決。 - Dennis DeBruler

看到時雖然驚訝,但是不失望,因為我在很早之前就對ycma提出了這樣子的想法,不過總覺得有很多需要思考的地方,但是這篇文補足不齊之,大都是物件導向軟體工程看法,ycma曾跟我提過,在硬體上多一層就會多很多麻煩,不過看這種書,就多多思考吧。

---
事實上,我不太知道如何休息,就讓閱讀取代休息吧。

星期五, 4月 25, 2008

最近

先對祥龍說聲抱歉,我晚一點才會寫生日文,真的是太忙了...

真正想要下筆的時候卻不知道要寫什麼,有時候唯一能做的事,就是讓自己埋頭於螢幕前努力工作,直至累趴,習慣了,很多事其實都一樣的。

---
C'est la vie

星期二, 4月 22, 2008

有關學習的兩三事

由於不怎麼念的下書,最近做的事又乏善可陳,只好寫點這樣子的文章來欺騙社會大眾XD

這兩天把Peopleware看完一次,頗有心驚的感覺,原來以前做對了很多事,但是也做錯不少,寫成文章有一個好處,讓你能夠不會再犯錯,也由於蠻感動這本書所寫的,想要買一本英文版回家K,但是天瓏說缺貨中,無妨,再等等看吧。

最近由於寫程式的關係,常常需要看相關資料,這部分的心得,我引用Jserv's blog: 對自己好一些:談技術手冊閱讀來作結,他寫的很好,我實在是不需要重寫一篇。沒有人可以否認,從Google上得到的資料相當的片段(不過能找到整個上課投影片也是一個不錯的選擇),如果自己手上沒有一本技術手冊,無法從該技術做一個全覽是一件相當可惜的事,除非只是即興寫作,抑或是應付了事,不然我覺得,擁有該領域的一本良好技術手冊,是相當必要的。

但是在學習時發現,現代人的心態,有時候習慣於補習班的教育,有人教最好,沒人教就跟老師橋,過度習慣別人給你資訊,如果能力不足,尚可原諒,如果志不在此,也可理解,但是天生就是要走一行飯的,實在是得把"看技術手冊"和"Googling"兩件事並列首位,而不是不會就問人,拖到會為止,這樣子顯得相當奇怪。我問人頂多問到keyword或者是該領域的技術手冊,剩下的自己來。通常這樣子的學習,幾個round下來,對於學習能力大有幫助,久而久之也習慣了這樣子做,方能讓自己成為獨立學習的人。有人問過我,為什麼人會產生如此的局面,我只能說,當人越來越懶的時候,是沒有理由的。

---
嚴肅快筆書寫

Big Eyes

最近終於有好事發生了。

---
Go!

工作環境


最近的工作環境為此,相當不錯,事實上我有對自己工作環境拍照的習慣,不過現在都用手機拍照比較多了,哈

星期一, 4月 21, 2008

學弟,有種

身為一個不成材的學長,我想對學弟說

雖然沒有做,你他媽的你真的很有種,以後我要叫你有guts的男人

---
CF

美麗

在接觸過那麼多programming language之後,到現在我還是感嘆於C/C++的美麗,精簡的語法建構一個又一個美麗主題,太漂亮了。

---
真想用C++開發出一個美麗的東西,會有機會的XD。

星期六, 4月 19, 2008

發現

最近自己的打字速度又比以前快上不少,連帶寫程式速度又變快了。

---
誰說壓力沒好處XD

星期五, 4月 18, 2008

utmpx

在大部分的linux下,是可以從"/var/run/utmp" 這個路徑得知現在使用這台伺服器的使用者資訊,資訊是開放任何人可讀,不過在Mac OS 10.5以後不支援這個檔案,而改採用NetBSD的utmpx,故資訊可從"/var/run/utmpx"這個檔案讀到。寫了一小段測試碼如下

#include <stdio.h>
#include <utmpx.h>
int main(){
struct utmpx utmpx_entry;
FILE* fp = fopen("/var/run/utmpx", "r");
while(fread(&utmpx_entry, sizeof(struct utmpx), 1, fp)>0){
printf("%s\t%s\t%s\n", utmpx_entry.ut_user, utmpx_entry.ut_id, utmpx_entry.ut_line);
}
return 0;
}

事實上我覺得使用起來沒什麼差別,不過細細比較utmp.h和utmpx.h之後,會發現struct utmpx記載了更多資訊,可能更符合現在的作業系統設計,畢竟現在的作業系統不是只有單純的command line了,而一個xwindow也是一個terminal,所以我覺得新增這些資訊還算蠻合理的。

---
事實上這篇重要性不大XD

期中考

一覺醒來與Clara說話,被提醒時發現,期中考近了...

---
做專題做到忘記期中考...Orz

星期四, 4月 17, 2008

測試

今天中午醒來,思考,如果unix system call都是C 寫成的,是否有辦法用class包起來呢,於是寫了一個小小的class測試一下。

class FileAttribute{
public:
FileAttribute(const char* dir, const char* file){
name = string(file);
path = string(dir) + "/" + name;
stat(path.c_str(), &buf);
};
FileAttribute(string& dir, string& file){
name = file;
path = dir + "/" + file;
stat(path.c_str(), &buf);
};
const char* ab_file_path(){ return path.c_str(); };
const char* file_name(){ return name.c_str(); };
bool is_file(){ return !S_ISDIR(buf.st_mode); };
bool is_dir(){ return !is_file(); };
unsigned int size(){ return buf.st_size; };
private:
string path;
string name;
struct stat buf;
};

看起來成效不錯,其實效率很差,多一層包裝,就要浪費掉很多時間在此包裝上,不過如果在發展大型程式時,還是有其包裝的必要。
---
我真無聊,不過我喜歡XD

星期三, 4月 16, 2008

耐心

在越忙碌時,又記得這兩個字的重要性,若無此個性,則無法完成任何事

---
最近是磨練的好時期。

星期二, 4月 15, 2008

簡單、複雜、思考與證明

這段文字很早很早之前就想寫了,不過總是沒有一個好的著力點,不過我得先聲明,我數學和英文都不好XD。

我朋友問過我一個問題,為什麼總是有人要把一個很簡單的問題變的很複雜。此外也有等價的問題,有人跟我說過,要證明1+1=2是數學家無聊做的出來的事。

先回答第二個問題,因為比較簡單,在普遍狀況下,1+1=2是成立的,問題,我們如何證明+這個元素存在,又如何證明兩者等價,這在高等微積分好像有解答(我不會也沒修過,不要問我XD)。而且證明1+1=2的人是Bertrand Russell和另外一個人,花了320頁證明,他是用邏輯證明的,千萬不要小看這個證明,這個證明讓數學與哲學有了連結。他是一個哲學家。數學家和哲學家並不無聊,為了讓整個理性的社會存在,他們可是花了不少的功夫。

那麼為什麼總是要把一個簡單的問題變成很複雜。好問題,這對我學英文時也造成不少的困擾,雖然我英文從來沒有好過。我在用英文的時候想過一個問題。為什麼不能用簡單的字,而是要學很多很複雜的字。(這或許造成我某程度懶惰不背單字的原因XD),在這些等價描述下,唯一要做的解釋就是...

嚴謹是一件非常重要的事。

人類之所以發明文字,發明思考方式,一切只是為了知識累積,讓後人可以站在先人的智慧上,做出更多的開展。人類的學習就像一個超高速齒輪一樣,剛開始會很慢很慢,到最後會越轉越快。於是,怎麼把知識做一個正確且快速的傳遞,變成一個很重要的事。於是乎,寫作要求嚴謹是一件很重要的事,那麼怎麼讓嚴謹做一個最好的呈現?

發明符號和語言變成相當重要,數學對於大部分的人可能落於算術這個部分,但是數學最迷人之處就是,如果你能夠用數學語言看到這個世界,很多事是垂手可得的,你用邏輯語言看懂了另外一個世界,就會發現,原來還有很多很多思考的方式。

不過最不幸的是,符號和語言是先人制定的,這兩件事往往成為門外漢(如我XD)學習最大的門檻,那麼為什麼要用最嚴謹的符號和語言來定義呢? 因為在知識的累積和展現上,不太能容許出錯或定義不明之處,這會讓承先啟後的人們顯的相當無助(發明人都做古時,去那問啊XD),然而這在一般的狀況下卻不是很大的問題,因為肯在某個領域學習的人,往往可以很快的適應。如果學的會這些東西,可以為自己打開一扇窗,快速的學習與探索自己想要學習的東西,可謂是相當的快樂。

而我呢,大概只會程式語言吧,只是剛好有所機會看到一些東西,算是蠻幸運的XD

---
因為幸運所以偷懶嗎XD

星期日, 4月 13, 2008

想寫點東西卻又不知道要寫些什麼...

---
Just that.

星期六, 4月 12, 2008

錯誤

當已知發生錯誤,總是在無法挽回的時候

---
我不是聰明人。

星期三, 4月 09, 2008

便利

前幾天Mac OS X被我搞的並不是那麼穩定,所以今日重灌,還蠻便利的,選擇清除重新安裝後,再用TimeMachine復原資料,但是留下一個乾淨的系統,有些command line底下的東西要重灌,不過正符合我意,因為我前陣子一直在測試,重灌過程相當愉快。

---
在這方面Apple做的真的是蠻不錯的。

星期一, 4月 07, 2008

有感

這陣子作業著實不少,不過都是小作業居多就是了,昨天使用Visual Studio .net 2008 Team Suite 的測試程式是否正確否,簡單而言,就是存在一個function,給予一個input和 excepted output,而軟體會自行幫你比較程式輸出結果是否正確(不過只有C#有...Orz),這對大型專案應該是一個蠻有用的工具。所以我寫了一個簡單的測試碼


public static int[] BubbleSort(int[] u){
/* ... */
return u;
}

之後VS所產生的測試碼片段如下

public void BubbleSortTest()
{
int[] u = { 3, 5, 2, 4, 1 }; // TODO: 初始化為適當值,此行為自行輸入
int[] expected = {1, 2, 3, 4, 5}; // TODO: 初始化為適當值,此行為自行輸入
int[] actual;
actual = Program.CountingSort(u);
Assert.AreEqual(expected, actual);
//Assert.Inconclusive("驗證這個測試方法的正確性。");
}

很可惜的,這個測試結果會告訴你,永遠是錯的,expected 永遠不會等於actual,我起初還蠻天真的認為說應該會等於,其實不會,因為AreEqual對於此型別的比較等於C++中的int* == int*,只要兩個存在指向不同記憶體之處,其值就不可能相等,而我移到AreEqual的程式碼定義處一看,哇,什麼都有,似乎沒有針對這個狀況所解決的方案。其實這算是一個小問題,而C#也支援Generic,稍微改寫一下即可支援,但是這樣子的問題出現在一個這樣子的軟體上,似乎不太對勁,當然,也可以跟我說我的使用方法不當,或許我真的不太會用這套軟體吧。


C#是MS發展算蠻成功的語言,雖然抄襲自Java,隨後又用了一堆C++的概念,導致我遇到錯誤時,兩個語言的思維都套上來試試看,大部分的問題都會有解,但是很難免的都遇到現存高階語言存在的一個問題,發展的過於龐大而難以維護(我得說C++算漂亮的,以發展library來降低整體複雜度),現在的C#,沒有VS.net就很難開發,而這個語言沒有一個統一的思維,也是一個很有趣的問題。


算了,如果用以前MS的東西恐怕會更糟。



---
發個牢騷XD