Saturday, December 26, 2009

鍵盤上的shift

鍵盤上的shift鍵很好用

在瀏覽器上
按 space, 會往下
shift + space 後, 就會往上

在瀏覽器上
按 backspace, 會回到上一頁
shift + space後, 就會到下一頁(如果有下一頁的話)

alt+tab, 可以切換視窗
shift+alt+tab, 反方向切換視窗

Monday, December 21, 2009

車子被拖吊

1219地震前後很不平靜, 隔天早上, 停在家門口的巷子裡的車子, 竟然被拖吊走了

我剛上完廁所之後, 心理一陣不平靜, 停在門口的車子, 已經停了一夜, 應該下去看一下吧
哪知從平日的窗口小縫望過去, 怎麼沒看到我家小白的屁股, 內心大喊不妙
衝出門口之後, 發現我家的小白已經被拖到路口了
馬上跑過去, 不過員警說已經上拖車, 要到牛埔路的拖吊場領車
沿路心中直幹fuck
上網查了一下, 才知道牛埔路有一間合理拖吊場
http://210.66.55.11/location.html

之後, 想想已經快接近中午, 早餐也沒吃, 先來去吃午餐
趁著天色還早, 趕快把車子牽回來
等等就從民生路走到牛埔路牽車吧

吃過甲一的雞排飯之後, 打電話問拖吊場
要帶駕照, 行照
領車的話要700元
還有另外一張郵局罰單

隨即, 帶上我的毛帽, 從民族路往牛埔路走去
如果我一開始就打算走路去的話
我一定是瘋了吧
其實我只是想要過東大路口攔計程車, 這樣應該會比較便宜吧
事後我發現經國路很難攔到計程車
還有就算走到了牛埔路口, 距離拖吊場還有好長的一段距離
最後, 在HomeBox附近終於招到一台計程車了
馬上衝到牛埔路的拖吊場

到了拖吊場, 看到了許多其他的車主
剛剛走在路上, 也不時看到拖吊車來來去去地
今天拖吊生意真是好
結果我不是車主, 郵局罰單還不給我拿
硬是要寄回家, 免不了要先跟家人說一聲, 免得到時又是一頓開罵
繳了700塊之後, 馬上奔回家, 拿了不能開機的鋁書
準備在公司幫她做手術

電腦硬碟掛了

1219地震前, 那天下午, 我的PB17那顆硬碟掛了

突然整台電腦毫無反應, 彩球一直轉
重新開機後, 一開始出現問號資料夾
心想直覺不妙, 該不會是硬碟掛了吧
重新上電幾次後, 還聽到似乎硬碟傳來搭搭聲
就跟我弟ASUS那台一樣的聲音
於是我確認硬碟應該掛了

還試著用光碟開機, 用磁碟工具去看
S.M.A.R.T.竟然還認為這顆硬碟 verified.

硬碟這東西真是太恐怖了
今年就處理2顆硬碟掛掉的案子了

掛掉那顆碟是 2003/7 的 FUJITSU 80G

最後, 買了一顆 2009/10 WD 120GB 5400RPM的硬碟回來自己換

IMG00073-20091220-1537.jpg

IMG00072-20091220-1509.jpg

IMG00071-20091220-1509.jpg

IMG00070-20091220-1509.jpg

Saturday, December 19, 2009

程式記憶

最近用到的技巧

1)
C字串必須要有結束字元 0x00 結尾, 如此才能正確無誤地把字串列印出來
不過最近用到的技巧, 在於記住字串的長度, 不強制, 不特意地, 用結束字元結尾
比如
想要列印 "abc123" 字串中的 "abc", 除了在 '1' 的位置改變內容為0x00外,
printf("%.*s", 3, "abc123");
也可以印出 "abc"

2) mmap
最近遇到 mmap 的問題, 剛好遇到 tmp 資料夾被寫滿, 導致上一手檔案寫不進去, 然後交給我處理後, 我用 mmap 去讀取資料, 因為檔案存在, 但大小為 zero byte, 所以 mmap 回傳 -1
我的 error handler 只判斷 mmap 回傳 NULL 的時候, 所以沒有抓到這個 error, 最後整個process segmentation falut 結束
最後查了一下 man mmap, 發現 mmap 失敗時會回傳 -1, 我猜一開始應該也有注意過, 但一直沒去理會, 抱著僥倖的心理, 最後自食惡果啦

Wednesday, December 09, 2009

backtrack 3

如何在 ubuntu 下 backtrack 3 到 usb 隨身碟

1) download backtrack 3 iso
2) 打開 iso 檔, 並將裡面的 boot/ 與 BT3/ 拷到隨身碟
3) 到隨身碟下, 執行 boot/initinst.sh 即可

Monday, December 07, 2009

開發 objective c 的經驗

在ubuntu上開發 objective c 的經驗

1) 安裝需要的 library, header files
objc
>sudo apt-get install gobjc++
>sudo apt-get install libgnustep-base-dev
>sudo apt-get install gnustep

2) import header file
#import <Foundation/NSObject.h>

3) 編譯
gcc -I/usr/include/GNUstep/ -c *.m
gcc -o some_execute *.o -lobjc -lgnustep-base


Wednesday, November 25, 2009

網路搶票經驗

星期六早上幫carol, 網路訂BSB演唱會的票

中午12點整開放網路訂票, 大約11:55就發現可以進入, 但是網路還是不能訂票, 似乎是端點可以訂票, 不過這個時候就已經發現前面幾排已經賣完了
12點一到之後, 馬上搶著第3排中間的空位的票, 不過等到打完信用卡卡號之後, 位置也已經被別人買走了
在打資料的過程中, 也少到一排的位置了
就這樣子重覆搶了第5排, 第7排的中間的位置, 還是搶不到
最後, 捨棄第9排的位置, 直接搶第11排的位置, 這時候才可以成功搶到位置

Monday, November 23, 2009

72小時的經驗

上個星期發了個高燒, 退了又燒, 燒了又退, 就這樣子過了3天, 最後到署新掛急診才慢慢好轉

星期一晚上
去了聯園游泳, 游了2300公尺, 體力應該透支差不多了, 晚上到公司牽自行車騎回家, 路上飄點小雨, 晚上天氣算是有點涼吧, 不以為意地衝了回家, 回家後打了個香蕉牛奶, 配著老婆餅, 當消夜充飢

星期二
早上開始覺得雙腳痠痛, 當時以為是昨天晚上游太久的後遺症, 中午睡過午覺後, 到了下午開始全身發冷, 這時候開始覺得應該已經快要發燒起來了, 還以為是中了H1N1, 特地找了新竹有快篩的診所, 隨後跟老闆說一聲之後, 就下班, 趕著掛號去了
到了北大路的邱國華耳鼻喉診所, 體溫還在36幾度, 還沒燒起來, 但四肢痠得要命, 醫師說我喉嚨沒有紅腫, 應該不是H1N1, 開了點藥和退燒藥, 掛號費200元

星期三
吃過藥之後, 三餐過後, 都會腹瀉, 雖然沒有燒起來, 就是覺得很奇怪, 下午又去邱國華診所再掛號看看, 另外跟醫師說要自費快篩, 醫生用很長的棉花棒深深地插入鼻孔, 大概等15分鐘吧,結果是陰性反應, 總共掛號費200+自費650元
晚上覺得應該沒事, 想說去百貨公司, 買個毛帽, 想不到在路上, 開始覺得全身發冷, 回到家後, 直接在床上包著棉被休息, 躺著一陣子之後, 全身就發燒了, 吃了退燒藥後, 休息一下, 燒就退了

星期四
繼昨晚發燒後, 想說去馬偕掛號看看吧, 想不到過中午後, 又發燒起來了, 到了醫院後, 二話不說馬上做快篩檢查, 醫生用長長的探測棒, 挖我的喉嚨深部, 送去檢驗後, 大概等快一個小時, 結果也是陰性反應, 醫生也開了退燒藥跟腹瀉藥, 並且說如果再發燒的話, 下次就掛感染科, 做血液培養看看
當天晚上, 晚餐吃粥, 不過也沒吃完, 過了不久, 又覺得身體有點怪怪的了,好像又燒起來了, 11點多後, 就到署立新竹醫院掛急診了, 看過醫生之後, 因為我已經發燒超過48小時, 所以, 免不了要做H1N1快篩, 也要做全身檢查, 尿液, x光, 血液檢查, 然後吊點滴, 4個50ml的抗生素, 從12點打到快6點多, 然後燒還是沒有退, 又加打一袋點滴, 2個50ml的抗生素, 一直到早上11點才可以出院, 當然快篩的結果也是陰性的

最後身體算是有比較好了, 可是也不知道是什麼原因, 或許就像是Carol他媽說我應該是肚子生病, 而不是喉嚨生病, 我老闆也說有呼叫道的流感, 也有消化系統的流感吧, 我應該是得了消化系統的流感吧

Thursday, September 17, 2009

購機潮

最近公司多了5部lenovo x200+1部t400


IMG00239-20090924-2124.jpg

IMG00224-20090918-1624.jpg

IMG00226-20090918-1639.jpg

IMG00225-20090918-1624.jpg

IMG00223-20090915-1021.jpg

IMG00222-20090915-1020.jpg

IMG00221-20090915-1020.jpg

IMG00218-20090915-1017.jpg

IMG00217-20090915-1017.jpg

IMG00215-20090915-1015.jpg

IMG00214-20090915-1015.jpg

IMG00213-20090915-1015.jpg

IMG00212-20090915-1014.jpg

IMG00211-20090915-1014.jpg

IMG00210-20090915-1014.jpg

IMG00209-20090915-1014.jpg

Friday, July 10, 2009

公路車記錄

記錄我與公路車的時光

2009/09/21 騎車上下班
2009/09/17 騎車上下班
2009/09/15 騎車上下班
2009/09/08 騎車上下班
2009/07/28 騎車上下班
2009/07/27 騎車上下班
2009/07/24 騎車上下班
2009/07/22 騎車上下班
2009/07/21 騎車上下班
2009/07/20 騎車上下班
2009/07/15 騎車上下班
2009/07/14 騎車上下班
2009/07/13 騎車上下班
2009/07/08 騎車上下班
2009/07/07 騎車下班
2009/07/06 騎車上班

Sunday, July 05, 2009

htc magic

同事敗了htc magic


IMG00034-20090625-1012.jpg

IMG00032-20090625-1008.jpg

IMG00031-20090625-1007.jpg

IMG00036-20090625-1012.jpg

Saturday, June 20, 2009

BlackBerry Storm使用心得 - 電池篇

BlackBerry Storm號稱待機15天
對我而言可以超過2天, 就算不錯了

為了節省寶貴的電池用量, 做了一些設定
1) 背光開到10
不過在大太陽, Storm還是很nice調大背光, 那你可以看到內容, 我並不喜歡這樣
還在找如何關閉這項功能
2) 關閉GPS, 當有需要的時候, 才會打開
比如拍照後, 上傳到flickr前, 會打開GPS定位, 不過通常之後都會忘記再關閉
Options > Advanced Options > GPS > Location > Location Off > Save

Friday, June 19, 2009

騎腳踏車心得

之前同事提到騎腳踏車如何避免傷到膝蓋

聽說是用要臀部後面的肌肉去使力
大腿帶動小腿
想像把膝蓋放空

經過我騎一段時間的感覺
發現用後腳跟代替前腳掌
想像大腿從腰部垂直使力往下踏
膝蓋放輕鬆, 不要出力

這樣子騎了4個早上, 每次大約6公里, 經過3個上坡
在之前膝蓋總是一直出力, 騎完後會隱隱做痛一陣子
不過改用後腳跟後, 膝蓋沒什麼疼通的感覺

改用後腳跟的缺點
目前發現是剛練習時, 速度會變得比較慢
因為整個大腿去帶動, 感覺往下的力量還滿大的
所以現在在平地設定成前盤調到最大/後盤調到最小
上坡時, 設定成前盤調到最小/後盤調大4盤

BlackBerry Storm使用心得 - Memory篇

BlackBerry Storm只有128MB的RAM
開機之後, 大部分Application/Data都直接放到RAM上跑
只有音樂或一些比較大的檔案才會放到內建的1G flash或外部的8G flahs
基本上, 128MB的RAM, 對整個系統是很吃緊的

因此要做一些微調, 才可以讓整個系統跑得比較順一點
當RAM過小的時候, 開Mail的信時, 有時候會沒有反應, 或者沒有內容出來
可以從 Options > Memory 看到 Application Memory, Device Memory & Media Card

以下是目前已經做過的微調
1) 先砍內建的2個Game
因為沒有在玩遊戲, 而且是很雞肋的遊戲
2) 砍內建的Help
其實內建的Help很實用, 最後也是找到線上版的, 才會毅然決然地砍掉
3) 行事曆只存最近15天的筆數
4) 用 QuickPull, 模擬拔電池動作, 重新開機


Saturday, June 13, 2009

用垃圾做廢物

沒錢可以買fancy的東西
所以就自己做


散熱台

P6160287

P6160286

P6160285

P6160283

P6160282

高架電腦座

P6160273

P6160272

P6160271

終於有BlackBerry

最後還是敗了BlackBerry Storm

我的iphone 1代已經用了1年半
跟我的pb做同步, 用起來非常順手
無論是通訊錄或行事曆
都是手機接上電腦後, 馬上就可以同步好
不過, 想要換換口味
最後還是敵不過BlackBerry的魅力
所以就敗下去了

整體的感覺非常好

缺點
1) 觸碰螢幕的操控性
主要是硬體搭配軟體的問題
BB Storm搭配BlackBerry OS, 沒有iphone來得好用
最主要在於
BB OS的選項或按鈕, 大部分都偏小
如果是透過鍵盤去操控, 應該會方便設定
但透過拇指去點選的話, 就覺得有點力不從心了
時常要稍微修正一下拇指的角度, 才能完成工作

2) 與MAC OSX中文同步問題
在MAC上有PocketMac, BlackBerry Desktop Software for MAC.
可以同步行事曆, 通訊錄, Mail等
如果在Mac上有中文內容的資料, 如中文姓名
同步到BB Storm後, 會看到亂碼
行事曆也一樣

之後, 換google sync做同步化
第1次同步化後,
1) google contact與BB都出現duplicated筆數問題
只能手動刪除duplicated筆數的問題, 再重新sync
2) 在BB的calendar, 原本是在google calendar是重覆發生的事件
反而變成單筆事件
google sync的bug, 除非不用重覆發生, 要不然就是會變成單筆事件

優點
1) 大螢幕
用到目前為止, 突然覺得是不是BB Bold 9000比較好
不過當我用全螢幕看影片之後
就發現大螢幕用起來還是比較棒
2) 可以透過iTunes, 同步音樂
透過BlackBerry Media Sync做音樂同步
與iphone不一樣在於, iphone跟不同電腦做音樂的同步, 會刪除上一台電腦的音樂
而BlackBerry Storm則不會, 不管跟幾台電腦同步, 都還會存在

P6160293

P6160292

P6160290

P6160280

P6160274

#if sizeof 怎麼用

有時候會想要在comipler time時,
確認某個struct大小沒有超過預設值,
這時候就會想說可不可以這樣寫
#if sizeof(xxx)<=32
balabala
#endif
很不幸地, preprocessor不支援
(可能這個時候還不知道這個結構吧)

google了下找到一個方法

char dummy[1-2*(sizeof(xxx)>=32)];

在comipler time時, 做變數大小的檢查
如果超過預定的大小, compiler就會停下來
這時候我們就知道出事了
沒超過的話, 我們就會有一個用不到的1-byte dummy變數
但至少可能確認程式應該可以在我們的假設內執行

Tuesday, May 26, 2009

busybox 怎麼寫出來的

busybox將大部分的command全部link到一個主程式內

當執行某個command時, 由該主程式檢查第1個參數名稱, 再執行相對應的動作

test.c
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
int i;

for (i=0;i<argc;++i) {
printf("%s ", argv[i]);
}
printf("\n");

if ( strstr(argv[0], "iamlink") ) {
printf("hello, link\n");
}
}

>gcc -o test test.c
>ln -sf test iamlink
>./iamlink
hello, link

Wednesday, May 20, 2009

在mac上開發xcode的經驗

在此記錄 xcode & Objective-C 的經驗

1)
在 mac 上編譯
gcc -o prog file.m -lobjc -framework cocoa
在 ubuntu 上編譯
gcc -o prog file.m -lobjc -lgnustep-base

筆記,
1) Every method has an implicit local variable called self, which is a pointer
to the object that is executing the method.
2) Because you will frequently need objects that you are not retaining, many classes have class methods that return autoreleased objects.
3) outlet感覺有點像class AppController, 透過outlet, 存取 UI 的 controller. 或者 class AppController 如何存取 UI 的 controller, 則是透過 outlet 指向這個 controller.

Tuesday, May 19, 2009

我的第一台公路車

為了慶祝我剛出社會找到工作, 所買的人生第一台公路車

版本2,
為了慶祝我剛滿20歲, 所買的人生第一台公路車

KHS R3000

P5180250

P5180251

P5180253

P5180254

P5180255

P5180256

Monday, April 20, 2009

程式開發技巧x

連續2個 if 的陷井

試問以下的程式碼, 結果為何

if (1) {
if (0) {
return 2;
}
} else {
return 1;
}


結果應該會回傳一個"不確定的值"
可能會馬上出錯
也有可能一個月才會出錯(或當掉)
然後要review code, 再加點運氣就會發現這裡可能有問題
再放上三個月, 好像不會再出錯了
當做這個問題已經好像似乎已經好像似乎...沒有把握的...解決了

這個範例只是要點出幾個潛在的問題
1)if之後要不要加else
如果每個if之後都有else, 那這個範例應該不會有機會出錯

2)預設的回傳值
也就是無論如何, 一定都會有一個預設的回傳值會傳回去

3)應該不會發生
這句話的代價可能要用時間去驗證"是不是可以獲得解決"

正確寫程式的習慣, 遠比測試1天沒發生問題, 來得重要

Tuesday, April 07, 2009

perl - hash, array, reference

About hash, array, reference

solution 1,

#!/usr/bin/perl -w

use strict;

my @array;
foreach (0..9) {
handler(\@array);
}
for my $i (0..$#array) {
print $array[$i]->{key},"\n";
}

sub handler {
my ($aryhref)=@_;
my (%hash);
$hash{key}="abc";
push @$aryhref, \%hash;
}

=========================
solution 2,

#!/usr/bin/perl -w

use strict;

my @array;

my %hash;
foreach (0..9) {
ca(\%hash);
push @array, \%hash;
}
for my $i (0..$#array) {
print $array[$i]->{username},"\n";
}

sub ca {
my ($hashref)=@_;
$hashref->{username}="abc";
}

use strict;
%{hashref}->{key}
got "Using a hash as a reference is deprecated"
suggest ${hashref}{key} instead.

about Perl Module installation

Monday, April 06, 2009

雨刷與車前玻璃

好長一段時間, 只要下雨, 用雨刷, 就可以聽到雨刷跟前玻璃之間的呱呱聲

"其實只要用魔術靈就可以了", 一天高愛倫這樣跟我說
他繼續說到, "好像是玻璃有黏黏的東西, 所以雨刷會不順"

剛好家裡有一罐魔術靈, 還是玻璃東西的, 噴了幾下
似乎現在已經沒再聽到呱呱聲了

繼續追蹤看看

Friday, March 27, 2009

My Socket Experience

Non-blocking Mode


fcntl

int flags=fcntl(sockfd, F_GETFL, 0);
flags |= O_NONBLOCK;
fcntl(sockfd, F_SETFL, flags);

ioctl

int on=1;
ioctl(sockfd, FIONBIO, &on);

Raw Socket

man 7 raw

Thursday, March 26, 2009

perl experience - module installation

perl安裝新的 module 步驟
>perl -MCPAN -e shell
>install Bundle::CPAN
>reload cpan
或其他 module
經常會遇到 Permission denied 的問題

此時,可以嘗試
>o conf make_install_make_command 'sudo make'
每次 make 時, 會先 su , 再執行 make
>o conf commit
儲存上述設定

出現這種錯誤
500 Can't connect to secure.ogone.com:443 (Invalid argument)
or
501 Protocol scheme 'https' is not supported (Crypt::SSLeay or IO::Socket::SSL not installed)
>install Crypt::SSLeay

>apt-get install perl-doc

Symptom
when executing widget, the error message "no event type or button # or keysym..." shown out.
My Tk version seemed Tk-804.028 installed by CPAN.

Solution
Manually download and install Tk-804.028_501
http://search.cpan.org/CPAN/authors/id/S/SR/SREZIC/Tk-804.028_501.tar.gz

install occurred "permission denied"
>o conf mbuild_install_build_command 'sudo ./Build'
>o conf commit

Tuesday, March 24, 2009

最近的經驗

把rx跟tx分成2個thread, 是個很大的錯誤

會有很多同步的問題要考慮並解決

Wednesday, March 18, 2009

x11 on mac

最近遇到一個問題
AUDIT: Wed Mar 18 11:08:34 2009: 243 X: client 4 rejected from IP 192.168.200.66

解決的方法, 透過 xhost
在10.4時,
1)先啟動 startx
2)再 xhost + 或 xhost +ip 即可
另外, 直接啟動xhost, 不會啟動x server, 所以記得先 startx
在10.5
由於 xhost 會再多啟動一個x server
所以直接啟動 xhost即可,不需要 startx

Friday, March 13, 2009

linked list

一般常見的linked list問題

1) delete node
2) copy structure with next pointer

Tuesday, March 10, 2009

停電篇

停電, 筆電還有電, 可以幹什麼?

1) wireless ap, 或 modem 沒電, 也不能上網
2) 沒電, 也不能用筆電看電子書
3) 只好看紙本的書
4) 沒電, 3.5吋的外接硬碟, 也不能用
5) 免外接電源的外接硬碟, 這時候就是價值所在了, 不過筆電也是要供電給它用
6) 沒電, 桌上型電腦也不能用
7) 沒電, 不能開電視, 看CSI

Thursday, March 05, 2009

聊聊

每次面試完, 都會問對方, 還有什麼要補充的或是還有什麼問題?
就被問到工作的成就感在哪裡?與是否寫一輩子的程式?

第1次寫程式, 覺得程式可以跑就很有成就感了
不過工作之後, 程式會跑, 已經無法滿足自己了
而是追求程式的穩定, 與架構的相容性
穩定度愈高, 代表當初的problem domain survey要完整, 才能夠提出相對應的solution
analysis, design, coding, unit-test and handle citical section
相容性高, 表示已經預測到將來的可能性擴充, 以相容性設計為提前

是否寫一輩子的程式, 我倒沒想過這樣子的問題
不過我的回答倒是這樣
總不能跳去做硬體吧
軟體有很多領域, 網路, 多媒體, 嵌入式等
所以, 如果可以找到自己的挑戰, 那應該無所謂是不是寫一輩子的程式吧

Wednesday, March 04, 2009

ACM problem 100

problem id 100
3n+1 problem
solved

今天終於解了
原來重點在於輸入的範圍介於i,j
其中 i不一定小於j
就因為這個一直給我wrong answer

Monday, February 23, 2009

exit, _exit

exit() 與 _exit() 之間的差異性

1)fork()出來的process, 不要用exit(), 用_exit()
2)exit()會依序呼叫以下函式
cleanup()
atexit()時註冊的callback function
_exit()

我的想法如下
為什麼child process, 不要用exit()
因為atexit()註冊的callback function, 可能會含有移除一些共用的resource釋放的程式碼
所以如果在child process結束時, 移除共用的resource, 可能會造成其他process的問題
尚待驗證

Thursday, February 19, 2009

strace on macosx

cannot find out strace on macosx or fink

using tool below instead,
1) /usr/bin/fs_usage
2) ktrace & kdump
3) /Application/Utility > Acitvity Monitor > Inspector or Sample Process

wget easy howto

如果wget遇到要username跟password時

wget --user=XXX --password=??? http_download_url

Wednesday, February 18, 2009

dropbox

Install dropbox on ubuntu 8.10

0) get dropbox source
1) sudo apt-get install libnautilus-extension-dev
2) sudo apt-get install libnotify-dev
3) ./configure && make
4) make install

The most important is logout & login to launch dropbox.