2009年10月25日 星期日
SimpleSDK and Xcode
這是一位12歲大的小男生,在 youtube 上的 Xcode 教學,教你如何使用 Xcode 寫你的 iPhone App,不但口齒清晰,整個流程都很流暢,整體看起來很棒。
從影片中,約略可以知道 SimpleSDK 對 php 及網頁相關的技術似乎還有一點了解。剛開始的時候有些不敢相信,一直覺得這是位女生,仔細端倪後才發現是個非常專業的小朋友。也許是因為 Xcode 的設計還不錯,讓買 Mac 的使用者都可以很方便的加入寫程式的行列,並 publish program。
看到這影片真的是讓我大開眼界,那種震撼的感覺一直到現在都還在。
只能說,自己要努力啊~
參考:
http://blog.simplesdk.com/
http://www.youtube.com/user/SimpleSDK
2009年9月17日 星期四
週年紀錄
工作滿一週年,留個紀念。
雖然工作上所發展東西,並沒有如自己所預期的順利。但也算差強人意,不知是自己能力不足,還是其他的關係。也許作 project 與買股票一樣,不能放太多主觀的熱情,才不會有太多失望。不過我並不喜歡這樣,因為喜歡才有熱情,才會有出乎意料的成果,如果只是做完該做的事情,這樣是不會傑出的,產品也只會普普。
瞭解自己是個龜毛中人,有時候某些地方不對,打死就是不願意這樣做下去。最近接觸比較多真正在寫 code 寫歷史的人,有種好嚮往的感覺,也許不知不覺自己就會往這樣的方向去發展。畢竟熱情才是最重要的一件事情。沒有熱情,有在厲害的技術,也只是浪費,因為往往不知道該如何利用才會發會最大價值。
期待下個年度,可以達到自己給的目標,不只在公司專案上有成長,自己有興趣的回家作業也可以有漂亮的成果。加油~
雖然工作上所發展東西,並沒有如自己所預期的順利。但也算差強人意,不知是自己能力不足,還是其他的關係。也許作 project 與買股票一樣,不能放太多主觀的熱情,才不會有太多失望。不過我並不喜歡這樣,因為喜歡才有熱情,才會有出乎意料的成果,如果只是做完該做的事情,這樣是不會傑出的,產品也只會普普。
瞭解自己是個龜毛中人,有時候某些地方不對,打死就是不願意這樣做下去。最近接觸比較多真正在寫 code 寫歷史的人,有種好嚮往的感覺,也許不知不覺自己就會往這樣的方向去發展。畢竟熱情才是最重要的一件事情。沒有熱情,有在厲害的技術,也只是浪費,因為往往不知道該如何利用才會發會最大價值。
期待下個年度,可以達到自己給的目標,不只在公司專案上有成長,自己有興趣的回家作業也可以有漂亮的成果。加油~
2009年9月11日 星期五
Graphic and Reality World
最近一頭腦的栽入了 Linux Graphic and OpenGL/ES 的世界,不過也是因為工作上的需要,才會有機會這樣去實際瞭解 Graphic 的發展現況。
在 Linux 上的 Graphic 其實頗有趣,尤其是看到 OpenGL Demo Program 執行後的效果,更讓人覺得興奮(是我太久沒打 Game 的關係嗎?),雖然只是簡單的機器人或是茶壺的旋轉,但是仔細看程式後,發現這都是一行一行的程式碼,除非需要貼圖的動作,才會有額外的圖片,所有的動作都是以程式的方式動態繪出。
目前需要瞭解的方向可以分為:
另外可能是生性孤僻,比較不知道應該如何跟 community 透過 mailing list 溝通,所以想對特定的 project 作貢獻的機會也就比較少。
看到 0xlab 在 Android 上面的貢獻,發展了很多的東西,而且品質很不錯。改寫的速度之快,讓小弟很慚愧,期望哪天我也能進步到這樣的程度。
雖然有時工作上得想法並不會得到認同,但是還是希望能作些有用的東西,且是自己會期待事情,也許對自己不會有太多益處,但那樣沈浸思考與挑戰的過程,是工程師在暴風下的避難所。回歸原點,找到自己的熱情,以自己的方式出發,並為自己的決定負責,會是很有趣的人生。
在 Linux 上的 Graphic 其實頗有趣,尤其是看到 OpenGL Demo Program 執行後的效果,更讓人覺得興奮(是我太久沒打 Game 的關係嗎?),雖然只是簡單的機器人或是茶壺的旋轉,但是仔細看程式後,發現這都是一行一行的程式碼,除非需要貼圖的動作,才會有額外的圖片,所有的動作都是以程式的方式動態繪出。
目前需要瞭解的方向可以分為:
- MESA 3D Library
- Gallium3d Driver Architecture
- DRM and DRI
- OpenGL/ES and EGL
另外可能是生性孤僻,比較不知道應該如何跟 community 透過 mailing list 溝通,所以想對特定的 project 作貢獻的機會也就比較少。
看到 0xlab 在 Android 上面的貢獻,發展了很多的東西,而且品質很不錯。改寫的速度之快,讓小弟很慚愧,期望哪天我也能進步到這樣的程度。
雖然有時工作上得想法並不會得到認同,但是還是希望能作些有用的東西,且是自己會期待事情,也許對自己不會有太多益處,但那樣沈浸思考與挑戰的過程,是工程師在暴風下的避難所。回歸原點,找到自己的熱情,以自己的方式出發,並為自己的決定負責,會是很有趣的人生。
2009年4月26日 星期日
[Study] Linux Graphic
安裝 ubuntu 9.04 後,發現畫面顯示的部份比原本預期的好很多,而在 xp 上並沒有這樣的表現,而且記憶體的使用上也更精簡,開完機記憶的使用約 256MB (原本打算多弄點 ram 來使用,看來可以省下一筆費用)。所以開始對畫面的顯示有點好奇,也想深入了結一下。所以開始我的 Graphic 學習之旅。
觀念文章,下面這些文章都是在 Debian Taiwan irc conference 的資料,主講人為 jserv,很精彩,對 Linux X11, OpenGL, 等有關 Graphic 的議題,有很深入的討論。建議花時間閱讀。
FreeDesktop.org 與 X.org 嶄新發展概況
FreeDesktop.org 與 X.org 嶄新發展概況(續集)
Xorg 嶄新的硬體加速與效能提昇機制
Xorg 嶄新的硬體加速與效能提昇機制 (續集)
The State of Linux Graphics
在 Framebuffer實現與應用 提到
參考文件
觀念文章,下面這些文章都是在 Debian Taiwan irc conference 的資料,主講人為 jserv,很精彩,對 Linux X11, OpenGL, 等有關 Graphic 的議題,有很深入的討論。建議花時間閱讀。
FreeDesktop.org 與 X.org 嶄新發展概況
FreeDesktop.org 與 X.org 嶄新發展概況(續集)
Xorg 嶄新的硬體加速與效能提昇機制
Xorg 嶄新的硬體加速與效能提昇機制 (續集)
The State of Linux Graphics
在 Framebuffer實現與應用 提到
但Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池.CPU将运算后的结果放到这个水池,水池再将结果流到显示器. 中间不会对数据做处理. 应用程序也可以直接读写这个水池的内容.在这种机制下,尽管Framebuffer需要真正的显卡驱动的支持,但所有显示任务都有CPU完成,因此CPU 负担很重.
framebuffer的设备文件一般是 /dev/fb0、/dev/fb1 等等
參考文件
2009年4月25日 星期六
Ubuntu 9.04 and Grub
最近寫 code 的感覺又會來了,索性在家裝起了ubuntu 9.04-rc1,整體感覺還不錯!
比起以前的 gentoo,FC,似乎親切許多。其實裝 Linux 的原因,只是想寫程式,因為真的太久沒有寫自己好玩的 code,都是被別人叫去玩 code。
加上最近的 Android & iPhone 的 sdk 都陸續的釋出,看起來的成熟度都還不錯,是可以開始寫寫屬於自己的程式了,不然老是在用別人提供的 source code 感覺很沒貢獻度。
因為家中的網路速度過慢,所以每次 apt-get 都很久,看來也要順便更新一下網路。
不過在安裝完後遇到一個小問題,就是 grub 沒辦法開到 xp。花了一點時間思考跟搜尋,知道了問題點。
原本硬碟配置
grub 我安裝在 sdc 的 mbr 上面,然後 BIOS 設定從第三顆硬碟(Linux)開機。開到 grub 後,第三顆硬碟(sdc)變成(hd0),所以第一顆硬碟(sda)變成(hd1),第二顆硬碟(sdb)變成(hd2),如下
進入 grub
但是這時候 bios 的裡面還是:
所以 grub 要去啟動 xp loader(Ntldr) 的時候,Ntldr 就會發現開機碟變成 (hd1) 跟原本 bios 中的設定不同,所以會造成沒辦法載入 XP。要解決這樣的問題,可以用 grub 裡面的 map 指令,將硬碟作虛擬對應。使得loader可以正常載入。
原本的 /boot/grub/menu.lst
這邊就算將 rootnoverify (hd0,0) 改成 rootnoverify (hd1,0)還是沒辦法順利開到 XP。
修改後如下,可正常開啟 XP:
參考資料:
http://www.gnu.org/software/grub/manual/html_node/DOS_002fWindows.html#DOS_002fWindows
比起以前的 gentoo,FC,似乎親切許多。其實裝 Linux 的原因,只是想寫程式,因為真的太久沒有寫自己好玩的 code,都是被別人叫去玩 code。
加上最近的 Android & iPhone 的 sdk 都陸續的釋出,看起來的成熟度都還不錯,是可以開始寫寫屬於自己的程式了,不然老是在用別人提供的 source code 感覺很沒貢獻度。
因為家中的網路速度過慢,所以每次 apt-get 都很久,看來也要順便更新一下網路。
不過在安裝完後遇到一個小問題,就是 grub 沒辦法開到 xp。花了一點時間思考跟搜尋,知道了問題點。
原本硬碟配置
sda(hd0) -> XP (已經安裝很久)
sdb(hd1) -> no OS
sdc(hd2) -> Linux (剛剛安裝完)
grub 我安裝在 sdc 的 mbr 上面,然後 BIOS 設定從第三顆硬碟(Linux)開機。開到 grub 後,第三顆硬碟(sdc)變成(hd0),所以第一顆硬碟(sda)變成(hd1),第二顆硬碟(sdb)變成(hd2),如下
進入 grub
sdc(hd0)
sda(hd1)
sdb(hd2)
但是這時候 bios 的裡面還是:
sda(hd0)
sdb(hd1)
sdc(hd2)
所以 grub 要去啟動 xp loader(Ntldr) 的時候,Ntldr 就會發現開機碟變成 (hd1) 跟原本 bios 中的設定不同,所以會造成沒辦法載入 XP。要解決這樣的問題,可以用 grub 裡面的 map 指令,將硬碟作虛擬對應。使得loader可以正常載入。
原本的 /boot/grub/menu.lst
title Microsoft Windows XP Professional
rootnoverify (hd0,0)
savedefault
chainloader +1
這邊就算將 rootnoverify (hd0,0) 改成 rootnoverify (hd1,0)還是沒辦法順利開到 XP。
修改後如下,可正常開啟 XP:
title Microsoft Windows XP Professional
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
savedefault
chainloader +1
參考資料:
http://www.gnu.org/software/grub/manual/html_node/DOS_002fWindows.html#DOS_002fWindows
2009年3月25日 星期三
multi tabbed ssh client
常用shh or telnet,但是卻不喜歡有多個視窗,覺得很混亂嗎?
可以try下面這個multi-tabbed plug-in for putty。
PuTTY Connection Manager
http://puttycm.free.fr/
PuTTY Connection Manager需要先安裝,然後在指定putty路徑,就可以運作。0.6.0.4822beta 的版本在我的電腦上,並不能正確運作,會出現下面的錯誤訊息
=============================
An unexpected error occured :
Object reference not set to an instance of an object..
Check log for further informations.
(c:\......\puttycm.log)
=============================
改用Alpha version 0.7.0.4780就可以正確運作
參考圖(reference:http://puttycm.free.fr/images/puttycm.JPG)
參考:
http://www.tsmexpert.org/2008/03/tabbed-sshtelnet-client.html
可以try下面這個multi-tabbed plug-in for putty。
PuTTY Connection Manager
http://puttycm.free.fr/
PuTTY Connection Manager需要先安裝,然後在指定putty路徑,就可以運作。0.6.0.4822beta 的版本在我的電腦上,並不能正確運作,會出現下面的錯誤訊息
=============================
An unexpected error occured :
Object reference not set to an instance of an object..
Check log for further informations.
(c:\......\puttycm.log)
=============================
改用Alpha version 0.7.0.4780就可以正確運作
參考圖(reference:http://puttycm.free.fr/images/puttycm.JPG)
參考:
http://www.tsmexpert.org/2008/03/tabbed-sshtelnet-client.html
2009年3月23日 星期一
multi-projects of vim using cscope plugin
我在 Linux 上都是用 vim 在 trace source code,可是以前都是用 grep 的笨方法,並不知道 cscope 這個好東西,他可以直接在 vi 裡面直接連結到 function 的定義或是哪邊的 code 有用到這個 function 。
這像是在 windows 上的 source insight,也許用很多人認為 source insight 非常好用(也許是學習曲線較快),vi 相對來說,就需要花點時間去習慣,不過習慣後,就會討厭在寫 code 的時候要去動到滑鼠。:)
下面的安裝,我做了些改良(cscope_maps.vim),讓 vim 自動尋找正確的 cscope 產生出來的 CSCOPE_DB(通常為 cscope.out ),這邊透過絕對路徑的方式讓 vim 可以在任何子目錄中跳到另外幾個目錄下的某個檔案,原本的機制是不行的。
1. Install cscope and ctags
2. download and modify cscope_maps.vim
這邊預設的目錄深度為 20 層,所以如果你的 source code 的目錄深度大於 20 請自行修正 i 的值
(目錄不存在請自行建立)
4. Create goproj.sh and put it in ~/bin
這是為了方便建立 cscope.out (CSCOPE_DB)而寫的 goproj.sh,內容如下,為了方便起見可放在 ~/bin 下面。
Content of goproj.sh
5. 使用範例,以 kernel source
[ Ctrl + \ + s ] : 搜尋游標上的 function 哪邊參考到
[ Ctrl + \ + c ] : 搜尋游標上的 function 哪邊呼叫到
[ Ctrl + \ + g ] : 搜尋游標上的 function 是在哪邊定義的
[ Ctrl + \ + t ] : 跳回下一個位置
[ Ctrl + \ + o ] : 跳回上一個位置
另外由於 cscope_maps.vim 中有定義 Ctrl + ] 的作用,會取代原本 TAG 裡面的定義,所以如果不喜歡的話可以把 cscope_maps.vim 中的這行 (set cscopetag) 移除 。
6. 請用力使用。謝謝!
這像是在 windows 上的 source insight,也許用很多人認為 source insight 非常好用(也許是學習曲線較快),vi 相對來說,就需要花點時間去習慣,不過習慣後,就會討厭在寫 code 的時候要去動到滑鼠。:)
下面的安裝,我做了些改良(cscope_maps.vim),讓 vim 自動尋找正確的 cscope 產生出來的 CSCOPE_DB(通常為 cscope.out ),這邊透過絕對路徑的方式讓 vim 可以在任何子目錄中跳到另外幾個目錄下的某個檔案,原本的機制是不行的。
1. Install cscope and ctags
sudo apt-get install cscope ctags
2. download and modify cscope_maps.vim
這邊預設的目錄深度為 20 層,所以如果你的 source code 的目錄深度大於 20 請自行修正 i 的值
if has("cscope") ...... " add the database pointed to by environment variable " Search database for each project, you can switch different projects easily, :) let i = 1 while i < 20 if filereadable("cscope.out") let db = getcwd() . "/cscope.out" "echo db let $CSCOPE_DB = db cs add $CSCOPE_DB let i = 20 else cd .. let i += 1 endif endwhile " show msg when any other cscope db added .......3. put cscope_maps.vim into ~/.vim/plugin
(目錄不存在請自行建立)
4. Create goproj.sh and put it in ~/bin
這是為了方便建立 cscope.out (CSCOPE_DB)而寫的 goproj.sh,內容如下,為了方便起見可放在 ~/bin 下面。
Content of goproj.sh
#!/bin/bash CSCOPE_FILE=cscope.out if [ -n "$1" ]; then echo "Source code directory: " $1 echo "Create file map : " $CSCOPE_FILE find $1 -name "*.h" -o -name "*.c" -o -name "*.cpp" > $CSCOPE_FILE cscope -bkq -i $CSCOPE_FILE # cscope -Rbkq ctags -R else echo "Please key-in path of project" fi
5. 使用範例,以 kernel source
# tar zxvf kernel-2.6.29.tar.gz # cd kernel-2.6.29 # goproj.sh `pwd` # vim xxx.c
[ Ctrl + \ + s ] : 搜尋游標上的 function 哪邊參考到
[ Ctrl + \ + c ] : 搜尋游標上的 function 哪邊呼叫到
[ Ctrl + \ + g ] : 搜尋游標上的 function 是在哪邊定義的
[ Ctrl + \ + t ] : 跳回下一個位置
[ Ctrl + \ + o ] : 跳回上一個位置
另外由於 cscope_maps.vim 中有定義 Ctrl + ] 的作用,會取代原本 TAG 裡面的定義,所以如果不喜歡的話可以把 cscope_maps.vim 中的這行 (set cscopetag) 移除 。
6. 請用力使用。謝謝!
訂閱:
文章 (Atom)