「我問了自己這個問題很久,意識到我這次的錯誤並非是編程技術上不小心,而是結構上出現了明顯的年終危機(註一)。我會正視問題(註二),完善程式,不排除尋求專業輔助(註三)。」
「仆過,才懂得企定;直過,才學會淆底。
一個 project,令我更了解自己的不學;
deadline 壓力,使我更體會到一部跑得快的電腦是不可或缺。
加班,成就了 program。公司答應會出糧給我架,仲有我已申請咗年假(註四)。
祝福我吧。」
註一:年終危機 ─ 年底時,公司需要高利潤的產品,即有相當技術水平的程式。
註二:每個程式需達至若干技術水平,除了提昇本身外,更著重成為可用之參考。
註三:如果有的話,太概只有繼續 google。
註四:打算中……希望可以批啦。
Friday, 19 December 2008
Thursday, 18 December 2008
thinkpad everywhere
有關 ThinkPlus USB Travel Keyboard with UltraNav 的詳細開箱介紹,可以參閱「用ThinkPad的熊貓」的 blog。早在 2005 年 3 月我已經想買這個 keyboard了,卻因為它賣七百八十元而卻步,沒想到一拖就是三年零八個月。七百八十元,這個價錢已經是無線鍵盤滑鼠套裝的價格了,為什麼 IBM 可以開天殺價?"The light and compact ThinkPlus USB Travel Keyboard with UltraNav is the ultimate accessory for mobile professionals at the office or on the road. Utilizing the same keyboard and UltraNav pointing device hardware as the legendary ThinkPad notebook system, this keyboard enables all users to share the ThinkPad experience with ThinkPad docking solutions and ThinkCentre desktop systems. In addition, the ThinkPlus USB Travel Keyboard with UltraNav comes with its own carrying case which makes this accessory convenient for traveling." (Lenovo shop - ThinkPad Travel UltraNav USB Keyboard - US English)
好明顯,它是衝著有閒錢的人而來的,就是那種用 ThinkPad 用到上癮的人(或者像我用 laptop 用到上癮),概然閣下要「不論何時何地,都有著用 Thinkpad (laptop) 的感覺」,閣下就得付上相當的費用了。我一直都很懷念以前用 laptop 的感覺,畢竟我用 laptop 的日子可能超過用 desktop 的日子,從 1997-2000 年留學時用 Texas Instrument 的 Extensa T900,到 2002-2003 年間舊公司時經常佔用的 Compaq Armada M700。由於太想用 laptop 了,05 年四月終於走去買了台 ThinkPad。今年八月,公司換了台新電腦,工作上常常需要它的速度,可是用慣了 laptop,亦即用慣了 laptop 的扁平 keyboard 連 palm rest,要轉用普通大鍵的 keyboard,總是無法適應。所以最近終於把這個高價的 ThinkPlus keyboard 給買回來了。

無論是左或右,都有著用 laptop keyboard 的舒適。如果一台跑 Mac OS 的 laptop,應該會更爽。
Wednesday, 17 December 2008
Tuesday, 16 December 2008
熊貓也是熊
上星期看到的新聞(專家﹕受挑釁驚嚇會襲人)哈哈,隨便改動了標點,變成「專家受挑釁,驚嚇會襲人」,有趣。
『【明報專訊】對於大熊貓安安咬傷護理員,海洋公園主席盛智文說,牠們再可愛也是「熊」(編按﹕熊貓與熊屬不同科),有攻擊能力』,其實那個海洋公園主席真的清楚熊貓和熊的分別?定是貪口爽?
『內地偶爾也有大熊貓咬傷人的事件,但多數是遊人走得太近,甚至是挑釁熊貓才會受襲』。熊貓『外表溫馴,但當有陌生人進入其活動區,出於領域意識和驚嚇,便會攻擊人。今年6月,蘇州動物園曾發生大熊貓咬人,有婦人與孩子在鐵欄外與大熊貓拍照,其間大熊貓突發狂,咬斷婦人右手拇指,動物園指可能婦人伸手進欄撥弄大熊貓,令熊貓獸性大發。去年8月,北京動物園亦發生類此事件,有少年闖進熊貓館,多番挑釁熊貓,結果雙腿被咬至見骨。』
至小在學校就常常說:先撩者賤,打死無怨。近期的香港寬頻廣告也有教導大家嘛,當個死肥仔去撩隻熊貓,熊貓會拿掉熊貓頭,彈出一條光纖。
熊貓也有壓力,無啦啦做乜去撩佢呢?熊貓也是熊,受挑釁驚嚇會襲人、咬人手指、咬至見骨和彈光纖。
『【明報專訊】對於大熊貓安安咬傷護理員,海洋公園主席盛智文說,牠們再可愛也是「熊」(編按﹕熊貓與熊屬不同科),有攻擊能力』,其實那個海洋公園主席真的清楚熊貓和熊的分別?定是貪口爽?
『內地偶爾也有大熊貓咬傷人的事件,但多數是遊人走得太近,甚至是挑釁熊貓才會受襲』。熊貓『外表溫馴,但當有陌生人進入其活動區,出於領域意識和驚嚇,便會攻擊人。今年6月,蘇州動物園曾發生大熊貓咬人,有婦人與孩子在鐵欄外與大熊貓拍照,其間大熊貓突發狂,咬斷婦人右手拇指,動物園指可能婦人伸手進欄撥弄大熊貓,令熊貓獸性大發。去年8月,北京動物園亦發生類此事件,有少年闖進熊貓館,多番挑釁熊貓,結果雙腿被咬至見骨。』
至小在學校就常常說:先撩者賤,打死無怨。近期的香港寬頻廣告也有教導大家嘛,當個死肥仔去撩隻熊貓,熊貓會拿掉熊貓頭,彈出一條光纖。
熊貓也有壓力,無啦啦做乜去撩佢呢?熊貓也是熊,受挑釁驚嚇會襲人、咬人手指、咬至見骨和彈光纖。
Monday, 15 December 2008
casting in c++
從來沒注意玩 casting 可以有幾多花臣,平常只是做普通承繼類的 casting。早前對比兩個相似的 timers 時,發覺其中一個用上兩個 casting,於是網上一查,原來 casting 可以很暴力,再看看一書 The C++ Programming Language 的附錄:casting away const (p.414),暈。
const_cast、static_cast、reinterpret_cast
(src: http://www.hala.bz/read.php?tid=7186&toread=1&fpage=1)
const_cast用於一些特殊場合可以覆寫變數的const屬性,利用cast後的指標就可以更改變數的內部,其語法如下:
const_cast<target_type>(expr)
以下為const_cast的簡單示範:
#include iostream
using namespace std;
void foo(const int*);
int main() {
int var = 10;
cout var = var endl;
foo(&var);
cout var = var endl;
return 0;
}
void foo(const int* p) {
int* v = const_castint* (p);
*v = 20;
}
執行結果:var = 10
var = 20
static_cast可用於轉換基底類別指標為衍生類別指標,也可用於傳統的資料型態轉換,其語法如下:
static_cast<target_type>(expr)
以下為static_cast的簡單示範:
#include iostream
using namespace std;
int main() {
int intVar;
float fltVar = 3.14159;
intVar = static_castint (fltVar);
cout intVar = intVar endl;
return 0;
}
執行結果:intVar = 3
reinterpret_cast用於將一種型態的指標轉換為另一種型態的指標,例如將void*轉換為char*,其語法如下:
reinterpret_cast<target_type>(expr)
以下為reinterpret_cast的簡單示範:
#include iostream
using namespace std;
int main() {
int i;
char* str = 測試;
i = reinterpret_castint (str);
cout i;
return 0;
}
執行結果:134514308
Google
const_cast、static_cast、reinterpret_cast
(src: http://www.hala.bz/read.php?tid=7186&toread=1&fpage=1)
const_cast用於一些特殊場合可以覆寫變數的const屬性,利用cast後的指標就可以更改變數的內部,其語法如下:
const_cast<target_type>(expr)
以下為const_cast的簡單示範:
#include iostream
using namespace std;
void foo(const int*);
int main() {
int var = 10;
cout var = var endl;
foo(&var);
cout var = var endl;
return 0;
}
void foo(const int* p) {
int* v = const_castint* (p);
*v = 20;
}
執行結果:var = 10
var = 20
static_cast可用於轉換基底類別指標為衍生類別指標,也可用於傳統的資料型態轉換,其語法如下:
static_cast<target_type>(expr)
以下為static_cast的簡單示範:
#include iostream
using namespace std;
int main() {
int intVar;
float fltVar = 3.14159;
intVar = static_castint (fltVar);
cout intVar = intVar endl;
return 0;
}
執行結果:intVar = 3
reinterpret_cast用於將一種型態的指標轉換為另一種型態的指標,例如將void*轉換為char*,其語法如下:
reinterpret_cast<target_type>(expr)
以下為reinterpret_cast的簡單示範:
#include iostream
using namespace std;
int main() {
int i;
char* str = 測試;
i = reinterpret_castint (str);
cout i;
return 0;
}
執行結果:134514308
Friday, 12 December 2008
從物理邏輯角度看聖誕老人
又到聖誕,係時候貼吓相關既文章。(三年前電郵裡收到的)
《從物理邏輯角度看聖誕老人》
科學地解釋了聖誕老人不存在的原因:
全世界大約有二十億個未滿十八歲的兒童或是青少年,但是由於聖誕老公公並不理會信奉回教、印度教、猶太教、以及佛教的小孩(日本例外),因此根據人口統計局的資料,聖誕老公公在聖誕節的工作量只有所有小孩總數的百分之十五,也就是大約三億七千八百萬人。根據統計,平均每戶人家有三點五個小孩,如果假設每戶人家至少有一個乖小孩,那麼聖誕老公公總共要去一億零八百萬戶人家。
感謝地球自轉與不同的時區,如果聖誕老公公由東方出發,一路向西行,那麼他大約有三十一個小時的聖誕節來工作。這段時間內他必須每秒鐘拜訪967.7戶人家,也就是說,在每個家裡有好孩子的基督教家庭中,聖誕老公公有大約千分之一秒的時間來停放好雪橇、下車、跳下煙囪、在長統襪中塞入禮物、把剩下的禮物散佈在樹下、吃掉留給他的零食、爬上煙囪、跳上雪橇然後啟程趕到下一戶人家去。
為了計算方便,我們假設這一億零八百萬戶人家的位置相當平均的分配在地球表面上,那麼每兩戶人家間平均相隔約780公尺,而總旅程長達七千五百五十萬公里,這還不計算中途上廁所或休息,聖誕老公公的雪橇至少以秒速650公里以上的速度行駛,大約是音速的三千倍。比較起來,人類製造速度最快的載人乘具-尤里西斯號太空船,則是以秒速27.4公里的笨拙速度行進;超人力霸王每秒鐘只能飛行約一公里;另外,一隻普通的麋鹿最快可以用時速15公里的速度奔跑。
另外關於載重的部份,假設每個小孩所收到的禮物只是一盒普通包的樂高積木遊戲(大約兩磅重),則光是禮物的部份就有五十萬噸重。在地面,一隻普通的麋鹿僅能拖動三百磅以下的重量。假設一隻會飛的麋鹿的力量是普通麋鹿的十倍,聖誕老公公仍然需要三十六萬頭飛行麋鹿來托運禮物。但是三十六萬頭飛行麋鹿本身的體重大約是五萬四千噸,再加上能夠負荷如此龐大重量的雪橇,使得總重量超過六十萬噸重,大約是三十隻大恐龍葛吉拉,或是七十八艘依莉沙白女皇號郵輪的重量。
六十萬噸重的物體以秒速650公里的速度在大氣層內移動,就像太空船重返大氣層時一樣會因與空氣摩擦而產生高溫。跑在最前面的兩隻麋鹿每秒鐘將會吸收1.43 X 1.019焦耳的能量,使得可憐的麋鹿在瞬間燃燒爆炸,爆炸威力將會將其後的所有麋鹿群也一起炸的粉身碎骨。另外以三千倍音速前進所產生的強力音障衝擊波將會完全摧毀所有的麋鹿群、雪橇及禮物、一切都會在千分之四點二六秒之內全部瞬間汽化掉,大約剛好是在聖誕老公公到達第五戶人家的同時。
但是,這一切其實都無關緊要。因為聖誕老公公在千分之一秒內從靜止加速到秒速650公里,使他必須承受一萬七千五百G的重力加速度。即使聖誕老公公苗條到只有體重只有兩百五十磅,他仍然會被四百三十一萬五千零十五磅的壓力壓扁在雪橇的後座上,瞬間粉碎他的器官與骨骼,只剩下一團肉醬。
因此,如果有聖誕老公公的話,他現在已經死了。
《從物理邏輯角度看聖誕老人》
科學地解釋了聖誕老人不存在的原因:
全世界大約有二十億個未滿十八歲的兒童或是青少年,但是由於聖誕老公公並不理會信奉回教、印度教、猶太教、以及佛教的小孩(日本例外),因此根據人口統計局的資料,聖誕老公公在聖誕節的工作量只有所有小孩總數的百分之十五,也就是大約三億七千八百萬人。根據統計,平均每戶人家有三點五個小孩,如果假設每戶人家至少有一個乖小孩,那麼聖誕老公公總共要去一億零八百萬戶人家。
感謝地球自轉與不同的時區,如果聖誕老公公由東方出發,一路向西行,那麼他大約有三十一個小時的聖誕節來工作。這段時間內他必須每秒鐘拜訪967.7戶人家,也就是說,在每個家裡有好孩子的基督教家庭中,聖誕老公公有大約千分之一秒的時間來停放好雪橇、下車、跳下煙囪、在長統襪中塞入禮物、把剩下的禮物散佈在樹下、吃掉留給他的零食、爬上煙囪、跳上雪橇然後啟程趕到下一戶人家去。
為了計算方便,我們假設這一億零八百萬戶人家的位置相當平均的分配在地球表面上,那麼每兩戶人家間平均相隔約780公尺,而總旅程長達七千五百五十萬公里,這還不計算中途上廁所或休息,聖誕老公公的雪橇至少以秒速650公里以上的速度行駛,大約是音速的三千倍。比較起來,人類製造速度最快的載人乘具-尤里西斯號太空船,則是以秒速27.4公里的笨拙速度行進;超人力霸王每秒鐘只能飛行約一公里;另外,一隻普通的麋鹿最快可以用時速15公里的速度奔跑。
另外關於載重的部份,假設每個小孩所收到的禮物只是一盒普通包的樂高積木遊戲(大約兩磅重),則光是禮物的部份就有五十萬噸重。在地面,一隻普通的麋鹿僅能拖動三百磅以下的重量。假設一隻會飛的麋鹿的力量是普通麋鹿的十倍,聖誕老公公仍然需要三十六萬頭飛行麋鹿來托運禮物。但是三十六萬頭飛行麋鹿本身的體重大約是五萬四千噸,再加上能夠負荷如此龐大重量的雪橇,使得總重量超過六十萬噸重,大約是三十隻大恐龍葛吉拉,或是七十八艘依莉沙白女皇號郵輪的重量。
六十萬噸重的物體以秒速650公里的速度在大氣層內移動,就像太空船重返大氣層時一樣會因與空氣摩擦而產生高溫。跑在最前面的兩隻麋鹿每秒鐘將會吸收1.43 X 1.019焦耳的能量,使得可憐的麋鹿在瞬間燃燒爆炸,爆炸威力將會將其後的所有麋鹿群也一起炸的粉身碎骨。另外以三千倍音速前進所產生的強力音障衝擊波將會完全摧毀所有的麋鹿群、雪橇及禮物、一切都會在千分之四點二六秒之內全部瞬間汽化掉,大約剛好是在聖誕老公公到達第五戶人家的同時。
但是,這一切其實都無關緊要。因為聖誕老公公在千分之一秒內從靜止加速到秒速650公里,使他必須承受一萬七千五百G的重力加速度。即使聖誕老公公苗條到只有體重只有兩百五十磅,他仍然會被四百三十一萬五千零十五磅的壓力壓扁在雪橇的後座上,瞬間粉碎他的器官與骨骼,只剩下一團肉醬。
因此,如果有聖誕老公公的話,他現在已經死了。
Sunday, 7 December 2008
christmas wish list
以前在 facebook 或都 blog 裡都寫過這樣的東西,例如「如果想送我禮物,可以考慮這個那個」的。前些日子還在想,聖誕要給自己買什麼,地鐵紀念車?PS3 震制?5.1 speakers?EeePC?ThinkPad X200?MacBook?噢,你現在就想要送禮物給我嗎?好,今日就給你一個參考清單吧:
< $100:港幣$100
$100-$199:港幣$100x2
$200-$499:港幣$500
$500-$999:港幣$500x2
$1000-$2000:港幣$500x4
> $2000:港幣$500x(4 + N)
註:可接受港幣$1000大鈔但有機會被沒收後當無數。
朋友,你想到你的聖誕禮物清單沒有?還是你可以像劉德華飾演的墨者革離說一句「我什麼都不缺」?其實,上述除了港幣之外,沒有一樣東西我沒收到會死掉,也沒有一樣東西能令我現在的生活更精采,至少這一刻不會(小黑還算健健康康)。但我並非那麼高尚能說一句「我什麼都不缺」。
人總是在想活著時需要什麼,那麼,死後呢?如果真的有冥通銀行的話,只能單靠後人燒錢接濟豈不是太可憐嗎?聖誕節是給你放假拆禮物還是給你說明,你需要的是一個 聖 誕 節。
< $100:港幣$100
$100-$199:港幣$100x2
$200-$499:港幣$500
$500-$999:港幣$500x2
$1000-$2000:港幣$500x4
> $2000:港幣$500x(4 + N)
註:可接受港幣$1000大鈔但有機會被沒收後當無數。
朋友,你想到你的聖誕禮物清單沒有?還是你可以像劉德華飾演的墨者革離說一句「我什麼都不缺」?其實,上述除了港幣之外,沒有一樣東西我沒收到會死掉,也沒有一樣東西能令我現在的生活更精采,至少這一刻不會(小黑還算健健康康)。但我並非那麼高尚能說一句「我什麼都不缺」。
人總是在想活著時需要什麼,那麼,死後呢?如果真的有冥通銀行的話,只能單靠後人燒錢接濟豈不是太可憐嗎?聖誕節是給你放假拆禮物還是給你說明,你需要的是一個 聖 誕 節。
好作品
三個多月前在手機上寫了一句:『最近一直在忙公司的 projects,還有那永無休止的 interviews,在香港找個似樣的 programmers 真的有這麼難嗎?』
blog 寫到這裡就停了,也沒有貼上來。沒錯,當時忙得一頭煙,公司有著一堆新的概念要做舊的程式要更新,為了收入又打算做一堆新瓶舊酒的 easy-money 應用;可是,舊酒都發霉,怎能再用呢?沒多久,那個 fresh grad programmer 辭職了,交給他的所有 projects,都又爛又多 bugs,唉,空有書本知識而缺乏實際經驗的 programmers 是不能擔大旗呢。香港的三三四來得真晚,我認為,香港需要的似乎是三三五呢!
對新人存有期望,是我太幼稚吧?要公司出好作品,就得要建立鞏固系統的程式作為底子,按照 80/20 的定律,這必需要花額外的心機。在這裡,誰有這樣的勇氣?誰能以一敵百?誰能令我刮目相看?做返齣好戲呢?難道到了最後還得靠我自己一個人麼?
此時,iTunes 正播著李克勤的《紅日》,真諷刺。「做人編程沒趣味」嗎?「顛沛流離」、「曲折離奇」正好說明 Symbian 這個系統吧?「徬徨時我也試過獨坐一角像是沒協助」,以前碰到難題時,就算是我的頭目也無法解答。近期所作的 programming 已經超出以前所做的難度好幾倍,但似乎已經不再出現徬徨這種情況了,甚至出現一種抗奮的心情,就像是要大叫「踏平梁城」的氣勢(參《墨攻》)。
「踏平『仙變人』!!」嗯,不錯不錯。不過這裡好像只有我一個人而已,不打緊,一台 RX-78-2 都可以抵住一小隊渣古 II 型,我都可以。。。吧
blog 寫到這裡就停了,也沒有貼上來。沒錯,當時忙得一頭煙,公司有著一堆新的概念要做舊的程式要更新,為了收入又打算做一堆新瓶舊酒的 easy-money 應用;可是,舊酒都發霉,怎能再用呢?沒多久,那個 fresh grad programmer 辭職了,交給他的所有 projects,都又爛又多 bugs,唉,空有書本知識而缺乏實際經驗的 programmers 是不能擔大旗呢。香港的三三四來得真晚,我認為,香港需要的似乎是三三五呢!
對新人存有期望,是我太幼稚吧?要公司出好作品,就得要建立鞏固系統的程式作為底子,按照 80/20 的定律,這必需要花額外的心機。在這裡,誰有這樣的勇氣?誰能以一敵百?誰能令我刮目相看?做返齣好戲呢?難道到了最後還得靠我自己一個人麼?
此時,iTunes 正播著李克勤的《紅日》,真諷刺。「做
「踏平『仙變人』!!」嗯,不錯不錯。不過這裡好像只有我一個人而已,不打緊,一台 RX-78-2 都可以抵住一小隊渣古 II 型,我都可以。。。吧
Subscribe to:
Posts (Atom)