發表文章

目前顯示的是 12月, 2010的文章

shell 指令備忘

shell 指令 1. locate      locate tmp | more      尋找檔名有 tmp 的檔案.      如果跑出來一大堆的結果, 那可以使用 more 來將輸出的東西分頁暫停. 2. find      find . -name "*.tmp"      尋找目前目錄及其子目錄, 副檔名為 tmp 的檔案.      find . -name "*.tmp" -exec rm {} \;      同上, 但找到後執行刪除動作.      英文句點代表現行目錄, 當然也可以改成其他的目錄. 3. grep      尋找的是檔案內容是否含有某些字串.      grep Linux *      找目前目錄(不含子目錄)所有含有 Linux 字串的檔案      grep -r Linux *      同上, 但會連子目錄也去找           grep & locate 組合使用           locate tmp | grep Linux 只找含有 Linux 字串的 tmp 檔案.           locate tmp | grep doc 同理, 要找 tmp 的相關說明檔時, 就可以這樣使用.           locate tmp | ...

gettimeofday sample code

#include < sys/time.h > #include < stdio.h > int main() {   struct timeval tv, tv2;   unsigned long long start_utime, end_utime;   gettimeofday(&tv,NULL);   start_utime = tv.tv_sec * 1000000 + tv.tv_usec;     usleep(1000);   gettimeofday(&tv2,NULL);   end_utime = tv2.tv_sec * 1000000 + tv2.tv_usec;     printf(" runtime = %llu\n", end_utime - start_utime ); }

Thumbs.db

圖片
Thumbs.db 是隱藏檔及系統檔屬性的。 Thumbs.db 其實是檔案總管所自動建立的縮圖快取檔案,只要你使用檔案總管的縮圖檢視模式並瀏覽至有多媒體檔案(列如圖像、影片…之類的檔案)存在的資料夾 Windows 便會自行建立該檔,以加速你下次再瀏覽此資料夾時縮圖顯示的速度,而如果你電腦中多媒體檔案不少的話這個 Thumbs.db 檔案佔用的空間相對的也就相當驚人。 要讓 Winodws 別建立 Thumbs.db 最有效的方法就是停止建立縮圖快取,可以透過「 控制台\資料夾選項\檢視 」設定中勾選「 不要快取縮圖 」來讓 Windows 停止建立縮圖快取。 利用 bat 檔,一次刪掉所有的  Thumbs.db,如下 for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do del /s /q /f %%d:\Thumbs.db

Linux 終端機下的彩色顯示: 有那些顏色可以選擇呢?

圖片
#!/bin/bash # 顯示 ANSI 的彩色 # esc="\033[" echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43" echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _" for fore in 30 31 32 33 34 35 36 37; do     line1="$fore "     line2=" "     for back in 40 41 42 43 44 45 46 47; do         line1="${line1}${esc}${back};${fore}m Normal ${esc}0m"         line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m"     done     echo -e "$line1\n$line2" done 前景的顏色號碼是在左邊那一排,背景的則是在上方。 如果你要粗體的字元和高亮度就在參數裏加一個 " 1 " ,所以前景是白色而背景是藍色就成了 "37;44; 1 "。 整個的 ANSI 顏色選擇序列就是 esc[ 3 7 ; 4 4 ; 1 m 註: 背景不可以是高亮度,所以黃色(高亮度的棕色)只能用來作前景。這是硬體上的限制。 顏色代碼: 0 - 黑色 4 - 藍色   3# 是背景顏色 1 - 紅色 5 - 粉紅色 4# 是前景顏色 2 - 綠色 6 - 青色 3 - 黃色 7 - 白色   ;1 是粗體和高亮度

Linux C 函數參考

Linux C 函數參考 http://www.cs.nctu.edu.tw/~yslin/library/linuxc/main.htm

Linux 發佈歷史

圖片

帕金森定律

帕金森定律 。 1958年,英國歷史學家、政治學家西里爾.諾斯古德.帕金森(Cyril Northcote Parkinson),出版了《帕金森定律》(Parkinson's Law)一書。 根據他研究發現, 一個人可以用的時間越多,他做事情的速度會越慢。 一個人同樣做一件事,所用的時間差別很大。 例如每天早上看報紙,可以十分鐘看完,也可以看半天。一個很忙的人二十分鐘內可以寄出一疊明信片,但是一個時間很多的老太婆,他可以花一天才寄出一張明信片:找明信片一個鐘頭,尋眼鏡一個鐘頭,查地址半個鐘頭,寫問候的話一個鐘頭零一刻鐘... 帕金森認為在工作中,工作會自動地膨脹,占滿一個人所有可用的時間,如果時間充裕,他就會放慢工作節奏或是增添其他項目以便用掉所有的時間。 組織內每個人都會覺得自己很忙,忙到做不完。做不完就要再找人做,組織就會膨脹,組織人員不斷膨脹,人員越來越忙,可是組織效率越來越低。 人員能力不好,也會造成組織膨脹。 人員要做一件事,做不好,他有三條路可以選擇: 第一、自己辭職,讓有能力的人來做,不要占著茅坑不拉屎。 第二、找一個能幹的人來協助自己。 第三、找二個比自己差的人來當助手。 一般人會戀棧,不會選第一。也不會選第二,因為他怕有能力者替代他。可是選了第三,一件事本來自己應該要做好,做不好,竟最後是三個人才能做。而平庸的下屬可能又會找更爛的二個助手來做...,以此類推,組織越來越龐大,效率越來越低。 當然,帕金森定律之所以能引起共鳴,就是因為他觀察到組織的通病。要克服這些通病並不容易。我認為, 要從管理者自省開始 。 首先, 管理者要善加利用與規劃自己的時間 。 時間其實是最寶貴資源,每一件事開始做之前就要先想需要多久時間,規畫時間內一定要完成,無論遇到再大的困境也要在時間內完成。不是依自己總時間資源,是依每件事情的計畫時間,要求準時完成。 時間內完成,即使不夠完美,也比雖然完美卻錯失完成時機來的好。更何況,根據帕金森定律,再多的時間也嫌不夠啊,所以,準時的效率比完美的效果重要。 其次, 超越自己能力能做的事,要善加利用比自己強的人來做 。 時代改變,當今領導已經不適合型塑強人來領導,而是組成TEAM,發揮組織綜效戰力。所以領導者不用萬能,當然也不怕執行任務時被有能力的助手幹掉。通常,組織的成敗榮辱都是主管來享受或承擔,因此,...

What is different of __init and __exit?

在寫 Driver 時候,您會發現 static int  __init  XXX_init(void) 跟 static void  __exit  XXX_exit(void),跟平常寫 C 語言宣告函式不一樣吧,這兩個巨集分別有不同意義喔,當然也可以將 __init 跟  __exit  拿掉,這不會影響 Driver 的編譯,但是會影響記憶體的優化,Driver 啟動時會呼叫 XXX_init 函式,如果有加上  __init ,當此 init function 執行完,會將記憶體 Release 給系統,這是針對 built-in 的方式才適用,如果是編譯成模組方式,則不會有此功能,然而  __exit  是 Driver 結束後會呼叫的 function,但是跟 __init 剛好功能相反,在 built-in 的 Kernel 映像檔並不會執行到 __exit,編譯成模組才會有釋放記憶體效果,這兩巨集可以參考  linux/init.h  檔案。

程式碼排版的好工具 ─ Artistic Style

圖片
在 SourceInsight 裡,加入「程式碼自動格式化」。 安裝教學步驟如下: 1. 去SourceForge 下載 Artistic Style     下載網址: http://sourceforge.net/projects/astyle/files/ 2. 將AStyle解壓縮,本例放在根目錄下 (C:\astyle) 3. 開啟SourceInsight,上方選單列選擇"Options-->Custom Commands-->Add",      輸入"Artistic   Style"後按OK 4. Run那列輸入"C:\astyle\bin\AStyle.exe --style=allman %f",Dir列保持空白 (註) 5. 下面將Iconic Window打勾,其餘通通取消打勾 6. 點選右側按鈕"Menu-->(右上方)Menu-->(下拉選)View-->"、     "Menu Contents的第一個Toolbars點一下-->按右側Insert-->按OK" 7. 接下來還可以自訂喜歡的熱鍵,在"Options-->Custom Commands"     點選右側按鈕"Keys-->Assign New Keys",按你喜歡的熱鍵,設"Ctrl+Alt+F" 8. 如此就大功告成了!你可以按"Options-->View"看到剛剛設好的Command和熱鍵! 9. 接下來只要按熱鍵"Ctrl+Alt+F",就會背景呼叫AStyle幫你目前的檔案做自動格式化(排版)啦! 註:"--style=allman %f"其中 --style是排版風格的參數、%f則是檔案路徑 Artistic Style非常彈性,有多種格式化(縮排)的風格可以選擇,詳細文件可以參閱: http://astyle.sourceforge.net/astyle.html 網路推薦參數: 1. astyle -rn --style=...

Linux Kernel時序的機制

寫Driver時,常常遇到需要「等待一段時間」再處理的動作。 這時候,Timer 就是使用的好時機。 add_timer的使用方法 首先你要申請一個timer struct: static struct timer_list timer; 或是用pointer申請 static struct timer_list *timer; 在第一次使用時一定要初始化: init_timer(&timer); 設定要傳的data timer.data = (unsigned long )foo_data; 設定間隔時間 timer.expires = jiffies + DELAY_TIME; 設定timer到時要跑的function timer.function = foo_function; 接著把這個timer加進timer list結構 add_timer(&timer); 時間到了就會去執行程式foo_function, 但是從此timer就停了。必須重新add_timer才會在下一次繼續啟動 在離開時,記得要 deltimer(&timer); int mod_timer(struct timer_list *timer, unsigned long expires); //修改定時器的expire int timer_pending(const struct timer_list * timer); //返回真或假來指示是否定時器已被運行 底下是我用來點亮 LED,然後過一段時間,自己滅掉 LED 的程式例子。 typedef struct blk_led_s {      int cBlinking;      struct timer_list blinkled_timer; }blk_led_t; static blk_led_t gEthLed; static void hdd_led_on(void) {     gEthLed.cBlinking = 1;     gEthLed.blinkled...

Linux Kernel: 簡介HZ, tick and jiffies

Linux 核心幾個重要跟時間有關的名詞或變數,底下將介紹 HZ、tick 與 jiffies。 HZ Linux核心每隔固定週期會發出timer interrupt (IRQ 0),HZ是用來定義每一秒有幾次timer interrupts。舉例來說,HZ為1000,代表每秒有1000次timer interrupts。HZ可在編譯核心時設定,如下所示 (以核心版本2.6.20-15為例): adrian@adrian-desktop:~$ cd /usr/src/linux adrian@adrian-desktop:/usr/src/linux$ make menuconfig Processor type and features ---> Timer frequency (250 HZ) ---> 其中HZ可設定100、250、300或1000。以小弟的核心版本預設值為250。 小實驗 觀察/proc/interrupt的timer中斷次數,並於一秒後再次觀察其值。理論上,兩者應該相差250左右。 adrian@adrian-desktop:~$ cat /proc/interrupts | grep timer && sleep 1 && cat /proc/interrupts | grep timer 0: 9309306 IO-APIC-edge timer 0: 9309562 IO-APIC-edge timer上面四個欄位分別為中斷號碼、CPU中斷次數、PIC與裝置名稱。 問題來了,timer interrupt會做哪些事情? 答案如下所列: 更新時間、日期與系統從開機至目前經過多少時間 。 更新系統資源使用率統計 檢查正在執行的程序是否已經超過其所分配的執行時間額度。如果是的話,則侵佔(preempt)該程序以利執行其它等待執行的程序。 檢查軟體時間器(Software timer,如alarm系統呼叫)跟時間延遲函式(Delay function)的延遲時間是否已經超過。Tick Tick是HZ的倒數,意即timer interrupt每發生一次中斷的時間。如HZ為250時,tick為4毫秒 (millisecond)。 Jiffies ...

Git command list

Git 基本知識 由 project/.git/config 可知: (若有更多, 亦可由此得知) origin(remote) 是 Repository 的版本 master(branch) 是 local 端, 正在修改的版本 平常沒事不要去動到 origin, 如果動到, 可用 git reset --hard 回覆到沒修改的狀態. 我會用的 git command 1. git tag      git tag                                → 列出既有 tag      git tag -l "XX.*"                 → 搜尋XX.*     How to: Delete a remote Git tag         tag named '12345'         git tag -d 12345         git push origin :refs/tags/12345 2. git reset      git reset xxxx --hard         →  強制恢復到某一版本      git reset --soft HEAD^     →  執行 git commit,發現訊息寫錯想要修改,可以使用。                        ...