星期五, 2月 22, 2008

有感

昨日經由Clara介紹,聽了王若琳的音樂,雖然平淡無奇,但是蠻有慵懶的感覺,聽起來還不錯。

但是這會讓我想到,由於我對整個社會的不了解,所以至多只能做一些猜測,這些音樂的出現,是從陳綺貞、張懸開始的。當然,查到的資料是說王若琳的父親是王治平,但是我實在是不知道他是誰。不過還是得說,打造一個非主流歌手的成本非常低,不過我本身非常樂見這樣子的狀況發生,畢竟台灣流行歌手我早已不抱希望(笑),常常看見說某個藝人花了多少錢打造了一首MV,花了多少錢在宣傳預算上,但是很少看到花了多少精神在把一首歌做好。

唱片的本質就是唱片,而不是附加於其上的價值。

從張懸、陳綺貞、蘇打綠到魏如瑄(前自然捲主唱)甚至到現在的王若琳,際遇各有不同,不過我得說,張懸和陳綺貞,要塑造成這樣子歌手的隱形成本是非常高的,張懸唱了Live House五年,陳綺貞在師大夜市賣過自己的唱片,各有自己對音樂的堅持。這些才是一般歌手不會付出的成本。張懸唱了Live House五年,勢必能為自己塑造一個市場區隔,當然,她自己本人有沒有想過,我不知道(不過我覺得照張懸的個性,沒有XDXD),當然得說,唱歌的人何其多,歌唱的再好也需要際遇,我想,這就不是我所能了解的。

---
身為一個聽眾能做的事就是好好聽歌(笑)。

星期四, 2月 21, 2008

解釋

昨天在逛學弟blog寫筆記時,一方面還蠻高興的,有認真看書,但是一方面也看到讓人覺得奇怪的錯誤XD
vector<int>::iterator mid = (ivec.begin()+ ivec.size())/ 2 ; // error!

簡單一點來說,學弟並不是很了解指標運算是什麼XD,算了。先來說明正式一點的原因,第一個最重要的原因就是,iterator並不支援operator overloading "/",在此算式中,由於使用了(),使得優先權較高先執行,operator+沒有問題,但是operator/ 就會變成undefined。

iterator支援operator+ 嗎? iterator共有5種concepts,分別是input iterator, output iterator, forward iterator, bidirectional iterator, random access iterator。應該要花時間把這幾種了解,而利用type traits實作advanced,是一個值得探討的問題。

就算回到C語言的指標運算,上述的算式也不是對的XD,我們稍微轉化一下成一般的狀況(使用陣列)。


const int N=10;
int u[N];
int* mid = (u+N)/2;

上述的程式碼編譯是一定會過的一定不會過的,但是通常得到的不是你想要的答案,想想為什麼呢?

為什麼不會過,看一下compiler給的message
invalid operands of types `int*' and `int' to binary `operator/'

指標運算支援前進或後退,但是不支援其他運算,顯然現在的type checking遠比以前好多了,我寫這類東西時,還是多多思考比較好。

---
寫解答的人一定很偉大...Orz

星期三, 2月 20, 2008

母親

很多事的想法,社會上的人物是比不上我的母親的。

雖然我的母親位於傳統觀念中成長,但是生活有什麼疑問,我傾向詢問我的母親。因為她擁有著比大多數人還要來的好的智慧與習慣面對問題。長期安靜生活告訴我一個生活原則。

少欲知足。

現在的社會,很容易陷入一種資訊焦慮,總擔心自己看到的聽到的不夠多,事實上,我們也不需要這麼多的資訊才活的下來,在材與不材之間,扮演好自己的角色,當然無需妄自菲薄,生活其實很簡單。不過在母親身上,我幾乎看不到些事,安靜的過生活,就是一種喜悅。

---
思考與生活。

星期二, 2月 19, 2008

好玩的Google Trends

前幾天在朱學恆的路西法地獄中看到了有關Google Trends的文章。所謂的Google Trends就是提供一個模糊的相對搜尋趨勢。

來截一些有趣的圖XD

Pic01 (馬英九 vs. 謝長廷),在路西法地獄有啦,我只是稍微更新一下XD


Pic02 (馬英九 vs. 謝長廷 vs. 陳冠希),只要是鄉民都會知道的威力XD


Pic03 (電機 vs. 資工),讓人傷心的一張圖XD


Pic04 (電機 vs. 資工 vs. 123),123大勝XD


Pic05 (幹 vs. 靠 vs. 操 vs. 硍),髒話使用率XD


---
博君一笑XD

閒聊linux與Freebsd

事實上我是一個蠻關心這兩個作業系統的初學者,但是由於自身經驗和能力不足,有時候會有不得其門而入的感覺。

事實上在linux上寫程式,雖然有gcc可以寫,但是一旦寫到應用程式與系統程式,對我而言,不得其門而入,問題很多,最重要的是,我實在是不太會找到切入的點,當然,這應該是我自身的問題,我看書寫程式的時間比較多。

不過昨日與ycfu閒聊,他在linux和freebsd上開發軟體是非常有心得的。他大概跟我說明了linux和FreeBSD的現況,兩者皆為Open Source,但是授權狀況有很大的不同,詳情請看這裡但是簡單而言,還蠻好分辨的(往下看,有註解)。

顯然最自由的是BSD License,於是很多人喜歡使用,包括最有名的Mac OS,ycfu跟我說,Mac OSX只是把FreeBSD包裝的很好而己XD,事實上我不知道,因為我不甚了解,但是MacOS確實以FreeBSD為基礎進行開發,原因有二,第一,FreeBSD是以穩定為前提進行開發,第二,沒有授權問題,思科的router有一個名叫IOS的OS,有hacker無聊進去一看,發現以BSD 核心進行開發的。

若談到軟體撰寫,事實上在linux是一個很大的問題,linux 的 kernel 與 library 是分開的,而且基於自由,kernel 會載入什麼 module 也是不甚清楚的,如果要撰寫程式,在每家的linux中,portable 非常低,這是一個基於自由的非戰之罪,當然,我雖然喜歡OpenSource,但是在FreeBSD上開發卻沒有這個問題,因為kernel + library皆由有同一個團隊維護,所以非常穩定,不過最顯然的缺點是,驅動程式支援相對於linux是非常老舊的(沒人寫是最重要的原因XD)。

但是不得不說GNU GPL,我覺得是一個蠻讓我覺得不舒服的制度(雖然很多人不鳥他XD),GPL 不能說是自由的條款,BSD License 才是,一個人要不要開放自己所撰寫的程式碼,應由他自己決定,GPL卻是說,你若用到就得開放,深入了解,我只能說,GNU不是傳教士就是海盜,這會讓我想到一個故事。

居禮夫婦當初發現鐳的時候放棄其專利,為了造福人群,此舉當然可以讓相關應用快速被發展開來,而也不要求任何回饋。但是居禮夫婦使用類似GPL的協定的話,以後相關的研究專利都得開放,這樣子的科技似乎不會發展那麼快XD,但是使用BSD License的話(的確很像居禮夫人原本的作法),自由取用,那麼到底那個license比較好,見仁見智。當然會有人打著自由口號做壞事,不過我得說,尊重每個人的自由是很重要的。

自由是完全的,而不是強制性。

說到這邊,我還是不知道切入點為何,不過我想我會從FreeBSD開始學,致少初學者,學比較具有一致性的東西比較好,而且FreeBSD port 到Linux的話,我也不知道難度(笑),所以我還蠻期待本學期的Unix Programming XD。

---
說多了


  • GNU GPL: 只要你有使用到GNU Library,你所撰寫的程式碼需全部開放
  • GNU LGPL: 若有改到GNU Library,有使用到該library開放即可。
  • BSD License: 程式碼皆可自由使用,但檔前註解不可移除掉。

星期日, 2月 17, 2008

整合

為了盡量把帳號往google集中(這樣子我也比較好管理),我的email信箱如下,msn也移至此。


希望變成永久信箱嘍,不過也要看狀況了,至少這帳號會有效非常久。

---
走的出來才能夠看的更遠

星期六, 2月 16, 2008

溫度

在長庚桌上都會佈滿寒氣,連帶我的MacBook運轉時出現難得一見的超低溫,37度XD

---
之前有過打開只有22度 XD

星期四, 2月 14, 2008

Valentine's Day

今年的情人節,沒有意外。不過尚可以說是過的平平安安,因為都在睡覺...Orz,還是來點首歌曲好了,Linkin Park - Valentine's Day

Valentine's Day, Linkin Park, Miniutes to Midnight(2006)
My insides all turn to ash, So slow
And blew away as I collapse, So cold
A black wind took them away, From sight
And held the darkness over day, that night

And the clouds above move closer
looking so dissatisfied
but the heartless wind kept blowing, blowing

I used to be my own protection, But not now
Cause my path has lost direction, Somehow
A black wind took you away, From sight
And held the darkness over day, That night

And the clouds above more closer
looking so dissatisfied
and the ground below grew colder
as they put you down inside
but the heartless wind kept blowing, blowing

So now you're gone
And I was wrong
I never knew what it was like
To be alone

On a Valentine's Day
On a Valentine's Day
On a Valentine's Day
On a Valentine's Day
On a Valentine's Day

(I used to be my own protection)
On a Valentine's Day,
(But not now)

On a Valentine's Day

(Cause my mind has lost direction)
On a Valentine's Day,
(somehow)
On a Valentine's Day

(I used to be my own protection)
On a Valentine's Day,
(But not now)
On a Valentine's Day

(Cause my mind has lost direction)
On a Valentine's Day,
(somehow)

事實上我的狀況跟歌所描述的完全不像,但是我還是非常喜歡這首歌曲。

---
以前或許很像XD

星期三, 2月 13, 2008

Mac OS 更新

昨天得知有Mac OS 10.5.2更新,但是一更新完,我就陷入"login loop",於是乎我就上網求救啦,結果有好心人告訴我原來官方可以尋找答案,但是捫心自問,我不太會下英文關鍵字就是了,官網是這樣子說的

If Leopard is installed
Start up from the Leopard Install DVD and perform an Archive and Install installation (and select Preserve Users and Network Settings).

簡單的而言,你重灌就對了XD 今天和JC見面,順便借了Leopard光碟重灌(我的放在桃園...Orz),於是乎修復好了。

去掉這點奇怪的原因,10.5.2真的讓人感覺好很多了(或許是心理作用? XD),至少Adobe Printer可以用了,之前都不能用...Orz。

---
麻煩一場XD

星期二, 2月 12, 2008

function object

首先,心愛的MacBook無法開機,感到非常的心痛,偏偏光碟在學校,只好等回學校再說了。心痛歸心痛,文字還是得寫的。

function object 到底威力何在,抑或是說,重要角度為何。

function object(functor) 是泛指利用overloading operator(),而讓一個class能像function一樣使用,但是擁有更多的彈性,一般書上都會寫,由於class擁有data member,所以functor可以有local state。 舉個例子而言

#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

class Print_Call{
public:
Print_Call():t(0){};
int operator()(){
return ++t;
}
private:
unsigned int t;
};

int main(){
generate_n(ostream_iterator<int>(cout, "\n"), 5, Print_Call());
}

首先要注意的是Print_Call(),此行是為了喚起default constructor,而不是function call(一開始我的確搞錯XD)。事實上我們可以寫一個比較簡單的等價呼叫,來試試
int Print_Call(){
static int t=0;
return ++t;
}

int main(){
generate_n(ostream_iterator<int>(cout, "\n"), 5, Print_Call);
}


那麼再來看generate_n的原始碼(我稍微重寫了一下)
template<typename OutputIterator, typename Size,
typename Generator>
OutputIterator
generate_n(OutputIterator _first, Size _n, Generator _gen){
for(;_n>0;--_n, ++_first){
*_first = _gen();
}
return _first;
}

在C++中,operator * 和 operator () 皆可做overloading的動作,所以*_first可以是一個trival pointer或是一個iterator,而_gen(),只要能夠支援operator() function call即可,也就是,traditional function 或者是function object 皆可支援,有了最大的共通性,重點是,如果可以寫成function obejct,加上template,就會形成Generic Programming的一部分,因為可以針對很多的共通動作寫成template function object,省下不少麻煩,而STL內建的function object並不多,但是可以用組合技來達成自己要的效果,要怎麼使用組合技呢,重點就是function adaptor了。

不過當然,function object不是沒有缺點,很大的缺點就是,如果為了配合Generic Algorithm,可能會寫出很多一次性的function object,這在程式碼上會變的較難維護,Java的inner class是一個不錯的選擇,而在Boost中也有提出良好的解決方案,可以看一下Joshsoft: Lambda Expressions in C++0x,不過如果想偷懶不想使用function compose, bind,當然可以自己寫一堆function object,也不會有人說你犯規,只是以後好不好維護而己(也還好XD)。

寫到這邊吧,本來還想寫function adaptor,只能說待下回分解了。


---
不知道有多長耶XD

體悟

現在比較能了解Josh為什麼有關程式的文都那麼長了,因為敘述一個完整的思考所須的文字不會太少...

---
所以我決定下次要寫長一點XD

有感

這是一篇Generic Programming 的文章,不是生活文,不想看的可以跳過了XD

今天又把"泛型程式設計與STL"看完一次,對於大一自己的大膽假設,感覺到非常的有種,對於member function adaptor 的說法,我真是白癡到一種境界,不過我也不打算重新說明,因為以前的blog就寫過了。

對我而言,C++ Standard Template Library 用嚴謹的Concepts所組成,STL的六大組件則使用了這些 Concepts 發展成嚴謹的組件,而且非常的明快易讀,捨棄了OO的hierarchy方法,而使用了類似Mathmatical functions 的 f(g(x)) 作法,將整個程式庫壓平,不過背後所帶來的成本,非常高,環環相扣的呼叫,雖然在Compile Time 會化身成如你手工精鍊的一般,但無法針對特定資料的最佳化,還是無法克服的,不過寫到這裡,若要針對資料高度最佳化,不妨尋求OOP的這一塊。

STL的入門關鍵技術有三,一是template,二是type traits,三是operator overloading。

第一個我就不廢話了,沒有辦法針對data type做到generization,就不用玩了XD 而我們先把type traits略過,這可以講一整篇了,先說第三個operator overloading,也是Java的GP無法做到的。為什麼operator overloading那麼重要?

因為operator overloading不僅讓 class 更像一個 real type,也可以讓 class 像一個 function,但是可以比function做更多的事。

最大的原因是,我們可以overloading "()",也就是說,如果對以一個class做operator() 的定義,這個class可以做為一個functor,而也因為我們可以對眾多的 operator 做獨立定義,很多時候的溝通,只要用這招就可以搞定了,如果這招搞不定,而需要用另外的方法時,template + type traits就出場了,在這邊就暫且不論。

不過回到比較簡單的話題,學好STL還是很難的,因為組件不少,目前唯一的想法是,寫完一次程式碼,再盡最大極限來使用STL裡面的概念轉換之,轉換個十多次之後應該會好一點,不過目前當下的我應該是沒有什麼機會。

說多了,下次想到再寫吧。

---
寫完有大陸人的感覺?XD

星期一, 2月 11, 2008

最近

我看我可以幫最近開一個系列文了XD 這個標題幾乎是我懶的想標題的避風港XD

這幾天看小說, 睡覺,還蠻自在的,終於回到桌子上打電腦了XD 也是一件不錯的事,預計這禮拜三回彰中一趟,禮拜四有事,禮拜五回學校,宣告下學期的來臨。睡覺睡很多,但是有助於思考,讓自身回到一個簡單的狀態也是一件不錯的事。雖然最近這陣子Mac OS常當,到底什麼時候要出10.5.2啊XD。報怨完了,也沒啥正事XD

有學弟跟我提及C/C++到底重不重要這個問題,呵,就我自己而言,我覺得非常重要,只是初學C++的人要過很久很久才能摸到應用程式,應該是說,一般的書也不會寫說,如果你要用C/C++開發某些功能應該用什麼喔。所以我稍微列一下我現在所能碰到的,事實上我沒有用C++開發應用程式過,但是要我選擇, C++/ Java 仍是我的首選(笑)。

  • GUI Programming: 在Windows上有VS可以選擇,但是跨平台上則有QtGTK,如果上述都不喜歡,可以考慮一下wxWidget
  • Network Programming: 可以使用ACE,當然,也可以使用Unix 上的Socket Programming
  • 3D Programming: 在Windows上有DirectX可以用,而OpenGL是跨平台的

族繁不及備載(而且我還沒有提System Programming XD),但是我所能接觸到的就會學不完啦,語言的重要程度是看你想拿語言來做什麼,沒有一個程式語言能夠解決所有事的。

回到一般生活上,回學校的生活似乎有點趕,不過也還好,打算看看上課狀況再調整吧,比賽的進度還蠻趕的,如果不要落後,大概每天都要蹲實驗室吧,不過也無妨,多寫點程式總是好的。

一起加油吧!

---
沒什麼組織的文章 XD

星期日, 2月 10, 2008

電子之星

這是一本短篇推理小說集。

我一直以為這是推理小說,但是看完之後的感覺是,這是很像推理小說的一般小說XD。主角在書中被人稱之為萬事通,專門解決問題,看完這本的第一個感覺是,會讓我想到宮部美幸,不過這位作家的書我也只看過兩本,分別為模仿犯Level 7

事實上石田衣良和宮部美幸有可能會被我歸類成同一種作家,他們都想藉由推理小說的架構來表現出現代日本的社會問題,直接講有什麼社會問題,並不是沒有人理會,而是所能使力的部分太少,如果不能深入分析,恐怕一般人不予以理會。

我不太清楚東京池袋在日本是什麼定位,不過根據wiki來看,是一個繁華的地方,這句話或許很普通,但是就我個人的感覺。

繁華伴隨著黑暗。

台北是一個很繁華,但我始終不能適應台北,也是同一個道理吧(笑)。我看書沒有一定的習慣,通常是隨機取樣,所以我沒有看過池袋西口公園123 XD 但是從這本書而言,我看到了比較輕鬆而且是美好結局的敘述方式(要看相反的可以看模仿犯XD),想要了解日本社會的架構,不妨多讀讀這兩位作家的書,我從閱讀這些書,學習蠻多的。

---
不過要有時間就是XD

戰慄遊戲

這是一本驚悚小說,不過很精采,但是我也得承認,我比較少看這種小說。

整個故事的人物架構非常簡單,一個專門寫暢銷小說的作家,跟一個瘋狂連續殺人犯的書迷,在作家發生車禍之後,被書迷要求重寫小說橋段,地點也很簡單,大部分只在該連續殺人犯的屋子裡,更精確的來說,只在囚禁該作家的房間。而故事的結束伴隨著死亡。

死亡方能結束這扭曲的關係角力。

這本書不很薄,不過故事架構很簡單卻不失其張力,閱讀蠻愉快的,我花了一個晚上看完,不過這本書不能帶給我什麼啟發就是了,但是享受故事往往就是一件很不錯的事。

---
寫心得(這不能稱之為書評XD),我還須要很多的練習XD

星期五, 2月 08, 2008

心情

好多了

---
還蠻簡單的

十二點了,手機沒開,十二點半就關機

---

星期三, 2月 06, 2008

sidebar 小更新

除了遊客留言之外,終於加入最新回應的功能啦(我不會寫,泣...Orz),後來在google上找到有人撰寫,非常的感謝。

同時新增了WishList,對於sidebar的link有稍做更新。

---
有更新回應很重要XD

閱讀清單

我從小時候就有不怎麼良好的閱讀習慣,而我的買書習慣不怎麼好,習慣看了喜歡就抓,然後再難看都會強迫自己看完,不過通常很好看,或許是我不怎麼挑? XD

不過工具書真的是考慮再三,因為有關Computer的工具書,可不能買來保值啊XD 不過我的確有幾本書是買來就絕版了..Orz

"STL源碼剖析"會絕版並不在我的意料之外,雖然我個人蠻喜愛這本書的,給初學者看太難,給進階使用者也沒有利基,能銷售的恐怕只有莘莘學子了,這本就是我買完就絕版的書,雖然覺得絕版可惜,但是並不難過。

扯遠了XD

不過過年閱讀清單暫列如下吧

  • 池袋西口公園4 - 電子之星 by 石田衣良, 劉名揚譯
  • 池袋西口公園5 - 反自殺俱樂部by 石田衣良
  • 戰慄遊戲 by 史蒂芬 金, 柯清心譯
  • 棋王樹王孩子王 by 阿城
  • 我是傳奇 by 理察 麥特森, 陳宗琛譯
  • 基地 by 以撒 艾西莫夫, 葉李華譯
  • 慈悲的滋味 by 黃凡
  • 黑名單 by 勞倫斯 卜洛克, 林大容譯

誰說我不看課外書的XD 不過上面的清單可以看出,推理小說最多XD 可能跟我這近幾年的閱讀習慣有關吧,我高三時看的小說大部分都是台灣小說新興小說作家為主,我最近看到有人在票選歌曲,有一首也蠻讓我shock的,雖然我沒聽過XD 王心凌-那年夏天,寧靜的海,老實說我不知道這首歌唱的時麼樣,但是我倒是看過郝譽翔寫的就是了,不過我還是偏好黃凡就是了,如果我有閒,或許我可以來討論一下這方面的事,但是我不是專業,不要太期待就是了XD。

閱讀,可以帶給自己不同的人生。

---
想到就寫,果然沒什麼章法XD

星期二, 2月 05, 2008

冷天氣

適合進行寫作,寫些什麼東西也好...

---
好久沒有這種感覺了 寫的出來就當作禮物吧,呵