關於 PHP, Linux, Open Source 及個人生活記載的網誌。
RSS icon
  • Ubuntu Linux 安裝 XGL 及 Compiz 教學

    Posted on February 18th, 2006 Sam Tang No comments

    Ubuntu Dapper repository 已經有 XGL 及 Compliz 套件,以下文章是說明如何在 Nvidia cards 上安裝及使用:

    http://www.ubuntuforums.org/showthread.php?t=131267


  • Linux 下找出大容量檔案

    Posted on February 17th, 2006 Sam Tang 3 comments

    以下指令可以找出檔案體積大於 50MB 的檔案,並列出檔案名稱及檔案大小:

    find / -type f -size +50000k -exec ls -lh {} \; | awk ‘{ print $9 “: ” $5 }’


  • 我還是喜歡棍波

    Posted on February 17th, 2006 Sam Tang No comments

    棍波在大陸及台灣應該叫手排,我在上年年尾買了一架自動波的 civic 後,起初覺得很舒服並覺得會愛上自動波。但昨天有機會再開棍波車時,感覺那才是真正的駕駛。

    期間有一段路是塞車,但整個過程還是覺得不錯啦。其實棍波除了飆車外還有好處的,例如當發覺車子不夠力時,可以馬上轉落低波 (低檔),但自動波則需要待車子慢慢自動轉換。


  • 兩個實用的 Sendmail 配置

    Posted on February 16th, 2006 Sam Tang 1 comment

    修改郵件停留在 queue 的時間
    當電郵伺服器發出的郵件退信時,郵件會停留在 queue 一段時間及重複嘗試發出,sendmail 的預設值是 5 天才會放棄及把郵件從 queue 中刪除。

    我想將這個時間縮短,那可以打開 /etc/mail/sendmail.cf,裡面有一行:

    “O Timeout.queuereturn=5d”

    5d 代表 5 天,我只想發送失敗的郵件停留在 queue 裡面 12 小時,可以改成:

    “O Timeout.queuereturn=12h”

    然後重新啟動 sendmail 即可。

    限制每封電郵收件者
    Sendmail 預設沒有限制每封電郵的收件者,那麼用戶就可以將電郵伺服器用作發送廣告信,要限制收件人數也是打開 /etc/mail/sendmail.cf,裡面有一行是:

    #O MaxRecipientsPerMessage=100

    將第一個 “#” 刪除,及將 100 改成你想要的數值,我自己是用 20,然後重新啟動 sendmail 即可。


  • MySQL 的 Replace 功能

    Posted on February 15th, 2006 Sam Tang 2 comments

    要對 MySQL 資料庫內的資料替換字串,可以借助 PHP 的 str_replace(),但這實在太麻煩了,其實MySQL 已內建了這個功能,以下語句可以將 [table] 資料表的 [field] 欄位作 replace 動作,[str_search] 是搜索字串;[str_replace] 是替換字串。

    update [table] set [field]=replace([field],’[str_search]‘,’[str_replace]‘);

    如果不想將整個資料表的欄位資料更換,可以在最後用 where 做條件選擇,例如:

    update [table] set [field]=replace([field],’[str_search]‘,’[str_replace]‘) where `zip`=’852′;

    以上語句跟第一句的分別是,第二句只會對欄位 “zip” 為 “852″ 的紀錄作更改。


  • 實用 SMTP 指令

    Posted on February 14th, 2006 Sam Tang No comments

    使用 Telnet 連接到 email server 的 port 25 後,便會出現交談模式,可以輸入 SMTP 指令,以下是常用的 SMTP 指令,測試 SMTP Server 很有用:

    HELO “yourname” – 知會 SMTP Server 你是誰,例如 HELP example.com
    MAIL FROM “email@server.com” – 寄件者電郵地址
    RCPT TO: “email@smtpserver.com” – 收件者電郵地址
    DATA – 以上步驟通過後,可以用 DATA 開頭並輸入信件內容,結束時用 “.”
    QUIT – 離開用 QUIT 結束


  • 找 Domain Name 要小心

    Posted on February 13th, 2006 Sam Tang 1 comment

    剛剛在 Digg 看到的,域名註冊商會記錄訪客搜尋的域名,然後如果當訪客沒有立即註冊,他們會選一些好域名註冊。

    我找域名的習慣是列出一堆 keywords 後搜尋,記下可以註冊的域名再選擇一個較好的,以我這個做法來看,用 Networksolutions 的 domain search 功能最適合,但看來下次找域名時要改用 whois,選定後便直接註冊。


  • 將 Apache 升級到 2.2.0

    Posted on February 13th, 2006 Sam Tang No comments

    Apache 2.2.0 已推出一段時間了,今天在家中的 Debian 升級來看看。編譯及安裝後沒有什麼問題,只是 PHP 也需要一同重新編譯。然後再看看設定檔,發覺在 /path_to_apache/conf 目錄下多了一個 extra 目錄,裡面有以下的設定檔:

    httpd-autoindex.conf, httpd-dav.conf, , httpd-default.conf, httpd-info.conf, httpd-languages.conf, httpd-manual.conf, httpd-mpm.conf, httpd-multilang-errordoc.conf, httpd-ssl.conf, httpd-userdir.conf 及 httpd-vhosts.conf

    新的管理方法比以前更有條理,以前是用一個 httpd.conf 包括所有關於 Apache 的設定,現在按照功能而細分出以上檔案,只需根據自己想修改的地方開啟相關檔案設定即可。另外不知是否心理作用關係,覺得新版本比 2.0 執行起來更快。


  • Unix 及 Windows 文字檔轉換

    Posted on February 13th, 2006 Sam Tang 1 comment

    大家如果試過在 Linux 及 Windows 文字檔分享的話,會發現文字檔的 “換行” 不一樣。在 Windows 用記事本開啟 Unix 文字檔時,文件不會開新行,需要使用支援 Unix 格式的文字編輯器才可看到分行;而在 Linux 開啟 Windows 的文字檔時,在每一行最後會有字元 Ctrl-m (^M)。以下是使用 Perl 在 Linux 下將文字檔轉換的方法:

    Windows 格式 -> Unix 格式
    perl -p -e ‘s/\r$//’ < winfile.txt > unixfile.txt

    Unix 格式 -> Windows 格式
    perl -p -e ‘s/\n/\r\n/’ < unixfile.txt > winfile.txt


  • MySQL 資料庫轉換: 4.1 to 4.0

    Posted on February 11th, 2006 Sam Tang 2 comments

    MySQL 4.1 的資料表格式相比起 4.0 增加了 character set 的資料,所以如果當編碼設定錯誤的話,很多時雙字節文字 (例如中文字) 便會出現亂碼,或者 ??? 等符號。今天我要想將儲存在 MySQL 4.1 的資料庫複製到 MySQL 4.0,單是使用 mysqldump 便會出現 sql 語法錯誤及亂碼情況,用 phpadmyadmin 也是相同結果,後來找到在 export SQL 檔時需要用 compatible 指定是那一種版本:

    shell> mysqldump –create-options –compatible=mysql40 db_name > dump_file

    然後在 MySQL 4.0 裡面只要像以前一樣就可以了:

    mysql db_name < dump_file
    總算成功轉換了,但原來只怪自己懶,在轉換資料庫後下載了新版的 phpmyadmin 回來,發覺新版 phpmyadmin 的 export 功能已經有 "SQL export compatibility" 可以設定資料庫。


  • Linux 硬碟分割區命名方法

    Posted on February 10th, 2006 Sam Tang No comments

    在 Windows 下我們所使用的概代是 c:, d:, e:…… 等等,而在 Linux 系統內則是使用另一個方法。一般常見的 IDE 硬碟為以 hd 命名,先根據 Primary, Secodary IDE 及 Master, Slave 的順序以 a, b, c, d 區分,然後再以硬碟的分割區順序以 1, 2, 3, 4 …… 遞增,例如 /dev/hda1 即是第 1 個 IDE 的 Master 硬碟的第一個分割區。

    而 SATA 硬碟與 SCSI 硬碟,就會用 sd 取代上面的 hd,例如 /dev/sda1 是第一個 SATA/SCSI 硬碟的第一個分割區。


  • 今天升級到 PHP 4.4.2

    Posted on February 9th, 2006 Sam Tang No comments

    記得在 PHP 4.4.1 推出後便馬上升級,但該版本與 SquirrelMail 有相衝,會造成無限 loop 地顯示郵件,使 email server 的負載很高,所以要立即 downgrade 回前一個版本。而在 SquirrelMail 的官方網頁也看到這問題,當時要使用 PHP 4.4.x-dev 或安裝 patch。

    今次學精了,在 PHP 4.4.2 推出後幾個星期才升級,現在升級後沒什麼問題,


  • Linux 系統的管線 (pipe)

    Posted on February 8th, 2006 Sam Tang 2 comments

    Linux 系統的管線 (pipe) 概念十分實用及重要。所謂管線就是使用 “|” 符號,將第一個指令的輸出引導到第二個指令當作輸入,例如:

    ls /etc/ | grep ftp

    以上指令分為兩部份,”ls /etc” 是列出 /etc 目錄下的檔案及目錄,而 “grep ftp” 則是搜索包括有 ftp 的內容。所以以上指令的執行結果就會是列出 /etc 裡面包括有 ftp 的檔案或目錄。


  • 你需要多少 bandwidht?

    Posted on February 8th, 2006 Sam Tang 1 comment

    現在所有的寬頻公司也說自己的速度有多快、服務有多穩定,但如果一個普通的用戶是否需要這麼多 bandwidht?

    就我自己為例,我在上年十一月前還是使用網上行 1.5M 寬頻,而因為加裝 Now 寬頻電視,所以升級到 8M。因為沒有 BT 的習慣,在家中的 server 也只供內部使用,所以唯一感受到 1.5M 及 8M 之間分別的是下載 Linux/FreeBSD 的 ISO 檔。

    另外上網是否快速,不是單方面看自己的 ISP 所提供的速度,還要視乎另一端 (server 或別人的電腦)的速度。我不是說頻寬多了也沒什麼用,只要覺得與其將著眼點放在速度上,倒不如注重其穩定性及售後服務。


  • 重設忘記了的 Root 密碼

    Posted on February 6th, 2006 Sam Tang No comments

    當忘記了 Linux 下面的 root 密碼時,可以用以下方法修復:

    方法一:
    1. 下次開機時,在 boot loader 將 ‘init=/bin/sh’ 加入到 kernel 的選項。
    lilo: 在 prompt 輸入 ‘linux init=/bin/sh’
    grub: 在正確的項目按 ‘e’ 進行編輯

    2. 開機後用 passwd 指令更改 root 的密碼及重新開機即可。

    方法二:
    1. 使用 linux live-cd 開機,掛載儲存了 /etc/passwd 的分割區,如果不清楚是那一個,可以用 `fdisk -l` 查看分割區列表。假設你的分割區在第一個 IDE 裝置的第一個分割區,那便輸入:

    mount /dev/hda1 /mnt
    chroot /mnt

    2. 最後與方法一相同,用 passwd 指令更改 root 的密碼及重新開機即可。