Tuesday, November 27, 2007

troubleshooting

一些troubleshooting的記錄

M$N不能上?
帳號密碼已經確定沒錯, 只差還沒把M$N移掉 重新安裝
檢查一下IE的proxy是否有設定
因為M$N會參考這個設定連上網路
========================================================
while (-1) ; // <-- it's infinite loop
========================================================
char str[]="string";
strlen(str); // 6
sizeof(str); // 7
========================================================
signed char sc8=0x80;
sc >>= 1; // 0xC0
unsigned char
uc8=0x80;
uc >>= 1; // 0x40
========================================================
global 變數重覆定義問題 (未給初始值)
01.c
------------
#include <stdio.h>

char buf[1024];

int main(){}

02.c
-----------
#include <stdio.h>

char buf[1024];

>gcc -o output 01.c 02.c
這時候可以編譯成功, 也可以執行
但會有個風險, 就是2份file, 各自以為這個global變數僅屬於自己擁有而已
因此, 當其中一個改變global變數的內容, 也會反應到另一個上面

解決辦法
1) 加static在global變數之前
2) gcc -fno-common
========================================================
fgets的問題

避免用fgets抓binary的資料, 因為這個函式會預設抓出一行字串出來, 也就是遇到"換行字元", "檔案結尾", 或"達到給定字數"之後, 就會跳出, 而binary檔, 可能會含0x0A, 這會使得程式增加更多不確定性.
建議用fread()或read()代替
========================================================
sol1,
while ( curr=head; curr; curr=curr->next) {
del(curr);
}
sol2,
while ( curr=head; curr; curr=next ) {
next=curr->next;
del(curr);
}
sol1的問題在於下一個node會在del()時就被修改, 導致要取下一個node,造成問題
sol2可以解決這個問題

========================================================

int opt;
while ( (opt=getopt(argc, argv, ""))>0 ) {
...
}

opt must be decleared as integer.
When opt declared as char, the loop will not terminate.

Saturday, October 27, 2007

new apple bluetooth keyboard

這是我用蘋果新的藍芽鍵盤打出來的

呵呵 雖然已經買了有線的那一款
但這個無線這款才是我的最愛
因為它又輕又薄 又沒有獨立的數字鍵
這才是我最想要的鍵盤了
整個感覺就是方便拿了就走 隨時可以上手

又可以放在大腿上打字
這種感覺真是爽

這個鍵盤將會是我在辦公室的新兵器

DSC04574

DSC04583

DSC04580

DSC04586

DSC04588

DSC04589

DSC04590

Wednesday, October 24, 2007

thinking in swimming

游泳的時候想什麼

剛開始游的時候 覺得很輕鬆
游完一趟之後 身體覺得累了 開始胡思亂想

2個不同的聲音 一直在腦袋裡打轉
Q:要不要停下來休息一下?
A:不行休息 身體累代表正在消耗能量 這是與贅肉的對抗
愈累 我就使上全身的力量前進

...愈游愈累
...使上力量

前面的女人 不要擋我的路

infinite loop

生活本身就是個無窮迴圈

早上起床之後
刷牙洗臉 噴香水 準備出門
繞著同樣的路
吃著一樣的早餐
瀏覽習慣的網站
跟一樣的同事工作
中午吃同樣的午餐
時間到了 又開始睡午覺
起來之後 看一下相同的網頁
開始做了點事 專心一下子之後
起身走走 串串門子
準備下班
又走相同的路回家
晚餐永遠不知道吃什麼
洗澡完後 睡覺前 看了點電視 上網一下子

明天繼續一樣的日子

Sunday, October 21, 2007

強烈的信念

上星期只為解了一個bug

嗯 最後那個問題解了

這個bug很特別
平常這個功能是不會有問題的
不過系統loading重的時候 就會有問題
所以打從一開始 我就沒有打算解它
因為我一直認為是系統內部的問題

要不是我主管一直窮追猛打
我可能也沒有機會知道真正的原因
這是一個不該出錯的問題
只能在很critical的時候 才會發現

我覺得我主管對邏輯與理性的信念 十分執著
不過也就因為他的執著 所以最後問題解了

在事情尚未明朗之前 唯有尋著真理前進
才能有撥雲見日的一天

Friday, October 05, 2007

我們需要不經意的bug

一個小程式, 搞了一個晚上跟白天

這次將輸出存成一個檔案 順便當做debug用
程式慢慢地一步一步邊寫邊測試
快到結尾時 發現怎樣也不像是理想的結果

回頭來, 修正一些可能有問題的點之後
結果一樣不理想

問題總是可以解決的 只是要先知道問題在哪

最後 原來存檔時 永遠都是加在檔案的後面
所以不管怎麼檢查檔案差異性 會發現永遠都有問題存在

不過 重點不在這裡
如果今天沒有這個不經意的錯
我還會回頭去"重新檢視"程式碼嗎?
並且發現這些有問題的點嗎?

有時候 要停下腳步 重新檢視以前
放慢腳步 比起 一步登天 還要踏實 而且比較不會出錯
慢才會穩 穩才會快

Saturday, September 29, 2007

南投行

上次去日月潭的路線圖

新竹南下三號國道->草屯->台14線->土城->雙冬->福溝->柑子林->北山坑->叉路口往南->台21->魚池->九族文化村/日月潭

要往清境, 在叉路□往北, 會先到埔里, 往左走, 是連外道路, 比較快; 往右走, 埔里市區, 會經過埔里酒廠

題外話...
沒錢買衛星導航 gps (就算有錢也不想買), 拿張地圖, 到處跑來跑去
為什麼大部份人開車還需要衛星來導航呢? 大部分的原因, 可能在於地標標示不清楚吧

那為什麼地標指示會讓人看不懂呢?
相關部門不會做事
所以醫生大老闆不想繳稅 養米蟲
把錢留下來買GPS

Thursday, September 13, 2007

costco 好市多 物品單價

曾經買過的東西及價格

T=已含稅

2024/03/16
磷蝦油 1289T

2024/02/03
小善存加鈣100CT 799T
葡萄王樟芝王 1599T
IRIS收納盒四入 569T
美珍香休閒雞肉乾 549T
科克蘭濕式衛生紙 525T
草莓迷你戚風蛋糕 239T

2024/01/27
東京藏人純米吟釀 799T
梅乃宿黑標梅酒 749T
日本草莓520G 899
多用途吸水墊 669T
白鶴翔雲大吟釀 1299T

2024/01/01
養命酒1L 成藥 869T
肌立痠痛藥布OTC 499T
BISCO夾心200片 399T
花枝漿(台豬) 579T
石安溫泉蛋16PK 315T
蘇菲超熟睡28CM 359T
橘子工坊洗衣精 539T
台灣羅勒去骨清雞 699T
五月花妙用衛生紙 349T

2023/09/23
正官庄活蔘28D 949T
多用途吸水墊 689T
SOODATEK傳輸線*3 679T
亞培小安素粉 1749T
橘子工坊洗衣精 539T

2023/07/29
KS抽取式衛生紙 389T
科克蘭濕式衛生紙 519T

2023/04/29
美舒律蒸氣眼罩 729T
石安溫泉蛋16PK 315T
石安滷蛋白丁原味 339T
美珍香休閒豬肉乾 569T
曼秀雷敦AD乳膏 729T
舒服能日拋3.75 1599T

2023/04/08
石安溫泉蛋16PK 315T
石安滷蛋白丁原味 339T
Applepress蘋果汁 279T
傳六什錦豆730G 375T
橘子工坊洗衣精 539T
Mariani 葡萄乾 195T
小型立體保冷袋 269T

2023/03/25
石安滷蛋白丁原味 339T
石安溫泉蛋16PK 315T
石安滴雞精茶碗蒸 299T
兒童上衣四件組 539T
KS養殖大生蝦仁 555
舒潔濕式衛生紙 579T
KS三層盒裝面紙 419T

2023/02/11
曼秀雷敦AD乳膏 729T

小善存加鈣100CT 799T
石安滷蛋白丁原味 339T
石安溫泉蛋16PK 315T
美舒律蒸氣眼罩 729T
美珍香休閒豬肉乾 569T
傳六什錦豆730G 375T
多用途吸水墊 699T
KS抽取式衛生紙 389T

2022/12/24
磷蝦油 1299T
BK-BRAIN QUEST 249
石安溫泉蛋16PK 315T
石安滷蛋白丁原味 339T
香醇巧克力可可粉 359T
美國特選牛小燒烤 2437

2022/11/27
蜜蜂工坊蜂蜜牛奶 399T
智利藍莓 459T
健司奶油胚芽餅乾 309T
美珍香休閒豬肉乾 569T
3M細滑牙線棒組合 599T
格力高杏仁飲 399T
KAGI巧克力威化餅 399T
麻油雞飯 369T
白蘭氏雙認證雞精 1485T

2022/1023
科克蘭濕式衛生紙 529T
Kagi威化餅節慶版 399T
Bisco夾心餅乾 299T
適樂膚保濕乳液 949T
月桂冠純米吟釀 559T
月桂冠完熟梅酒 539T
石安滷蛋白丁原味 339T
石安溫泉蛋16PK 315T

2022/09/24
豬肉熱狗&汽水 50T
Kagi威化餅節慶版 399T
石安溫泉蛋16PK 315T
SOODATEK傳輸線*3 679T
石安牧場杏仁豆腐 225T
橘子工坊洗衣精 539T
小善存加鈣 799T

2022/08/28
BK Ultimate Book 479T
TIM經典黑面膜組 615T
KS抽取式衛生紙 389T
桂格5x參蔘飲 1699T
多用途吸水墊 669T

2022/08/28
優識立葉黃素130 985T
Megared 磷蝦油 1299T

2022/07/17
廚房紙巾140S/12R 639T
和風鰹魚高湯包 289T
高山高麗菜900G 149
Calbee水果麥片 299T
球芽甘藍600G 189

2022/03/26
熊本海苔洋芋片 169T
桂格5X參蔘飲 1699T
橘子工坊洗衣精 489T
Calbee 水果麥片 329T
KS無調味綜合堅果 599T
KLEENEX盒裝面紙 369T
靠得住日用衛生綿 305T
多用途吸水墊 559T
科克蘭濕式衛生紙 465T

2022/02/28
安素原味營養品 1719T
橘子工坊洗衣精 489T
適樂膚潤澤修護霜 949T
舒特膚潤膚乳霜 379T
BK-BRAIN QUEST 249
BK-我愛唱歌繪本 349T
BK-宮西達也繪本 699T

2021/03/13
小善存加鈣100CT 785T
WAKAMOTO若元錠 819T

2020/11/28
桂格5x參蔘飲 1699T (-200)
BK-趣味收銀機 349T
飛利浦11W白光 549T
沙嗲去骨清雞腿 726T
產銷履歷四季豆 199
山賊燒去骨清雞腿 712T
BROOKSTONE洗衣籃 339T
克補肝精膠囊 1399T

2020/11/01
Frozen2 公主2入 1159T
萬用紙抹布10入 629T
桂格5x參蔘飲 1699T
多用途吸水墊 539T
Domestos 馬桶滾輪 299T
KS抽取式衛生紙 319T
石安滷蛋白丁原味 295T

2020/08/15
北海鱈魚香絲600g 265T
Buffalo男T恤 319T
Levi's男工作褲 929T
烏龜玉米脆片 439T
3M細滑牙線棒組合 599T
純在芭樂檸檬綠茶 155T
五月花妙用衛生紙 299T

2019/11/30
五月花妙用衛生紙 299T
KS抽取式衛生紙 319T
MOONY 母乳墊 365T
Softitex 印花毯 499T
BK-陸海空遊戲書 445T
多用途吸水墊  549T
台灣豬腹協排切塊 492
東北酸白菜鍋 469

2019/08/17
廚房紙巾 160S/12R 659T
有機轉型期火龍果 265
KS垃圾袋 349T
美祿麥芽牛奶24PK 295T
BODUM茶壺1公升 799T

2019/05/04
NM檸檬酸鈣+D3+K2 645T
新寶納多維他命 1299T
BK-畫板故事書 219T

2019/04/14
多用途吸水墊 549T
NIKE男運動短褲 889T
ADIDAS男運動短褲 599T
KS抽取式衛生紙 319T
五月花妙用衛生紙 299T
GIOVANNI洗髮精 395T

2018/05/21
博士倫多效保養液 519T
B&L SOF 1-D -3.75 1599T
Bounty 隨意撕紙巾 899T
五月花妙用衛生紙 299T
KS抽取式衛生紙 299T
Alphamic 烹調紙 349T
多用途吸水墊 499T
KS嬰兒濕巾 685T

2018/02/27
科克蘭濕式衛生紙 525T
舒潔淨99濕紙巾 198T

2018/02/21
浴廁林浴間清潔劑 299T
KS抽取式衛生紙 299T
五月花妙用衛生紙 299T

2017/12/21
台灣雞清胸肉 442
傳貴有機微甜豆漿 169T
台灣烏骨雞切塊 285
KS抽取式衛生紙 299T

2017/10/24
台灣雞清胸肉 439

2017/10/01
TWS結晶冰糖 2KG 113T
五月花妙用衛生紙 299T
KS羊肉乾狗糧 1069T

2017/09/02
有機銀耳300G 139
Tropical 椰奶酥捲 225T
台灣去骨清雞腿 492
泉水1.5L/12入 249T

2017/08/12
手工黃金芝麻醬 369T
紅豆食府烤麩 259T
Tropical 椰奶酥捲 225T
KS抽取式衛生紙 299T
多用途吸水墊 539T

2017/06/25
德國豬腳 370T
傳貴有機微甜豆漿 169T
台灣雞清胸肉 439

2017/06/03
米森有機黑豆 329T
KS嬰兒濕巾 699T
幫寶適拉拉褲L 659T

2017/05/13
KS緩釋魚油軟膠囊 549T

2017/04/08
B&L SOF 1-D 1719T
CARTER'S 嬰兒套裝 385T
KS抽取式衛生紙 299T
台灣雞清胸肉 439
博士倫多效保養液 519T
A&H 小蘇打粉 249T








2017/03/02
KS羊肉乾狗糧 1149T
鋁箔紙 100 公尺 229T
CTC起司餅乾 139T

2017/02/12
KS超濃縮洗衣精 529T
汰漬無色香洗衣精 589T
3M單線細滑牙線棒 1299T
拋棄式防溢乳墊 579T
KS嬰兒濕巾 699T
五月花妙用衛生紙 299T
舒潔抽取式衛生紙 389T
KEEP COOL保冷袋 198T
台灣雞清胸肉 439
總匯披薩單片 60T
雞肉捲 89T

2016/12/26
崇德發黑麥汁24CN 625T
台灣雞清胸肉 439
KS嬰兒濕巾 699T
5插1.8米延長線 399T

2016/11/25
台灣雞清胸肉 442

2016/10/20
KS羊肉乾狗糧 1179T
總匯披薩單片 60T

2016/10/12
傳六什錦豆 385T
台灣雞清胸肉 436
舒潔抽取式衛生紙 389T

2016/09/11
水蓮400公克 89
好菇道組合6入 139
多用途吸水墊 569T
本產珍珠芭樂 3KG 229
輕井澤高原啤酒 339T

2016/08/28
本產珍珠芭樂 3KG 229
美國嫩肩里肌牛排 987
台灣雞清胸肉 436
KOH 原味香椰脆片 198T
營養杏仁飲 165T
舒潔抽取式衛生紙 389T
牛肉捲 89T
總匯披薩單片 60T
凱撒雞肉沙拉 159T

2016/07/16
新寶納多維他命 1349T (1449-100 惠氏商品折價)
NM檸檬酸鈣+D3+K2 679T
台灣土雞骨腿切塊 446
蔓越莓杏仁燕麥 275T
墨西哥雞肉捲餅 249T

2016/07/12
蔓越莓杏仁燕麥 275T
KS保鮮膜 2 入 389T
本產覆歷地瓜葉 55
本產有機杏鮑菇 95
台灣雞清胸肉 442
台灣烏骨雞切塊 285

2016/06/17
KS羊肉乾狗糧 1199T
本產大西瓜 13.2 KG 299

2016/06/07
台灣雞清胸肉 439
舒潔抽取式衛生紙 389T

2016/03/12
甘強酒造純正味醂 525T
苗栗大湖草莓 399
KS鮭魚甘薯乾狗糧 1299T
KS保鮮膜2入 399T
台灣雞清胸肉 417
進口豬頰肉 664
KS嬰兒濕巾 729T
汰漬無色香洗衣精 589T
舒潔抽取式衛生紙 389T
蘋果汁320MLx24 459T

2016//02/10
舒潔衛生紙加量包 389T
多用途吸水墊 599T
安素香草營養品 1285T
新加坡叻沙 289T
產銷履歷本產青花 119
和風鰹魚高湯包 299T
Misto 噴霧罐組 447T
craisins 蔓越莓乾 289T
挺立鈣強化超值組 1849T

2016/01/05
KS美國萬用垃圾袋 369T
KS羊肉乾狗糧 1149T

2016/01/04
斯博康牛肉狗糧 1189T
舒潔抽取式衛生紙 389T
草本洗髮精 259T
KS 超濃縮洗衣精 519T
好菇道組合 185
握式暖暖包30入 299T
貼式暖暖包40入 399T
台灣雞清胸肉 408

2015/11/28
崇德發黑麥汁24CN 625T
本產秀珍菇500G 89
LOC Maria捲餅 339T
斯伯丁 zi/o 籃球 799T
進口豬頰肉 574
五月花妙用衛生紙 299T
Zespri 綠奇異果 499
多用途吸水墊 599T

2015/11/07
台灣雞清胸肉 455
好菇道組合 199
金博極品剝皮辣椒 279T
Zespri綠奇異果 499
舒潔抽取式衛生紙 389T
晶明營養補充食品 779T

2015/09/22
Seeds雞肉乾 749T
五月花抽取衛生紙 359T
舒潔抽取衛生紙 389T
Tide濃縮洗衣粉 599T
KS超濃縮洗衣精 519T

2015/08/15
進口美國蘿蔓心 205
Seed 寵物專用尿墊 499T
台灣去骨清雞腿 514
台灣雞清胸肉 413
KS緩釋魚油軟膠囊 565T

2015/06/21
金色三麥黑麥啤酒 389T
MC加州蒜味胡椒 279T
白蘭氏活顏馥莓飲 839T
進口美國蘿蔓心 205
台灣雞清胸肉 442

2015/05/30
喜馬拉雅山粉紅鹽 139T
美國牛小排燒肉片 1791

2015/05/10
健司牛蒡脆片 255T
進品美國蘿蔓心 205T
舒潔濕式衛生紙 299T

2015/04/25
五月花妙用紙巾 299T
台灣雞清胸肉 454
SEED 寵物專用連墊 499T
進口美國蘿蔓心 205
十味觀半筋半肉麵 489T
五月花抽取衛生紙 359T


2015/03/12
百利吸水膠棉拖把 449T
CASIO 計算機 399T

2015/02/22
KS超濃縮洗衣精 519T
台灣雞清胸肉 432T
Quaker養氣人參 1525T
Seed寵物專用尿墊 499T

2015/01/27
五月花抽取衛生紙  359T

2014/11/01
挺立鈣強化超值組 1849T
克補肝精膠囊 1499T
KM葉黃素膠囊 849T

2014/07/20
美式辣雞翅 290T
全麥核桃葡萄麵包 149T
KEWPIE 胡麻醬 233T
KS無香精洗衣精 499T
CRAISINS蔓越莓乾 279T
舒潔濕式衛生紙 299T
五月花抽取衛生紙 359T

2014/02/27
挺立加強鈣超值組 1849T

2014/01/12
白蘭氏傳統雞精組 1455T

2013/12/15
雙人乳膠床墊 3199T
SEED寵物專用尿墊 499T
竹炭暖暖包30入 299T
GE 11W LED 2入 649T
5孔 1.8米延長線 399T
三合一極品可可 599T
IVORY香皂 339T
五月花抽取衛生紙 359T
KS環保洗衣精 499T

2013/10/05
It-se-bit-se 內褲 349T
灣仔碼頭豬肉水餃 419T
五月花抽取衛生紙 339T
沛綠雅氣泡礦泉水 769T

2013/09/19
進口美國水蜜桃 599T
進口無籽黑葡萄 299T
進口無籽紅葡萄 299T
美國萵苣生菜 95T
zespri 綠奇異果 425T

2013/08/11
KS液體葡萄糖胺 919T
挺立鈣加強錠 1849T

2013/07/09
B&L SOF 1-D -3.75 1819T

2013/03/16
HK蜂蜜穗帶麥餅 269T
新加坡叻沙 259T
白蘭氏元氣雞精組 1359T
白蘭氏旭沛蜆精 975T
Ivory 香皂 249T
西雅圖約克夏奶茶 489T
汰漬無色香洗衣精 589T
泉水 1.5L/12入 315T
挺立葡萄糖胺錠 1999T

2013/01/06
五月花抽取衛生紙 339T
潔麗雅潤膚霜2pk 595T
烤全雞 169T

2012/10/10
無調綜合堅果 599T
潔麗雅潤膚霜2PK 595T
Sealy枕頭2入 439T
挺立鈣加強錠270E 1729T
TRUEYE 8.5-4.50 90 2999T
B&L SOF 1-D -3.75 1819T

2012/09/09
拜維佳發泡綻 779T
KS液體葡萄糖胺 765T (925-160)
SEIKO太陽眼鏡 3799T
飛利浦電動牙刷組7 6455T

2012/08/12
正官庄活蔘28D 949T
白蘭氏旭沛蜆精 938T
甘強酒造純正正味醂 539T
KS沔縮環保洗衣精CM 499T
舒潔袖珍包面紙 399T
藍莓乾567G 399T
CRAISINS 蔓越莓乾CM 315T
五月花抽取衛生紙 339T

2012/03/11
B&L SOF 1-D -3.75 1819T
奈森克林高牙線棒 198T

2012/01/07
潔麗雅潤膚霜2PK 595T
Philips藍光播放 3799T
Dreft幼兒洗衣精L 949T
白蘭氏人蔘蜆精4 1149T
白蘭氏元氣雞精組83 1359T
素寶丁200粒 1149T

2011/12/9
雞汁厚切洋芋片 119T
Lay's海苔洋芋片 109T
Kettle蜂蜜芥末薯CM 198T
Kettle鹽味薄切薯CM 179T
潔麗雅潤膚霜2PK 595T
Herbal草本洗髮精H 249T
松露造型巧克力  399T
豬肉熱狗&汽水 50T



2011/11/05
挺立鈣加強錠270 1849T
五月花抽取衛生紙 339T



2011/10/01
五月花抽取衛生紙 339T2011/08/28
妃爾斯軟餅乾 499T

2011/08/21
葡萄王靈芝王(2罐240顆) 1799T
K.S.男內褲6入組 349T
泉水500ML/35入KGH 299T

2011/06/25
博士倫瑞霖保養液 569T
力度伸維生素 699T
KS捲筒衛生紙 689T
五月花抽取衛生紙 339T
舒潔抽取式衛生紙 399T
KS超濃縮洗衣精 499T
ivory 香皂 215T

2011/01/23
博士倫日拋折價 1714T
橘子工坊洗衣粉 549T
白蘭氏旭沛蜆精 1025T
灣仔豬肉水餃系列 399T
原味蜂蜜蛋糕 189T

2011/1/12
Cetaphil面霜 379T
Cetaphil洗面乳 599T

2010/12/27
TOYANS 瑜珈球 389T
Cetaphil面霜 379T

2010/12/26
五月花抽取衛生紙 339T
本產牛奶蜜棗 269
Cetaphil 面霜 379T
Herbal 草本洗潤髮 279T
Cetaphil 乳液
蘇菲彈力貼身日用 239T

2010/10/31
白蘭氏元氣雞精組4 1399T
ivory 香皂 239T
五月花抽取衛生紙 339T
舒潔抽取衛生紙0 399T

2010/07/12
博士倫舒服能日拋 1719T

2010/02/11
Philips 照護組 8595T

2010/01/31
博士倫瑞霖去蛋白 515T
B&L SOF 1-D -3.75 1819T
Darling 白咖啡 499T
CJ 香甜甘栗 500G 259T
IVORY 香皂 239T
舒潔三層衛生紙 369T
白蘭氏傳統雞精 1199T
Palmolive 沐浴露 319T
Herbal 草本洗髮精 279T

2009/12/27
舒潔三層衛生紙 369T

2009/12/19
紐力活葡萄醣胺液5L 1125T
貝禮斯奶酒 468T
樂滋百瑞葡萄醣胺KS 144T

2009/11/22
烤全雞 139T
日本養命酒 659T
XO醬海鮮炒飯 349T

2009/11/01
西沙狗餐盒24入 649T
舒潔三層衛生紙 369T
傳六什錦豆 359T
白蘭氏傳統雞精 1198T

2009/10/16
固樂飛 National Vita 葡萄醣胺液//946ML 899T
挺立 1495T

2009/08/30
舒潔三層衛生紙 369T
蘇菲彈力貼身日用 205T
嗨一點味付岩海苔 399T
Dreft幼兒洗衣精 1L 999T
奈森克林高牙線棒 198T
博士倫日拋100片 1699T

2009/06/07
Spalding NBA 籃球7 799T
KS濃縮漂白洗衣粉 699T

2009/04/12
日本養命酒 659T
赤玉紅葡萄酒1.8L 575T
白蘭氏傳統雞精 1197T
BilaBong男海灘褲 1199T
舒潔三層衛生紙 369T x2
博士倫日拋100片 1725T

2009/03/01
Quaker 活靈芝 1549T
白蘭氏傳統雞精 1198T
舒潔三層衛生紙 369T
毛寶冷洗精6000ML 419T
雞汁口味洋芋片 119T
石安牧場溫泉蛋 195T

2009/01/03
舒潔三層衛生紙 369T*2
白蘭氏傳統雞精 1155T
海鮮口味泮芋片 119T
天地合補四物飲 765T
香皂 285T
KS洗衣粉28磅 519T

2008/10/19,
KS洗衣粉28磅 479T
舒潔三層衛生紙 369T
KS環保濃縮洗碗精 299T
雞汁口味洋芊片 109T
Dreft Det. 1700Z 799T
英式鬆餅12入 159T

2008/08/24,
鱈魚肝油500CT 499T
葡萄王靈芝王 675T
挺立鈣加強錠 200NC 1495T
去味大師消臭易x3 161T
Pampers swipers 455T
西雅圖藍山拿鐵 599T
Dove Shampoo 299T
蜂蜜燕麥棒480CT 529T
舒潔三層衛生紙x6 369T

2008/06/22,
成人自行車頭盔 879T
舒潔三層衛生紙 335T
Pampers 1355T
美國進口蘿蔓心 199T
Nexxus洗髮精 565T

2008/05/04
CRAISINS蔓越莓乾 299T
立得清袖珍包柔濕 129T
西雅圖即品拿鐵 599T
Dial沫浴乳 299T
舒潔三層衛生紙 335T
鮮蝦沙拉 290T
白蘭氏傳統雞精 SL 1139T

2008/02/10,
西雅圖藍山拿鐵(100包) 599T
舒潔三層衛生紙 335T
衣物柔軟精200 OZ 295T
毛寶衣領精 249T

2008/01/06,
SWISS熱可可75CT 245T
衣物柔軟精200 OZ 295T
燕麥棒水果豆類 509T
美國馬芬12入 198T
綜合貝果2袋裝 139T
KS特選綜合豆 489T

2007/10/27
KS蔓越莓汁 299T
Ivory香皂 279T

2007/10/10,
德國進口黑麥汁(1箱24罐) 449T
西雅圖約克夏奶茶 465T *3
DKNY名牌女外套 1745T
舒潔三層衛生紙 335T *2
日清札幌味噌拉麵 195T
彩紅小夜燈(5個) 599T
綜合穀物貝果(10個/1袋) 198T
綜合貝果2袋裝 139T

2007/08/12
KS專業洗衣粉 399T
舒潔三層衛生紙 335T *2
靠得住衛生護墊 149T
餐包36入 89T
swiss熱可可75CT 245T
綜合貝果2袋裝 139T

2007/07/08
MISS SIXTY 牛仔褲 2255T
FOR JOSEPH 牛仔褲 969T
SWISS熱可可 75CT 245T
舒潔三層衛生紙 335T

2007/06/09
綜合貝果2袋裝 139T
KS美國馬芬 198T
靠得住衛生護墊 149T
Tree Top蘋果汁 295T
SWISS 熱可口75CT 239T
HERBAL 草本洗髮精 289T
Claire玻尿酸沐膠D 399T

2007/04/14
Pepperidge餅乾 399T
西雅圖約克夏奶茶 465T
swiss熱可可奶茶75CT 239T

2007/02/11
KS美國馬芬 198T
KPCL K RED BERRY 365T
日清奶油三明治 198T
健怡可樂355ML/24SL 259T
德國進口黑麥汁 399T
綜合貝果2袋裝 139T
巧克力牛奶棒 279T
World's 室內棒 339T
日清旭川醬油拉麵ER 195T
Delacre 巧克力餅E 315T
白蘭氏傳統雞精 1157T

2007/01/21
生麵皇泡麵10入 179T
毛寶冷洗精6000ML 369T
進口馬鈴薯泥 359T
SWISS熱可可75CT MG 239T
Campbell奶油雞湯 219T
綜合貝果2袋裝 139T
韓式豬里肌燒肉片 321T
SM棉花糖可可粉 125T
Pepperidge餅乾袋 349T
巧克力牛奶棒 279T
Pantene洗髮精 329T
Neolia 1L洗髮精 295T

also you can check http://costcopricewatch.wikidot.com/


Monday, September 10, 2007

台北人週日起床第一件事

上個週末 去台北吃喝玩樂

女友的代理商請我們去吃肥前屋, 我們5點半就到了店門□,
果然這個時候就有10幾位在排隊了
在排隊的時候, 就開始看menu, 先點餐
等了大約20分鐘吧 我們才有位置
店裡招牌-鰻魚飯
生蚵, 蒸蛋, 雞肉串, 豬肉串都很好吃
吃完後, 本來要去看電影, 後來改去逛附近的新光三越
逛不夠, 還跑到士林夜市小逛一下
最後 回到晶華附近的高家莊吃20塊好吃的米台目

隔天早上吃過飯店早餐後
就出去逛到南京西路衣蝶後面的米朗琪咖啡館
我們10點就到店門□了, 一樣地, 門□已經有2,3個在門□等候了
雖然店裡面已經在準備了, 但還是得等到10點半才能進場消費
大約10點20, 就有小姐出來登記號碼
這個時候, 外面大約也聚集2,30個人有吧
呵呵 台北人週末起床第一件事就是來排隊嗎

因為我們已經吃個早餐 所以只想外帶咖啡嘗嘗
跟帶位小姐提過之後 她叫我們直接進店裡面等
我們就坐在裡面 看著外面2,30個人在等待

我們點了冰滴咖啡, 水果茶, 原味鬆餅
餐點好了之後 店裡也坐滿了人
外面依就還是10幾個在等著...

09-09-07_1019

09-09-07_1020

09-09-07_1021

Thursday, September 06, 2007

Apple Keyboard

這篇就是我用新的Apple Keyboard打出來的

這是我的第一個Apple鍵盤, 觸感非常棒, 這是個值得推薦的好東西
不論從外觀, 基本功能, 使用上, 都令人非常讚賞

鍵盤接到Dell主機的USB孔, 鍵盤本身還有2個額外的USB孔
其中一個孔, 正插著 Logitech wireless mouse 的 usb reciver
另外一個孔, 可以成功讀取 philips 40G USB HD 與 Sony P8
或許是由主機供電, 所以目前對外接USB相容測試都還可以運作

唯一美中不足, 就是在 Windows 上無法操控鍵盤上獨有的功能鍵

DSC04479

DSC04478

DSC04476

DSC04475

DSC04474

DSC04471

DSC04467

Thursday, August 30, 2007

敗家與否

敗家的欲望, 就好像錢放在口袋, 會咬人, 所以一直花錢買東西.

最近蘋果優仕有個促銷-ibook換macbook
原先也是很心動(似乎愛敗家的人 對什麼都很心動)
花個29900或35900, 就可以換到一台13'的macbook
分別省下9000或10000塊
也就是舊的ibook的價值

但之後想想
我的ibook只有值這種價錢嗎
另一方面
如果今天我有30k,或36k
我為什麼不把錢存下來
等待下一波macbook降價呢
那我就可以同時有ibook跟macbook

也就因為我目前沒有這個迫切換機的需求
所以這種舊換新的活動對我而言 最後倒是無所謂
除非舊機可以可以拿到50%以上的折扣再說

相反地 對於有換機需要的人 或許就有吸引力

敗家的人通常都會共同的行為
愛省小錢, 花大錢
容易受到"經典"或"限量"的影響
深怕喜歡的東西買不到

敗家之前 還是多想想這筆交易對自己實質意義有多少
因為只想擁有 而敗家
實在是說不過去
所謂物盡其用 東西買來就是要用的
沒道理 自己要變成物質的奴才

敗家之後 為了要避免後悔隨之而來
敗家之前的步驟
1)找出為何要敗家的原因, 真的有缺這個東西嗎, 敗了這個東西有什麼改變嗎
2)加入自己的 wish list 內, 回顧一下, 已經敗了什麼, 什麼還沒敗, 調整一下敗家的先後順序
3)suvery再suvery
4)記住現在不買 並不代表以後會買不到 敗家之前多想想吧

獻給愛敗家的你

Wednesday, August 29, 2007

經典名句

過去幾年聽到的名言

小黑(神):
知識是混亂的, 要整理成系統
Solution有很多, 哪一種比較smart
加班要加在前面

簡連長:
時間總是會過, 過不去的是你的心

我說:
事情早晚會結束, 差別在於結束的好壞
做錯是件好事 讓自己知道這樣做是錯的

Thursday, August 16, 2007

movie - 1408

上週末也順便看了1408

雖然這是一部根據Steven King的小說而導的電影
但覺得並沒有想像中這麼恐怖

基本上這部片有點浪費時間 對想挑戰恐怖極限的人而言
或許看小說會比看電影更有感受

Steven King的小說拍成的電影
我比較有印象的是"剌激1995"
這是一片值得一再回味的一部好片

movie - shooter

上週末利用空閒看了shooter(狙擊生死線)

滿喜歡Mark Wahlberg(馬克華柏格)這個演員
他演過的電演 印象比較深刻就屬 Italian Job(偷天換日)

這是一部敘述狙擊手的電影
整部片滿緊湊的
劇情很棒

比較喜歡的對白是
"慢就會穩,穩就會快"

是個值得推薦與收藏的一部片

Tuesday, August 07, 2007

態度

對project的態度, 對bug的態度

對project的態度
我喜歡 我希望可以愈早做完愈好
而且不是指盡力就好

這麼說 看不出個內涵
我是指 prototype 可以愈早完成愈好
1st, 可以儘早確定這個project是可行的
2nd, 有剩餘的時間 繼續進化
(schedule前70%是完成所有功能 後面30%是用來處理critical的問題)
3rd, 儘早看出實際面的應用及反應, 使用經驗等, 持續進化
4th, 更重要的 可以早點放假

對bug的態度
很難過 竟然會有問題出現
特別是自己測試之後 認為不會再有問題
不過 經過這麼多次的經驗
排除掉人為操作的疏忽外
bug絕對不是憑空出現的
一定是某個地方出錯所導致
這時候更需要耐心與毅力的支持...

沒有解不了的bug
只有不想去解的人

想想CSI影集 是如何重建還原現場的
相較下來 這些bug真是渺小

加判斷式檢查的看法
有些判斷式可能極小機率會有用
但又不能沒有
這時候有2點可以考慮
1) 要看加這個判斷式對整體的影響,比如10行比100或500行,
也就代表說幾個micro second內多跑了幾個nano second.
2) 極小的機率 需要這個判斷 那表示極大部分的情況已經在這之前就被過濾掉了
所以也只有極小的特殊條件才會全部的判斷跑過一次!

Monday, August 06, 2007

"else" or not after if ?

到底 if 之後要不要接 else 呢?

問題總是沒有永遠對的答案
if statement 後面可以沒有 else statement
但有 else statement 總是不會出錯

有多少的bugs, 是掛在這種邏輯問題上面

大部分的人會先注意如何 function work
等到 function work 之後, 也接近準備 release 階段
很容易沒有考慮到 exception 的發生

這對應到 code 的本身
也就是
只注意到 if 成立之後, 而忽略 if 失敗的另一面

為了避免遇到這樣的問題
最好是根據code的大小來安排code配置
比如先寫比較短的程式碼 再寫比較長的程式碼

if (1) {
/* short successful statement */
} else {
/*
...
long failure statement
...
*/
}

or on the contrary,

if (!0) {
/* short failure statement */
} else {
/*
...
long successful statement
...
*/
}

Wednesday, August 01, 2007

新竹的游泳池

新竹市立公園游泳池 (50m)
03-522-4654
http://stadium.hccg.gov.tw/fields/swimming_pool.htm
5月~9月 AM 9:00~ PM 17:30
6月~8月 夜間開放 18:00~21:00

光復中學游泳池 (25m, spa) http://home.kimo.com.tw/kfpool2005/03-572-8595
H2O水世界 (25m, spa)
中華大學游泳池 (50m)
聯園一樓游泳池 (50m, spa) 03-5782258 ext.37010 http://rc.bros.com.tw/index.php?PA=intro-1f

新竹南寮溫水游泳池 03-5366768 全票150, 套票30張2500
update@20060613
基本上, 聯園游泳池應該比光復中學游泳池設備好多了,
A) 聯園水道50m
B) 聯園的spa也比較多設備

光復中學游泳池唯一可以勝過聯園的應該就是
光復比較多一點年輕的女孩子會到那邊游泳, 反觀聯園就得要多碰碰運氣
大約早上8點多 有時候會有一大票女技術員會出現在那
不過就是要碰運氣...

價錢的話, 兩邊收價差不多

不過地點倒是個問題, 聯園較偏東區, 光復則較靠近市區

Friday, July 20, 2007

冰山一角的bug

有些測試部發現的bug, 有時候只是冰山一角的bug
通常這些問題可能來自於相同的原因
簡單點比如, 資料庫讀取與寫入的欄位搞混

像這種問題很容易造成
發現1個bug, 但還有9個bug沒發現
但以工程師而言
1st, 要避免這樣的錯誤
2nd, 既然錯誤已經造成了, 試著尋找是否類似的問題, 通常"Find"是很好用的

FYI

Wednesday, July 18, 2007

rand真的需要semaphore保護

嗯 一個工作上遇到的實例

實際案例是底下有10個client, 透過task,
共同存取rand(), 結果有2,3組重覆的數字產生
這時才不得不相信rand()是global resource
也是需要 semaphore 來保護的

一個水土不服的例子

最近公司遇到的例子
office2007不能讀office97?

類似的問題
因為進版, 程式不認得舊版的文件, 然後被刪除
這是對或錯呢
a) 直接 discard
b) 試著升級舊版的文件

因為天生不良, 造成水土不服, 不理會?還是解救?

update@2007/08/01
在軟體邏輯設計的觀念, 不是true就是false
但應用到真實環境是否合理
這值得設計者深思熟慮

是否要為了最後一個bit的錯誤, 而放棄這個byte
有好也有壞而已

Saturday, July 07, 2007

My Powerbook

Two weeks ago, the firewire (400 & 800) of my powerbook fail to work, that made me feel sad for a long time. But just now, i found they work again. i actually don't know what's happening exactly.

But i still had other problems in my powerbook.
1) only one side speeker can work
2) Volume bitmap needs mirror repair in the HD

Sigh...

Wednesday, June 06, 2007

pthread example

Set pthread joinable or detached status?

Usually, the default pthread attribution is in joinable status, and then we always encounter a case that multiple threads created when asynchronous. For example, main process created thread 1 and then wait for the thread1 to finish to join it back. But at the same time, the main process cannot create another thread any more.

And something notable is that we cannot just create pthreads of joinable without waiting to join them, because joining them in is like resource recycle mechanism when they are finished.

So why are the joinable threads so worthy? What i understand is that the process which created the joinable pthread needed to know the return status from the pthread it created. In that way, the joinable pthread is worthy to wati to join back.

On the contrary, not every pthread we must to wait. At this moment, we can create them as detached status, which means we just create and leave them away, no status returned from them. Actually, if we create pthread as detached status, we can create them infinitely without waiting to join them back, and we don't need to do that basically.

sample code below,


#include
#include

void *run(void *argv)
{
  pthread_exit(NULL);
}

int main(int argc, char *argv[])
{
  pthread_t thd;
  pthread_attr_t attr;
  int i=0, rc=0;

  pthread_attr_init(&attr);
  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);

  for (i=0; 1; ++i) {
    if ( (rc=pthread_create(&thd, &attr, run, (void*)i))!=0 ) {
      printf("After %d pthread created(rc=%d)\n", i, rc);
      perror("pthread_create");
      return -1;
    }

#if 0
    if ( (rc=pthread_join(thd, NULL))!=0 ) {
      perror("pthread_join");
      return -1;
    }
#endif

    if ( i%100==0 ) {
      printf("%dth pthread created\n", i);
    }
  }

  pthread_attr_destroy(&attr);
  return 0;

}

Result:
After 382 pthreads created(errno:12)
pthread_create: Cannot allocate memory


#include
#include

void *run(void *argv)
{
  pthread_exit(NULL);
}

int main(int argc, char *argv[])
{
  pthread_t thd;
  pthread_attr_t attr;
  int i=0, rc=0;

  pthread_attr_init(&attr);
  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

  for (i=0; 1; ++i) {
    if ( (rc=pthread_create(&thd, &attr, run, (void*)i))!=0 ) {
      printf("After %d pthread created(rc=%d)\n", i, rc);
      perror("pthread_create");
      return -1;
    }

    if ( i%100==0 ) {
      printf("%dth pthread created\n", i);
    }

  }

  pthread_attr_destroy(&attr);
  return 0;

}

Result:
2700th pthread created
2800th pthread created
2900th pthread created
3000th pthread created
3100th pthread created
After 3183 pthread created(rc=11)

pthread_create: Resource temporarily unavailable

Tuesday, June 05, 2007

Message Queue example

The time to use Message Queue I know is internal logging, and that's the way it used.

msgq_rcv <- MSG Queue <- msgq_snd

sample code below,
msgq.h

#ifndef _MSGQ_H_
#define _MSGQ_H_

#define MSGQ_PATH "/tmp"
#define MSGQ_ID 111
#define MSG_LEN 128

typedef struct {
long mtype; // MUST
time_t time;
char msg[MSG_LEN+1];
} msgq_t ;

#endif /* _MSGQ_H_ */

msgq_rcv.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <time.h>
#include "msgq.h"

int main(int argc, char *argv[])
{
key_t key;
int msgqid;
msgq_t msg;

if ( (key=ftok(MSGQ_PATH, MSGQ_ID)) == -1) {
perror("ftok");
return -1;
}

if ( (msgqid = msgget(key, 0666|IPC_CREAT)) == -1) {
perror("msgget");
return -1;
}

while (1) {
if (-1==msgrcv(msgqid, &msg, sizeof(msg), 0, 0)) {
perror("msgrcv");
return -1;
}
printf("%s->%s\n", ctime(&msg.time), msg.msg);
}

return 0;
}

msgq_snd.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <time.h>
#include <string.h>
#include "msgq.h"

int main(int argc, char *argv[])
{
key_t key;
int msgqid;
msgq_t msg;

if ( (key=ftok(MSGQ_PATH, MSGQ_ID)) == -1) {
perror("ftok");
return -1;
}

if ( (msgqid = msgget(key, 0666|IPC_CREAT)) == -1) {
perror("msgget");
return -1;
}

while (1) {
memset(&msg, 0x00, sizeof(msg));
msg.mtype = 1; // MUST
fgets(msg.msg, sizeof(msg.msg)-1, stdin);
time(&(msg.time));
if (-1==msgsnd(msgqid, (msgq_t*)&msg, sizeof(msg), 0)) {
perror("msgsnd");
return -1;
}
}
}

read/write the binary content to file

An example shown here to present
1) how to write the binary content to a file
2) and then read the content from it

Some steps
1) Prepare chunks of memory
Usually the content will be records of memory of any structure type, in case it can be restored back with the structure in step4.
2) Output to a file
Open a file first by open()/fopen(), and then write the records to the file by write()/fwrite(). Of course, all the content can be written once or one by one, it depends on your design decision. Remember to close the file at last.
3) Input the file
We want to read the binary content. First we should open the file and read the content by read()/fread(). How many size we need? Actually, we would not have no idea the real amount of record, but we know the basic element should be the original structure type. so we can use the structure as the element size and then get the chunks of the same size one by one. Finally and without any exception, when we can get nothing, we have gotten all the records without any damage.
4) Recognize the content
The way to recognize the binary content is usually to cast the binary record to be of the original structure type.

Pitfall here,
Usually, we can get the exact all the records without any damage. But exceptions always happen around, so we should have some preventions in hand. The common exception here is the damaged data, so how to make sure the data integrity is the major task. A way to keep data integrity is append the checksum to the real data. so before storing the data, we calculating the checksum and append the result to the data, and after we read the content, we calculate the checksum and compare with the old one. If they match, the data isn't damaged. If not, trouble happened.

Another issue concerned here is the structure layout. Usually, the structure size will always be the multiples of 4, which is defined by the WORD size of the processor. If the actual size is not the multiples of 4, the compiler will expand it to be the multiples by stuffing the hole up. So make sure the structure as compact as possible.

Issue of binary data exchange between different byte order systems is also the problem. It should be the responsibility of the application of upper layer to make sure the portability.

#include <stdio.h>
#include <time.h>
#include <string.h>

#define USER_LEN 10
#define PASS_LEN 10
#define TOTAL_ACCOUNTS 10

typedef struct {
time_t create_time;
char user[USER_LEN+1];
char pass[PASS_LEN+1];
char reserved[2];
} account_t ;

int main(int argc, char *argv[])
{
int i=0;
FILE *fd;
account_t acc[TOTAL_ACCOUNTS];

// writer
memset(acc, 0x00, sizeof(acc[0])*TOTAL_ACCOUNTS);
for (i=0; i< TOTAL_ACCOUNTS; ++i) {
snprintf(acc[i].user, sizeof(acc[0].user)-1, "user%d", i);
snprintf(acc[i].pass, sizeof(acc[0].pass)-1, "pass%d", i);
time(&acc[i].create_time);
}
fd = fopen("accounts.bin", "wb");
fwrite(acc, sizeof(acc[0]), TOTAL_ACCOUNTS, fd);
fclose(fd);

// reader
memset(acc, 0x00, sizeof(acc[0])*TOTAL_ACCOUNTS);
fd = fopen("accounts.bin", "rb");
for (i=0; !feof(fd) ; ++i) {
fread(&acc[i], sizeof(acc[0]), 1, fd);
if ( feof(fd) ) // A pitfall here
break;

printf("%d,%s/%s/%s\n", i, acc[i].user, acc[i].pass
, ctime(&acc[i].create_time) );
}
fclose(fd);
return 0;
}


Usually, hexdump is alwasy useful to dump the binary content out.

Monday, June 04, 2007

Note

The characteristic of Broadcast packet
1) Destination MAC address is all of 0xff.
2) used in arp request, icmp ping request

Windows Socket

The project must be setting to link wsock32.lib or ws2_32.lib. The difference between them I know is ws2_32.lib supports select function, but the other doesn't.
#include <stdio.h> #include <winsock2.h> #include <time.h> #define SENDBUF_LEN 100 #define RECVBUF_LEN 100 int main(int argc, char *argv[]) { WSADATA wsaData; int cfd; struct sockaddr_in addr; char *ip; short port; char sendbuf[SENDBUF_LEN]; char recvbuf[RECVBUF_LEN]; int recvlen=0; fd_set rfds, wfds; struct timeval timeout; int S=0; timeout.tv_sec=1; timeout.tv_usec=0; if (argc != 3) { printf("Usage:\n\t%s server_ip server_port\n" , argv[0]); return -1; } ip = argv[1]; port = (short)atoi(argv[2]); WSAStartup(0x0101, &wsaData); if ( (cfd = socket(AF_INET, SOCK_STREAM, 0) < 0){ printf("Cannot create socekt\n"); return -1; } memset(&addr, 0x00, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); if ( connect(cfd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) < 0) { printf("Cannot connect to %s\n", ip); closesocket(cfd); return -1; } FD_ZERO(&wfds); FD_SET((unsigned int)cfd, &wfds); if ( select(cfd+1, NULL, &wfds, NULL, &timeout) <=0) { printf("select fail\n"); return -1; } sprintf(sendbuf, "GET / HTTP/1.0\r\n"); if (send(cfd, sendbuf, strlen(sendbuf), 0) < 0) { printf("Cannot send\n"); closesocket(cfd); return -1; } srand(time(NULL)); while (S < 2000) { int s=0; while (s < sizeof(sendbuf)) { sendbuf[s++] = (char)rand(); } if (send(cfd, sendbuf, sizeof(sendbuf), 0) < 0) { printf("Cannot send\n"); closesocket(cfd); return -1; } S += s; } sprintf(sendbuf, "\r\n\r\n"); if (send(cfd, sendbuf, strlen(sendbuf), 0) < 0) { printf("Cannot send\n"); closesocket(cfd); return -1; } FD_ZERO(&rfds); FD_SET((unsigned int)cfd, &rfds); if ( select(cfd+1, &rfds, NULL, NULL, &timeout) <=0) { printf("select fail\n"); return -1; } if ( (recvlen=recv(cfd, recvbuf, strlen(recvbuf), 0)) < 0) { printf("Cannot recv\n"); closesocket(cfd); return -1; } recvbuf[recvlen]=0x00; printf("%s", recvbuf); return 0; }

Tuesday, May 22, 2007

web login howto

client登入後, 如何保持這個session的存在與否, 會是個關鍵

一個簡易的keep session方法
1) 檢查帳號/密碼是否正確
2) server產生一個random string, 透過cookie, 送給client
3) 設定idle timeout時間, 由server內部進行計時
4) client每次瀏覽網頁, 會送出這個random string, server檢查是否正確
5) 登出後, 或timeout後, server移除這個random string

注意,
由於透過cookies, 所以必須強制client打開cookie選項, 如何檢查是否打開
Solution 1)
1.1 server設定cookie of the random string後, 送給browser,
並要求做302 redirect到check cookie的頁面.
1.2 Redirect過來的頁面, 如果沒有帶cookie option, server回應"要求打開cookie"的頁面,
如果有帶cookie option, 並且正確, server再redirect browser到正確的頁面

安全考量
由於cookie是明文, 並沒有加密過, 除非透過ssl, 否則很容易被第三者得知

Saturday, May 19, 2007

My Wish List

To trace out what is next to buy.


ThinkPad x200 RJ2
-C2D P8700(2.5GHz) L2(3M)
-320G 5400rpm HD
-2G 1033Hz RAM
-2G Turbo memory
-Intel WiFi 5100
-webcam
-指紋辨識
NT.49900 at pchome (送2G RAM, 2.5" 320G 外接硬碟)
NT.46800 at 小高黑店


Palm Pre

Android phone

ice-berlin

Ray Ban太陽眼鏡

Blackberry 9500 by NT.10??? my review

2.5''/3.5'' SATA harddisk?

硬碟外接盒 w/ USB, Firewire400 and Firewire800
SK-3500 Super-S Combo $2999
MacPower 2.5吋 硬碟外接盒 - SK-2500 800+ $2100

3.5'' SATA 500G Hard Disk only USB

KHS Road Bike

Giant OCR2 NT.25000
Giant IGUANA NT.12800 it's a joke.

Apple iPhone Nt.2xK review

Apple Time capsule NT.17900

頸掛式立體聲藍牙耳機 skip

lego mindstorms

Apple Bluetooth Mighty Mouse by NT.1500
Apple Bluetooth aluminum keyboard by NT2800 review
Apple aluminum keyboard by NT.1700

moshi keyboard review

firewire 800 external HD
Powerbook FireWire?
Powerbook Speaker?
Powerbook HD?

DDR 333 1G RAM for iBook $33XX
DDR 333 1G RAM for PowerBook $33XX by $2540

Rimowa Classic Flight 二輪大型旅行箱 $21,960 my review

i501 PHS mobile phone $5000 immunity

隱形眼鏡 $3000
Tag Heuer 鏡框 $10,000

Rolex submariner $200,000


Chromebook (Used to install kali or boot from USB driver which Kali is installed.)


Monday, May 07, 2007

交接注意事項

...只能說事出必有因...

1) Architecture design
系統架構講解
2) Testing Environment Setup and Procedure
如何測試
3) How to enhance
怎麼加新功能

基本上
目前認為有抓到這些重點
應該就夠了

Monday, April 23, 2007

已經看到3隻海馬了

附帶一提
從上星期五到今天星期一
已經看到三個不同的人 帶著藍海馬
真不知道該說什麼

是之前就這麼熱門呢
還是007效應呢

我的藍海馬真是太熱門啦
(也希望不要熱門的過頭)

下一只
aim to 16610 or 16600

4年前價值US200 million, 現在一文不值

星期六晚上的 神鬼禁區2 的結尾
在4年前 價值 200百萬 的箱子
裡面裝的是4年前的高科技晶片
不過
在4年後的現在
反而變得一文不值

除了劇情好看外
也覺得科技這玩意
真是令人不勝唏噓

還有什麼東西
也是這麼的不保值呢

這幾年的收穫...

Year 2005

在新竹市立游泳池學會游泳, 終於在20個多年頭之後, 我還是學會了游泳

Year 2006
敗了mido diver + omega seamaster

Year 2007
敗了二手的Powerbook 17"

Tuesday, April 17, 2007

誰該最熟悉產品

Engineer?
Testing Dept.?
FAE?
PM?
Project Leader?
or...

每個 bug 都要 engineer 來複製
那麼有沒有獎金可以拿

不過 前提是有 bug 不能扣錢

什麼時候可以改code

Q:什麼時候可以改code
A:當有bug的時候
Q:什麼時候可以tune code
A:東西可以動就好, 幹嘛tune
Q:為什麼不tune code
A:本來會動, tune完搞不好會有side effect

無言...

Q:不tune code, 效率不好的時候, 怎麼辦
A:加一些限制, to limit the input...

繼續無言

Problem domain

要先知道 Problem domain 在哪裡
再找出 solution

如果把不能解的跟可以解的問題搞在一起
那只是在繞死胡同罷了