2009年9月27日 星期日

Solaris下的壓縮和解壓縮命令

.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(註:tar是打包,不是壓縮!)


.gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName


Solaris下tar和gzip的組合用法

Solaris的命令有時候沒有Linux那麼方便,比如tar命令,因為沒有-z的選項,壓縮歸檔不是那麼方便,和gzip組合使用才能達到-z選項的效果。

在此總結一下tar和gzip的組合用法。

歸檔並壓縮的命令

$ tar cvf - test | gzip -c > test.tar.gz

解壓縮並展開歸檔的命令

$ gzip -d -c test.tar.gz | tar xvf -
$ gunzip -c test.tar.gz | tar xvf -
$ zcat test.tar.gz | tar xovf -



.bz2
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName


.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName

2009年9月24日 星期四

To Start or Stop MySQL

To start MySQL:

bin/mysqld_safe --user=root




To stop MySQL:


bin/mysqladmin shutdown

or

bin/mysqladmin -u root shutdown -p

2009年9月23日 星期三

用戶管理

一) 用戶基本知識
1.文件信息
ls -l
drwxrwxrwx filename
(1)訪問權限
mode : rwx rwx rwx r:read w:write x:execute
user group other
縮寫 : (u) (g) (o)
(2) 文件類型
: 普通文件
b : 塊特殊文件,如硬盤和CDROM設備
c : 字符文件設備
l : 符號連接
p : 管道或流,用於進程通訊
d : 目錄

2.缺省權限
創建文件和目錄時,系統自動設置一定的權限.缺省權限由用戶mask碼控制
$umask 顯示用戶umask碼
umask 設置 文件 目錄
022 新文件屬主有讀權和修改權 用戶組和其他用戶有讀權和修改權用戶組和其他用戶只有讀權可用umask maskvalue 改變缺省權限

3.系統安全文件
(1) /etc/passwd
(2) /etc/shadow
/etc/group
/etc/default/login

(二)相關命令
★1. chmod 改變文檔或目錄之屬性
命令格式:chmod [-R] mode name
( name 可為檔名或目錄名;mode可為 3 個 8 位元之數字,或利用ls -l命令,列出文檔或目錄之讀、寫、執行允許權之文字縮寫.)
例子 :
chmod 755 dir1 將目錄dir1,設定成任何使用者,皆有讀取及執行之權利,但只有擁有者可做修改.
chmod 700 file1
將文檔file1,設定只有擁有者可以讀、寫和執行.
chmod o+x file2 (u:user g:group o:other a:all) (r:read w:write x: execute)
將文檔file2,增加擁有者可以執行之權利.
chmod g+x file3
將文檔file3,增加群組使用者可執行之權利.
chmod o-r file4
將文檔file4,除去其它使用者可讀取之權利.

★2.chown 改變文檔或目錄之擁有權
命令格式:chown [-R] username name ( name 可為檔名或目錄名.)
例子 :
chown Karen file1 將文檔 file1 之擁有權,改為使用者 Karen 所有.
chown -R luhua dir1 將目錄dir1及其下所有文檔和子目錄之擁有權,改為luhua 所有.

★3.chgrp 改變文檔或目錄之群組擁有權
命令格式:chgrp [-R] groupname name ( name 可為檔名或目錄名 )
例子 :
chgrp PSI file1 將文檔 file1 之群組擁有權,改為 PSI 群組.
chgrp -R Oracle dir1 將目錄dir1,及其下所有文檔和子目錄,改為 Oracle 群組.

★4.touch 改變文檔或目錄之最後修改時間
命令格式:touch name ( name 可為文檔或目錄名稱.)

5.who 查看當前系統上的用戶名單
★who am i 顯示當前用戶
finger 列出所有用戶名單
W:

6. id 查看當前用戶用戶號和組號
★7. passwd 修改用戶口令
命令格式:passwd username
無用戶參數修改本用戶口令

★8. su 轉換用戶
命令格式: su [-] username
無用戶參數為轉換到超級用戶
- :執行新用戶環境設置
 

Unix 命令

(一)基本命令
命令格式: 命令 參數

★1. ls 顯示文件名,等同於dos下dir命令
命令格式:ls [option] file
option:
-l 顯示詳細列表
文件類型和權限 文件連接數 所有者 用戶組脈 文件長度 修改日期 文件名
-a 顯示所有文件,包含隱藏文件(以. 起頭的文件名)
-R 顯示文件及所有子目錄
-F 顯示文件(後跟*)和目錄(後跟/)
-d 與l選項合用,顯示目錄名而非其內容
-p

★2. cd 目錄轉換,等同於dos下cd命令
注意目錄分隔符為“/”,與dos相反
命令格式:cd dirname

★3. pwd 顯示當前路徑
★4. cat 顯示文本內容,等同於dos下type命令
命令格式:cat filename

★5. more 或pg 以分頁方式查看一個長文本文件內容.
命令格式:more filename

★6. rm 刪除文件
命令格式: rm [-r] filename (filename 可為檔名,或檔名縮寫符號.)
例子 :
rm file1 刪除檔名為 file1 之文檔.
rm file? 刪除檔名中有五個字元,前四個字元為file 之所有文檔.
rm f* 刪除檔名中,以 f 為字首之所有文檔.
rm -r dir1 刪除目錄 dir1,及其下所有文檔及子目錄.

★7. mkdir 創建目錄
命令格式: mkdir [-p] directory-name

Exmaple :

mkdir dir1 (建立一新目錄 dir1.)

mkdir -p dir/subdir (直接創建多級目錄)

★8. rmdir 刪除目錄
目錄必須首先為空
命令格式: rmdir directory

★9. cp 文檔複製 cp –r 目錄複製
命令格式: cp [-r] source destination
Exmaple:

Cp -i file1 file2 (將文檔 file1 複製成 file2 . –i為提示確認。)

cp file1 dir1 將文檔 file1 複製到目錄 dir1 下,文件名仍為 file1.

cp /tmp/file1 . 將目錄 /tmp 下的文檔 file1複製到現行目錄下,檔名仍為 file1.

cp /tmp/file1 file2 將目錄 /tmp 下的文檔 file1現行目錄下,檔名為file2

cp -r dir1 dir2 (recursive copy) 複製整個目錄.若目錄 dir2 不存在,則將目錄dir1,及其所有文檔和子目錄,複製到目錄 dir2 下,新目錄名稱為dir1.若目錄dir2不存在,則將dir1,及其所有文檔和子目錄,複製為目錄 dir2.

★10. mv 文件移動 重命名
命令格式: mv source destination
Exmaple:
mv file1 file2 將file1重命名為 file2.
mv file1 dir1 將文檔 file1,移到目錄 dir1 下,檔名仍為 file1.
mv dir1 dir2 若目錄 dir2 不存在,則將目錄 dir1,及其所有檔
案和子目錄,移到目錄 dir2 下,新目錄名稱為 dir1.
若目錄 dir2 不存在,則將dir1,及其所有文檔和子
目錄,更改為目錄 dir2.

11. du 查看目錄所佔磁碟容量
命令格式: du [-sk] directory
例子 :
du dir1 顯示目錄 dir1 的總容量及其次目錄的容量
du -sk dir1 顯示目錄 dir1 的總容量,以k bytes為計量

12. find 查找文件
命令格式: find dir -name filename command
例子:
find . -name hello -print 尋找目前目錄及所有的子目錄內叫
hello的文檔.
find . -ctime +7 -print 找出七天內未被更動的文檔
find . -size +2000m -print 找出大小超過2000 bytes的文檔
find /tmp -user b1234567 -print 在/tmp下屬於b1234567的文檔
find . -name '*.c' -exec rm {} 刪除所有的.c檔
find . -name test\* -print 顯示當前目錄及其子目錄文件名前4
位為test的文件名

★13. vi 編輯器
命令狀態:
j,k,h,l:上下左右
0: 行首
$: 行尾
i,I :插入命令,i 在當前光標處插入 I 行首插入
a,A:追加命令,a 在當前光標後追加,A 在行末追加
o,O:打開命令,o 在當前行下打開一行,O在當前行上插入一行
r,R :替換命令,r 替換當前光標處字符,R從光標處開始替換
數字s: 替換指定數量字符
x: 刪除光標處字符
dd: 刪除當前行
d0: 刪除光標前半行
d$: 刪除光標後半行
ctrl+f :後翻頁
ctrl+b:前翻頁
G : 文件尾
數字G: 數字所指定行
/string 查找字符串
n 繼續查找
N 反向繼續查找
% 查找對應括號
u 取消上次操作
ex命令狀態
:set number 顯示行號
:set smd 顯示顯示狀態
:0 文件首
:1,5 copy 7 塊拷貝
:1,5 del 塊刪除
:1,5 move 7 塊移動
:1,$s/string1/string2/g 全文件查找string1並替換為string2
:wq! 存盤退出

★14. dtpad 或 txetedit
相當於Windows的記事本,對不習慣vi的人很有用

★15. head -5 filename 顯示文件的前5行
tail -5 filename顯示文件的最後5行

16. sort 按次序顯示文件
17. hostname
18. lp 打印
19. unix2dos 文件格式轉化
20. echo顯示文本
21. date
22. script記錄一個solaris會話
(二) 增強命令
1. ln 文檔連結
命令格式:ln -s oldname newname ( Hard link )
同一文檔,可擁有一個以上之名稱,可將文檔做數個連結.例子 :
ln -s file1 file2  將名稱 file2,連結至文檔 file1.

2.grep 查找一個字符串
命令格式:
grep string filename
尋找字串的方法很多,比如說我想找所有以M開頭的行.此時必須引進pattern的觀
念.以下是一些簡單的□例,以及說明:
^M 以M開頭的行,^表示開始的意思
M$ 以M結尾的行,$表示結束的意思
^[0-9] 以數字開始的行,[]內可列舉字母
^[124ab] 以1,2,4,a,或b開頭的行
^b.503 句點表示任一字母
* 星號表示0個以上的字母(可以沒有)
+ 加號表示1個以上的字母
\. 斜線可以去掉特殊意義
 
cat passwd grep ^b 列出大學部有申請帳號者名單
cat passwd grep ^s 列出交換學生申請帳號者名單
cat passwd grep '^b.503' 列出電機系各年級...
grep '^\.' myfile.txt 列出所有以句點開頭的行

3.fgrep 搜索字符串
命令格式:fgrep string file

4.file 顯示文件類型
命令格式:file fileall
文件類型為shell script,ELF 32bit,ASCII text,data or tar file

5.diff 比較文檔或目錄之不同內容
命令格式:diff [-r] name1 name2 ( name1 name2 可同時為檔名,或目錄名稱.)
例子 :
%diff file1 file2
比較文檔 file1 與 file2 內,各行之不同處.
%diff -r dir1 dir2
比較目錄 dir1 與 dir2 內,各文檔之不同處

6.cmp 比較文檔相同部分
命令格式:cmp file1 file2

★7.ftp 遠程文件傳輸
命令格式: ftp [hostnameIP address]
在進入 ftp 之後,如果與 remote host 連接上了,它將會詢問你 username 與密碼,如果輸入對了就可以開始進行文檔傳輸.
注意:如用戶無密碼,無法註冊
(1) ftp 命令
ascii 將傳輸模式設為 ascii 模式.通常用於傳送文字檔.
binary 將傳輸模式設為 binary 模式,通常用於傳送執行檔,壓縮檔與影像檔等.
cd remote-directory 將遠程主機上的工作目錄改變.
lcd [ directory ] 更改本地主機的工作目錄.
ls [ remote-directory ] [ local-file ] 列出遠程主機上的文檔.
get remote-file [ local-file ] 取得遠方的文檔.
mget remote-files 可使用通用字元一次取得多個文檔.
put local-file [ remote-file] 將本地主機的文檔送到遠程主機.
mput local-files 可使用通用字元一次將多個文檔放到遠程主機上.
help [ command ] 線上輔助指令.
mkdir directory-name 在遠程主機創建一個目錄.
prompt 更改交談模式,若為 on 則在 mput 與 mget 時每作一個文檔之傳
輸時均會詢問.
quit/bye 離開ftp .
(2) 後台執行ftp
1.首先,將過程所用到的指令依順序放入文檔中,如下:
%cat ftp_command
!mkdir test
lcd test
cd test
prompt
binary
mget *.*
bye
2.其次,建一個.netrc檔,屬性為400,讓ftp 自動到此讀取Username
與Password,方可順利login 到的主機,如下:
%cat .netrc
machine remote login anonymous password guest
3.最後再執行下面指令即可.
%nohup ftp remote <> message &

8.telnet 遠程終端訪問
命令格式:
telnet [hostnameIP address]

★9.IO 重新導向
UNIX所有的程式執行時,均需要資料的輸入以及輸出資料.一般而言,資料是從鍵盤輸入,並將資料輸出到螢幕上,這就叫做標準輸入及標準輸出,而我們可以更改標准出輸出入.
A. 更改標準輸入 —— 在命令後方加"< " ,即可從這個文檔輸入資料.
B. 更改標準輸出 —— 在命令後方加"> " ,即可將螢幕輸出的資料導向到這個文檔上.
C. 更改標準輸出 —— 在命令後方加">> ",功能與B.相似,只不過這會將資料加在文檔後方.
D. 管道 —— 在兩個命令中間加上'',即可將前方指令的輸出當成後方指令
D. 管道 —— 在兩個命令中間加上'',即可將前方指令的輸出當成後方指令的輸入.
例:
cd /tmp
ls -l > /tmp/ls.out
cat /tmp/ls.out
more /tmp/ls.out
rm /tmp/ls.out
ls more
ls wc -l (word count, count line number,算出文檔數目)\

Solaris下安裝Tomcat

Solaris版本:Sun OS 5.11 snv_50 i86pc i386
Tomcat版本:5.5.20

1.下載Tomcat
Tomcat站點:http://tomcat.apache.org/
下載頁面:http://tomcat.apache.org/download-55.cgi#5.5.20
找到Core下面的tar.gz
文件地址:http://apache.downlod.in/tomcat/tomcat-5/v5.5.20/bin/apache-tomcat-5.5.20.tar.gz

2.解包Tomcat
# gunzip apache-tomcat-5.5.20.tar.gz
# tar -xvf apache-tomcat-5.5.20.tar

3.更改Tomcat目錄名,方便以後操作
# mv apache-tomcat-5.5.20 tomcat

4.移動Tomcat到/usr/local下
# mv tomcat /usr/local/

5.配置環境變量
編輯/etc/profile,在最後加入:


程序代碼
JAVA_HOME=/usr/jdk/jdk1.5.0_08
export JAVA_HOME

CATALINA_BASE=/usr/local/tomcat
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$CATALINA_HOME/bin
export CATALINA_BASE CATALINA_HOME PATH


6.啟動Tomcat
轉到Tomcat的bin目錄下:
# cd /usr/local/tomcat/bin
執行startup.sh腳本啟動Tomcat:
# ./startup.sh

7.測試
打開瀏覽器,訪問:http://localhost:8080,出現Congratulations表示成功

2009年9月1日 星期二

CSS/javascript 在 IE 與 Firefox 下的差別

鑑於寫網頁時,經常碰到 IEFirefox 瀏覽器相容性的問題,即同樣的 CSS 或 javascript code,在兩個瀏覽器上看起來有所偏差,造成設計上的困擾,因此我從網路上整理了下面這些常見的 IE 與 Firefox 解析 CSS/javascript 上的不同之處以及解決方法。

1.
Firefox 不支援 innerText。Firefox 支援 innerHTML 但並不支援 innerText,不過可以使用 textContent 來達到 innerText 的效果。若不想用 textContent,如果內容字串不包含 HTML,可以 innerHTML 代替。

2.
關於禁止選取網頁內容。
在 IE 中,一般使用用 javascript:obj.onselectstart=function(){return false;}
而 Firefox 則必須用 CSS:-moz-user-select:none

3.
對 Firefox 而言,將 div 的 margin-left, margin-right 設為 auto 時,是自動置中的,但 IE 則不是。

4.
濾鏡的支援(如透明濾鏡)
IE:filter: alpha(opacity=10);
Firefox:-moz-opacity:.10;

5.
事件偵測。
IE:obj.setCapture() 、obj.releaseCapture()
Firefox:
document.addEventListener("mousemove",mousemovefunction,true);
document.removeEventListener("mousemove",mousemovefunction,true);

6.
div 等元素的邊界。
例如:指定一圖層的 CSS 為:{width:100px; height:100px; border:#000000 1px solid;} IE:div 的寬度(包括邊框寬度)=100px,div的高度(包括邊框寬度)=100px;Firefox:div的寬度(包括邊框寬度)=102px,div的高度(包括邊框寬度)=102px;但若加上 XHTML 標準後,兩個瀏覽器就都為 102px 了!

7.
ul 在 Firefox 和 IE 下的不同呈現。
ul 在 Firefox 下有 padding 值,卻沒有 margin 值;而在 IE 下正好相反,ul 有個 margin 值,卻沒有 padding 值。在 Firefox 下,ul 的 list-style 默認是處於內容的外邊緣的。但可以利用 CSS 可將 list-style 置為內容的內邊緣。
適合兩個瀏覽器的 ul 設定為:padding:0; margin:0; list-style:inside; 或者 padding:0; margin:0; list-style:none。
詳細圖文說明請見:wowbox blog (網頁設計知識庫)

8.
IE 和 Firefox 對 CSS margin 與 padding 的解釋不一樣。最簡單的方法是利用 CSS hacks,先 reset 各 selector 的 margin, padding。
* {margin:0; padding:0;}
關於 CSS hacks,原始來源翻譯轉載Yahoo YUI: Reset CSS

9.
FireFox不支援捲軸變色。

10.
在元素上設定背景色時,IE 是作用在 padding + content ,而 Firefox 則是作用在 border + padding + content 上。

若要使網頁在 IE 與 Firefox 下都能夠順利呈現,有兩個常用的方法:

1.
判斷瀏覽器類型。
var isIE=document.all?true:false;
若支援 document.all,變數 isIE=true,否則 isIE=false

2.
在不同瀏覽器下的 CSS 處理。
通常用 !important 來自動優先使用 CSS 語法(僅 Firefox 支援)
如:{border-width:0px!important;border-width:1px;}
在 Firefox 下這個元素是沒有邊框的,在 IE 下邊框寬度是 1px

對經常利用 CSS 來美化排版網頁的使用者來說,有一個輔助編輯的工具是必須的,在 IE 上有 Internet Explorer Developer Toolbar,而 Firefox 上有 Web Developer 這些 Plugin,但如果能一次支援這兩種瀏覽器的呈現,那就更棒了!因此最後,推薦一個能夠同時支援 IE 與 Firefox 的 CSS 編輯軟體:CSSVista。它可以讓設計者同時、即時預覽這兩個瀏覽器下的結果,此外,也有自動 CSS 語法的提示喔!

轉載自 http://oddlee.blogspot.com/2007/09/cssjavascript-ie-firefox.html

JavaScript Document 屬性

JavaScript - Document對象內容集合


document.title //設置文檔標題等價於HTML的title標籤

document.bgColor //設置頁面背景色

document.fgColor //設置前景色(文本顏色)

document.linkColor //未點擊過的鏈接顏色

document.alinkColor //激活鏈接(焦點在此鏈接上)的顏色

document.vlinkColor //已點擊過的鏈接顏色

document.URL //設置URL屬性從而在同一窗口打開另一網頁

document.fileCreatedDate //文件建立日期,只讀屬性

document.fileModifiedDate //文件修改日期,只讀屬性

document.fileSize //文件大小,只讀屬性

document.cookie //設置和讀出

cookiedocument.charset //設置字符集 簡體中文:gb2312

———————————————————————

常用對象方法

document.write() //動態向頁面寫入內容

document.createElement(Tag) //創建一個html標籤對象

document.getElementById(ID) //獲得指定ID值的對象

document.getElementsByName(Name) //獲得指定Name值的對象

document.body.appendChild(oTag)

———————————————————————


body-主體子對象

document.body //指定文檔主體的開始和結束等價於body.../body

document.body.bgColor //設置或獲取對象後面的背景顏色

document.body.link //未點擊過的鏈接顏色

document.body.alink //激活鏈接(焦點在此鏈接上)的顏色

document.body.vlink //已點擊過的鏈接顏色

document.body.text //文本色

document.body.innerText //設置body>…/body>之間的文本

document.body.innerHTML //設置body>…/body>之間的HTML代碼document.body.topMargin //頁面上邊距

document.body.leftMargin //頁面左邊距

document.body.rightMargin //頁面右邊距

document.body.bottomMargin //頁面下邊距

document.body.background //背景圖片


document.body.appendChild(oTag) //動態生成一個HTML對象


常用對象事件

document.body.onclick="func()" //滑鼠游標單擊對象時觸發

document.body.onmouseover="func()" //滑鼠游標移到對象時觸發

document.body.onmouseout="func()" //滑鼠游標移出對象時觸發

———————————————————————

location-位置子對象


document.location.hash // #號後的部分

document.location.host // 域名+端口號

document.location.hostname // 域名

document.location.href // 完整URL

document.location.pathname // 目錄部分

document.location.port // 端口號

document.location.protocol // 網絡協議(http:)

document.location.search // ?號後的部分


documeny.location.reload() //刷新網頁

document.location.reload(URL) //打開新的網頁

document.location.assign(URL) //打開新的網頁

document.location.replace(URL) //打開新的網頁

———————————————————————

selection-選區子對象document.selection

———————————————————————


images集合(頁面中的圖像)


a)通過集合引用document.images //對應頁面上的img標籤

document.images.length //對應頁面上img標籤的個數

document.images[0] //第1個img標籤

document.images[i] //第i-1個img標籤


b)通過nane屬性直接引用img

name="oImage"document.images.oImage //document.images.name屬性


c)引用圖片的src屬性

document.images.oImage.src //document.images.name屬性.src


d)創建一個圖像

var oImageoImage = new Image()

document.images.oImage.src="1.jpg"同時在頁面上建立一個img /標籤與之對應就可以顯示


———————————————————————


forms集合(頁面中的表單)


a)通過集合引用document.forms //對應頁面上的form標籤

document.forms.length //對應頁面上/formform標籤的個數

document.forms[0] //第1個/formform標籤

document.forms[i] //第i-1個/formform標籤

document.forms[i].length //第i-1個/formform中的控件數

document.forms[i].elements[j] //第i-1個/formform中第j-1個控件


b)通過標籤name屬性直接引用/formform name="Myform">input name="myctrl"/>/formdocument.Myform.myctrl //

document.表單名.控件名


c)訪問表單的屬性

document.forms[i].name //對應form name>屬性

document.forms[i].action //對應/formform action>屬性

document.forms[i].encoding //對應/formform enctype>屬性

document.forms[i].target //對應/formform target>屬性


document.forms[i].appendChild(oTag) //動態插入一個控件

document.all.oDiv //引用圖層oDiv

document.all.oDiv.style.display="" //圖層設置為可視

document.all.oDiv.style.display="none" //圖層設置為隱藏

document.getElementId("oDiv") //通過getElementId引用對象

document.getElementId("oDiv").style=""

document.getElementId("oDiv").display="none"

/*document.all表示document中所有對象的集合只有ie支持此屬性,因此也用來判斷瀏覽器的種類*/


圖層對象的4個屬性

document.getElementById("ID").innerText //動態輸出文本

document.getElementById("ID").innerHTML //動態輸出HTML

document.getElementById("ID").outerText //同innerText

document.getElementById("ID").outerHTML //同innerHTML


資料來源 : http://www.ccvita.com/80.html

JavaScript 二維陣列

//建立二維陣列

function Array2DVar(x,y) { // 定義二維陣列原型

this.length = x;

this.x = x; // x 維度長度

this.y = y; // y 維度長度

for(var i = 0; i < this.length; i++) // 初始各元素值為 null

this[i] = new Array(y); // this 代表物件本身

}


var AtlTab = new Array2DVar(2,2);

var AtlArea = new Array2DVar(2,2);

AtlTab[1][1] = 'AtlTab1';

AtlTab[1][2] = 'AtlTab2';

AtlArea[1][1] = 'AtlTop01';

AtlArea[1][2] = 'AtlTop02';