2007年6月29日 星期五

vim 設定

~/.vimrc

1 :syntax on
2 :set cindent
3 :set autoindent
4 :set nu
5 :set fdm=indent

在家裡因為螢幕比較小,一般tab是8個空白字元,可能沒幾個迴圈就必須縮行,這時可以設定按tab鍵是送出自己設定的空白字元數,這樣就算以後別的編輯器要開啟這個檔案也不會有問題

:set shiftwidth=4
:set softtabstop=4

參考資料:
www.study-area.org/tips/vim/Vim-9.html

2007年6月17日 星期日

Cygwin安裝OpenSSH

Cygwin安裝:
Admin:cygrunsrv
Net:openssh

進入Cygwin shell:

ssh-host-config
Should privilege separation be used? (yes/no) yes

Warning: The following function requires administrator privileges!
Should this script create a local user 'sshd' on this machine? (yes/no) yes

Do you want to install sshd as service?
(Say "no" if it's already installed as service) (yes/no) yes

Which value should the environment variable CYGWIN have when
sshd starts? It's recommended to set at least "ntsec" to be
able to change user context without password.
Default is "ntsec". CYGWIN= 按下Enter接受預設

讓sshd服務不隨開機而啟動:
執行-> services.msc -> 找到 CYGWIN sshd -> 設定為手動啟動

手動開啟:
cygrunsrv -S sshd

參考網址:
cha.homeip.net/blog/archives/2006/04/_winxp_cygwin_s.html

2007年6月8日 星期五

qsort與struct指標運用

  1. qsort是stdlib.h裡所包含的一個函式,宣告方式請看參考資料一,qsort需要傳入四個參數,值得一提的是第三和第四個參數,第三個參數是資料型態的大小,可以用sizeof()傳進去比較好,不必手算,第四個參數是比較的函式,要求宣告方式為 int compare(const void *,const void *),傳進的參數必須為void型態,且為const,其他程式無法修改,因此必須在傳進compare後另外宣告兩個原本型態之指標 a與b,再將參數強制轉型指定給 a和b 才能使用,可以看下面的範例程式碼與參考資料中的"函數當作函數的參數"會比較容易瞭解
  2. 若宣告一個 struct abc後,想存取其中的元素時,必須用"."運算子,但如果是 struct 的指標的話,則必須使用"->"來存取裡面的元素,請看參考資料中的pointer
範例程式碼
#include <stdlib.h>

int cmplength(const void *pa,const void *pb);
/*宣告cmplength()*/

struct dics{
char word[26];
int order;
int neworder;
}dictionary[10000];
/*定義srtuct dics並宣告dictionary[10000]為 dic 型態*/

int main(){
qsort(dictionary,N,sizeof(struct dics),cmplength);
return 0;
}
/*呼叫qsort*/

int cmplength(const void *pa,const void *pb){
int la,lb,result;
struct dics *a=(struct dics *)pa;
struct dics *b=(struct dics *)pb;

la=strlen(a->word);
lb=strlen(b->word);
if(la < lb ){
return -1;
}
else{
return 1;
}
}

參考資料


The Clibrary Reference Guide :
qsort-
www.acm.uiuc.edu/webmonkeys/book/c_guide/2.13.html#qsort

pointer-
www.acm.uiuc.edu/webmonkeys/book/c_guide/1.4.html

函數當作函數的參數:
libai.math.ncu.edu.tw/bcc16/C/C/d0.shtml

2007年6月7日 星期四

Pietty細部設定

連回自己電腦上OpenSSH Server時的一些設定

Vim內使用Backspace:
Terminal-
Keyboard->The Backspace Key:選擇 Control+H

使用右手邊之數字鍵:
Terminal-
Features-> disable application keypad mode

字體:
Window-
Apperance->Font:@Dotumche 16-point 或 Courier New 16-point

顏色顯示:(註解顏色太深看不清楚)
Window-
Colours->ANSI Blue->Modify

游標:
Window-
Apperance->Adjust the use of the cursor ->Underline


參考資料
my.opera.com/render/blog/show.dml/166886?cid=2447131

2007年6月6日 星期三

不需輸入帳號密碼便可登入SSH

SSH Server:Windows+Cygwin OpenSSH
Client:Portable Putty(0.59) (隨身碟)

在Server上先輸入 ssh-keygen -t rsa
並設定好大於四個字元的 passphrase (也可空白)

產生金鑰後,到 ~/.ssh 裡,輸入 cat id_rsa.pub >> authorized_keys
便完成 Server 部份的設置(註一),接著把 id_rsa 抓回自己電腦
利用Putty作者寫的Puttygen讀取 id_rsa ,確認完 passphrase 後,
存為 private key

開啟Putty,在 SSH->Auth ,選擇剛剛的 private key
接著輸入Server位址,SSH連線

連上後,會要求輸入登入帳號
接著輸入
passphrase 即可。(註二)


有一點要提的是--不要直接利用Puttygen產生金鑰,我就是照作者網頁上的指示去試,結果浪費我將近兩個小時...



註一:不同設定和Server時,檔案存放位置可能是在~/.ssh2,或認證金鑰檔的名稱不同

註二:若當初 passphrase 設空白,則輸入帳號後便直接登入,我是考慮到隨身碟遺失,以及怕外面電腦上有keystoke logger,不想把本機密碼洩漏,才設 passphrase

參考資料:

鳥哥的私房菜
linux.vbird.org/linux_server/0310telnetssh.php

Jamyy's Blog
cha.homeip.net/blog/archives/2006/04/_winxp_cygwin_s.html

Using public keys for SSH authentication
the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-puttygen