2009-07-31

【L】Ubuntu : 移除 Zend Studio 6.1.1

0 comments



因為資源吃很兇,所以就改用 Zend Studio 5.5.1

因此就要將先前安裝的Zend Studio 6.1.1 移掉。

不知道從何下手,找了一會也沒看到有人說。

sudo ./ZendStudioForEclipse_6_1_2.bin --help

也沒顯示要怎麼移除。

最後就直接到他安裝的路徑下( /usr/local/Zend/ZendStudioForEclipse-6.1.1 )

看有沒有uninstall 相關的東西,

結果看到了【Uninstall Zend Studio for Eclipse - 6.1.1 】的目錄

馬上進去瞧瞧。

裡面有四五個檔案,看到一個最像的 【Uninstall_Zend_Studio_for_Eclipse_-_6.1.1】

就先跑跑看。

sudo ./Uninstall_Zend_Studio_for_Eclipse_-_6.1.1

就看到畫面如下:

真的就開始移除了~太棒了。

不過遇到沒寫Uninstall的,就不知道要怎麼辦了~

END~~

【L】Ubuntu : 安裝 Zend Studio 5.5.1

0 comments

現在開發都是使用 Zend Studio 5.x

雖然已經有Zend Studio 7 了,但是覺的資源實在是吃很兇~~

所以還是用舊舊的 5.x 就好了,而且我要用的功能都有了

安裝環境及版本:

  • Ubuntu 9.04
  • Zend Studio 5.5.1
  • JRE

安裝方式如下:

  1. 首先要有JRE的環境
    sudo apt-get install sun-java6-jre
  2. 接著到 Zend 的網站去下載For Linux 的
    Zend Studio 5.5 (ZendStudio-5_5_1.tar.gz)
  3. 解壓後得到ZendStudio5_5_1.bin
    tar -zxvf ZendStudio5_5_1.bin
  4. 開始安裝
    sudo ./ZendStudio5_5_1.bin

安裝畫面

執行時畫面

PS.安裝完只能試用一個月!

END~

2009-07-30

【L】Shell Script : 將程式 SYNC 到開發或上線區

0 comments

這算是我第一隻 Shell Script 吧。

但也只是簡單的將程式 Sync 到別台 Server 而以。

內容如下:

#!/bin/sh
src_folder="/root/www_src"
des_folder="/home/www"
o_webs="1 2 3 4 5"
o_cmd='rsync -rltvp -e "ssh -l root" --exclude ".svn"'
s_webs="9"
s_cmd='rsync -rltv -e "ssh -l root" --exclude ".svn"'

sync_action(){
  if [ $action = 'Stage' ]; then
    webs=$s_webs;
    cmd=$s_cmd;
  elif [ $action = 'Online' ]; then
    webs=$o_webs;
    cmd=$o_cmd;
  fi
  
  echo -n "** Sync to $action? [Y/N] ** : "
  read yes_no
  case "$yes_no" in
    [yY]*)
      echo "Sync to ${action}, Start ......"
      echo '----------------------------------------'
      for web in $webs
      do
        echo "Sync to www-${web}"
        echo '>>>>>>>>>>>>>>>>>>>>'
        eval $cmd ${src_folder}/www/ www-${web}:${des_folder}/www/
      done
      ;;
    [nN]*)
      echo "Sync to ${action}, Cancel ......"
      ;;
    *)
      echo 'You should Answer Y/N'
      echo 'bye~~'
      ;;
  esac
}

# 必須要為 root 才可以使用
if [ "$(id -u)" != "0" ]; then
   echo "You must run the script as root." 1>&2
   exit 1
fi

# 主程式
echo -n 'Sync to -- Stage(S) Online(O) Cancel(C) -- : '
read action
case "$action" in
  [sS]*)
    action='Stage';
    echo '========== STAGE =========='
    sync_action
    ;;
  [oO]*)
    action='Online';
    echo '========== online =========='
    sync_action
    ;;
  [cC]*)
    echo 'bye!!'
    ;;
  *)
    echo '... bye!!'
    ;;
esac
exit 0

PS.
一般來說應該直接$cmd bala bala 就好了,為什麼前面還要用 eval 哩,因為在$cmd裡面有【"】如果直接執行會出現錯誤訊息" Missing trailing-" in remote-shell command. "

【L】rsync 筆記

0 comments

rsync 是一個拿來備份相當好用的東西~~

拿來同步Server上的資料也很好用。

如果目的端的資料一樣,他就不會再重新Sync,

速度很快~~

這裡簡單說明記錄一下。

使用方式:

rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST

我常用的大概就下面這個

rsync -rltvp --delete -e "ssh -p 1688 -l root" /home/user/chingwei/www/ xx.xx.xx.xx:/home/www/backup/www/

參數說明,網路上的中文說明好像都這份~~所以也不知道真正的出處在那。

  • -h , --help 顯示rsync求助資訊.
  • --version 顯示rsync版本.
  • -v , --verbose 複雜的輸出訊息.
  • -q , --quiet 安靜模式,幾乎沒有訊息產生.常用在以cron執行rsync.
  • -I, --ignore-times 通常rsync為了加快速度會忽略同樣檔案大小且同樣存取時間點的檔案.可以透過此參數關閉此快速檢查.
  • --size-only rsync只檢查檔案大小是否改變,不管時間存取點是否改變.通常用在mirror,且對方時間不太正確時.
  • -c, --checksum 在傳送之前透過128bit的md4檢查碼來檢查所有要傳送的檔案.(會拖慢速度.)
  • -a, --archive archive mode 權限保存模式,相當於 -rlptgoD 參數.
    很快速的保存幾乎所有的權限設定,除了硬式連結(透過-H設定).
  • -r, --recursive 複製所有下層的資料(遞迴)
  • -R, --relative 使用相對路徑.
    如:
    rsync foo/bar/foo.c remote:/tmp/ 在遠端產生/tmp/foo.c檔案
    rsync -R foo/bar/foo.c remote:/tmp/ 在遠端產生/tmp/foo/bar/foo.c 檔案
  • -R, --no-relative 不使用相對路徑.
  • -b, --backup 目的地端先前已經存在的檔案在傳輸或刪除前會被備份.
         --backup-dir=DIR 設定備份的資料夾.
         --suffix=SUFFIX 指定備份的檔案名稱字尾形式(預設為~).
  • -K, --keep-dirlinks 接收方將連結到資料夾的檔案視為資料夾處理
  • -l, --links 複製所有的連結
  • -H, --hard-links 保留硬式連結
  • -p, --perms 保留檔案權限
  • -o, --owner 保留檔案擁有者(root only)
  • -g, --group 保留檔案群組
  • -D, --devices 保留device資訊(root only)
  • -t, --times 保留時間點
  • -n, --dry-run 不實際執行傳送,只顯示將會有的傳輸動作
  • -S, --sparse 嘗試去處理稀疏的檔案,讓這些檔案在目的端佔去較少的磁碟空間.
  • -W, --whole-file 複製所有的檔案,不額外作檢查.
  • --no-whole-file 關閉 --whole-file 參數
  • -x, --one-file-system 不要跨越檔案系統分界(只在一個檔案系統處理)
  • -B, --block-size=SIZE 強制透過rsync程式去比對修復block-sizeforce
  • -e --rsh=COMMAND 定義所使用的remote shell
  • --rsync-path=PATH 定義rsync在遠端機器存放資料的路徑
  • --existing 只比對更新目的端已經存在的檔案
  • --ignore-existing 忽略目的端已經存在的檔案(也就是不更新)
  • --delete 刪除傳送端已經不存在,而目的端存在的檔案
  • --delete-excluded 除了把傳送端已經不存在,而目的端存在的檔案刪除之外,也刪除 --exclude 參數所包含的檔案.
  • --delete-after rsync預設會在檔案傳送前進行相關刪除動作確保接收端有足夠的檔案空間,但可以透過 --delete-after 讓刪除動作在檔案傳送後再行刪除.
  • --ignore-errors 忽略任何錯誤既使是I/O error 也進行 --delete 刪除動作.
  • --max-delete=NUM 定義rsync不要刪除超過 NUM 個檔案.
  • --partial rsync若遇到傳輸過程中斷時,會把那些已經傳輸的檔案刪除.在某種狀況下保留那些部分傳送的檔案是令人高興的.你可以透過 --partial 參數達到這個目的.
  • --partial-dir=DIR 在 --partial 參數啟動時,你還可以定義rsync把那些部分傳送的檔案寫入定義的資料夾,而非直接寫入目的端.需要注意的是,此資料夾不應該被其他使用者可以寫入.(如:/tmp)
  • --force 當目的端資料夾被傳送端非資料夾名稱覆蓋時,強制rsync刪除資料夾,即使該資料夾不是空的.
  • --numeric-ids 不將傳送端檔案的uid及gid值,與目的端的使用者/群組進行配對.若傳送端並沒有uid及gid的對應名稱(如:原帳號群組被刪除的遺留檔案),或目的端沒有相對應的帳號/群組,保留數字型態的uid/gid
  • --timeout=TIMEOUT 設定 I/O 逾時的時間(秒). 超過這個秒數而沒有資料傳送,rsync將會結束.預設為0,也就是沒有定義逾時時間.
  • -T, --temp-dir=DIR 定義rsync在接收端產生暫時性的複製檔案時使用資料夾暫存.預設是直接在接收端資料夾直接產生暫存檔案.
  • --compare-dest=DIR 定義rsync在目的端建立資料夾來比對傳送過來的檔案.
  • --link-dest=DIR 與 --compare-dest 相同,但同時會針對無法改變的檔案建立硬式連結.
  • -z, --compress 壓縮模式,當資料在傳送到目的端進行檔案壓縮.
  • -P -P參數和 --partial --progress 相同.只是為了把參數簡單化.
  • -C, --cvs-exclude 排除那些通常不希望傳送的檔案.定義的方式與CVS傳送相同:
    RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make .state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ 符合以上條件的都會被忽略而不傳送.
  • --exclude=PATTER 符合PATTERN(規則表示式)樣式的檔案不進行傳送
  • --exclude-from=FILE 和--exclude參數相同,不過是把不進行傳送的檔案事先寫入某一檔案.執行時,透過此參數讓rsync讀取.(; #開頭的行列或空白行會被rsync忽略)
  • --include=PATTERN 定義rsync不要排除符合pattern樣式的檔案.
  • --include-from=FILE 和--include參數相同,只不過把要包含的檔案寫到某一檔案.
  • --files-from=FILE 把要傳送的檔案名稱都精確的寫入某一檔案,讓rsync讀取.
    如: rsync -a --files-from=/tmp/foo /usr remote:/backup
  • -0 --from0 定義檔案所要讀取的檔案是null字元結尾.
  • --version 顯示版本訊息.
  • --daemon 定義rsync以daemon型態執行.
  • --no-detach 當以daemon型態執行時,不要進行分裂且變成背景程序.
  • --address=ADDRESS 定義所要連結(bind)的ip位址或是host名稱(daemon限定)
  • --config=FILE 定義所要讀取的設定檔rsyncd.conf位置(daemon限定) 預設值為 /usr/local/etc/rsyncd.conf
  • --port=PORT 定義rsyncd(daemon)要執行的port(預設為tcp 873)
  • --blocking-io 使用blocking I/O連結遠端的shell,如rsh , remsh
  • --no-blocking-io 使用non-blocking連結遠端的shell,如ssh (預設值)
  • --stats 顯示檔案傳送時的資訊狀態
  • --progress 顯示傳送的進度.(給檔案傳送時,怕無聊的人用的..)
  • --log-format=FORMAT 定義log的格式(在rsyncd.conf設定)
  • --password-file=FILE 從檔案讀取與遠端rsync伺服器連結的密碼
  • --bwlimit=KBPS 定義傳輸頻寬的大小(KBytes/秒)
  • --write-batch=FILE 把紀錄資料寫入一個檔案(給其他相同環境且相同需求的機器使用)
  • --read-batch=FILE 透過讀取紀錄檔案來進行傳輸.(檔案由 --write-batch 參數產生)
  • --checksum-seed=NUM 定義檔案 checksum-seed 的大小(byte)
  • -4 --ipv4 使用IPv4協定
  • -6 --ipv6 使用IPv6協定

2009-07-29

【L】Ubuntu : 讓 Firefox 自動用 aMule 下載 ed2k 連結

0 comments

修改 Firefox 的 config,讓Firefox可以自動將ed2k的連結與aMule關連。

說明如下:

環境..
Ubuntu 9.04
Firefox 3.0.11
aMule 2.2.4

假設目前 aMule 及 Firefox 都裝好了。

接著就來設定 Firefox

  1. 開啟Firefox,在網址列輸入..
    about:config
    並且保證會很小心
  2. 按右鍵 > New > Boolean
    name 輸入 network.protocol-handler.external.ed2k
    值為true
  3. 按右鍵 > New > String
    name 輸入 network.protocol-handler.app.ed2k
    值為 /usr/bin/ed2k (這個要先確定/usr/bin/下有,也有可能是ed2k.*)

這樣子就完成了~~

END~~

2009-07-22

【系統】SVN 筆記 - 基本指令

0 comments

SVN 是一個用來做版本控制的好東西~

我本來覺的這種東西真的好麻煩,改完就要commit,conflict 又要處理~

簡直就是增加我工作的時間嘛。

不過用了一陣子後,就漸漸習慣了~而且還會把你修改的記錄保留,

真的是個不錯的東西耶。

先說明 Trunk、Tags、Branches 的差別

  • Trunk : 主要開發
  • Tags : 當要 Release 時,就標個Tag。
  • Branches : 當要加新功能,或是Bug fix時,將 Trunk 複制一份到 Branches 再繼續開發,之後再 Merge 回Trunk

接著說明 SVN 的指令

  1. checkout (co) : 將SVN上的資料checkout出來
    svn checkout svn+ssh://trac.net/home/svn/repos/branches/life
  2. update (up) : 更新為SVN上的最新版本
    svn up
  3. commit (ci) : 將目前有修改的 commit 到 SVN
    svn ci (全部有修改的都會commit)
    svn ci file1 file2 file3 (只將file1 2 3 commit)
  4. add : 將檔案或目錄加進 SVN ,之後還要再 commit 才會真的加進 SVN
    svn add file
    svn add folder
  5. mv : 改檔名,但之前的紀錄還是會繼續保留
    svn mv old_file new_file
  6. status (st) : 從上次up後,目前檔案的狀態,那些有更改。
    svn st
  7. revert : 還原成前一個版本的狀態
    svn revert file
    svn revert folder
    svn revert *
  8. info : 顯示 SVN 的資訊
    svn info
  9. resolved : 如果檔案有conflict,處理完後,要resolved,才可以ci
    svn resolved file
  10. diff : 將現在的檔案跟SVN做比較
    svn diff (比對全部)
    svn diff file
    svn diff folder
    svn diff -r 100:101 也可以 101:100
  11. export  : 將SVN上的資料export出來,不包含.svn
    svn export svn+ssh://trac.net/home/svn/repos/branches/life
  12. copy (cp) : 首先是建立一個Branch的方式。
    EX:用 trunk/life 建一份branch 到 branches/life
    svn cp svn+ssh://trac.net/svn/trunk/life svn+ssh://trac.net/svn/branches/life -m 'create branch'
  13. import : 將整個資料匣,加到SVN中。
    EX:將life資料匣,import到SVN的trunk/life
    svn import life svn+ssh://chingwei@trac.net/svn/trunk/life
  14. log : 如果沒輸入參數, 預設會把所有 commit log 都列出來
    svn log
    svn log -l 10 # 顯示 10 筆(最新 10筆 Log)
    svn log -c 100 # 顯示 revision 100 的 Logsvn log -v -c 100 # 顯示  revision 100 的詳細 Log
  15. lock : 鎖定,這樣別人就沒辦法改了
    svn lock file
  16. unlock : 解除鎖定
    svn unlock file

SVN 狀態

  • ? - 是新的檔案,不在SVN裡
  • A - 新增的檔案
  • C - 檔案跟SVN的不同,合併失敗,要手動處理
  • D - 移除的檔案
  • M - 有修改過
  • U - 有更新
  • G - 跟SVN上的檔案不同,但合併成功。

目前大概用到這樣~~

先記到這裡

END~~

Update : 2009-08-21 增加 copy , import , log , lock , unlock 指令

Update : 2009-11-04 增加 【系統】SVN 筆記 - 進階指令

【L】環境設定檔

0 comments

此文章內容參考自 柏青哥的SUSE Linux 一書

當使用者成功登入系統時,馬上會取得一個 login shell ( 如果於此 shell 下再去啟用其他的 subshell,則稱為 non-login shell ),同時也取得了 shell 所提供的環境變數。您可以藉著修改一些環境設定檔來調整這些環境變數的內容。以下就是有關於環境設定檔的說明:

/etc/profile
使用者在登入期間,首先會被 bash 所讀取的檔案。

~/.bash_profile
如果這個檔案存在,則在 bash 執行完 /etc/profile 後,會接著執行這個檔案的內容。

~/.bash_login
如果 ~/.bash_profile 不存在,則執行此檔。

~/.profile
如果 ~/.bash_profile 及 ~/.bash_login 都不存在,則執行此檔。SuSE 就是使用這個檔案。

~/.bashrc
此檔在登入期間也會被執行。

/etc/bash.bashrc
在載入 /etc/profile 的過程,也會執行 bash.bashrc 檔案。

 

/etc/profile 及 /etc/bash.bashrc 的設定內容,可以套用在所有使用者的操作環境上,但只有 root 能去做設定,至於使用者則可以在自己家目錄下的 .profile 及 .bashrc 這兩個檔案做設定,以調整成自己想要的操作環境。

login shell:
bash 會去讀取 /etc/profile 及 ~/.bash_profile、~/.bash_login、~/.profile 三者之一

non-login shell:
只會讀取 ~/.bashrc 而已。

 

PS.如果要換自已的 Shell,就輸入chsh就可以改了

END~

【L】定義提示號樣式 - PS1

0 comments

很基礎的東西~但不常改~

所以都要查一下,這次就記下來吧。

看目前的樣式

echo $PS1

我的顯示結果如下

\u@\h:\w>

 

參數說明如下:

\u 顯示使用者名稱

\h 顯示主機名稱

\H 顯示完整主機名稱

\W 顯示目前工作目錄的位置,不過不是以完整路徑顯示

\w 顯示目前工作目錄的位置,以完整路徑顯示

\d 顯示日期

\t 顯示24小時制的時間

\T 顯示12小時制的時間

\$ Uid為0者(root)顯示"#",其他人顯示"$"

\# 顯示目前所輸入的指令是第幾個

 

設定方式如下:

如果只是想先試看看,可以直接在命令列輸入

PS1='\u@\h:\w\$'

 

想下次登入也有的話,就要在 /etc/profile (for 全部使用者)

或在 ~/.profile (for 個人) 裡加入

PS1='\u@\h:\w\$'

這樣子下次登入才會有。

 

END~

 

 

 

2009-07-21

【L】Ubuntu : 關掉 Tab 時,惱人的逼逼聲

0 comments

常常電腦都一直逼逼逼~~吵死人了

中午在用的話,又會吵到在睡覺的人。

 

解決方法如下:

vi /etc/inputrc

將 set bell style none 前的 "#" 拿掉

就搞定了。

2009-07-20

【遊】09-0711 台中 - HOTEL ONE (亞緻大飯店)

0 comments

這是我這生中,目前為止,住過最好的Hotel了~~我住在35樓~挺高的~

居然還有代客泊車~這是第一次有人幫我泊車~~

晚上還去lunge bar喝了二杯招待的飲料~但我點果汁~~一整個有遜掉的Fu。

它還有健身房~但~~很小~~而且沒有游泳池。

早餐也很不錯~~你可以叫廚師煎散蛋、合包蛋...一堆蛋~~都可以~~

不過帶相機好像很壯腳俗,所以我就沒拍到照片了~~而且~我真的沒看到有人帶相機耶~~

裡面真的感覺很高級~~下面就看看照片吧~~



不論你是要大便,還是洗澡,都可以看電視~~




這鞋子超好穿的耶~~不像一般的,都是扁扁的~~這個很厚喔~



Patty又在看娘家了~一整個很Local~




這是門打開一進來的玄關~~蠻大的,有點浪費這塊空間了,
但會讓人一進來就很舒服~~






這些吃的都要錢,而且是上流社會的價錢~~所以拍拍照,看看就好~~








你看~~商務客房要9000耶~~嚇死人~~



還會幫你印名片~~





窗外看出去的景色~~





最後要說一下,櫃台的小姐,態度很好耶~~我覺的有被尊重到~不錯不錯

 

END~

【遊】09-0711 南投 - 合歡山 + 清境農場

0 comments

這天早上,我們在歐鄉美邸吃過早餐後,就殺到合歡山,想說上去拍拍照,

再回來青青草原,優閒的逛~~不過總是會有人開的超慢的~~真是討厭~~

浪費別人的時間。

愈往合歡山開,天氣愈差,還飄起了小雨,所以照片拍的很…不怎麼樣。






 

所以合歡山沒啥好說的,接著我們就回到青青草原了~~天氣好的嚇人哩~~

我就是在這裡一整個被晒黑的~~沒太陽的時候很涼,因為風也很大,

但有太陽時,都覺的要被烤焦了~~









是綿羊界的黑人耶~~哈~~好好笑~~





有小羊可以餵,一罐好像20大洋~~但好多蟲子在旁邊,臭臭的~~











綿羊秀準備開始~~把羊群往山坡上趕~~等會會一起衝下來~~



 

看完綿羊秀我們就走到觀山牧區,去看風車節的活動~~

其也沒什麼~就一堆風車插在地上~

















好了~結束~~

接著我們就經由國道六號~往台中 HOTEL One前進~耶~~

有了國道六號後,到南投更快了~~真棒~~

END~