Home Contact Sitemap

Team Programming Dragon.編程龍

Programming Art、C++、Python、Django、LinuxDev、HCI、Graphics、Web2.0。讓我們成為編程界的朝田龍太郎吧。

Beauty is Our Business

A Birthday Salute to Computer Scientist Edsger W. Dijkstra.

Conditional Break in GDB

在 gdb 之中,要作 conditional break,首先,我們可能會先查一下現在有哪幾個 breakpoint 在作用中:

$ info br

假設我們要設的是第二個 break point,在某變數 x 大於 3 時停下,就這樣下指令:

$ cond 2 x > 3

如果要改設別的 condition,可以這樣下取消

$ cond 2

或者直接改設別的條件也可以

$ cond 2 y == 77

附帶一提,continue (cont) 也滿好用的。在 for-loop 之中常常會想要一次跳個 100, 1000 個 iteration 之類的。那可以這樣下:

cont 1000

下次再按 enter 會重複上一個指令,於是就會以 1000 個 iteration 為單位作 break。

我很久沒用 VC,不過可以想見這在 VC 之中應該是選單拉來拉去才能完成。gdb 的學習曲線較陡一些,但上手之後會不少人都會喜歡上這簡潔明快的節奏感。其實 gvim 啦、gcc 等等也是如此,算是 opensource 工具很常見的一個共通點。

Tags: ,

. 30 Nov 08 | C++, Linux | Comments (0)

Linux Find

  1. recursively 殺掉同樣副檔名的檔案(以 jpg 為例)
    find -name “*.jpg” -exec rm {} \;


    -exec
    找到以後對這些檔案執行的指令
    {}
    會被代換作檔名
    \;
    表 -exec 指令結束,為特殊字元,故需 back slash

  2. recursively 殺掉除某副檔名以外的檔案(以 c, cpp, h 為例)
    find ! -regex ‘.*\.\(c\|h\|cpp\) -exec rm {} \;


    !
    表反向選擇

有點小複雜但是相當強大。身為一位巫師應該經常將自動化放在心裡。而這點正是 Linux 優越的地方。附上連結一枚:
Using the find command

Tags: ,

. 21 Sep 08 | Linux | Comments (2)

Ubuntu 無線網路設定

把 Ubuntu 灌好,正常來講網卡都可以抓得到,訊號應該也沒問題。只要在 ESSID 的部分指定好你要的 AP 就可以。

若不經 WEP 加密的 AP 可以說是灌好馬上就可以用;經過加密的卻稍微麻煩一點,之前用內建套件輸入 encrypted key 不知為何並不能使用,應該是隻 bug。經過爬文之後大約歸納出三個 solution:

  1. sudo gvim /etc/network/interfaces

    編輯形如下式:

    iface eth1 inet dhcp
    wireless-essid tokyomod
    wireless-key s:meoap# 加 "s:" 表 ASCII,不加則為 HEX
     

    經過測試,此法可以使用,不過要 reboot 或 hibernate 重開

  2. $iwconfig ath0 key XXXXX

    尚未測試。

  3. sudo gvim /etc/pcmcia/wireless.opt

    大致上同 1,不過還沒測過。

Tags: , ,

. 21 Sep 08 | Linux, Ubuntu | Comments (0)

Images to Video

之前有寫過把影片拆成一串 image 的方法,這邊則是反過來,把一串 image 兜成一段影片。

一樣是用 mplayer 系列,以下例子是把目前資料夾中的所有 jpg 都壓起來:

mencoder mf://*.jpg -mf type=jpeg -ovc lavc -oac lavc -o output.avi

注意的是可以用方便不已的 regular expression,所以假設要合第 200 ~ 299 個 frame 可以這樣下指令(假設資料夾下圖檔名如 mplayer 之拆解所預設補至八位數字如 00000001.jpg):

mencoder mf://000002*.jpg -mf type=jpeg -ovc lavc -oac lavc -o output.avi

如果檔名長得比較麻煩,也可以先用 shell script 或 scripting language 自動的寫出一個檔案 list.txt,每行指定一個檔案,然後下:

mencoder mf://@list.txt -mf type=jpeg -ovc lavc -oac lavc -o output.avi

參考連結:
Encoding from multiple input image files

Tags: , , ,

. 28 Aug 08 | Linux | Comments (0)

半瓶醋的 C++ 教學(第四章):編程環境的選擇

之前在第三章曾經提到,越接近數學的內力不容易隨時間而改變,但作為外功的程式或系統工具則會,那麼,我們該如何儘量讓自己的外功能夠歷久恒新呢?

很直覺的,當然就是選用較不會過時的工具。而工具要能夠在變化萬千的編程界中不被時間所淘汰,固然本身素質要好,另外,我認為最重要的其中一個環節就是,開放。雖然這應該很直覺,不過還是稍加解釋一下好了…

如果今天某工具某 framework 是知名大廠所提倡的,或許在這大廠能夠予以支援的狀況下是還滿不錯用的,但是天有不測風雲啊,再怎麼大的公司總也有收攤的一天…就算沒有收攤好了,也許是公司的政策改變了,要改推另一個工具,那麼這時候無論是開發者的使用順手度,還是市場的接受度(你知道,麻瓜常常都是看哪個廣告多就用哪個,但我們巫師要有巫師的衿持),都難免急轉直下。因為他不開放,沒人搞得懂裡面在幹嘛,所以不會有社群的力量,同理,你也搞不懂,就算你再強想自己硬幹也沒辦法,除非重新寫一個。

甚至不要說收攤或是什麼行銷政策了,光講某M社的 IDE,常常出一個新的版本舊的版本的 code 就不能用了,這種愚蠢的事情我真想不透為什麼有人能夠接受…

Tags: , , , , ,

. 27 Aug 08 | C++, Linux | Comments (2)

MPlayer 下使用字幕

用 mplayer 使用中文字幕似乎不是一件太簡便的事情。參考了 Free BSD Chinese HOWTO,但在我的 Ubuntu 7.04 上似乎不 work。
以下指令均不能使用(假設字型放在該路徑、字幕編碼為 utf8):

mplayer -font /font/big5-kai/bkai00mp16/font.desc -sub 1.srt -utf8 1.mkv
mplayer -font /font/big5-kai/bkai00mp16/font.desc -sub 1.srt -unicode 1.mkv

所以只好去抓英文字幕來用…

mplayer 1.mkv -sub 1.eng.srt

很簡單就可以使用

加 subfont 之類的參數可以改動字型大小等等

mplayer 1.mkv -sub 1.eng.srt -subfont-text-scale 3

或是寫在 ~/.mplayer/config 之中也可以

Tags: , , ,

. 11 Aug 08 | Linux | Comments (0)

rsync 用於遠端上傳與備份

雖然應該不少人知道,rsync 可以用在遠端工作站等等之上(那個 r 本來就是 remote 的意思),不過還是要推廣一下,不管跟 crontab 搭配作備份,或是拿來上傳下載東西都滿好用的。若要用於遠端站台,指令形如下式:

rsync -av –delete -e ssh Test/rsync/ a_user@a_workstation.csie.ntu.edu.tw:~/Test/rsync

站台後接冒號,與 scp 等相同,但與 svn 不同,我自己有時候會不小心忘掉。比較一下,svn 的 remote version 長這樣:

svn co svn+ssh://a_user@a_workstation.csie.ntu.edu.tw/svn/libmatting

-a 這參數似乎是個定番,查 man 查不出個所以然,寫得有些籠統…–delete 的意思是說如果有什麼檔案在 target 有卻沒出現在 source 中的就殺掉,如此可以作到呆呆拖拉法所作不到的真正的完全同步。算是 command line 環境優雅又強大的一個實例。

Tags: , , ,

. 19 Jun 08 | Linux | Comments (0)

Video to Images

因為研究上的需要,所以想要把影片的各個 frame 拆解為 image。

在 Linux 上這項工作意外的簡單,不需要額外安裝些什麼,MPlayer 本身就可以作這件事了,指令形如下式:

mplayer -vo jpeg -nosound Andreas.avi

Tags: , ,

. 09 Jun 08 | Linux | Comment (1)

Video Format Converting

以轉成 xvid 為例,以下指令可將 nike.mpeg 轉成 nike.avi:

mencoder nike.mpeg -ovc xvid -nosound -xvidencopts pass=2:bitrate=-700000 -o nike.avi

以下指令可查有啥 video encoding 可選。不過 xvid 要注意的是如果不給 option 的值似乎不給跑。

mencoder -ovc help

同理以下指令可查有啥 audio encoding 可選,也可用 -nosound 選擇不加入任何聲音。

mencoder -oac help

Tags: , ,

. 08 Jun 08 | Linux | Comments (0)