2010-01-07 聚會手記
前情提要
這一頁會固定於前一天週三中午附加在聚會通告的 Email 裡
若你也有想要分享的內容,也隨時歡迎你自助編輯加上你想分享的消息嘍 :-)
Mat
我上^n週提到的 inkboard 現在有 jaunty 跟 karmic 的版本嘍。
https://launchpad.net/~matlinuxer2/+archive/inkboard/+packages
C 語言的 volatile 的特性,這個通常在最佳化編譯時,比較有碰到。
如:
test.c:
int c;
void xxx(void){
c=1;
while ( c!= 0 );
}
void intq(void){
c = 0;
}
test2.c:
volatile int c;
void xxx(void){
c=1;
while ( c!= 0 );
}
void intq(void){
c = 0;
}
然後用 gcc 來最佳化編譯:
gcc -O1 -S test.c
gcc -O1 -S test2.c
主要的差別是在最佳化的編譯,編譯器會認為 c!=0 恆真,而把他跳過。
c=1;
while ( c!= 0 );
而 volatile 的關鍵字可以提醒編譯器不要忽略。因為有時候變數會因為中斷而產生變化。
這個通常在最佳化時才會遇到…
可以得到 test.s test2.s 的差別:
--- test.s 2010-01-07 19:56:08.000000000 +0800
+++ test2.s 2010-01-07 19:56:07.000000000 +0800
@@ -1,4 +1,4 @@
- .file "test.c"
+ .file "test2.c"
.text
.globl xxx
.type xxx, @function
@@ -7,7 +7,11 @@
movl %esp, %ebp
movl $1, c
.L2:
- jmp .L2
+ movl c, %eax
+ testl %eax, %eax
+ jne .L2
+ popl %ebp
+ ret
.size xxx, .-xxx
.globl intq
.type intq, @function
這裡可以看到有加上 volatile 的對照組,不會忽略判斷式。
jserv
eserv (最近將在 OSDC.tw 2010 發表的作品)
- 前因:規劃 C 語言程式設計的課程,強調 John Dewey 博士注重「做中學」的教育方法,教育才要注重實際經驗,要從做中學習,給定一個具體而微的 Embedded AJAX 系統作出發,透過 gdb 去追蹤分析,進而作擴充,預期將掌握 UNIX 系統與 C 語言程式開發的技巧。具體來說,就是從簡單的 web server + CGI (純 C 語言 + POSIX 系統呼叫實做),以 AJAX 作為立即資料的呈現
- 相關課程簡報:以 GDB 重新學習 C 語言程式設計
- multi-thread, POSIX compatible
- web server + cgi engine 合體, 只是不同 thread
- 重寫系統到 27 KB 的 footprint。連背景圖都比程式大
- CGI 的 callback function,用 C 程式來傳回 AJAX response,透過 jQuery,可以僅傳回所需資料字串即可,不用考慮複雜的 HTML
- 可以用 GDB 作動態的偵錯,watch handle pointer, 可以看 CGI handler 什麼時候被設定或是修改
didiwiki: http://zh.wikipedia.org/zh-tw/DidiWiki
fourdollars
http://fd.idv.tw/radio/player.html
跨平台的 hichannel.
用 jqeury 直接塞 <object/>
想作成 firefox 的外掛,或是 gooogle chrome 的 extension.
console 版的也寫了
chrome 的元件:
在目錄下放 manifest.json
封裝 google chrome 外掛 .crx .pem
http://fd.idv.tw/radio/hichannel.crx