Thursday, September 17, 2009
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 騎車上班
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
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
對我而言可以超過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盤
聽說是用要臀部後面的肌肉去使力
大腿帶動小腿
想像把膝蓋放空
經過我騎一段時間的感覺
發現用後腳跟代替前腳掌
想像大腿從腰部垂直使力往下踏
膝蓋放輕鬆, 不要出力
這樣子騎了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, 模擬拔電池動作, 重新開機
開機之後, 大部分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
終於有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則不會, 不管跟幾台電腦同步, 都還會存在





我的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則不會, 不管跟幾台電腦同步, 都還會存在
#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變數
但至少可能確認程式應該可以在我們的假設內執行
確認某個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個參數名稱, 再執行相對應的動作
>gcc -o test test.c
>ln -sf test iamlink
>./iamlink
hello, 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.
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
Monday, April 20, 2009
程式開發技巧x
連續2個 if 的陷井
試問以下的程式碼, 結果為何
結果應該會回傳一個"不確定的值"
可能會馬上出錯
也有可能一個月才會出錯(或當掉)
然後要review code, 再加點運氣就會發現這裡可能有問題
再放上三個月, 好像不會再出錯了
當做這個問題已經好像似乎已經好像似乎...沒有把握的...解決了
這個範例只是要點出幾個潛在的問題
1)if之後要不要加else
如果每個if之後都有else, 那這個範例應該不會有機會出錯
2)預設的回傳值
也就是無論如何, 一定都會有一個預設的回傳值會傳回去
3)應該不會發生
這句話的代價可能要用時間去驗證"是不是可以獲得解決"
正確寫程式的習慣, 遠比測試1天沒發生問題, 來得重要
試問以下的程式碼, 結果為何
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
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 rawThursday, 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
>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
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
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
Subscribe to:
Posts (Atom)