<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9084082</id><updated>2011-08-17T11:05:22.895+08:00</updated><category term='PHP'/><category term='Cryptography'/><category term='Python'/><category term='New Technology'/><category term='TEX'/><category term='Database'/><category term='Linux'/><category term='CentOS'/><category term='C/C++'/><category term='Math'/><category term='FreeBSD'/><category term='Ubuntu'/><category term='Windows'/><category term='NetBSD'/><category term='Java'/><category term='Blog'/><category term='FreeNAS'/><category term='Programming'/><category term='OpenBSD'/><title type='text'>4wei-diary</title><subtitle type='html'>生活就如同手中的那一杯咖啡，有苦澀也有甘美！懂得調配手中那杯咖啡的人，就懂得如何享受生活。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default?start-index=101&amp;max-results=100'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>267</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9084082.post-4493997340806297368</id><published>2010-09-10T15:36:00.002+08:00</published><updated>2010-09-10T16:07:07.576+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><title type='text'>[ FBSD ] Find and delete all Thumbs.db files</title><content type='html'>Windows XP 在瀏覽網芳的開放資料夾時會自動產生圖檔的縮圖暫存檔 Thunbs.db，這個資料夾會因使用者的不同而建立擁有者權限，當使用者想刪除資料夾時就會被拒絕，解決方式如下： &lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. 在 samba 中設定不允許 nt acl &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# vi smb.conf&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;nt acl support = no&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 手動刪除全部的 Thunbs.db&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Unix/Linux 下操作：&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# find /mnt/soft/ -name "Thunbs.db" -exec rm '{}' \;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Windows 下操作：&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;C:\del D:\Thumb.db /f /s /q /a&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # D代表你的硬碟D槽&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4493997340806297368?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4493997340806297368/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4493997340806297368' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4493997340806297368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4493997340806297368'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/09/fbsd-find-and-delete-all-thumbsdb-files.html' title='[ FBSD ] Find and delete all Thumbs.db files'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-666279456440810659</id><published>2010-09-07T14:48:00.001+08:00</published><updated>2010-09-07T14:53:58.657+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><title type='text'>[ FBSD ] FreeNAS mount WinXP folder by mount_smbfs</title><content type='html'>將 Windows XP上網芳協定所分享出來的資料夾掛載到 FreeBSD/FreeNAS 中，而要如何將它自動掛載起來？其設定方式如下：&lt;br /&gt;&lt;b&gt;&lt;br /&gt;(1) Windows XP 端&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在使用者管理內新增一個測試使用者 USERA 密碼相同，同時將分享的資料夾 D:\Share 設定給 USERA 這個使用者，USERA擁有可讀寫的權限(WinXP資料夾設定預設為簡易，在資料夾選項&amp;gt;檢視中可勾選掉使用簡易檔案共用)。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(2) FreeBSD/FreeNAS 端&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkdir /mnt/win&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立一個欲掛載使用的資料夾取名為 win&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #0b5394;"&gt;# vi /etc/nsmb.conf&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 編寫自動掛載資訊用於主要是除去互動式密碼輸入&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;[default]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;workgroup=WORKGROUP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;[SERVER-NAME]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;addr=10.10.10.6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;[SERVER-NAME:USERA]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;password=USERA&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# vi /etc/rc.d/smb_mount&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; 編寫開機執行檔，讓開機自動掛載 windows 網芳&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#!/bin/csh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;# 參數：-I 為指定主機名稱或IP、-N 則為不要詢問密碼&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;mount_smbfs -I 10.10.10.6 -N //USERA@SERVER-NAME/Share /mnt/win&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="background-color: white; color: #0b5394;"&gt;# chmod 755 /etc/rc.d/smb_mount&lt;/b&gt;&lt;span style="background-color: white; color: #0b5394;"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 改變為可執行權限&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mount_smbfs -I 10.10.10.6 -N //USERA@SERVER-NAME/Share&amp;nbsp; /mnt/win&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 手動掛載&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;&lt;span style="color: #0b5394;"&gt;# df&lt;/span&gt;&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 查看掛載資訊&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Filesystem&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1K-blocks&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Used&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avail Capacity&amp;nbsp; Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/ad0s1a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1008590&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 94828&amp;nbsp;&amp;nbsp;&amp;nbsp; 833076&amp;nbsp;&amp;nbsp;&amp;nbsp; 10%&amp;nbsp;&amp;nbsp;&amp;nbsp; /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;devfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 100%&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;procfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 100%&amp;nbsp;&amp;nbsp;&amp;nbsp; /proc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;//USERA@SERVER-NAME/SHARE 385977656 226092876 159884780&amp;nbsp;&amp;nbsp;&amp;nbsp; 59%&amp;nbsp;&amp;nbsp;&amp;nbsp; /mnt/win&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# umount&amp;nbsp; //USERA@SERVER-NAME/SHARE&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 手動卸載&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ref:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.unix.com/man-page/FreeBSD/8/mount_smbfs/"&gt;http://www.unix.com/man-page/FreeBSD/8/mount_smbfs/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://static.closedsrc.org/articles/dn-articles/backingUpFreeBSD.html"&gt;http://static.closedsrc.org/articles/dn-articles/backingUpFreeBSD.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-666279456440810659?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/666279456440810659/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=666279456440810659' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/666279456440810659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/666279456440810659'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/09/fbsd-freenas-mount-winxp-folder-by.html' title='[ FBSD ] FreeNAS mount WinXP folder by mount_smbfs'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5013740622733015536</id><published>2010-04-30T12:42:00.001+08:00</published><updated>2010-04-30T15:00:10.984+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Set Up Software RAID1 On CentOS Linux</title><content type='html'>這是在 CentOS Linux上的 SoftRAID 設定方式，比起FreeBSD稍微覆雜些，原系統主硬碟安裝時parttion是沒有使用LVM(Logical Volume Manager)而是直接採用etx3格式，下面紀錄了 SoftRAID1 的安裝過程。&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# fdisk&amp;nbsp; -l&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 查看系統上的磁區，總共兩顆 hda 及 hdb&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&lt;span style="color: red;"&gt;Disk /dev/hda: 20.5 GB&lt;/span&gt;, 20547841536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;255 heads, 63 sectors/track, 2498 cylinders&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda1&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128488+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 17&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 147&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1052257+&amp;nbsp; 82&amp;nbsp; Linux swap / Solaris&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 148&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2498&amp;nbsp;&amp;nbsp;&amp;nbsp; 18884407+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&lt;span style="color: red;"&gt;Disk /dev/hdb: 20.5 GB&lt;/span&gt;, 20547841536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;16 heads, 63 sectors/track, 39813 cylinders&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Units = cylinders of 1008 * 512 = 516096 bytes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# yum install mkinitrd mdadm&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 安裝 softraid 管理軟體&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# modprobe linear&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 載入 raid 的 kernel modules（先別重開機）&lt;br /&gt;&lt;b&gt;&lt;span style="color: #0b5394;"&gt;# modprobe multipath&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="color: #0b5394;"&gt;# modprobe raid0&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="color: #0b5394;"&gt;# modprobe raid1&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="color: #0b5394;"&gt;# modprobe raid5&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="color: #0b5394;"&gt;# modprobe raid6&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="color: #0b5394;"&gt;# modprobe raid10&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# sfdisk -d /dev/hda | sfdisk /dev/hdb --force&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 將第一顆硬碟 hda 的 parttion 複製到 hdb&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# fdisk -l&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看磁區資訊&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Disk /dev/hda: 20.5 GB, 20547841536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;255 heads, 63 sectors/track, 2498 cylinders&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;/dev/hda1&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128488+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;/dev/hda2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 17&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 147&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1052257+&amp;nbsp; 82&amp;nbsp; Linux swap / Solaris&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;/dev/hda3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 148&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2498&amp;nbsp;&amp;nbsp;&amp;nbsp; 18884407+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Disk /dev/hdb: 20.5 GB, 20547841536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;16 heads, 63 sectors/track, 39813 cylinders&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Units = cylinders of 1008 * 512 = 516096 bytes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;/dev/hdb1&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128488+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;/dev/hdb2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 256&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2343&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1052257+&amp;nbsp; 82&amp;nbsp; Linux swap / Solaris&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;/dev/hdb3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2343&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 39812&amp;nbsp;&amp;nbsp;&amp;nbsp; 18884407+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# fdisk /dev/hdb&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 對第二棵硬碟進行parttion規劃&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Command (m for help): &lt;b style="color: #0b5394;"&gt;t&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Partition number (1-4): &lt;b style="color: #0b5394;"&gt;1&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Hex code (type L to list codes): &lt;b style="color: #0b5394;"&gt;fd&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Changed system type of partition 1 to fd (Linux raid autodetect)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Command (m for help): &lt;b style="color: #0b5394;"&gt;t&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Partition number (1-4): &lt;b style="color: #0b5394;"&gt;2&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Hex code (type L to list codes): &lt;b style="color: #0b5394;"&gt;fd&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Changed system type of partition 2 to fd (Linux raid autodetect)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Command (m for help): &lt;b style="color: #0b5394;"&gt;t&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Partition number (1-4): &lt;b style="color: #0b5394;"&gt;3&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Hex code (type L to list codes): &lt;b style="color: #0b5394;"&gt;fd&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Changed system type of partition 3 to fd (Linux raid autodetect)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Command (m for help):&lt;b style="color: #0b5394;"&gt; w&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;The partition table has been altered!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --zero-superblock /dev/hdb1&lt;br /&gt;# mdadm --zero-superblock /dev/hdb2&lt;br /&gt;# mdadm --zero-superblock /dev/hdb3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/hdb1&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/hdb2&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/hdb3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看資訊 hdb 這顆硬碟已經加入 md RAID 中&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md2 : active raid1 hdb3[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18884288 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md1 : active raid1 hdb2[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1052160 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md0 : active raid1 hdb1[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128384 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;unused devices: &lt;none&gt;&lt;/none&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkfs.ext3 /dev/md0&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 格式化&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkfs.ext3 /dev/md2&lt;br /&gt;# mkswap /dev/md1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm.conf&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # RAID的文件配置&lt;br /&gt;# cat /etc/mdadm.conf&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看raid設定檔&lt;br /&gt;&lt;span style="color: #741b47;"&gt;ARRAY /dev/md0 level=raid1 num-devices=2 UUID=99f34a09:5928203e:48d5bb08:74e32d59&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;ARRAY /dev/md1 level=raid1 num-devices=2 UUID=1e1f6fdc:c7ccbdf0:ef6ede01:cea22d9e&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;ARRAY /dev/md2 level=raid1 num-devices=2 UUID=c3db9ae6:23891592:55838167:40aa1172&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkdir /mnt/md0&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立資料夾 &lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkdir /mnt/md2&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mount /dev/md0 /mnt/md0&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 掛載 md&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mount /dev/md2 /mnt/md2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mount&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看掛載資訊&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda3 on / type ext3 (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;proc on /proc type proc (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;sysfs on /sys type sysfs (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;devpts on /dev/pts type devpts (rw,gid=5,mode=620)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda1 on /boot type ext3 (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;tmpfs on /dev/shm type tmpfs (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/md0 on /mnt/md0 type ext3 (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/md2 on /mnt/md2 type ext3 (rw)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# vi /etc/fstab&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 編輯&amp;nbsp; fstab 檔&lt;br /&gt;&lt;span style="color: #38761d;"&gt;/dev/md2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;/dev/md0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;tmpfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/shm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmpfs&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;devpts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/pts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; devpts&amp;nbsp; gid=5,mode=620&amp;nbsp; 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;sysfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /sys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sysfs&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;proc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /proc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;/dev/md1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; swap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; swap&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# vi /etc/mtab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 編輯 mtab 檔&lt;br /&gt;&lt;span style="color: #38761d;"&gt;/dev/md2 / ext3 rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;proc /proc proc rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;sysfs /sys sysfs rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;devpts /dev/pts devpts rw,gid=5,mode=620 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;/dev/md0 /boot ext3 rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;tmpfs /dev/shm tmpfs rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#/dev/md0 /mnt/md0 ext3 rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#/dev/md2 /mnt/md2 ext3 rw 0 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# vi /boot/grub/menu.lst&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 在 default=0 之後加入 fallback=1 同時將hd0改hd1以及修改root為/dev/md2&lt;br /&gt;&lt;span style="color: #38761d;"&gt;default=0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;timeout=5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;splashimage=(&lt;span style="color: red;"&gt;hd1&lt;/span&gt;,0)/grub/splash.xpm.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;hiddenmenu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;title CentOS (2.6.18-164.el5)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root (&lt;span style="color: red;"&gt;hd1&lt;/span&gt;,0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kernel /vmlinuz-2.6.18-164.el5 ro root=&lt;span style="color: red;"&gt;/dev/md2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initrd /initrd-2.6.18-164.el5-raid.img&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig&lt;/b&gt;&amp;nbsp; #備份 &lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkinitrd /boot/initrd-`uname -r`.img `uname -r`&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將 Software RAID Module 載入 initrd.img&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cp -dpRx / /mnt/md2&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將第一顆硬碟裡的資料全數複製到第二顆硬碟&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cd /boot&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cp -dpRx . /mnt/md0&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將第一顆硬碟裡的boot複製到第二顆硬碟&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# grub&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 修改開機設定檔&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; grub&amp;gt;&lt;span style="color: #0b5394;"&gt;root (hd0,0)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; grub&amp;gt;&lt;span style="color: #0b5394;"&gt;setup (hd0)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; grub&amp;gt;&lt;span style="color: #0b5394;"&gt;root (hd1,0)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; grub&amp;gt;&lt;span style="color: #0b5394;"&gt;setup (hd1)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; grub&amp;gt;&lt;span style="color: #0b5394;"&gt;quit&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# quit&lt;br /&gt;# reboot&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# df -h&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;檔案系統&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 容量&amp;nbsp; 已用 可用 已用% 掛載點&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/md2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18G&amp;nbsp; 1.3G&amp;nbsp;&amp;nbsp; 16G&amp;nbsp;&amp;nbsp; 8% /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;/dev/md0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 122M&amp;nbsp;&amp;nbsp; 14M&amp;nbsp; 102M&amp;nbsp; 12% /boot&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;tmpfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 252M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; 252M&amp;nbsp;&amp;nbsp; 0% /dev/shm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Personalities : [raid1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md0 : active raid1 hdb1[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128384 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md1 : active raid1 hdb2[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1052160 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md2 : active raid1 hdb3[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18884288 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# fdisk /dev/hda&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 規劃 parttion 為 fd（Linux raid auto）格式 &lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --add /dev/md0 /dev/hda1&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 新增加 Parttion 到 md 軟體RAID中&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --add /dev/md1 /dev/hda2&lt;br /&gt;# mdadm --add /dev/md2 /dev/hda3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 查看兩個UU表示兩顆硬碟都ok ===&amp;gt; 為同步進度&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Personalities : [raid1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md0 : active raid1 hda1[0] hdb1[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128384 blocks [2/2] [UU]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md1 : active raid1 hda2[2] hdb2[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1052160 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [====&amp;gt;................]&amp;nbsp; recovery = 24.6% (259456/1052160) finish=0.6min speed=21621K/sec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;md2 : active raid1 hda3[2] hdb3[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18884288 blocks [2/1] [_U]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resync=DELAYED&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;unused devices: &lt;none&gt;&lt;/none&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# watch cat /proc/mdstat&lt;/b&gt;&amp;nbsp; # 即時查看同步進度&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# vi /boot/grub/menu.lst&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 修改 menu.lst 增加一筆 hd0&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;default=0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;fallback=1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;timeout=5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;splashimage=(hd1,0)/grub/splash.xpm.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;hiddenmenu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;title CentOS (2.6.18-164.el5)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root (hd1,0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/md2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initrd /initrd-2.6.18-164.el5.img&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;title CentOS (2.6.18-164.el5)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root (hd0,0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/md2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initrd /initrd-2.6.18-164.el5.img&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #0b5394;"&gt;# mdadm --examine --scan &amp;gt; /etc/mdadm.conf&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 完成同步後再進行第二次掃描建立 mdadm.conf 檔&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 備份&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mkinitrd /boot/initrd-`uname -r`.img `uname -r`&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將 Software RAID Module 載入 initrd.img&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# reboot&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;※ 模擬狀況測試&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. 下指令模擬摘除某個parttion再重新掛回：&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --manage /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 移除第二顆硬碟hdb的第一個parttion&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --add /dev/md0 /dev/hdb1&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 重新加入 hdb1 要下指令 sync&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 觀察是否正在進行 sync 動做&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　&lt;br /&gt;2. 實際關機後摘除其中一顆硬碟，開機一樣可以正常運作，接著再關機重新插回硬碟，開機後執行：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt;&amp;nbsp; # 查看&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --add /dev/md0 /dev/hda1&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 必須手動將 parttion 重新加到 md0&lt;br /&gt;&lt;b&gt;&lt;span style="color: #0b5394;"&gt;# mdadm --add /dev/md1 /dev/hda2&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 必須手動將 parttion 重新加到 md1 &lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --add /dev/md2 /dev/hda3&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 必須手動將 parttion 重新加到 md2 &lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt; # 可看到系統正在進行 sync&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 　&lt;br /&gt;3. 關機後實際摘除其中一顆硬碟(hdb)，以另一顆全新硬碟取代(新硬碟當第二顆)，開機後執行：&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# sfdisk -d /dev/hda | sfdisk /dev/hdb&lt;br /&gt;# mdadm --add /dev/md0 /dev/hdb1&lt;br /&gt;# mdadm --add /dev/md1 /dev/hdb2&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# cat /proc/mdstat&lt;/b&gt;&amp;nbsp; # 靜候 sync 作業完成&lt;br /&gt;&lt;br /&gt;&lt;b&gt;※ 監控管理&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# mdadm --monitor --scan --mail= your-email@address.com&amp;nbsp; /dev/md0 -t -1&lt;/b&gt;　#手動測試監控發信通知&lt;br /&gt;&lt;b style="color: #0b5394;"&gt;# crontab -e&lt;/b&gt;　　# 加入 crontab 每隔一段時間監控發信通知&lt;br /&gt;&lt;span style="color: #38761d;"&gt;*/5&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp; /sbin/mdadm --monitor --scan --mail= your-email@address.com /dev/md0 -1&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ref.&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub-configuration-centos-5.3"&gt;http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub-configuration-centos-5.3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5013740622733015536?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5013740622733015536/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5013740622733015536' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5013740622733015536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5013740622733015536'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/04/los-set-up-software-raid1-on-centos.html' title='[ LOS ] Set Up Software RAID1 On CentOS Linux'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-2955208186782573721</id><published>2010-04-28T16:30:00.001+08:00</published><updated>2010-04-28T17:12:33.065+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Install eGroupware On CentOS Linux</title><content type='html'>這是在 CentOS 5.4 中安裝 eGroupware-1.6.003-2 的過程同時修改甘特圖中文亂碼問題，做個紀錄方便以後有用到可參考。&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# /etc/rc.d/init.d/sendmail stop&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 關閉原本的MTA&lt;br /&gt;&lt;span style="color: purple;"&gt;正在關閉 sm-client:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;正在關閉 sendmail:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# yum -y install postfix dovecot&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 安裝25port及143port的 e-mail 服務&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# vi /etc/postfix/main.cf&amp;nbsp;&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 設定 postfix 主設定檔&lt;br /&gt;&lt;span style="color: #38761d;"&gt;myhostname = mail.ntut.idv.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;myorigin = $myhostname&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;inet_interfaces = all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;mydestination = $myhostname, localhost.$mydomain, localhost, ntut.idv.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;mynetworks = 127.0.0.0/8, 10.88.88.0/24&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;home_mailbox = Maildir/ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# /etc/init.d/postfix start&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 啟動 postfix&lt;br /&gt;&lt;span style="color: purple;"&gt;正在啟動 postfix:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# alternatives --config mta&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 修改主要 MTA&lt;br /&gt;&lt;span style="color: purple;"&gt;有 2 程式提供 'mta'。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;&amp;nbsp; 選擇&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 指令&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;-----------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;*+ 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/sendmail.sendmail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/sendmail.postfix&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;請輸入以保留目前的選擇[+]，或輸入選擇號碼:&lt;/span&gt;&lt;b style="color: blue;"&gt;2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# vi /etc/dovecot.conf&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 開啟 imap 及 pop3&lt;br /&gt;&lt;span style="color: #38761d;"&gt;protocols = imap pop3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;mail_location = maildir:~/Maildir &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# chkconfig postfix on&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 設定開機啟動 postfix&lt;br /&gt;&lt;b style="color: blue;"&gt;# chkconfig dovecot on&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定開機啟動 dovecot&lt;br /&gt;&lt;b style="color: blue;"&gt;# /etc/init.d/dovecot start&lt;/b&gt;&amp;nbsp; # 手動啟動 dovecot&lt;br /&gt;&lt;span style="color: purple;"&gt;正在啟動 Dovecot Imap:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# yum -y install httpd mysql-server php php-mysql php-mbstring php-imap php-gd php-pear cron&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 安裝相關軟體&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# /etc/init.d/mysqld start&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 啟動 mysql-server&lt;br /&gt;&lt;span style="color: purple;"&gt;正在啟動 httpd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# mysql -p&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 建立 mysql DB 和 User&lt;br /&gt;&lt;b&gt;mysql&amp;gt;&lt;/b&gt; &lt;b style="color: blue;"&gt;CREATE DATABASE egroupware;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;Query OK, 1 row affected (0.00 sec)&lt;/span&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;&lt;span style="color: black;"&gt;mysql&amp;gt;&lt;/span&gt; GRANT ALL ON egroupware.* TO egroupware@localhost IDENTIFIED BY 'Password';&lt;/b&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;Query OK, 0 rows affected (0.01 sec)&lt;/span&gt;&lt;br /&gt;&lt;b&gt;mysql&amp;gt;&lt;/b&gt; &lt;b style="color: blue;"&gt;exit&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# /etc/init.d/httpd start&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 啟動 apache&lt;br /&gt;&lt;span style="color: purple;"&gt;正在啟動 httpd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# chkconfig httpd on&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 設定開機自動啟動 httpd&lt;br /&gt;&lt;b style="color: blue;"&gt;# chkconfig mysqld on&amp;nbsp;&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 設定開機自動啟動 mysql&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# cd /var/www/html/&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: blue;"&gt;# wget http://sourceforge.net/projects/egroupware/files/egroupware/eGroupware-1.6.003-2/eGroupware-1.6.003-2.tar.gz/download&lt;/b&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# wget http://sourceforge.net/projects/egroupware/files/egroupware/eGroupware-1.6.003-2/eGroupware-egw-pear-1.6.003-2.tar.gz/download&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 這個套件是FelaMiMail要用的&lt;br /&gt;&lt;b style="color: blue;"&gt;# tar -xzvf eGroupware-1.6.003-2.tar.gz&lt;/b&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# tar -xzvf eGroupware-egw-pear-1.6.003-2.tar.gz&lt;/b&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# chown -R apache:apache egroupware&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# vi /etc/php.ini&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 檢查 php 設定檔&lt;br /&gt;&lt;span style="color: #38761d;"&gt;display_errors = Off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;memory_limit = 32M&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;file_uploads = On&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;mbstring.func_overload = 7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# /etc/init.d/httpd restart&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 重新啟動 apache&lt;br /&gt;&lt;br /&gt;&lt;b&gt;http://10.88.88.88/egroupware/setup/&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 開個瀏覽器開始檢查所缺的軟體&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# pear install Auth_SASL&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 加裝 egroupware 所需要的 pear 套件&lt;br /&gt;&lt;b style="color: blue;"&gt;# pear install Net_IMAP&lt;br /&gt;# pear install Net_Sieve&lt;br /&gt;# pear install channel://pear.php.net/HTTP_WebDAV_Server-1.0.0RC4&lt;br /&gt;# pear install Log&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# mkdir -p /var/lib/egroupware/default/files&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 建立 egroupware 資料 files 目錄&lt;br /&gt;&lt;b style="color: blue;"&gt;# mkdir -p /var/lib/egroupware/default/backup&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 建立 egroupware 資料 backup 目錄&lt;br /&gt;&lt;b style="color: blue;"&gt;# chown -R apache:apache /var/lib/egroupware/default/files&lt;br /&gt;# chown -R apache:apache /var/lib/egroupware/default/backup&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# cd /var/www/html&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 切換到egroupware的相同目錄安裝甘特圖所需套件&lt;br /&gt;&lt;b style="color: blue;"&gt;# wget http://hem.bredband.net/jpgraph2/jpgraph-3.0.7.tar.bz2&lt;/b&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# tar jxvf jpgraph-3.0.7.tar.bz2 /var/www/html/jpgraph&amp;nbsp;&lt;/b&gt; # 將 jpgraph-3.0.7.tar.bz2，解壓縮到 /var/www/html 下&lt;br /&gt;&lt;b style="color: blue;"&gt;# chown -R apache:apache jpgraph&lt;/b&gt;&amp;nbsp; # 更改權限&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# wget http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz&lt;/b&gt;&amp;nbsp; # 下載字型&lt;br /&gt;&lt;b style="color: blue;"&gt;# tar -xzvf fireflysung-1.3.0.tar.gz&lt;/b&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# cd fireflysung&lt;br /&gt;# cp fireflysung.ttf /usr/share/fonts/chinese/TrueType/&lt;br /&gt;# cd /var/www/html/egroupware/projectmanager/inc/ttf-bitstream-vera-1.10&lt;br /&gt;# ln /usr/share/fonts/chinese/TrueType/fireflysung.ttf&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# vi /var/www/html/jpgraph/src/jpgraph_ttf.inc.php&amp;nbsp;&lt;/b&gt; # 修改甘特圖中文亂碼問題&lt;br /&gt;&amp;nbsp; &lt;br /&gt;// 找到下面整段Mark起來&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp; elseif( $aFF === FF_BIG5 ) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( !function_exists('iconv') ) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JpGraphError::RaiseL(25006);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the "--width-iconv" when configured).');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return iconv('BIG5','UTF-8',$aTxt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// 將 bkai00mp.ttf 改 fireflysung.ttf&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//define('CHINESE_TTF_FONT','bkai00mp.ttf');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;define('CHINESE_TTF_FONT','fireflysung.ttf');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;// 將 FF_CHINESE 改成下面樣子&lt;br /&gt;// 原本&lt;br /&gt;&lt;span style="color: #38761d;"&gt;// FF_CHINESE&amp;nbsp; =&amp;gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_NORMAL =&amp;gt;CHINESE_TTF_FONT,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_BOLD =&amp;gt;' ',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_ITALIC =&amp;gt;' ',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_BOLDITALIC =&amp;gt;' ' ),&lt;/span&gt;&lt;br /&gt;// 修改後&lt;br /&gt;&lt;span style="color: #38761d;"&gt;FF_CHINESE&amp;nbsp; =&amp;gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_NORMAL =&amp;gt;CHINESE_TTF_FONT,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_BOLD =&amp;gt;CHINESE_TTF_FONT,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_ITALIC =&amp;gt;CHINESE_TTF_FONT,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FS_BOLDITALIC =&amp;gt;CHINESE_TTF_FONT ),&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# cd /var/www/html/egroupware/projectmanager/inc/&lt;/b&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;# vi class.projectmanager_ganttchart.inc.php&lt;/b&gt;&amp;nbsp; # 修改下面&lt;br /&gt;// 將 gantt_char_encode 這行 Mark 起來&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//if ($this-&amp;gt;gantt_char_encode) $text = preg_replace('/[^\x00-\x7F]/e', '"&amp;amp;#".ord("$0").";"',$text);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;//甘特圖中日期中文亂碼問題解決,將 setlocale() 這行 Mark 起來&lt;br /&gt;&lt;span style="color: #38761d;"&gt;//$graph-&amp;gt;scale-&amp;gt;SetDateLocale(common::setlocale());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;專案管理員 &amp;gt;&amp;gt; 網站設定 &amp;gt;&amp;gt; 字型&amp;gt;&amp;gt;選(chinese(Chinese)) &amp;gt;&amp;gt; 字型字集&amp;gt;&amp;gt;改utf-8&lt;/b&gt;&amp;nbsp; # 更改設定&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ref&lt;/b&gt;&lt;b&gt;︰&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.egroupware.org/%20"&gt;http://www.egroupware.org/ &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ihao.org/dz5/viewthread.php?tid=259"&gt;http://www.ihao.org/dz5/viewthread.php?tid=259&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twpug.net/modules/newbb/viewtopic.php?topic_id=2877"&gt;http://twpug.net/modules/newbb/viewtopic.php?topic_id=2877&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Add︰&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;帳號、密碼有誤時，表示你的 IMAP 與 egroupware 的帳號、密碼不一致，可以到 FelaMiMail 的喜好設定中調整。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. 系統管理 &amp;gt;&amp;gt; emailadmin(編輯)啟用 &amp;gt;&amp;gt; (登出再登入)&lt;br /&gt;2. emailadmin &amp;gt;&amp;gt; 點選 default profile (created by setup) &amp;gt;&amp;gt; 勾選(使用者可以自行定義郵件帳號)後儲存&lt;br /&gt;3. FelaMiMail &amp;gt;&amp;gt; Manage eMail Accounts and Identities&amp;nbsp; &amp;gt;&amp;gt; 新增 &amp;gt;&amp;gt; 填寫IMAP欄位設定即 ok&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-2955208186782573721?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/2955208186782573721/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=2955208186782573721' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2955208186782573721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2955208186782573721'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/04/los-install-egroupware-on-centos-linux.html' title='[ LOS ] Install eGroupware On CentOS Linux'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7373527968690127683</id><published>2010-04-19T16:03:00.006+08:00</published><updated>2010-04-19T16:18:32.578+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] CentOS Update ClamAV Amavisd-new Spamassassin</title><content type='html'>這陣子 Linux 中的 Mail Gateway 遇到這樣的問題︰ (一) ClamAV 0.95 之前的版本無法更新病毒碼，手動將原本的 ClamAV 升級到 0.96同時重建 Virus DB 。(二) amavisd-new 中介軟體中產生大量的暫存檔讓 amavisd 無法正常過濾病毒，造成大量的 Mail 被 Queue 住，解決方式手動砍掉/var/amavis/ tmp下的所有暫存檔接著再升級 amavisd-new 軟體 。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(一)&amp;nbsp; ClamAV&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# cat /var/log/clamav/clamd.log&lt;/b&gt;&amp;nbsp;  # 第一個問題查到本機 clamav 的 log 病毒無法更新&lt;br /&gt;&lt;span style="color: #663366;"&gt;Sat Apr 17 01:05:06 2010 -&amp;gt;  Reading databases from /var/clamav&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Sat Apr 17 01:05:07 2010  -&amp;gt; &lt;span style="color: red;"&gt;ERROR: reload db failed:  Malformed database&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Sat Apr 17 01:05:07 2010 -&amp;gt;  Terminating because of a fatal error.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Sat Apr 17 01:05:07  2010 -&amp;gt; Socket file removed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Sat Apr 17 01:05:07 2010 -&amp;gt;  Pid file removed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Sat Apr 17 01:05:07 2010 -&amp;gt; ---  Stopped at Sat Apr 17 01:05:07 2010&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# rm -rf /var/clamav/*&lt;/b&gt;&amp;nbsp;  # 刪除 Virus DB &lt;br /&gt;&lt;b style="color: #000099;"&gt;#  /etc/init.d/clamd stop&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 暫停  Service&lt;br /&gt;&lt;b style="color: #000099;"&gt;# yum update clamav&amp;nbsp; &lt;/b&gt;# 使用 yum 手動 update clamav&lt;br /&gt;&lt;b style="color: #000099;"&gt;# freshclam&lt;/b&gt;&amp;nbsp;  #&amp;nbsp; 更新 Virus DB&lt;b style="color: #000099;"&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/clamd start&lt;/b&gt; &amp;nbsp;  # 重新啟動 clamav &amp;nbsp; &lt;b style="color: #000099;"&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(二) Amavisd-new / SpamAssassin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# cd /var/amavis/&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 查到第二個問題  amavis 中的 tmp 暫存檔過多3萬8千個導致Mail無法過濾&lt;br /&gt;&lt;b style="color: #000099;"&gt;# ls  -l&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;span style="color: #663366;"&gt;總計 16&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;-rw-r-----&amp;nbsp; 1 amavis amavis&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp; 4月 19 14:53 amavisd.lock&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;-rw-r-----&amp;nbsp; 1 amavis amavis&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp; 4月  19 13:46 amavisd.pid&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;srwxr-x---&amp;nbsp; 1 amavis amavis&amp;nbsp;&amp;nbsp;&amp;nbsp;  0&amp;nbsp; 4月 19 13:46 amavisd.sock&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;drwxr-x---&amp;nbsp; 2 amavis amavis 4096&amp;nbsp; 4月  19 13:46 db&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;drwxr-x--- &lt;span style="color: red;"&gt;38000&lt;/span&gt; amavis amavis 4096&amp;nbsp; 4月 19 14:57 tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;drwxr-x---&amp;nbsp; 2 amavis amavis 4096&amp;nbsp; 7月 19&amp;nbsp; 2009 var&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# rm -rf /var/amavis/tmp/*&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #  手動刪掉 tmp 所有檔案&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/amavisd stop&amp;nbsp;&amp;nbsp; &lt;/b&gt;# 暫停  Service&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/spamassassin stop&amp;nbsp;&amp;nbsp; &lt;/b&gt;# 暫停  Service&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# yum update clamd amavisd-new  spamassassin&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 手動將所有套件升級&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;#  /etc/init.d/clamd start&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 重新啟動 clamav&lt;span style="color: #663366;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Starting Clam AntiVirus  Daemon:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/amavisd start&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;  #  重新啟動 amavisd&lt;span style="color: #663366;"&gt;&lt;/span&gt; 失敗&lt;br /&gt;&lt;span style="color: #663366;"&gt;正在啟動 Mail Virus Scanner  (amavisd):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; &lt;/span&gt;&lt;span style="color: #663366;"&gt;失敗&lt;/span&gt;&lt;span style="color: #663366;"&gt; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# amavisd debug&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 失敗所以用 debug  模式查問題,錯誤訊息說要執行 sa-update&lt;br /&gt;&lt;span style="color: #663366;"&gt;Apr 19 14:38:52.391 ntut.idv.tw  /usr/sbin/amavisd[6795]: (!!)TROUBLE in pre_loop_hook: config: no rules  were found!&amp;nbsp; Do you need to run 'sa-update'?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Suicide () TROUBLE in  pre_loop_hook: config: no rules were found!&amp;nbsp; Do you need to run '&lt;span style="color: red;"&gt;sa-update&lt;/span&gt;'?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# sa-update&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 手動執行 sa-update&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/amavisd start&amp;nbsp;&lt;/b&gt;&amp;nbsp; #  再次啟動 amavisd 成功 !&lt;br /&gt;&lt;span style="color: #663366;"&gt;正在啟動 Mail  Virus Scanner (amavisd):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/spamassassin start&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  #  啟動 spamassassin&lt;br /&gt;&lt;span style="color: #663366;"&gt;正在啟動  spamd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# /etc/init.d/postfix restart&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #  重新啟動 postfix&lt;br /&gt;&lt;span style="color: #663366;"&gt;正在關閉  postfix:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;正在啟動  postfix:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;wbr&gt;&lt;/wbr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# netstat -nat |grep LISTEN&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  #  查看 service 是否啟動&amp;nbsp; port 10024,10025,783,25&lt;br /&gt;&lt;span style="color: #663366;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 127.0.0.1:10024&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0.0.0.0:*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 127.0.0.1:10025&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0.0.0.0:*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 127.0.0.1:783&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0.0.0.0:*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0.0.0.0:25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  0.0.0.0:*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&lt;/span&gt;&lt;span style="color: #663366;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# telnet 127.0.0.1 10024&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #  手動測試&lt;br /&gt;&lt;span style="color: #663366;"&gt;Trying 127.0.0.1...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Connected to ntut.idv.tw  (127.0.0.1).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Escape character is '^]'.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;220 [127.0.0.1] ESMTP amavisd-new  service ready&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;MAIL FROM: &amp;lt; bob@ntut.idv.tw &amp;gt;&lt;jim@ntut.idv.tw&gt;&lt;/jim@ntut.idv.tw&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;250 2.1.0 Sender &lt;jim@ntut.idv.tw&gt;  OK&lt;/jim@ntut.idv.tw&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;RCPT TO: &lt;/b&gt;&lt;b style="color: #000099;"&gt;&amp;lt; tetralet &amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;250 2.1.5 Recipient &lt;tetralet&gt;  OK&lt;/tetralet&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;DATA&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;354 End data with  &lt;cr&gt;&lt;lf&gt;.&lt;cr&gt;&lt;lf&gt;&lt;/lf&gt;&lt;/cr&gt;&lt;/lf&gt;&lt;/cr&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;Subject:Virus Test Pattern&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;&lt;br /&gt;X5O!P%@AP[4\PZX54(P^)7CC)7}$&lt;wbr&gt;&lt;/wbr&gt;EICAR-STANDARD-ANTIVIRUS-TEST-&lt;wbr&gt;&lt;/wbr&gt;FILE!$H+H*&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;.&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;250 2.0.0 Ok, id=06865-01, from MTA([127.0.0.1]:10025): 250  2.0.0 Ok: queued as AEF07A0035&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;quit&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;221 2.0.0 [127.0.0.1] amavisd-new closing  transmission channel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;Connection closed by foreign host.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# amavisd -V&amp;nbsp;&amp;nbsp; &lt;/b&gt;# 查看升級之後軟體的版本&lt;br /&gt;&lt;span style="color: #663366;"&gt;amavisd-new-2.6.4 (20090625)&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# clamd -V&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;ClamAV 0.96/10757/Mon Apr 19 10:29:28 2010&lt;/span&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# spamassassin -V&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;SpamAssassin version 3.3.1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;&amp;nbsp; running on Perl version 5.8.8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #000099;"&gt;# postsuper -r ALL&amp;nbsp;&amp;nbsp; &lt;/b&gt;# 手動強迫送出 Queue 住的 Mail&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7373527968690127683?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7373527968690127683/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7373527968690127683' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7373527968690127683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7373527968690127683'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/04/los-centos-update-clamav-amavisd-new.html' title='[ LOS ] CentOS Update ClamAV Amavisd-new Spamassassin'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1012460333876775495</id><published>2010-03-29T14:13:00.002+08:00</published><updated>2010-03-29T14:19:48.183+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD Soft Raid1 by Gmirror</title><content type='html'>軟體RAID還是硬體RAID好呢？這要端看所使用的地方以及其用途，我個人覺得想省錢的中小企業就蠻適合採用軟體Raid機智，軟體Raid的優點是在於免花錢購買Raid卡也因此就沒有Raid卡掛點的擔優，而硬體Raid卡若掛點恐怕重要資料要救援就麻煩。軟體Raid也有缺點它會損耗CPU的運算資源，因此其效能會比較差些所以比較適合想省錢又不需要高效能的環境。我個人比較偏愛軟體Raid，雖然它犧牲掉一些CPU資源但對系統管理者來說往後的維護也較能自行掌握。FreeBSD 是一套設計相當優良的OS它所納入的軟體Raid相當穩定同時也非常便利使用，下面紀錄了如何在FreeBSD中使用 gmirror 建立軟體Raid 1格式的FreeBSD開機系統。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. 建立第一顆&lt;/b&gt;&lt;b&gt;HD為&lt;/b&gt;&lt;b&gt; Raid-1 mirror 型態&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;※ 安裝完 FreeBSD 後先別重開機按 Alt + F4 便可進入 commend mode 下。&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# csh&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; 接著給個 C SHELL&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# sysctl kern.geom.debugflags=17&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 設 17 才能將 Metadata 寫入 ad0&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;kern.geom.debugflags: 0 -&amp;gt; 17&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror label -v -b round-robin gm0 /dev/ad0&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立 gm0 同時寫入 Metadata&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# echo geom_mirror_load="YES" &amp;gt; /boot/loader.conf&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立開機立即載入 /boot/kernel/geom_mirror.ko&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cp /etc/fstab /etc/fstab.orig&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 備份原本 fstab&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/fstab&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 將所有 ad 改為 gm 同時添加 mirror 修改後如下&lt;br /&gt;&lt;span style="color: #274e13;"&gt;# Device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mountpoint&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FStype&amp;nbsp; Options&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dump&amp;nbsp;&amp;nbsp;&amp;nbsp; Pass#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;/dev/mirror/gm0s1b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; none&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; swap&amp;nbsp;&amp;nbsp;&amp;nbsp; sw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;/dev/mirror/gm0s1a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ufs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;/dev/mirror/gm0s1d&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /home&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ufs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# reboot&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 重開機&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mount&lt;/b&gt;&lt;span style="color: #073763;"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp; # 查看掛載的 HD&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;/dev/mirror/gm0s1a on / (ufs, local)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;devfs on /dev (devfs, local, multilabel)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;/dev/mirror/gm0s1d on /home (ufs, local, soft-updates)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 插入第二顆 HD ad1 到 gm0 中&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror forget gm0&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 忽略 gm0 中沒有連線的實體裝置&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror insert gm0 /dev/ad1&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 將新的硬碟(eg. ad0) 加入 gm0&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror status&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 剛 insert 新硬碟時會顯示 DEGRADED 因為還在同步，同步完成後顯示 COMPLETE&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&amp;nbsp;&amp;nbsp;&amp;nbsp; Status&amp;nbsp; Components&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;mirror/gm0&amp;nbsp; &lt;span style="color: #cc0000;"&gt;DEGRADED&lt;/span&gt;&amp;nbsp; ad0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ad1 (4%)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror list&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ad1 的 Flags: 會 SYNCHRONIZING 一段時間要看硬碟大小決定&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Geom name: gm0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;State: DEGRADED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Components: 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Balance: round-robin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Slice: 4096&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Flags: NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;GenID: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;SyncID: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;ID: 2949628385&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Providers:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;1. Name: mirror/gm0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mediasize: 20546759168 (19G)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Sectorsize: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mode: r4w3e8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Consumers:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;1. Name: ad0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mediasize: 20546759680 (19G)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Sectorsize: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mode: r1w1e1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; State: ACTIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Priority: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Flags: NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; GenID: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; SyncID: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; ID: 2966051479&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;2. Name: ad1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mediasize: 20547841536 (19G)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Sectorsize: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mode: r1w1e1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; State: SYNCHRONIZING&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Priority: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Flags: DIRTY, &lt;span style="color: #cc0000;"&gt;SYNCHRONIZING&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; GenID: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; SyncID: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Synchronized: 67%&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; ID: 2490835271&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 永久移除 gmirror 中的某顆 HD&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;# gmirror remove gm0 ad0　&lt;/span&gt;&lt;/b&gt;　# 移除實體裝置(eg. ad0)&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror status&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 查看狀態&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&amp;nbsp;&amp;nbsp;&amp;nbsp; Status&amp;nbsp; Components&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;mirror/gm0&amp;nbsp; COMPLETE&amp;nbsp; ad1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror list&lt;/b&gt;&amp;nbsp;&amp;nbsp; # gm0 中只剩下 ad1，系統依然持續運作&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Geom name: gm0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;State: COMPLETE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Components: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Balance: round-robin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Slice: 4096&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Flags: NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;GenID: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;SyncID: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;ID: 2949628385&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Providers:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;1. Name: mirror/gm0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mediasize: 20546759168 (19G)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Sectorsize: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mode: r3w3e8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Consumers:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;1. Name: ad1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mediasize: 20547841536 (19G)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Sectorsize: 512&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Mode: r1w1e1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; State: ACTIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Priority: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Flags: DIRTY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; GenID: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; SyncID: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; ID: 2490835271&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. 永久清除某個 gmirror 的設定&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror stop -v gm0&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 停止 gmirror 運作&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# gmirror clear -v ad0 ad1&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 清除實體硬碟上 gmirror 的 Metadata (Metadata 存在硬碟的最後一個 sector , 清除該 gmirror 的設定，而原本在 gmirror 上的資料並不會被消除，還是會存在於ad0跟ad1上面。)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reference:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.freebsd.org/doc/handbook/geom-mirror.html"&gt;http://www.freebsd.org/doc/handbook/geom-mirror.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html"&gt;http://onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1012460333876775495?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1012460333876775495/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1012460333876775495' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1012460333876775495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1012460333876775495'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/03/fbsd-freebsd-soft-raid1-by-gmirror.html' title='[ FBSD ] FreeBSD Soft Raid1 by Gmirror'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5495773329101141640</id><published>2010-03-18T16:56:00.017+08:00</published><updated>2010-03-23T16:22:49.124+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] CentOS Install  Ajax Webmail Roundcube</title><content type='html'>寫下紀錄這是最近所安裝的東西，要如何在 CentOS 5.4 Linux 中安裝 Postfix + Roundcube Ajax Webmail ？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. 安裝 Postfix + Dovecot&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# netstat -nutlp |grep 25&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看原本 25 port 服務預設都是 sendmail&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 127.0.0.1:25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2098/sendmail: acce&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;udp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 fe80::250:4ff:fec3:7d59:123 :::*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2403/ntpd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# service sendmail stop&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;正在關閉 sm-client:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;正在關閉 sendmail:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig sendmail off&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 關閉 sendmail&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig sendmail --list&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看是否關閉&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;sendmail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:關閉&amp;nbsp; 1:關閉&amp;nbsp; 2:關閉&amp;nbsp; 3:關閉&amp;nbsp; 4:關閉&amp;nbsp; 5:關閉&amp;nbsp; 6:關閉&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum -y install postfix&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 安裝另一套 Mail&amp;nbsp; Transfer Agent (MTA)&amp;nbsp; postfix&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/postfix/main.cf&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定 postfix 主設定檔&lt;br /&gt;&lt;span style="color: #274e13;"&gt;myhostname = mail.xxx.com.tw&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定本機的 host name&lt;br /&gt;&lt;span style="color: #274e13;"&gt;mydomain = xxx.com.tw&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 設定 domain 網域&lt;br /&gt;&lt;span style="color: #274e13;"&gt;mynetworks = 10.99.99.0/24, 127.0.0.0/8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定幫忙可 relay 的 hosts&lt;br /&gt;&lt;span style="color: #274e13;"&gt;inet_interfaces = all&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 設定服務 interface&lt;br /&gt;&lt;span style="color: #274e13;"&gt;#inet_interfaces = localhost&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #這一行加上# 號才能對外做 SMTP 服務 &lt;br /&gt;&lt;span style="color: #274e13;"&gt;mydestination = xxx.com.tw&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 設定本機要接收的 mail, 同 sendmail 的 local-host-names&lt;br /&gt;&lt;span style="color: #274e13;"&gt;home_mailbox = Maildir/&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 開啟使用 Maildor 格式&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# postalias hash:/etc/aliases&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立 aliases db&lt;br /&gt;&lt;b style="color: #073763;"&gt;# postmap hash:/etc/postfix/access&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立 access db&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;# alternatives --config mta&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 更改系統 MTA&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;有 2 程式提供 'mta'。&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp; 選擇&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 指令&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;-----------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;*+ 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/sendmail.sendmail&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/sendmail.postfix&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;請輸入以保留目前的選擇[+]，或輸入選擇號碼:&lt;/span&gt;&lt;b style="color: #073763;"&gt; 2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig postfix on&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 設定開機啟動 postfix&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig postfix --list&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看開機啟動 postfix&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;postfix&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:關閉&amp;nbsp; 1:關閉&amp;nbsp; 2:開啟&amp;nbsp; 3:開啟&amp;nbsp; 4:開啟&amp;nbsp; 5:開啟&amp;nbsp; 6:關閉&lt;/div&gt;&lt;b style="color: #073763;"&gt;# service postfix start&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  # 啟動 postfix&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;正在啟動 postfix:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/div&gt;&lt;b style="color: #073763;"&gt;# netstat -ntulp | grep :25&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 再次查看 25 port&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0.0.0.0:25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15949/master&lt;/div&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum -y install dovecot&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 安裝 dovecot&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/dovecot.conf&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定 dovecot&lt;br /&gt;&lt;div style="color: #274e13;"&gt;protocols = imap imaps pop3 pop3s&lt;br /&gt;mail_location = maildir:~/Maildir&lt;br /&gt;pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;# Required on x86_64 kernels&lt;br /&gt;login_process_size = 64&lt;/div&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig dovecot on&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定開機啟動 dovecot&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig dovecot --list&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看開機啟動 dovecot&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;dovecot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:關閉&amp;nbsp; 1:關閉&amp;nbsp; 2:開啟&amp;nbsp; 3:開啟&amp;nbsp; 4:開啟&amp;nbsp; 5:開啟&amp;nbsp; 6:關閉&lt;/div&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# service dovecot start&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 手動啟動 dovecot&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;正在啟動 Dovecot Imap:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/div&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;# netstat -ntulp |grep tcp&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看 dovecot 所開的四個 port&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 :::993&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :::*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16023/dovecot&lt;br /&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 :::995&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :::*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16023/dovecot&lt;br /&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 :::110&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :::*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16023/dovecot&lt;br /&gt;tcp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 :::143&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :::*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16023/dovecot&lt;/div&gt;&lt;b style="color: #073763;"&gt;# mkdir /home/jim/Maildir&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立使者 Maildir 目錄，用以存放 mail&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chown jim.jim /home/jim/Maildir&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 修改擁有者&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 升級 PHP 到 5.2.x 版之後版本&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;※ 這是因為我安裝的roundcube1.3.1版要求的，而原本 CentOS 5.4 中 yum 所裝的PHP為5.1.6版&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/yum.repos.d/CentOS-Base.repo&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 新增測試版 Server 套件庫&lt;br /&gt;&lt;div style="color: #274e13;"&gt;[c5-testing]&lt;br /&gt;name=CentOS-5 Testing&lt;br /&gt;baseurl=http://dev.centos.org/centos/5/testing/$basearch/&lt;br /&gt;enabled=1&lt;br /&gt;gpgcheck=1&lt;br /&gt;gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing&lt;/div&gt;&lt;b style="color: #073763;"&gt;# yum update php*&lt;/b&gt;&amp;nbsp; # 更新升級套件&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# php -v&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 查看升級後版本&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;PHP 5.2.10 (cli) (built: Nov 13 2009 11:24:03)&lt;br /&gt;Copyright (c) 1997-2009 The PHP Group&lt;br /&gt;Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies&lt;/div&gt;&lt;b style="color: #073763;"&gt;# rpm -q php php-mysql php-pecl-Fileinfo php-mcrypt php-xml php-gd php-mbstring&lt;/b&gt; &amp;nbsp; # 查看安裝 roundcube 必安裝的 php 套件&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;php-5.2.10-1.el5.centos&lt;br /&gt;php-mysql-5.2.10-1.el5.centos&lt;br /&gt;php-pecl-Fileinfo-1.0.4-3.el5.centos&lt;br /&gt;php-mcrypt-5.2.9-2.el5.centos.3&lt;br /&gt;php-xml-5.2.10-1.el5.centos&lt;br /&gt;php-gd-5.2.10-1.el5.centos&lt;br /&gt;php-mbstring-5.2.10-1.el5.centos &lt;/div&gt;&lt;b style="color: #073763;"&gt;# vi /etc/php.ini&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 查看 php 參數是否正確設定&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;&lt;div style="color: #274e13;"&gt;file_uploads = On&lt;/div&gt;&lt;div style="color: #274e13;"&gt;session.auto_start = 0&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;3. 安裝 roundcube &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;※ 到官網&lt;a href="http://www.roundcube.net/"&gt;http://www.roundcube.net&lt;/a&gt;下載最新版本 roundcubemail-0.3.1.tar.gz 套件到 Server 的 /var/www/html 中&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cd /var/www/html&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# tar -xzvf roundcubemail-0.3.1.tar.gz&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 解壓縮套件&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mv roundcubemail-0.3.1 webmail&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 更改目錄名稱&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cd /var/www/html/webmail&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chown -R apache.apache logs temp&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 更改兩個目錄擁有者&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chmod 0700 logs temp&lt;/b&gt;&amp;nbsp; # 更改兩個目錄權限&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mysql -p&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 進入 mysql&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;Enter password:&lt;br /&gt;Welcome to the MySQL monitor.&amp;nbsp; Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 163&lt;br /&gt;Server version: 5.0.77 Source distribution&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;/div&gt;&lt;b&gt;mysql&amp;gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: #073763;"&gt;create database roundcubemail;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 建立 roundcubemail 這個資料庫&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;Query OK, 1 row affected (0.00 sec)&lt;/div&gt;&lt;b&gt;mysql&amp;gt;&lt;/b&gt; &lt;b style="color: #073763;"&gt;GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcubemail@localhost IDENTIFIED BY 'Your-Password';&amp;nbsp;&lt;/b&gt; # 設roundcubemail這個資料庫權限&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;Query OK, 0 rows affected (0.01 sec)&lt;/div&gt;&lt;b&gt;mysql&amp;gt;&lt;/b&gt; &lt;b style="color: #073763;"&gt;FLUSH PRIVILEGES;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 立即更新&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;Query OK, 0 rows affected (0.00 sec)&lt;/div&gt;&lt;b&gt;mysql&amp;gt;&lt;span style="color: #073763;"&gt;exit&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 離開&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cd /var/www/html/webmail/SQL/&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mysql -u roundcubemail -p -h localhost roundcubemail &amp;lt; mysql.initial.sql&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 建立資料庫 roundcubemail 的 table&lt;br /&gt;&lt;div style="color: #4c1130;"&gt;Enter password:&lt;/div&gt;&lt;b style="color: #073763;"&gt;# cd /var/www/html/webmail/config/&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cp db.inc.php.dist db.inc.php&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # copy DB 設定檔&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cp main.inc.php.dist main.inc.php&lt;/b&gt;&amp;nbsp;&amp;nbsp; # copy 主設定檔&lt;br /&gt;&lt;div style="color: #073763;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;b style="color: #073763;"&gt;# vi db.inc.php&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 修改連接DB資訊&lt;br /&gt;&lt;span style="color: #274e13;"&gt;//$rcmail_config['db_dsnw'] = ‘mysql://帳號:密碼@localhost/資料庫名稱;&lt;/span&gt;&amp;nbsp; # 格式如左&lt;br /&gt;&lt;div style="color: #274e13;"&gt;$rcmail_config['db_dsnw'] = 'mysql://roundcubemail:Your-Password@localhost/roundcubemail';&lt;/div&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi main.inc.php&lt;/b&gt;&amp;nbsp; # 修改主要設定檔&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['default_host'] = '&lt;/span&gt;&lt;span style="color: #274e13;"&gt;10.99.99.8&lt;/span&gt;&lt;span style="color: #274e13;"&gt;';&amp;nbsp;&lt;/span&gt;&amp;nbsp; #郵件伺服器的位置或DNS名稱&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['mail_domain'] = 'xxx.com.tw';&lt;/span&gt;&amp;nbsp; #網域名稱&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['smtp_server'] = '10.99.99.8';&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #郵件伺服器的位置或DNS名稱&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['auto_create_user'] = true;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 自動 create user&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['create_default_folders'] = TRUE;&lt;/span&gt; &amp;nbsp;&amp;nbsp; # 建立預設資料夾 &lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['language'] = ' zh_TW ';&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 預設語系&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['timezone'] = '8';&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 時區台灣是8&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$rcmail_config['default_charset'] = 'UTF-8';&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 預設編碼&lt;br /&gt;&lt;br /&gt;http://Your-IP/webmail/installer&amp;nbsp;&amp;nbsp; # 開個 Browse 查看安裝 roundcube 還缺哪些套件&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# rm -rf /var/www/html/webmail/installer&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 如果完成安裝，為安全理由請移除安裝目錄&lt;br /&gt;&lt;br /&gt;http://Your-IP/webmail/&amp;nbsp;&amp;nbsp; # 整個安裝完成後使用帳號登入&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ref:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://wiki.centos.org/HowTos/postfix"&gt;http://wiki.centos.org/HowTos/postfix&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.roundcube.net/"&gt;http://www.roundcube.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Add: &lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.linuxmail.info/poppassd-setup-howto-centos-5/"&gt;http://www.linuxmail.info/poppassd-setup-howto-centos-5/&lt;/a&gt;&amp;nbsp;&amp;nbsp; # 安裝 poppassd 修改密碼 Plugin 外掛方式&lt;br /&gt;&lt;br /&gt;※ roundcube 中通訊錄匯出時為 UTF-8 編碼，若要轉為 Outlook 看得懂得格式請先用記事本將 rcube_contacts.vcf 轉存成 ANSI 編碼後再匯入。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5495773329101141640?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5495773329101141640/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5495773329101141640' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5495773329101141640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5495773329101141640'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/03/los-centos-install-roundcube-ajax.html' title='[ LOS ] CentOS Install  Ajax Webmail Roundcube'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3264287387194831284</id><published>2010-03-17T14:27:00.004+08:00</published><updated>2010-03-19T17:04:44.814+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] CentOS Install dotProject</title><content type='html'>最近剛好有朋友提到需要用到專案管理軟體所以上網找到了dotProject這套專案管理軟體，下面為裝在CentOS 5.4 Linux 上的安裝紀錄，dotProject 比起微軟M$的Project方案真的是太優了不但是OpenSource而且完全免費，這真要感謝其背後為它默默付出的人們，今日我們才能有這麼棒又免費的軟體可以使用。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. CentOS 系統調校&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum -y install ntp&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; 安裝 CentOS 5.4 後進入 OS 先做時間校正及安全更新所以要先安裝 ntp&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig ntpd on&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 設定 ntpd 開機啟動&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig --list | grep ntpd&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 檢查開機啟動&lt;br /&gt;&lt;span style="background-color: #4c1130;"&gt;&lt;/span&gt;&lt;span style="color: #4c1130;"&gt;ntpd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:off&amp;nbsp;&amp;nbsp; 1:off&amp;nbsp;&amp;nbsp; 2:on&amp;nbsp;&amp;nbsp;&amp;nbsp; 3:on&amp;nbsp;&amp;nbsp;&amp;nbsp; 4:on&amp;nbsp;&amp;nbsp;&amp;nbsp; 5:on&amp;nbsp;&amp;nbsp;&amp;nbsp; 6:off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/ntp.conf&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; 加入國內校時 Server&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;server time.stdtime.gov.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;server clock.stdtime.gov.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;server tick.stdtime.gov.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;server tock.stdtime.gov.tw&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# ntpdate -u&amp;nbsp; time.stdtime.gov.tw&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 做第一次網路校時&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;1 Sep 15:13:22 ntpdate[2261]: step time server 220.130.158.52 offset -26064.456555 sec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# service ntpd start&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 開啟 ntp&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum -y update&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 第一次安全更新&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #990000;"&gt;※套件安全更新後立即安裝 rpmforge，其用意為可以不用替 yum 手動增加新的站台就會有非常多的第三方套件可以使用。請參考: https://rpmrepo.org/RPMforge/Using&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 取得 RHEL5/CentOS5 i386 第三方套件庫&lt;br /&gt;&lt;b style="color: #073763;"&gt;# rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 使用 rpm 直接安裝&lt;br /&gt;&lt;br /&gt;&lt;b style="color: black;"&gt;2. 安裝 Apache+MySQL+PHP+phpMyAdmin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum -y install mysql mysql-server &lt;/b&gt;&amp;nbsp; #  Installing MySQL5&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig --levels 235 mysqld on&lt;br /&gt;# vi /etc/my.cnf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt; #調整MySQL預設編碼&lt;br /&gt;&lt;div style="color: #274e13;"&gt;[mysqld]&lt;br /&gt;default-character-set=utf8&lt;br /&gt;[client]&lt;br /&gt;default-character-set=utf8&lt;/div&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# /etc/init.d/mysqld start&lt;br /&gt;# mysqladmin -u root password yourrootsqlpassword&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum install httpd&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Installing Apache2 &lt;br /&gt;&lt;b style="color: #073763;"&gt;# chkconfig --levels 235 httpd on&lt;br /&gt;# /etc/init.d/httpd start&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum install php&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Installing PHP5&lt;br /&gt;&lt;b style="color: #073763;"&gt;# /etc/init.d/httpd restart&lt;br /&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /var/www/html/index.php&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 寫個查看php有無啟動語法&lt;br /&gt;&lt;span style="color: #274e13;"&gt;&amp;lt; ?php&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;phpinfo();&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum search php&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 可搜尋 PHP 擁有的擴充應用程式&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;# 安裝所需的 extesion 套件&lt;br /&gt;&lt;b style="color: #073763;"&gt;# /etc/init.d/httpd restart&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# yum install phpmyadmin&amp;nbsp;&lt;/b&gt;&amp;nbsp; # 安裝 phpMyAdmin&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;# vi /etc/httpd/conf.d/phpmyadmin.conf&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將 Deny from all 改為 Allow from all&lt;span style="color: #274e13;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;#&amp;nbsp; Web application to manage MySQL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;&lt;directory phpmyadmin="" share="" usr=""&gt;&lt;/directory&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp; Order Deny,Allow&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp; &lt;span style="color: #990000;"&gt;Allow&lt;/span&gt; from all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp; Allow from 127.0.0.1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Alias /phpmyadmin /usr/share/phpmyadmin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Alias /phpMyAdmin /usr/share/phpmyadmin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;Alias /mysqladmin /usr/share/phpmyadmin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /usr/share/phpmyadmin/config.inc.php&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將 cookie 改成 http&lt;br /&gt;&lt;span style="color: #274e13;"&gt;[...]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;/* Authentication type */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;$cfg['Servers'][$i]['auth_type'] = '&lt;span style="color: #990000;"&gt;http&lt;/span&gt;';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;[...]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# /etc/init.d/httpd restart&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 重新啟動 apache&lt;br /&gt;&lt;br /&gt;http://IP/phpmyadmin/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 開個Browse使用 root 及 mysql 密碼登入&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 安裝 dotproject&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;下載中文 dotproject 版本 dotProject_2.1_RC2_20070529_UTF-8_Chinese_by_Markwu.zip 將檔案上傳到 /var/www/html 目錄&lt;br /&gt;&lt;br /&gt;&lt;a href="http://of.openfoundry.org/projects/238/download"&gt;http://of.openfoundry.org/projects/238/download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cd /var/www/html&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# unzip dotProject_2.1_RC2_20070529_UTF-8_Chinese_by_Markwu.zip&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 解壓縮 .zip 檔&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mv dotProject_2.1_RC2_20070529_UTF-8_Chinese_by_Markwu dotproject&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 更改目錄名稱&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chown -R apache /var/www/html/dotproject/files&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 更改目錄擁有者&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chmod -R 0700 /var/www/html/dotproject/files&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 更改目錄權限&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cd /var/www/html/dotproject/includes/&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 切換目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# cp config-dist.php config.php&lt;/b&gt;&amp;nbsp;&amp;nbsp; # copy 設定檔&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chmod 777 config.php&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 更改設定檔為可寫入設定完後再改回只可讀&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/php.ini&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 更改 PHP 設定檔&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;session.auto_start = 1&lt;/span&gt;&amp;nbsp; # 將 0 改為 1&lt;br /&gt;&lt;span style="color: #274e13;"&gt;memory_limit = 32M&lt;/span&gt;&amp;nbsp; # 將 16M 改 32M 甘特圖才能 run&lt;br /&gt;&lt;span style="color: #274e13;"&gt;file_uploads = On&amp;nbsp;&lt;/span&gt;&amp;nbsp; # 看看上傳是否開啟&lt;br /&gt;&lt;span style="color: #274e13;"&gt;upload_max_filesize = 100M&amp;nbsp;&lt;/span&gt;&amp;nbsp; # 調整自己想要的大小&lt;br /&gt;&lt;span style="color: #274e13;"&gt;max_execution_time = 300&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 由 30 秒調整為 5 分鐘(因為檔案變大時間也要調大否則還是會被drop掉)&lt;br /&gt;&lt;span style="color: #274e13;"&gt;max_input_time = 600&lt;/span&gt;&amp;nbsp;&amp;nbsp; # 由 60 秒調整為 10 分鐘(可因需求自行調整)&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# /etc/init.d/httpd restart&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 重跑 apache 讓 php 設定生效&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;正在停止 httpd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;正在啟動 httpd:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; 確定&amp;nbsp; ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mysql -p&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 進入MySQL&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Enter password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Welcome to the MySQL monitor.&amp;nbsp; Commands end with ; or \g.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Your MySQL connection id is 13&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Server version: 5.0.77 Source distribution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;mysql&amp;gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color: #073763;"&gt;CREATE DATABASE dotproject;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 建立 dotproject 資料庫 (現在不建也行在Web安裝時也可自動 Create)&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Query OK, 1 row affected (0.00 sec)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;mysql&amp;gt;&lt;span style="color: #073763;"&gt; GRANT ALL PRIVILEGES ON dotproject.* TO dotproject@localhost IDENTIFIED BY "YOUR-PASSWORD" WITH GRANT OPTION;&lt;/span&gt;&lt;/b&gt; # 建立 dotproject DB user&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Query OK, 0 rows affected (0.00 sec)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://YourIP/dotproject/&amp;nbsp;&amp;nbsp; # 進入Web安裝&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# rm -rf /var/www/html/dotproject/install&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 安裝完成後刪除安裝目錄&lt;br /&gt;&lt;b style="color: #073763;"&gt;# chmod 644 /var/www/html/dotproject/includes/config.php&lt;/b&gt;&amp;nbsp; # 將權限改回&lt;br /&gt;&lt;br /&gt;http://YourIP/dotproject/&amp;nbsp;&amp;nbsp; # 進入登入畫面預設帳號/密碼 admin/passwd&lt;br /&gt;&lt;br /&gt;進入畫面後點選 System Admin &amp;gt;&amp;gt; Default User Preferences &amp;gt;&amp;gt; Locale: Tranditional Chinse(Taiwan) &amp;gt;&amp;gt; submit之後登出再登入就是中文介面&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Reference :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dotproject.net/"&gt;http://www.dotproject.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://of.openfoundry.org/projects/238/download"&gt;http://of.openfoundry.org/projects/238/download&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rhyous.com/2009/11/22/how-to-install-dotproject-2-1-2-on-freebsd-7-2-with-apache-2-2-php5-and-mysql-5-1-server/"&gt;http://rhyous.com/2009/11/22/how-to-install-dotproject-2-1-2-on-freebsd-7-2-with-apache-2-2-php5-and-mysql-5-1-server/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3264287387194831284?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3264287387194831284/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3264287387194831284' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3264287387194831284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3264287387194831284'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/03/los-centos-install-dotproject.html' title='[ LOS ] CentOS Install dotProject'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3484771280112845871</id><published>2010-03-16T14:43:00.000+08:00</published><updated>2010-03-16T14:43:30.534+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] CentOS Linux Format/Mount Etx3 Partition</title><content type='html'>如何在 CentOS Linux 上掛載一顆 etx3 格式的硬碟 ? 為何要掛載這顆硬碟 ? 主要是當備份碟每天零晨可以使用 crontab+shellscript 自動備份資料 , 當做普通重要資料還原用 , 沒錢買好的硬體RAID只好用這最省錢的方式。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. 查看有哪些硬碟掛在機器上&lt;/b&gt;&lt;br /&gt;&lt;span style="background-color: blue; color: #0b5394;"&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;b style="background-color: #073763; color: #0b5394;"&gt;&lt;/b&gt;&lt;b style="color: #073763;"&gt;# fdisk -l&lt;/b&gt; &amp;nbsp; #除了系統主硬碟 hda 40G外我已經多放了 hdc 第二顆3G大小的硬碟&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #741b47;"&gt;Disk /dev/hda: 41.1 GB, 41171288064 bytes&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;255 heads, 63 sectors/track, 5005 cylinders&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda1&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 104391&amp;nbsp;&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;/dev/hda2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5005&amp;nbsp;&amp;nbsp;&amp;nbsp; 40098240&amp;nbsp;&amp;nbsp; 8e&amp;nbsp; Linux LVM&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;Disk /dev/hdc: 3228 MB, 3228696576 bytes&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;128 heads, 63 sectors/track, 782 cylinders&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;Units = cylinders of 8064 * 512 = 4128768 bytes&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br style="color: #741b47;" /&gt;&lt;span style="color: #741b47;"&gt;/dev/hdc1&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 782&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3152992+&amp;nbsp;&amp;nbsp; b&amp;nbsp; W95 FAT32&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 硬碟 partition 規劃&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# fdisk &lt;/b&gt;&lt;b style="color: #073763;"&gt;/dev/hdc&lt;/b&gt;&amp;nbsp;&amp;nbsp; #使用 fdisk 工具切割規劃 hdc 這顆硬碟&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Command (m for help): &lt;/span&gt;&lt;b style="color: #660000;"&gt;d&lt;/b&gt;&amp;nbsp;&amp;nbsp; #刪除 hdc1 partition&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Command (m for help):&lt;/span&gt;&lt;b style="color: #660000;"&gt; n&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #新增 hdc1 partition&lt;span style="background-color: #4c1130; color: #4c1130;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Command action&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; e&amp;nbsp;&amp;nbsp; extended&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; p&amp;nbsp;&amp;nbsp; primary partition (1-4)&lt;/span&gt;&amp;nbsp; &lt;b style="color: #660000;"&gt;p&lt;/b&gt; # 打入p規劃為 primary 格式&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Partition number (1-4):&lt;/span&gt; &lt;b&gt;&lt;span style="color: #660000;"&gt;1&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 因為欲規劃為 hdc1 所以選擇編號1&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;First cylinder (1-782, default 1):&amp;nbsp;&lt;/span&gt;&amp;nbsp; # 開始的磁區default &amp;gt;&amp;gt; Enter&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Using default value 1&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Last cylinder or +size or +sizeM or +sizeK (1-782, default 782): &lt;span style="color: black;"&gt;# 結束的磁區default &amp;gt;&amp;gt; Enter&lt;/span&gt;&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Using default value 782&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Command (m for help):&lt;/span&gt; &lt;b style="color: #660000;"&gt;w&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 將剛剛的規劃 save&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;The partition table has been altered!&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Calling ioctl() to re-read partition table.&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Syncing disks.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="background-color: #073763;"&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: #073763;"&gt;# fdisk -l&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&amp;nbsp; # 再次查看&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;Disk /dev/hdc: 3228 MB, 3228696576 bytes&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;128 heads, 63 sectors/track, 782 cylinders&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Units = cylinders of 8064 * 512 = 4128768 bytes&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp; Device Boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blocks&amp;nbsp;&amp;nbsp; Id&amp;nbsp; System&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;/dev/hdc1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 782&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3152992+&amp;nbsp; 83&amp;nbsp; Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Format 硬碟&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mkfs.ext3 /dev/hdc1&amp;nbsp;&amp;nbsp;&lt;/b&gt; # 將 partition 格式化為 linux ext3 檔案系統格式&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;mke2fs 1.39 (29-May-2006)&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Filesystem label=&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;OS type: Linux&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Block size=4096 (log=2)&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Fragment size=4096 (log=2)&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;394400 inodes, 788248 blocks&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;39412 blocks (5.00%) reserved for the super user&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;First data block=0&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Maximum filesystem blocks=809500672&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;25 block groups&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;32768 blocks per group, 32768 fragments per group&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;15776 inodes per group&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Superblock backups stored on blocks:&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32768, 98304, 163840, 229376, 294912&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Writing inode tables: done&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Creating journal (16384 blocks): done&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;Writing superblocks and filesystem accounting information: done&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;This filesystem will be automatically checked every 34 mounts or&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;180 days, whichever comes first.&amp;nbsp; Use tune2fs -c or -i to override.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mkdir /disk2&amp;nbsp;&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 建立 disk2 掛載資料夾&lt;br /&gt;&lt;b style="color: #073763;"&gt;# mount /disk2&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 手動掛載資料夾&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# df&amp;nbsp;&lt;/b&gt; # 查看 disk2 是否掛上&lt;br /&gt;&lt;span style="color: #4c1130;"&gt;檔案系統&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1K-區段&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 已用&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可用 已用% 掛載點&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;/dev/mapper/VolGroup00-LogVol00&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 37803504&amp;nbsp;&amp;nbsp; 1830008&amp;nbsp; 34022164&amp;nbsp;&amp;nbsp; 6% /&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;/dev/hda1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 101086&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18863&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 77004&amp;nbsp; 20% /boot&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;tmpfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 257668&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 257668&amp;nbsp;&amp;nbsp; 0% /dev/shm&lt;/span&gt;&lt;br style="color: #4c1130;" /&gt;&lt;span style="color: #4c1130;"&gt;/dev/hdc1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3103444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 70240&amp;nbsp;&amp;nbsp; 2875556&amp;nbsp;&amp;nbsp; 3% /disk2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# umount /disk2&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 卸載 disk2&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #073763;"&gt;# vi /etc/fstab&lt;/b&gt;&amp;nbsp;&amp;nbsp; # 加入開機自動掛載 hdc1&lt;br /&gt;&lt;span style="color: #274e13;"&gt;/dev/hdc1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /disk2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3484771280112845871?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3484771280112845871/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3484771280112845871' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3484771280112845871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3484771280112845871'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/03/los-centos-linux-formatmount-etx3.html' title='[ LOS ] CentOS Linux Format/Mount Etx3 Partition'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6706166550312557623</id><published>2010-02-23T15:27:00.002+08:00</published><updated>2010-03-23T16:19:15.125+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>[ FBSD ] How to Join Windows 7 to Samba PDC</title><content type='html'>近來 Windows 7 已經越來越普遍, 之前使用 FreeNAS 架設網域伺服器的用戶端也開始升級使用 Windows 7, 而用戶端為 Windows 7 時要如何 Join 到使用 Samba 的 PDC 網域 ? 必須要修改 Windows 7 的 regedit 登入檔 , 方式如下。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(1) 增加 DomainCompatibilityMode 及 DNSNameResolutionRequired 兩個 DWORD 值一個為1另一個為0&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]&lt;br /&gt;“DomainCompatibilityMode”=dword:00000001&lt;br /&gt;“DNSNameResolutionRequired”=dword:00000000&lt;br /&gt;&lt;br /&gt;(2) 改變 RequireSignOnSeal 及 RequireStrongKey 的值由 1 變 0&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]&lt;br /&gt;“RequireSignOnSeal”=dword:00000000&lt;br /&gt;“RequireStrongKey”=dword:00000000&lt;br /&gt;&lt;br /&gt;Reference :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.1stbyte.com/2009/05/31/join-windows-7-to-samba-pdc"&gt;http://www.1stbyte.com/2009/05/31/join-windows-7-to-samba-pdc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6706166550312557623?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6706166550312557623/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6706166550312557623' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6706166550312557623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6706166550312557623'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2010/02/fbsd-how-to-join-windows-7-to-samba-pdc.html' title='[ FBSD ] How to Join Windows 7 to Samba PDC'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5441806652011768699</id><published>2009-11-17T14:52:00.004+08:00</published><updated>2010-03-23T15:43:44.630+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>[ C/C++ ] Matrix Multiplication by Pointers</title><content type='html'>矩陣乘法  Matrix Multiplication&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c++"&gt;// matrixMultiplication.cpp&lt;br /&gt;//&lt;br /&gt;// It's a 2x3 matrices program of matrix multiplication using pointers in C++&lt;br /&gt;//&lt;br /&gt;// Console-based&lt;br /&gt;// Retruns real as well as comples roots.&lt;br /&gt;// Author Jim.lin 2009&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;iomanip&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    int i, j, k, sum;&lt;br /&gt;    // matrix space&lt;br /&gt;    const int ROW_A = 2, COL_A = 3;&lt;br /&gt;    const int ROW_B = 3, COL_B = 2;&lt;br /&gt;&lt;br /&gt;    // define matrix value&lt;br /&gt;    int a[ROW_A][COL_A] = {{1,3,1},{1,2,3}};&lt;br /&gt;    int b[ROW_B][COL_B] = {{1,3},{3,5},{3,3}};&lt;br /&gt;    int c[ROW_A][COL_B];&lt;br /&gt;&lt;br /&gt;    // define 3 pointers to first address&lt;br /&gt;    int *pa, *pb, *pc;&lt;br /&gt;&lt;br /&gt;    pa = &amp;amp;a[0][0];&lt;br /&gt;    pb = &amp;amp;b[0][0];&lt;br /&gt;    pc = &amp;amp;c[0][0];&lt;br /&gt;&lt;br /&gt;    // caclulation&lt;br /&gt;    for ( i=0; i&amp;lt;ROW_A; ++i ) {&lt;br /&gt;        for (j=0; j&amp;lt;COL_B; ++j) {&lt;br /&gt;            sum = 0;&lt;br /&gt;            for( k=0; k&amp;lt;COL_A; ++k ) {&lt;br /&gt;                sum += *(pa+i*COL_A+k) * *(pb+k*COL_B+j);&lt;br /&gt;            }&lt;br /&gt;            *(pc+i*COL_B+j) = sum;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    // print matrix a&lt;br /&gt;    for ( i=0; i&amp;lt;ROW_A; ++i) {&lt;br /&gt;        for (j=0; j&amp;lt;COL_A; ++j) {&lt;br /&gt;            cout &amp;lt;&amp;lt; *(pa+i*COL_A+j) &amp;lt;&amp;lt; " ";&lt;br /&gt;        }&lt;br /&gt;        cout &amp;lt;&amp;lt; endl;&lt;br /&gt;    }&lt;br /&gt;    cout &amp;lt;&amp;lt; '\n';&lt;br /&gt;&lt;br /&gt;    // print matrix b&lt;br /&gt;    for (i=0; i&amp;lt;ROW_B; ++i) {&lt;br /&gt;        for (j=0; j&amp;lt;COL_B; ++j) {&lt;br /&gt;            cout &amp;lt;&amp;lt; *(pb+i*COL_B+j) &amp;lt;&amp;lt; " ";&lt;br /&gt;        }&lt;br /&gt;        cout &amp;lt;&amp;lt; endl;&lt;br /&gt;    }&lt;br /&gt;    cout &amp;lt;&amp;lt; '\n';&lt;br /&gt;&lt;br /&gt;    //print multiple matrix c&lt;br /&gt;    for (i=0; i&amp;lt;ROW_A; ++i) {&lt;br /&gt;        for (j=0; j&amp;lt;COL_B; ++j) {&lt;br /&gt;            cout &amp;lt;&amp;lt; *(pc+i*COL_B+j) &amp;lt;&amp;lt; " ";&lt;br /&gt;        }&lt;br /&gt;        cout &amp;lt;&amp;lt; endl;&lt;br /&gt;    }&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ref.&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Matrix_multiplication"&gt;http://en.wikipedia.org/wiki/Matrix_multiplication&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5441806652011768699?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5441806652011768699/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5441806652011768699' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5441806652011768699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5441806652011768699'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/11/cc-matrix-multiplication-use-pointers.html' title='[ C/C++ ] Matrix Multiplication by Pointers'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6016211653704013924</id><published>2009-11-10T16:17:00.004+08:00</published><updated>2010-03-23T15:44:41.698+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>[ C/C++ ] Insertion Sort by C++</title><content type='html'>Insertion sort is an elementary sorting algorithm. The time complexity of Θ(n2).&lt;br /&gt;&lt;pre class="brush: c++"&gt;// insertSort.cpp&lt;br /&gt;//&lt;br /&gt;// Sorting Algorithm (insertion sort) .&lt;br /&gt;//&lt;br /&gt;// Console-based&lt;br /&gt;// Retruns real as well as comples roots.&lt;br /&gt;// Author Jim.lin 2009&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    unsigned int i, j, k, tmp;&lt;br /&gt;    cout &amp;lt;&amp;lt; &amp;quot;Please Input a Number :&amp;quot;;&lt;br /&gt;    cin &amp;gt;&amp;gt; k;&lt;br /&gt;    vector&amp;lt;int&amp;gt; data(k); //定義一個整數型態k大小的向量陣列&lt;br /&gt;&lt;br /&gt;    cout &amp;lt;&amp;lt; &amp;quot;Please Input &amp;quot; &amp;lt;&amp;lt; k &amp;lt;&amp;lt; &amp;quot; Number :&amp;quot;;&lt;br /&gt;    for ( i=0; i &amp;lt; data.size(); ++i )&lt;br /&gt;    cin &amp;gt;&amp;gt; data[i];&lt;br /&gt;&lt;br /&gt;    // Begin Sorting&lt;br /&gt;    for ( i=1; i &amp;lt; data.size(); ++i )&lt;br /&gt;    {&lt;br /&gt;        for (j=i; j&amp;gt;0; --j)&lt;br /&gt;        {&lt;br /&gt;            if (data[j] &amp;gt;= data[j-1] )&lt;br /&gt;                break;&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                tmp = data[j];&lt;br /&gt;                data[j] = data[j-1];&lt;br /&gt;                data[j-1] = tmp;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    // Output Sorted&lt;br /&gt;    cout &amp;lt;&amp;lt; &amp;quot;\n Sorted Resulte:&amp;quot;;&lt;br /&gt;    for ( i=0; i&amp;lt;data.size(); ++i )&lt;br /&gt;    cout &amp;lt;&amp;lt; data[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;    cout &amp;lt;&amp;lt; endl;&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}  &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6016211653704013924?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6016211653704013924/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6016211653704013924' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6016211653704013924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6016211653704013924'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/11/cc-insertion-sort-by-c.html' title='[ C/C++ ] Insertion Sort by C++'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1280595156684523139</id><published>2009-11-02T16:57:00.013+08:00</published><updated>2010-03-23T15:45:06.807+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>[ C/C++ ] Transfer to Binary</title><content type='html'>將輸入整數值轉換成二進位數值&lt;br /&gt;&lt;pre class="brush: c++"&gt;// Binary.cpp&lt;br /&gt;//&lt;br /&gt;// transfer to binary&lt;br /&gt;//&lt;br /&gt;// Console-based&lt;br /&gt;// Author Jim.lin 2009&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;  &lt;br /&gt;using namespace std;&lt;br /&gt;  &lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;int N;&lt;br /&gt;int v = 1;&lt;br /&gt;cin &gt;&gt; N;&lt;br /&gt;while(v &lt;= N/2)&lt;br /&gt;    v = 2*v;   // 此時 v 值為 &lt;= N 的最大次方&lt;br /&gt;  &lt;br /&gt;int n = N;&lt;br /&gt;while(v &gt; 0)&lt;br /&gt;    {&lt;br /&gt;        if (n &lt; v) { cout &lt;&lt; "0"; }&lt;br /&gt;        else { cout &lt;&lt; "1"; n -= v; }&lt;br /&gt;        v = v/2;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1280595156684523139?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1280595156684523139/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1280595156684523139' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1280595156684523139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1280595156684523139'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/11/cc-transfer-to-binary.html' title='[ C/C++ ] Transfer to Binary'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-9126940743775261454</id><published>2009-10-29T16:00:00.005+08:00</published><updated>2010-03-23T15:45:32.464+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>[ C/C++ ] Powers Of Two by C++</title><content type='html'>使用 C++ 輸出 2 的次方值 Power Of Two&lt;br /&gt;&lt;pre class="brush: c++"&gt;// powersOfTwo.cpp&lt;br /&gt;//&lt;br /&gt;// Powers of Two, 2^i &lt;br /&gt;//&lt;br /&gt;// Console-based&lt;br /&gt;// Author Jim.lin 2009&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    int N;&lt;br /&gt;    int v = 1;&lt;br /&gt;    int i = 0;&lt;br /&gt;    cin &gt;&gt; N;&lt;br /&gt;    while(i &lt;= N)&lt;br /&gt;    {&lt;br /&gt;        cout &lt;&lt; i &lt;&lt; " " &lt;&lt; v &lt;&lt; endl;&lt;br /&gt;        v = 2 * v;&lt;br /&gt;        i = i + 1;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-9126940743775261454?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/9126940743775261454/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=9126940743775261454' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/9126940743775261454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/9126940743775261454'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/10/cc-powers-of-two-by-c.html' title='[ C/C++ ] Powers Of Two by C++'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-9195968925876871915</id><published>2009-10-25T00:33:00.002+08:00</published><updated>2010-03-23T15:46:00.745+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>[ C/C++ ] Leap Year Check</title><content type='html'>閏年定義(leap year or intercalary year) : 四年一閏，百年不閏，四百年閏，四千年閏&lt;br /&gt;&lt;br /&gt;英文字典 leap year ?&lt;br /&gt;A leap year is a year which has 366 days. The extra day is the 29th February. There is a leap year every four years.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c++"&gt;// leapyear.cpp&lt;br /&gt;//&lt;br /&gt;// This program to determine leap year.&lt;br /&gt;//&lt;br /&gt;// Console-based&lt;br /&gt;// Retruns real as well as comples roots.&lt;br /&gt;// Author Jim.lin 2009&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    int year;&lt;br /&gt;        cin &gt;&gt; year;&lt;br /&gt;    if(( year%4==0 &amp;&amp; year%100!=0 ) || year%400==0 )&lt;br /&gt;        cout &lt;&lt; "Leap Year ";&lt;br /&gt;    else&lt;br /&gt;        cout &lt;&lt; "Not Leap Year ";&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Ref.&lt;a href="http://www.google.com"&gt;By Google&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-9195968925876871915?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/9195968925876871915/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=9195968925876871915' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/9195968925876871915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/9195968925876871915'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/10/cc-leap-year-check.html' title='[ C/C++ ] Leap Year Check'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4372725219731247704</id><published>2009-10-15T16:19:00.013+08:00</published><updated>2010-03-23T15:46:21.688+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><title type='text'>[ C/C++ ] Quadratic by C++</title><content type='html'>使用 C++ 解一元二次方程式&lt;br /&gt;&lt;pre class="brush: c++"&gt;// quadratic.cpp&lt;br /&gt;//&lt;br /&gt;// This program solves a quadratic equation in standard form.&lt;br /&gt;// ax^2 + bx + c = 0&lt;br /&gt;//&lt;br /&gt;// Console-based&lt;br /&gt;// Retruns real as well as comples roots.&lt;br /&gt;// Author Jim.lin 2009&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;math.h&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;double a,b,c;&lt;br /&gt;double x1,x2;&lt;br /&gt;double i;&lt;br /&gt;&lt;br /&gt;// main function&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    cout&lt;&lt;"Please Input Number a,b,c:\n";&lt;br /&gt;    cin&gt;&gt;a&gt;&gt;b&gt;&gt;c;&lt;br /&gt;    i=sqrt(b*b-4*a*c);&lt;br /&gt;    if(i&lt;0)&lt;br /&gt;        cout&lt;&lt;"This is imaginary roots";&lt;br /&gt;    else if(i==0)&lt;br /&gt;    {&lt;br /&gt;        x1=-b/(2*a);&lt;br /&gt;        cout&lt;&lt;"The quadratic equation has one root" &lt;&lt; x1 &lt;&lt; endl;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        x1=(-b+i)/(2*a);&lt;br /&gt;        x2=(-b-i)/(2*a);&lt;br /&gt;        cout&lt;&lt;"The quadratic equation has two roots" &lt;&lt; endl;&lt;br /&gt;        cout&lt;&lt;"x1=" &lt;&lt; x1 &lt;&lt; "  x2=" &lt;&lt; x2 &lt;&lt; endl;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Best Code :&lt;a href="http://jblanco_60.tripod.com/c_pp_quadratic.html"&gt;http://jblanco_60.tripod.com/c_pp_quadratic.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4372725219731247704?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4372725219731247704/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4372725219731247704' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4372725219731247704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4372725219731247704'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/10/cpp-quadratic-by-c.html' title='[ C/C++ ] Quadratic by C++'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1381934535301961221</id><published>2009-06-19T11:09:00.009+08:00</published><updated>2009-06-19T11:30:35.915+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><title type='text'>[ FBSD ] FreeNAS Soft RAID 1 Operator</title><content type='html'>FreeNAS 軟體 RAID 的建立及操作，測試環境為 FreeNAS 0.69.2 Stable&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(一) 建立 Soft RAID 1 ( Mirror 1 + 1 = 1 ) , 步驟如下：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1) 除了主系統碟 ad0 之外另外再裝入兩棵 1T  Sata 介面的 HD 其磁碟代號為 ad2 及 ad3&lt;br /&gt;2) 開起瀏覽器進入 FreeNAS 的 WebGUI 管理介面&lt;br /&gt;3) 磁碟 &gt; 管理 &gt; + &gt; ( 磁碟 : 選 ad2 , 描述 : 輸入 ad2 disk , S.M.A.R.T. : 打勾, 已格式化之檔案系統 : 選 Software RAID ) &gt; 增加&lt;br /&gt;4) 磁碟 &gt; 管理 &gt; + &gt; ( 磁碟 : 選 ad3 , 描述 : 輸入 ad3 disk , S.M.A.R.T. : 打勾, 已格式化之檔案系統 : 選 Software RAID ) &gt; 增加&lt;br /&gt;5) 套用 : 會看到二棵 HD 都已經 ONLINE&lt;br /&gt;6) 磁碟 &gt; 軟體RAID &gt; + &gt; RAID 1 &gt; ( RAID 名稱 : 輸入 sr1, 提供者 : 按 Ctrl 點選 ad2 及 ad3, 初始化 :  打勾 建立並初始 RAID ) &gt; 增加&lt;br /&gt;7) 套用 : 會看到 sr1 顯示 COMPLETE&lt;br /&gt;8) 磁碟 &gt; 格式化 &gt; ( 磁碟 : 選 sr1, 檔案系統 : 選 UFS(GPT and soft Update), 磁碟標籤 : 輸入 mirror1 )  &gt; 格式化磁碟&lt;br /&gt;9) 磁碟 &gt; 掛載點 &gt; 管理 &gt; + &gt; ( 類別 : 選 Disk, Partition type : GPT partition, Partion number : 輸入 1, 檔案系統 : 選 UFS, Mount point name : 輸入 disk2 ) &gt; 增加&lt;br /&gt;10) 套用 : 會看到 OK 即完成&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(二) 更換 Soft RAID1 壞掉的一棵硬碟 , 方式如下：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;說明：當 Soft RAID 1 的硬碟 ad3 掛點時我們可以看到在 ( 磁碟 &gt; 軟體RAID &gt; RAID1 &gt; 管理 &gt; 狀態 : 會顯示 DEGRADED )。停機後換上新的硬碟，軟體 RAID 並不會自動重建，所以我們需要自己手動重建 Soft RAID 才行。&lt;br /&gt;&lt;br /&gt;1) 完成更換新的硬碟動作，進入 FreeNAS 的網頁管理介面&lt;br /&gt;2) 磁碟 &gt; 軟體RAID &gt; RAID 1 &gt; 工具 ( 執行以下操作 )&lt;br /&gt;&lt;br /&gt;Volume 名稱 : 選軟體 RAID 1 的那棵硬碟名稱 sr1&lt;br /&gt;磁碟 : 選原本沒有壞的那一顆 ad2，給它下一個「forget」的命令&lt;br /&gt;接著將換好的新硬碟 ad3 下一個「insert」的命令&lt;br /&gt;最後將換好的新硬碟 ad3 下一個「rebuild」的命令&lt;br /&gt;&lt;br /&gt;3)  磁碟 &gt; 軟體RAID &gt; RAID 1 &gt; 工具 &gt; 資訊，就會看到有兩顆硬碟囉！換好的那一顆會有一個訊息 State: SYNCHRONIZING&lt;br /&gt;&lt;br /&gt;PS : 會同步很久 @@&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1381934535301961221?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1381934535301961221/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1381934535301961221' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1381934535301961221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1381934535301961221'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/06/fbsd-freenas-soft-raid-1-operation.html' title='[ FBSD ] FreeNAS Soft RAID 1 Operator'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-2299567373053794108</id><published>2009-05-21T10:18:00.005+08:00</published><updated>2009-06-16T15:31:06.496+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><title type='text'>[ FBSD ] FreeNAS Samba PDC Domain Logon Setup</title><content type='html'>讓 FreeNAS 中的 Samba 當 PDC 網域管理者的設定方式&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. 新增讓 Windows 登入 Samba 網域的管理者帳號&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(一) 於 Group 中加入一個名稱為 machines 的群組：存取權限 &gt; 群組 &gt;  + 名稱 (machines)&lt;br /&gt;(二) 於 User 中加入一個 admin 的使用者：存取權限 &gt; 使用者 &gt;  + 登入 (admin) (主要群組 admin 其餘群組 wheel 及 machines)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. 在 Samba 的全域 Global 環境需設定以下參數&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;服務 &gt; CIFS/SMB/網芳 &gt; 設定 &gt; 附屬參數(添加下面參數)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;add machine script = /usr/sbin/pw useradd %u -g machines -s /sbin/nologin -d /nonexistent&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;admin users = @wheel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;domain admin group = @wheel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;domain admin users = admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;domain logons = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;domain master = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;dos charset = CP950&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;encrypt passwords = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;os level = 64&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;preferred master = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;※ 在 FreeNAS 中 Samba 的使用者密碼所在檔在 /var/etc/private/smbpasswd 有別一般 FreeBSD 在 /usr/local/etc/samba/smbpasswd，當 Windows 已經 join 到 samba 時可查看是否有建立機器帳號，機器帳號為有加 $ 號的 Windows電腦名稱&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cat /var/etc/private/smbpasswd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mail.lsps.tp.edu.tw/%7Egsyan/freebsd2001/samba.html"&gt;http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/samba.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://daniel.fiser.cz/?samba"&gt;http://daniel.fiser.cz/?samba&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-2299567373053794108?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/2299567373053794108/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=2299567373053794108' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2299567373053794108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2299567373053794108'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/05/fbsd-freenas-samba-pdc-domain-logon.html' title='[ FBSD ] FreeNAS Samba PDC Domain Logon Setup'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-2908841516467356150</id><published>2009-05-15T00:40:00.011+08:00</published><updated>2009-05-21T09:49:32.366+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><title type='text'>[ FBSD ] FreeNAS Hack Chinese UTF-8</title><content type='html'>FeaaNAS 微調能讓 Pietty 終端軟體也可以顯示出中文：&lt;br /&gt;&lt;br /&gt;用 &lt;a href="http://www.csie.ntu.edu.tw/%7Epiaip/pietty/"&gt;Pietty&lt;/a&gt; 連到 FreeNAS 想要讓 Pietty 可顯示中文，必需修改 /etc/csh.cshrc 的設定，我們必需要準備一台 FreeBSD Server，再把 FreeNAS 中的 mfsroot.gz 檔傳到 FreeBSD Server 中解開，接著重新做設定檔，為甚何要這樣做 ? 因為 FreeNAS 為 embed 型態，直接連進去 FreeNAS 修改設定雖可馬上生效但重開機後便重新回到 msfsroot.gz 內的所有設定，因此我們必須直接修改 mfsroot.gz 檔才能讓設定永久生效。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BSD#&lt;span style="color: rgb(0, 0, 153);"&gt; cd /home/user&lt;/span&gt;&lt;/span&gt;    # 切換到 FreeBSD Server 中自己的家目錄&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BSD#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;sftp 192.168.10.5&lt;/span&gt;   # 連到 FreeNAS Server&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sftp&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; cd /cf &lt;/span&gt;&lt;/span&gt;    # 在 FreeNAS 中切換到 /cf 目錄&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sftp&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; get mfsroot.gz  &lt;/span&gt;&lt;/span&gt; # 在 FreeNAS 中取得 mfsroot.gz 檔&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sftp&gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;exit&lt;/span&gt;   # 離開 FreeNAS&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BSD#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;gzip -d mfsroot.gz&lt;/span&gt;    # 解壓縮 mfsroot.gz&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;mdconfig -a -t vnode -f /home/user/mfsroot&lt;/span&gt;  # 以RAM DISK 方式將 mfsroot 載入 /dev/md0&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;mount /dev/md0 /mnt&lt;/span&gt;/    # 將 RAM DISK md0 掛載到 /mnt 目錄下&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;cd /mnt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt; vi /etc/csh.cshrc&lt;/span&gt;   # 建立 csh.cshrc 檔並寫入下面設定檔&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv PAGER more&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv BLOCKSIZE K&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv EDITOR nano&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv LANG zh_TW.UTF-8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv LC_ALL en_US.UTF-8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv PACKAGEROOT ftp://ftp4.freebsd.org&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias ls 'ls -wG'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt; umount md0&lt;/span&gt;   # 卸載 md0&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt; mdconfig -d -u 1&lt;/span&gt;  # 卸除 /dev/md0 RAM DISK&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt; gzip -9 mfsroot&lt;/span&gt;  # 重新將 mfsroot 壓縮成 mfsroot.gz&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;BSD#&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;ssh 192.168.10.5&lt;/span&gt;   # 連到 NAS 機器上&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NAS#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;umount /cf&lt;/span&gt;  # 將 cf 磁區卸載&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NAS#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;mkdir /mnt/temp&lt;/span&gt;   # 建個臨時資料夾&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NAS#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;mount /dev/ad0s1 /mnt/temp&lt;/span&gt;   # 將 /dev/ad0s1 也就是 /cf 區域掛到 /mnt/temp 臨時資料夾&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NAS#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;exit&lt;/span&gt;  # 離開 NAS&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BSD# &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;sftp 192.168.10.5 &lt;/span&gt; # 回到 BSD 後再用 sftp 連到 NAS&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sftp&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;cd /mnt/temp&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sftp&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;put mfsroot.gz&lt;/span&gt;   # 將修改完的 mfsroot.gz 回傳到 NAS 蓋調原本那個 mfsroot.gz 檔&lt;br /&gt;&lt;br /&gt;最後重開 FreeNAS 這台機器即可套用新設定&lt;br /&gt;&lt;br /&gt;PS：Pietty 編碼也必需設定 UTF-8 萬國碼&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.ctl.tw/2007/02/hack-freenas.html"&gt;http://blog.ctl.tw/2007/02/hack-freenas.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mobile01.com/topicdetail.php?f=110&amp;amp;t=727507&amp;amp;last=7497811"&gt;http://www.mobile01.com/topicdetail.php?f=110&amp;amp;t=727507&amp;amp;last=7497811&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-2908841516467356150?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/2908841516467356150/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=2908841516467356150' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2908841516467356150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2908841516467356150'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/05/fbsd-freenas-hack-chinese-utf-8.html' title='[ FBSD ] FreeNAS Hack Chinese UTF-8'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5638591234050521040</id><published>2009-04-10T00:19:00.008+08:00</published><updated>2009-04-10T01:05:54.894+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD ZFS filesystem</title><content type='html'>ZFS(Zettabyte File System) 一個打破過去思維的檔案系統，是昇陽 Sun Microsystems 這家公司所開發出來的全新型態檔案系統，因為 License 的問題所以目前只有在 Solaris、Mac、BSD 上看得到，ZFS 是 128bit 的檔案系統而它到底有多強呢？別再等待了馬上用了你就知道，只能說 ZFS 真是一個上帝賜給IT人員的好禮物。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;優點：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. 簡易管理(Ease of Management)：只需透過簡易的兩個指令 zpool 及 zfs 即可操作管理增加及縮減檔案系統容量。&lt;br /&gt;2. 高延展性(Scalability)：可以線上動態的增加容量給檔案系統而不需停機。&lt;br /&gt;3. 資料完整性(Data Integrity)：再也不需要 fsck 修復資料，任何在 ZFS 裡面進行的動作都會經過同位檢查(Everything is checksummed)確認後才寫入/讀出。&lt;br /&gt;4. 驚人的高效能表現(Breathtaking Performance)：資料寫入磁碟機時，首先會將資料先寫入第一個未使用的區塊(first free block)，不需等待實體磁碟機轉速的延遲及磁頭移動的時間。同時具有智慧預備讀取功能(Intelligent Prefetch)可自動預測下筆讀取資料並將其預先放置在快取記憶體裡。&lt;br /&gt;5. 擁有企業級的操作功能：具備 Quota(磁碟配額)、Reservation(磁碟預留)、Compression(磁碟壓縮)、Snapshot(磁碟快照)、Clone(磁碟復製)等強大的功能。&lt;br /&gt;6. ZFS是免費使用檔案系統：Apple 的 Mac OS 將在下一版 10.6 Snow Leopard 即內建支援 ZFS，而 FreeBSD 7.X 環境下也已經開始支援 ZFS 也將於 8.0 之後的版本列入為主要檔案系統的一部份。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;測試環境：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;i386 P4-1.6&lt;br /&gt;Real RAM 512M&lt;br /&gt;OS FreeBSD 7.1R&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. 啟動 ZFS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.conf &lt;/span&gt;  #加入開機自動啟動&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;zfs_enable="YES"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /boot/loader.conf&lt;/span&gt;   # 針對  ZFS FreeBSD 核心的最佳化調整&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;vm.kmem_size="330M"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;vm.kmem_size_max="330M"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;vfs.zfs.arc_max="40M"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;vfs.zfs.vdev.cache.size="5M"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /etc/rc.d/zfs start&lt;/span&gt;   # 手動啟動 ZFS&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# reboot&lt;/span&gt;   # 重新啟動讓調整的參數開機載入&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. ZFS 的 zpool 指令&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool create storage mirror ad2 ad3&lt;/span&gt;   # 建立 Raid1(1+1=1) Mirror 格式，資料會同時寫入兩棵 HD。&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df -h&lt;/span&gt;  # 查看 storage pool 是有已經建立&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem     Size    Used   Avail Capacity  Mounted on&lt;/span&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage        5.8G    6.9M    5.8G     0%    /storage&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool status&lt;/span&gt;     # 查看本機 ZFS 的狀態，這個系統中有一個 pool 名稱為 storage 是由兩棵代號 ad2 及 ad3 的實體硬碟 mirror 而成&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;pool: storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; state: ONLINE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; scrub: none requested&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;config:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        NAME        STATE     READ WRITE CKSUM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        storage     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;          mirror    ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;            ad2     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;            ad3     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;errors: No known data errors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool list&lt;/span&gt;   # 查看 pool 的空間使用狀態&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage                5.94G   7.00M   5.93G     0%  ONLINE     -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool offline storage ad2 &lt;/span&gt;  # 讓 storage 這個 pool 的 ad2 硬碟暫時離線&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Bringing device ad2 offline&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool status storage&lt;/span&gt;     # 查看狀態會有 DEGRADED 警告&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;pool: storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; state: DEGRADED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;status: One or more devices has been taken offline by the administrator.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        Sufficient replicas exist for the pool to continue functioning in a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        degraded state.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;action: Online the device using 'zpool online' or replace the device with&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        'zpool replace'.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; scrub: none requested&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;config:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        NAME        STATE     READ WRITE CKSUM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        storage     DEGRADED     0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;          mirror    DEGRADED     0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;            ad2     OFFLINE      0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;            ad3     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;errors: No known data errors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool online storage ad2&lt;/span&gt;   # 讓 storage 這個 pool 的 ad2 硬碟重新上線&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Bringing device ad2 online&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool status storage&lt;/span&gt;    # 查看狀態 DEGRADED 警告已解除&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;pool: storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; state: ONLINE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; scrub: resilver completed with 0 errors on Thu Apr  9 13:49:50 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;config:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        NAME        STATE     READ WRITE CKSUM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        storage     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;          mirror    ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;            ad2     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;            ad3     ONLINE       0     0     0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;errors: No known data errors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool export -f storage&lt;/span&gt;    # 卸除(umount) storage 這個 pool 參數 -f (Force) 為強制卸除&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df -h&lt;/span&gt;    # 查看是否 umount，已無 storage 這個 pool&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem     Size    Used   Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/ad0s1a     11G    1.4G    8.5G    14%    /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;devfs          1.0K    1.0K      0B   100%    /dev&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool import storage&lt;/span&gt;     # 掛載(mount) storage 這個 pool&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df -h&lt;/span&gt;    # 查看是否 mount，已重新掛載 storage pool&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem     Size    Used   Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/ad0s1a     11G    1.4G    8.5G    14%    /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;devfs          1.0K    1.0K      0B   100%    /dev&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage        5.8G    6.9M    5.8G     0%    /storage&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool scrub storage&lt;/span&gt;   # 手動驗證 storage 這個 pool 中所有資料的完整性&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zpool replace storage ad4 ad5&lt;/span&gt;   # 在 storage pool 中用新的 ad4 ad5 取代原本的 ad2 ad3 兩棵 HD&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. ZFS 的 zfs 指令&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs create storage/compressed&lt;/span&gt;    # 在 storage 這個 pool 中建立一個檔案目錄叫 compressed&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs list&lt;/span&gt;  # 查看 ZFS 檔案狀態&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;NAME                 USED  AVAIL  REFER  MOUNTPOINT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage             7.02M  5.84G  6.91M  /storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed    18K  5.84G    18K  /storage/compressed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs set compression=gzip storage/compressed&lt;/span&gt;  # 將 compressed 目錄設定成 gzip 壓縮格式&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs set compression=off storage/compressed&lt;/span&gt;    # 解除 compressed 目錄設的壓縮格式&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs mount&lt;/span&gt;   # 查看所有 ZFS 掛載的磁區&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage                         /storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed              /storage/compressed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs get all storage/compressed&lt;/span&gt;    # 查看 storage/compressed 檔案目錄屬性&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;NAME                PROPERTY       VALUE                  SOURCE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  type           filesystem             -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  creation       Thu Apr  9 14:14 2009  -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  used           18K                    -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  available      5.84G                  -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  referenced     18K                    -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  compressratio  1.00x                  -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  mounted        yes                    -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  quota          none                   default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  reservation    none                   default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  recordsize     128K                   default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  mountpoint     /storage/compressed    default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  sharenfs       off                    default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  checksum       on                     default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  compression    gzip                   local&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  atime          on                     default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  devices        on                     default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  exec           on                     default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  setuid         on                     default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  readonly       off                    default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  jailed         off                    default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  snapdir        hidden                 default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  aclmode        groupmask              default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  aclinherit     secure                 default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  canmount       on                     default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  shareiscsi     off                    default&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  xattr          off                    temporary&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed  copies         1                      default&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs set quota=3G storage/compressed &lt;/span&gt; # 可設定檔案空間大小為 3G 但 storage 這個 pool 總大小為 5.8G 如果 3G 滿了而 5.8 還未用完會 share 給 /storage/compressed 繼續使用&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df -h&lt;/span&gt;   # 查看 storage/compressed 的 Avail 變成 3G&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem                       Size    Used   Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage                          5.8G    7.0M    5.8G     0%    /storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed               3.0G    128K    3.0G     0%    /storage/compressed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs set reservation=3g storage/compressed&lt;/span&gt;  # 設定保留了 3G 給 /storage/compressed&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df -h&lt;/span&gt; # 查看 storage 的 Size 變成 2.8G，這是因為保留了 3G 給 /storage/compressed，代表 /storage/compressed 真正擁有 3G 別的 filesystem 是不能跟它 share 的&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem                       Size    Used   Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage                          2.8G    7.0M    2.8G     0%    /storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed               3.0G    128K    3.0G     0%    /storage/compressed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs create storage/data&lt;/span&gt;    #  於 storage pool 中再建立一個 data 檔案目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs set mountpoint=/data storage/data&lt;/span&gt;    # 設定真實掛載點原本 Mounted on 會由 /storage/data 變成到 /data&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem                    1K-blocks    Used   Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/ad0s1a                    11294270 1468766 8921964    14%    /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;devfs                                 1       1       0   100%    /dev&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage                         2982656    7040 2975616     0%    /storage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed              3145728     128 3145600     0%    /storage/compressed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/compressed@2009-04-09   3145728     128 3145600     0%    /storage/compressed/.zfs/snapshot/2009-04-09&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;storage/data                    2975616       0 2975616     0%    /data&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs set sharenfs=rw storage/data&lt;/span&gt;    # 設定分享權限可讀及寫，通常用在 NFS 分享上&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# touch /storage/compressed/1234&lt;/span&gt;    # 建一個檔案到 compressed 目錄下&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# md5 /storage/compressed&lt;/span&gt;     # 用 md5 去 hash snapshot 之前的目錄，會得到一個 hash 值&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;MD5 (/storage/compressed) = 7bffed2808dfba7915f89f8f42b09f83&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs snapshot storage/compressed@2009-04-09&lt;/span&gt;  # snapshot compressed 目錄，取個隨便名稱就用今天日期&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# md5 /storage/compressed/.zfs/snapshot/2009-04-09&lt;/span&gt;     # 再次用 hash 去驗證 snapshot 前後所得到的檔案是否一樣&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;MD5 (/storage/compressed/.zfs/snapshot/2009-04-09) = 7bffed2808dfba7915f89f8f42b09f83&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# zfs destroy storage/compressed&lt;/span&gt;   # 可刪除 storage/compressed 檔案目錄&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/ZFS"&gt;http://en.wikipedia.org/wiki/ZFS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://opensolaris.org/os/community/zfs/"&gt;http://opensolaris.org/os/community/zfs/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.freebsd.org/ZFS"&gt;http://wiki.freebsd.org/ZFS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/filesystems-zfs.html"&gt;http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/filesystems-zfs.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5638591234050521040?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5638591234050521040/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5638591234050521040' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5638591234050521040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5638591234050521040'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/04/fbsd-freebsd-zfs-filesystem.html' title='[ FBSD ] FreeBSD ZFS filesystem'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5175289940161502989</id><published>2009-04-02T12:46:00.001+08:00</published><updated>2009-04-02T12:49:28.892+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Lagg Interface Setup</title><content type='html'>FreeBSD 插雙(多)網卡方式，用意在針對網路卡容錯及增加網路卡效能。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;defaultrouter="192.168.1.254"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;ifconfig_vr0="up"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;ifconfig_vr1="up"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;cloned_interfaces="lagg0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;ifconfig_lagg0="laggproto failover laggport vr0 laggport vr1 inet 192.168.1.9 netmask 255.255.255.0"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;可套用的 Protocols&lt;/span&gt;：&lt;br /&gt;&lt;br /&gt;failover&lt;br /&gt;Sends and receives traffic only through the master port. If the master port becomes unavailable, the next active port is used. The first interface added is the master port; any interfaces added after that are used as failover devices.&lt;br /&gt;&lt;br /&gt;fec&lt;br /&gt;Supports Cisco EtherChannel. This is a static setup and does not negotiate aggregation with the peer or exchange frames to monitor the link.&lt;br /&gt;&lt;br /&gt;lacp&lt;br /&gt;Supports the IEEE 802.3ad Link Aggregation Control Protocol (LACP) and the Marker Protocol. LACP will negotiate a set of aggregable links with the peer in to one or more Link Aggregated Groups. Each LAG is composed of ports of the same speed, set to full-duplex operation. The traffic will be balanced across the ports in the LAG with the greatest total speed, in most cases there will only be one LAG which contains all ports. In the event of changes in physical connectivity, Link Aggregation will quickly converge to a new configuration.&lt;br /&gt;&lt;br /&gt;loadbalance&lt;br /&gt;Balances outgoing traffic across the active ports based on hashed protocol header information and accepts incoming traffic from any active port. This is a static setup and does not negotiate aggregation with the peer or exchange frames to monitor the link. The hash includes the Ethernet source and destination address, and, if available, the VLAN tag, and the IP source and destination address.&lt;br /&gt;&lt;br /&gt;roundrobin&lt;br /&gt;Distributes outgoing traffic using a round-robin scheduler through all active ports and accepts incoming traffic from any active port.&lt;br /&gt;&lt;br /&gt;none&lt;br /&gt;This protocol is intended to do nothing: it disables any traffic without disabling the lagg interface itself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/faq/freebsd-network-link-aggregation-trunking/"&gt;http://www.cyberciti.biz/faq/freebsd-network-link-aggregation-trunking/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5175289940161502989?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5175289940161502989/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5175289940161502989' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5175289940161502989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5175289940161502989'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/04/fbsd-lagg-interface-setup.html' title='[ FBSD ] Lagg Interface Setup'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4711355893284669012</id><published>2009-03-31T16:14:00.007+08:00</published><updated>2009-05-15T00:46:03.141+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeNAS'/><title type='text'>[ FBSD ] FreeNAS Rsync to Operate (Pull/Push)</title><content type='html'>&lt;a href="http://www.samba.org/rsync/"&gt;rsync&lt;/a&gt; 是一套非常棒的 OpenSource 檔案備份同步軟體，因為 rsync 在備份資料時有方向性(Pull/Push)，因此將此測試做個簡單的記錄以方便未來使用，過程是在兩台&lt;a href="http://www.freenas.org/"&gt;FreeNAS&lt;/a&gt; (Server/Client) 下操作，備份方式直接使用 SSH 連進 Client 端那台機器下 command 操作，FreeNAS 為 FreeBSD 所打包的嵌入式 &lt;a href="http://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E5%84%B2%E5%AD%98%E8%A8%AD%E5%82%99"&gt;NAS&lt;/a&gt; 系統因此基本操作都跟 FreeBSD 一樣。為何不用 FreeNAS WebGUI 上直接設定 rsync ？因為小弟在使用 FreeNAS 的 WebGUI 設定 rsync 時上遇到權限上的備份問題，且 WebGUI 對方向性(Pull/Push)的設定沒那麼彈性，因此我的用戶端才改為 command 操作，待測試 Ok 便可寫個 shell script 加入 crontab 就可用定時去同步備份。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;環境：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;B (192.168.1.8) Server 端&lt;br /&gt;使用 WebGUI 開啟Port 873 的 rsync 服務，同時分享出名稱為 office 的備份目錄。&lt;br /&gt;A (192.168.1.9) Client 端&lt;br /&gt;用 SSH 直接連進機器使用 commnad line 操作。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;操作方式：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A 機器上操作( 將 A 機器上要備份的 /mnt/office/main 目錄檔案送到 B 機器的 office 分享資料夾中)。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# rsync -avzrtopg  --delete-after /mnt/office/main 192.168.1.8::office&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A 機器上操作( 將 B 機器上分享的 office 檔案夾取回到 A 機器的 /mnt/office/main  分享資料夾中)。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# rsync -avzrtopg --delete-after 192.168.1.8::office /mnt/office/main/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;下 command 的基本原則。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# rsync  (參數)  (Source來源端)  (Destination目的端)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;參數說明：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*  -a, –archive archive mode，檔案模式。&lt;br /&gt;* -v, –verbose increase verbosity，觀看過程。&lt;br /&gt;* -z, –compress compress file data，壓縮資料。&lt;br /&gt;* -P, – equivalent to –partial –progress，顯示程序進度%。&lt;br /&gt;* -delete , –delete files that don't exist on the sending side (參數 -after 表示完成同步後再刪除)，保持二台機器資料的一致性。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.samba.org/ftp/rsync/rsync.html"&gt;http://www.samba.org/ftp/rsync/rsync.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4711355893284669012?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4711355893284669012/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4711355893284669012' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4711355893284669012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4711355893284669012'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/03/fbsd-freenas-rsync-to-oprate-pullpush.html' title='[ FBSD ] FreeNAS Rsync to Operate (Pull/Push)'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3289967672262852589</id><published>2009-03-27T15:27:00.010+08:00</published><updated>2009-06-29T10:07:34.900+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] The System File Types atime mtime ctime</title><content type='html'>在系統中所有的檔案文件都有3種時間狀態保存於檔案中，我們可利用檔案時間的特性來寫 Shell Script 程式做定時清空目錄資料夾。&lt;br /&gt;&lt;br /&gt;atime (Access Time) 是檔案文件最後一次讀的時間或執行文件的時間。&lt;br /&gt;mtime (Modified Time) 是檔案文件最後一次寫的時間，是會在我們寫入檔案文件時隨文件的內容更改而更改。&lt;br /&gt;ctime (Create Time) 是檔案建立或狀態改變的時間，當有寫入文件、更改擁有者、權限或link設定時 i-node 會隨著內容的更改而更改。&lt;br /&gt;&lt;br /&gt;下面的 Script 是使用 Create Time 來判斷網路磁碟上的檔案文件是否放置超過1小時，如果檔案文件超過1小時就刪除，我們使用 cmin 用分鐘來計算。&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;echo "Begin find and delete one hour files."&lt;br /&gt;find /FS2/ftp/*/* -name "*" -cmin +60 -exec rm -rf {} \;&lt;br /&gt;echo "The one hour before ftp files had delete."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;PS：甚麼是 i-node？當一個檔案要儲存於硬碟的時候，會分配到一個 i-node 指標，它指示檔案存放在硬碟上的實體位置，以及其它的一些相關資訊。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3289967672262852589?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3289967672262852589/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3289967672262852589' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3289967672262852589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3289967672262852589'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/03/fbsd-system-file-types-atime-mtime.html' title='[ FBSD ] The System File Types atime mtime ctime'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3493743841895794634</id><published>2009-03-20T15:37:00.008+08:00</published><updated>2009-04-08T23:50:15.602+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD iSCSI Setup</title><content type='html'>iSCSI, Internet SCSI(Small Computer System Interface) 應用越來越普遍，在 FreeBSD上裝來玩看看，環境為兩台主機，伺服器端 target 的 IP 為 192.168.1.9，用戶端 initiator 的 IP 則相同網段的任意 IP。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. 安裝 FreeBSD iSCSI 的伺服器端 target &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/net/iscsi-target&lt;/span&gt;   # 使用 ports 直接安裝&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean; rehash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /usr/local/etc/iscsi/targets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# extents       file                    start   length&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;extent0         /tmp/iscsi-target0      0       2GB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# target        flags   storage         netmask&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;target0         rw      extent0         192.168.1.0/26&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.conf&lt;/span&gt;     # 開機自動啟動 iSCSI target&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;iscsi_target_enable="YES"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /usr/local/etc/rc.d/iscsi_target start&lt;/span&gt;    # 手動啟動 iSCSI target&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Starting iscsi_target.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Reading configuration from `/usr/local/etc/iscsi/targets'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;target0:rw:192.168.1.0/26&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        extent0:/tmp/iscsi-target0:0:2147483648&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;DISK: 1 logical unit (4194304 blocks, 512 bytes/block), type iscsi fs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;DISK: LUN 0: 2048 MB disk storage for "target0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;TARGET: TargetName is iqn.1994-04.org.netbsd.iscsi-target&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ls -l /tmp&lt;/span&gt;   # 查看 tmp 目錄下是否多了個 2G 大小的 iscsi-target0 檔&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;-rw-r--r--  1 root  wheel  2147483648 Mar 19 09:33 iscsi-target0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. 設定 FreeBSD iSCSI 的用戶端 initiator&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /boot/loader.conf&lt;/span&gt;     # 讓開機可以自動載入 iscsi_initiator 核心模組&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;iscsi_initiator_load="YES"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# kldload iscsi_initiator &lt;/span&gt;    # 手動載入 iscsi_initiator 核心模組&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# kldstat&lt;/span&gt;    # 查看有無載入  iscsi_initiator.ko&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Id Refs Address    Size     Name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 1    6 0xc0400000 97f830   kernel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 2    1 0xc4c71000 f000     iscsi_initiator.ko&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# iscontrol -d -t 192.168.1.9&lt;/span&gt;      # 測試 iSCSI 連線&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;TargetName=iqn.1994-04.org.netbsd.iscsi-target:target0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;TargetAddress=192.168.1.9:3260,1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# iscontrol -c /etc/iscsi.conf -n target0&lt;/span&gt;     # 啟動 iSCSI session&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;iscontrol[2664]: running&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;iscontrol[2664]: (pass0:iscsi0:0:0:0):  tagged openings now 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;iscontrol[2664]: cam_open_btl: no passthrough device found at 0:0:1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;iscontrol[2664]: cam_open_btl: no passthrough device found at 0:0:2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;iscontrol[2664]: cam_open_btl: no passthrough device found at 0:0:3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;iscontrol: supervise starting main loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#cat /var/log/messages&lt;/span&gt;    # 會有下面兩行訊息表示 /dev/da0 介面已經被建立&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 09:45:11 ntut kernel: da0 at iscsi0 bus 0 target 0 lun 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 09:45:11 ntut kernel: da0: &lt;netbsd&gt; Fixed Direct Access SCSI-3 device&lt;/netbsd&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# newfs /dev/da0&lt;/span&gt;    # 格式化 /dev/da0 檔案系統&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/da0: 2048.0MB (4194304 sectors) block size 16384, fragment size 2048&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        using 12 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;super-block backups (for fsck -b #) at:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976, 3387328, 3763680, 4140032&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mkdir /mydata&lt;/span&gt;    # 建立目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 153);"&gt;# mount /dev/da0 /mydata&lt;/span&gt;     # 掛載檔案系統&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem  1K-blocks    Used    Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/da0      2026030       4  1863944     0%    /mydata&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. 用戶端 FreeBSD 如何開機自動掛載 iSCSI 硬碟？參考網路上前人所寫的&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; Shell Script &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;開機可以自動掛載啟動檔&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.d/iscsi&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="c"&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# PROVIDE: iscsi&lt;br /&gt;# REQUIRE: NETWORKING&lt;br /&gt;# BEFORE: mountcritremote&lt;br /&gt;# KEYWORD: shutdown&lt;br /&gt;&lt;br /&gt;. /etc/rc.subr&lt;br /&gt;&lt;br /&gt;name="iscsi"&lt;br /&gt;start_cmd="iscsi_start"&lt;br /&gt;stop_cmd="iscsi_stop"&lt;br /&gt;rcvar="iscsi_enable"&lt;br /&gt;required_modules="iscsi_initiator:iscsi"&lt;br /&gt;&lt;br /&gt;iscsi_start()&lt;br /&gt;{&lt;br /&gt;        ${iscsi_command} -c ${iscsi_config} -n ${iscsi_nickname}&lt;br /&gt;        if [ -f ${iscsi_fstab} ]; then&lt;br /&gt;                devs=`sed -e '/^#/d' &lt; ${iscsi_fstab} | cut -f 1`&lt;br /&gt;                for xdev in $devs&lt;br /&gt;                do&lt;br /&gt;                        i=10&lt;br /&gt;                        echo "Wait for $xdev"&lt;br /&gt;                        while [ $i -ne 0 ]&lt;br /&gt;                        do&lt;br /&gt;                                [ -c $xdev ] &amp;&amp; break&lt;br /&gt;                                sleep 1&lt;br /&gt;                                i=$(($i-1))&lt;br /&gt;                        done&lt;br /&gt;                done&lt;br /&gt;&lt;br /&gt;                echo "mount -a -F ${iscsi_fstab}"&lt;br /&gt;                mount -a -F ${iscsi_fstab}&lt;br /&gt;        fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;iscsi_stop()&lt;br /&gt;{&lt;br /&gt;        if [ -f ${iscsi_fstab} ]; then&lt;br /&gt;                echo "umount -a -F ${iscsi_fstab}"&lt;br /&gt;                umount -a -F ${iscsi_fstab}&lt;br /&gt;        fi&lt;br /&gt;        killall -HUP ${iscsi_command}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;load_rc_config $name&lt;br /&gt;&lt;br /&gt;: ${iscsi_enable="NO"}&lt;br /&gt;: ${iscsi_command="iscontrol"}&lt;br /&gt;: ${iscsi_nickname="target0"}&lt;br /&gt;: ${iscsi_config="/etc/iscsi.conf"}&lt;br /&gt;: ${iscsi_fstab="/etc/iscsi.fstab"}&lt;br /&gt;&lt;br /&gt;run_rc_command "$1"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# chmod 555 /etc/rc.d/iscsi&lt;/span&gt;    #  改變權限&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/iscsi.fstab&lt;/span&gt;     # 設定開機掛載 HD&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;/dev/da0             /mydata         ufs     rw              3       3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.conf    &lt;/span&gt;# 加入開機自動執行&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;iscsi_enable="YES"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. 如何使用 AES 加密檔案系統掛載 iSCSI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# kldload geom_eli.ko&lt;/span&gt;    # 載入核心加密模組 GEOM_ELI&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# kldstat&lt;/span&gt;     # 查看載入的核心模組&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Id Refs Address    Size     Name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 1    9 0xc0400000 97f830   kernel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 2    1 0xc4c71000 f000     iscsi_initiator.ko&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 3    1 0xc4f93000 10000    geom_eli.ko&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 4    1 0xc4fa3000 23000    crypto.ko&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 5    1 0xc4fc6000 a000     zlib.ko&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# geli init /dev/da0&lt;/span&gt;    # 初始化 /dev/da0 需輸入密碼 , 這邊採用 AES 加密&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Enter new passphrase:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Reenter new passphrase:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# geli attach /dev/da0&lt;/span&gt;    # 加密 /dev/da0 輸入剛剛加密密碼&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Enter passphrase:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cat /var/log/message&lt;/span&gt;    # 查看核心 log&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 09:54:43 ntut kernel: cryptosoft0: &lt;software&gt; on motherboard&lt;/software&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 09:59:48 ntut kernel: GEOM_ELI: Device da0.eli created.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 09:59:48 ntut kernel: GEOM_ELI: Encryption: AES-CBC 128&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 09:59:48 ntut kernel: GEOM_ELI:     Crypto: software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /boot/loader.conf&lt;/span&gt;    # 加入開機自動載入 GEOM_ELI  加密模組&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;geom_eli_load="YES"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# newfs -U -L mydata /dev/da0.eli&lt;/span&gt;     # 格式化加密檔案系統&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/da0.eli: 2048.0MB (4194300 sectors) block size 16384, fragment size 2048&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        using 12 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;        with soft updates&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;super-block backups (for fsck -b #) at:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976, 3387328, 3763680, 4140032&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cat /var/log/message&lt;/span&gt;    # 查看核心 log 可發現多了區塊標籤 ufs/mydata&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Mar 19 10:04:58 ntut kernel: GEOM_LABEL: Label for provider da0.eli is ufs/mydata.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mkdir /mydata&lt;/span&gt;    # 建立檔案目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mount /dev/ufs/mydata /mydata &lt;/span&gt;    # 掛載檔案目錄&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# df&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;    # 查看檔案目錄&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem      1K-blocks    Used    Avail Capacity  Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/ufs/mydata   2026028       4  1863942     0%    /mydata&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;如何在 Windows 運行 Initiator 用戶端 ?&lt;br /&gt;&lt;br /&gt;Vista/2K8 已經內建支援 iSCSI 用戶端軟體 XP/2K 則需到微軟官網下載軟體安裝方可運行 iSCSI&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=12cb3c1a-15d6-4585-b385-befd1319f825&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=12cb3c1a-15d6-4585-b385-befd1319f825&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ivoras.sharanet.org/freebsd/iscsi-eli.html"&gt;http://ivoras.sharanet.org/freebsd/iscsi-eli.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/faq/freebsd-iscsi-initiator-howto/"&gt;http://www.cyberciti.biz/faq/freebsd-iscsi-initiator-howto/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://shell.peach.ne.jp/aoyama/archives/45"&gt;http://shell.peach.ne.jp/aoyama/archives/45&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3493743841895794634?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3493743841895794634/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3493743841895794634' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3493743841895794634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3493743841895794634'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/03/fbsd-freebsd-iscsi-setup.html' title='[ FBSD ] FreeBSD iSCSI Setup'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-8826102314905387779</id><published>2009-03-17T15:16:00.004+08:00</published><updated>2009-03-17T15:27:08.208+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD network interface traffic monitor</title><content type='html'>vnstat 是針對網路卡介面做流量統計監控程式。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/net/vnstat&lt;/span&gt;     # 直接使用 ports 安裝 vnstat&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean ; rehash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vnstat --testkernel&lt;/span&gt;    # 測試核心是否可以運作 vnstat&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;This test will take about 60 seconds.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;[==============================] done.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Detected boot time variation during test:   0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Maximum boot time variation set in config: 15&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;The current kernel doesn't seem to suffer from boot time variation problems.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Everything is ok.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 153);"&gt;# vnstat -u -i fxp0&lt;/span&gt;      # 第一次執行會自行建立跟網卡名稱相同的DB, 放在 /var/db/vnstat 目錄下&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Error:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Unable to read database "/var/db/vnstat/fxp0".&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;-&gt; A new database has been created.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 153);"&gt;# vnstat -u -i fxp0&lt;/span&gt;    # 手動再更新一次&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cat /usr/local/share/doc/vnstat/vnstat-cron&lt;/span&gt;      # 查看 vnstat 程式的 crontab 範例檔&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;*/5 *  * * *   root    if [ -x /usr/local/bin/vnstat ] &amp;amp;&amp;amp; [ `ls -l /var/db/vnstat/ | wc -l` -ge 1 ]; then /usr/local/bin/vnstat -u; fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# crontab -e&lt;/span&gt;   # 將 vnstat-cron 內容加到 crontab 裡讓 vnstat 5分鐘更新一次資料庫&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;*/5 *  * * *   root    if [ -x /usr/local/bin/vnstat ] &amp;amp;&amp;amp; [ `ls -l /var/db/vnstat/ | wc -l` -ge 1 ]; then /usr/local/bin/vnstat -u; fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;範例：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vnstat -l -i fxp0&lt;/span&gt;    # 查看即時流量 Tx/Rx 及進出網卡封包數量&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Monitoring fxp0...    (press CTRL-C to stop)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;   rx:       0.03 kB/s     1 p/s            tx:       0.19 kB/s     0 p/s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;參數說明：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-h : 24hr 的流量統計&lt;br /&gt;-d : 一個月每天的流量統計&lt;br /&gt;-m : 一年每月的流量統計&lt;br /&gt;-t : Top 10 的流量統計&lt;br /&gt;-w : 過去七天與上週跟本週的流量總計&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://humdi.net/vnstat/"&gt;http://humdi.net/vnstat/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sqweek.com/sqweek/index.php?p=1"&gt;http://www.sqweek.com/sqweek/index.php?p=1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-8826102314905387779?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/8826102314905387779/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=8826102314905387779' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8826102314905387779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8826102314905387779'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/03/fbsd-freebsd-network-interface-traffic.html' title='[ FBSD ] FreeBSD network interface traffic monitor'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5245774200777092393</id><published>2009-02-27T11:21:00.003+08:00</published><updated>2009-02-27T11:30:08.348+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] About Sticky bit</title><content type='html'>Sticky bit (黏著位元) 使用在 Unix/Linux 的檔案管理上，是幫檔案設上一個特殊標籤，當這個標籤被打開時，只有檔案的擁有者才能刪除這個檔案(root 除外)，其它使用者就算具有 w 的權限，也只能修改檔案的內容，而不能將檔案刪除。如果一個目錄具有這個位元標籤，那麼其下所建立的檔案，也都將具有這個標籤屬性。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Examples：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FreeBSD 的  /tmp 目錄即為一個典型的 Sticky bit 標籤目錄，Other 權限的使用者就算具有 w 的權限，也只能修改檔案的內容，而不能將檔案刪除。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ls -ld /tmp &lt;/span&gt;     # 查看 /tmp 目錄權限的最後會顯示 t ，這表示 /tmp 為具有 Sticky bit 的目錄。&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;drwxrwxrwt    8 root     wheel         512  2 27 03:32 /tmp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mkdir /test   ; chmod +t test&lt;/span&gt;    # 建立一個目錄並指定 Sticky bit 標籤給它。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ls -ld /test &lt;/span&gt;     # 查看是否成功，目錄權限顯示多一個 t。&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;drwxr-xr-t    2 root     wheel         512  2 27 11:11 /test&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Sticky_bit"&gt;http://en.wikipedia.org/wiki/Sticky_bit&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/faq/find-all-world-writable-directories-have-stickybitsset-on/"&gt;http://www.cyberciti.biz/faq/find-all-world-writable-directories-have-stickybitsset-on/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5245774200777092393?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5245774200777092393/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5245774200777092393' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5245774200777092393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5245774200777092393'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/02/fbsd-about-sticky-bit.html' title='[ FBSD ] About Sticky bit'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4678465099426158244</id><published>2009-02-23T11:52:00.011+08:00</published><updated>2009-02-23T14:39:19.865+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] The /var/spool/clientmqueue to fill up disk space</title><content type='html'>A long time ago, my partner turnoff sendmail(daemon) on our Unix boxes(FreeBSD) but sending email must be still working. After turning off, mails being sent got stucked in /var/spool/clientmqueue.The recently ran out of disk space on our FreeBSD system. When I invesitgated this, I found that /var/spool/clientmqueue was occupying 1.5GB of disk space (as revealed by issuing "du -h /var/spool" ).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(一) Open System MTA &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.conf&lt;/span&gt;     # mark sendmail_enable="NONE", sendmail MTA  service is  only for localhost(127.0.0.1)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;#sendmail_enable="NONE"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(二) Clean up Disk Space&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# rm -rf /var/spool/cilentmqueue/*&lt;/span&gt;       # can't delete file and show Argument list too long&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/bin/rm: Argument list too long.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How to clean up disk space on /var/spool/clientmqueue  ?&lt;br /&gt;&lt;br /&gt;Solution 1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# rm -rf /var/spool/cilentmqueue&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mkdir /var/spool/cilentmqueue &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# chown smmsp:smmsp /var/spool/cilentmqueue &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solution 2.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /var/spool/clientmqueue&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ls| xargs rm -f&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4678465099426158244?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4678465099426158244/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4678465099426158244' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4678465099426158244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4678465099426158244'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/02/fbsd-varspoolclientmqueue-to-fill-up.html' title='[ FBSD ] The /var/spool/clientmqueue to fill up disk space'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3463710762931622116</id><published>2009-02-20T12:03:00.009+08:00</published><updated>2009-02-20T15:46:23.345+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><title type='text'>[ Crypto ] One-time password / Hash chain</title><content type='html'>One-time Password / Hash Chain&lt;br /&gt;    &lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1pyr5C0qB1Pyi8mfMi-sKeTH9-fE4jcod3oB1DGFFRs2gt8UX65Jxm3QVZ2OQXXnH33JiZIERnMc5Qa-ZYFse8rA/hash%20chain.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Notation：&lt;/span&gt;&lt;br /&gt;h(X)：a one-way hash fuction&lt;br /&gt;S： a password of client&lt;br /&gt;m：number of hash&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Initial：h&lt;/span&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;m&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;(S)&lt;/span&gt;&lt;br /&gt;The user computes α = h&lt;span style="font-size:78%;"&gt;m&lt;/span&gt;(S) = h(h...h(h(S)...))  to Server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Authentication Process：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Client-&gt;Server：α'&lt;/span&gt;&lt;br /&gt;1) Compute α' = h&lt;span style="font-size:78%;"&gt;m-1&lt;/span&gt;(S)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Server-&gt;Client：accept/reject&lt;/span&gt;&lt;br /&gt;1) Compute α' = h(h&lt;span style="font-size:78%;"&gt;m-1&lt;/span&gt;(S))&lt;br /&gt;2) Verify α' and α&lt;br /&gt;3) Save α'&lt;br /&gt;&lt;br /&gt;While the user wants to be authenticated again, the Client computes α"= h(h&lt;span style="font-size:78%;"&gt;m-2&lt;/span&gt;(S)) send to the Server. Identical to above steps, the Server then computes α" and compare α'  determine whether this authentication is passed or not.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ref.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/One-time_password"&gt;http://en.wikipedia.org/wiki/One-time_password&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/S/KEY"&gt;http://en.wikipedia.org/wiki/S/KEY&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3463710762931622116?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3463710762931622116/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3463710762931622116' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3463710762931622116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3463710762931622116'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/02/crypto-one-time-password-hash-chain.html' title='[ Crypto ] One-time password / Hash chain'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6988586646048433234</id><published>2009-02-19T10:19:00.004+08:00</published><updated>2009-02-19T14:16:43.357+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><title type='text'>[ Crypto ] Simple Authentication Procedure</title><content type='html'>The  Simple Authentication Procedure.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p08MiPaHBIHHR0Ngqo1DkJz0q-FsYWlWXOUnFgEzxwE8JBdBGSnNRku_9_nVgCYwdCgYtxIxCZG5qQtKvbx3juw/Simple%20Authentication.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Notation：&lt;/span&gt;&lt;br /&gt;t：time stamp.&lt;br /&gt;r：random number.&lt;br /&gt;ID：identifier of Client.&lt;br /&gt;PW：a password of client.&lt;br /&gt;h(X)：a one-way hash function&lt;br /&gt;α, α'：two secure one-way hash functions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Authentication Process&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Client-&gt;Server：t, r, ID, α&lt;/span&gt;&lt;br /&gt;1) Generate t&lt;br /&gt;2) Generate r&lt;br /&gt;3) Compute α=h(t, r, ID,PW)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Server-&gt;Client：accept/reject&lt;/span&gt;&lt;br /&gt;1) Compute α'=h(t, r, ID,PW)&lt;br /&gt;2) Verify α' and α&lt;br /&gt;3) Verify t&lt;br /&gt;&lt;br /&gt;PW has been pre-stored in Server database. If α' is equal to α authentication is passed. The time stamp can be avoided reply attack, It is record client sent time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6988586646048433234?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6988586646048433234/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6988586646048433234' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6988586646048433234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6988586646048433234'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/02/crypto-simple-authentication-procedure.html' title='[ Crypto ] Simple Authentication Procedure'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7033061257446112720</id><published>2009-01-22T10:06:00.004+08:00</published><updated>2009-01-22T10:13:32.049+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD ports tarball clean</title><content type='html'>我們習慣在 FreeBSD 的 Ports 安裝軟體時同時下 make clean 做清除的動作，而 make clean 這個清除動作僅只是對編輯期間所需要的工作目錄(work)做清除，並沒有將編譯 Ports 時所一併下載的 tarball 檔做刪除(相對應之 tarball 預設會存放在 /usr/ports/distfiles)。&lt;br /&gt;&lt;br /&gt;(一). 如果希望清除 ports 的暫存目錄，則：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports&lt;/span&gt;      # 清除 ports 下所有的暫存目錄。&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/ftp&lt;/span&gt;    # 清除所有 ftp 分類的暫存目錄。&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(二). 如果打算也把 tarball 也一併清除的話，則：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports&lt;/span&gt;        # 清除 ports 下所有分類的暫存目錄以及 tarball。&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make distclean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/ftp&lt;/span&gt;       # 清除所有 ftp 分類的暫存目錄以及 tarball。&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make distclean&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7033061257446112720?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7033061257446112720/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7033061257446112720' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7033061257446112720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7033061257446112720'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/01/fbsd-freebsd-ports-tarball-clean.html' title='[ FBSD ] FreeBSD ports tarball clean'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4407930154156106877</id><published>2009-01-12T15:05:00.003+08:00</published><updated>2009-01-12T16:27:52.993+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD Color Show</title><content type='html'>讓 freebsd 的目錄與 Linux 中的目錄一樣可以顯示色彩，安裝 gnuls。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd  /usr/ports/misc/gnuls&lt;/span&gt;     # 安裝 gnuls&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi ~/.bashrc&lt;/span&gt;    # Bash shell 設定&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias ls='ls -G'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias ls="gnuls --color=auto --show-control-chars"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi ~/.cshrc&lt;/span&gt;     # C shell 設定&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias ls 'gnuls --color --show-control-chars'&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4407930154156106877?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4407930154156106877/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4407930154156106877' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4407930154156106877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4407930154156106877'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/01/fbsd-freebsd-color-show.html' title='[ FBSD ] FreeBSD Color Show'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5511738534540956881</id><published>2009-01-08T17:14:00.002+08:00</published><updated>2009-01-08T17:22:04.346+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD HD benchmark tools diskinfo</title><content type='html'>在 Linux 中有 hdparm 工具可量測硬碟效能，而 FreeBSD 中會找不到 hdparm 因此我們可以使用 diskinfo 這個工具來測試硬碟效能。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# diskinfo -t /dev/ad0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;ad0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        512             # sectorsize&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        13664550912     # mediasize in bytes (13G)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        26688576        # mediasize in sectors&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        26476           # Cylinders according to firmware.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        16              # Heads according to firmware.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        63              # Sectors according to firmware.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Seek times:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Full stroke:      250 iter in   5.524625 sec =   22.099 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Half stroke:      250 iter in   4.289534 sec =   17.158 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Quarter stroke:   500 iter in   7.275793 sec =   14.552 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Short forward:    400 iter in   3.218473 sec =    8.046 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Short backward:   400 iter in   3.699358 sec =    9.248 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Seq outer:       2048 iter in   0.394247 sec =    0.193 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Seq inner:       2048 iter in   0.394491 sec =    0.193 msec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Transfer rates:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        outside:       102400 kbytes in   5.458743 sec =    18759 kbytes/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        middle:        102400 kbytes in   6.100707 sec =    16785 kbytes/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        inside:        102400 kbytes in   9.132279 sec =    11213 kbytes/sec&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5511738534540956881?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5511738534540956881/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5511738534540956881' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5511738534540956881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5511738534540956881'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/01/fbsd-freebsd-hd-benchmark-tools.html' title='[ FBSD ] FreeBSD HD benchmark tools diskinfo'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6207363905682030156</id><published>2009-01-06T14:54:00.002+08:00</published><updated>2009-01-06T14:56:56.328+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD 7.1 Release</title><content type='html'>FreeBSD 7.1 Release&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.freebsd.org/releases/7.1R/relnotes.html"&gt;http://www.freebsd.org/releases/7.1R/relnotes.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6207363905682030156?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6207363905682030156/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6207363905682030156' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6207363905682030156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6207363905682030156'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2009/01/fbsd-freebsd-71-release.html' title='[ FBSD ] FreeBSD 7.1 Release'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3915476584006407321</id><published>2008-12-29T13:40:00.001+08:00</published><updated>2008-12-29T13:43:18.352+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu 4GB Ram Limitation and Solution</title><content type='html'>如何讓 Ubuntu OS 支援 4G 以上記憶體？有兩種選擇方式：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;選擇一：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;大膽前進開始使用 64bit 的 OS&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;選擇二：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;已經安裝 32bit OS 但不想轉換成 64bit OS 的方式，可安裝有開啟 PAE ( Physical Address Extension ) 的 Kernel 一般 Linux Server 版本的 OS 都有支援，其安裝方式如下：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo sudo apt-get install linux-headers-server linux-image-server linux-server&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/faq/ubuntu-linux-4gb-ram-limitation-solution/"&gt;http://www.cyberciti.biz/faq/ubuntu-linux-4gb-ram-limitation-solution/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3915476584006407321?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3915476584006407321/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3915476584006407321' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3915476584006407321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3915476584006407321'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/12/los-ubuntu-4gb-ram-limitation-and.html' title='[ LOS ] Ubuntu 4GB Ram Limitation and Solution'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-2438337830017284227</id><published>2008-11-25T10:34:00.004+08:00</published><updated>2008-11-25T11:23:50.254+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Measure IDE / SATA hard disk data transfer speed</title><content type='html'>如在 CentOS Linux 下做硬碟的 Benchmark 測試？使用內鍵工具 hdparm&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# hdparm -t /dev/hda2&lt;/span&gt;    # 測試 IDE hda2 硬碟每秒讀取時間 &lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/dev/hda2:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Timing cached reads: 1348 MB in 2.00 seconds = 673.60 MB/sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Timing buffered disk reads: 168 MB in 3.02 seconds = 55.64 MB/sec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# for i in 1 2 3; do hdparm -t /dev/hda2; done&lt;/span&gt; # 連續測三次&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/dev/hda2:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Timing buffered disk reads: 168 MB in 3.02 seconds = 55.68 MB/sec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/dev/hda2:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Timing buffered disk reads: 166 MB in 3.02 seconds = 55.00 MB/sec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/dev/hda2:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Timing buffered disk reads: 110 MB in 3.00 seconds = 36.62 MB/sec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;參數說明：&lt;br /&gt;&lt;br /&gt;-t : 實際硬碟讀取時間&lt;br /&gt;-T : 硬碟快取讀取時間&lt;br /&gt;/dev/sda : 硬碟名稱 sd 開頭為 SATA 硬碟 hd 開頭為一般 IDE 硬碟&lt;br /&gt;&lt;br /&gt;參考：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/tips/how-fast-is-linux-sata-hard-disk.html"&gt;http://www.cyberciti.biz/tips/how-fast-is-linux-sata-hard-disk.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/hdparm/"&gt;http://sourceforge.net/projects/hdparm/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-2438337830017284227?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/2438337830017284227/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=2438337830017284227' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2438337830017284227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2438337830017284227'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/11/los-measure-ide-sata-hard-disk-data_25.html' title='[ LOS ] Measure IDE / SATA hard disk data transfer speed'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7622789046789682793</id><published>2008-11-07T18:41:00.009+08:00</published><updated>2010-03-23T16:02:39.951+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>[ Java ] About Interface &amp; Implements</title><content type='html'>Java 介面(Interface) and 實作(Implements)&lt;br /&gt;&lt;br /&gt;定義撥放器介面 IPod&lt;br /&gt;&lt;pre class="brush: java"&gt;public interface IPod {&lt;br /&gt;String d1 = "MP3";&lt;br /&gt;String d2 = "VIDEO";&lt;br /&gt;void Play(String disk);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;定義 MP3 的類別 IMP3 同時需實作 IPod 這個 Interface&lt;br /&gt;&lt;pre class="brush: java"&gt;public class IMP3 implements IPod {&lt;br /&gt;public void Play(String disk){&lt;br /&gt;if (disk.equals(d1))&lt;br /&gt;System.out.println("Music Playing\n");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;定義 VIDEO 的類別 IVIDEO 同時也實作 IPod 這個 Interface&lt;br /&gt;&lt;pre class="brush: java"&gt;public class IVIDEO implements IPod {&lt;br /&gt;public void Play(String disk){&lt;br /&gt;if (disk.equals(d2))&lt;br /&gt;System.out.println("Video Playing\n");&lt;br /&gt;} &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;主程式 JPlayer&lt;br /&gt;&lt;pre class="brush: java"&gt;import java.io.*;&lt;br /&gt;public class JPlayer {&lt;br /&gt;public static void main(String[] args) throws IOException {&lt;br /&gt;BufferedReader keyin = new BufferedReader(&lt;br /&gt;new InputStreamReader(System.in));&lt;br /&gt;System.out.println("Please Input MP3 or VIDEO ?");&lt;br /&gt;String st = keyin.readLine();&lt;br /&gt;System.out.println();&lt;br /&gt;&lt;br /&gt;IMP3 p1 = new IMP3();&lt;br /&gt;p1.Play(st);&lt;br /&gt;&lt;br /&gt;IVIDEO p2 = new IVIDEO();&lt;br /&gt;p2.Play(st);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;結果：&lt;br /&gt;&lt;br /&gt;Please Input MP3 or VIDEO ? VIDEO&lt;br /&gt;Video Playing&lt;br /&gt;&lt;br /&gt;Please Input MP3 or VIDEO ? MP3&lt;br /&gt;Music Playing&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;Java 的 Interface 中包含了資料成員及方法成員，『資料成員』的內容一定要有設定值或宣告常數。而『方法成員』中只能定義功能的原型，其實作功能內容則交由相關聯的類別處理。此程式為一個模擬撥放器 JPlayer，可提供 MP3 及 VIDEO 撥放功能介面，當選擇 MP3 時則撥放音樂；當選擇 VIDEO 時就會撥放影片。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7622789046789682793?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7622789046789682793/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7622789046789682793' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7622789046789682793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7622789046789682793'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/11/java-about-interface-implements.html' title='[ Java ] About Interface &amp; Implements'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7357928403332372614</id><published>2008-11-05T09:56:00.011+08:00</published><updated>2010-03-23T16:05:52.590+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>[ Java ] About Override &amp; Super</title><content type='html'>Java 覆蓋 (Override) 範例：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;class JCatKind{&lt;br /&gt;    private String kind;&lt;br /&gt;    void SetKind(String k){&lt;br /&gt;        kind = k;&lt;br /&gt;    }&lt;br /&gt;    void Show(){&lt;br /&gt;        System.out.println("Pet Kind :"+kind);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class JCat extends JCatKind{&lt;br /&gt;    private String name;&lt;br /&gt;    private int age;&lt;br /&gt;    void SetName(String n){&lt;br /&gt;        name = n;&lt;br /&gt;    }&lt;br /&gt;    void SetAge(int a){&lt;br /&gt;        age = a;&lt;br /&gt;    }&lt;br /&gt;    void Show(){&lt;br /&gt;        System.out.println("Pet Name :"+name);&lt;br /&gt;        System.out.println("Pet Age :"+age);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class JOverride {&lt;br /&gt;    public static void main(String[] args){&lt;br /&gt;        JCat cat = new JCat();&lt;br /&gt;        cat.SetKind("波斯貓");&lt;br /&gt;        cat.SetName("小花");&lt;br /&gt;        cat.SetAge(1);&lt;br /&gt;        cat.Show();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;輸出：&lt;br /&gt;&lt;br /&gt;Pet Name :小花&lt;br /&gt;Pet Age :1&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;程式中有兩個Show()方法，子類別JCat會繼承父類別JCatKind的成員，而子類別中同樣有定義了一個與父類別相同的名稱方法成員且傳入的參數及型別皆相同，此時父類別中的方法會被子類別中的方法給覆蓋掉，當我們呼叫Show()方法時只會執行子類別的Show()方法。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Java 使用 Super 範例：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;class JCatKind{&lt;br /&gt;    private String kind;&lt;br /&gt;    void SetKind(String k){&lt;br /&gt;        kind = k;&lt;br /&gt;    }&lt;br /&gt;    void Show(){&lt;br /&gt;        System.out.println("Pet Kind :"+kind);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class JCat extends JCatKind{&lt;br /&gt;    private String name;&lt;br /&gt;    private int age;&lt;br /&gt;    void SetName(String n){&lt;br /&gt;        name = n;&lt;br /&gt;    }&lt;br /&gt;    void SetAge(int a){&lt;br /&gt;        age = a;&lt;br /&gt;    }&lt;br /&gt;    void Show(){&lt;br /&gt;        super.Show();&lt;br /&gt;        System.out.println("Pet Name :"+name);&lt;br /&gt;        System.out.println("Pet Age :"+age);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class JOverride {&lt;br /&gt;    public static void main(String[] args){&lt;br /&gt;    JCat cat = new JCat();&lt;br /&gt;    cat.SetKind("波斯貓");&lt;br /&gt;    cat.SetName("小花");&lt;br /&gt;    cat.SetAge(1);&lt;br /&gt;    cat.Show();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;輸出：&lt;br /&gt;&lt;br /&gt;Pet Kind :波斯貓&lt;br /&gt;Pet Name :小花&lt;br /&gt;Pet Age :1&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;JCatKind的Show()方法雖然被Override掉，但並不表示它已經不存在，我們可以使用Super將它保留，只要在子類別JCat的Show()方法內加入『super.Show();』即可呼叫父類別中被覆蓋掉的方法。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7357928403332372614?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7357928403332372614/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7357928403332372614' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7357928403332372614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7357928403332372614'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/11/java-about-override-super.html' title='[ Java ] About Override &amp; Super'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-9150285206584571168</id><published>2008-11-02T23:53:00.014+08:00</published><updated>2010-03-23T16:08:11.405+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>[ Java ] About Constructor</title><content type='html'>Java 建構子 (Constructor) 範例：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;class JCRectArea {&lt;br /&gt;    private int height, wide; &lt;br /&gt;&lt;br /&gt;    JCRectArea(){&lt;br /&gt;    height = wide = 1;&lt;br /&gt;    }&lt;br /&gt;    JCRectArea(int h){&lt;br /&gt;    SetHeight(h);&lt;br /&gt;    wide = 1;&lt;br /&gt;    } &lt;br /&gt;    JCRectArea(int h, int w){&lt;br /&gt;    SetHeight(h);&lt;br /&gt;    SetWide(w);&lt;br /&gt;    }&lt;br /&gt;    void SetHeight(int h){&lt;br /&gt;    height = h;&lt;br /&gt;    } &lt;br /&gt;    void SetWide(int w){&lt;br /&gt;    wide = w;&lt;br /&gt;    } &lt;br /&gt;    int GetArea(){&lt;br /&gt;    return height*wide;&lt;br /&gt;    } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class JConstructor {&lt;br /&gt;    public static void main(String[] args){&lt;br /&gt;        JCRectArea a1 = new JCRectArea();&lt;br /&gt;        System.out.println("AREA ="+a1.GetArea());&lt;br /&gt;        JCRectArea a2 = new JCRectArea(5);&lt;br /&gt;        System.out.println("AREA ="+a2.GetArea());&lt;br /&gt;        JCRectArea a3 = new JCRectArea(3,6);&lt;br /&gt;        System.out.println("AREA ="+a3.GetArea());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;輸出：&lt;br /&gt;&lt;br /&gt;AREA =1&lt;br /&gt;AREA =5&lt;br /&gt;AREA =18&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;建構子(Constructor)宣告建立一個物件之同時也給予資料成員初始化之動作，類別的建構子也就是一種類別內部方法成員。建構子使用時須特別注意：&lt;br /&gt;&lt;br /&gt;1.Constructor 定義的方式與 Method 相似。&lt;br /&gt;2.Constructor 名稱會與類別名稱相同。&lt;br /&gt;3.Constructor 不能使用修飾子也無回傳值所以不能使用 return 及 void。&lt;br /&gt;4.Constructor 可以使用方法多載(Method Overloading)。&lt;br /&gt;&lt;br /&gt;範例程式為一個計算矩形面積的程式，若矩形的邊長沒有設定值(系統預設為1)。在這個範例中有三個建構子每個建構子所配置的參數皆不同。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-9150285206584571168?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/9150285206584571168/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=9150285206584571168' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/9150285206584571168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/9150285206584571168'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/11/java-about-constructor.html' title='[ Java ] About Constructor'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3586796057255423427</id><published>2008-10-31T19:16:00.009+08:00</published><updated>2010-03-23T16:07:02.418+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>[ Java ] About Method Overloading</title><content type='html'>Java 方法成員多載 (Method Overloading) 範例：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;class JCRectArea {&lt;br /&gt;    private int height, wide; &lt;br /&gt;&lt;br /&gt;    JCRectArea(){&lt;br /&gt;    height = wide = 1;&lt;br /&gt;    }&lt;br /&gt;    JCRectArea(int h){&lt;br /&gt;    SetHeight(h);&lt;br /&gt;    wide = 1;&lt;br /&gt;    } &lt;br /&gt;    JCRectArea(int h, int w){&lt;br /&gt;    SetHeight(h);&lt;br /&gt;    SetWide(w);&lt;br /&gt;    }&lt;br /&gt;    void SetHeight(int h){&lt;br /&gt;    height = h;&lt;br /&gt;    } &lt;br /&gt;    void SetWide(int w){&lt;br /&gt;    wide = w;&lt;br /&gt;    } &lt;br /&gt;    int GetArea(){&lt;br /&gt;    return height*wide;&lt;br /&gt;    } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class JConstructor {&lt;br /&gt;    public static void main(String[] args){&lt;br /&gt;        JCRectArea a1 = new JCRectArea();&lt;br /&gt;        System.out.println("AREA ="+a1.GetArea());&lt;br /&gt;        JCRectArea a2 = new JCRectArea(5);&lt;br /&gt;        System.out.println("AREA ="+a2.GetArea());&lt;br /&gt;        JCRectArea a3 = new JCRectArea(3,6);&lt;br /&gt;        System.out.println("AREA ="+a3.GetArea());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;輸出：&lt;br /&gt;&lt;br /&gt;50+10=60&lt;br /&gt;-10.99+4.11=-6.88&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;Java 所提供的方法成員多載(Method Overloading)允許程式設計師使用相同的方法名稱命名，在傳統的程式語言中方法(或稱函數)只要參數中的個數或型態不同就必需要獨立使用不同的方法名稱，因此造成許多設計上的不便，上頭為兩數交換的程式會使用相同的Add()方法名稱，而Java會自動針對所使用的參數個數及型態去判斷並執行所對應的方法。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3586796057255423427?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3586796057255423427/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3586796057255423427' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3586796057255423427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3586796057255423427'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/10/java-about-method-overloading.html' title='[ Java ] About Method Overloading'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1108417517940103834</id><published>2008-10-25T13:04:00.004+08:00</published><updated>2010-03-23T16:09:05.713+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>[ Java ] About Call By Value</title><content type='html'>Java 傳值呼叫 (Call By Value) 範例：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java"&gt;public class JCallByValue {&lt;br /&gt;   static void Change(int x, int y){&lt;br /&gt;       int t;&lt;br /&gt;       t = x;&lt;br /&gt;       x = y;&lt;br /&gt;       y = t;&lt;br /&gt;       System.out.println("Change Method:");&lt;br /&gt;       System.out.println("x= "+x+"     y="+y);&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public static void main(String[] args){&lt;br /&gt;       int x = 3, y = 5;&lt;br /&gt;       System.out.println("main Method -- Before Call Change() Method:");&lt;br /&gt;       System.out.println("x= "+x+"    y="+y);&lt;br /&gt;       Change(x,y);&lt;br /&gt;       System.out.println("main Method -- After Call Change() Method:");&lt;br /&gt;       System.out.println("x= "+x+"    y="+y);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;執行結果：&lt;br /&gt;&lt;br /&gt;main Method -- Before Call Change() Method:&lt;br /&gt;x= 3    y=5&lt;br /&gt;Change Method:&lt;br /&gt;x= 5     y=3&lt;br /&gt;main Method -- After Call Change() Method:&lt;br /&gt;x= 3    y=5&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;雖然 Change() Method 內的 x,y 變數與 main 主程式中的 x,y 相同，但其所佔有的記憶體位置不同所以主程式在呼叫完 Change() 這個方法之後 x,y 的值並不會改變。Java 的 boolean、char、byte、short、int、long、float、double等資料型別的『變數』用於方法中的參數皆屬傳值呼叫，而 Array、Object...等的參數則為傳參考值呼叫 (Call By Reference) 因為它們在記憶中會佔用相同的記憶體。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1108417517940103834?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1108417517940103834/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1108417517940103834' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1108417517940103834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1108417517940103834'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/10/java-about-call-by-value.html' title='[ Java ] About Call By Value'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5738360558882512897</id><published>2008-10-07T19:29:00.004+08:00</published><updated>2008-10-07T19:37:50.121+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ FBSD ] Convert Unix / Linux Certificate Format</title><content type='html'>在 Unix / Linux 下我們會經常使用私鑰及公鑰簽署產生憑證 ( Certificate ) ，但是在 Unix / Linux 下我們所產生的憑證檔案格式皆為 PEM 格式，而微軟 Windows 中所支援的憑證格式卻是 PKCS#12 及 DER 等... 當跨平台時不同的格式如果要互用該怎麼辦？沒關係強大的 OpenSSL 還是有轉換的方式。&lt;br /&gt;&lt;br /&gt;a) 將 PEM 格式轉成 PKCS#12 格式&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl pkcs12 -export -in myclient.crt.pem -out myclient.p12 -name "My Cert" -inkey /etc/ssl/private/myclient.key.pem&lt;/span&gt;   # 將 .pem 格式轉成 .p12 格式&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;b) 將 PEM 格式轉成 DER  格式&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl x509 -in myroot.crt.pem -outform DER -out myroot.der&lt;/span&gt;      # 轉換格式將 .pem 格式轉成 .der&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5738360558882512897?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5738360558882512897/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5738360558882512897' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5738360558882512897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5738360558882512897'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/10/fbsd-convert-unix-linux-certificate.html' title='[ FBSD ] Convert Unix / Linux Certificate Format'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6364545185881444865</id><published>2008-10-06T13:11:00.010+08:00</published><updated>2008-10-08T16:15:11.090+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Mail Attack &amp; Delete Postfix selected mailq</title><content type='html'>上星期遇到我替公司架設的 CentOS Mail Gateway 遭到大量灌信，我發現後已經過了半個多小時的時間，整個 MailQ 中就已經有 4000 多封來自 service@kcg.gov.tw 高雄市政府 Service 的來信而且不斷的成長，我們的 Server 是 P4 2.8 算是已經不錯，Mail Gateway 上面有跑 Amavisd-new 及 ClamAV 和 Spamassassin，每天的報表統計 Mail Gateway 大約會處理約 40 萬封來信 ( 9成5是垃圾信 )。&lt;br /&gt;&lt;br /&gt;攻擊發生後 CPU 幾乎 100% 大量 Mailq 會造成整個公司的正常信都嚴重延遲，感覺起來這樣的攻擊行為比較像是一種 Mail 的 DoS ( Deny of Service ) 攻擊，它讓正常的服務幾近攤瘓，平常經驗告訴我若攻擊行為停止我們這台 Mail Gateway 要處理這些佇列中的信是需要再花上 4 ~ 5 個小時以上時間來慢慢消化 MailQ，雖然我可以等信但是長官可不能等，現在是個 凡事都求快的光世代，若是我告訴長官說信要等半天才收得到 ~ 這可嚴重了，哈哈 ~ 搞不好因此損失上百萬的定單，這下子不黑掉才怪。&lt;br /&gt;&lt;br /&gt;還好攻擊者的 Mail From: 都來自 service@kcg.gov.tw 因此還算好處理，可先在 Postfix 的 header_checks 中擋掉 service@kcg.gov.tw 的來信，接著再下行指令就可清掉那些垃圾 MailQ。個人覺得像這樣的攻擊方式 Mail 的 From: service@kcg.gov.tw 很有可能是假造的，也很有可能是收 service@kcg.gov.tw 的那個 User 電腦中毒因而造成大量發信攻擊。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/postfix/header_checks&lt;/span&gt;       # 加入要擋掉的來原信&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;/^From:.service\@kcg\.gov\.tw/                    DISCARD    Attack Mail&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# postmap -q - regexp:/etc/postfix/header_checks &lt; /etc/postfix/header_checks&lt;/span&gt;  # 重新讓 Postfix 新 header_checks 生效&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mailq | grep "service@kcg.gov.tw" | cut -d " " -f1 | cut -d'*' -f1 | postsuper -d -&lt;/span&gt;       # 刪掉所有來自service@kcg.gov.tw的MailQ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6364545185881444865?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6364545185881444865/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6364545185881444865' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6364545185881444865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6364545185881444865'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/10/los-mail-attack-delete-postfix-selected.html' title='[ LOS ] Mail Attack &amp; Delete Postfix selected mailq'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7849128124442990387</id><published>2008-10-03T14:49:00.006+08:00</published><updated>2008-10-08T15:13:22.950+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] CentOS Enable Hard Disk Quota</title><content type='html'>在 CentOS 中如果已經加裝好一棵切為 ext3 格式的硬碟後要如何在這棵硬碟上啟動 Quota 功能？我新增加的硬蝶編號為 hdc 是掛在主機版的 Second IDE2 介面，硬碟的  Jump 是調 Master 所以編號是 hdc，若是裝在主機版的 Primery IDE1 硬碟的編號就會是 Master -&gt; hda、Slave -&gt; hdb。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# df&lt;/span&gt;    # 可先查看我已經掛載的硬碟 Partition&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Filesystem           1K-blocks      Used Available Use% Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/mapper/VolGroup00-LogVol00&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;                      11712616   1317836   9790212  12% /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/hda1               101086     18120     77747  19% /boot&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;tmpfs                   257140         0    257140   0% /dev/shm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102); font-weight: bold;"&gt;/dev/hdc1             28389472     40076  26883868   1% /rhome&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/fstab&lt;/span&gt;      # 調整 fstab 針對這個獨立切出來的 Partition 加上 usrquota 及 grpquota&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;/dev/hdc1                /rhome                  ext3    defaults,usrquota,grpquota        1 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mount -o remount /rhome&lt;/span&gt;     # 重新 mount 讓新的設定值生效&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mount&lt;/span&gt;     # 查看 /rhome 這個 Partition 是否已經有 usrquota 及 grpquota&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;/dev/hdc1 on /rhome type ext3 (rw,usrquota,grpquota)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# quotacheck -cug /rhome&lt;/span&gt;      # 初始化 quota 會比較久要等一下&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ls -l /rhome&lt;/span&gt;      # rhome 目錄下會多出兩個檔&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;total 68&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;-rw------- 1 root   root        7168 Oct  3 12:41 aquota.group&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;-rw------- 1 root   root        7168 Oct  3 12:36 aquota.user&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# quotaon -ug /rhome &lt;/span&gt;    # 啟動 quota&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# edquota -u justin&lt;/span&gt;     # 針對  justin 這個 User 做 Quota 設定 ( 設定 Qouta 時權限要 root 才能生效 )&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Disk quotas for user justin (uid 30000):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  Filesystem                   blocks       soft       hard     inodes     soft     hard&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  /dev/hdc1                      7200          0          0          6        0        0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# edquota -g 30000&lt;/span&gt;     # 針對  Group 30000  做  Quota  設定&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Disk quotas for group 30000 (gid 30000):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  Filesystem                   blocks       soft       hard     inodes     soft     hard&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;  /dev/hdc1                      24       8192      10240          6       50       60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# su - justin &lt;/span&gt;   # 切換到 justin 這個 User&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ quota -g 30000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;    # 查看 Group 30000 原本所使用的容量 bloks 為 24&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Disk quotas for group Justin Lin (gid 30000):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;      /dev/hdc1      24    8192   10240               6      50      60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ dd if=/dev/zero of=test bs=1M count=7&lt;/span&gt;       # 手動建立一個 7 M 大的 test 檔案&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;7+0 records in&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;7+0 records out&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;7340032 bytes (7.3 MB) copied，0.0581825 秒，126 MB/s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ quota -g 30000&lt;/span&gt;   # 查看 Group 30000 所使用的容量 bloks 已經增加到 7204&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Disk quotas for group Justin Lin (gid 30000):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;      /dev/hdc1    7204    8192   10240               7      50      60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ dd if=/dev/zero of=test2 bs=1M count=4&lt;/span&gt;        # 再建個 test2 的檔大小為 4M , 因為超出 10M 空間所以系統告知滿了&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;hdc1: warning, group block quota exceeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;hdc1: write failed, group block limit reached.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;dd: 寫入 ‘test2’: 硬碟 quota 滿了&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;3+0 records in&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2+0 records out&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;3104768 bytes (3.1 MB) copied，0.0264653 秒，117 MB/s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ quota -g 30000&lt;/span&gt;    # 查看 Group 30000 滿了 blocks 會多個 * 號&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Disk quotas for group Justin Lin (gid 30000):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;      /dev/hdc1   10240*   8192   10240               8      50      60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ms.ntcb.edu.tw/%7Esteven/article/quota.htm"&gt;http://ms.ntcb.edu.tw/~steven/article/quota.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7849128124442990387?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7849128124442990387/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7849128124442990387' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7849128124442990387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7849128124442990387'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/10/los-centos-enable-hard-disk-quota.html' title='[ LOS ] CentOS Enable Hard Disk Quota'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4991458736754311467</id><published>2008-09-29T14:20:00.004+08:00</published><updated>2008-10-20T11:13:01.163+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Install Eclipse</title><content type='html'>在 Ubuntu 中如何安裝 eclipse ? 直接到 &lt;a href="http://www.eclipse.org/downloads/"&gt;eclipse 官網下載區&lt;/a&gt;下載 Java EE 版本的 IDE 我 download 的版本為 : &lt;span style="font-weight: bold;"&gt;eclipse-jee-ganymede-SR1-linux-gtk.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;首先確認已經安裝及配置好 &lt;a href="http://blog.ntut.idv.tw/2008/09/los-ubuntu-setting-sun-java-environment.html"&gt;Sun Java 的環境&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd ~&lt;/span&gt;     # 將下載檔案放到 Home 中所以切換到 User Home 的目錄中&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ tar -xzvf eclipse-jee-ganymede-SR1-linux-gtk.tar.gz&lt;/span&gt;   # 解壓縮檔案&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;$ vi ~/.local/share/applications/eclipse.desktop&lt;/span&gt;    # 編輯啟動 icon&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;[Desktop Entry]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Categories=Development;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Exec=/home/User/eclipse/eclipse&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Icon=/home/&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;User&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;/eclipse/plugins/org.eclipse.platform_3.3.101.v200809111700/eclipse48.png&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Name=Eclipse&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Name[zh_TW]=Eclipse&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;StartupNotify=true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Terminal=false&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Type=Application&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;PS: User 記得改成你自己的帳號&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4991458736754311467?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4991458736754311467/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4991458736754311467' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4991458736754311467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4991458736754311467'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-ubuntu-install-eclipse.html' title='[ LOS ] Ubuntu Install Eclipse'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1460750326613325374</id><published>2008-09-26T14:03:00.006+08:00</published><updated>2008-09-26T14:48:47.039+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] chkconfig for Ubuntu sysv-rc-conf</title><content type='html'>在 CentOS 中有 chkconfig 工具更改程式 Run Level 而在 Ubuntu 中可用 sysv-rc-conf 這個工具。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install sysv-rc-conf&lt;/span&gt;　　# 安裝 sysv-rc-conf&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo sysv-rc-conf&lt;/span&gt;      # 直接執行 sysv-rc-conf command-lin 圖形介面&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1pZFb-zlDLNL0CyVrgCxuczlDMLm_SiqyDQU1q_w3JSzeKhCGNNgupd_wMDCtcF_tmwp40d4VNPQg/sysv.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold; font-family: arial;"&gt;$ sysv-rc-conf --list | grep ssh&lt;/span&gt;&lt;span style="font-family: arial;"&gt;     # 查看 ssh run level&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102); font-family: arial;"&gt;ssh          1:off    2:off    3:off    4:off    5:off&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153); font-family: arial;"&gt;$ sudo sysv-rc-conf --level 35 ssh off&lt;/span&gt;&lt;span style="font-family: arial;"&gt;    # 關閉 ssh 3 及 5 的 run level&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153); font-family: arial;"&gt;$ sudo sysv-rc-conf atd off&lt;/span&gt;&lt;span style="font-family: arial;"&gt;   # 關閉 atd run level&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153); font-family: arial;"&gt;$ sysv-rc-conf --list | grep atd&lt;/span&gt;&lt;span style="font-family: arial;"&gt;    # 查看 atd run level&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102); font-family: arial;"&gt;atd          1:off 2:off 3:off 4:off 5:off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153); font-family: arial;"&gt;$ sudo sysv-rc-conf atd on&lt;/span&gt;&lt;span style="font-family: arial;"&gt;    # 開啟 atd run level&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153); font-family: arial;"&gt;$ sysv-rc-conf --list | grep atd &lt;/span&gt;&lt;span style="font-family: arial;"&gt;   # 查看 atd run level&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102); font-family: arial;"&gt;atd          1:off 2:on 3:on 4:on 5:on&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold;"&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: arial;" href="http://sysv-rc-conf.sourceforge.net/"&gt;http://sysv-rc-conf.sourceforge.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1460750326613325374?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1460750326613325374/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1460750326613325374' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1460750326613325374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1460750326613325374'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-chkconfig-for-ubuntu-sysv-rc-conf.html' title='[ LOS ] chkconfig for Ubuntu sysv-rc-conf'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-2419035424204420217</id><published>2008-09-24T11:34:00.005+08:00</published><updated>2008-09-24T12:01:31.545+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Disable Touchpad</title><content type='html'>使用 Ubuntu Linux Desktop 也一陣子了，最令人困擾的應就是在 Notebook 敲鍵盤時常會誤觸 Touchpad 因為 Linux 中用到 Shell 機會很多，剛好找到個不錯的解決方法先把它記錄下來。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/X11/xorg.conf&lt;/span&gt;  # 編輯/etc/X11/xorg.conf 尋找下面這設定增加紅色部份&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Section "InputDevice"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        Identifier      "Synaptics Touchpad"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        Driver          "synaptics"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        Option          "SendCoreEvents"        "true"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        Option          "Device"                "/dev/psaux"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        Option          "Protocol"              "auto-dev"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        Option          "HorizScrollDelta"      "0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        &lt;span style="color: rgb(204, 0, 0);"&gt;Option          "SHMConfig"             "on"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;EndSection&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo reboot&lt;/span&gt;    # 重新開機後下面的指令才會生效&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ synclient TouchpadOff=1&lt;/span&gt;     # 手動關閉Touchpad&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ synclient TouchpadOff=0&lt;/span&gt;     # 手動啟用Touchpad&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blog.yam.com/ddy1280/article/2479275"&gt;http://blog.yam.com/ddy1280/article/2479275&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-2419035424204420217?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/2419035424204420217/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=2419035424204420217' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2419035424204420217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2419035424204420217'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-ubuntu-disable-touchpad.html' title='[ LOS ] Ubuntu Disable Touchpad'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-8656888132819769931</id><published>2008-09-20T23:45:00.004+08:00</published><updated>2008-09-20T23:54:19.218+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Setting Sun Java Environment</title><content type='html'>在 Ubuntu Linux 中配置 Sun 版本的 Java&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install sun-java6-jre sun-java6-jdk&lt;/span&gt;     # 安裝 sun 版本的 java&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo update-alternatives --config java&lt;/span&gt;    # 替換目前環境使用的 java&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;提供“java”的替換項式共有 4。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  可使用的替換項目&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;===========================&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;          1    /usr/bin/gij-4.2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;          2    /usr/lib/jvm/java-gcj/jre/bin/java&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;*+        3    /usr/lib/jvm/java-6-openjdk/jre/bin/java&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;          4    /usr/lib/jvm/java-6-sun/jre/bin/java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;按下 enter 來指定預設選項[*]，或者輸入選擇的號碼：&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/environment&lt;/span&gt;   # 設定使用者 java 環境設定&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;JAVA_HOME=/usr/lib/jvm/java-6-sun&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;$ sudo vi /etc/jvm&lt;/span&gt;     # 設定使用者 java 環境設定&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;/usr/lib/jvm/java-6-sun&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install sun-java6-plugin&lt;/span&gt;   # 安裝瀏覽器 java 的 Plugin&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-8656888132819769931?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/8656888132819769931/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=8656888132819769931' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8656888132819769931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8656888132819769931'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-ubuntu-setting-sun-java-environment.html' title='[ LOS ] Ubuntu Setting Sun Java Environment'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-31792790048538485</id><published>2008-09-20T11:13:00.007+08:00</published><updated>2008-09-24T12:27:02.783+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Reverse SSH Tunnel</title><content type='html'>使用 OpenSSH 的反向安全通道 ( Reverse SSH Tunneling ) 替自己公司 NAT 內部不對外開放的私有 IP Server 建立安全通道，OpenSSH 真的是一套很好用的軟體。&lt;br /&gt;&lt;br /&gt;A_Host(IP:138.47.99.99) : 公司外部的真實 IP Unix/Linux Server&lt;br /&gt;B_Host(IP:192.168.20.55) : 公司內部的虛擬 IP Unix/Linux Server&lt;br /&gt;&lt;br /&gt;架構 : Destination (192.168.20.55) &lt;- | NAT | &lt;- Source (138.47.99.99)&lt;br /&gt;&lt;br /&gt;1. 從公司內 Server 打洞到公司外的 Server  &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;(A_Host)#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;ssh -R 19999:localhost:22 sourceuser@138.47.99.99&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. 查看本機&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(A_Host)#&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;ps -ax |grep ssh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 3732 pts/0    S+     0:00 ssh -R 19999:localhost:22 jim@138.47.99.99&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 3737 ?        Ss     0:00 sshd: jim [priv]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 3739 ?        S      0:00 sshd: jim@pts/1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. 從公司外連回公司內的主機&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;(B_Host)&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#&lt;/span&gt; ssh localhost -p 19999 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.howtoforge.com/reverse-ssh-tunneling"&gt;http://www.howtoforge.com/reverse-ssh-tunneling&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-31792790048538485?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/31792790048538485/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=31792790048538485' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/31792790048538485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/31792790048538485'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-reverse-ssh-tunnel.html' title='[ LOS ] Reverse SSH Tunnel'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3407665429964803285</id><published>2008-09-18T19:32:00.007+08:00</published><updated>2008-09-18T20:01:32.065+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] FreeBSD install AWStats to Analysis Mail and Web log</title><content type='html'>如何在 FreeBSD 安裝 AWStats 統計分析軟體？&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. 安裝 AWStats&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/www/awstats &lt;/span&gt;     # 使用 ports 安裝 awstats&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /usr/loca/eta/apache/httpd.conf&lt;/span&gt;    # 在已裝好的 Apache 中增加下面設定&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Alias /awstatsclasses "/usr/local/www/awstats/classes/"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Alias /awstatscss "/usr/local/www/awstats/css/"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Alias /awstatsicons "/usr/local/www/awstats/icons/"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    &amp;lt;Directory "/usr/local/www/awstats/"&amp;gt;&lt;br /&gt;    Options None&lt;br /&gt;    AllowOverride None&lt;br /&gt;    Order allow,deny&lt;br /&gt;    Allow from all&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# apachectl restart&lt;/span&gt;     # 重啟 Apache&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /usr/local/www/awstats/tools/awstats_configure.pl &lt;/span&gt;   # 查看設定檔目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mkdir /var/lib/awstats&lt;/span&gt;      # 建立存放分析完後的 log 目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# chmod 777 /var/lib/awstats&lt;/span&gt;     #  改變目錄權限&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cp /usr/local/www/awstats/cgi-bin/awstats.model.conf  /etc/awstats/&lt;/span&gt;  #  Copy 設定檔範例&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. 分析統計 Postfix 的 Maillog&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /usr/local/www/awstats/tools/awstats_configure.pl&lt;/span&gt;    # 手動建立 maillog 設定檔&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;----- AWStats awstats_configure 1.0 (build 1.8) (c) Laurent Destailleur -----&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; This tool will help you to configure AWStats to analyze statistics for&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; one web server. You can try to use it to let it do all that is possible&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; in AWStats setup, however following the step by step manual setup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; documentation (docs/index.html) is often a better idea. Above all if:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; - You are not an administrator user,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; - You want to analyze downloaded log files without web server,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; - You want to analyze mail or ftp log files instead of web log files,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; - You need to analyze load balanced servers log files,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; - You want to 'understand' all possible ways to use AWStats...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Read the AWStats documentation (docs/index.html).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Running OS detected: Linux, BSD or Unix&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Warning: AWStats standard directory on Linux OS is '/usr/local/awstats'.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; If you want to use standard directory, you should first move all content&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; of AWStats distribution from current directory:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; /var/log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; to standard directory:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; /usr/local/awstats&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; And then, run configure.pl from this location.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Do you want to continue setup from this NON standard directory [yN] ? &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;y&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Check for web server install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Enter full config file path of your Web server.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Example: /etc/httpd/httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Example: /usr/local/apache2/conf/httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Example: c:\Program files\apache group\apache\conf\httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Config file path ('none' to skip web server setup):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; &gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt; none&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Your web server config file(s) could not be found.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; You will need to setup your web server manually to declare AWStats&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; script as a CGI, if you want to build reports dynamically.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; See AWStats setup documentation (file docs/index.html)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Update model config file '/etc/awstats/awstats.model.conf'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;   File awstats.model.conf updated.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Need to create a new config file ?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Do you want me to build a new AWStats config/profile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; file (required if first install) [y/N] ? &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;y&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Define config file name to create&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; What is the name of your web site or profile analysis ?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Example: www.mysite.com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Example: demo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Your web site, virtual server or profile name:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; &gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt; mail.ntut.idv.tw&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Define config file path&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; In which directory do you plan to store your config file(s) ?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Default: /etc/awstats&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Directory path to store config file(s) (Enter for default):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; &gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ENTER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Create config file '/etc/awstats/awstats.mail.ntut.idv.tw.conf'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  Config file /etc/awstats/awstats.mail.ntut.idv.tw.conf created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; -----&gt; Add update process inside a scheduler&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Sorry, configure.pl does not support automatic add to cron yet.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; You can do it manually by adding the following command to your cron:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; /var/log/wwwroot/cgi-bin/awstats.pl -update -config=mail.ntut.idv.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Or if you have several config files and prefer having only one command:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; /var/log/tools/awstats_updateall.pl now&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Press ENTER to continue...&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ENTER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; A SIMPLE config file has been created: /etc/awstats/awstats.mail.ntut.idv.tw.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; You should have a look inside to check and change manually main parameters.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; You can then manually update your statistics for 'mail.ntut.idv.tw' with command:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; &gt; perl awstats.pl -update -config=mail.ntut.idv.tw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; You can also build static report pages for 'mail.ntut.idv.tw' with command:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; &gt; perl awstats.pl -output=pagetype -config=mail.ntut.idv.tw&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Press ENTER to finish...&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ENTER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/awstats/awstats.mail.ntut.idv.tw.conf&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;     # 修改 maillog 設定檔格式&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;LogFile="bzip2 -cd /var/log/maillog.0.bz2 | /usr/local/www/awstats/tools/maillogconvert.pl standard |"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; LogType=M&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; Lang="tw"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /usr/local/www/awstats/cgi-bin/awstats.pl -config=mail.ntut.idv.tw -update&lt;/span&gt; # 手動執行 maillog 分析及更新&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Create/Update database for config "/etc/awstats/awstats.mail.ntut.idv.tw.conf" by AWStats version 6.8 (build 1.910)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; From data in log file "perl /usr/local/www/awstats/tools/maillogconvert.pl standard &lt; /var/log/maillog |"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Phase 1 : First bypass old records, searching new record...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Searching new records from beginning of log file...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Jumped lines in file: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Parsed lines in file: 109&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  Found 0 dropped records,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  Found 0 corrupted records,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  Found 0 old records,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  Found 109 new qualified records.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;直接查看統計報表： &lt;a href="http://host-ip/awstats/awstats.pl?config=mail.ntut.idv.tw"&gt;http://Host-IP/awstats/awstats.pl?config=mail.ntut.idv.tw&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. 分析統計 Apache Web log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /usr/local/www/awstats/tools/awstats_configure.pl    &lt;/span&gt;# 手動建立欲分析之 log 設定檔&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/awstats/awstats.www.ntut.idv.tw.conf&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;   # 修改剛才建立之設定檔&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;LogFile="zcat &lt; /var/log/httpd-access.log.0.bz2 |"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;LogType=W&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;LogFormat=1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Lang="tw"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /usr/local/www/awstats/cgi-bin/awstats.pl -config=www.ntut.idv.tw -update&lt;/span&gt;    # 手動更新統計&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Create/Update database for config "/etc/awstats/awstats.www.ntut.idv.tw.conf" by AWStats version 6.8 (build 1.910)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;From data in log file "/var/log/httpd-access.log"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Phase 1 : First bypass old records, searching new record...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Searching new records from beginning of log file...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Jumped lines in file: 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Parsed lines in file: 1542&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Found 0 dropped records,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Found 1248 corrupted records,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Found 0 old records,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; Found 294 new qualified records.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://host-ip/awstats/awstats.pl?config=ntut.idv.tw"&gt;http://Host-IP/awstats/awstats.pl?config=www.ntut.idv.tw&lt;/a&gt;    # 開個瀏覽器查看流量統計&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# crontab -e&lt;/span&gt;      # 新增 crontabe每天 12 點 55 分去分析統計前一天的 log&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;55 0 * * * /usr/local/www/awstats/tools/awstats_updateall.pl now &gt; /dev/null 2&gt;&amp;amp;1&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3407665429964803285?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3407665429964803285/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3407665429964803285' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3407665429964803285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3407665429964803285'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/fbsd-freebsd-install-awstats-to.html' title='[ FBSD ] FreeBSD install AWStats to Analysis Mail and Web log'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7638200200532149784</id><published>2008-09-12T17:49:00.004+08:00</published><updated>2008-09-12T18:07:02.683+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Booting Error Message on CentOS Linux</title><content type='html'>今天我的 CentOS 5.2 Server 重開機時主 HD 出現錯誤訊息，使用 dmesg 指令可回頭來查看開機畫面的錯誤，發現下面兩行是  HD 錯誤訊息雖然使用上都還算 OK 但心中總是毛毛的，因此還是請教 Google 大神好了有國外朋友說這就是提醒你該換硬碟了，於是當下就決定使用國內自行開發的再生龍 &lt;a href="http://drbl.nchc.org.tw/clonezilla/"&gt;Clonezilla&lt;/a&gt; 來將整顆硬碟用印象檔備份出來，接著再使用被份好的印象檔還原到新的那顆硬碟，哈哈 ~ 問題就就解決了^^ 這下可安心了~ 在此要大力推薦這套軟體真的太好用了，Clonezilla 真的是備份 Linux 不可缺少的良品，經由小弟的測試在 Windows 底下備份也都 OK ~&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# dmesg | more&lt;/span&gt;       # 錯誤訊息如下 hda 為第一顆 IDE 硬碟&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;hda: drive_cmd: error=0x04&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7638200200532149784?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7638200200532149784/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7638200200532149784' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7638200200532149784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7638200200532149784'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-booting-error-message-on-centos.html' title='[ LOS ] Booting Error Message on CentOS Linux'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6956810258486013660</id><published>2008-09-12T00:31:00.004+08:00</published><updated>2008-09-12T00:50:53.665+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] CentOS Install and Setting SNMP</title><content type='html'>&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;記錄一下最近玩 CentOS Linux 的心得&lt;/span&gt;&lt;/span&gt;，&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;在 CentOS 上要如何啟動 SNMP 網管資訊 ? 方式如下:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;1.安裝及設定&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# yum -y install net-snmp net-snmp-utils&lt;/span&gt;  # net-snmp-utils 是 snmpwalk 工具。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# chkconfig snmpd on&lt;/span&gt;  # 開機自動 up。&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# service snmpd start&lt;/span&gt;     # 啟動 snmpd。&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Starting snmpd:                                            [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# snmpwalk -c public -v 1 localhost system&lt;/span&gt;      # 使用 snmpwalk 測試。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/snmp/snmpd.conf&lt;/span&gt;       # 調整 snmp 設定檔。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# 找到下面前三行設定 Mark 起來&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# com2sec notConfigUser  default        public&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# group   notConfigGroup v1             notConfigUser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# group   notConfigGroup v2c            notConfigUser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;br /&gt;# 再加入 group 存取設定&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;com2sec  local     localhost       public&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;com2sec  mynetwork     192.168.10.0/24   public&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;com2sec  mynetwork     203.xxx.xxx.0/24   public&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;group  MyRWGroup   any    local&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;group  MyROGroup   any    mynetwork&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;view all included .1 80&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;access  MyROGroup  ""  any  noauth  0  all  none  none&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;access  MyRWGroup  ""  any  noauth  0  all  all  all&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;syslocation  CentOS 5.2 at ERA Taipei&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;syscontact &lt;root@localhost&gt;&lt;/root@localhost&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;disk / 10000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# /etc/rc.d/init.d/snmpd restart&lt;/span&gt;    # 修改snmpd.conf後一定要重新啟動 snmpd 新設定值才會生效。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2.手動測試&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# snmpget -v 1 -c "public" localhost .1.3.6.1.4.1.2021.9.1.2.1&lt;/span&gt;   # 測試採用 snmpget 抓取資訊。&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;UCD-SNMP-MIB::dskPath.1 = STRING: /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# snmpget -v 1 -c "public" localhost .1.3.6.1.4.1.2021.9.1.3.1&lt;/span&gt;     # 抓取硬碟資訊&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/VolGroup00-LogVol00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# snmpget -v 1 -c "public" localhost .1.3.6.1.4.1.2021.4.5.0&lt;/span&gt;         # 抓取實體記憶體大小。&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 385448&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;※&lt;/span&gt; 以下為 Linux 上的  CPU、Memory、Disk 三種 MIBs, OIDs 的值，皆可使用 snmpget 抓取&lt;br /&gt;&lt;br /&gt;CPU  Statistics&lt;br /&gt;&lt;br /&gt;      Load&lt;br /&gt;             1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1&lt;br /&gt;             5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2&lt;br /&gt;             15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3&lt;br /&gt;&lt;br /&gt;     CPU&lt;br /&gt;             percentage of user CPU time:    .1.3.6.1.4.1.2021.11.9.0&lt;br /&gt;             raw user cpu time:                  .1.3.6.1.4.1.2021.11.50.0&lt;br /&gt;             percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0&lt;br /&gt;             raw system cpu time:              .1.3.6.1.4.1.2021.11.52.0&lt;br /&gt;             percentages of idle CPU time:   .1.3.6.1.4.1.2021.11.11.0&lt;br /&gt;             raw idle cpu time:                   .1.3.6.1.4.1.2021.11.53.0&lt;br /&gt;             raw nice cpu time:                  .1.3.6.1.4.1.2021.11.51.0&lt;br /&gt;&lt;br /&gt;Memory Statistics&lt;br /&gt;&lt;br /&gt;             Total Swap Size:                .1.3.6.1.4.1.2021.4.3.0&lt;br /&gt;             Available Swap Space:         .1.3.6.1.4.1.2021.4.4.0&lt;br /&gt;             Total RAM in machine:          .1.3.6.1.4.1.2021.4.5.0&lt;br /&gt;             Total RAM used:                  .1.3.6.1.4.1.2021.4.6.0&lt;br /&gt;             Total RAM Free:                   .1.3.6.1.4.1.2021.4.11.0&lt;br /&gt;             Total RAM Shared:                .1.3.6.1.4.1.2021.4.13.0&lt;br /&gt;             Total RAM Buffered:              .1.3.6.1.4.1.2021.4.14.0&lt;br /&gt;             Total Cached Memory:           .1.3.6.1.4.1.2021.4.15.0&lt;br /&gt;&lt;br /&gt;Disk Statistics&lt;br /&gt;&lt;br /&gt;             Path where the disk is mounted:                 .1.3.6.1.4.1.2021.9.1.2.1&lt;br /&gt;             Path of the device for the partition:            .1.3.6.1.4.1.2021.9.1.3.1&lt;br /&gt;             Total size of the disk/partion (kBytes):        .1.3.6.1.4.1.2021.9.1.6.1&lt;br /&gt;             Available space on the disk:                      .1.3.6.1.4.1.2021.9.1.7.1&lt;br /&gt;             Used space on the disk:                           .1.3.6.1.4.1.2021.9.1.8.1&lt;br /&gt;             Percentage of space used on disk:             .1.3.6.1.4.1.2021.9.1.9.1&lt;br /&gt;             Percentage of inodes used on disk:            .1.3.6.1.4.1.2021.9.1.10.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6956810258486013660?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6956810258486013660/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6956810258486013660' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6956810258486013660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6956810258486013660'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-centos-install-and-setting-snmp.html' title='[ LOS ] CentOS Install and Setting SNMP'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3590022864910011523</id><published>2008-09-07T12:40:00.006+08:00</published><updated>2008-09-12T00:51:40.694+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Install BroadCom WiFi Driver with Ndiswrapper</title><content type='html'>我的 HP V3000 筆電在灌完 Ubuntu 804 後雖然有抓到 Broadcom 無線網卡的驅動但是還是無法使用，不過只要安裝 Ndiswrapper 就可使用 Windows 上的驅動程式來驅動使用，Ndiswrapper 真神。以下是我的 HP V3101AU Note Book 在 Ubuntu Linux 中安裝 Broadcom 無線網卡驅動方法。可先參考 &lt;a href="http://wiki.gentoo.tw/mediawiki/index.php/NdisWrapper"&gt;Gentoo Linux Wiki Doc&lt;/a&gt; 中對 Ndiswrapper 的說明&lt;a href="http://wiki.gentoo.tw/mediawiki/index.php/NdisWrapper"&gt;&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. 開始安裝&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ lspci | grep Broadcom&lt;/span&gt;     # 查看硬體資訊無線網卡是 broadcom bcm4312 晶片&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;01:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vim /etc/network/interfaces&lt;/span&gt;    # 加入以下內容&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;auto wlan0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;iface wlan0 inet dhcp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get remove ndiswrapper-common ndiswrapper-utils-1.9&lt;/span&gt;    # 移除原本安裝的 nidswrapper&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get remove bcm43xx-fwcutter&lt;/span&gt;     # 移除原本安裝不能使用的驅動&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/modprobe.d/blacklist&lt;/span&gt;    # 加入不自動展載入清單&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# replaced by b43 and ssb.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;blacklist b43&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;blacklist bcm43xx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd /home/yourname&lt;/span&gt;   # 切換到自己的家目錄 and 下載驅動 for &lt;a href="http://rapidshare.com/files/70969505/WLANBroadcom.tar.gz.html"&gt;BCM94311MCG wlan mini-PCI&lt;/a&gt; 驅動&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ tar -xzvf WLANBroadcom.tar.gz &lt;/span&gt;  # 解壓縮&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install build-essential&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install linux-headers-`uname -r`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ln -s /usr/src/linux-`uname -r` /lib/modules/`uname -r`/build&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ mkdir -p ~/bcm43xx/ndiswrapper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd ~/bcm43xx/ndiswrapper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo wget http://downloads.sourceforge.net/ndiswrapper/ndiswrapper-1.53.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ tar xvzf ndiswrapper-1.53.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd ndiswrapper*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ make distclean&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd /home/yourname/WLANBroadcom/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ndiswrapper -i bcmwl5.inf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ ndiswrapper -l&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/modules&lt;/span&gt;   # 加入一行&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;ndiswrapper&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo modprobe ndiswrapper&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ndiswrapper -m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. 無線工具使用&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ iwconfig&lt;/span&gt;     # 這個工具跟 ifconfig 很像 iwconfig 是用在無線網卡上&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;lo        no wireless extensions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;eth0      no wireless extensions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;wlan0     IEEE 802.11g  ESSID:"dd-wrt"  Nickname:"dd-wrt"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:0D:0B:F4:XX:XX&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Bit Rate=54 Mb/s   Tx-Power:32 dBm   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          RTS thr:2347 B   Fragment thr:2346 B   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Power Management:off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Link Quality:82/100  Signal level:-43 dBm  Noise level:-96 dBm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Tx excessive retries:0  Invalid misc:0   Missed beacon:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ iwlist wlan0 scan&lt;/span&gt;   # 掃描可用的 AP 存點之 SSID 就可以看到有那些AP可以使用&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;wlan0     Scan completed :&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;          Cell 01 - Address: 00:0D:0B:F4:XX:XX&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    ESSID:"dd-wrt"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Protocol:IEEE 802.11g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Mode:Managed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Frequency:2.437 GHz (Channel 6)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Quality:75/100  Signal level:-48 dBm  Noise level:-96 dBm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Encryption key:off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                              48 Mb/s; 54 Mb/s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Extra:bcn_int=100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                    Extra:atim=0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;$ sudo apt-get install wifi-radar&lt;/span&gt;    # 安裝 GUI 介面 wifi 工具&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://invaleed.wordpress.com/2007/11/20/install-bcm94311mcg-wlan-mini-pci-ubuntu-710/"&gt;http://invaleed.wordpress.com/2007/11/20/install-bcm94311mcg-wlan-mini-pci-ubuntu-710/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=769990"&gt;http://ubuntuforums.org/showthread.php?t=769990&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3590022864910011523?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3590022864910011523/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3590022864910011523' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3590022864910011523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3590022864910011523'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-ubuntu-install-broadcom-wifi-driver.html' title='[ LOS ] Ubuntu Install BroadCom WiFi Driver with Ndiswrapper'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-903276140561853099</id><published>2008-09-05T19:15:00.005+08:00</published><updated>2008-09-12T00:52:29.908+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Setting Your BASH ENV</title><content type='html'>我習的慣是使用 BASH 因此 .bashrc 是在 RedHat 的 User 目錄下必設的檔，每次灌新的 Linux OS 都會忘記，記錄下來省得每次都到 Google 中尋找&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi ~/.bashrc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# .bashrc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# Source global definitions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;if [ -f /etc/bashrc ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        . /etc/bashrc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;# User specific aliases and functions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;PATH="$PATH":/usr/X11R6/bin:/home/dmtsai/bin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;LANG=zh_TW.UTF-8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;LC_TIME=C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;export PATH LC_TIME LANG&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;umask 022&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias   rm='rm -i'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias   cp='cp -i'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias   mv='mv -i'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias   ll='ls -l'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias   lm='ls -al|more'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias   h='history'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# source ~/.bashrc&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-903276140561853099?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/903276140561853099/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=903276140561853099' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/903276140561853099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/903276140561853099'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-setting-your-bash-env.html' title='[ LOS ] Setting Your BASH ENV'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6280448009608490132</id><published>2008-09-04T10:36:00.004+08:00</published><updated>2008-09-12T00:53:11.169+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] Update CentOS Boot Loader GRUB</title><content type='html'>採用 CloneZilla 將整棵已經灌好的 CentOS Linux 硬碟備份成印象檔之後再將印象檔還原到另一棵 硬碟時會有 GRUB 不見的情況，主要是因為我之前是將 GRUB 安裝寫入 MBR 中 CloneZilla 所備份的印象檔是沒包含 MBR 因此轉換硬碟時會沒有帶 GRUB，不過沒有 GRUB 並不影響運作還是可以開機進 OS 不會影響正常運作，而開機時沒 GRUB 總覺得有點不協調，於是決定還是把它裝起來好了以下是 CentOS Linux GRUB 重安裝方式。&lt;br /&gt;&lt;br /&gt;1. 用安裝光碟開機&lt;br /&gt;2. 選 [ F5-Rescue ] boot:  &lt;enter&gt; Linux rescue&lt;br /&gt;3. 不做 CD 測試&lt;br /&gt;4. 進入 GUI 安裝介面 Next &gt; English(Next) &gt; U.S English(Next) &gt; 選擇 Update an existing Installation(Next)&lt;br /&gt;5. 進入 The installer has detected the GRUB boot loader currently installed on /dev/sda&lt;br /&gt;&lt;br /&gt;&lt;選&gt;Update boot loader configuration(Next)&lt;br /&gt;       Skip boot loader updating&lt;br /&gt;       Create new boot loader configuration&lt;br /&gt;&lt;br /&gt;6. 寫入更新完成(Reboot)&lt;/enter&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6280448009608490132?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6280448009608490132/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6280448009608490132' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6280448009608490132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6280448009608490132'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/09/los-update-centos-boot-loader-grub.html' title='[ LOS ] Update CentOS Boot Loader GRUB'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1402505823265954528</id><published>2008-08-27T23:51:00.005+08:00</published><updated>2008-09-12T00:53:54.590+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Linux RamDisk</title><content type='html'>如何在 Ubuntu Linux 中產生 RamDisk 記憶體虛擬硬碟 ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/fstab&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;tmpfs  /tmp/ramdisk tmpfs  size=384M  0  0 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo mkdir /tmp/ramdisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo mount -a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ df&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;tmpfs                   393216       460    392756   1% /tmp/ramdisk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;如何讓 Firefox 享受 RamDisk 的快速感 ?&lt;br /&gt;&lt;br /&gt;打開 Firefox，在網址列輸入「about :config」按滑鼠「右鍵」-&gt;「新增」-&gt;「字串」，名稱輸入「browser.cache.disk.parent_directory」，內容是你要放快速暫存檔的地方，也就是「/tmp/ramdisk」&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1402505823265954528?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1402505823265954528/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1402505823265954528' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1402505823265954528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1402505823265954528'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/08/los-ubuntu-linux-ramdisk.html' title='[ LOS ] Ubuntu Linux RamDisk'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7561334504128581487</id><published>2008-08-07T16:10:00.002+08:00</published><updated>2008-08-07T16:13:30.450+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>[ WOS ] The Windows Partition Hide</title><content type='html'>當我們在同一棵硬碟中同時安裝 Windows XP 及 Windows Vista 雙 OS 系統時要如何隱藏磁碟機 ? 這個小技巧的目地是為了保護另一個 OS 免於遭到誤刪重要系統檔而無法開機。&lt;br /&gt;&lt;br /&gt;方法一：&lt;br /&gt;&lt;br /&gt;1. 開始 &gt; 執行 &gt; regedit  打開註冊表編輯器，依次打開「HKEY_CURRENT_USER &gt; Software &gt; Microsoft &gt; Windows &gt; CurrentVersion &gt; Polices &gt; Explorer」&lt;br /&gt;&lt;br /&gt;2. 接著在右側空白處按右鍵，選擇新增： DWORD值「NoDrives」進入編輯選「十進制」模式且輸入「1024」重開機之後 K 磁碟槽就會被隱藏。&lt;br /&gt;&lt;br /&gt;PS：「1024」是代表 K 槽而這個值怎麼來的？&lt;br /&gt;&lt;br /&gt;這是Windows 內定的值：1代表A，2代表B，4代表C，8代表D，16代表E …… 依次類推 K 就是 1024。如果我們要同時隱藏多個磁碟槽時該怎麼做? 可直接將值相加，並將之和輸入即可，如：1+2+4=7，代表隱藏 ABC 三個磁碟。&lt;br /&gt;&lt;br /&gt;26個字母對應表：&lt;br /&gt;&lt;br /&gt;(2^n)：A=1 , B=2 , C=4 ,D=8 , E=16 , F=32 , G=64 , H=128 , I=256 , J=512 , K=1024 , L=2048 , M=4096 , N=8129 , O=16384, P=32768 , Q=65536 , R=131072 , S=262144 , T=524288 , U=1048576 , V=2097152 , W=4194304 , X=8388608 , Y=16777216 , Z=3554432&lt;br /&gt;&lt;br /&gt;方法二：&lt;br /&gt;&lt;br /&gt;開啟【電腦管理】→【磁碟管理】點選欲隱藏的磁碟機區塊(右健)【變更磁碟機代號及路徑】開啟視窗後，點選該磁碟機的代號，再按一下〔移除〕按鈕，若想恢復〔新增〕即可。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7561334504128581487?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7561334504128581487/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7561334504128581487' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7561334504128581487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7561334504128581487'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/08/wos-windows-partition-hide.html' title='[ WOS ] The Windows Partition Hide'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1193816872534285381</id><published>2008-08-05T18:41:00.005+08:00</published><updated>2008-09-12T00:54:32.649+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Install Ubuntu Studio Theme</title><content type='html'>如何在 Ubuntu Desktop 8.04 中安裝 Ubuntu Studio 佈景主題&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo su -c 'echo deb http://archive.ubuntustudio.org/ubuntustudio feisty main &gt;&gt; /etc/apt/sources.list'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;$ sudo apt-get install ubuntustudio-look&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;或是&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install ubuntustudio-theme ubuntustudio-icon-theme ubuntustudio-wallpapers&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1193816872534285381?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1193816872534285381/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1193816872534285381' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1193816872534285381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1193816872534285381'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/08/los-install-ubuntu-studio-theme.html' title='[ LOS ] Install Ubuntu Studio Theme'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5306774761231694072</id><published>2008-07-30T19:06:00.004+08:00</published><updated>2008-09-12T00:57:49.100+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu nstall x11vnc</title><content type='html'>如何在 Ubuntu 中安裝 x11vnc？&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install x11vnc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install xinetd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/xinetd.d/x11vnc&lt;/span&gt;    # 編輯 xinetd 加入 x11vnc 設定讓它開機自動跑起來&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;service x11vnc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        port            = 5900&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        type            = UNLISTED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        socket_type     = stream&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        protocol        = tcp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        wait            = no&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        user            = root&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        server          = /usr/bin/x11vnc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        server_args     = -inetd -o /var/log/x11vnc.log -display :0 -auth /var/lib/gdm/:0.Xauth -many -bg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;        disable         = no&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;手動 Restart xinetd&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo /etc/init.d/xinetd stop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo killall Xvnc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo killall x11vnc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo /etc/init.d/xinetd start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS：完成後即可用 vncviewer vnchost:0 連到遠端 Ubuntu 桌面，而這裡有個情形要說明一下，當從 GDM login 時 VNC Client會斷線一次，此時再 Reconnect 即可，小問題但不影響使用，使用完記得 logout 免得別人也可登入你的主機。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twntwn.info/blog/ajer001/archives/1789"&gt;http://twntwn.info/blog/ajer001/archives/1789&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5306774761231694072?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5306774761231694072/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5306774761231694072' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5306774761231694072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5306774761231694072'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/los-ubuntu-nstall-x11vnc.html' title='[ LOS ] Ubuntu nstall x11vnc'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6679020103935076583</id><published>2008-07-29T23:17:00.007+08:00</published><updated>2008-09-12T01:03:03.396+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Hard Disk Tools</title><content type='html'>在 Ubuntu OS 中的必裝的磁碟應用軟體&lt;br /&gt;&lt;br /&gt;1. 在 Ubuntu 可中編輯磁碟格式的GUI管理軟體 GParted（Gnome Partition Editor）&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install gparted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;GUI 選單路徑：系統 &gt; 管理 &gt; 磁碟分割編輯器&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. 在 Ubuntu 中掛載 NTFS（可讀寫）檔案格式必裝的三個套件軟體 ntfs-3g、ntfsconfig、ntfsprogs&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install ntfs-3g ntfs-config ntfsprogs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ntfs-config&lt;/span&gt;    # 將 NTFS System Write 選項都打勾&lt;br /&gt;&lt;br /&gt;[v] Enable write support for internal drives.&lt;br /&gt;[v] Enable write support for external drives.&lt;br /&gt;&lt;br /&gt;若 mount 出現時如果出現下面錯誤時表示磁區不乾淨（unclean）可使用 ntfsfix 工具修復&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;$LogFile indicates unclean shutdown (0, 1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ntfsfix /dev/sdb1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ man mkntfs&lt;/span&gt;       # 在 Linux 中切割 NTFS 1.2 (Windows NT/2000/XP) 檔案系統&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo fdisk -l &lt;/span&gt;     # 用 fdisk 查看磁碟詳細資訊&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6679020103935076583?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6679020103935076583/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6679020103935076583' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6679020103935076583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6679020103935076583'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/los-ubuntu-hard-disk-tools.html' title='[ LOS ] Ubuntu Hard Disk Tools'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4778315680693586605</id><published>2008-07-25T10:10:00.007+08:00</published><updated>2008-09-12T00:55:21.851+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Server 8.04.1 Install VMware 2.0</title><content type='html'>目前虛擬化 Virtualization 應用可說越來越普及相對的競爭也越來越激烈，VMware 為了保有市場上一定的佔有率也將 Server 版本免費釋出。 &lt;a href="http://www.vmware.com/beta/server/"&gt;VMware Server&lt;/a&gt; 也就是過去 VMware GSX Server 版本，而目前 VMware Server 已經進入到 2.0 RC1 版本同時 UI ( User Interface ) 也提供可直接於網路瀏覽器上管理，可說是相當方便使用。&lt;br /&gt;&lt;br /&gt;如何將 &lt;a href="http://www.vmware.com/beta/server/"&gt;VMware Server 2.0&lt;/a&gt; 安裝到 Ubuntu 8.04.1？首我們先到 &lt;a href="http://www.ubuntu.com/getubuntu/downloadmirrors"&gt;Ubuntu 官網下載&lt;/a&gt; 最新的 Ubuntu Server 版本 8.0.41 接著燒出來安裝到機器上，我以最小安裝為主因此我只選了 OpenSSH Service 的服務，接著到 &lt;a href="http://www.vmware.com/beta/server/registration.html"&gt;VMware 官方網站&lt;/a&gt; 註冊取得一組免費序號同時下載 VMware Server 最新 2.0 for Linux  版本，目前我下載的最新版本是 &lt;span style="font-weight: bold;"&gt;VMware-server-2.0.0-101586.i386.tar.gz&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Step1. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;首先在欲安裝 VMware Server 2.0 的 Ubuntu 上安裝相關必要軟體，同時將 IPv6 支援關掉，為什麼要將 IPv6 Disable？網路上看到的好像是目前 VMware 2.0 還不相容 IPv6。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo aptitude install build-essential xinetd &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/modprobe.d/aliases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;#alias net-pf-10 ipv6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;alias net-pf-10 off&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$sudo reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Step2. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;將下載完成的 &lt;span style="font-weight: bold;"&gt;VMware-server-2.0.0-101586.i386.tar.gz&lt;/span&gt; 檔上傳到 Ubuntu Server 的 /tmp 目錄中。之後開始安裝的過程只要一直按 enter 回答預設值即可。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd /tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ tar -xzvf VMware-server-2.0.0-101586.i386.tar.gz &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd /tmp/vmware-server-distrib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ./vmware-install.pl  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安裝到一半跳出找不到 C header file 問題，解決方式：先 Ctrl + C 停掉安裝再加裝此 Linux 版本的 C header file。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;What is the location of the directory of C header files that match your running&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;kernel? [/usr/src/linux/include]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;The path "/usr/src/linux/include" is not an existing directory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ Ctrl + C&lt;/span&gt;   # 停止安裝&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install linux-headers-`uname -r` build-essential &lt;/span&gt;     # 加裝此 Linux 版本的 C header file&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo ./vmware-install.p&lt;/span&gt;l    # 再次重新執行安裝&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Please enter your 20-character serial number.&lt;/span&gt;    # 安裝過程中唯一要手動輸入序號的地方&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Step3.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;完成安裝後將登入帳號改成 Ubuntu 系統中的帳號，這個帳號就是 Ubuntu 最初安裝時所建立的那個有 root 權限可執行 sudo 的帳號。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/vmware/hostd/authorization.xml &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    &lt;acedatauser&gt;# &amp;lt;ACEDataUser&amp;gt;root&amp;lt;/ACEDataUser&amp;gt;&lt;br /&gt;&amp;lt;ACEDataUser&amp;gt;login user&amp;lt;/ACEDataUser&amp;gt;&lt;/acedatauser&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo reboot&lt;/span&gt;    # 重開機修改的 login user 才會生效&lt;br /&gt;&lt;br /&gt;最後開個瀏覽器 Firefox 或 IE 打上自己 Server IP：https://192.168.1.100 即可進入主機管理介面 。https://192.168.1.100 會直接導到 https://192.168.1.100/ui/，第一次開啟登入畫面時會要你安裝瀏覽器 for VMware Console 的外掛，安裝完後即可輸入帳號密碼登入 VMware Server 2.0 管理介面。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Reference：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ubuntu-tutorials.com/2007/11/19/install-vmware-server-20-beta-on-ubuntu-710-gutsy/"&gt;http://ubuntu-tutorials.com/2007/11/19/install-vmware-server-20-beta-on-ubuntu-710-gutsy/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4778315680693586605?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4778315680693586605/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4778315680693586605' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4778315680693586605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4778315680693586605'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/los-ubuntu-server-8041-install-vmware.html' title='[ LOS ] Ubuntu Server 8.04.1 Install VMware 2.0'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-843110274139220596</id><published>2008-07-22T09:54:00.006+08:00</published><updated>2008-07-22T10:28:59.461+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Technology'/><title type='text'>[ NT ] Firefox Extesion MR Tech Toolkit</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Firefox Extension Toolkit&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;今天在安裝 &lt;a href="http://www.vmware.com/beta/server/"&gt;VMware Server 2.0 RC1&lt;/a&gt; Firefox Client Console Tools 時碰到了 Firefox 擴充套件只支援舊版的 3.0 版而無法安裝到 3.0.1 版問題，於是找到一個擴充套件相容工具 &lt;a href="https://addons.mozilla.org/zh-TW/firefox/addon/421"&gt;MR Tech Toolkit&lt;/a&gt; ，它可以讓您可在安裝時勾選  “跳過最大版本「maxVersion」相容性檢查”，這樣舊版本的 Extension 就會被強制執行安裝。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1pp3Es5ySxecnjcrsJgVUZJPfMzNB7GI2t-26HAGLUjQmuJ8llw82-OqH4dZfvcLXcdikNV1DpADg/firefox-extension-rm.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-843110274139220596?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/843110274139220596/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=843110274139220596' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/843110274139220596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/843110274139220596'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/nt-firefox-extesion-mr-tech-toolkit.html' title='[ NT ] Firefox Extesion MR Tech Toolkit'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1032602386689909975</id><published>2008-07-14T15:36:00.008+08:00</published><updated>2008-07-15T09:22:22.861+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Installed Sage on FreeBSD OS</title><content type='html'>&lt;a href="http://sagemath.org/"&gt;Sage&lt;/a&gt; 官網上雖然沒有 for FreeBSD 套件可使用但是在 FreeBSD 上安裝 Sage 其實還蠻容易的，只要將 FreeBSD 上的 Linux 相容模式打開即可抓已經編譯好的 Sage Linux 版本來使用，我安裝的環境為 FreeBSD 7.0 + sage-3.0.3-debian32bit-intel-i686-Linux.tar.gz。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. 設定開啟 linux 模擬環境 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#vi /etc/rc.conf&lt;/span&gt;       # 設定開機自動載入 linux.ko&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;linux_enable="YES"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# kldload linux &lt;/span&gt;        # 手動載入 linux.ko&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# kldstat&lt;/span&gt;        # 查看 linux.ko 是否已經載入&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Id Refs Address    Size     Name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 1    2 0xc0100000 16bdb8   kernel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt; 3    1 0xc24db000 d000     linux.ko&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/emulators/linux_base-fc4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. 下載  Sage for Linux 編譯好的二進位檔使用&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# cd ~&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# fetch http://www.sagemath.org/bin/linux/32bit/sage-3.0.3-debian32bit-intel-i686-Linux.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# tar -xzvf sage-3.0.3-debian32bit-intel-i686-Linux.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# mv sage-3.0.3-debian32bit-intel-i686-Linux.tar.gz sage-3.0.3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# cd sage-3.0.3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi sage&lt;/span&gt;      # 修改 Sage 目錄&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;#SAGE_ROOT="....."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;SAGE_ROOT="/home/ Some User /sage-3.0.3"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#/compat/linux/bin/bash  ./sage&lt;/span&gt;      # 執行 sage&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sage：&lt;/span&gt;&lt;br /&gt;Ctrl + D      # 跳出 sage 互動模式&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;/compat/linux/bin/bash  ./sage&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt; -c "notebook(address='192.168.31.128')"&lt;/span&gt;    #  指定某個固定 IP 提供服務&lt;br /&gt;開個 Browse 進入 http://192.168.31.128:8000&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Reference：&lt;/span&gt;&lt;br /&gt;&lt;a href="http://wiki.sagemath.org/freebsd"&gt;http://wiki.sagemath.org/freebsd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1032602386689909975?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1032602386689909975/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1032602386689909975' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1032602386689909975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1032602386689909975'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/fbsd-installed-sage-on-freebsd-os.html' title='[ FBSD ] Installed Sage on FreeBSD OS'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4602690817102104291</id><published>2008-07-10T22:46:00.005+08:00</published><updated>2010-03-23T15:50:14.620+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Math'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ LOS ] Ubuntu Install Mathematics Software Sage</title><content type='html'>&lt;p&gt;最近研究不少密碼學上面的數論不小心發現了一個數學輔助軟體 &lt;a href="http://www.sagemath.org/"&gt;Sage&lt;/a&gt;，這套軟體是由華盛頓大學基於 Python 語言及全世界100多位數學家的幫助下所開發而成的，倘若你早已經是 Python 的 Coder 而又對數學有相當的興趣者相信你一摸到 Sage 就會跟我一樣愛不釋手。&lt;br /&gt;&lt;br /&gt;目 前類似像 Sage 這類的數學軟體於商業上開發的有知名的 Matlab、Maple、Mathematica 和 Magma 等、、、這些軟體因為商業開發所以價格都不便宜而且 Source Code 都不願向外界透露，有如一個黑合子會讓使用者無法去了解其所得到的結果是如何獲得。此文件是按照 &lt;a href="http://www.sagemath.org/doc/html/inst/node6.html"&gt;官方安裝說明&lt;/a&gt; 方式裝於 Linux Ubuntu 8.041 Distribute 中。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Ubuntu 上安裝 Sage&lt;/span&gt;：&lt;br /&gt;&lt;br /&gt;去 Sage &lt;a href="http://www.sagemath.org/download.html"&gt;官方網站&lt;/a&gt; 下載區找尋最新的 Sage 套件，我下載 Source 使用自行 Compiler 的方式安裝，目前 sage-3.0.3.tar 為最新版本最後釋出日是 2008-06-23 檔案大小約  190M 挺大的。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd ~&lt;/span&gt;        # 切到自己的家目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ wget  http://www.sagemath.org/src/sage-3.0.3.tar&lt;/span&gt;       # 下載 sage&lt;br /&gt;&lt;br /&gt;以下是 Sage 安裝所必需要使用要的套件需要先在 Ubuntu OS 中確認，直接用 apt-get install 安裝 apt-get 也可以確認系統是否已經安裝過，沒有安裝的套件就會自動幫你裝上而已經有安裝的就會跟你說系統已經安裝。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install gcc-4.2-base&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install m4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install bison&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install flex&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install tar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install perl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install binutils&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install libstdc++6-dev&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install g++&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install openssh-client&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install tex-common &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install tetex-base &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo apt-get install kpdf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ tar xvf sage-3.0.3.tar&lt;/span&gt;    # 解 tar&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cd sage-3.0.3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo make&lt;/span&gt;       # 編譯要花很長一段時間&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cp sage* /usr/local/bin&lt;/span&gt;        # make 完畢後將 sage 及 sage-python 兩個檔 copy 一份到 /usr/local/bin  下&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo vi /usr/local/bin/sage&lt;/span&gt;       # 修改 sage 檔的 SAGE_ROOT 目錄&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;#SAGE_ROOT="....."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;SAGE_ROOT="/home/ Some User /sage-3.0.3"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;$ sage&lt;/span&gt;       # 進入 sage&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sage :&lt;/span&gt; notebook()&lt;/span&gt;        # 執行 notebook() 可用 Firefox 瀏覽器進入互動圖形界面 http://localhost:8000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Sage 及 Python 整合操作&lt;/span&gt;：&lt;br /&gt;&lt;br /&gt;(1) 互動模式直接執行 sage-python&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sage-python&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Python 2.5.2 (r252:60911, Jul  9 2008, 19:20:58) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&gt;&gt;&gt; from sage.all import *&lt;/span&gt;&lt;br /&gt;或&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&gt;&gt;&gt; imprt sage.all&lt;/span&gt;        # 把所有 Sage Module 都 import 進到 Python&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&gt;&gt;&gt; sage.all.factor(2006)&lt;/span&gt;       # 因式分解&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2 * 17 * 59&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(2) 寫 Python/Sage  Scripts 程式&lt;span style="color: rgb(0, 0, 0);"&gt; : 參考&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://modular.math.washington.edu/sage/doc/html/tut/node59.html"&gt;Standalone Python/Sage Scripts&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ cat factor.py&lt;/span&gt;&lt;/p&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env sage-python&lt;br /&gt;# -*- coding: UTF-8 -*-&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;from sage.all import *&lt;br /&gt;&lt;br /&gt;if len(sys.argv) != 2:&lt;br /&gt;print "Usage: %s &lt;n&gt;"%sys.argv[0]&lt;br /&gt;print "Outputs the prime factorization of n."&lt;br /&gt;sys.exit(1)&lt;br /&gt;&lt;br /&gt;print factor(sage_eval(sys.argv[1]))&lt;br /&gt;&lt;/n&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ ./factor 2006&lt;/span&gt;      # 執行程式求 2006 因式分解&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2 * 17 * 59&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(3) 實際應用說明&lt;br /&gt;&lt;br /&gt;求解數學方程式：中國餘式定理、最大公因數、 最小公倍數、、、等。範例參考 :  &lt;a href="http://www.sagemath.org/doc/html/ref/module-sage.rings.arith.html"&gt;SageMath&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;$ sage-python &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&gt;&gt;&gt; imprt sage.all&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 求 x 值 CRT( a, b, m, n)  x=a (mod m) and x=b (mod n)&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&gt;&gt;&gt; sage.rings.arith.CRT(2, 1, 3, 5) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;11&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 求 x 值 CRT_list( v, moduli)  餘數 [2,3,2] 質數 [3,5,7] 同餘 x≡2mod3 , x≡3mod5 , x≡2mod7&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&gt;&gt;&gt; sage.rings.arith.CRT_list([2,3,2], [3,5,7])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;23&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 取最大公因數&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&gt;&gt;&gt; sage.rings.arith.GCD(97,100) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 取最小公倍數&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;&gt;&gt;&gt; sage.rings.arith.LCM(97,100)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;9700&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;參考&lt;/span&gt;：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sagemath.org/"&gt;http://www.sagemath.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.sagemath.org/"&gt;http://wiki.sagemath.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4602690817102104291?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4602690817102104291/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4602690817102104291' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4602690817102104291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4602690817102104291'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/los-ubuntu-install-mathematics-software_10.html' title='[ LOS ] Ubuntu Install Mathematics Software Sage'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-864905381849019999</id><published>2008-07-03T10:12:00.008+08:00</published><updated>2008-07-10T16:32:43.045+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><title type='text'>[ Crypto ] Chinese Remainder Theorem , CRT</title><content type='html'>何謂中國餘數定理 ( Chinese Remainder Theorem , CRT ) ？ 其又可稱為：孫子定理、韓信點兵、 隔牆算、大衍求一術、、、等。中國餘數定理使用在計算機科學中應用相當多，尤其是密碼學及資料壓縮。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;題目：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;中國古代的 “孫子算經” 裡有一個 “物不知其數” 的問題：『物不知其數，三三數之剩二，五五數之剩三，七七數之剩二』。&lt;br /&gt;&lt;br /&gt;白話文就是說：現有一物件，不知道是多少？如果把這物件分成 3 個一組，最後會剩下 2 個物件未能分組，如果把這物件分成 5 個一組，最後會剩下 3 個物件未能分組，如果把這物件分成7個一組，最後會剩下 2 個物件未能分組。請問原本的物件是多少？&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;求解：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;要怎麼計算呢？我們可以使用同餘概念求解。可先將 CRT 問題使用同餘數表示成下面方式，再計算這三個同餘方程組的 X 解是為何？( 這個 “≡” 數學符號為同餘，即有相同餘數 )。&lt;br /&gt;&lt;br /&gt;X≡2 (mod3)&lt;br /&gt;X≡3 (mod5)&lt;br /&gt;X≡2 (mod7)&lt;br /&gt;&lt;br /&gt;取 (  5、7 )  的公倍數 70，此公倍數必須滿足除以 3 會餘 1&lt;br /&gt;取  ( 3、7  )  的公倍數 21，此公倍數必須滿足除以 5 會餘 1&lt;br /&gt;取 ( 3、5  ) 的公倍數 15，此公倍數必須滿足除以 7 會餘 1&lt;br /&gt;取 ( 3、5、7 ) 這三個數最小公倍數為 3*5*7 = 105&lt;br /&gt;&lt;br /&gt;因 X≡(70*2) + (21*3) +(15*2) (mod 105) ≡ 233(mod 105) ≡ 23(mod 105)&lt;br /&gt;得 X = 23&lt;br /&gt;&lt;br /&gt;衍生到現在密碼學上的應用為：&lt;br /&gt;&lt;br /&gt;23 除以 3 餘 2、23 除以 5 餘 3、23 除以 7 餘 2，所以使用 ( 3、5、7 ) 三個質數時，23 這個數的CRT表示法是：( 2、3、2) 這是最簡易有效的密碼！當雙方通訊時若送方把 23 這個數使用 ( 3、5、7 ) 這三個數“編碼”成( 2、3、2) 三個數，接收方可在知道( 2、3、2) 後，再根據 ( 3、5、7 ) 這三個數解出送方所傳遞的訊息是 23 這個數。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="letter-spacing: 0.4pt;"&gt;&lt;span style="letter-spacing: 0.4pt;font-family:新細明體;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-864905381849019999?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/864905381849019999/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=864905381849019999' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/864905381849019999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/864905381849019999'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/crypto-chinese-remainder-theorem-crt.html' title='[ Crypto ] Chinese Remainder Theorem , CRT'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1661451735209297028</id><published>2008-07-01T23:25:00.010+08:00</published><updated>2008-07-02T09:04:40.315+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><title type='text'>[ Crypto ] Zero Knowledge Proof / Protocol</title><content type='html'>何謂零知識證明 ( zero-knowledge proof or zero-knowledge protocol )？&lt;br /&gt;&lt;br /&gt;簡單的說就是A要向B證明他知道某秘密的常用方法若A把他知道的秘密告訴B，但這樣一來B就知道了這個秘密。而要如何在不告訴B這個秘密的情況下讓B相信A知道這個秘密？就是零知識證明要解決的問題。有了零知識證明，A就可以在不公布秘密之下讓任何人相信他知道這個秘密。&lt;br /&gt;&lt;br /&gt;上述的說明似乎有點抽象難懂，在 &lt;a href="http://www.books.com.tw/exep/prod/booksfile.php?item=0010143430"&gt;數學小魔女&lt;/a&gt; 這本書中提出了一個很淺顯易懂的實例謎題說明了何謂零知識證明，同時提供了一個解決問題的方式讓我們一看就知道何謂零知識證明。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;謎題：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;在幾年前的一次聚會裡，有一群數學家突然想到一個問題「假設有一群人在一個房間裡，怎麼樣才能知道這群人的平均薪水，而不洩露個別的收入呢？」&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;解決方法：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;當這些頭髮灰白的人陷入長考時，其中一位數學家的女兒很輕鬆的說：『我有個好辦法。』( 請你先想想怎麼辦再往下看。)&lt;br /&gt;&lt;br /&gt;「我偷偷把一個很大的數字告訴第一位來賓。他把自己的收入加上這個數字，然後再寫到一張紙條上，再把這張紙條交給第二位來賓。第二位來賓把自己的收入加上這個數字，把答案寫在另一張紙條上，再把新紙條交給下一位來賓。每個人交出新紙條後要把舊紙條收好。這樣一直做到最後一個來賓，而我們必須要確定每個人交出紙條上的數字，與接到紙條的數字不同。傳完後我把最後的這張紙條拿來，把上面的數字與我最初設定的數字相減就可知道來賓的總收入，而平均收入就再除以總人數即可得。」&lt;br /&gt;&lt;br /&gt;這個聰明的方式就是零知識證明 ( Zero-Knowledge Proof ) ，因為它沒有洩露任何有關個人收入的資料，又可讓眾人得知結果。&lt;br /&gt;&lt;br /&gt;wikipedia：&lt;a href="http://en.wikipedia.org/wiki/Zero-knowledge_proof"&gt;http://en.wikipedia.org/wiki/Zero-knowledge_proof&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1661451735209297028?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1661451735209297028/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1661451735209297028' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1661451735209297028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1661451735209297028'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/crypto-zero-knowledge-protocol.html' title='[ Crypto ] Zero Knowledge Proof / Protocol'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6997651200016444284</id><published>2008-07-01T14:29:00.002+08:00</published><updated>2008-07-01T14:33:43.158+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] httping - measure the lateceny and throughput of a webserver</title><content type='html'>&lt;a href="http://www.vanheusden.com/httping/"&gt;httping&lt;/a&gt; 主要為量測網站回應延遲時間，同時現在有蠻多網站把 Ping 的 ICMP 封包回應給關掉，因此我們也可透過 httping 來查看網站是否還活著。&lt;br /&gt;&lt;br /&gt;FreeBSD 中安裝：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#cd /usr/ports/net/httping&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;使用方式：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#httping -g http://www.fcu.edu.tw -c 5&lt;/span&gt;     # 參數 -g 真對 url 格式  參數 -c 只 ping 5 次&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#httping -h www.fcu.edu.tw -p 80&lt;/span&gt;      # 參數 -h 真對 host 格式  -p  為針對 Service Port 80&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#httping -l -g https://gmail.com&lt;/span&gt;       # 參數 -l 是提供 https 格式也就是 SSL 連接，預設是 443 Port&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6997651200016444284?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6997651200016444284/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6997651200016444284' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6997651200016444284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6997651200016444284'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/07/fbsd-httping-measure-lateceny-and.html' title='[ FBSD ] httping - measure the lateceny and throughput of a webserver'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-8127848817682099075</id><published>2008-06-27T10:14:00.008+08:00</published><updated>2008-06-27T12:06:20.708+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><title type='text'>[ Crypto ] Commitment Scheme</title><content type='html'>託付機智 (Commitment Scheme) 是一種雙方協議好的機智，協議好的雙方皆需遵守此規則行事，同時無法利用某些手段達到欺騙對方。託付機智一般分為兩個階段：&lt;br /&gt;&lt;br /&gt;1.密封(Bind)：一方將託付值送出後，不管其計算能力為何皆無法更改託付值。&lt;br /&gt;2.隱藏(Hiding)：接收託付的一方，不管其計算能力為何在驗證階段之前皆無法得知託付值。&lt;br /&gt;&lt;br /&gt;為了達到託付機智兩個基本需求密封及隱藏，我們可利用雜湊函式 (Hash Function) 或加密 (Encryption) 方式來完成託付機智，以下我們就以簡單的猜拳遊戲來說明託付機智的使用。&lt;br /&gt;&lt;br /&gt;(一). 雜湊函式方式：&lt;br /&gt;&lt;br /&gt;(1) a -&gt; b：ha = H(Ra||剪刀)&lt;br /&gt;(2) b -&gt; a：石頭&lt;br /&gt;(3) a -&gt; b：Ra，剪刀&lt;br /&gt;&lt;br /&gt;(1) a給b一個雜湊值裡面包有隨機亂數Ra及剪刀，b得到這個ha後無法解開得知這個雜湊值內容。&lt;br /&gt;(2) b告知a他出石頭。&lt;br /&gt;(3) a再傳給b他包在雜湊值中的兩個東西：(Ra、剪刀)，b得到Ra跟剪刀後就可產生出相同的ha雜湊值來驗證a是否誠實告知他原先是出剪刀。&lt;br /&gt;&lt;br /&gt;最後雙方在一個密封及隱藏之下完成驗證而b贏得勝利結果。為何 Hash Function 可以達到讓接受端b無法解開ha？主要是單向雜湊的不可逆特性因此b無法得知內容作弊，而a若想做弊也很難它必須要找到 Ra' 使得 H(Ra||剪刀) = H(Ra'布) 也就是a必須要找到雜湊函式H(.)的碰撞，因此a也無法作弊。&lt;br /&gt;&lt;br /&gt;(二). 加密方式：&lt;br /&gt;&lt;br /&gt;(1) b -&gt; a：Rb&lt;br /&gt;(2) a -&gt; b：Ca = Ek(Rb||剪刀)&lt;br /&gt;(3) b -&gt; a：石頭&lt;br /&gt;(4) a -&gt; b：k&lt;br /&gt;&lt;br /&gt;(1) b給a一個隨機亂數Rb。&lt;br /&gt;(2) a給b一個加密後的Ca這個Ca是用k把這把金鑰將Rb及剪刀封密起來。&lt;br /&gt;(3) b告知a它出石頭。&lt;br /&gt;(4) a傳Ca的加密金鑰k給b去解開Ca即可驗證結果。&lt;br /&gt;&lt;br /&gt;最後b贏得勝利結果，當b收到Ca後因為沒有金鑰所以無法得知對方是出剪刀所以b無法作弊，a同樣也無法作弊因為b選定了一個隨機亂數Rb因此 Ek(Rb||剪刀) = Ek(Rb||布) 要成立並不容易，因為a必須要找到另一把金鑰k'。&lt;br /&gt;&lt;br /&gt;小結：&lt;br /&gt;&lt;br /&gt;將以上兩種方式來做個比較，使用 Hash Function 似乎比較簡易，因為它只需要三個 Message 即可達到我們的需求而 Encryption 卻需要四個 Message 才能完成任務，另外 Hash Function 的計算量會比加密來得輕量，因此 Hash Function 似乎是不錯的選擇。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-8127848817682099075?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/8127848817682099075/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=8127848817682099075' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8127848817682099075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8127848817682099075'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/06/crypto-commitment-scheme.html' title='[ Crypto ] Commitment Scheme'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7750902337847831511</id><published>2008-06-21T23:46:00.004+08:00</published><updated>2010-03-23T15:50:55.076+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] Euclid GCD Algorithm</title><content type='html'>使用歐基里德 EUCLID 演算法找出最大公因數 GCD &lt;br /&gt;公式： gcd(a,b) = gcd(b,a mod b) &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/local/env python&lt;br /&gt;#  -*- coding: UTF-8 -*-&lt;br /&gt;# For GCD  and Euclid Algorithm &lt;br /&gt;# gcd(a, b) = gcd(b, a mod b)&lt;br /&gt;&lt;br /&gt;def cfactor(a,b):&lt;br /&gt;if a &gt; b:&lt;br /&gt;while b != 0:&lt;br /&gt;achange = b&lt;br /&gt;bchange = a%b&lt;br /&gt;a = achange&lt;br /&gt;b = bchange&lt;br /&gt;return a&lt;br /&gt;else:&lt;br /&gt;return "a must be greater than b"&lt;br /&gt;&lt;br /&gt;#Gets numbers&lt;br /&gt;a = input("a = ")&lt;br /&gt;b = input("b = ")&lt;br /&gt;&lt;br /&gt;#Prints common factor&lt;br /&gt;print "The commmon factor is:"&lt;br /&gt;print cfactor(a,b) &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7750902337847831511?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7750902337847831511/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7750902337847831511' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7750902337847831511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7750902337847831511'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/06/python-euclid-gcd-algorithm.html' title='[ Python ] Euclid GCD Algorithm'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6023537681557627198</id><published>2008-06-20T16:44:00.005+08:00</published><updated>2008-06-20T17:05:02.884+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><title type='text'>[ Crypto ] Diffie-Hellman Key exchange</title><content type='html'>Diffie-Hellman 金鑰交換演算法&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wwjSyQX_b2cALGA-WCRclacGOJC4o6GqzY7vao6LNFlyIeEC9yFgR9BDH1gvH9iI6YHBlN9zdupuw/Diffie-Hellman%20Key%20exchange.PNG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6023537681557627198?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6023537681557627198/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6023537681557627198' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6023537681557627198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6023537681557627198'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/06/crypto-diffie-hellman-key-exchange.html' title='[ Crypto ] Diffie-Hellman Key exchange'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3604467724463143136</id><published>2008-06-15T16:57:00.005+08:00</published><updated>2010-03-23T15:51:52.932+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] Calculation Prime number</title><content type='html'>使用 Python 簡易求質數 ( Prime ) .&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: UTF-8 -*-&lt;br /&gt;# 最簡易求質數方式使用迴圈+開根號方式測試所輸入的值是否為質數(Prime)&lt;br /&gt;# 1不算從2開始,如果整除餘數為0則為合數(Composite)否則為質數(Prime)&lt;br /&gt;&lt;br /&gt;from math import sqrt&lt;br /&gt;&lt;br /&gt;def factorize(n):&lt;br /&gt;i,s = 2,sqrt(n)&lt;br /&gt;while n%i!=0 and i&lt;=s:                 i+=1         return n%i==0  n = input("Plz Enter a Number: ")  if factorize(n):         print n,"is not a prime.", else:         print n,"is a prime." &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3604467724463143136?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3604467724463143136/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3604467724463143136' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3604467724463143136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3604467724463143136'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/06/python-calculation-prime-number.html' title='[ Python ] Calculation Prime number'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7507314524927731193</id><published>2008-06-15T00:17:00.003+08:00</published><updated>2008-06-15T00:26:24.837+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] How to execution Python code in Vim</title><content type='html'>如何在 Vim 編輯時直接執行 Python 程式 ? 在命令列 : 號後輸入下面文字便可直接於 Vim 中執行 Python 程式，w 為存檔前面的百分比符號 % 是指全文都要的意思。&lt;br /&gt;&lt;br /&gt;%w !python&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7507314524927731193?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7507314524927731193/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7507314524927731193' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7507314524927731193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7507314524927731193'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/06/python-how-to-execution-python-code-in.html' title='[ Python ] How to execution Python code in Vim'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5565513077457993564</id><published>2008-06-04T12:28:00.009+08:00</published><updated>2008-11-15T14:37:16.647+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] OpenSSL + Key + Hash + Digital Signature</title><content type='html'>&lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt; 是一個輔助學習密碼學 ( Cryptography ) 基礎很好的免費工具軟體，這邊就來說明如何使用&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt; OpenSSL 產生私鑰 ( Private Key ) / 公鑰 ( Public Key ) 及雜湊 ( Hash ) 加密和數位簽章 ( Digital Signature ) 驗證。OpenSSL 在 FreeBSD 中預設就已經存在可以直接叫用，也有 for &lt;a href="http://www.slproweb.com/products/Win32OpenSSL.html"&gt;Windows 安裝版本&lt;/a&gt; 可安裝使用。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;何謂金鑰( Key ) ? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;金鑰一般大致上可分為兩類：公鑰( Public Key) / 私鑰 ( Private Key ) ，而金鑰所搭配的加密方式有：對稱式加密 ( Symmetric Encryption ) 及 非對稱式加密 ( Asymmetric Encryption )  兩種，對稱式加密其特色在於加解密所使用的金鑰是相同的一把， 而非對稱式的加解密則會使用同一對公鑰 / 私鑰組做加解密。在這篇文章中我是使用非對稱式加密法同時搭配 RSA 演算法去產生公鑰及私鑰。&lt;br /&gt;&lt;br /&gt;1. 如何使用 OpenSSL 產生 Private Key ?&lt;br /&gt;&lt;br /&gt;# RSA 演算法產生預設 512 bit 長度的 Private Key&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl genrsa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 產生長度 1024-bit 的 Key 並儲存到 myPrivate.pem 檔中&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl genrsa -out myPrivate.pem 1024&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 與上面相同但是多了詢問密碼保護 ( Passphrase )&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl genrsa -des3 -out myPrivate.pem 1024&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. 如何使用 OpenSSL 產生 Public Key ?&lt;br /&gt;&lt;br /&gt;# 公鑰可由私鑰產生其方式如下&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# openssl rsa -in myPrivate.pem -pubout -out myPublic.pem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;何謂雜湊 ( Hash ) ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;雜湊可以接收不固定長度的訊息 ( Message )，以 M 做為輸入然後輸出一個固定長度的訊息認證值 H(M)，雜湊的特性為不可逆且不需要金鑰。在網路上最常看到的應用就是簡易的加密使用以及讓使用者驗證所下載的檔案是否有無被修改過。因為 Hash 有不可逆性，因此可讓使用者去驗證確保所取得的檔案它的完整性。&lt;br /&gt;&lt;br /&gt;1. 如何使用 OpenSSL 對二進制檔案產生 Hash Value ?&lt;br /&gt;&lt;br /&gt;# 使用 md5 演算法將一個檔案雜湊值算出來&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl dgst -md5 test.iso&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;MD5(test.iso)= 9e386828192dd3336b9b2a5e5b5b06ce&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. 如何使用 OpenSSL 中其他 Hash 演算法產生 Hash Value ?&lt;br /&gt;&lt;br /&gt;# OpenSSL 提供的 Hash 演算法有 md2、md4、md5、mdc2、rmd160、sha、sha1 幾種下面使用 sha1&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl dgst -sha1 test.iso&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;SHA1(test.iso)= dc7a1138849001dedd96e7726140addfeb09c9d7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3.  如何使用 OpenSSL 加密演算法對檔案做加解密 ?&lt;br /&gt;&lt;br /&gt;# 使用 AES  256-bit 模式搭配 CBC 型態演算法加 salt 對檔案擾亂加密，加密時需要輸入一組密碼&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl enc -aes-256-cbc -salt -in file.txt -out file.enc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;enter aes-256-cbc encryption password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Verifying - enter aes-256-cbc encryption password:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 使用 AES  256-bit 模式搭配 CBC 型態演算法加 salt 對檔案擾亂加密，直接帶參數輸入一組密碼&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl enc -aes-256-cbc -salt -in file.txt -out file.enc -pass pass:1234&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 查看已加密檔&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cat file.enc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Salted__[▒O▒ z▒▒▒Ğm▒y@▒q▒▒▒E!▒▒u▒_▒7▒"2▒CE▒|root@n&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# 解密，我們可用加密的密碼解密&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl enc -d -aes-256-cbc -in file.enc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;enter aes-256-cbc decryption password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Test Encription / Decryption&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;何謂數位簽章 ( Digital Signature ) ? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;在人類一般生存的世界中我們可用手來簽章以進行身份確認，而在網路的世界裡我們要如何進行身份確認？我們可以使用數位簽章 ( Digital Signature ) 進行身份確認。數位簽章可以說是一個獨一無二的數值，它使用私鑰進行加密，然後利用公鑰進行確認：若 Public key 能通過驗證，那我們就肯定所對應的 Private key 之正確性。換而言之，數位簽章具備兩種屬性：『可確認性』及『不可抵賴性』，可確認性：確認這個訊息或檔案的確是由對方發出，不可抵賴性：對方事後無法否認東西就是由他所發送出來的。&lt;br /&gt;&lt;br /&gt;1. OpenSSL 如何使用 Private Key 去簽一份檔案 ?&lt;br /&gt;&lt;br /&gt;# 簽章必須先用 Hash 加密後再去產生以確保機密性安全&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl dgst -sha1 -sign myPrivate.pem -out test.iso.sha1 test.iso&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. OpenSSL 如何使用 Public Key 去驗證簽章 ?&lt;br /&gt;&lt;br /&gt;# 當取得 Public Key 及 test.iso.sha1簽章檔我們就可驗證檔案確實是由 Private Key 那個人所簽發出的&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# openssl dgst -sha1  -verify myPublic.pem  -signature test.iso.sha1 test.iso&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Verified OK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS：簽章的驗證是需要對方的 Public Key 但是先決條件是你要先確定你拿到的 Public Key 真的是對方發出的，其最安全的方式為兩個人當面交換 Public Key，但在網路上為求便利性及電子商務的需求就有所謂的 &lt;a href="http://www.verisign.com/"&gt;VeriSign&lt;/a&gt;  身份認證機構出現，VeriSign 透過數位證書 ( Digital Certificate ) 來認定持證人，換個說法就是 VeriSign 會對你的公鑰進行加簽。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.madboa.com/geek/openssl"&gt;http://www.madboa.com/geek/openssl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5565513077457993564?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5565513077457993564/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5565513077457993564' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5565513077457993564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5565513077457993564'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/06/fbsd-openssl-key-hash-digital-signature.html' title='[ FBSD ] OpenSSL + Key + Hash + Digital Signature'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3422862470069770348</id><published>2008-05-31T01:29:00.010+08:00</published><updated>2010-03-23T15:53:03.535+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cryptography'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] Python Cryptographic Hash</title><content type='html'>練習 Python hashlib 的使用，計算二進位檔案的雜湊值。&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: UTF-8 -*-&lt;br /&gt;"""&lt;br /&gt;File Name : cHash.py&lt;br /&gt;Using SHA1 algorithm calculate binary file hash value.&lt;br /&gt;The Python hashlib support MD5,SHA1,SHA224,SHA256,SHA384,SHA512&lt;br /&gt;"""&lt;br /&gt;import hashlib&lt;br /&gt;&lt;br /&gt;sf = raw_input('請輸入要計算的檔案名稱:') # 輸入檔名&lt;br /&gt;print 'SHA1 計算後所得到的雜湊值為：'&lt;br /&gt;f = file(sf, 'rb') # 二進位模式讀檔&lt;br /&gt;m = hashlib.sha1()&lt;br /&gt;&lt;br /&gt;while 1:&lt;br /&gt;c = f.read(8192)  # 分塊讀取再算 Hash 值,比整個大檔讀入記憶體效率好&lt;br /&gt;if not c: break&lt;br /&gt;m.update(c)&lt;br /&gt;&lt;br /&gt;print m.hexdigest()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Result&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wzkIJlak1XTdiimqZk8wMj7xvkW2WA2ZYkzoxMmXVm9PAEWwj6K8kXFFJ29TI-dxr8NDdkv1QRQYQ/cHash.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference：&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://victe.blogspot.com/2008/05/python.html"&gt;http://victe.blogspot.com/2008/05/python.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/pythontw/browse_thread/thread/6e2dfbb858b8585f"&gt;http://groups.google.com/group/pythontw/browse_thread/thread/6e2dfbb858b8585f&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3422862470069770348?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3422862470069770348/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3422862470069770348' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3422862470069770348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3422862470069770348'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/python-python-cryptographic-hash.html' title='[ Python ] Python Cryptographic Hash'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-2011151088238303419</id><published>2008-05-28T14:49:00.003+08:00</published><updated>2008-05-28T14:55:51.924+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Learn 10 more good UNIX usage habits</title><content type='html'>學習 10 個使用 Unix Command-line 的好習慣：&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/aix/library/au-unixtips/index.html"&gt;http://www.ibm.com/developerworks/aix/library/au-unixtips/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-2011151088238303419?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/2011151088238303419/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=2011151088238303419' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2011151088238303419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/2011151088238303419'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/fbsd-learn-10-more-good-unix-usage.html' title='[ FBSD ] Learn 10 more good UNIX usage habits'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6674086339761735154</id><published>2008-05-23T00:12:00.009+08:00</published><updated>2010-03-23T15:53:46.177+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] wxPython Example - A Simple Editor</title><content type='html'>練習 &lt;a href="http://wxpython.org/"&gt;wxPython&lt;/a&gt; Windows GUI 程式撰寫，程式來自官網中 &lt;a href="http://wiki.wxpython.org/Getting%20Started#head-6e8427493dcc765fb873a1838adfbd6b8d08e0ee"&gt;wxPyWiki&lt;/a&gt; 教學文件為一個簡易的文字編輯器程式範例：&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: CP950 -*-&lt;br /&gt;# 說明: 一個簡易的文字編輯器，因 Run 於 Windows 上所以要使用 Big5 編碼中文才不會有問題&lt;br /&gt;#       若運作於 Unix 或 Linux 上則須改為 UTF-8 編碼&lt;br /&gt;import wx&lt;br /&gt;ID_ABOUT=101&lt;br /&gt;ID_OPEN=102&lt;br /&gt;ID_EXIT=200&lt;br /&gt;class MainWindow(wx.Frame):&lt;br /&gt;def __init__(self,parent,id,title):&lt;br /&gt;self.dirname=''&lt;br /&gt;wx.Frame.__init__(self,parent,wx.ID_ANY, title)&lt;br /&gt;self.control = wx.TextCtrl(self, 1, style=wx.TE_MULTILINE)&lt;br /&gt;self.CreateStatusBar() # A Statusbar in the bottom of the window&lt;br /&gt;# Setting up the menu.&lt;br /&gt;filemenu= wx.Menu()&lt;br /&gt;filemenu.Append(ID_OPEN, "&amp;amp;打開"," Open a file to edit")&lt;br /&gt;filemenu.AppendSeparator()&lt;br /&gt;filemenu.Append(ID_ABOUT, "&amp;amp;關於"," Information about this program")&lt;br /&gt;filemenu.AppendSeparator()&lt;br /&gt;filemenu.Append(ID_EXIT,"&amp;amp;離開"," Terminate the program")&lt;br /&gt;# Creating the menubar.&lt;br /&gt;menuBar = wx.MenuBar()&lt;br /&gt;menuBar.Append(filemenu,"&amp;amp;檔案") # Adding the "filemenu" to the MenuBar&lt;br /&gt;self.SetMenuBar(menuBar)  # Adding the MenuBar to the Frame content.&lt;br /&gt;wx.EVT_MENU(self, ID_ABOUT, self.OnAbout)  # attach the menu-event ID_ABOUT to the&lt;br /&gt;# method self.OnAbout&lt;br /&gt;wx.EVT_MENU(self, ID_EXIT, self.OnExit)&lt;br /&gt;wx.EVT_MENU(self, ID_OPEN, self.OnOpen)&lt;br /&gt;self.Show(1)&lt;br /&gt;#Declaration Method  &lt;br /&gt;def OnAbout(self,e):&lt;br /&gt;d= wx.MessageDialog( self, " 於 wxPython 的一個 \n"&lt;br /&gt;" 簡易的文件編輯器 ","關於編輯器的樣板", wx.OK)&lt;br /&gt;# Create a message dialog box&lt;br /&gt;d.ShowModal() # Shows it&lt;br /&gt;d.Destroy() # finally destroy it when finished.&lt;br /&gt;def OnExit(self,e):&lt;br /&gt;self.Close(True)  # Close the frame.&lt;br /&gt;def OnOpen(self,e):&lt;br /&gt;""" Open a file"""&lt;br /&gt;dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.OPEN)&lt;br /&gt;if dlg.ShowModal() == wx.ID_OK:&lt;br /&gt;self.filename=dlg.GetFilename()&lt;br /&gt;self.dirname=dlg.GetDirectory()&lt;br /&gt;f=open(os.path.join(self.dirname, self.filename),'r')&lt;br /&gt;self.control.SetValue(f.read())&lt;br /&gt;f.close()&lt;br /&gt;dlg.Destroy()&lt;br /&gt;&lt;br /&gt;# Into the program Main point&lt;br /&gt;app = wx.PySimpleApp()&lt;br /&gt;frame = MainWindow(None, -1, "Sample editor")&lt;br /&gt;app.MainLoop()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;執行結果：&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wwtYeLuADpr-NFuwlzVdWK6hZe7eO3EJLZu5HDlXLZnNHYwc1azZojcEfENpdJqG_ncfvROweevnw/SimpleTextEditor.PNG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6674086339761735154?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6674086339761735154/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6674086339761735154' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6674086339761735154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6674086339761735154'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/python-wxpython-example-simple-editor.html' title='[ Python ] wxPython Example - A Simple Editor'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3009787009667891194</id><published>2008-05-22T10:38:00.008+08:00</published><updated>2008-05-22T13:58:31.996+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Technology'/><title type='text'>[ NT ] Google Spreadsheet Integrates Forms</title><content type='html'>今天收到學校班代發出的『畢業典禮調查邀請函』，雖然這學期不能順利畢業但是還是很開心的報名了，看了一下 URL 發現班代是使用 Google Spreadsheet 試算表去編輯『畢業典禮調查邀請函 』，這時才發現原來 Google Spreadsheet 有了這個新功能。&lt;br /&gt;&lt;br /&gt;這個新功能整合了表單 ( Form ) 就像是簡易版的 Access 可以讓使用者設計表單，而且使用者可透過網頁直接填寫內容匯入試算表，如果再搭配一些公式及圖表，就可以作成線上即時問卷調查統計，Google Spreadsheet 真的是越來越好用，相信這個新功能對許多人來說會是一個非常實用的好工具。&lt;br /&gt;&lt;br /&gt;畢業典禮調查邀請函範例：&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wxCk8anVhyVvr6WqrT7IhcstOOtvDkuMV1yitf_CCQtTUJCLjioX24A613pQ4fa11C0PhBQS66N9A/graduate%20invite.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;操作步驟簡易說明如下：&lt;br /&gt;&lt;br /&gt;1. 進入『google文件 』&lt;br /&gt;2. 新增試算表&lt;br /&gt;3. 點選『分享 』&lt;br /&gt;4. 輸入檔名存檔&lt;br /&gt;5. 『邀請別人』處點選『填妥表格』&lt;br /&gt;6. 點選下方『開始編輯您的表格』&lt;br /&gt;7. 之後進入表格設計畫面依個人需求設計表格&lt;br /&gt;8. 邀請他人填寫&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3009787009667891194?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3009787009667891194/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3009787009667891194' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3009787009667891194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3009787009667891194'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/nt-google-spreadsheet-integrates-forms.html' title='[ NT ] Google Spreadsheet Integrates Forms'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3195882275708200819</id><published>2008-05-12T16:03:00.005+08:00</published><updated>2008-09-12T00:56:16.884+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>[ LOS ] Ubuntu Python IDE Spe Install</title><content type='html'>Ubuntu 8.04 中安裝 Python Spe IDE 工具，可直接在終端機下一行指令即可安裝&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;$ sudo aptitude install spe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wwuA3nAIxoIkbriAHyHlYDA6UTuTJ3_xOxdPZzB_PoK9F-7ev3LVu1vLs4Pmfne8HE/SPE.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3195882275708200819?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3195882275708200819/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3195882275708200819' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3195882275708200819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3195882275708200819'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/los-ubuntu-python-ide-spe-install.html' title='[ LOS ] Ubuntu Python IDE Spe Install'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4758427590220966054</id><published>2008-05-09T17:51:00.020+08:00</published><updated>2008-05-21T09:25:21.046+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>[ NT ] Sun Virtual Machine VirtualBox</title><content type='html'>個人覺得非常好用的 Virtual Machine 軟體 &lt;a href="http://www.virtualbox.org/"&gt;Sun VirtualBox&lt;/a&gt;，試用後覺得比 &lt;a href="http://www.vmware.com/"&gt;VMware&lt;/a&gt; 還省系統資源，軟體大小也只有 20M 左右而且還是個 &lt;a href="http://www.opensource.org/"&gt;OpenSource&lt;/a&gt; 軟體非常了不起，玩了幾天後還是決定把心得記錄一下免得老人癡呆毛病再次發作 ~&lt;br /&gt;&lt;br /&gt;我的 Virtual Machine 測試環境：&lt;br /&gt;&lt;br /&gt;Main OS : Windows XP&lt;br /&gt;Guest OS : Ubuntu or Other Xnix Distribute&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Setp 1. 安裝 VirtualBox 軟體及 Guest OS&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;要安裝 VirtualBox Windows 版本可直接下載 .msi 檔即可點兩下開始安裝，若要將 Guest OS Ubuntu 804 版安裝到 VirtualBox 裡，其安裝方式可採直接將 iso 掛到虛擬光蝶中再設定 CDROM 優先開機便可直接開始安裝。&lt;br /&gt;&lt;br /&gt;Download for Win32 Ver. VirtualBox : &lt;a href="http://www.virtualbox.org/"&gt;http://www.virtualbox.org/&lt;/a&gt;&lt;br /&gt;Download Ubuntu-8.04-alternate-i386.iso : &lt;a href="http://www.ubuntu.com/"&gt;http://www.ubuntu.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Setp. 2 設定 Guest OS&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;安裝完成後 Guest OS 開機進入 Ubuntu 桌面後再跳回 Windows 在 VirtualBox 的 Menu Bar 上點選 : 裝置 &gt; 安裝客端額外功能 ( 即會立即 Mount 一個 VBOXADDITIONS_1.6.0_30421 虛擬光碟檔案到 Guest OS 桌面 )。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wxZ6ltZgHD-Zj7uHSsspbTJNNjGjwh1n6sJTPgh83nz7GsXqQEuXNopK3mvHLDfEns/remoteFunctiom.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;掛載完 VBOXADDITIONS_1.6.0_30421 虛擬光碟後，再次進入 Ubuntu 中開啟 Shell 終端機，安裝 VBoxLinuxAdditions.run，方式如下：&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$cp /cdrom/VBoxLinuxAdditions.run /home/jim&lt;/span&gt;&lt;/strong&gt; # 將 VBoxLinuxAdditions.run 檔 copy 到自己家目錄下執行&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;strong&gt;$sudo sh VBoxLinuxAdditions.run&lt;/strong&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;# 執行安裝&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;strong&gt;$sudo reboot&lt;/strong&gt;&lt;/span&gt; # 重開機後即可使用 "無縫模式" 及 " 滑鼠整合功能 "&lt;br /&gt;&lt;br /&gt;無縫模式(&lt;span style="font-size: 0.9em;"&gt;Seamless Windowing&lt;/span&gt;) : 可讓 Guest OS 的應用程式拉到 Main OS 桌面上運行&lt;br /&gt;滑鼠整合功能 : 可以直接在 Windows 及 Linux 桌面遊走兩個 OS 之間(無須鍵盤切換)&lt;br /&gt;&lt;br /&gt;熱鍵切換 :&lt;br /&gt;&lt;br /&gt;無縫模式：Host + L&lt;br /&gt;全螢幕模式：Host + F&lt;br /&gt;VirtualBox 的 Menu Bar：Host + Home&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;strong&gt;PS : 鍵盤上並無 Host 鍵，這邊所定義的 Host 鍵是指鍵盤上有兩個 Ctrl 鍵，而 Host 鍵就是右邊那一個 Ctrl 鍵 XD @@ 找好久才發現 ~ 所以 Host + L = ( 右Ctrl + L )。 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Setp. 3 Guest OS 掛載 Main OS 磁碟&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;VirtualBox 也提供掛載 Main OS 的磁碟機給 Guest OS 使用，而 Guest OS 如何去掛載 WinXP 的磁碟機給 Ubuntu Linux 使用 ?首先 Main OS Win XP 端的 VirtualBox 需要先設定一個 " 分享資料夾 " 假設我們要分享 D 槽而分享的名稱取名為 share，其 Ubuntu Guest OS 的掛載方式如下：&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$ sudo mkdir /mnt/winxp&lt;/span&gt;&lt;/strong&gt; # 建立一個 winxp 資料夾讓 Guest OS 掛載 Main OS 磁碟&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$ sudo mount -t vboxsf -o iocharset=utf8 share /mnt/winxp&lt;/span&gt;&lt;/strong&gt; # 手動掛載 Main OS 的 D 槽&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;$ sudo vi /etc/fstab&lt;/span&gt;&lt;/strong&gt; # 編輯開機自動掛載&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;share /mnt/winxp vboxsf default,iocharset=utf8,noauto 0 0&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;展示一張在 Win XP 桌面上無縫跑 Ubuntu Shell 終端機程式&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wwi2COK0ToGOJnBHiDkB_glQMamjbRobFmJ_iaSSyH6ZfSDlXE-mkkmJsExv4jBWxw/sml.PNG"&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1p90hBDRbs6wwi2COK0ToGOJnBHiDkB_glQMamjbRobFmJ_iaSSyH6ZfSDlXE-mkkmJsExv4jBWxw/sml.PNG" height="400" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Add.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;如何打開 Bridge Mode 功能？執行 DOS cmmand 產生一個虛擬介面&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;C:\Program Files\Sun\xVM VirtualBox&gt;VBoxManage createhostif "VM1 external"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Windows XP 中，可以使用內建的：橋接功能 (Bridge feature) 將新建的虛擬網卡連接至實體網卡。建立的步驟是，搭配 CTRL 鍵選取：新建虛擬網卡和實體網卡，按滑鼠右鍵選擇：橋接器連接 (bridge connections)。&lt;br /&gt;&lt;br /&gt;經過以上的設定後，現在可以開始在VirtualBox網路設定畫面中，將 NAT 設為：主端介面，將介面名稱下拉式選單設為VM1 external，然後在 Guest OS 中設定與 Main OS 區域網路相同網段的獨立 IP 及 Gateway 和 DNS。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4758427590220966054?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4758427590220966054/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4758427590220966054' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4758427590220966054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4758427590220966054'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/nt-sun-virtual-machine-virtualbox.html' title='[ NT ] Sun Virtual Machine VirtualBox'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6697025022266277902</id><published>2008-05-07T15:34:00.010+08:00</published><updated>2010-03-23T15:55:50.504+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] Python with SQLite3 DB Operator</title><content type='html'>在 Python 官方 2.5 版釋出後官方資料中說明是有直接包 sqlite3 這個簡易的資料庫 lib，可是小弟在 FreeBSD 中確無法在 Python 中直接 import 進來使用，因此查了 Google 大神發現原來在 FreeBSD 中還要於 Ports 中加裝 py-sqlite3 才可以使用。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;用 Ports 安裝 py-sqlite3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# cd /usr/ports/databases/py-sqlite3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;建立 sqlite3 檔案型態資料庫 , 資料庫名稱為 example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# sqlite3 example        &lt;/span&gt;# 建立一個名稱為 example 的資料庫&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;SQLite version 3.5.6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Enter ".help" for instructions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;sqlite&gt;.help&lt;/span&gt;        # 查看 sqlite 操作指令&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sqlite&gt;.quit&lt;/span&gt;        &lt;/span&gt;# 跳出 sqlite&lt;br /&gt;&lt;br /&gt;Ex 1. 連接資料庫並新增一個 stocks Table 同時插入一筆資料&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import sqlite3&lt;br /&gt;&lt;br /&gt;# example資料庫與 Python 程式同目錄&lt;br /&gt;conn = sqlite3.connect('example')&lt;br /&gt;&lt;br /&gt;c = conn.cursor()&lt;br /&gt;&lt;br /&gt;# Create 一個 Table&lt;br /&gt;c.execute('''create table stocks&lt;br /&gt;(date text, trans text, symbol text,&lt;br /&gt;qty real, price real)''')&lt;br /&gt;&lt;br /&gt;# Insert 一筆 row 資料&lt;br /&gt;c.execute("""insert into stocks&lt;br /&gt;values ('2006-01-05','BUY','RHAT',100,35.14)""")&lt;br /&gt;&lt;br /&gt;# 同時別忘記 commit 儲存改變的資料&lt;br /&gt;conn.commit()&lt;br /&gt;&lt;br /&gt;# 關閉資料庫連線&lt;br /&gt;c.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ex 2. 以下示範插入大筆資料及查看資料&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import sqlite3&lt;br /&gt;&lt;br /&gt;conn = sqlite3.connect('example')&lt;br /&gt;c = conn.cursor()&lt;br /&gt;&lt;br /&gt;# 插入多筆資料的範例&lt;br /&gt;for t in (('2006-03-28', 'BUY', 'IBM', 1000, 45.00),&lt;br /&gt;('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),&lt;br /&gt;('2006-04-06', 'SELL', 'IBM', 500, 53.00),&lt;br /&gt;):&lt;br /&gt;c.execute('insert into stocks values (?,?,?,?,?)', t)&lt;br /&gt;&lt;br /&gt;conn.commit()&lt;br /&gt;&lt;br /&gt;# 挑出 stocks Table 中所有資料而且以價位 price 排續&lt;br /&gt;c.execute('select * from stocks order by price')&lt;br /&gt;for row in c:&lt;br /&gt;print row&lt;br /&gt;&lt;br /&gt;c.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;進 sqlite3 資料庫查看是否成功&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# sqlite3 example&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;SQLite version 3.5.6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Enter ".help" for instructions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;sqlite&gt; .tables        &lt;/span&gt;# 查看有那些 table&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;stocks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;sqlite&gt; select * from stocks;        &lt;/span&gt;# 查看 stocks 這個 table 中的資料&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2006-01-05|BUY|RHAT|100.0|35.14&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2006-03-28|BUY|IBM|1000.0|45.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2006-04-05|BUY|MSOFT|1000.0|72.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;2006-04-06|SELL|IBM|500.0|53.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;sqlite&gt;.exit&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Reference：&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://docs.python.org/lib/module-sqlite3.html"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://docs.python.org/lib/module-sqlite3.html"&gt;http://docs.python.org/lib/module-sqlite3.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6697025022266277902?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6697025022266277902/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6697025022266277902' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6697025022266277902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6697025022266277902'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/python-python-with-sqlite3-db-operator.html' title='[ Python ] Python with SQLite3 DB Operator'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7974491998226156730</id><published>2008-05-06T12:48:00.007+08:00</published><updated>2010-03-23T15:56:46.137+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] Python with MySQL Database Operator</title><content type='html'>以下是練習 Python 語言如何操作 MySQL 資料庫：&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding:  utf-8 -*-&lt;br /&gt;&lt;br /&gt;import MySQLdb&lt;br /&gt;&lt;br /&gt;# 連接 MySQL 資料庫，以下操作事先必須要建好 test 資料庫&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;conn = MySQLdb.connect(host = "localhost",&lt;br /&gt;user = "User",&lt;br /&gt;passwd = "Password",&lt;br /&gt;db = "test")&lt;br /&gt;except MySQLdb.Error, e:&lt;br /&gt;print "Error %d: %s" % (e.args[0], e.args[1])&lt;br /&gt;sys.exit(1)&lt;br /&gt;&lt;br /&gt;# 建立一個 animal 的 Table 和 name、category 兩個 Row 接著插入 4 筆資料&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;cursor = conn.cursor()&lt;br /&gt;cursor.execute("DROP TABLE IF EXISTS animal")&lt;br /&gt;cursor.execute("""&lt;br /&gt;CREATE TABLE animal&lt;br /&gt;(&lt;br /&gt;name     CHAR(40),&lt;br /&gt;category CHAR(40)&lt;br /&gt;)&lt;br /&gt;""")&lt;br /&gt;cursor.execute("""&lt;br /&gt;INSERT INTO animal (name, category)&lt;br /&gt;VALUES&lt;br /&gt;('snake', 'reptile'),&lt;br /&gt;('frog', 'amphibian'),&lt;br /&gt;('tuna', 'fish'),&lt;br /&gt;('racoon', 'mammal')&lt;br /&gt;""")&lt;br /&gt;print "Number of rows inserted: %d" % cursor.rowcount&lt;br /&gt;&lt;br /&gt;# 執行一個 fetch 迴圈使用 fetchone()&lt;br /&gt;&lt;br /&gt;cursor.execute("SELECT name, category FROM animal")&lt;br /&gt;while (1):&lt;br /&gt;row = cursor.fetchone()&lt;br /&gt;if row == None:&lt;br /&gt;break&lt;br /&gt;print "%s, %s" % (row[0], row[1])&lt;br /&gt;print "Number of rows returned: %d" % cursor.rowcount&lt;br /&gt;&lt;br /&gt;# 執行一個 fetch 迴圈使用 fetchall()&lt;br /&gt;&lt;br /&gt;cursor.execute("SELECT name, category FROM animal")&lt;br /&gt;rows = cursor.fetchall()&lt;br /&gt;for row in rows:&lt;br /&gt;print "%s, %s" % (row[0], row[1])&lt;br /&gt;print "Number of rows returned: %d" % cursor.rowcount&lt;br /&gt;&lt;br /&gt;# 更新 animal 資料庫欄位內的值將 snake 換成 turtle&lt;br /&gt;# 第二次更新使用字串方式將 turtle 換回 snake&lt;br /&gt;&lt;br /&gt;cursor.execute("""&lt;br /&gt;UPDATE animal SET name = 'turtle'&lt;br /&gt;WHERE name = 'snake'&lt;br /&gt;""")&lt;br /&gt;print "Number of rows updated: %d" % cursor.rowcount&lt;br /&gt;&lt;br /&gt;cursor.execute("""&lt;br /&gt;UPDATE animal SET name = %s&lt;br /&gt;WHERE name = %s&lt;br /&gt;""", ("snake", "turtle"))&lt;br /&gt;print "Number of rows updated: %d" % cursor.rowcount&lt;br /&gt;&lt;br /&gt;# 產生一個 dictionary cursor&lt;br /&gt;# 可以針對欄位名稱操作資料庫而不是定位點&lt;br /&gt;&lt;br /&gt;cursor.close()&lt;br /&gt;cursor = conn.cursor(MySQLdb.cursors.DictCursor)&lt;br /&gt;cursor.execute ("SELECT name, category FROM animal")&lt;br /&gt;result_set = cursor.fetchall()&lt;br /&gt;for row in result_set:&lt;br /&gt;print "%s, %s" % (row["name"], row["category"])&lt;br /&gt;print "Number of rows returned: %d" % cursor.rowcount&lt;br /&gt;&lt;br /&gt;cursor.close()&lt;br /&gt;&lt;br /&gt;except MySQLdb.Error, e:&lt;br /&gt;print "Error %d: %s" % (e.args[0], e.args[1])&lt;br /&gt;sys.exit (1)&lt;br /&gt;&lt;br /&gt;conn.commit()&lt;br /&gt;conn.close()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;執行結果：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#chmod +x animal.py&lt;br /&gt;# ./animal.py&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Number of rows inserted: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;snake, reptile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;frog, amphibian&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;tuna, fish&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;racoon, mammal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Number of rows returned: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;snake, reptile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;frog, amphibian&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;tuna, fish&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;racoon, mammal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Number of rows returned: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Number of rows updated: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Number of rows updated: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;snake, reptile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;frog, amphibian&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;tuna, fish&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;racoon, mammal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Number of rows returned: 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;資料來源 : &lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.kitebird.com/articles/pydbapi.html"&gt;http://www.kitebird.com/articles/pydbapi.html&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7974491998226156730?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7974491998226156730/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7974491998226156730' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7974491998226156730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7974491998226156730'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/python-python-with-mysql-database.html' title='[ Python ] Python with MySQL Database Operator'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-8851913701261204769</id><published>2008-05-02T12:34:00.026+08:00</published><updated>2008-05-06T09:13:21.273+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Command Line  Yahoo! Online Ditionary</title><content type='html'>網路上總有些好東西可用，一支不錯用的文字介面線上字典程式，把它放到我的 FreeBSD 中使用真的還蠻方便，感謝前輩們的供獻，目前 &lt;a href="http://fourdollars.blogspot.com/"&gt;FourDollars&lt;/a&gt; 的版本剛好為 utf-8 編碼，哈哈 ~ 是我習慣使用的編碼環境 。&lt;br /&gt;&lt;br /&gt;&lt;img src="http://eu99na.bay.livefilestore.com/y1py6lmPYr80Yd8Ghjr-s09KB8sj8EWyvYIb81jBLwCh6fvywKWW2k7i7R6OsXD7v_QHbwZQOFBo_VaZt7s_TcJihPrI0bF3Kgr/ydict.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Setp1. 安裝&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# fetch http://fd.idv.tw/tux/ydict&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# chmod +x ydict&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mv  ydict  /usr/local/bin&lt;/span&gt;    # 放到 /usr/local/bin 底下可直接執行&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Setp2. &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;使用方式&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ydict&lt;/span&gt;     # 直接執行它互動介面查詢&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# ydict apple  cat&lt;/span&gt;       # 或是多單字查詢&lt;br /&gt;&lt;br /&gt;離開程式用 Ctrl + C&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Setp3. &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;與文字編輯器 Vim 結合&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vim ~/.vimrc&lt;/span&gt;      # 在 $HOME/.vimrc 裡面加入下面設定&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;" 在用 vim 時即可按下 Ctrl + k 查詢游標上的單字&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;map &amp;lt;C-K&amp;gt; viwy:!ydict &amp;lt;C-R&amp;gt;"&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;c-k&gt;&lt;c-k&gt;&lt;c-r&gt;&lt;cr&gt;&lt;cr&gt;&lt;/cr&gt;&lt;/cr&gt;&lt;/c-r&gt;&lt;/c-k&gt;&lt;/c-k&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FourDollars Yahoo!奇摩字典 command line version 的進化版&lt;br /&gt;&lt;a href="http://fourdollars.blogspot.com/2007/01/blog-post.html"&gt;http://fourdollars.blogspot.com/2007/01/blog-post.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-8851913701261204769?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/8851913701261204769/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=8851913701261204769' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8851913701261204769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8851913701261204769'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/05/fbsd-command-line-yhoo-online-ditionary.html' title='[ FBSD ] Command Line  Yahoo! Online Ditionary'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-3179788275133334716</id><published>2008-04-30T18:09:00.006+08:00</published><updated>2008-05-06T17:29:55.852+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Vim + Python</title><content type='html'>最近在學 Python 因此把我 FreeBSD  中 Vim 整合開發工具的安裝及配置整理下來防日漸消退的記憶，我習慣的開發環境是用 utf-8 萬國碼所以 vim 也會預設為 utf-8 編碼，作業系統為 FreeBSD 7.0 R 而 Ports 中的 Vim 版本為 7.1。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Setp 1. 安裝純文字介面的 Vim 7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/editors/vim&lt;/span&gt;    # 安裝 vim&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make -DWITHOUT_X11 install clean    &lt;/span&gt;# 編譯時下參數去除 Xwindows&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cp /usr/local/share/vim/vim71/vimrc_example.vim /root/.vimrc   &lt;/span&gt;# 複製 .vimrc 範例檔到自己的家目錄&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vim /root/.vimrc    &lt;/span&gt;# 增加下面喜好設定&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set nu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set enc=utf-8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set fenc=utf-8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set nu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set fileencodings=utf-8,ucs-bom,big5,latin1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set cindent&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set hls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set nocompatible&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set sw=4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set background=dark&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set nomodeline&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;set tabstop=4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;syntax on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;highlight Comment ctermfg=darkcyan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;highlight Search term=reverse ctermbg=4 ctermfg=7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;setlocal omnifunc=syntaxcomplete#Complete&lt;br /&gt;"big5 &amp;amp; utf8 切換&lt;br /&gt;map &lt;f12&gt; :set tenc=big5&lt;cr&gt;&lt;br /&gt;map &lt;f11&gt; :set tenc=utf-8&lt;cr&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Setp 2. 加裝好用的 taglist 環境&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# cd /usr/ports/devel/ctags&lt;/span&gt;       &lt;/span&gt;# 安裝 ctags 主要是要裝 /usr/local/bin/exctags&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;到下面網址下載 taglist_45.zip&lt;br /&gt;&lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=273"&gt;http://vim.sourceforge.net/scripts/script.php?script_id=273&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# unzip taglist_45.zip&lt;/span&gt;        # 如果沒 unzip 請到 ports 下加裝 /usr/ports/archivers/unzip&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/local/share/vim/vim71/plugin&lt;/span&gt;      # 將 taglist.vim 解壓縮這個 plugin 目錄下&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vim /root/.vimrc&lt;/span&gt;    # 再加入下面設定到 .vimrc&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;" 說明 : 使用 F8 可切割成兩個畫面可對應有那些 funtion , 使用 Ctrl + 2次 w 可切換兩邊視窗&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;let Tlist_Ctags_Cmd = "/usr/local/bin/exctags"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;let Tlist_Inc_Winwidth = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;nnoremap &amp;lt;silent&amp;gt; &amp;lt;f8&amp;gt; :Tlist&amp;lt;cr&amp;gt;&lt;/span&gt;&lt;silent&gt;&lt;f8&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;cr&gt;&lt;br /&gt;&lt;br /&gt;&lt;/cr&gt;&lt;/f8&gt;&lt;/silent&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Setp 3. &lt;/span&gt;&lt;silent&gt;&lt;f8&gt;&lt;cr&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;加裝 Python 環境所須要的工具 Auto-Complete&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;到下面網址下載 pydiction 到自己家目錄下的 .vim 目錄 , 而 .vim 目錄要自己建&lt;br /&gt;&lt;a href="http://www.vim.org/scripts/script.php?script_id=850"&gt;http://www.vim.org/scripts/script.php?script_id=850&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# mkdir ~/.vim&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd ~/.vim&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# tar xvzf pydiction-0.5.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vim ~/.vimrc    &lt;/span&gt;&lt;/cr&gt;&lt;/f8&gt;&lt;/silent&gt;# 再加入下面 pydiction 的設定到 .vimrc&lt;silent&gt;&lt;f8&gt;&lt;cr&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;" 說明 : Auto-Complete 可使用 Ctrl + p 或 Ctrl + n 來呼叫 , 我的 pydiction 字典檔放在 /root/.vim/pydiction-0.5 目錄下&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;if has("autocmd")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    autocmd FileType python set complete+=k/root/.vim/pydiction-0.5/pydiction isk+=.,(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;endif " has("autocmd"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Reference :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/cr&gt;&lt;/f8&gt;&lt;/silent&gt;&lt;a href="http://bbs.chinaunix.netviewthread.phptid=699109&amp;amp;extra=page%3d2/"&gt;http://bbs.chinaunix.netviewthread.phptid=699109&amp;amp;extra=page%3D2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mohdshakir.net/2007/12/27/enable-vim-code-python-auto-complete"&gt;http://www.mohdshakir.net/2007/12/27/enable-vim-code-python-auto-complete&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.ntut.idv.tw/2007/12/fbsd-vim-ruby-on-rails.html"&gt;http://blog.ntut.idv.tw/2007/12/fbsd-vim-ruby-on-rails.html&lt;/a&gt;&lt;br /&gt;&lt;silent&gt;&lt;f8&gt;&lt;cr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/cr&gt;&lt;/f8&gt;&lt;/silent&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-3179788275133334716?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/3179788275133334716/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=3179788275133334716' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3179788275133334716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/3179788275133334716'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/04/fbsd-vim-python.html' title='[ FBSD ] Vim + Python'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7697297905615902392</id><published>2008-04-30T01:19:00.014+08:00</published><updated>2010-03-23T15:57:51.252+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] PyGreSQL + PostgreSQL and MySQLdb + MySQL</title><content type='html'>Python 要如何在 FreeBSD 中來連接處理 &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; 及 &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; 資料庫 ? &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; 可使用 &lt;a href="http://www.pygresql.org/"&gt;PyGreSQL&lt;/a&gt; - Python interface for PostgreSQL 而 &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; 則可以使用 &lt;a href="http://sourceforge.net/projects/mysql-python"&gt;MySQLdb&lt;/a&gt; - Access a MySQL database through Python。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/databases/py-PyGreSQL&lt;/span&gt;                # 安裝 PyGreSQL interface&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# make install clean&lt;br /&gt;# cd /usr/ports/databases/py-MySQLdb    &lt;/span&gt;# 安裝 MySQLdb&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# make install clean&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;FreeBSD 測試系統環境所必需安裝之軟體&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;python25-2.5.1_1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;py25-PyGreSQL-3.8.1,1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;postgresql-server-8.2.5_2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;postgresql-client-8.2.5_1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;py25-MySQLdb-1.2.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mysql-client-5.1.22&lt;br /&gt;mysql-server-5.1.22&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;資料庫名稱為 mydb 而資料表為 books，我們寫個如下列簡易程式來 Show 出 books table，習慣上我還是採用 utf-8 編碼&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vim connPgSQL.py&lt;/span&gt;                  # 用 Vim 編輯個簡易的 PostgreSQL 資料庫連接程式&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;import pg&lt;br /&gt;conn = pg.connect('mydb','localhost',5432,None,None,'User','Password')&lt;br /&gt;ds = conn.query("select * from books")&lt;br /&gt;if len(ds.getresult()) &gt; 0:&lt;br /&gt;print ds&lt;br /&gt;print "Press enter to continue."&lt;br /&gt;#raw_input()函數從標準輸入中讀取內容，如 C 裡的 getc() 函數&lt;br /&gt;raw_input()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# chmod 755 connPgSQL.py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ./connPgSQL.py     &lt;/span&gt;            # 執行 connPgSQL.py 即可 Show 出資料庫中的資料&lt;br /&gt;&lt;br /&gt;PyGreSQL 官網使用說明：&lt;br /&gt;&lt;a href="http://www.pygresql.org/pg.html#introduction"&gt;http://www.pygresql.org/pg.html#introduction&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vim connMySQL.py&lt;/span&gt;                  # 用 Vim 編輯個簡易的 MySQL 資料庫連接程式&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;# 引入 MySQL 模組&lt;br /&gt;import MySQLdb&lt;br /&gt;# 連接到 MySQL&lt;br /&gt;db = MySQLdb.connect(host="localhost", user="User", passwd="Password", db="mydb")&lt;br /&gt;cursor = db.cursor()&lt;br /&gt;# 執行 SQL 語法&lt;br /&gt;cursor.execute("SELECT * FROM books")&lt;br /&gt;result = cursor.fetchall()&lt;br /&gt;# 輸出結果&lt;br /&gt;for record in result:&lt;br /&gt;print "%s, %s" % (record[0],record[1])&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# chmod 755 connMgSQL.py&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# ./connMySQL.py     &lt;/span&gt;                # 執行 connMySQL.py 即可 Show 出資料庫中table的第1，2欄位資料&lt;br /&gt;&lt;br /&gt;MySQLdb 官網：&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/mysql-python/"&gt;http://sourceforge.net/projects/mysql-python/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7697297905615902392?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7697297905615902392/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7697297905615902392' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7697297905615902392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7697297905615902392'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/04/python-pygresql-postgresql.html' title='[ Python ] PyGreSQL + PostgreSQL and MySQLdb + MySQL'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-6612136780597823537</id><published>2008-04-29T00:22:00.012+08:00</published><updated>2010-03-23T15:58:26.830+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>[ Python ] Learning wxPython GUI Program (一)</title><content type='html'>Python 視窗程式設計 wxPython 學習 Source Code From：&lt;a href="http://www.openfoundry.org/component/option,com_content/Itemid,163/id,106/lang,tw/task,view/"&gt;Openfoundry&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: py"&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;import wx&lt;br /&gt;import string&lt;br /&gt;&lt;br /&gt;class MySalgar(wx.Frame):&lt;br /&gt;def __init__(self):&lt;br /&gt;wx.Frame.__init__(self, parent=None, title=u"薪資試算程式", size=(250,200))&lt;br /&gt;panel = wx.Panel(self)&lt;br /&gt;#配置視窗元件 -- 開始 --&lt;br /&gt;wx.StaticText(parent=panel,label=u"工作幾年？",pos=(10,10))&lt;br /&gt;self.a = wx.TextCtrl(parent=panel,pos=(100,10))&lt;br /&gt;wx.StaticText(parent=panel,label=u"一個月多少錢？",pos=(10,50))&lt;br /&gt;self.b = wx.TextCtrl(parent=panel,pos=(100,50))&lt;br /&gt;self.btn = wx.Button(parent=panel,label=u"結算薪資",pos=(10,100))&lt;br /&gt;self.message1 = wx.StaticText(parent=panel,pos=(10,130))&lt;br /&gt;self.message2 = wx.StaticText(parent=panel,pos=(10,150))&lt;br /&gt;#配置視窗元件 -- 結束 --&lt;br /&gt;&lt;br /&gt;#新增 BtnClick 事件 -- 開始 --&lt;br /&gt;self.Bind(wx.EVT_BUTTON,self.BtnClick,self.btn)&lt;br /&gt;#新增 BtnClick 事件 -- 結束 --&lt;br /&gt;&lt;br /&gt;#撰寫 BtnClick 事件函式 -- 開始 --&lt;br /&gt;def BtnClick(self,event):&lt;br /&gt;a = self.a.GetValue()&lt;br /&gt;a = string.atoi(a)&lt;br /&gt;b = self.b.GetValue()&lt;br /&gt;b = string.atoi(b)&lt;br /&gt;c = b * 12 * a&lt;br /&gt;d = c /(365 * a)&lt;br /&gt;message1Str = u'您工作 '+str(a)+u' 年可以獲得 '+str(c)+u' 元'&lt;br /&gt;message2Str = u'平均每日獲得 '+str(d)+u' 元'&lt;br /&gt;self.message1.SetLabel(message1Str)&lt;br /&gt;self.message2.SetLabel(message2Str)&lt;br /&gt;#撰寫 BtnClick 事件函式 -- 結束 --&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;app = wx.PySimpleApp()&lt;br /&gt;frame = MySalgar()&lt;br /&gt;frame.Show()&lt;br /&gt;app.MainLoop()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;py2exe 小程式把 Python Program 轉成 .exe 執行檔方法：&lt;br /&gt;&lt;a href="http://www.javaworld.com.tw/jute/post/view?bid=14&amp;amp;id=113466&amp;amp;sty=1&amp;amp;tpg=1&amp;amp;age=0"&gt;http://www.javaworld.com.tw/jute/post/view?bid=14&amp;amp;id=113466&amp;amp;sty=1&amp;amp;tpg=1&amp;amp;age=0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-6612136780597823537?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/6612136780597823537/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=6612136780597823537' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6612136780597823537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/6612136780597823537'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/04/python-wxpython-gui-program-salary.html' title='[ Python ] Learning wxPython GUI Program (一)'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4781615407168332917</id><published>2008-04-27T17:03:00.019+08:00</published><updated>2010-03-23T16:16:45.251+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Blog'/><title type='text'>[ BLOG ] Syntaxhighlighter Developer/Coder to post code snippets</title><content type='html'>如何讓 Blogspot 或一般網站貼程式碼？其方式如下。&lt;br /&gt;&lt;br /&gt;Syntaxhighlighter 官方網站 : &lt;br /&gt;&lt;br /&gt;&lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;http://alexgorbatchev.com/wiki/SyntaxHighlighter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;實作參考 :&lt;br /&gt;&lt;a href="http://sharedderrick.blogspot.com/2007/12/blogger-syntaxhighlighter.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sharedderrick.blogspot.com/2007/12/blogger-syntaxhighlighter.html"&gt;http://www.craftyfella.com/2010/01/syntax-highlighting-with-blogger-engine.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Syntaxhighlighter 有 Support 的程式語言 Language 及 別名 Aliases :&lt;br /&gt;&lt;br /&gt;C++ ： cpp, c, c++&lt;br /&gt;C# ： c#, c-sharp, csharp&lt;br /&gt;CSS ： css&lt;br /&gt;Delphi ： delphi, pascal&lt;br /&gt;Java ： java&lt;br /&gt;Java Script ： js, jscript, javascript&lt;br /&gt;PHP ： php&lt;br /&gt;Python ： py, python&lt;br /&gt;Ruby ： rb, ruby, rails, ror&lt;br /&gt;Sql ： sql&lt;br /&gt;VB ： vb, vb.net&lt;br /&gt;XML/HTML ： xml, html, xhtml, xslt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-4781615407168332917?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/4781615407168332917/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=4781615407168332917' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4781615407168332917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/4781615407168332917'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/04/blog-syntaxhighlighter-test_27.html' title='[ BLOG ] Syntaxhighlighter Developer/Coder to post code snippets'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-8043842498914610949</id><published>2008-04-23T11:00:00.006+08:00</published><updated>2008-04-25T09:21:31.657+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ LOS ] IPtable L7-Filter Deny Foxy P2P Software</title><content type='html'>IPtable 的 L7 外掛可阻檔可怕的 &lt;a href="http://tw.gofoxy.net/"&gt;Foxy&lt;/a&gt; 軟體，其方式為使用 gnutella 這個 pattern 特徵碼來阻擋，網路上看到的應該是有效目前還沒用過先記錄下來方便未來使用。&lt;br /&gt;&lt;br /&gt;IPtable rule 的下達如下 :&lt;br /&gt;&lt;br /&gt;iptables -t mangle -A PREROUTING -m layer7 --l7proto gnutella -j DROP&lt;br /&gt;iptables -t mangle -A POSTROUTING -m layer7 --l7proto gnutella -j DROP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;到 IPtable  L7-filter 官方可看到 gnutella.pat 寫法，看樣子 Foxy 的通訊協定是採用 &lt;a href="http://rfc-gnutella.sourceforge.net/index.html"&gt;gnutella&lt;/a&gt;，所以得到一個小小的結論如果你現在的防火牆或路由器具有處理網路 OSI 模型第七層應用層資料之能力，就可藉由Gnutella 特徵碼來識別並阻擋 Foxy 封包或是將 Foxy 封包 Priority 優先順序降到最最低。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IPtable L7-Filter官方 Gnutella 特徵碼 :  &lt;a href="http://l7-filter.sourceforge.net/layer7-protocols/protocols/gnutella.pat"&gt;http://l7-filter.sourceforge.net/layer7-protocols/protocols/gnutella.pat&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-8043842498914610949?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/8043842498914610949/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=8043842498914610949' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8043842498914610949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/8043842498914610949'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/04/iptable-l7-filter-deny-foxy-p2p.html' title='[ LOS ] IPtable L7-Filter Deny Foxy P2P Software'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5325675943344024136</id><published>2008-03-25T16:55:00.010+08:00</published><updated>2008-08-28T10:39:05.732+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Postfix + Postgrey</title><content type='html'>在 FreeBSD 的 Postfix Mail 上加裝 postgrey 灰名單，廣告信很明顯的立即減少，灰名單原理： 當收信端第一次收到來信時會先拒絕退原回發信端，等發信端第二次發送信件時才會收進來，何以此機智能阻絕大量廣告信？因為廣告信通常在發信時都會一次發送上千萬筆，當它發現受信端主機回應說目前系統有問題暫停收信時，寄信端通常不會再重寄，因此可杜絕大部份的 Spam，不過灰名單也是有其缺點，因為兩次的傳送信件將造成收信端必須等待信件，有時會讓急著收信的使用者覺得不方便，不過這缺點還是可以手動解決 Postgrey 也有提供白名單，可以指定某些固定 Domain 過來的信件免做退信 Check 可直接收進 Mail Server 裡。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# cd /usr/ports/mail/postgrey&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# make install clean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# vi /etc/rc.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;postgrey_enable="YES" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#vi /usr/local/etc/postfix/main.cf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;smtpd_recipient_restrictions =&lt;br /&gt;  permit_mynetworks,&lt;br /&gt;  check_policy_service inet:127.0.0.1:10023&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# sh /usr/local/etc/rc.d/postgrey start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;# postfix reload&lt;br /&gt;&lt;br /&gt;#vi /usr/local/etc/postfix/postgrey_whitelist_clients        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;// 白名單設定檔目錄&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5325675943344024136?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5325675943344024136/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5325675943344024136' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5325675943344024136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5325675943344024136'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/03/fbsd-postfix-postgrey.html' title='[ FBSD ] Postfix + Postgrey'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-630167010892779638</id><published>2008-03-03T13:02:00.005+08:00</published><updated>2008-03-03T13:07:47.867+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>[ FBSD ] Change Bind9 on Freebsd</title><content type='html'>&lt;p&gt;原本 FreeBSD 中裝好就會把 bind9 裝上 , 如果我們要改變由 Ports 安裝的 bind9 去執行可更改 /etc/rc.conf 設定檔 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# cd /usr/ports/dns/bind9&lt;/span&gt;&lt;/strong&gt; # 安裝 ports 中的 bind9&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# make install clean&lt;/strong&gt;&lt;/span&gt; # 我 REPLACE_BASE 與 THREADS 都不選 &lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# vi /etc/rc.conf&lt;/strong&gt;&lt;/span&gt; # 修改 rc.conf 開機自動啟動檔讓開機去跑新的 bind9 的 named&lt;br /&gt;&lt;span style="color:#006600;"&gt;named_flags="-c /etc/namedb/named.conf"&lt;br /&gt;named_enable="YES"&lt;br /&gt;named_program="/usr/local/sbin/named"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# kill -KILL `cat /var/run/named.pid`&lt;/span&gt;&lt;/strong&gt; # 不重新開機啟動新版本方式&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# /usr/local/sbin/named -c /etc/namedb/named.conf&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# /usr/sbin/named -v&lt;/span&gt;&lt;/strong&gt; # 查看 named 版本，舊版本&lt;br /&gt;&lt;span style="color:#663366;"&gt;BIND 9.3.3&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# /usr/local/sbin/named -v&lt;/strong&gt;&lt;/span&gt; # 查看 named 版本，新版本&lt;br /&gt;&lt;span style="color:#663366;"&gt;BIND 9.3.4-P1&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# reboot&lt;/strong&gt;&lt;/span&gt; # 重開機，確定 rc.conf 中的設定是否生效 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# ps -ax grep named&lt;/span&gt;&lt;/strong&gt; # 就可發現已經換到 ports 安裝的 named 去執行，原本預設的 named 在 /usr/sbin/named ports 版本在 /usr/local/sbin/named&lt;br /&gt;&lt;span style="color:#663366;"&gt;543 ?? Ss 0:00.07 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -s&lt;br /&gt;642 ?? Ss 0:00.19 /usr/local/sbin/named -c /etc/namedb/named.conf -t /var/named -u bind&lt;br /&gt;1084 p0 R+ 0:00.00 grep named&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-630167010892779638?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/630167010892779638/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=630167010892779638' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/630167010892779638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/630167010892779638'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/03/fbsd-change-bind9-on-freebsd.html' title='[ FBSD ] Change Bind9 on Freebsd'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-5870954132076709745</id><published>2008-02-28T16:44:00.004+08:00</published><updated>2008-02-28T16:49:14.874+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>[ FBSD ] A Unix Linux Learning Site</title><content type='html'>一個學習 Unix &amp;amp; Linux 管理不錯的網站&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/"&gt;http://www.cyberciti.biz/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-5870954132076709745?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/5870954132076709745/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=5870954132076709745' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5870954132076709745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/5870954132076709745'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/02/fbsd-unix-linux-learning-site.html' title='[ FBSD ] A Unix Linux Learning Site'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-1939903839447121291</id><published>2008-02-27T12:20:00.002+08:00</published><updated>2008-02-27T12:25:00.877+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>[ DB ] FreeBSD Reset Forgotten MySQL Root Password</title><content type='html'>&lt;p&gt;在 FreeBSD 中忘記 MySQL Password 怎麼辦？可直接用 MySQL 提供的安全模式改掉 Root 密碼。&lt;/p&gt;&lt;p&gt;停掉 MySQL Server 的 deamon&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="color:#000099;"&gt;# /usr/local/etc/rc.d/mysql-server stop&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Stopping mysql.&lt;br /&gt;Waiting for PIDS: 2936. &lt;/p&gt;&lt;p&gt;使用 MySQL 的安全模式啟動 deamon&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# mysqld_safe --skip-grant-tables &amp;amp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;[1] 2959&lt;br /&gt;# 080227 12:05:36 mysqld_safe Logging to '/var/db/mysql/vh.ntut.idv.tw.err'.&lt;br /&gt;080227 12:05:36 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql &lt;/p&gt;&lt;p&gt;查看MySQL是否在安全模式下啟動&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# ps -ax  grep mysql&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;2959  p0  I      0:00.06 /bin/sh /usr/local/bin/mysqld_safe --skip-grant-table&lt;br /&gt;3044  p0  S      0:00.59 /usr/local/libexec/mysqld --basedir=/usr/local --data&lt;br /&gt;3046  p0  S+     0:00.01 grep mysql &lt;/p&gt;&lt;p&gt;這時就可以使用 root 及免用密碼進入 mysql 這個資料庫&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# mysql -u root mysql&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 1&lt;br /&gt;Server version: 5.1.22-rc FreeBSD port: mysql-server-5.1.22 &lt;/p&gt;&lt;p&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer. &lt;/p&gt;&lt;p&gt;下指令更新密碼新密碼為 1234&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;mysql&amp;gt; update user set Password=PASSWORD('1234');&lt;/span&gt;&lt;/strong&gt;  &lt;br /&gt;Query OK, 3 rows affected (0.09 sec)&lt;br /&gt;Rows matched: 3  Changed: 3  Warnings: 0 &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;mysql&amp;gt; flush privileges;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Query OK, 0 rows affected (0.02 sec) &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;mysql&amp;gt; exit&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Bye &lt;/p&gt;&lt;p&gt;查暗安全模式下的 MySQL deamon&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# ps -ax grep mysql&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;2959  p0  I      0:00.06 /bin/sh /usr/local/bin/mysqld_safe --skip-grant-table&lt;br /&gt;3044  p0  S      0:01.18 /usr/local/libexec/mysqld --basedir=/usr/local --data &lt;/p&gt;&lt;p&gt;直接 kill 掉這個 deamon&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# kill 3044&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;重新啟動 MySQL Server deamon&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# /usr/local/etc/rc.d/mysql-server start&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;Starting mysql. &lt;/p&gt;&lt;p&gt;使用新的 Password 重新登入 mysql 測試看看，登入成功 ~&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;# mysql -u root -p&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;Enter password:&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 1&lt;br /&gt;Server version: 5.1.22-rc FreeBSD port: mysql-server-5.1.22 &lt;/p&gt;&lt;p&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;mysql&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-1939903839447121291?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/1939903839447121291/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=1939903839447121291' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1939903839447121291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/1939903839447121291'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/02/db-freebsd-reset-forgotten-mysql-root.html' title='[ DB ] FreeBSD Reset Forgotten MySQL Root Password'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-7597269789495280175</id><published>2008-01-17T15:58:00.000+08:00</published><updated>2008-01-17T16:02:30.020+08:00</updated><title type='text'>[ NT ] SSH Tools</title><content type='html'>最近看到的 Pietty  中文環境的 Putty&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/"&gt;PuTTY&lt;/a&gt; 是個小巧方便的  Telnet/SSH 安全遠端連線程式， 但用於非英語系文字時有非常多的問題， 而且它對於初學者來說過於複雜的使用界面也為人詬病已久。 PieTTY 則是源自於  PuTTY ，修正與完整支援亞洲等多國語系字元、 並在使用界面上大幅改進、易學易用的版本。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.csie.ntu.edu.tw/%7Epiaip/pietty/"&gt;http://www.csie.ntu.edu.tw/~piaip/pietty/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-7597269789495280175?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/7597269789495280175/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=7597269789495280175' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7597269789495280175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/7597269789495280175'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/01/nt-ssh-tools.html' title='[ NT ] SSH Tools'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-541131764144975188</id><published>2008-01-14T18:30:00.000+08:00</published><updated>2008-01-15T12:10:16.886+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>[ DB ] Freebsd Postgresql PL/sh Install</title><content type='html'>如何在 Postgresql 中編入 PL/sh Shell Procedural Language？ 使用環境為 FreeBSD 6.2R。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. 下載最新版的 &lt;a href="http://pgfoundry.org/projects/plsh/"&gt;pgplsh-1.3.tar.gz&lt;/a&gt;   並且解開 tar 檔。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#cd /tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#fetch http://pgfoundry.org/frs/download.php/1534/pgplsh-1.3.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#tar -xzvf pgplsh-1.3.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;#cd pgplsh-1.3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. 開始編譯及安裝 PL/sh 且宣告 mydb 這個資料庫支援 Shell 語言。&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# ./configure --prefix=/usr/local CPPFLAGS=-I/usr/local/include&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#make &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#make install&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;# su pgsql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;$ psql -d mydb -f /usr/local/share/pgplsh/createlang_pgplsh.sql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;CREATE FUNCTION&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;CREATE FUNCTION&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;CREATE LANGUAGE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 測試：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;mydb=# CREATE FUNCTION concat(text, text) RETURNS text AS '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;echo "$1$2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;' LANGUAGE plsh;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;mydb=# select concat('Hello!','World');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;  concat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;-------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;Hello!World&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reference：&lt;br /&gt;&lt;br /&gt;&lt;a href="http://plsh.projects.postgresql.org/"&gt;http://plsh.projects.postgresql.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9084082-541131764144975188?l=blog.ntut.idv.tw' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ntut.idv.tw/feeds/541131764144975188/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9084082&amp;postID=541131764144975188' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/541131764144975188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9084082/posts/default/541131764144975188'/><link rel='alternate' type='text/html' href='http://blog.ntut.idv.tw/2008/01/db-freebsd-postgresql-pgsh-install.html' title='[ DB ] Freebsd Postgresql PL/sh Install'/><author><name>4wei-diary</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://freebsd.ntut.idv.tw/image/newbsd80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9084082.post-4334447938797579137</id><published>2008-01-12T11:04:00.000+08:00</published><updated>2008-01-12T11:30:37.315+08:00</updated><title type='text'>[ RoR ] Ruby Module</title><content type='html'>Module 是 Ruby 中特有的功能，Module 不能建立 Instance 也不能繼承。&lt;br /&gt;&lt;
