Friday, December 19, 2008

學習道2

學習道記錄之2

基本3階pipeline
fetch -> decode -> execute
================================
Usage convention 使用習慣
每一種語言, 含assembly language, 都會有各自的使用習慣
================================
一般多音節的名詞單字, 重音會放在第2個字母上?
preference
================================

Tuesday, November 25, 2008

筆記

最近學習的筆記

filename是已經存在的10MB檔案,
sample 1)
fopen(filename, "wb");
sample 2)
fp=fopen(filename, "ab");
rewind(fp);
之間的差異
--------------------------------------------------------------
理論上從上層來看是沒啥差異, 但談到kernel如何配置
新的區塊, 就有不一樣的結果
sample 1, 會先縮減filename的大小, 再重新配置一塊區塊使用
並且將index指到檔案起始位置.
sample 2, 打開filename後, 會將index指到檔案尾,
rewind再重新將index指回檔案頭.
因此, sample2會比較有的效率, 少了重新配置區塊的動作,
以及, 減少fragment的機會.
=========================================================
fprintf(stdout, "hello world\n");
fprintf(stderr, "hello world\n");
Q:之間的差異?
-------------------------------------
stdout會先要列印的字串, 收集到預設的buffer,
待buffer滿時, 再一次輸出
stderr會直接輸出要列印的文字
=========================================================
Q:如何判斷檔案的大小
Sol1,
用 fstat(fd, &statbuf) 取得, statbuf.st_size即為檔案的大小
Sol2,
fseek(fp, 0, SEEK_END);
filesize=ftell(fp);
=========================================================
何時使用multi-process?何時使用multi-thread?
一般建議用multi-thread, 比較節省resource的使用, 但缺點在於當其中某個thread發生問題, 整個processs, 會隨之crash.
sol1, 找出造成問題的點
sol2, 趕時間的話, 保留multi-thread的架構, 但試著將會crash的函式以multi-process方法產生, 這樣會crash的, 只有那個process, 而不是主process.
=========================================================
Kernel不允許User space Application攔j載SIGKILL, 所以最後手段可以透過 kill -9 app, 結束程式.
但何時送SIGKILL, 也沒有辦法結束程式呢?
有可能該程式正卡在底層driver, 或是kernel space某處, 因此送出SIGKILL, 會沒有反應, 這種情況通常可以透過 ps, 看該程式的process status是否為 D ( Uninterruptible sleep (usually IO) )得知.
=========================================================
什麼時候用udp?什麼時候用tcp?
case1,
case2,
傳送資料量小時, 可以考慮用udp,相反的,資料量大的,考慮用tcp吧
=========================================================
同步與非同步的例子?
=========================================================
signal handler內是否要重新註冊signal handler
it depends.
舊時期的系統會將signal導給已註冊的handler後, 回到預設的handler
近期的linux, 則相反, 會一直保留已註冊的handler
為了相容性考量, 建議重新註冊signal handler
總之, 要跑過才能知道真正的行為表現
=========================================================
給測試部時, 要給release版或debug版呢?
如果測試部人手比較多的話, 可以建議2種版本都出
但如果人手不夠的話, 還是只能出release版的
=========================================================
export LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH)
=========================================================

Monday, November 24, 2008

ubuntu programming howto

記錄用ubuntu開發程式時, 需要的設定

>sudo apt-get install build-essential

> sudo apt-get install manpages
> sudo apt-get install manpages-posix
> sudo apt-get install manpages-posix-dev
> sudo apt-get install ssh
> sudo apt-get install subversion
> sudo apt-get install wireshark
> sudo apt-get install vsftpd
> sudo apt-get install bison
> sudo apt-get install autoconf
> sudo apt-get install flex
> sudo apt-get install gperf

libcurl
>sudo apt-get install libcurl4-openssl-dev

gtk
>sudo apt-get install libgtk2.0-dev

GNOME
>sudo apt-get install gnome-core-devel

minicom

>sudo apt-get install minicom

make menuconfig
>sudo apt-get install ncurses-dev

object c
>sudo apt-get install gobjc++
>sudo apt-get install libgnustep-base-dev
>sudo apt-get install gnustep

libboost
>sudo apt-get install libboost-thread-dev

openssl header file
>sudo apt-get install libssl-dev
or
>sudo apt-get install openssl*

zlib.h
>sudo apt-get install zlib1g-dev

bzip2
>sudo apt-get install libbz2-dev

x11
>sudo apt-get install libx11-dev

linux source
>sudo apt-get install linux-source


========

nfs server
>sudo apt-get install nfs-common nfs-kernel-server
Edit /etc/exports
for example,
/tftpboot 192.168.200.0/24(rw,sync,no_subtree_check,no_root_squash)

>sudo /etc/init.d/nfs-kernel-server restart

Self Test 1
>showmount -e localhost


Self Test 2
nfs client
>mount -t nfs 192.168.200.22:/tftpboot /mnt
or try
>mount -t nfs -o nolock 192.168.200.22:/tftpboot /mnt

Troubleshooting

1.
If fail to start NFS kernel daemon, try to
/etc/init.d/portmap start
or
/etc/init.d/rpcbind restart
Then do "apt-get install nfs-kernel-server" again.

2.
If nfs client still cannot connect to nfs server, try
at client side,
>mount -v -t nfs -o nolock NFS_SERVER_IP:/tftpboot /mnt
observe the message

at server side,
>dmesg
>tail -f /var/log/syslog

If mountd complianed illegal port, then try to add insecure to /etc/exports
/tftpboot 192.168.200.0/24(rw,sync,no_subtree_check,no_root_squash,insecure)

========

tftpd

========

remount
>mount -o remount,rw /wanted_path

gawk
>sudo apt-get install gawk

freetype2
>sudo apt-get install libfreetype6-dev

mysql
>sudo apt-get install mysql-server mysql-client
>sudo apt-get install libmysqlclient16-dev

telnetd
>sudo apt-get install telnetd
>sudo /etc/init.d/openbsd-inetd restart

snmp
>sudo apt-get install snmp

ssh: connect to localhost port 22: Connection refused
>sudo service ssh restart

Read from socket failed: Connection reset by peer
>ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
>ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
>service ssh restart

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


svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LC_CTYPE is UTF-8
svn: warning: please check that your locale name is correct

Solution:

Add lines below to ~/.bashrc
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

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

Autostart daemons
>sudo update-rc.d ssh defaults
>sudo update-rc.d apache2 defaults

Troubleshooting:
$update-rc.d ssh defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match ssh Default-Stop values (none)

Solution:
$update-rc.d ssh remove
$update-rc.d ssh defaults

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

Static IP
In /etc/network/interfaces,


auto eth0
iface eth0 inet static
address 192.168.1.150
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.1.255
gateway 192.168.2.1
safe

DNS
In /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

Finally,
sudo /etc/init.d/networking restart

=====================================
xxx is not in the sudoers file. This incident will be reported

Solution
append the username to sudo in the file /etc/group

=====================================
how to update java version fom 1.6 to 1.7

Solution 1:
update-java-alternatives --jre -s java-1.7.0-openjdk-i386

Solution 2:
# to install add-apt-repository
apt-get install python-softeware-properties
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java7-install


Friday, November 14, 2008

今年第1部電影

今年第1次進電影院 就是要去看007量子危機

非常地棒
深深地覺得007真是滿足男人破壞的慾望 女人的性幻想對象
還有今年omega廣告打得很兇

Thursday, November 13, 2008

入手mbp 15'' 2.5GHz

終於入手人生最期待好機 15" C2D 2.5GHz mbp + 4G Ram + Nvidia 8600 512MB



PB100022

PB100023

PB100025

PB100027

PB100028

PB100029

PB100030

PB100031

PB100032

PB100033

PB100034

PB100034

PB100035

PB100036

PB100037

PB100038

PB110040

PB110041

PB120043

Thursday, October 30, 2008

想要的東西

每個時期都會有個想要的東西

高中那時候, 最想要的東西就是Michael Jordan的藍球鞋
上班
第2年, 最想要的東西omega seamaster
第4年, 最想要的東西macbook pro

Friday, October 24, 2008

gnuplot on osx

a problem that use fink to install gnuplot

It will fail when met libmpfr1.
My solution is follow http://www.opensource-archive.org/archive/index.php/t-36845.html,
that is "fink rebuild gmp gmp-shlibs" first, and then "fink install libmpfr1".
finally, go back continue "fink install gnuplot".

Thursday, October 16, 2008

新竹 樹太老 不好吃

有一天晚上去吃這一家

等了好久, 也餓了好久
在滿心的期待下, 終於輪到我們了
基本上, 生高麗菜失敗
雖然可以免費續菜
不過難吃的菜, 只要吃一口就夠了
主菜還好, 沒啥令人驚豔之處
總之, 就是失望

相對而言, 台北的知多家就好的太多了
生高麗菜嚐起來是甜的
主菜又是一整個令人胃口大開
可惜, 只有在台北才吃得到

這是個~S I G N~嗎?

話說昨晚要燒DVD

才發現我的pb不支援dvd+r的片子
這又發生在新機發表之後
是否是個sign呢?

ps
在這之前, PB的喇叭也不會叫了
這也是個sign嗎?

Tuesday, October 14, 2008

3G無線上網 vs wifi無線上網

因為家裡一直沒有寬頻上網, 所以每次放假回家都只能看電視或電子書或反覆安裝遊戲消磨時間
唯獨這次回家不同, 有了些突破

話說我回家之後, 去繳被斷話的手機錢, 順便瀏覽了一下3G無線上網
800塊就可以無線上網, 要綁約2年 (嗯, 剎那間, 還滿心動的, 再回家考慮一下)

回家之後, 打開我的pb, 準備Kismac, 掃附近的無線網路
出現了一直久攻不下熟悉的ssid, 不過這次我是有備而來的
首先, 要先抓一些封包, 然後才能夠執行破解
嗯, 大概抓了1分鐘不到, 心急又跑破解, 不過還是說封包數不夠
最後, 前前後後, 抓了2萬多個封包, 終於破解了
呵呵, 終於可以在家上網啦

最後, 我想最近應該還不需要申請3G無線上網服務吧

update at 2009/04/06
這次清明回家, 碰巧到台灣大店看看
注意到 800塊吃到飽, 送 Q101 網卡
原本有點心動的
不過最後還是忍下來了
因為不用錢的隔壁網路就夠用了
雖然很難連得上

Sunday, September 28, 2008

生字表

記錄一些查過的生字

生字
interrelated - (adj.) 有互相關係的
consequently - (adv.) 結果, 因此, 必然地
cope - (vi.) 妥善處理, 對付; 競爭
consume - (vt.) 消耗, 花費
deficiency - (n.) 不足, 缺陷(缺點)
delineate - (v.) 描述, 畫..的輪廓
devoid - (adj.) 缺乏的(+of)
defer - (vt.) 推遲, 延期
elsewhere - (adv.) 在別處
ramification - (n.) 分枝, 分派
with respect to - 有關
motivator - (n.) 動力
fulfill - (vt.) 滿足, 達到
relevant - (adj.) 有關係的, 相關的
prune - (vt.) 刪除, 消減
heuristic - (adj.) 啟發式的, 嘗試錯誤的
lieu - (n.) 場所
shirk - (vi.) 收縮, 變小
saturated - (adj.) 飽和的, 滲透的
gang - (n.) 一組人
presumably - (adv.) 據推測, 可能
exacerbate - (vt.) 使惡化
coalesce - (vi.) 聯合

句字
...if care is not taken.
configurable threshold

Thursday, September 25, 2008

Openoffice 3.0 RC2

最近在用 OpenOffice3

因為我常會在 Mac 跟 Windows 上, 寫一些文件

之前是在 Google Document 上寫,
雖然有很強的移植性, 但有些格式對我而言還是覺得不能滿足
比如在頁首的地方, 加入圖片與幾行文字
列印出來的格式, 會有問題

之後採用 OpenOffice3 RC2
目前用起來, 可以滿足我的一些格式需求

一般常用的 tips

Mac
page break - command + enter

Windows


Wednesday, September 24, 2008

swap disappear in ubuntu

最近幹了件蠢事

前幾天, 在ubuntu下, 尋找是否還有尚未被格式化的partition
很幸運的, 找到一個partition, 用 mkfs.ext3 格式化後, 得到10.5GB的partition
接著又看到一個未格化的partition (/dev/sda6)
又很高興的做了格式化
結果, 不久之後, ubuntu開始嚴重lag,
進入x-window之後, 不能夠跑index, 只能開terminal, 也不能夠開firefox
而且從遠端也連不上
我還一度以為是不是這台電腦大限已到

就在不時地開htop看系統資源時,
頓然發現swap沒有大小, 也就是沒有swap
屆時了解這幾天的lag, 是因為原本拿來當swap的/dev/sda6, 被我重新格化了

最後又重新格式化成swap格式
mkswap /dev/sda6
...
之後ubuntu又開始生龍活虎了

Wednesday, August 13, 2008

mac的怪事

在此記錄mac上遇到的trobuleshooting

Q:原本可以連上的sshd, 忽然連不上
A:有一天公司對外的網路不通, 然後我的ssh就連不上同一個網段的ubuntu, 這個時候, 可以ping到那台主機, 也可以從那台主機連到我的iBook, 不過就是不能夠從我的iBook連到那台去, 之後, 對外的網路通了之後, 這問題也自然解決了, 懷疑是否lookupd的問題?

眼睛痛

最近眼睛痠痛

眼睛感覺會畏光, 螢幕看久了會痠痛, 最後受不了就去看醫生, 結果也沒啥大問題, 眼壓應該沒啥問題, 至少他沒跟我說眼壓有問題, 不過倒是跟我說, 我的眼鏡配太足了, 或多或少會讓我的眼睛太過疲勞, 點了幾次藥水之後, 就好多了
此外, 我也要好好想想是否有必要配個低度數的眼鏡來看近距離的螢幕了, 或許我的隱形眼鏡也該換成低點的度數了

Monday, August 11, 2008

ethereal on osx 10.4.11

Record the steps of porting ethereal 0.99 on 10.4.11

It's much easy to use fink to install ethereal.
but when getting the error message like "_gdk_threads_add_idle referenced from libgtk-x11-2 expected to be defined in libgdk-x11-2", the solution is remove gtk+2-dev first, written in http://www.finkproject.org/faq/comp-packages.php?phpLang=en

Sunday, August 03, 2008

挫折

最近遇到的挫折

1) Pending Design Document
pending好久的設計文件, 一直沒有完成, 永遠都只有簡單的幾個大綱摘要掛在那裡
已經結案快半年的案子, 還是沒辦法靜下心來把文件準備好
最近又要開始做接下來的新功能, 少了完整的設計文件
我還是得花時間重新看過, 才能了解之前在寫些什麼

主要的問題, 我一直拿不定主意, 到底要不要用page做文件, 要不要在我的ibook上做文件
因為這會關係到, 別人如何更新這些文件

2) PayPal failure
PayPal又失敗了
整個被打敗

Saturday, August 02, 2008

傷眼的鏡面螢幕

鏡面螢幕常聽說很傷眼睛,
我覺得, 真的很傷眼...
我的iBook, 都比它好看太多了
鏡面螢幕, 不推薦

某一天, 我帶一台鏡面螢幕的筆電回家,
晚上工作的時候, 盯著鏡面螢幕, 發現眼睛痠痛不已
不過, 再回到我的iBook上, 又覺得沒這麼刺眼
果然, 鏡面螢幕真的很傷眼睛
現在, 連白天, 都覺得沒辦法可以盯著它看了

這樣子, 又有藉口逃避敗macbook air的欲望

update,
晚上看鏡面螢幕, 隔天起床眼鏡痛得什麼似的, 深怕老了, 會有青光眼
白天看鏡面螢幕, 就覺得還好, 另外可以把螢幕關掉, 用來看後面有沒有偷窺

Tuesday, July 01, 2008

推薦書單

推薦一些看過的書/記錄一些要看的書

最後的演講 The Last Lecture
Advanced Linux programming
iWoz

Wednesday, June 25, 2008

Mac上常用軟體

記錄在Mac上常用到的軟體

Editor/
TextWrangler

TextMate
Sublime Text
Brackets Sprint


Mind map/
Freemind

Instant Messager/
Adium
Skype

Web Browser/
Safari
Firefox

Chrome

Ftp Client/

FileZilla
Fugu
Transmit
RBrowser.app

Multimedia player/
VLC

movist
快播
MPlayerX
Realplayer
mplayer (for big5, default encoding to CP950)


PDF viewer/
Preview
Skim

Chm viewer/
iChm
Chmox
xchm
Chamonix

Drawer/
Inkscape
OmniGraffle professional
Gimp

Word processor/
iWork
OpenOffice

Packet capturer/

wireshark
iStumbler
MacStumbler
KisMac

Unzipper/

keka
Stufflt
unrarx

Hardware Monitor/
SMARTReporter
Temperature Monitor

Recorder/
Toast

flowchar/
omnigraffle

Others/
AlienBBS
Dropbox
fink
QuickSilver
香草輸入法 (Openvanilla)
Perian
Remote Desktop.app
marports
omnifocus
omniplan
omnioutliner
clickToFlash // flash blocker for safari
Carbon Copy Cloner

Prism
RamDisk
Evernote
XBMC
Xcode
CoRD

Widget/
iStat pro


Virtual Machine/
VMware Fusion
Virtual Box

Terminal/
iTerm

在window$上常用的軟體

記錄在window$上常用到的軟體清單

Web Browser/
Firefox
Opera
Flock

Editor/
UltraEdit

Mind map/
Freemind
xmind

Ftp client/
CuteFTP
filezilla

SSH client/
PuTTY

Multimedia player/
iTunes
VLC
Windows Classic Player

Instant Messager/
MSN Messager
skype

screenshot/
MWSnap

packet capture/
Wireshark

virutal machine/
VMWare

antivirus/
avira

chm reader/
ultrachm

在Linux上常用的軟體

記錄在linux上常用的軟體

Editor/
vi

Others/
Terminal

Web browser/
Firefox

Thursday, June 05, 2008

ubuntu as NAT

剛好遇到兩張網卡, 所以特別記錄下來

最近遇到2個NIC的問題, 手邊有第2張網卡, 今天就把它setup好了
開完機後, linux抓到2張網卡, eth0, eth1
然後我把eth1當做lan port, eth0當做wan port
另外接一台電腦client, 到lan port
設定步驟,
1) echo 1 > /proc/sys/net/ipv4/ip_forward
2) iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
到這裡, 假如eth1設定static ip, 而且client也設static ip, 也在同一網段
基本上, client應該可以透過linux pc上網了

3) edit /etc/udhcpd.conf
4) 啟動 udhcpd
這樣子, client應該可以透過dhcp拿到linux pc所給的ip, 並且可以上網

5) apt-get install bind9
6) edit /etc/bind/named.conf.local
7) edit /etc/bind/named.conf.options
這樣子, client應該可以把linux pc當做dns server source, 並且可以上網
---------------------------------------------------------------------------------------------------------------------
如果還是不能從LAN上網, 請再檢查是否有打開Firewall

Monday, June 02, 2008

單車日記

記錄騎單車的日子

5/28
這天第一次騎腳踏車上班去, 剛起床時, 地上是溼的, 看來剛剛才下過雨, 不過現在看來似乎沒下了, 心裡還是打定主意要騎腳踏車上班去, 正所謂, 有些事現在不做, 將來也不可能會做。
昨晚盤算了一下上班的路線圖, 一直想說希望可以避開光復路壅塞的交通和廢氣, 所以打算騎進校園, 參考了一下網路上別人的路線圖, 大致上就是從水源街清大側門進去, 找清交小徑, 然後到交大, 再到園區內, 看起來好像非常簡單, 但一切等我上路之後, 才發現沒這麼容易。
上路不久就遇到第一個抉擇, 哪裡買早餐, 假如現在不買的話, 待會到學校, 更是找不到早餐可以買, 假如不吃早餐, 那這個早上可能就會虛掉, 沒力上班了, 所以趁近在7-11買了個豬排壽司, 出店門之後, 發現天空開始飄起小雨, 第二個抉擇又來了, 是不是要就此放棄呢, 於是往回騎了一小段路之後, 還是覺得就衝下去吧, 這雨看起來待會就停了, 於是開始我的單車之旅。
走民權路, 轉民族路, 經過東大路橋, 轉橋下的小路, 準備走地下道, 到玻璃博物館, 右轉, 經過食品路, 到學府路, 再右轉, 準備上十八尖山登山口下, 繞機車小道, 最後進清大側門。
進校門之後才是痛苦的開始, 因為我一點也不清楚清交小徑怎麼走, 只有模糊的印象, 眼看時間慢慢地過去, 心裡真是又累又慌, 顧不得形象, 問過幾個路人之後, 才找到清交小徑, 其中經過大約60度的上坡, 經過修路工程, 只好腳踏著溼泥土, 牽著車經過, 最後還發現是一條封路, 總之最後輾轉找到清交小徑。
到了交大, 我就比較熟悉了, 經過田徑場, 籃球場, 宿舍, 舊南大門, 最後走小門出去到園區, 最後總算到了公司, 真是又累又充實的一趟上班路途, 別忘了, 路上還一直飄著小雨。

下班之後, 發現回家的路好輕鬆, 因為一直都是下坡道, 所以大約20分鐘就到家了, 相對於早上要騎30分鐘, 還汗流挾背地, 簡直是天壤之別。

5/30
29號因為要送修家裡的電腦, 所以就開車上班了, 今天才繼續第二天的單車之路。由於有上一次痛苦的經驗之後, 我改騎另外一條, 與忠孝路打通的建功路, 這條路相對比較少車, 比較安全。
出門之後, 上東光橋, 下橋之後等紅綠燈二段左轉, 然後走建功路, 到清夜, 又是另外一個上坡, 之後左轉, 打算從金城一路, 轉光復路。
為什麼不從星巴克跟屈臣氏中間穿過呢?如果從這邊出去的話, 容易遇到大客運從路旁出來, 比較危險,我是這麼想。
到了光復路之後, 接下來就是走大學路, 然後接小路到園區, 基本上騎到這裡, 已經快是筋疲力盡了, 不過還是狠著心繼續踏下去, 但最後, 敗在好斜的上坡路, 只能下來牽著車慢慢走, 就在走路的同時, 後面有個人活生生地騎著車慢慢地踏上來, 呵呵, 一整個被看笑話了。

5/31
這天與昨天一樣騎建功路上班去, 唯一不同, 我終於征服好斜的上坡道。整個上班路途, 會經過三個上坡, 慢慢習慣中。

這一天由於加班比較晚回家, 所以騎寶山路回家, 發現似乎比光復路還要遠, 晚了10分鐘到家。

6/1
回家的時候, 遇到了大雷雨, 一整個沒為下雨準備的我, 只能躲在別人家的屋簷下, 等雨停。

後記, 國防役這幾年下來, 繼第一年學會游泳之後, 在最後一年, 以騎腳踏車上班做為結尾吧。

Sunday, June 01, 2008

新竹的美食

記錄曾經吃過的美食

遠百附近
----------------
龍太郎
蕭家雞肉飯

城煌廟附近
--------------------
阿富魯肉飯
杏仁茶+油條老店

太平洋百貨附近
----------------------------
香料屋(印度人的最愛)
魯肉飯老店
素魯肉飯老店

民生路附近
--------------------
生鐵餐廳
夏綠蒂
Amigo
Friday
咖哩番
Sunny LuLu

經國路
------------
羊肉炒麵(印度人也愛吃 )

護城河附近
--------------------
泰之味
家竹亭
古拉爵

金山街
------------
新竹閱讀
家常菜
泰世界

清夜
----------------
迎賓園
餃子大王
香辣老虎麵

竹師附近
----------------
上賓

竹北
--------
outback(澳美客)

Wednesday, April 23, 2008

入手rimowa

已經拿到手很久的rimowa

在新光三越 A4 館買的 1月多 漲完錢之後
Classic Flight (復古系列) 大型二輪旅行箱

DSC04969.jpg

DSC04971.jpg

DSC04970.jpg

DSC04972.jpg

DSC04973.jpg

Friday, April 11, 2008

4+1

iphone 愛不釋手

自從我買了辦公室第一支iphone後
辦公室陸續跟進了好幾支
這就是iphone的魅力所在

DSCF3448

DSCF3447

DSCF3446

DSCF3445

DSCF3444

DSCF3443

DSCF3442

DSCF3441

DSCF3440

Wednesday, March 19, 2008

my leopard tutorial

最近想要寫iphone的application, 但iphone SDK只能在intel-based, 而且要10.5以上才能跑, 無奈我只有2台 10.4.11 的pb跟ibook

iphone SDK只能在intel-basd的機器上跑, 這方面已經有其他方法可以避開, 請參考 http://3by9.com/85/

不過aspen(iphone 模擬器)還是被限制只能在 10.5 才能夠跑
所以就把我的PB, 從10.4.11升級到10.5
升級完後, 就發現整個系統回應超級慢 儘管spotlight已經做完index
開個資料夾 彩球就開始轉
過了一個白天的考慮 覺得應該是升級的問題
所以打算先重灌10.4, 然後再升級 10.5試試
如果再不行的話 可能要去買 10.5完整版了

最後,
花了3個小時重新安裝10.4
裝完之後, 馬上升級10.5
升級完後, 再做online software update到10.5.2
這樣子下來, 果然不一樣
整個系統非常順, 不再有彩球轉不停的現象出現
當然 我的aspen也可以正常執行啦

再來 就是要抓VLC看影片
重點是如何播中文字幕
有2個地方要做設定
1) Video > Subtitles/OSD > Text renderer > Font請選擇中文字體
2) Input/Codes > Other codes > Subtitles > Subtitles text encoding 請選 big5

Saturday, March 15, 2008

my iphone tutorial

backup something I done for now

如何自製鈴聲

如何放影片到iphone
1) itunes 7.6.1, QuickTime Pro 7.4.1
2) 先用QuickTime打開影片, 再 檔案>輸出 成m4v(for iphone)格式
3) 再打開m4v檔, 這時候應該會用itunes打開這個檔, 而且會放在 資料庫>影片 裡面
4) 同步時, 記得打開 同步影片 的選項

對Apple March 6 Event有興趣的 可能參考
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?i=23664566&id=275834665

Wednesday, March 12, 2008

iphone後記

在買iphone之前, 原本打算買nokia 6500, 結果最後還是買了iphone

nokia 6500空機價大約13K到15K, iphone則是16K到20K
如果當初買Nokia的話, 大概過了二個星期的話, 我就可能已經忘記這支手機的價值所在了
不過 幸運的是 我最後是選擇了 iphone

大約在去年底就有打算換手機
而且是預計是要換 08年要在台灣上市的iphone
不過中途還是控制不了想要敗家的欲望
轉而想要先入手nokia的手機
還好 這欲望 經過長時間的研究 漸漸沖淡這個衝動
最後 也是想說 3G對我而言 並不重要
就敗下了我這支iphone 8G

雖然iphone貴了好幾千塊, 但我得到的卻不只是一支手機而已
再來一般世面上的手機對我而言只是手機外型加打電話的功能
外表這東西 遲早因為時間長短而感到麻痺
像2年前買的v3, 想當初拿在手上也是心喜若狂
但過沒多久 也漸漸地感到了無新意

這是支令人愛不釋手的手機

iphone 自製鈴聲

一開始沒辦法自製鈴聲 想想也算了
不過可以擁有自製鈴聲 倒也是件滿爽的一件事

首先試過iToner, 嗯, 在我的1.1.3下是可以正常運作的
先將mp3轉成m4a, 更改名為m4r, 再丟到iToner上, 按sync, 鈴聲就出現了
不過這時候iTunes看不到iToner傳上來的鈴聲
也就是鈴聲完全由iToner管理
之所以不喜歡用這個軟體的原因
1.我不知道鈴聲放到哪裡去了
2.這個軟體需要付費, 現在只能玩trial version

最後在 http://iphone4.tw/forums/viewtopic.php?t=45 發現一個更簡單的方法
也就是直接透過sftp丟m4r的鈴聲到/private/var/Ringtones/下
這樣子在1.1.3下就可以看到鈴聲, 也可以設定, 以及正常運作

update,
最後發現還是會有問題, 我的狀況是"有時候"傳上去的鈴聲不會叫
前面3首還是會叫, 第4首就不會叫, 複製前面3首其中一首, 又好像會叫
真是怪, 不過後來也沒繼續追下去
因為我發現另一個更棒的做法, 不過鈴聲似乎不能超過40秒
0) itunes v7.6.x
1) 選擇沒超過40秒的鈴聲
2) 用itunes, 轉成AAC格式, 會產生m4a檔
3) 再把m4a, 改成m4r
4) 在itunes, 選擇剛才轉出來的鈴聲, 刪除 <- 最重要的步驟
5) 再重新播放剛才轉出來的m4r檔
6) 這時候, itunes應該就會將m4r放在itunes鈴聲的目錄下
7) 開始同步, 記得勾選同步鈴聲

Tiger, 香草輸入法, 無蝦米

之前我的小白是跑10.3.9, 一直沒有打算想要升級成10.4
不過自從買了iphone之後, 似乎只能在Tiger上跑同步
所以就毅然決然的 升級到 Tiger

一開始為了要重新安裝或是用升級的方式 苦惱了一天
最後還是想要碰碰運氣 所以就大膽的從panther用升級的方法灌Tiger
大約花了1個小時的時間 就升級好了
之後 再更新到10.4.11
一切運作都還好 沒發現什麼大問題
比如 spotlight會先建立index 耗了滿多資源
Xcode 2.0 也得額外再安裝

再來 比較大的問題就是無蝦米輸入法不見了
最後找到香草輸入法+liu5.cin
(安裝完香草輸入法後, 將liu5.cin拷到/Library/OpenVanilla/0.8/Modules/OVMGeneric下)
所以現在也還滿順手

update for 10.5/10.6/10.7

0) Download OpenVanilla-OSX-Leopard-0.9.1.zip — OpenVanilla 0.9.1 for Mac OS X Leopard/Snow Leopard
1) copy OpenVanilla.app to ~/Library/Input Methods
2) logout
3) enable OpenVanilla in System Preferences > Language & Text > Input sources
4) logout
5) copy liu5.cin to ~/Library/Application Support/OpenVanilla/UserData/OVIMGeneric

iphone歷險記

iphone的疑難雜症

我的1.1.3只要連上無線網路之後, 就可以ssh連進去
這一點還滿擔憂的 (要不然就是得把wifi關掉)

所以希望可以改掉root預設的密碼alpine
改完之後 可怕的惡夢就此開始
不到5分鐘 我的SpringBoard開始不斷的重開
而且連不上itunes

搞了快2個小時 還是沒有辦法
最後 拷同事的/etc/password, /etc/master.passwod蓋掉我1.1.3的檔案
才中止重開的惡夢

其中這時候我才知道重刷是指
接上傳輸線, itunes打開,
再來 iphone的power/wake button, 與home button一齊按
直到白蘋果出現後, 只放開power/wak button
過一陣子 itunes就會出現類似重新回復的訊息出來


update,
iphone開wifi, 會不會有被入侵/駭的危險呢?
我想應該是會的,
所以我的解決方案是關閉ssh, 等有需要時, 才打開
1.1.3 透過 BossPrefs, 就可以關掉ssh了(在1.1.3下, netservice似乎有問題)

Tuesday, March 11, 2008

新iphone入手

2008/03/07拿到貨

-8G
-2M Camera
-lots of excellent softwares
-beautiful ID design

fully overwrite my view of mobile phones.

DSC04953

DSC04955

DSC04956

Saturday, February 02, 2008

BUGS

曾經解過的bugs
==============
做東西 最好有理論背景在背後支持
不要想要嘗試碰運氣 運氣好糊理糊塗就做出來, 做不出來的時候, 加班加到天亮也不會做出來的
運氣在做計畫的時候, 是用不到的
做計畫或是解bug, 需要的是背後的理論支持
=======================================

freopen的陷井
fp=fopen(filename0, mode)
fp=freopen(filename, mode, fp)
通常freopen使用時機, 通常是fopen之後
但如果fopen失敗回傳NULL的話
丟到freopen, 就會出現 segmentation fault

Linux Message Queue problem
最近想要嘗試在板子上實現Message Queue, 想當然爾, 先在x86的PC上實現看看, 經過一天的coding跟testing後, 覺得一切都沒問題了, 再port到板子上
不過問題就在板子上發生了, Message可以送出來(ipcs可以看到有一筆message存在), 不過另外一端卻只能收一次, 之後的message就收不下來了
經過大約一個星期的明察暗訪, 終於在msgrcv的man找到解答, 原來我的參數下錯了, 導致第1次呼叫msgrcv之後, 蓋到之後的local variables
重點是, 為什麼在PC端, 可以work的這麼順?

mktime() problem
有個功能是要找出某個月份的帳號, solution就是利用struct tm, 找到該月份第0天, 及下個月份的第0天, 再透過mktime(struct tm *), 得到以秒為單位的時間
問題就在經過mktime之後, input會被修改, 以這個例子而言, 因為不會有某月0號, 所以mktime會自動詮譯為上個月最後一號, 例如6月0號, 會變成5月31號, 最後6/0~7/0, 會變成5/31到6/30

-bootloader for AG300E -> unresolved

ag300e加大buffer後, webui會進不去
Symptom,
printer的buffer加大之後, webui會找不到網頁, 用ice去看, 發現webd的資料結構蓋到, 一整個無言, 想不到這麼簡單的東西, 還會有蓋code的情形發生, 幾度以為是keilc在亂搞
Solution,
最後發現是定義buffer大小的宣告問題, 有其他變數參考這個設定, 初始化另外一塊buffer, 結果兩邊不一樣大, 造成清掉之後的記憶體內容.

ag300e monthly account會印不完
symptom,
connection的window size愈來愈小, 最後會有大的packet(1400 bytes)產生, 之後printer會一直印這大的packet, 整個系統就卡在printing, 最後造成tcp connection沒有維護, 而被dut強制斷線。
solution,
基本上, 有2個重點, network flow control, 與printing時, 也要能有空維護network connection. 第1個, network的速度很快, 遠快過printer的列印速度, 所以必須有機制叫對方慢點再送, 第2個, 之前列印時, 收到packet之後, 就一直印到完, 現在採用印一行就出來, serve其他task, 如webd或ag connection等。
綜合這2點, 所以有一個queue, 介於network connection與printing之間, 當有packet進來,會丟到這個queue, 之後知會printing來收, 順便清queue。如果queue滿了, connection hander就會直接回busy給dut, 一直等到queue有空間可以繼續塞packet。

ag300e ps/2 handler有問題
symptom:
1) ps/2 isr收到的內容有問題,似乎有掉bit或byte,造成收到的內容很奇怪
2) 但在cpu timing是150MHz的時候沒有問題, 但改成100MHz後, 會有問題
solution,
最後發現是ps/2 isr的depth buffer只有1個byte,上層ps/2 handler來不及取出內容,原來的內容就被新的bit蓋掉,
比如, ps/2的freq.是10~16KHz/1bit, 也就是一個byte,需要送10個bit,相當於1.0KHz/1byte,換句話說就是送1byte,需要1msec,如果上層 ps/2 handler來不及在1ms取出這個byte, 那就很有可能會被之後的interrupt蓋掉, 造成問題
在linux有2種做法, flip-flop跟circle-buffer
也就是在isr有一個比較大的depth buffer, 存放暫時的資料, 等上層來拿資料, 而這個depth buffer size如何定, 根據上面的解釋, 大致上可以知道要挖多大才足夠。

-ag on linux 在traffic重的時候, 會印不出來, 起初以為是kernel或底層busy導致, 最後發現是加解密的問題 -> resolved

Nucleus AG task enhancement造成資料重覆送的問題
Symptom,

-account 會定期備份, 為了確保資料正確性, 直覺的做法, 每一筆account, 固定時間(比如1min)就寫回flash, 但缺點就是會耗時, 甚至拖慢整個系統效能, 另一種做法, account只會改變狀態時才做備份, 同時為了保持資料正確性(比如時間), 改成備份系統存活時間, 也就是每隔一段時間(比如1min), 把系統存活時間寫回flash, 當下次開機時, 檢查最新一筆系統存活時間