2013-06-07

練英文最好的理由

許久沒有更新自己Blog,都差點忘記自己還有這一個紓解自己情緒的地方。最近發生一些事情實在是不吐不快。

話說中國人長久受到儒家思想的薰陶,或者應該說是遺毒。通常做十分說七分,對人不吐惡言,對自己或是底下的人的要求標準嚴格。但是我發現在一個與許多不同國家的同事一起共事的環境裡,這未必是件好事。或者說應該適時的調整一下自己的態度。不卑不亢是美德,但該出來Fighting的時候還是不能讓。

事情的緣由是我親愛的以色列同事在過微軟WHCK認證的進度太慢,老闆Push他們總有一堆的理由。搞到對手公司的認證都過了,每次業務去拜訪客戶都被洗臉,業務的處長實在受不了,希望我能在IC回來的空檔,能夠幫忙加速認證的速度。大家都在同一艘船上,雖然不是我分內的事我也答應下來。有趣的事情在後頭,當我拿回來Source Code一看,才發現和我去年11月移交給以色列的版本並無太大的差異,很多認證的部分卡關只是HID的ID不符,修改Bios的設定就可以通過許多項認證。這下子我老闆氣得不得了,為什麼台灣的RD不到一個月時間就通過驗證而以色列不行,想直接把驗證Report寄給以色列的RD Team,質疑他們工作的能力,在我好說歹說總算把這封信壓下來。更有趣的事情在後頭,業務的處長突然打電話問我說問什麼以色列的RD Team說他們已經過了WHCK的認證了?我把mail拿來看,竟然把我reply給我老闆的report原封不動貼到他們的週報上,當場我就跳了起來質疑,反而換我老闆和業務處長安撫我,畢竟同一個產品線,IC賣最重要,大家心知肚明是誰做的就好。我和Team的表現不會因為這樣就被抹滅。

事後我平心靜氣地想,其實我並不在乎要去跟人家爭什麼功勞,而是我這次學到一個教訓。那封質疑以色列表現的信是應該要發出去的。畢竟大家公事公辦,有record事後也不會有這些鳥事發生。我當下選擇息事寧人除了想顧及以色列同事的顏面外,最主要的原因是我不想引起一場e-mail大戰,往返的e-mail除了吵架外,對我來說只是浪費我的時間去回那些官場上的英文書信。只能說怕熱就不要進廚房。這次我真的覺得練英文最大的好處就是吵架不能吵到詞窮,你要打官腔我就奉陪到底。親愛的小乖,爸爸已經決定要從小訓練你的英文,至少吵架不能吵輸喔。

2012-11-04

Brandson Sanderson


Brandson Sanderson一直是我最喜歡的一個奇幻作家之一,有興趣的人可以去看看他的website,相當具有奇幻風格的網頁排版方式,而且可以下載他一些作品來看。最近App的工作算是完成了一個階段,趁空閒之餘,啃完了他另外兩部已有中文翻譯的作品,諸神之城伊嵐翠破戰者

這兩部作品依然維持他最令人稱道的風格,就是不抄襲現有的奇幻作品的奇幻元素架構(托爾金魔戒奠定了奇幻文學的框架,想要擺脫他的設定並不是件簡單的事)。迷霧之子的鎔金術與血金術,伊嵐翠的符文描繪,與破戰者的識喚術、駐氣與身體彩氛都是相當創新與有趣的設定。(我強烈懷疑Sanderson的老婆有色彩學的背景,破戰者中奇幻元素用到的名詞,有些沒念過色彩學還不容易翻)。另外Sanderson對於人性的描寫也極其深刻與細膩(與我另一個喜愛的作家R.A. Salvatore一樣),你可以看到故事中的主角們在思考與自省上的成長。伊嵐翠故事中 Derethi的樞機主教,一直對於自己的信仰,與讓亞瑞隆王國皈依Derethi所採取的手段上,無法獲得邏輯上辯證的一致而困擾不已,而發生在其他國家的慘劇更是他心中一直無法抹去的陰霾。破戰者中Vivenna因為自身的傲慢而一直被玩弄於股掌之間不自知,Siri因為旁人的刻意誤導再加上義卓司對於虹譜宗教的刻板印象,而一直對支撐國家與信仰的祭司們有所偏見。這些角色並不是神,但藉由一次次失敗與挫折,更讓讀者對書中人物產生共鳴。

Sanderson也是多重人物分鏡述事的寫作方式的好手。說到這種寫作方式,似乎因為冰與火之歌實在是太紅了,最近看到的某些作品都喜歡用這種方式來敘述小說,不只從單一主角的觀點來敘事的寫作方式,可以讓我們用不同角度來看同一件事,更可以用同理心去探究所謂正派、反派角色的心路歷程。但用不好的話容易失焦,簡單的來說,就是一個緊湊的氛圍好不容易鋪陳起來,就硬生生地被砍斷,分鏡到另一個角色去,而等到焦點再回到這個主角的時候,很多讀者早就忘記上次的劇情進行到哪了。但Sanderson的分鏡角色很少會超過三個,而且起碼都會圍繞在同一個敘事的焦點上,讀起來通順多了。至少比冰與火之歌的後幾部曲好,當初看冰與火第四部A Feast for Crows時,我是跳著章節看的,要不然實在很難想起來這個章節的主角上次到底發生什麼事。

最後,我個人認為看Sanderson作品最大的享受,就在於推理解謎的過程。自認為推理能力不錯的我,也是看到故事快結尾的部分才約略猜出來結局。到底伊嵐翠城為何會在十年前發生崩壞,虹譜的宗教信仰究竟從合而來?我相信這是每個正在看Sanderson書的人,如同上了癮般,欲罷不能地翻著書頁的最大原因。

2012-06-07

MediQ 醫療輕鬆排!

自己的第一個App經過一個禮拜總算上架了,而且還在上架當日衝上醫療排行榜第一名。由於是免費的軟體,收入主要為廣告和掛號的抽成。我跟小君說就算是在做功德吧。讓每天忙碌的年輕爸媽能少一點排隊的時間,或是讓行動不便的老人家不用一大早就在醫院枯坐著,那這隻App就有意義了。

畢竟自己也是新手爸媽,每次帶小乖去小兒科門診時,看到不舒服的小朋友們坐在門診診間前的坐位上,既無聊又怕在醫院交叉感染,如果這軟體能讓小朋友在快到自己的號碼再去醫院就診,既可排解看診的人潮和減少交叉感染的機會,我想這是我做這隻App最大的收穫 :)

2012-04-30

關於iOS ARC三兩事

在iOS5引入ARC之前,舊的記憶體管理機制倒是很直覺。譬如每一個NSObject都擁有一個名為"retainCount"的變量,它表示該Object有多少個引用:

example 1:
NSObject *obj = [NSObject alloc]; //alloc會將obj的retainCount+1
[obj retain]; //retainCount++ 通常在Object賦值之後這樣做,代表它多了一個引用。
[obj release];//retainCount-- 通常在使用完該Object的時候這樣做
而當retainCount為0時,運行時環境會通過調用[obj dealloc] 來釋放obj佔用的記憶體。

example 2:
Test *t1 = [[Test alloc] initWithNum:12];//創建了一個物件,t1是該對象的引用,
//由於調用了alloc此時retainCount為1
Test *t2 = t1;//此時t2也要使用該物件
[t2 retain]; //t2要使用物件 就必須要retain,此時retainCount為2
[t1 release];//t1這時不用該物件了 就release了,也就是放棄了物件的使用權,
//此時retainCount為1
[t2 release];//t2使用完了 就release 此時retainCount為0,立刻會調用dealloc來釋放內存

而關於autorelease的用法:
iOS在global的空間中其實維護了一個型別為NSMutableArray的autoreleasey pool物件。可以利用[[obj alloc] autorelease];
這個函式將把obj加入到autorelease pool的Aarray中(此時obj的retain會+1)

autorelease pool會在系統閒置時,會給在Array中所有的Object發送release(retainCount-1)並從Array中移除物件,如果該物件 原本的retainCount為1,則會因pool呼叫release使retainCount為0,進而呼叫Object的dealloc,以此來實現 Memory釋放。
而obj在執行autorealse後,請不要再次執行retain,使得obj的reatinCount為2,在之後autorelease pool發送release時,obj的retainCount會為1,則會發生memory leak問題。

在iOS5引入ARC後,只要使用alloc來創建物件,則它的刪除與釋放就可以交於系統來處理 (retain release 交由compiler判斷)。ARC多了兩個修飾詞strong,weak來描述物件的指標:

strong :
(擁有該物件,即負責該物件的生命週期)
strong所代表的就像是我們所熟悉的retain-->確保這個成員變數在它的母物件尚未被釋放前都是依然有效的

example 3:
@interface DoctorEntity : NSObject
@property (nonatomic, strong) NSString * docName;
+(DoctorEntity*) doctorWithName:(NSString*) docName;
@end

@implementation DoctorEntity
@synthesize docName = _docName;
+(DoctorEntity*) doctorWithName:(NSString*) docName
{
    DoctorEntity* doctor = [DoctorEntity alloc]; //doctor.docName retainCount = 0;
    doctor.docName = docName; //doctor.docName retainCount = 2
    //與外部生成docName的共享物件
 
    return doctor;
}
在DoctorEntity被解構時,會將doctor.name設為nil 一併釋放

但如果強制將doctor.name設為nil
譬如
example 4:
+(DoctorEntity*) doctorWithName:(NSString*) docName
{
    DoctorEntity* doctor = [DoctorEntity alloc]; //doctor.docName retainCount = 0;
    doctor.docName = docName; //doctor.docName retainCount = 2
    //與外部生成docName的共享物件
    doctor.docName = nil;
    //不管doctor.docName retainCount為多少,retainCount一律清為0
    //進而釋放該物件在heap的記憶體
    return doctor;
}
@end

weak:
(不負責其生命周期,純粹使用指標)
weak修飾的指標純粹就是一個指向在Heap物件的指標,但是在物件被釋放後會自動設為nil。

如果不宣告,iOS5預設值都是使用__strong來定義變數,由編譯器幫你在適當的地方加上retain和release(與 autorelease),如果要改變預設指標的修飾詞的話,可以在變數前加上__weak。就像是之前所說的weak,也就是說如果之後沒有其它人再參 照它,它就會被設定成nil。

因此一般的堆疊變數(local variables)如果你把它設定成__weak,而且之後也沒有其它的strong pointer指向它,則它就是一被生成就會自動被回收。

example 5:
__weak NSString name = @"My name is Franky";
NSLog(@"%@",name);
執行的結果會顯示為空白(因為這時name已經被設為nil了)

ARC大大簡化了原本使用MRC所需要的程式碼,但凡事有ㄧ好就沒兩好。ARC在程式有使用Block時,如果不小心,很容易引起retain cycle。
關於這個,又可以再寫一篇文章來論述了。

2012-03-08

未來日記

一切都是由神對秋瀨透露出他乃是神的分身"觀察者"的這句話開始。倘若假設位於上界還有所謂這整個世界是由眾多伺服器所組成,人乃是位於上界櫻島市伺服器的AI,而神則是具有supervisor權限(具有改變伺服器運行的時間與空間能力)的人,則這一切故事都合乎邏輯,合乎程式設計的邏輯。

故事的一開始便是由乃(女主角)在Master的主支線上(一周目),贏得了生存遊戲並殺死了所有的參賽者,取得了神的身分後,將整個世界(伺服器)的時間推回了一年前,藉由殺死了一年前的自己,引發了伺服器Create New Branch(這是版本管理的專有名詞,不知道該怎麼翻)的事件,也就是二周目分支世界的建立,未來日記的主要內容便是發生在這個支線上,藉由這個事件影響了在櫻島市伺服器上的所有人(AI)。

在7月28日世界的毀滅日,雪輝(男主角)知曉了由乃的真實身分之後,身為一周目神的僕人姆魯姆魯便將世界的時間推回了兩年前,藉由雪輝救了被自己父母關在牢籠中兩年前的雪乃,又觸發伺服器建立了三周目的分支,而故事的結局Happy End,就是繼承了一周目神的記憶三周目由乃,打破了三周目與二周目的藩籬,很像版本管理的Merge,將二周目與三周目的分支Merge起來,並成為主版本的運行。就如同神所說的,"人死不能復生",這可能是在這殘酷的設定底下,所能想到的最好的結局了。

先不論我這個偏執的版本管理假設是否正確,這部在前年在日本造成轟動的漫畫,紅到富士電視台已經要在這個月推出日劇,我是直到最近才看動畫認識的。我一直很喜歡科幻類的小說與動畫,尤其是日本的科幻類動畫。其實許多優秀的科幻世界idea始祖都是由日本的動畫來的。士朗正宗的攻殼機動隊,電子腦連上網路的架構,其實就是駭客任務世界的基礎。但是像未來日記這樣結合科幻,推理與黑暗特色的好動畫並不多見,也無怪會在前年造成這樣大的轟動,尤其是黑暗這部分的描寫(我一直認為這是日本人的強項 XD),讓我看完後胸口總覺得悶悶的,有一種說不出來的失落感。

2011-11-30

圍繞小乖行星的小呆衛星與小君衛星

算一算時間過得真快,從小乖出生到現在不知不覺地已經過了三個多月了。在這段期間,我和小君就好像軌道上的衛星般地繞著小乖這顆愛哭的小行星團團轉,小君沒日沒夜地擠母奶想要讓小乖的抵抗力能好一點,臉上的黑眼圈因為睡眠不足變深了。而平時有事沒事就要求載她去去竹北的俏媽咪報到,次數多到讓我覺得俏媽咪應該搬個『惠我良多』匾額給她。我則在小君在坐月子中心時,就乖乖地將PS3封印了起來,凍結所有買遊戲和娛樂的預算。在公司只要是有空閒的時候就會偷偷開FB,看看我放上網小乖的照片和學游泳的影片,嘴角便不自覺地微揚了起來。每天下班回家的路上,我們倆的話題總離不開小乖,『小乖今天吃了多少?,在台北有沒有讓媽媽添麻煩?,他今天有沒有好好睡覺?』。

說真的,小乖的報到事前並不在我們的規畫之中。去歐洲度完蜜月後沒多久的一天晚上,小君便打電話跟我說,她懷孕了。剛聽到那句話的時候,其實當下的情緒並沒有太大的起伏,談不上很興奮或是激動。只是呆呆地說『很好呀』,接著就腦筋一片空白地一直傻笑。隨著日子一天天地過去,看到小君的漸漸脹大的肚子,突然覺得生命誕生真的是很奇妙,在媽媽小小的肚子裡竟然能裝下一個活蹦亂跳的小Baby。而隨著預產的日子越來越接近,胎動的次數就越頻繁,晚上夫婦倆的樂趣便是盯著媽咪的肚子,深怕錯過小乖踢小君肚皮的那一瞬間。而小乖的出生,照例地也不在醫生的預期之中,前一天才照過超音波檢查,隔天就比預產期提早了三個禮拜,選擇和小君農曆生日的同一天,來到這世界。剛出生時我抱著哭腫了雙眼的他,對著體重才2900公克的小乖說,『你知道媽咪生你很辛苦嗎?』,小乖沒有回應我,只是哭累了躺在我懷裡,睡的好香好甜。

最近這幾周星期天的傍晚,我和小君準備要從台北回新竹時,小乖都會好像是剛做了 一場噩夢似的,突然驚醒大哭。尤其是這個禮拜,他在小君的懷裡醒來後,就莫名其妙地哭的嘶聲力竭,餵母奶和吃奶嘴等平常會讓他安靜下來的方法都不奏效,我只好把他抱過來不斷地拍背,鼻涕和眼淚流地我的肩膀都是,過了幾分鐘後,大概是哭累了,才趴在肩膀上沉沉地睡著了。我小心翼翼地把他放回嬰兒床上,躡手躡腳地離開房間,生怕發出聲響又把他吵醒。回到新竹後,我打電話給高雄的爸媽,問老媽說『是不是小乖知道我們要回新竹了,捨不得我們走才大哭』,我老媽潑了我這自戀的老爸一頭冷水,『兒子,是你自己想太多了』,ㄟ~~對啦,當父母的誰不是無時無刻為兒女想太多 XD。

2011-08-15

Qt與Nokia漸行漸遠?

從最近Qt 5 的Roadmap我們可以看出,Qt的野心相當大,lighthouse底下platform包含了除了以前就支援了Windows,Linux,MAC,Symbian之外,還新加入了Android與iOSX。等等,Android與iOSX??,Qt要造反了嗎??,既不提N9的Meego系統(其實還是舊系統Maemo)就算了,竟然冒大不諱去擁抱對手的OS陣營。

不可否認地,QT在NOKIA注入整個集團的資源的這兩年中,有很多驚人的發展與進步,LPGL授權吸引了世界各地開源的高手共襄盛舉,sourcecode一年有150萬次的下載記錄,Linux Embedded Device的GUI系統幾乎是QT的天下了(之前去拜訪電子書OEM廠商,也確定放棄自己發展的GUI系統轉而使用Qt)。但自從今年二月NOKIA擁抱WP7,而WP7不支援Qt決策確定後,就註定了兩者漸行漸遠的命運。

Qt的未來在於跨平台的OS數目越多越好,吸引使用者在開發桌上電腦與行動裝置的AP,能夠做到他們所強調的Qt Everywhere。而NOKIA希望QT只在Symbian或是Meego的平台上,幫助仍忠於其平台的開發者就好(難道自己花大錢把Qt扶植起來,卻被對手公司所用嗎?),這兩家公司的商業利益已經不再一致,即使許多新的技術目前還只是支援Symbian,但是在forum上卻不少開發者成立自己的社群,將Qt延伸到他們所鍾愛的平台上。從Developer自動自發將Qt porting到AndroidiOSX上的速度來看,許多開源的Programmers對NOKIA已經失去了耐心,NOKIA將Qt賣給Digia應是遲早的事情了。

2011-07-23

無題

公車司機慵懶地從後視鏡打量著我,車上的乘客已經一個接著一個下車了,只有我狐疑地看著門外的景色,『這裡是台北車站嗎?』,依稀是記得要到車站附近給未出生的Baby買東西。『這裡已經是最後一站了』,不耐煩的語氣彷彿催促著我趕快下車以免耽誤到他的時間,只好硬著頭皮走下車了,卻發現我下車的地點是個高架橋閘道的出口,一下公車便有車子從我的眼前呼嘯而過。慌忙地只好跑向高架橋閘道旁的小徑,一轉彎便發現我走在淡水河的河邊公園上。

大概是接近傍晚的時間吧,河岸邊的路燈與大樓的燈火已經亮了起來,沒入地平線的太陽還不認輸地為遠方的河水增添些許的暗紅色。迎面而來的是穿著陸軍綠色短衫與運動褲跑步的阿兵哥,嘴巴還跟著班長一起精神答數,我心不在焉看著他們穿過我的身旁,『是我走錯路了嗎?』,還來不及細想又看到前面有四個人在打羽毛球,大概是某個家庭的成員出來活動活動筋骨吧。但是打的實在是不怎麼樣,為了閃躲差點打到頭的羽毛球,讓我注意到河堤旁的一棟老建築物,上面寫著飛信倉庫,斑駁的外牆已是爬滿了藤蔓,應該是窗戶的位置卻沒有任何燈火透得出來,只有空洞且深邃的漆黑更添一股陰森的氣息。雙腳的步伐卻又更快了些,過了個函洞,直到看到了遠方台北車站四個霓虹燈大字才讓我心中的大石頭放了下來。

『咦?台北車站在淡水河旁邊嗎?』,爬上連接河濱公園與車站入口的天橋,總覺得不對勁。一接近靠近車站方向的樓梯時,就看到成群結隊的黃色計程車司機包圍著台北車站,亂鳴著喇叭且用擴音器大喊著司法不公,『司法不公?最近有計程車司機被判刑嗎?』,依稀還記得我應該是要到車站買東西的吧?,這時天際的遠方突然響了幾聲悶雷。仔細一聽,好像是人的聲音喔,『趙小霖,不要睡囉』。我醒了,看到一張熟悉的臉,脫口而出的卻是『我想回去』,老婆大概不知道我想回去幹嘛,其實我只是想回去把Baby東西買齊而已。

下午四點五分,一個準爸爸的白日夢。

2011-05-25

MeeGo= 被NOKIA拋棄的孤兒?

今年二月聽到Nokia的CEO Stephen Elop宣佈將推出數款Window Phone 7平台的手機時,一時間我還以為是愚人節的假新聞,馬上到Meego的社群網站瞧瞧,果不出其然,整個社群已經炸翻鍋了,尤其對岸不少針對Meego的平台已經投入許多心力的公司或是個人工作室,更是暴跳如雷,甚至發出不少情緒性的網路評論,天天詛咒微軟和唱誦Meego不死萬歲。其實如果要下Meego已死這個標題,我個人倒是覺得倒是未必,但是對於Nokia對於整個軟體平台的策略卻不敢苟同,從先前買下TrollTech在GUI Frame-work這麼具有創意的公司(Android人機介面佈局的概念就是抄襲Qt的),和花了大錢買下NAVTEQ整合進OVI MAP,竟然拱手將其免費送給微軟,只能說Nokia已經被Apple和Google追的狗急跳牆,病急亂投醫了。難怪在Qt Labs的Forum有人笑罵說,Nokia自己將Stephen Elop這隻木馬從微軟搬進Nokia這座特洛伊城中。

平心而論,這樁交易表面上雖是各取所須,Nokia有了可以進軍高階手機的平台(Symbian已經被證明不能負荷高階手機的需求),微軟則是有了品牌商的加持來推廣WP7。但長遠的看,我認為是微軟佔盡了便宜,連HTC最近都沒出過任一款的Windows Mobile的手機,搭上了Nokia這條大船,我要是M$高興都來不及。(一想到以後在Nokia的手機開發程式,要安裝Windows Studio,我就一整個反感,想到擁腫的MFC和偽JAVA的C#,唉~~~),但是Nokia得到了什麼,表面上在今年他有了微軟的平台可以和Apple和Google一爭長短,但是一路以來和它在Symbian平台合作開發的軟體廠商呢??高階手機有一個很大的特性,就是他與合作開發應用軟體的廠商是一個共生的生命體,為什麼iPhone的手機上的軟體就是比其他家多且品質好,就是因為App Store提供了一個使用者付費的平台,軟體開發商不必傷腦筋怎麼跟使用者收錢,Apple也樂得有越來越多軟體下載來抽成,這讓整個投靠iPhone的軟體公司只要你夠有創意,就不怕斷炊。(Nokia其實也有OVI商店的付費機制,至於Andorid..嗯~Googgle忙著改版沒空理那塊),現在NOKIA將他本來就不多的高階手機市佔率,切了一部份給微軟,這等於是本來就吃不飽的人,你硬是把它的食物分一半以上給別人,請問在原本一直在Nokia智慧型手機上開發軟體的公司,會不會考慮不要再投入成本到這已經爹不疼娘不愛的平台上了呢?,如此惡性循環下去,等於會趕跑幫你手機塑造價值的原本死忠軟體開發商。

ㄟ~~還是幫Nokia說點話好了,其實MeeGo這顆蛋孵不出來,最大的元兇還是Intel,Intel輕忽了ARM在這個領域已經深耕了十幾年的功力,一開始MeeGo就只綁定Intel的ATOM忽略CPU delay的風險就犯了最大的戰略錯誤。在失去了Nokia的背書後,你猜是誰跳出來支援MeeGo,Life is Good的那ㄧ家。媽呀!!我一想到要在韓國的平板電腦上放自己寫的軟體,我不自覺地也開始加入了謾罵Nokia的行列上,"Stephen Elop你這智障,Nokia花大錢把你從M$挖來不是叫你來賣掉NOKIA的"。啊!!好像要幫Nokia說些鼓勵的話!!其實Nokia今年還是會出"一"款Meego的手機,前提是如果Intel孵的出來的話,真是可惜了QT的QML語言,我在給客戶介紹電子標籤,就有用上QML的技術,簡單的幾行程式碼讓客戶可以不必熟悉複雜的資料庫操作,直接看QML的展示動畫就可以了解整個運作流程。QML支援JavaScript的特性讓程式移植到網站上有其便利性,而不用在安裝Plugin。(這其實是我最關注的一點,這項技術會打破網站設計與專業美工的藩籬),說著說著~~我又想譙Stephen Elop。啊!!要當爸爸了,脾氣要修練一下 要修行要修行 XDD。

ps.我的電腦Intel Dual Core2.2G 4G RAM,跑Meego模擬器喘的跟牛一樣,跟一年半前的Andorid模擬器相比,我無言了。而且還要注意一點,不是Intel的CPU還會黑屏喔,Meego還要再加油呀。

2011-01-14

趕進度

在即將到來的農曆新年後,對我和小君來說,人生都起了相當大的變化,小君即將離開熟悉的台北要搬到新竹跟我同住。附近的生活機能說實話,如果不會開車還真的不是很便利,這對視開車為畏途的小君來說是個不小的挑戰。我自己則要改變打從畢業後,大部分的時間幾乎都是自己一個人住的生活方式,雖說日子過的自由自在,但有時總會難免孤單。住在一起後,要懂得更會利用時間,在工作與家庭上取得平衡。回到家後我不再是孤零零的一個人,這種感覺真好。但也要學會習慣另一半的生活方式(有人晚上睡覺會和別人吵架,還會自己脫衣服 =0=),畢竟我們要維持一個家庭的挑戰才剛開始而已。

突然覺得,老天爺真愛跟你開玩笑,從離開工研院到去年的年初,整整四年,我的生活並沒有太大的變化,就像我之前的Blog的名稱一樣,我彷彿在一個叫做工作,不~~是叫做努力工作的島嶼放長假,日常生活規律,除了呆在這個島外,啥地方都沒去。

但是突然間,我已是別人的老公,過了半年後,即將是一個新生兒的爸爸。我還是原本的我,但是扮演的角色不同,感覺上我也變的像是另一個人似的。開玩笑地說,過去這幾年不爭氣地都沒啥進度,只好在這半年內不斷地趕進度,很微妙的感覺,但更多的是惜福,珍惜這份得來不易的幸福。

在Lance和Ann在我家住的那一晚,我們倆在客廳的陽台上吞雲吐霧地聊天(哈~~真懷念有鹽燒小鄭的日子),說到,以前剛出社會的時候,遇到了什麼不平的事,總是會很衝動,不經考慮便會做自己認為對的事情,但是到了現在這個年紀,遇到相同的事,已經學會了克制住內心那個莽撞的自己,凡事先想清楚後才會作決定。聽完我便會心的一笑,畢竟,我們已不再是孓然一身的年輕人,肩上都背負著必須承擔的責任。金璋說"恭喜Lance在倫敦Survive下來",其實我的意見跟Lance一樣,不管在台灣或是英國,哪裡都是戰場,都要想辦法生存下來。希望過幾年再相聚,我們大家都能大聲的說,"Survive!! 我們在人生的戰場上都Survive下來"。

2010-12-01

QML + MeeGo = Nokia + Intel??

最近的工作算是我難得的空檔時間,IC驗證告一段落,新版的IC要回來是下個月的事情,關於電子標籤的軟體架構部份還剛在起草規格的階段。所以終於有空來嘗試些新的技術,到了Qt的官網下載了Qt 4.7.0的版本,來看看Trollers最近在搞什麼新的玩意。一打開說明文件,乖乖地不得了,多了一個QML(JavaScript-like declarative language ㄟ 找不到全名XD)這一個在今年初在網路上吵的沸沸揚揚的新技術,其實在Qt4.6的版本中就在Labs的git server上展示過過這個技術,只是我之前並沒有太多的關注在上面,畢竟在那時QML還算是個未成熟的技術,用了也只是幫別人在debug罷了。

但是這次Qt正式地將QML的這個語言放入4.7版的SDK中,代表了Trollers開發者認可了這項技術的成熟度與實用性。QML是一種類CSS的語言+支援JavaScript,Tarce QML的source code會發現其實它包裝的就是Qt QGraphicsObject與Sub-classes,但QML強調的是UI的整合的易使用性與Fluid-UI的動畫效果,如果要靠C++的做到這件事,可能Source code的大小與recompiling的時間成本會過高,另外簡單易懂的script語言,也相對地增加了只想開發UI的程式設計者的學習意願,畢竟C++的門檻以及嚴謹的類別檢查會讓許多初學程式的人望之怯步。

QML包裝了一些使用者常會用到的元件,例如Rectangle,Image,與Text等等,讓人很間單的上手,也將Fluid的動畫效果有系統地分門別類。我自己用model-view的概念,將之前電子標籤Interaction的UI換成QML的元件,資料則用QAbstractItemModel包裝起來。透過QML,我寫了一個展示標籤的預覽區,以及ESL設定的互動區,彼此用動畫來切換,所需的程式碼大概350行。相信很多的C++的Programmer應該會對原碼的大小羨慕到口水都流出來,當然資料的maintain還是透過C++有效率多了,但是對於只設計UI的美工技術人員來說,是多了一個除了靜態外,還有動態預覽好用的設計工具。

個人覺得自從智慧型手機的熱賣,帶給人機介面設計者不少觀念上的改變,滑鼠有可能會被Touch Panel所取代變成最主要的互動介面(市面上已經有推出許多有Touch Film的LCD Monitor)。將一大堆功能設計在同一個視窗上,對於Touch當做互動介面的使用者來說並不那麼地便利,Programmer在開發UI的同時,不能期待能有滑鼠來精確地移動並點擊,以往使用Tab換頁,用TreeView或是ListView顯示資料的方式可能並不合適。取而代之的是手指滑過要有Flip的效果,內容要隨著滑動的速度來顯示,在手指點擊Item時就要有動畫將內容放大或縮小來做編輯。QML在支援這種概念下有很好的包裝以及類別給Programer使用,但是它也不是完全沒缺點,效率仍是最大的問題,在跨平台的移植上必須多費心對CPU負擔會不會過重。但在個人電腦以及一般高階的手機流暢度是沒有太大的問題,如果有畫面的lag,檢查一下code大都是指定變數的時機不好,而造成多餘的update loop。

昨天和小君在慶城街一號把玩最近Nokia推出的N8,感覺上沒有太大令人驚喜的新鮮感,(還是Sybiam平台 ><),Linux+Intel的MeeGo平台則是下一代Nokia捲土重來的殺手級的產品,(小道消息傳是N9,我個人還蠻期待的,畢竟一路走來我一直是QT的死忠擁護者),和Android的作法一樣,都是搭配Linux的kernel再加上一整包的作業系統來吸引最重要的軟體開發者,只是Google的作法是架構一個Dalvik的虛擬機器來吸引JAVA的開發者無痛跨平台,Nokia則是推出MeeGo SDK平台再加上QML這種讓網頁開發者很好上手的語言,來吸引軟體開發公司加入OVI的陣營。馬還在跑,舞還在跳,找張凳子來看好戲囉。

 ps.視窗的上方是傳統的QT TableView元件,下方則是利用QML寫出的互動介面

2010-11-12

Honeymoon Albums

[2010_10] Honeymoon Day 1
[2010_10] Honeymoon Day 2
[2010_10] Honeymoon Day 3
[2010_10] Honeymoon Day 4
[2010_10] Honeymoon Day 5
[2010_10] Honeymoon Day 6
[2010_10] Honeymoon Day 7
[2010_10] Honeymoon Day 8
 

2010-07-18

竹22->芎林->竹23 竹北悠閒的腳踏車路線

從竹北的家裡往興隆路出發,沿著東興路OK便利商店的小路一直騎,便可以接到竹22縣道,這是一條輕鬆騎單車的路線,沒有太長的陡坡與頻繁的汽車,沿途風景宜人,經常看到全家大小一起騎車的車友。往左可以經過高鐵橋下最後接到大隱琉璃前的腳踏車道,往右就可以一直騎到芎林,再順著縣政府最近規劃的腳踏車道,沿著頭前溪堤防的竹23騎回竹北,全程大概20公里左右。















竹22縣道,往芎林的方向















途中的一片荷花田















燒稻草的農田與遠方的大矽谷名人山莊




















每次來都沒吃到的美濃樓,她的炒板條粉好ㄔㄟ




















網路上鼎鼎有名的布丁蛋糕的總店





















說真的,在這裡插個指示牌還真的有點突兀















竹23縣道,上次帶阿健他們騎,竟然把變速弄錯沒騎上去!!殘念!















遠方的好View與水墨白















回到家已經傍晚哩

2010-05-29

迷霧之子

厚達七百多頁的枕頭書,在忙碌的工作裡還能花兩個多禮拜就看完,只有一句話形容,奇幻小說能寫的如此行雲流水,牛!真牛!!
Sanderson無愧為時光之輪作者指定的接班人,奇幻文學往往使人望之怯步的就是他複雜的世界觀設定,常常書看到一半就要翻到前面去看地圖,或是查詢人物表,來確定這又臭又長的名子到底是哪位。奇幻文學的開山始祖,魔戒就是一個典型的例子,除了創造出精靈與矮人的文字外,托爾金還另外寫了一本幾乎算是設定集的書 "精靈寶鑚"來更詳述地描述中土世界的背景設定,但是這種複雜的設定與故事長度動則超過好幾千頁的厚度,卻往往讓想要踏入這個領域的讀者忘之卻步。

因此奇幻文學的門檻一直以來都不低,甚至常常有聽到朋友說幹嘛浪費時間去看書,直接去看電影就好了呀。但是除了魔戒有長達九個小時,總共三集的篇幅來描述故事劇情外(魔界其實還刪了不少其他旁支的劇情,但是也算是忠於原著並將磅礡的世界觀描述的很完整,例如矮人的摩瑞亞礦坑,精靈的夢思洛林森林與人類最後的白色堡壘),其他的奇幻文學巨著改編至電影就只有一句話形容,『慘不忍睹』。

經典文學龍騎士被改編的虎頭蛇尾,主角彷彿吃了摩登如來神掌的的大還丹(Andy劉的經典作 XD)瞬間就可以向魔王挑戰了。納尼亞傳說活像是給小孩子看的童話故事。波西傑克森,神火之賊,請原諒我稱它是奇幻電影的美國派。造成這一切的最主要的原因都在於,奇幻文學的世界實在是太廣了,導演想在短短的一兩小時內,就讓觀眾進入設定複雜,每部小說長度都像是史詩的故事,實在是太困難。因此也難怪觀眾看不到主角的成長,只能看到,難道你就是那傳說的的XXX,然後就從平凡人瞬間變成拯救世界的大英雄。啊!題外話扯的太多,回到正題,回到正題。

然而迷霧之子的篇幅長度並不輸任一個奇幻文學大作,但它卻有它們沒有的優點。紋、凱西爾、微風、歪腳,主角們的名字簡短卻又極貼切其個性。奇幻元素的設定簡單,鎔金術的應用淺顯易懂,但其組合與戰術變化多端,鎔金術的戰鬥過程緊湊又讓讀者大呼過癮。最主要的是,作者大大降低了奇幻文學閱讀的門檻,有如推理小說劇情緊湊的鋪陳,我幾乎沒有被艱澀的地名或是人名打斷過,進而去查詢書籍設定而掃人興致。文章一氣呵成,眾多的人名但卻都能充分表現出其獨特的個性與重要性,卻不會使焦點模糊。只能說,無怪迷霧之子這三本書能得到平均亞馬遜4.5顆星這麼高的評價。

話說最近看的書除了推理就是奇幻小說,還有兩本有關金融理論的好書。該是時候換換口味了,一直很想買『蘇西的世界』原著小說,不知道看完會不會一把鼻涕一把眼淚的。

2010-04-23

戰龍無畏

去年的十一月間突然接到廣州客戶急電,希望我能跑一趟南海奇美介紹公司的儀器外並與和他們上司解釋其量測的必要性。在趁著等飛機的空檔,機場書店中閒晃時,無意中一本書的封面引起了我的興趣。一隻張牙舞爪的大黑龍與西洋三船桅戰艦這種奇怪的組合,讓我突然想起這就是在灰鷹Blog上大力推薦的戰龍無畏。說起這本書的魅力之大,則有一個有趣的小插曲可以來形容。灰鷹有位在英國出版社上班的友人,想到她是一位重度的奇幻文學迷,貼心的灰鷹因此拿了搶先在美國出版的後兩集平裝本送給她,他那位英國的友人一看到封面,不顧是在書展的眾目睽睽之下,立刻驚叫我的老天爺呀!,即刻跪到在地、連聲道謝。因此,也是身為一位有重度奇幻文學癮的我,當場二話不說就買下來這本書來陪我消磨出差的時間,從一上飛機到香港機場,再轉搭大巴到佛山整整六個小時的旅途,我手上沒有離開過這本書,而隔天要從佛山回香港的大巴上,我就把這第一集三百多頁的書看完了。

有看過怒海爭鋒的人,一定對改編自Patrick O'Brian十九世紀海戰的歷史小說不陌生。看著水手在惡劣的天氣下與巨浪搏鬥,精采的海戰戰術運用,與船舷四五十門大砲齊射的刺激感,再加上本書中最重要的奇幻元素,『龍』,構成了戰龍無畏獨特的世界觀。在十九世紀的火器世界裡,龍是可以被人類眷養的動物。除了龍的品種千奇百怪,有會噴酸液的英國龍,噴火的法國龍,與本書的主角智慧與攻擊力都在其他龍種之上的『中國龍』之外,還有獨特的軍種『龍空軍』的編制。沒錯,一百多年前就有所謂飛龍空軍的存在。在作者豐富的想像力之下,一隻空軍的龍可以配置十多位的空軍人員,除了馭龍者、登龍兵、火槍兵與投彈兵等戰鬥人員外,還有鞍具師、龍醫官等地勤人員一應俱全。此外,除了奇幻元素之外,本書也有不少的歷史小說色彩,在第一集有著名的特拉加法海戰(迫使拿破崙放棄登陸英國的重要戰役,英國海軍打敗了法國與西班牙的聯合艦隊,但也賠上了納爾遜的生命)時空背景,由於主角是中國龍,所以還扯到了當時中國清朝的皇帝,嘉慶君,以及或多或少談到了當時貿易的不平等與中西方文化的差異下,進而埋下了日後戰爭的火種。而在接下來的續集裡,說不定還會寫到著名的滑鐵盧戰役,與拿破崙和威寧頓公爵這兩位重要的歷史人物,很期待作者會如何描寫這段影響人類歷史重大的戰役,畢竟經典電影的Waterloo,我可是看了好幾遍呀。

總之對於喜歡奇幻文學和歷史小說的讀者來說,戰龍無畏是一本絕對不能錯過的好書喔。

2010-04-09

Someone Like You

今天晚上小君mail給我,上面提到了一些她想在婚禮時播的歌曲清單,我隨意點了一首歌的網址後,一聽到旋律沒幾秒鐘,就不自覺地笑了出來。歌曲是Shawn Colvin在1996年 One Fine Day(中文片名是一日鍾情)這部電影中,為電影原聲帶唱的第五首歌曲。會對這首歌印象很深刻是因為我在大學的時候就很喜歡One Fine Day這部電影,慵懶的電影配樂伴隨著紐約客快速的生活步調,給人一種節奏明快但卻輕鬆的氛圍。其中我最喜歡Someone Like You這首歌,簡單的歌詞再加上Shawn富有感情的嗓音,陪伴了我無數個啃書本的夜晚,喔耶~青春無價呀!



I've been searching for a long time
For someone exactly like you
I've been travelling all around the world
Waiting for you to come through.

Someone like you to make it
All worth while
Someone like you keep
Me satisfied. Someone exactly
Like you.

I've been travellin' a hard road
Lookin' for someone exactly like you
I've been carryin' my heavy load
Waiting for the light to come
Shining through.

Someone like you to make it
All worth while
Someone like you to keep
Me satisfied. Someone exactly
Like you.

I've been doin' some soul searching
Just to find out where you're at
I've been up and down this highway
In all kinds of foreign lands

Someone like you to make it
All worth while
Someone like you keep
Me satisfied.

I've been all around the world
Marching to the beat of a different
Drum.
But my baby I have
Realised
The best is yet to come.

Someone like you to make it
All worth while
Someone like you to keep
Me satisfied. Someone exactly
Like you.

2010-02-05

Lag很大 Again!

離上一篇的文章lag了好久,而在這兩三個月中,我的人生也有了很大的變化。換了份新的工作,跟投入了很多心力的舊公司好聚好散地Say Goodbye。工作內容也由過去熟悉的GUI Programming,轉換成OS的porting與driver的撰寫,不能說這樣的轉變不好,只是要熟悉過去較少接觸的工作領域著實花了我不少時間,新的工作環境與公司文化的不同,讓我很小心翼翼地避免踩到地雷,但這禮拜我終於忍不住和大陸同事展開了e-mail的大戰,戰場是android kernel porting,裁判是e-mail上cc的長官們,目前還不知道鹿死誰手,但是至少接到老闆的電話安慰也算聊表一下對我工作態度的肯定吧。

一直以來,我好像不自覺地會走跟別人不同的路,在班上同學都趨之若鶩地往Digital IC Disigner發展時,我是班上少數幾個異類寫上層的AP寫的不亦樂乎,當大家都往有高額分紅配股的公司時,我卻和幾個不怕死的同好,自己出來搞個小公司玩玩,但人生到了某個時間點,總是覺得該要完成些什麼才對,所以最近不時會想著『什麼是人生』這種艱澀難解的大哉問。現在的我已經不會在乎要有多大的事業,多好的成就(雖然我從沒這樣想過),只要我比過去的自己能有進步,在工作上能獲得別人肯定(我想我天生勞碌命),在將來的日子裡,下班的時候能看到小孩熟睡的臉和老婆說聲你回來啦,我就已經心滿意足了。

最近無意間瀏覽到一封以前的長官寄給我的e-mail,標題寫著人生三願,內容說著作者人生的三個願望就是『第一個願望是吃得下飯,第二個願望是睡得著覺,第三個願望是笑得出來。』,其實,越是簡單的道理越是需要時間來體會的,不是嗎?

2009-10-31

時空旅人之妻

很有趣的一本書,不只是因為這本書我整整看了快兩年,中間隔了太久沒有看了,我又從頭再看一遍,也不是因為它令人望之卻步整整五百多頁的厚度,而是時空旅行這種老掉牙的劇情,這位作者寫的很好看,而且還寫的很另類,不著重於探討時空旅行所帶來的因果矛盾,也不是簡單地滿足讀者的英雄主義,只想回到過去闖一番大事業或是拯救人類於未來的大災難。Niffenegger只描述一對夫妻,一個患有身體會不自主穿梭時空罕見疾病的老公,以及一個深愛著過去,現在,未來另一半的妻子。

這本書從一開始的第一頁到最後一頁,都是這對夫妻以第一人稱的自述(中間有穿插其他人的自述啦,但是很少XD),並且只在一個段落之前描述目前的時空狀態以及這對戀人現在的年齡,就像在書的簡介所說的,『相遇那年,她6歲,他36歲;結婚那年,她23歲,他31歲;離別後再度重逢時,她82歲,他43歲。在他倆如此詭譎的戀愛大事記裡,相對於如此真實、強烈的感覺,時間,微不足道……』,沒錯,就是這麼混亂,這也是為什麼我書會看的這麼慢的原因,除了常常要翻到前面重新看之外,隔了太久還會把不知是未來還是過去的劇情忘光了,由其是當兩個Henry在同一個的時空出現時,不靈光的腦袋還會想說這是之前看過的劇情嗎?還是在後面的篇幅才會提起?所以這本書除了有創意的時空旅行、鶼鰈情深的夫妻感情之外,還擁有像是Pairs這種古老的遊戲,既可以訓練記憶力又好玩的功能喔!!!

另外,我還蠻慶幸自己買這本書買的早,至少封面就不是那醜醜的電影兩位主人翁的劇照(所謂電影書衣版),說真的,我對於台灣出版社美編的創意給蠻高的評價地,尤其是書的封面,覺得其實水準不輸國外的出版社,甚至有過之還無不及,看到追風箏的孩子(我不是說電影的兩個小孩放風箏的劇照)或者是直覺的封面,都覺得簡潔的設計讓書昇華至一種藝術品來收藏,但是一旦小說被翻拍成電影後,出版社為了提高書的曝光率,就把再版書的封面換成電影的劇照,這或許是一種相輔相成的行銷手法,但其實會讓書看起來比較粗糙沒有質感,也糟蹋了美編的一番心血,不是嗎?

2009-10-20

竹北高鐵->芎林->竹東->河濱公園

星期六的下午沿著頭前溪的右岸一直往竹東方向騎,騎上竹林大橋到了竹東後,再往竹東車站方向騎,到了第二個紅綠燈左轉,過了內灣線的鐵軌,就可以到竹東的河濱公園,來回大概28公里,河濱公園有很多爸媽帶著小孩子來散步和溜冰,園內有規劃了很多生態教學園區,下次姐帶小朋友來時再帶他們來這裡溜搭溜搭。

題外話,這次的路程比騎去南寮還短,但是卻累的上氣不接下氣,正納悶為什麼體力如此不濟時(難道是上了年紀了嗎?? >< ),回到家才發現,腳踏車鎖的線勾到了煞車線,沿途我等於是一邊騎一邊按著煞車,竟然沒感覺,看來我的腳力是有進步了XD。

2009-09-03

QT for S60

自從Trolltech被Nokia收購,並且今年三月QT4.5授權變成LGPL後,我便從用了六年的Borland陣營變節至QT,原因無他,就是為了QT的跨平台特性,所開發的程式可以porting在Windows、Linux、WinCE、embedded Linux上面。目前公司的產品我也有些部份用上QT的GUI與linguist引擎(真的好用,每個細節都能想到用Design Pattern來設計),但自從我玩上了webkit引擎後,便開始欲罷不能地撰寫測試程式,webkit引擎的規範等於是為了將來的雲端運算鋪路,GUI的元件可以處理html不是什麼新鮮事,css與javascript也不算什麼,但是竟然能透過javascript讓network與local的元件溝通,那所謂的網路與local程式之間的界線,也漸漸地模糊了,換句話說這不就是為了未來的netbook鋪路嗎?

請原諒我大驚小怪,畢竟webkit應用這在iPhone上已經有成功的例子(利用Safari的webkit引擎),Chrome本身也支援webkit,但是QT以是開放原始碼的方式來經營webkit,再加上QT支援S60的SDK已釋出以及Nokia要在兩年內開放Symbian的原始碼這顆震撼彈,那等於是在智慧型手機這塊市場引爆了第三次世界大戰(Windows Mobile、Android、OSX等平台)。

個人認為,Symbian是目前市佔率最高的Mobile OS,Nokia花了四億美金收購Symbian的目的不單單只為了統整使用者介面,只要開發的門檻低(QT+S60)以及授權的低成本優勢,自然會有軟體開發商前仆後繼變節到這個平台,iPhone就是一個很好的例子。用軟體的思維在賣手機,讓成千上萬的軟體開發者成為手機製造商的後盾,畢竟在手機的網路平台上軟體點石成金的故事比比皆是(不知道成功機率多高就是XD),只能說Nokia下這部棋看的真的很遠。



ps.小弟還沒有Nokia的高階手機,寫好的程式不知道porting到哪去,加上我們家的總編輯不准我在花錢了,哪位大爺行行好有二手的Nokia手機借我玩 T_T