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