2010年7月1日 星期四

colordiff



diff 使用很方便, 但是就是要花點眼睛去看差別.
ColorDiff 是隻 perl 的 script, 主要是把差異分不同顏色標示出來, 雖然只是加個顏色, 但是感覺起來還是好看多

http://colordiff.sourceforge.net/

2010年6月30日 星期三

ssh keygen 免輸入密碼

懶得打密碼, 以 key 做認證登錄.
步驟如下:
  • ssh-keygen -t rsa 或 ssh-keygen -d (dsa) => 產生出 id_rsa, id_rsa.pub
  • scp id_rsa.pub server_hostname:~/.ssh/
  • ssh server_hostname
  • cat .ssh/id_rsa.pub >> .ssh/authorized_keys 即可
  • 這樣子就可以 key 認證登入, 不需輸入密碼.
注意: gen 時會問 Enter passphrase (empty for no passphrase): # 此處直接 enter 跳過,下次才不會詢問password
簡單解說一下:
  • id_rsa: private key
  • id_rsa.pub: public key
將 public key(id_rsa.pub) 拷貝到遠端的電腦後, 加到那 user 的 .ssh/authorized_keys 中.
之後連線時, 就會用本機的 private key(id_rsa) 與遠端電腦的 public key(authorized_keys) 做認證, 確認完成就可以直接登入, 不需輸入帳號密碼, 而且也比較安全.

如果你想要瞭解密碼免登入的原理的話,請參考徹底瞭解 SSH 的免密碼登入

http://plog.longwin.com.tw/post/1/293

巧妙移除PDF文件的浮水印

PDF電子文件為了標示文章的來源出處,有時候會在頁面加入浮水印,但是浮水印若是插在文中很容易造成閱讀上的不便,你可以利用Adobe Acrobat 6的「TouchUp」文字工具,來移除PDF上文字的浮水印。

STEP:
1.在Adobe Acrobat中開啟要移除浮水印的PDF檔,然後在功能表按下【工具】→【進階編輯工具】→【TouchUp文字工具】。

2.接著在浮水印文字上按住滑鼠左鍵拖曳選取,然後按一下滑鼠右鍵,在快速選單選擇【內容】。

3.開啟「TouchUp內容」對話盒後,按下「填充」色塊,然後在色盤上選擇「無色彩」,再按下〔關閉〕按鈕。

4.回到Acrobat視窗後,可以看到每個頁面中的浮水印全部都消失了哦,這時候就可以將它另存新檔囉!

http://blog.xuite.net/wcwu1/vicky/9523182

2010年6月21日 星期一

AutoComplPop for vim plugin




    AutoComplPop Plugin 為一可自動偵測目前程式碼的語境,自動呼叫相關對應的補齊函式 (Completion Function)
    而省去手動觸發補齊功能的 Plugin。
    安裝之後,AutoComplPop 就會自動啟用,輸入片段程式碼即可見效。
    需要注意的是,Vim 的版本需要在 7.2 才有支援。

    安裝方式與其他Plugin相同,將檔案放在 ~/.vim/plugin/ 裡頭。

ref:http://www.openfoundry.org/index.php?option=com_content&task=view&id=2244&Itemid=334

The NERD Tree for vim plugin



操作 Vim 時,通常都在 Terminal 底下作用,無法像一般的 GUI
    應用程式可以以樹狀目錄來瀏覽檔案。 The NERD Tree
    是一將檔案目錄以文字模式方式繪製出來的 Plugin。讓使用者可以不必跳出 Vim
    編輯器 而可進行檔案目錄的瀏覽、開啟等動作。新版的 NERD Tree
    還另外支援了書籤 (Bookmark) 功能,使用者可將路徑節點存成書籤,以便下次載入時
    直接回到該路徑上。
※ 安裝
    將下載回來的 zip 檔解壓縮之後,使用 rsync 將目錄同步複製到 ~/.vim 底下。
    複製完,NERD_tree.vim 檔案應該要在 ~/.vim/plugin/ 裡頭。
※ 使用
    :NERDTree [path|bookmark]
        可直接以 NERD Tree 開啟一路徑,或一書籤。
    :NERDTreeToggle [path|bookmark]
       
        同上,但若 NERD Tree 已經被開啟,則會自動關閉開 NERDTree 。
        通常可自己在 .vimrc 內 map 到 e 的快捷鍵:
            nmap e  :NERDTreeToggle
        如此,按下 \e 即可將 NERD Tree 開啟或關閉。
    :NERDTreeMirror
        此指令用於分享一個已經存在的 NERD Tree Buffer,
        假設於一分頁中已經開啟了 NERD Tree ,那麼可在另外一個分頁中
        將前一分頁的 NERD Tree Buffer 同步開啟於目前分頁。
    :NERDTreeFind
       
        開啟 NERD Tree 並且找尋目前編輯的檔案。
        若找到目前檔案則會自動將游標位置放至於該檔案節點上。

ref:http://www.openfoundry.org/index.php?option=com_content&task=view&id=2244&Itemid=334

Taglist for vim plugin

plugin –taglist.vim



安裝方法很簡單,把下載的plugin放進「~/.vim/plugin/」。想要打開旁邊的小視窗,只要下「:TlistToggle」就行了。
或著你可以把下面兩行放進 「~/.vimrc
    nnoremap < silent> < f12> :TlistToggle< cr> 
    nnoremap < silent> < f9> :wincmd p< cr>
vim在開檔的時候就會自動載入兩者,只要按F12就可以打開/關閉 taglist,按下F9就可以在兩個視窗之間跳動。

C語言中資料結構(struct)的大小 - __attribute__((packed))

通常在PC上寫程式時,很少會去管struct會佔掉多少記憶體。

當要使用到時,也不會想去用手算到底佔掉多少,大多是直接使用sizeof來做計算。

然而sizeof計算出來的值往往不會如我們想的一樣。因為compiler為了效能考量,會自動地為我們

做最佳化,也就是資料對齊。為了這個目的,compiler會為struct多準備一些記憶體。

我們可以看以下的code:

struct ABC {

int index;

char name[6];

int score;

};



struct DEF{

int att;

char name[3];

};



int main(void)

{

printf("sizeof(ABC) = %d\n", sizeof(struct ABC));

printf("sizeof(DEF) = %d\n", sizeof(struct DEF));

return 0;



}

說明:

1. 若我們直接去計算struct ABC和strcut DEF時,

struct ABC = 4 + 6 + 4 = 14 (struct ABC用掉14個byte)

strcut DEF = 4 + 3 = 7 (struct DEF用掉7個byte)

2. 但真的是這樣嗎?程式執行出來的結果卻是,

sizeof(ABC) = 16

sizeof(DEF) = 8

3. 這就是compiler為我們做了對齊的最佳化,將這二個的struct都調整成2的次方。

這樣有利於運算。



這樣的做法在PC上通常沒有問題,但若是在嵌入式系統上,記憶體必需要錙珠必較時

,我們就必須要考量到使用struct所佔掉的記憶體空間,可以使用__attribute__((packed));這個關鍵字,

它的作用在於叫compiler不要為我們做對齊的最佳化,因此,計算的結果就會如同我們所想的一樣了。

struct ABC {

int index;

char name[6];

int score;

} __attribute__((packed));;



struct DEF{

int att;

char name[3];

} __attribute__((packed));;



int main(void)

{

printf("sizeof(ABC) = %d\n", sizeof(struct ABC));

printf("sizeof(DEF) = %d\n", sizeof(struct DEF));

return 0;



}

這樣就會得到以下的結果了。

sizeof(ABC) = 14

sizeof(DEF) = 7



這裡沒有哪一種用法比較好的問題,端看在使用上的需求,

要運算速度快,就需要資料對齊。要節省記憶體的使用,就取消對齊。
 
 
ref:http://zylix666.blogspot.com/2007/10/cstruct.html

How to repair and clone disk with ddrescue

  ddrescue  is a tool that can be used to repair and clone disks on a  Linux system . This includes hard drives, partitions, DVD discs, flas...