顯示具有 自由撰碼 標籤的文章。 顯示所有文章
顯示具有 自由撰碼 標籤的文章。 顯示所有文章

2010年4月25日 星期日

OSDC.TW 2010 - Day1

今天聽完一整天的 OSDC 下來覺的有收穫的幾個 section,因為領域不同所以興趣不同,沒提到的部份請不要見怪。

1. noSQL Cassandra and HBase
  • 雖然目前不再這個領域工作,但是還是對DB發展感到有趣,看來因為資料量大小的關係,目前SQL為基礎的DB似乎都會有些瓶頸。
  • 下面兩個份參考資料,是從老魚那邊轉過來的,說明了 Cassandra & HBase 目前的效能狀況。很值得參考。
    • http://www.brianfrankcooper.net/pubs/ycsb-v4.pdf
    • http://www.brianfrankcooper.net/pubs/ycsb.pdf
  • 感覺這幾年資料庫進步的好快。

2. Javascript - Douglas Crockford
  • 這部份講者是大頭,聽完的可以感覺到他對IE6的不滿,因為考量到相容問題,所以很多因為IE6所寫得code必須被保留。
  • XSS (Cross Site-Script) 會是一個安全性上很大的問題。
  • HTML5似乎太複雜,所以問題相對會更多?
  • IE6 must DIE! - 大家差點沒有起立鼓掌?哈!
3. Scala - Speaker(古墓)'s blog

  • 很有趣的語言,我認為有趣的部份是,並不是語言的特性讓我很驚豔。當然,它真的很方便。而是可以藉由 Scala source 產出 JAVA class 後,在經由 dalivk DX 去轉換成 dalvik bytecode 的動作。這樣的動作讓我想到 LLVM 的 frontend and backend,以後的語言應該很有機會透過 LLVM compiler framework 去轉換成不同平台的 code。
  • 在會場上,找了相關的文章,似乎 Scala 有機會成為寫 JAVA 的另一種主力語言?只是不知道出來的 byte code 的效能好不好?也許 VM 影響會比較大也不一定。
  • 個人決的 Scala 似乎比 Ruby 更有親和力,是因為我不認識Ruby的關係嗎?因為是慣C?
4. eServ - jserv
  • 提到了三套小型的 Embedded http server
    • Wt
      • Binary size: 22MB
      • Runtime requirement: 40MB+
    • didiWiki
      • wiki+web server = 54KB (Binary size)
      • 很小,但是難抽離。
    • Klone
      • 可以藉由 "<% code %>" 的方式插入 code,容易整合。
  • 讓我想起以前在做 Embedded http server 的過程,一整個很有趣啊!不過加上了jQuery更可以讓寫 server 的部份更輕鬆產生想要的頁面。
  • 整場議程真的是笑聲不斷,尤其是 "易射夫" 那段,搞笑功力一流!
  • eServ 的 source code 可以透過下面的 url 去 checkout
svn checkout http://eserv.googlecode.com/svn/trunk/ eserv-read-only
  • 另外有興趣的朋友,請努力回饋 eServ code 給 jserv,或者有大學生專題想做這個東西也可以找 jserv。
短暫的節錄,有錯誤歡迎批評指教。

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實現與應用 提到
但Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池.CPU将运算后的结果放到这个水池,水池再将结果流到显示器. 中间不会对数据做处理. 应用程序也可以直接读写这个水池的内容.在这种机制下,尽管Framebuffer需要真正的显卡驱动的支持,但所有显示任务都有CPU完成,因此CPU 负担很重.
framebuffer的设备文件一般是 /dev/fb0、/dev/fb1 等等

參考文件

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
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. 請用力使用。謝謝!