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

2010年6月20日 星期日

SSHFS

只要兩台主機都有安裝ssh server,便可互相掛載資料夾,指令如下:

$ sshfs user@remote_host_ip:dir local_host_mountpoint 

ref:http://fuse.sourceforge.net/sshfs.html

Linux Kernel Referenced Material


Referenced Material


  • The linux-kernel mailing list FAQ



  • Kernel Rebuild Guide



  • System call optimization with the SYSENTER instruction



  • Per-CPU Variables



  • IA-32 Intel Architecture Software Developer's Manuals.



  • Linux i386 Boot Code HOWTO



  • Understanding The Linux Virtual Memory Manager
  • Linux source code 目錄樹結構


    Linux用來支持各種體系結構的源代碼包含大約4500個C語言程序,存放在270個左右的子目錄下,總共大約包含200萬行代碼,大概佔用58MB磁 盤空間。

    源代碼所有在目錄:/usr/src/linux (大部分linux發行版本中)

    init 內核初始化代碼
    kernel 內核核心部分:進程、定時、程序執行、信號、模塊。 。 。
    mm 內存處理
    arch 平台相關代碼
        i386 IBM的PC體系結構
           kernel 內核核心部分
           mm 內存管理
           math-emu 浮點單元軟件仿真
           lib 硬件相關工具函數
           boot 引導程序
              compressed 壓縮內核處理
              tools 生成壓縮內核映像的程序
        alpha 康柏的Alpha體系結構
        s390 IBM的System/390體系結構
        sparc Sun的SPARC體系結構
       sparc64 Sun的Ultra-SPARC體系結構
        mips SGI的MIPS體系結構
        ppc Motorola-IBM的基於PowerPC的體系結構
        m68k Motorola的基於MC680x0的體系結構
        arm 基於ARM處理器的體系結構
    fs 文件系統
        proc /proc虛擬文件系統
        devpts /dev/pts虛擬文件系統
        ext2 Linux本地的Ext2文件系統
        isofs ISO9660文件系統(CD-ROM)
        nfs 網絡文件系統(NFS)
        nfsd 集成的網絡文件系統服務器
        fat 基於FAT的文件系統的通用代碼
        msdos 微軟的MS-DOS文件系統
        vfat 微軟的Windows文件系統(VFAT)
        nls 本地語言支持
        ntfs 微軟的Windows NT文件系統
        smbfs 微軟的Windows服務器消息塊(SMB)文件系統
        umsdos UMSDOS文件系統
        minix MINIX文件系統
        hpfs IBM的OS/2文件系統
        sysv SystemV、SCO、Xenix、Coherent和Version7文件系統
        ncpfs Novell的Netware核心協議(NCP0
        ufs UnixBSD、SunOs、FreeBSD、NetBSD、OpenBSD和NeXTStep文件系統
        affs Amiga的快速文件系統(FFS)
        coda Coda網絡文件系統
        hfs 蘋果的Macintosh文件系統
        adfs Acorn磁盤填充文件系統
        efs SGI IRIX的EFS文件系統
        qnx4 QNX4 OS使用不的文件系統
        romfs 只讀小文件系統
        autofs 目錄自動裝載程序的支持
        lockd 遠程文件鎖定的支持
    Net 網絡代碼
    Ipc System V的進程間通信
    Drivers 設備驅動程序
        block 塊設備驅動程序
           paride 從並口訪問IDE設備的支持
        scsi SCSI設備驅動程序
        char 字符設備驅動程序
           joystick 遊戲桿
           ftape 磁帶流設備
           hfmodem 無線電設備
           ip2 IntelliPort的多端口串行控制器
        net 網卡設備
        sound 音頻卡設備
        video 視頻卡設備
        cdrom 專用CD-ROM設備(除ATAPI和SCSI之外)
        isd0n ISDN設備
        apl000 富士的AP1000設備
        macintosh 蘋果的Macintosh設備
        sgi SGI的設備
        fc4 光纖設備
        acorn Acorn的設備
        misc 雜項設備
        pnp 即插即用的支持
        usb 通用串行總線(USB)的支持
        pci PCI總線的支持
        sbus Sun的SPARC SBus的支持
        nubus 蘋果的Macintosh Nubus的支持
        zorro Amiga的Zorro總線的支持
        dio 惠普的HP300 DIO總線的支持
        tc Sun的TurboChannel支持(尚未完成)
    Lib 通用內核函數
    Include 頭文件(.h)
        linux 內核核心部分
           lockd 遠程文件加鎖
           nfsd 集成的網絡文件服務器
           sunrpc Sun的遠程過程調用
           byteorder 字節交換函數
           modules 模塊支持
        asm-generic 平台無關低級頭文件
        asm-i386 IBM的PC體系結構
        asm-alpha 康柏的Alpha體系結構
        asm-mips SGI的MIPS體系結構
        asm-m68k Motorola-IBM的基於PowerPC的體系結構
        asm-ppc Motorola-IBM的PowerPC體系結構
        asm-s390 IBM的System/390體系結構
        asm-sparc Sun的SPARC體系結構
        asm-sparc64 Sun的Ultra-SPARC體系結構
        asm-arm 基於ARM處理器的體系結構
        net 網絡
        scsi SCSI支持
        video 視頻卡支持
        config 定義內核配置的宏所在的頭文件
    scripts 生成內核映像的外部程序
    Documentation有關內核各個部分的通用解釋和註釋的文本文件

    參考資料:《UNDERSTANDING THE LINUX KERNEL》 DANIEL P.BOVET & MARCO CESATI 著  (by huihoo.com Allen)

    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...