2012年12月20日 星期四

new .vimrc with gtags replace cscope and ctags

~/.vimrc.html
 1 set number
 2 set showcmd
 3 set showmatch
 4 set hlsearch
 5 set incsearch
 6 syntax on
 7 filetype indent on
 8 filetype plugin on "~/.vim/syntax "omni-complete ~/.vim/autoload ^x^n
 9 colors koehler
10 set sw=2
11 set ts=2
12 set smarttab
13 set sidescroll=1
14 set guifont=Inconsolata\ Medium\ 16
15 set guifontwide=YaHei\ Mono\ 16
16 set laststatus=2
17 set statusline=%F%m%r%h%w\ [%{&ff}]\ [%Y]\ [%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ [ASCII=\%03.3b]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]\ %=[%{GitBranch()}]
18 set backspace=2
19 set clipboard=unnamedplus
20 set autoindent
21 set smartindent
22 set cindent
23 "set spell
24 set encoding=utf-8
25 set makeprg=
26 set smartcase
27 set ruler
28 set cursorline
29 set fileencodings=ucs-bom,utf-8,big5,euc-jp,cp936,gb18030,euc-kr,latin1
30 set guioptions=aegimrLt
31 autocmd BufNewFile,BufRead *.mip :set syntax=mips
32 autocmd BufNewFile,BufRead *.S :set syntax=mips
33 set langmenu=zh_TW.UTF-8
34 source $VIMRUNTIME/delmenu.vim
35 source $VIMRUNTIME/menu.vim
36 language messages zh_TW.utf-8
37 
38 let g:LargeFile=10
39 "let g:EclimTaglistEnabled=0
40 set csprg=gtags-cscope " use fake cscope
41 set cst "use cscope to get tags
42 cs a GTAGS . -C
43 

2012年12月12日 星期三

change terminal console resolution

更改linux純文字畫面的resolution
在grub畫面上按c
輸入vbeinfo找出想要的resolution
然後在/etc/default/grub裡更改
GRUB_GFXMODE
例如
GRUB_GFXMODE=1366x768x32
然後
sudo update-grub
重新開機就行了
參考資料:
https://help.ubuntu.com/community/Grub2/Displays#Changing_Menu_Resolutions 

我所不知道的command

解開tar封包到其他的路徑
$ tar -C folder -zxvf package.tgz
不要顯示not found error
$ grep -s
diff時不要顯示空白差異
$ diff -w
從新mount一遍
$ sudo mount -o remount,rw -t <type> <block> <dir>

2012年12月11日 星期二

ubuntu桌面消失了

剛才一不小心修改了ccms裡的設定,結果整個桌面環境都消失了。還好這時候只要進去ccms裡的profile選擇reset to default就行了。如果還不行就把profile在unity和default間切換一遍就可以恢復了,害我嚇出一身冷汗。

2012年12月1日 星期六

如何利用virtual box當tcp/ip跳板

前言: 

    想像有一種狀況:當有一個網站的portal(firewall, gateway, vpn)必須執行一些windows特有的小程式才能登入(其實這種狀況其實蠻常見的),而我想access後面的工作站,但我卻不想離開我的Linux時,這時候該怎麼作呢?

畫一個簡易的示意圖如下:
MyLaptop(L)------------------->Portal(P)----->Workstation(W)
Linux      這裡只能由Windows登入

這時候我們就可以利用Virtual Box產生一個虛擬的guest Windows
變成
MyLaptop(L)->VirtualWindows(V)---------->Portal(P)->Workstation(W)
                        這裡只能由Windows登入


1.利用Virtual Box建立guest Windows(V):

首先下載Virtual Box (https://www.virtualbox.org/wiki/Linux_Downloads)和extension pack(http://download.virtualbox.org/virtualbox/4.2.4/Oracle_VM_VirtualBox_Extension_Pack-4.2.4-81684.vbox-extpack)
2.安裝Virtual Box並把network card從NAT改成Bridge Adapter//這步是為了讓Linux能連進Windows
3.安裝Windows
4.從Devices選單選擇Install Guest Additions
5.不要忘了將Windows設密碼這樣才能從外部連入


2. 安裝SSH server on Windows(V):

1. 安裝SSH server,這裡我選擇的是freeSSHd(http://www.freesshd.com/freeSSHd.exe
2. 記得將使用者加入可連入的名單中
3. 測試一下ssh server是否能夠正確動作
:以上只能在XP上使用,在Win7下freeSSHd有權限上的問題,須改用WinSSHD,步驟如下
1. 安裝WinSSHD(http://dl.bitvise.com/BvSshServer-Inst.exe)
2. 選擇personal edition只能使用Windows帳戶登入


3. 設定Linux端的SSH(L):

1. 更改ssh config
$ vim ~/.ssh/config
加入下列幾行
Host MyTarget # put any name you like here
User MyUserName # the username on Target machine
HostName IPAddrOfTarget # IP of Target
Port 22 # port on target
ProxyCommand ssh -W %h:%p UserNameOnBridge@IPAddrOfBridge
或者 
ProxyCommand ssh -W %h:%p  -C -c blowfish UserNameOnBridge@IPAddrOfBridge #用壓縮和較快速的加密減少overhead
WinSSHD使用下列
ProxyCommand ssh -W %h:%p -C -c aes128-cbc UserNameOnBridge@IPAddrOfBridge

2. 測試:
先從V登入Portal後
$ ssh MyTarget
會看到問兩次password,第一次是bridget的password,第二次是Target的password。
如果覺的麻煩可以使用public key authentication的方法

4. 設定Public key(optional):

在本機端產生public key
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cd ~/.ssh

$ ssh-keygen -t rsa 

這時會產生兩個key
id_rsa和id_rsa.pub
將id_rsa.pub複製到Virtual Windows和遠端機器中
1.將id_rsa.pub放在並改名C:\Program Files\freeSSHd\USERNAME
在freeSSHd的user裡authorization選擇public key
2.在遠端機器(Target)執行下列動作
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

這樣就可以不用使用password登入了

參考資料:
Forward SSH traffic through a middle machine
Creating a transparent SSH tunnel through a bastion host using the ProxyCommand configuration parameter
How To Set Up SSH With Public-Key Authentication On Debian Etch