2009年3月30日 星期一

Web applications IDE on Linux--KompoZer & Aptana Studio

在windows下有赫赫有名的Dreamweaver,MacOS上更有史上最強悍的coda編輯器,狠狠的把dreamweaver甩在後面;Dreamweaver強在所見即所得(WYSIWYG),coda更狠,他本身不但也是個WYSIWYG的軟體,他更是一個不折不扣的web applications IDE!不會撰寫程式碼的人可以輕鬆用coda寫出超漂亮的網頁,web程式高手透過coda可快速撰寫精確的程式碼來,還可以自動補齊、參數選擇等等,實在是棒到不行!

那麼,linux的使用者呢?

我不是一個網頁設計高手,相反地,關於html跟php我懂得大概比皮毛還少一點吧!這幾周不斷的尋找在linux下好的替代方案,我選擇了兩款強大的網頁編輯軟體--kompozeraptana studio。前者不能算是ide,他類似dreamweaver的角色,提供所見即所得;後者就是標準的ide,不過他只提供你所安裝瀏覽器裡所有預覽,不過沒有WYSIWYG的功能。對我目前而言,我會視需求同時使用這兩套軟體來學習使用。

1. kompozer
kompozer就是nvu的前身,不過nvu已經停止維護了,所以假設您原本使用nvu的朋友可以轉換到kompozer來。ubuntu裡可以直接使用aptitude來安裝,不過我的debian裡是lenny的套件庫,所以並沒有kompozer,因此我們可以直接下載deb來安裝,rpm的朋友則是這裡繁體中文套件檔也可以下載。
Kompozer所提供的四種模式:一般編輯模式(WYSIWYG);HTML標籤模式,可以讓你觀察整體的標籤分佈;原始碼模式以及預覽模式

2.Aptana Studio

aptana公司有三項主打產品:開放原始碼的aptana studio、雲端運算技術的aptana cloud以及開放原始碼的ajax web server:aptana ajxer。筆者對於web的世界了解甚少,只是取aptana studio這個強大的ide來練習使用罷了;如果對於aptana studio的學習有更好的經驗或意見,請不吝告訴筆者。

aptana studio是一個java應用程式,也就是具有跨平台的特性;也因為如此,你可能在linux下需要作一點小小的設定才行。他提供兩種使用aptana studio的方式:獨立運作(standalone)的studio、以及依附於eclipse的studio。

筆者撰寫java程式習慣用netbeans IDE,因此沒有採用eclipse外掛的方式,而是使用standalone啟動的方式;需注意x86_64的平台上無法提供standalone的啟動方式,請注意。

首先請先到下載頁面選擇你的平台(Linux)以及啟動模式(standalone)。 第二,請複製並以root執行以下的script(跟Aptana_Studio_Setup_Linux_1.2.5.zip位於同一目錄下):

#!/bin/bash
cat <<TAG
##############################################

Aptana automatically installation script.
For Debian/Debian-like linux only.
Created by Jim T. Tang (maxsolar@Taiwan)
Installing required packages for Aptana Studio!

##############################################
TAG
aptitude install xulrunner sun-java6-jdk sun-java6-plugin sun-java6-fonts -y &&
cp Aptana_Studio_Setup_Linux_1.2.5.zip /opt/
cd /opt
unzip Aptana_Studio_Setup_Linux_1.2.5.zip
cat <<TAB
##############################################
Setting environmental variables....
##############################################
TAB
echo -e "#!/bin/bash\nexport
MOZILLA_FIVE_HOME=/usr/lib/xulrunner\n/opt/aptana/AptanaStudio" > /usr/bin/Aptana
chmod +x /usr/bin/Aptana

cat <<TAA
#############################################
Installing icons for Aptana Studio
#############################################
TAA

ln -s /opt/aptana/plugins/com.aptana.ide.syncing_1.2.5.023247/icons/aptana_dialog_tag.png /usr/share/pixmaps/aptana.png
cat <<TBB
#############################################
creating gnome desktop integration for aptana...
#############################################
TBB
echo '[Desktop Entry]' > /usr/share/applications/aptana.desktop
echo 'Name=Aptana Studio' >> /usr/share/applications/aptana.desktop
echo 'Encoding=UTF-8' >> /usr/share/applications/aptana.desktop
echo 'Comment=Create Web Pages' >> /usr/share/applications/aptana.desktop
echo 'Exec=/usr/bin/Aptana %u' >> /usr/share/applications/aptana.desktop
echo 'Terminal=false' >> /usr/share/applications/aptana.desktop
echo 'Type=Application' >> /usr/share/applications/aptana.desktop
echo 'Icon=aptana.png' >> /usr/share/applications/aptana.desktop
echo 'Categories=Network' >> /usr/share/applications/aptana.desktop
rm /opt/Aptana_Studio_Setup_Linux_1.2.5.zip
cat <<TAGS
###############################################
Aptana Studio is already installed!
You can enter 'Aptana' to execute Aptana Studio,
or find aptana in Applications->Internet.
###############################################
TAGS

exit 0

如此一來便可以輕鬆的在debian-like上的機器快樂的運行了!如果你的設定上還是有問題,你可以參考Installing Aptana Instruction;如果需要更詳細的資訊,你可以參考Online Help

aptana studio的預覽是真實的讀取瀏覽器的引擎,真實的呈顯顯示結果。
可以打開或關閉tag,真的達到了ide的功能,關閉tag的功能連coda都沒有呢!
可以自動幫你補齊標籤,顯示可用的參數等等,真的是強大到令人感動!
如果你有一個以上的瀏覽器,他還會允許你透過不同瀏覽器的引擎去顯示預覽,對於需要各種瀏覽器都友善的網頁而言,這實在是很方便的工具,你可以到Window-> Preference-> General-> Web Browser裡面去設定他。
不過,他真的沒有WYSIWYG的功能,我想這是蠻令人失望的;不過我覺得這樣也很不錯,開放原始碼的世界裡有這麼令人驚艷的產品,已經超令我感動的了!我目前顢頇學步的策略是不知道語法的時候利用kompozer解決;要練功時會回到aptana來,這是我的學習方式,如果您有更好的寶貴意見或經驗,請拜託拜託不吝與筆者分享!謝謝!
一段介紹aptana studio的影片。更多關於aptana的影片教學,請參考aptana TV。 關鍵字:web editor, IDE, linux

2009年3月27日 星期五

以samba建立小型檔案共享環境

samba是與其他非unix作業系統共享資源最直接的方式,配置他的方式也非常簡單。本文主要目的是為了建置小型工作站的檔案共享環境所寫的筆記,內容包含如何安裝、配置及管理samba伺服器,掛載linux或windows所分享的filesystem。

需求:

每個使用者可以存取自己的家目錄,其他使用者連瀏覽的權限也沒有。
一個可以匿名讀寫的目錄。
一個唯讀的目錄。

一、安裝所需的套件:

aptitude install samba swat smbfs smbclient xinetd -y
其中xinetd是為了使用swat而安裝的,如果你沒有圖形化配置samba的需求,可以省去swat跟xinetd這兩個套件。安裝完成會有以下訊息:
--------- IMPORTANT INFORMATION FOR XINETD USERS ----------
The following line will be added to your /etc/inetd.conf file:

swat\t\tstream\ttcp\tnowait.400\troot\t/usr/sbin/tcpd\t/usr/sbin/swat

If you are indeed using xinetd, you will have to convert the
above into /etc/xinetd.conf format, and add it manually. See
/usr/share/doc/xinetd/README.Debian for more information.
Suggested entry (automatically converted using itox):

service swatttstreamttcptnowait.400troott
{
type            = RPC
rpc_version     = usr/sbin/tcpdt/usr/sbin/swat
Line 1: socket type missing
-----------------------------------------------------------
我們先記錄下來,等一下再來處理他。
規劃上:
/home/username   每個使用者需透過認證存取家目錄。
/opt/share_only    匿名使用者也可以瀏覽,屬性唯讀。
/opt/upload_free   匿名使用者可以有讀取權限。

二、samba配置:

samba主要設定檔是在/etc/samba/smb.conf。大致上可以看到兩個主要的區塊: [global]區塊 跟整個samba設定環境有關。 [global]以外區塊 跟個別資料夾分享的詳細設定有關。
重要的[global]如下:
workgroup = windowsrshit
#宣告這台samba的工作群組
server string = Debian server
#別人從網芳看到的註解名稱,可寫可不寫。
security = user
#security參數非常重要,如果設定成share,則是最寬鬆的設定權限,可以允許匿名使用者進入;如果是要供本機使用者密碼認證登入,請改成user。
netbios name = homedebian
#Windows上的主機名稱其實就是netbios name,因此這個名稱可以供windows使用者搜尋到你的機器;不寫也沒關係,你的主機名稱就是你的netbios name。
unix charset = utf-8
#unix類的主機以utf-8編碼來顯示samba分享內容。
dos charset=cp950
#windows的機器可以以big5來顯示內容。
hosts allow = 192.168.1.0/255.255.255.0
我設定samba只允許內部網路分享。假設每台linux工作站都要有一個public ip,那麼可以每張網路卡都各捆綁一個private ip來達成此目的。
lanman auth = yes
client lanman auth = yes
#server端跟client端都使用lanman認證。
重要的資料分享區塊如下:
[homes]
comment = Home Directories
#只是註解
browseable = no
#此參數是讓非%S(登入的使用者)在網路上看不到這個資料夾
read only = no
#當然要可以寫入啦
create mask = 0600
directory mask = 0700
#使用者新增檔案,其權限為600;新增目錄其權限為700;無suid/sgid/stick bit設定。
inherit acls = yes
#ACL規則會繼承。如果有設定extend acl的話才有影響,其規則會凌駕上面的mask設定;若沒有acl規則則可以不理會他。
valid users = %S
#允許登入的名單。%S表示目前正在登入的使用者
以上,是完成了在linux主機上所有使用者存取家目錄的設定。我們來建立兩個共享資料夾,一個可以允取匿名存取,一個只允許唯讀。
[share_only]
comment = a share only folder for our lab
public = yes
path = /export/share_only
browseable = yes
#其中的public = yes可以寫成guest ok = yes

[upload_free]
comment = an upload permitted folder for our lab
public = yes
path = /export/upload_free
browseable = yes
writable = yes
write list = @research, @student
#只允許research跟student群組的寫入,其他人仍保持唯讀。
儲存後,請記得samba的權限還是脫離不了filesystem的權限,允許上傳的目錄需要開放其他使用者也能讀寫:
chmod 777 /export/upload_free
建立samba使用者: samba預設的使用者跟系統的使用者是分開的,然而新增samba的使用者必須依賴於/etc/passws裡面有的使用者名稱才行。
smbpasswd -a maxsolar
-a表示新增使用者。往後若欲修改密碼,只要使用smbpasswd maxsolar就可以了。這裡需注意samba密碼跟系統密碼由於安全性因素,並不同步,請注意。如果你有密碼同步的需求,請參考Debian下實現samba密碼與系統密碼同步。 請務必利用testparm來檢查我們寫在/etc/samba/smb.conf的語法是否有錯,並且確定samba服務是不是同時有跑起來:
invoke-rc.d samba restart
你現在可以從windows上存取linux的samba服務。

三、從linux存取samba服務:
圖形介面上,應該已經可以存取windows或是linux所分享的資料了。那麼文字介面如何存取呢?
A.查詢分享中的資料夾:

有時候我們真的很懶,把主機名稱跟ip對應表寫好後,就完全把ip給忘記了;我們又很懶不願意去查ip,該怎麼辦呢?我們可以使用nmblookup:

nmblookup HOSTNAME
你就可以輕易的取得一個ip位置。接下來要查看他分享了哪些資料夾出來,你應該這麼作:
smbclient -L IP_address
會被提示要求輸入你目前使用者的密碼,或是你可以用-U來指定一個使用者
smbclient -U mary -L IP_address
顯示的結果會根據你所輸入的帳號密碼而有不同的結果。
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]

Sharename       Type      Comment
---------         ----         -------
print$          Disk      Printer Drivers
share_only      Disk      a share only folder for our lab
upload_free     Disk      an upload permitted folder for our lab
IPC$            IPC       IPC Service (homedebian server)
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]

Server          Comment
---------            -------
HOMEDEBIAN      homedebian server

Workgroup       Master
---------            -------
WORKGROUP       MOTD945
以此為例,我並沒有輸入我maxsolar的密碼,此時我被當成是guest,因此我也看不見自己所分享出來的[homes]家目錄。但是guest身份可以看到兩個分享的資料夾。你也可以發現此時的MOTD945是wins server。

B.取得一個shell:
smbclient //HOSTNAME/share_only
#以目前身份取得smb的shell
smbclient //IP_address/upload_free -U username
在此shell下的命令跟ftp差不多,可以利用"?"或是help來查詢。

C.掛載網芳或是samba filesystem:
1.手動掛載:
mount -t cifs //HOSTNAME/分享位置 /掛載位置
#這是最基本的語法
mount.cifs -o username=maxsolar,password=mypasswd //HOSTNAME/分享位置 /掛載位置
#這是包含帳號密碼的寫法。這樣明目張膽的把密碼寫在上面實在是很不妥@@,建議寫在fstab裡。
2.開機自動掛載: 在/etc/fatab裡,你可以這樣寫:
//HOSTNAME/分享位置 /掛載位置 cifs defaults 0 0
要搭配帳號密碼的使用,你可以這樣寫:
//HOSTNAME/分享位置 /掛載位置 cifs credential=/密碼設定檔絕對路徑,uid=maxsolar 0 0
密碼檔規格如下:
username=使用者帳號
password=登入密碼
workgroup=所屬群組
掛載後,client端的maxsolar有讀寫權限。

四、以SWAT管理samba daemon: 安裝好swat預設還是不能用,實在不是很便民。我們知道swat服務需要依靠xinetd來啟動,筆者查詢了ubuntu論壇的討論串,把解決的過程分享給大家! swat會在舊版的inetd上面跑,但是現在實在沒人在使用他了!我們應該要把他改寫成xinetd的格式(如同本文最上面的警告訊息): 新增/etc/xinetd.d/swat:

# description: Samba_SWAT
service swat
{
disable = no
socket_type = stream
protocol = tcp
#should use a more limited user here
user = root
wait = no
server = /usr/sbin/swat
}
當然你需要重新啟動xinetd!
invoke-rc.d xinetd restart
你現在可以在瀏覽器上輸入:http://localhost:901 會被提示輸入root的帳號密碼,登入後進去就可以看到非常多可以用的選項了。

後記: swat是英文版的,很多人會望之卻步;他的可用設定多如牛毛,但是我還是建議安裝他。因為他每個設定值都有一個help的連結,他會很詳細的告訴你該參數設定的意義跟效果,我認為學習的效果很好,因此建議大家可以安裝來玩。

2009年3月25日 星期三

OpenOffice.org 3.0.1繁體中文版

安裝3.0.1版的目的是為了解決3.0.0繁體中文版無法使用中文輸入法的困擾。我同時有x86跟amd64的機器,在x86平台上3.0.0繁體中文版使用中文輸入法並沒有問題,但是 amd64的機器當時我為了求有繁體中文選單,因此使用強制安裝把x86的deb安裝上去,所造成的結果就是無法中文輸入。 解決的辦法就是安裝3.0.1版。目前(2009/03/25)並沒有他的繁體中文版,筆者自己測試的結果就是在amd64的機器上不移除原本的3.0.0繁體中文版,直接下載3.0.1英文版來安裝。你可以解壓縮後使用update把他升級成3.0.1。升級完後會發現竟然還是繁體中文的選單耶!!這真是太棒了! 這麼一來,雖然3.0.1並沒有繁體中文版,但是一樣可以透過這個方式取得繁體中文版,同時也解決了中文輸入的問題! rpm的版本尚未有amd64的release,我沒有使用rpm系列的強烈需求,有時間在測試解決的方法囉!也許哪天覺得有時間,amd64的版本就出來羅! 附註:本文中所提的amd64就是x86_64,因為在debian裡的arch分類都稱之為amd64,因此筆者就習慣稱之為amd64,您知道是x86_64即可。

2009年3月23日 星期一

OpenOffice.org3 on Fedora 無選單解決法

許多朋友在安裝官方版的openoffice.org3,發現竟然在選單裡並沒有出現在Office類別裡;反之我的Debian跟ubuntu可是用得輕鬆愉快呢!前幾天裝了一台Fedora 10來當練習機,安裝OOO3也發現了有這個問題;實際上,解開for rpm的壓縮檔,你可以發現其下有update跟setup兩個script。如果是初次安裝,以root身份執行setup就可以解決這個問題;假設您是到RPMS直接手動安裝這些rpm,你才會遇到沒有出現選單的問題。本文就是解決這小問題的教學。 (debian系的安裝方法沒有setup script,直接手動安裝rpm就解決了,反而更乾淨俐落;如果你是debian系列的朋友可以略過此文。) 首先,建議移除fedora所維護的openoffice版本,移除的方法就不贅述了@@;安裝的方法也請參照OpenOffice.org 3.0.0繁體中文版釋出,只是把dpkg -i改成執行setup script就可以了~假設您執行完setup完成安裝動作還是沒有選單,才繼續往下看。 如果您還是繼續看下去,表示您還是沒有出現選單@@ (實在是運氣不好哪!) 首先,我們要知道gnome的選單都是從/usr/share/applications/裡面撈出來的,各位可以發現fedora安裝完OpenOffice.org3之後,在這個目錄裡並沒有他的連結;因此解決的方法就是手動給個連結:
#/bin/bash
OOOLink=/opt/openoffice.org3/share/xdg/
APPLink=/usr/share/applications/
ln -s $OOOLink/* $APPLink/
這時候,你會發現在Office的選單裡出現了七個OpenOfiice的選單!不過可惜的是,好像沒有圖示耶~ 沒關係,我們來分析一下這個連結!
vi /usr/share/applications/writer.desktop
觀察Icon=的欄位,上面是寫openofficeorg3-writer,那麼理論上我們知道openofficeorg3-writer.png放在哪裡,就可以指定位置給他就可以了!
find /usr -name *png | grep openoffice
我們不難發現在fedora裡檔案是openofficeorg-writer.png而非openofficeorg3-writer.png,把writer.desktop裡的icon部份改掉就可以了!
記得每個從/opt/openoffice.org3/share/xdg/連結過去的.desktop都要改正。重新登入看看結果如何!
喵的咧,怎麼列印管理還是沒有圖示呢?原因是這些openoffice圖示是fedora安裝時就在系統裡面的,我們只是「借來用」罷了;或許當時並沒有列印管理這個圖示,或是沒有這個功能,使得系統裡並沒有相對應的圖示給他。那麼好吧,我們隨便指定一個名字給printeradmin.desktop,圖示裡還有一個stock_openoffice.png,我們就拿他來用吧!
重新登入看看!
總算有一個像樣一點的選單跟圖示了!
不過,fedora的OOO圖示實在是非常的醜,如果你真的很不喜歡這個圖示,你可以去找找看別的地方有沒有好看一點的圖示來填補,改變圖示的方法本文已經很清楚了,剩下的就看自己的需求囉!

2009年3月20日 星期五

聽歌學英語--Tell me why

這是一首悲傷的歌,由一個當時十歲的小男孩唱的;唱出這個世界的夢想,道出現實與夢想的天差地別... In my dream children sing a song of love for every boy and girl 在我夢裡,孩子們唱著男孩女孩愛的歌曲 The sky is blue and fields are green and laughter is the language of the world 天是藍的,草原是綠的,微笑是世界共同的語言 Then I wake and all I see is a world full of people in need 但是當我醒來,卻發現這世界充滿著需要幫助的人們 Tell me why (why) does it have to be like this? 告訴我為什麼?世界一定要是這樣嗎? Tell me why (why) is there something I have missed? 告訴我為什麼?我錯過了什麼東西? Tell me why (why) cos I don't understand. 告訴我為什麼?因為我真的不懂 When so many need somebody we don't give a helping hand. (不會翻@@)當那麼多人有需要時,我們卻無法伸出援手 Tell me why? Everyday I ask myself what will I have to do to be a man? 每天我問我自己,我要作些什麼才能成為一個人 Do I have to stand and fight to prove to everybody who I am? 我難道必須要以武力跟衝突來證明我是誰嗎? Is that what my life is for to waste in a world full of war? 難道我的生命就要浪費在這充滿戰亂的世界裡? Tell me why (why) does it have to be like this? Tell me why (why) is there something I have missed? Tell me why (why) cos I don't understand. When so many need somebody we don't give a helping hand. Tell me why? Can someone tell us why we let the forest burn? 誰能告訴我,為何我們任由森林被燒毀? Can some one tell us why we let the ocean die ? 誰能告訴我,為何我們任由海洋枯竭? Can some one tell us why we cannot just be friends? 誰能告訴我,為何我們不能成為朋友?

Pantene--你也能發光發熱

這是一部泰國短片,描述一個音啞女孩被他的親姊姊欺負,受到眾人歧視的目光,卻依然能夠在音樂的洗禮下自立不強; 在街頭藝人的鼓舞下,他閉上眼睛,用心感受小提琴的旋律(她聽不到,所以無法學習說話),感受到音樂在她體內的流動而找到自己;他的姊姊無法坐視妹妹可以這樣學音樂,還流氓摔壞她的小提琴,把街頭藝人打成重傷。在音樂發表會上,姊姊壓軸的鋼琴演出雖然博得了全場的喝采,不過後來妹妹用生命演奏出的卡農才是真正的感動了全場! 結論: 1.生命就是永不放棄自己追求的目標! 2.泰國女生原來這麼漂亮...

批次修改圖片大小

工作上,需要把很多照片放到網站上去,不過攝影師負責拍到照片,卻不負責幫我們把照片解析度變小,實在是不體貼網站管理員的辛勞@﹍@

所以,本文介紹文字跟圖形介面修改圖片解析度的方法。

1.利用convert指令:

使用gthumb一張一張把圖片解析度降低實在是太辛苦了,我想起了從前在自訂grub splashimage時所使用的convert指令!他是從imagemagick來的,請看看你有沒有安裝:

which convert || sudo aptitude install imagemagick
你可以使用convert來轉換解析度或是改變quality:
convert abc.jpg -resize 800x600 abc_new.jpg
把原本的abc.jpg轉成800x600並另存為abc_new.jpg。你也可以改變畫質:
convert def.jpg -quality 50 def_new.jpg
把原本的def.jpg畫質降到50%並另存為def_new.jpg
convert prs.ps -rotate 90 prs.png
把原本的ps檔順時針旋轉90度後另存成png檔。

不過除非照片的長x寬都是一樣的,否則轉換一個直立的圖檔還轉成800x600就會變得很奇怪;我暫時沒時間把他寫成shell script,因為我找到了圖形可以解決的工具@@

2.利用digiKam批次轉換圖片:

digiKam是KDE的東西,這對我來說是很陌生的;KDE給我的感覺是又巨大又複雜!安裝digiKam也會連konqueror跟其他東西起裝進去,所以大約要下載60多MB的大小;在debian下一樣很容易安裝:

aptitude install digikam
Fig 1.很可愛的企鵝哩!我想他應該是類似f-spot的相片管理程式吧?
Fig 2. digiKam預設會從家目錄下的Pictures去撈資料夾,你的照片要放在Pictures下的資料夾,而不是直接放在Picutres下喔!選擇好照片後,點選batch,你可以選擇recompress或是resize。本文demo的是變更解析度的方法,因此我選resize。
Fig 3. 請在左上角Image Resizing Options: type的地方選擇Non-propotional,並點選Options。
Fig 4. 可以調整欲轉換的解析度。
Fig 5. 開始批次轉換!
Fig 6. 轉換後,圖片檔名多加一段文字當結尾,他也可以選擇複寫原本的檔案不保留,不過不建議就是了,確定後在刪除原檔,多一步比較保險~

Bryan手札-生活記趣裡展示的是直接變更quality的方法,可以跟我變更解析度的方法作比較看看哪一個比較適合當時的狀況;給各位參考,也是給自己的筆記。

2009年3月18日 星期三

IP定址與VLSM簡易筆記

一、IP定址
Class A(1~126)
0xxxxxxx.host.host.host
7network bits的變化,使得此等級應有27=128network
然而TCP/IP協定又保留整個127作為loopback使用,因此整個Class A1~126
此等級的私有ip為整個10.網段,即10.0.0.0~10.255.255.255
Class B(128~191)
10xxxxxx.network.host.host
6+8network bits的變化,使得此等級應有214=16384network
dhcp請求失敗會回傳169.254.X.X的位置。
此等級的私有ip172.16.0.0~172.31.255.255
Class C(192~223)
110xxxxx.network.network.host
5+16network bits的變化,使得此等級應有221=2097152network
此等級的私有ip192.168.0.0~192.168.255.255
Class D(224~239)
1110xxxx.network.network.network
此級網路作為多點傳播(multicast)用,不能作為來源端位置,在routing protocol時常會用到。例如:RIP會用到224.0.0.9OSPF會用到224.0.0.5/6EIGRP會用到224.0.0.10
Class E(240~255)
11110xxx.network.network.network
此級網路作為研究用途,我們無法使用DE等級的網路位置。
二、子網路切割
1.為何要切割子網路?
* 減少網路交通(增加collision domain;或是切割broadcast domain)
* 最佳化網路效能
* 簡化管理
2.熟記2的次方
27
26
25
24
23
22
21
20
128
64
32
16
8
4
2
1
上表用於速記主機數量。假設network向host借了3個bits,host剩下5個bits變化,也就是每32個hosts跳一個網段。
為了更快解決子網路遮罩的計算,更應該速記向host借位元當子網路時的mask值。
nbits
1
2
3
4
5
6
遮罩值
128
192
224
240
248
252
最多就只能借6個。借了七個只剩下全為0跟全為1的位置,都不能當主機可用的ip
熟記上表是我快速心算切割子網路的方法。在網路的領域裡經常使用CIDR(Classless Inter-Domain Routing)來表示子網路遮罩,例如255.0.0.0就是/8255.255.255.224就是/27。可以參考上圖,224就是跟networkhost借了3bits來當子網路,對於一個class C來說,255.255.255.0是大家所熟悉的,表示成/24;借了3bits就變成/27
三、VLSM(變動長度的子網路遮罩)
切割子網路,分配合適的ip數量給各網段是網管人員最基本的能力。分配一個子網路,除了要扣除全為0(network id)跟全為1(broadcast)之外,還必需要很清楚的知道每個網段的範圍。切割子網路可以是最簡單的分法—每個子網路有相同的subnet mask;或是真實的企業應用,變動子網路遮罩(VLSM)的分法。
無論怎麼分,我們都必須問自己幾件事情:
1.客戶端需要幾個網段?
2.各個網段又需要多少ip
知道客戶端的要求後,就可以開始回答幾個問題:
1.要切成幾個子網路?每個子網路的network id為何?
2.每個子網路有多少可用ip
3.可用的ip範圍?
範例1:
假設各網段子網路遮罩都相同,則192.168.10.10/25這個位置,是:
1.共切了幾個網段?
2.落在哪一個network id裡?
3.該網段共有多少可用的ip
4.該網段的廣播位置為何?
/25表示ip的第4bytenetwork借走了1bit,因此有212個網段。
變化位置落在第四個byte,因此兩個network id192.168.10.0192.168.10.128,題目的ip位置落在192.168.10.0上。
可用ip就是主機數目減2(去頭去尾)的結果。27-2ip=126ip可用。
廣播位置就是下一個網段的ip1,即192.168.10.127
範例2:
假設各網段子網路遮罩都相同,則122.168.35.10/19這個位置,是:
1.共切了幾個網段?
2.落在哪一個network id裡?
3.該網段共有多少可用的ip
4.該網段的廣播位置為何?
/19表示跟host借了3bits作子網路,因此會產生23=8個網段。
變化位置落在第三個byte,每個網段的變化值為32,為122.168.0.0, 32.0, 64.0, 96.0, 128.0, 160.0, 192.0, 224.0,落在122.168.32.0網段裡。
可用ip就是232-2=230= 8092,再去頭去尾=8090個。
廣播位置就是122.168.63.255,且該網段第一個可用ip122.168.31.254,最後一個可用的為122.168.63.254
範例3:
假設某公司有三個部門,提供網管人員198.162.10.0/25分配使用。A部門需要有58ipB部門需要16個,C部門需要29ip,三個部門需要隸屬不同網段,請問如何分配?
這個例子就是每個網段有不同的遮罩為了不讓ip使用重複,我們必須先分配ip數量多的,最後才分配少的。
第一個分配58ip,那麼host至少必須有26個變化,因此必須向host再借一個bitMask變為255.255.255.192(/26),每次host id跳了64,因此第一個網段為198.168.10.0/26,下一個網段為198.162.10.64/26
可用ip64-2=62個。
廣播位置:198.162.10.63,該網段可用ip198.162.10.1~62
第二個分配 29ip, 那麼host至少必須有25個變化,因此必須向host再借一個bitMask變為255.255.255.224(/27),每次host id跳了32,因此第一個網段為198.162.10.64/27,下一個網段為198.162.10.96/27
可用ip32-2=30個。
廣播位置:198.162.10.95,該網段可用ip198.162.10.65~94
第三個分配 16ip, 那麼host至少必須有25(千萬別認為是24)變化,因此直接使用下一個網段即可!Mask沒有變化:255.255.255.224(/27),每次host id跳了32,因此第一個網段為198.162.10.96/27,下一個網段為198.162.10.128/27
可用ip32-2=30個。
廣播位置:198.162.10.127,該網段可用ip198.162.10.97~126

2009年3月17日 星期二

學習網頁程式設計--learning web design

我想接觸資訊領域,還真的是什麼都要會一點;有時候,會一點點還不夠,必須要有能力做出一點東西才行。以我自己慘痛的經驗是,系統管理的東西會,但僅限於linux;解決網路問題有,但是缺乏實做經驗;寫簡單的程式也ok,不過限於java跟bash shell script;web design會一點,而且僅限於html+php;資料庫也會一點點,不過也只會搭配php/jsp作很簡單的事情...這就是最悲慘的情況,什麼都會一點點,其實跟什麼都不會差別不大。 所以囉,因為工作上的需要,我需要增加自己html的能力,而且要會使用javascript;我這把年紀真的沒時間再買書來看了,買了最後就變成溫室效應的推手,變成一堆充滿知識的垃圾磚!好險我發現有一個非常棒的教學網站,他可以從頭到尾的教學,內容從html的tag, frame, layout, CSS等等都教學得巨細靡遺!他就是w3schools.com! 有興趣的朋友可以一起到這個網站學習!我也會努力學習!

2009年3月11日 星期三

Linux下的心智圖軟體

有時候,我們要把自己的想法邏輯且條理的展示出來,這時需要一個能夠描繪出自己思想的軟體,稱為心智地圖(mindmap)。在windows底下有很多很棒的軟體可以達成,甚至透過繪製流程圖的軟體也能達成;在linux底下筆者簡單介紹三個免費的心智圖軟體給各位參考。

1.MinDemo (官方網站:http://www.mindomo.com/) 這是一個web based的使用方式,透過flash的互動,使用者可以線上使用。註冊後的使用者可以免費使用數個心智圖(詳細數目不清楚),如果想要有無限制的使用次數則需要付費。

2.Xebece (官方網站:http://xebece.sourceforge.net/index) 這是一個純java寫成的軟體,繪製過程動感十足;使用者比需要安裝jre才能夠順利啟動。你可以在SourceForge下載得到。由於是java的關係,你根本不需要安裝就可以直接使用;將下載下來的壓縮檔解開:

tar zxvf xebece-1.0.3.tar.gz
cd xebece-1.0/dist
java -jar xebece.jar
就可以啟動Xebece。假設你忘記安裝java怎麼辦呢?也來裝一下吧!
aptitude install sun-java6-jre -y
Xebece所繪製出來的心智圖。

不過,筆者認為xebece的缺點是雖然拖拉每個節點的位置很容易,可以他也無法固定節點位置,每次畫完之後改變焦點就會跑回原本預設的拓樸,加上有沒有中文環境,我想我是不太會考慮選擇他的。字型也無法改變顏色,有許多不方便的地方,待各位看官自己去體驗。不過好處是如果您懂得java的話,您可以嘗試自己修改他的原始碼,有附在tarball裡面喔!

3.FreeMind(官方網站:http://freemind.sourceforge.net/wiki/index.php/Main_Page) Freemind是最popular的心智圖軟體了,你可以直接在debian sid裡面安裝他:

aptitude install freemind
Freemind也是要靠jre才能啟動的喔!啟動後,我們先把他換成中文環境吧!
在environment裡設定語言為中文,重新開啟他就會是中文環境。

繪製出來的網站地圖。

假設各位看官已經自己嚐試過使用freemind或是xebece,你很可能會懷疑為什麼你輸入中文卻無法顯示中文字。請各位再作一個小步驟!假設你是安裝sun-jav-6-jre的話:

mkdir /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback
cd /usr/lib/jvm/java-6-sun/jre/lib/fonts/
cp 某一個你喜歡的中文字型.ttf fallback
再開啟freemind或是xebece就可以打出中文字了!其實在linux底下的中文版的netbeans也是會有中文顯示不出來的問題,也可以透過這個小方法解決!

整體而言,freemind真的是比較便利且自訂性高的小程式!
你還可以透過下面的flash教學來學習freemind:
http://163.20.160.21/xoops22/t167/FreeMind/list.htm

網友雪兒熱心得提供了另一套心智圖軟體:XMind;我測試的結果還真的很不賴呢!
4.Xmind (官方網站:http://www.xmind.net/ ) 真開心Xmind官方網站上不但提供了deb檔,還提供了win32、i386、x86_64、MacOS等各種不同平台的版本喔!真難得只提供deb沒有rpm,讓我這debian user心理稍微平衡一點!

Fig 1.千辛萬苦做出來的一張圖。為何說千辛萬苦呢?因為我必須每新增一個節點就儲存一次,畫這張圖並不複雜,但這過程Xmind約自重開了20多次吧!!所以要作一張很重要或很複雜的圖,用Xmind卻對能讓你體驗尿失禁的快感~

Fig 2.優點是,他真的能提供遠比freemind更多的表現形式。上圖為"魚骨頭"的形式。
Fig 3.這是一個整體而言向下伸展的邏輯圖,類似我們看檔案系統階層的表現方式;每個子節點也可以靈活變化出自己的表現方式,是非常方便的一個軟體;他的圖示也豐富多了!

你必須要註冊一個XMind id,之後你便可以下載各種平台的版本,並且跟大家分享你的創作(假如你願意的話)。XMind非常漂亮、且有非常棒的themes可以供使用者使用;不過他實在是太不穩定了,經常我畫圖畫到一半就自動消失,剛剛的心血全無,經常要把我自己搞到神經兮兮每做完一個node就要趕緊存檔;參考Meme -- 教學與反省這兩篇文章:
http://edumeme.blogspot.com/2008/11/xmind-freemind.html
http://edumeme.blogspot.com/2008/11/xmind.html
在win32平台上似乎是會整個當掉,可見情況比整個消失好不到哪裡去!我想如果Xmind不要如此的不穩定,他確實是一套非常優秀且易用的心智圖軟體;他的不穩定性使一般使用者完全不會去考慮使用他,我想除非有人願意提供心力修改他的原始碼,否則近期內用xmind的人應該不多囉!

XMind的影片教學

小結論:目前為止,以穩度跟使用介面而言,freemind仍然是我的第一首選!不過如果電腦效能較好或是非常重要的心智圖,我還是會使用XMind!

在linux上安裝HP雷射印表機

今天在辦公室想要安裝HP 2600N的彩色印表機driver在我愛的debian上,我想用土法煉鋼:

http://localhost:631
無論怎麼新增,就是沒有2600系列的型號;安裝了system-config-printer之後,還是沒辦法順利的安裝這個型號,更悲慘的是沒有ppd可以用!2600N這行的網路印表機是使用bonjour協定,client端上可能要裝zeroconf這類的套件來支援這個協定;我不想增加工時來做這些事情,linux的使用者對於這些硬體廠商的忍讓已經夠多了!在linux上安裝hp 2600N的印表機,你可以到openprinting.org裡找到foo2hp,不過其他型號的印表機該怎麼辦呢?

我決定相信一間有自己的unix系統的廠商,應該會對於linux友善一點!

很開心我的期望是真的!

這是一個在linux下安裝所有HP印表機的解決方案,使用者可以到HP Linux imaging and Printing的網頁下載一個通用的安裝程式。這個頁面所下載的.run檔有時是錯誤的,請下載hplip-3.9.8.run,這個才是正確的連結(約19M)。頁面裡有非常詳細,完全的step-bt-step教學,他可以自動偵測你的linux發行版本,自動偵測相依性問題並且視作業系統的不同,自動的使用apt-get或是yum來安裝所需的套件。當然使用到apt-get或是yum, zypper這類的指令是需要root身份的,這個script很貼心的會向你要求輸入root密碼來繼續安裝。

安裝的過程簡直是下一步下一步就解決,之後會出現HP device manager:

親切的印表機管理介面
可以自動尋找所有在線上的HP印表機。

Debian下如果你遇到"cups-image"這個相異性未解決的問題,不用緊張;請安裝:

aptitude install libcupsimage2-dev
然後載重新執行一次run檔,就可以順利安裝了唷!

我不知道gentoo、knoppix等linux distributions是不是一樣可以無痛安裝,但是至少大部份你所使用的linux(Debian/Ubuntu/Fedora/RH/CentOS/SuSE)的使用都是成功的。反觀epson的印表機,在linux上安裝起來不是那麼友善;現在工作環境裡的linux系統越來越多,能夠率先支援linux的廠商就越能讓使用者感到友善,我想這就是商機!

萬一你的不是HP系列的印表機,但是想在lnux安裝驅動程式開如何作呢?首先請安裝一個便利的印表機管理程式:

aptitude install system-config-printer
以系統管理員身份開啟他後,新增一個印表機,會自動去搜尋現有的印表機,無論是連接至本機的、分享出來的或是網路印表機;萬一他還是沒有的話,請找找光碟片裡面是否有ppd檔。如果有ppd檔,我們就可以透過手動的方式把他安裝起來:
沒有找到正確的型號跟ip對應,我們只好自己指定ip。 請輸入ldp://url_of_printer/auto
選擇自己提供ppd檔來啟用這個印表機。
我想這樣應該可以解決大部分分享印表機的問題。如果你想要作列印伺服器,可以搭配samba一起使用喔!

2009年3月9日 星期一

NXserver遠端桌面

大概是我的技術太拙劣外加沒耐心,我真的覺得vnc不是很適合我,無論如何設定調整,遠端桌面永遠都是空的,只留下一個終端機給我用,連退出或中斷連線的選項都沒有...後來搜尋了許多文章,我認為nxserver確實是我所用過安裝最容易、設定最簡單的遠端桌面軟體。除了有win32、linux版本,甚至還有solaris sparc的版本!也跟RealVNC一樣,有給一些free的版本,本文簡單展示一下使用的screenshot!

首先到NoMachine的官方網站下載合適的版本。假設你的linux只要作client就好,那麼請下載nxclient就可以了;假設你的linux需要當server,那麼你就需要下載nxclient, nxnode以及nxserver這三者來安裝。

原則上你不需要什麼設定,他會使用系統的帳號密碼作為帳號密碼;他並沒有多開什麼port,因為他是走ssh的,因此非常安全,就跟你使用ssh是一樣的。安裝好就等於設定好了,別懷疑,他真的很安全也很簡單。假設你在本機跟遠端都裝好了之後,你可以從Applications->Internet裡面找到他,選擇NX client for Linux:

Fig 1.第一次使用時會啟動NX connection Wizard。
Fig 2.自訂一個名稱(Session name)以及主機名稱(Host)。host裡可以輸入FQDN,當然也可以是登記在/etc/hosts裡的主機,或是ip。另外可以依你的網路環境來調整桌面的色彩以提高速度。
Fig 3.選擇遠端的桌面環境。
Fig 4.我討厭桌面一堆捷徑@@,所以把桌面捷徑給取消了!
Fig 5.這個就是調整此session進階設定的方塊,假設你有其他需求可以調整。
Fig 6.session設定好之後,就準備輸入密碼吧!
Fig 7.開始連線!
Fig 8.遠端桌面!這真是很棒喔!而且遠端桌面會隨著你改變視窗大小而改變大小!沒話說,真的超酷的!到目前為只對我而言,唯一的缺點就是...沒有輸入法!!!

還好網路上有許多高手願意率先嘗試。筆者參考了阿呆大大的blog新NX 使用心得之後,解決了輸入法的問題(不過僅限於scim)。
首先新增一個檔案:

vi /etc/NX/bin/gnome.sh
#!/bin/bash

export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE "xim"
exec scim &
/usr/bin/dbus-launch --exit-with-session gnome-session
請務必記得要把GNOME.sh增加x屬性,否則連線時會顯示找不到Gnome環境!

接著修改/usr/NX/etc/node.cfg,找到CommandStartGnome,(大約是最底下的地方)

#CommandStartGnome="/usr/bin/dbus-launch --exit-with-session gnome-session"
CommandStartGnome="/usr/NX/bin/GNOME.sh"

修改後你下次登入遠端主機後,就會出現scim輸入法了。不過我最喜歡的oxim輸入法一直還是無法啟動!如果您有嘗試成功的話,麻煩不吝告訴筆者!但是即使出現了scim的小圖示,我還是無法使用中文輸入法,我也還不知道原因;不過輸入法對我而言不是很重要的事,我就先暫時不管了。

之前我需要買一個KVM才能方便我完全管理兩台主機,現在,我連KVM都可以丟掉了!

參考文章:
阿呆的blog
http://www.nomachine.com/configuration.php