2007年11月16日 星期五

[網管]vlan 與 802.1Q

huihui 說要研究這個......

先把看懂的記下來:

2007年11月12日 星期一

[碎碎唸]能力不足,煩另請高明

在下義務管理的電子郵件主機被主任嫌垃圾信過濾太差了!

我是沒有認真的去做過統計到底效果是怎樣,只是每天一早收信時,個人的信箱除固定收到主機 security report 之外,大概過濾掉幾十到一百多封的垃圾信,只偶爾有少數漏網之魚罷了。至少過濾掉 95% 以上的垃圾信吧。公開的網管人員帳號收到的垃圾信應該是全校最多了吧?!

好啦,我承認沒花學校半毛錢的 postfix + procmail + spamassasin 過濾垃圾信的效果真的不如 google 的 gmail ,這樣還不滿意,只好拿掉 procmail + spamassassin ,讓學校另請高明做垃圾郵件防治,我管不了啦。

huihui ,對不起你啦!

2007年11月11日 星期日

準備搬家到 blogger

有鑑於學校的網管義工大概不用做了,放在學校的 blog 也就不是很穏了,加上 blog 放在學校,想要大鳴大放總是有顧忌,還是趁早搬出來比較好。

就來試試 blogger 吧,如果用得習慣,準備把整個 lss 實驗室搬過來這裡。

2007年11月9日 星期五

最快幹掉一個主機的方法

經常看到有人不小心下了一個指令:

rm -rf /

造成慘劇。但是,如果有心要讓慘劇發生的話,這個方法其實不太好。為什麼?因為只要來得及強迫停止執行、關機……等,沒刪掉的檔案還是救得回來。

目前我想得到的最邪惡的方法是:

dd if=/dev/null of=/dev/sda bs=1m

把硬碟最開頭的 1MB 幹掉,又快又方便。雖然其他的部份沒有清掉,但是想要救回,大概也要進實驗室了吧? @@

今天聽到了一些事,讓我感覺以前做了太多白工傻事。應該要把兩台乾淨的主機還給學校才對,不需要做什麼義工了。

有人能提供更快速邪惡的方法嗎?哈…哈…哈…

2007年11月1日 星期四

[SLAX]SLAX實驗室開張

伙伴 huihui 交代要做一個 DNS LiveCD ,而且催了好幾遍,於是找上 SLAX ,玩了兩天做出來了。據說這兩天就要上線試用看看。

重點是,這東西還 真好玩

所以, SLAX 實驗室就開張了。

SLAX 是基於 slackware linux 版本的 LiveCD ,重點在輕薄短小,把大小控制在 180 MB 以下,能燒進 8 公分的小光碟隨身攜帶,又要有桌面系統、應用程式…… 。

自己客製化 SLAX 也是非常方便的,因為 SLAX 使用模組來組織整個 OS ,而包裝、修改模組的工作也很方便。這回,就是用 192 MB 的 SLAX server edition 再精簡化後,改成只有大約 80 MB 的 DNS LiveCD 。其實,熟練以後,整個客製化過程也不會太久,花了兩天,是因為要從頭熟悉 SLAX 架構,以及再重溫久遠之前玩 slackware linux 的回憶。真正客製化的過程,應該半個小時就足夠了。

最近會先把 SLAX DNS LiveCD 的心得先整理記下來。

2007年10月30日 星期二

[VirtualBox]Panic: CPU too old for this kernal.

為了轉台到 Ubuntu ,裝了個 innotek VirtualBox 來安裝 ubuntu-7.10-server-i386.iso 。好容易裝起來了,結果如下:

virtualbox 安裝 ubuntu server 的結果

上網查了一下,好像是 VirtualBox 的問題。殘念 -_-

有大德能指點一下明燈嗎?若沒有,只好去用還要註冊碼的 VMWare 了。

2007年10月25日 星期四

[postfix procmail spamassassin]搞定垃圾郵件過濾最終解決方案

搞了一個禮拜的東西,記一下,做個紀念!

遇到的問題:

  1. amavisd-new 在當時無法從套件庫安裝。 解決方法:考慮大量相依性問題 ( 可能還有缺少的很多套件 ) ,放棄使用。
  2. procmail 必需能搭配郵件目錄使用 Maildir/ 格式,而非 mbox 檔案格式。 解決方法:見前一篇「 [postfix procmail Maildir]procmail 與 Maildir 信箱格式的搭配」。
  3. 有人很少 ( 或根本 ) 不收信,家目錄的 quota 用完後,無法收信會讓 spamd / spamc 的執行環境錯亂無法過濾垃圾郵件。 本篇目的就是解決這個問題。

使用 procmail 替代直接遞送 mail box ,是造成上述問題的原因。如果是由 postfix 遞送郵件到收件人信箱,無法遞送時 ( 如我遇到的收件者信箱 quota exceeded 問題 ) 會由 postfix 退信。但是如果是由 promail 遞送到收件者信箱, postfix 把信交給 procmail 時,就算完工了,而 procmail 則是無法退信 ( 註1 ) ,於是送信到預設的 mbox 信箱去了。

我決定採用 Postfix After-Queue Content Filter 裡的 Simple content filter ,讓 procmail 做為 mail filter ( 註2 ) ,將郵件 pipe 給 spamc 過濾加標籤,再 pipe 給 sendmail ,讓郵件重回 postfix 的 mail queue ,讓 postfix 做最後的遞送到收件人信箱。如此,就可以解決收件人信箱 quota exceeded 的問題了。

以下是各項設定:

2007年10月23日 星期二

[postfix procmail Maildir]procmail 與 Maildir 信箱格式的搭配

以前使用 procmail + spamassassin 過濾垃圾信,只會搭配 mbox 信箱使用,後來為了設定用戶信箱的 qutoa ,將信箱格式改為 Maildir/ 目錄信箱格式,就不再使用 procmail ,而改用 amavisd-new 了。

現在放棄 amavisd-new ,回頭改用 procmail ,搭配 Maildir/ 的問題得想辦法解決。終於給我搞定了,紀錄如下:

[spamassassin]自己動手安裝spamc/spamd

上週升級 mail 主機的痛苦之一,是套件庫裡雖有 spamassassin ,但是少了 spamc / spamd 。學校的 mail 主機,真正在用的人雖然不多,但是垃圾著實不少,還是得用 spamc / spamd 來得安全些。

既然套件庫沒有,那就自己抓 source 來安裝吧。

2007年10月22日 星期一

[碎碎唸]升級主機的作業系統要懂得忍

上週把 mail 主機的 Mandriva 升級為最新的 2008.0 Free 版本,結果,讓我一週來吃不好睡不好,日子難過。為什麼?因為我升級的「太早」。

為什麼,因為我不懂得要忍一下,沒有等到台灣的 mirror 站完全 mirror 完所有套件。

mail 主機的 email 服務,我是使用 postfix + amavisd-new + spamassassin ( spamd / spamc ) 的組合做 spam filter 。最早是用 postfix + procmail + spamassassin ,但是因為資源有限,必需控管用戶信箱的 quota ,所以 postfix 改用 Maildir/ 格式的信箱。但是當時 procmail 搞不定 Maildir/ 格式信箱,只能使用 mbox 格式,不合用。後來就改用 amavisd-new 當 postfix 的 filter server 取代使用 mailbox_command 的 procmail 。

在 Mandrake 2006 時,因為 postfix / amavisd-new / spamassassin / spamd /spamc 都有現成的套件,而且相依性的處理很好,只要簡單的 urpmi xxx ,然後修改設定檔就可以搞定了。

這回升級到 2008.0 Free 時,問題可大了:

2007年10月18日 星期四

[poppassd]使用 MD5 密碼

poppassd 透過 pam 來改密碼,預設是使用 DES 編碼,要改用比較安全的 MD5 ,要修改 /etc/pam.d/poppassd

#%PAM-1.0
auth required pam_pwdb.so shadow nullok
account required pam_pwdb.so
password required pam_cracklib.so retry=3
password required pam_pwdb.so md5 use_authtok nullok

在第四行的 pam_pwdb.so 加上 md5 參數就行了。

[poppassd]500 Old password is incorrect

以前用 SquirrelMail 時,有一個 change_password plugin 很好用,我是用 poppassd backend ,可以讓使用者直接在 webmail 裡修改自己帳號的密碼。

後來因故放棄 SquirrelMail 後,改用 V-webmail ,界面什麼都不錯,中文問題也修得差不多了,就是沒有線上改密碼的功能。於是,動手把 SquirrelMail 的 change_password plugin 裡的 poppassd beckend 給移植過來用,效果蠻不錯的。

V-webmail change password

最近將 Mail 主機升級 ( 其實是重新安裝 ) 成 Mandriva 2008.0 Free ,結果慘劇發生,完全相同的程式碼,不管輸入的密碼是多麼的正確,一律給錯:

500 Old password is incorrect

好不容易終於解決了。因為是 poppassd 的問題,所以,解決這個問題後, SquirrelMail 的 change_password plugin 不能換密碼的問題也可以一併解決。

2007年10月8日 星期一

[碎碎唸]這個可能要用電腦…

huihui 今天有感而發,寫了這篇「這個可能要用電腦…」。以下的內容原本是那篇文章的回應,後來想想,這樣的言論還是放自己的 blog 好了。

對於那些 動不動 / 一有機會 就把「這個可能要用電腦…」掛在嘴邊的業務執行人員,想理所當然的把工作推給「懂電腦的人」,我想回應你們幾句話:

「沒那個屁股,就不要吃那堆泄藥。」

「這可能要用電腦…」「可以啊,自己做」

「我又不會?」「那就不要用電腦做啊!」

「你比較厲害啦!」「要你管。」

「這一定得用電腦啦!」「既然如此,幹嘛不早學?」

「這個馬上就要,我做不出來。」「那是你家的事。」

「我不管了,就給他開天窗吧。」「那還是你家的事。」

就這樣。

2007年10月4日 星期四

[ssh]Server refused our key

為了讓努力不懈的大陸網友能有繼續努力永不休止的機會, Server 的 ssh 全面使用 ssh-key 認證,密碼登入沒有了。

不過,改用過程中發生一件怪事,我的帳號沒有問題,可以用 ssh-key 登入 ssh console / sftp ,但是同事的帳號卻發生 "Server refused our key" 的訊息拒絕連線。

經過一番檢查,原來是 ~/.ssh/authorized_keys 的權限錯了。

2007年10月3日 星期三

[hack]使用SSL連線的管理界面

伙伴 huihui 最近在玩 ca 認證主機,幫 blog 簽了一個 SSL 憑證,要試試虛擬主機是否能使用獨立的憑證

試完了,想說 SSL 憑證不用白不用,於是動手改一改 LifeType 程式,看看能否做到後台管理界面都在 SSL 連線下作業,至少 login 時輸入帳號密碼會比較安全。

初步試驗算蠻成功的,只修改兩個地方:

[apache]虛擬主機與SSL憑證

純筆記!

IP-based Virtual host 可以各自擁有獨立的 SSL 憑證, Name-based Virtual host 則只能共用一個 SSL 憑證。

原因: SSL 為比 http 更底層的協定, Name-based Virtual host 是在 http 層才能分辨,而 SSL 憑證早在這之前就載入了。

若 Virtual host 要同時支援 http 與 https 協定,要當成兩個 Virtual host 設定,分別監聽 80 port 與 443 port ,但是把網址與文件目錄設為相同。至於 access log 與 error log 最好是分開以方便未來利用。

2007年9月30日 星期日

Firefox Sage 退役,改用 Google Reader

訂閱了五十多個 RSS ,一直都是用 Firefox + Sage 當 RSS Reader ,也用得很順,就是要維護家裡和學校幾台電腦裡的訂閱清單一致,覺得麻煩而已。

一直嚐試找一個好用的 online RSS Reader ,試過了 Bloglines ,他的界面跟我沒緣份;也試過 Newsgator ,但是太慢了。後來折衷的方法是,把一些比較關注的 RSS 用 Newsgator 做成聯播,放在 blog 上,權充線上閱讀器使用。

google reader 也試用過,但是以前的界面覺得不是那麼方便閱讀文章,留下了一堆 RSS 後,就沒理他了。

前一陣子終於 google reader 改版並且出中文界面了,於是嚐試改用 google reader 取代 Firefox + Sage 的組合。一段時間的使用後, google reader 速度快、界面清爽好用,配合 google toolbar 工具按鈕提示,實在很滿意。於是決定切換到 google reader 上,讓 Sage 從 Firefox 上退役。

本站上的網誌聯播也一併被取代,功成身退了。

skinniest=藍心湄

這是怎麼回事啊?! @@?

剛剛用 iGoogle 的自動翻譯查一下「 skinniest 」這個單字,結果自動翻譯的結果竟然是「藍心湄」?!

有圖有真相:

skinniest.gif

用 google 搜尋一下 「 skinniest 藍心湄 」 ,也只得到似乎是自動翻譯的結果。有人知道是怎麼回事嗎? :D :D :D :D :D

2007年9月28日 星期五

[apache]只有宣導是不夠的

忍無可忍了,只有祭出 RewriteRule 來堵一下:

RewriteEngine on
RewriteRule \.mp3$ - [F,L]

好你個百度mp3音樂盒,再來試試。

不聽宣導勸導的學生,我準備要拿 access_log 出來簽校規 ( 國立內壢高中學生獎懲實施要點補充規定 第四條、第二款 ) 處分了。

定期會消失的垃圾筒?!

繼上個學期初的垃圾筒消失事件之後,本學期又再次發生了。難道每學期都要發生個一次嗎?

上次是隔天就把垃圾筒找回來了,這回不知道要多久?

[update 2007-10-01]

上回是伙伴 huihui 在垃圾筒消失一段時間候才 post 文章,實際找回垃圾筒已經是多日後了。

另,今天垃圾筒已經自己出現了。

2007年9月26日 星期三

[tool]好用的lsof

Daniel Miessler 的 dmiessler.com 寫了一篇好文章介紹超好用的網管指令 lsof ,以前都不知道,真是受教了。

先記下連結: http://dmiessler.com/study/lsof/ ,找時間要全文翻過來放著用。

[演算法]迷宮產生器參考連結

前一陣子教集訓同學走迷宮問題。那自然需要範例的迷宮檔案,以前都偷懶用亂數產生迷宮裡的牆,再手動修一下來使用。

今年花了點時間研究迷宮產生器的寫法,在 google 上搜尋後,找到以下兩個很有用的連結:

MyChat 數位男女 > 程式設計 的這篇討論裡,有唐老鴨寫的現成程式,稍微修改就可以跑了。基本上,是使用「挖通道」的方式,寫遞迴函數來挖迷宮。判斷原則是:「如果牆的另一邊沒有通道,則把牆挖穿,並挖出通道;否則就退回換個方向再試。」

另外,「也是回顧」的 tu 寫了很多關於迷宮的文章,讓我獲益良多。雖然沒有現成的程式可以參考,但是在「產生迷宮的另一種方法」裡所提出的用 set Union 方法產生迷宮,讓我搞清楚了 ( 單一解 ) 迷宮的本質:所有的通道都是相通的,都屬於同一個集合。這樣,我也搞清楚了為什麼唐老鴨的程式挖通道時,碰到通道就不挖了的原因。

再深入研究後,發現要產生單一解的迷宮其實非常的簡單。這篇文章只是先記下以上兩個連結,免得以後忘了。我的迷宮產生器寫法待整理好了再拿出來獻醜吧。

[C++]PI

記得古早、古早以前寫 C 的時候,依稀記得圓周率 PI 在 math.h 標頭檔裡面有定義一個 macro ,可以直接使用。但最近在 C++ 裡嚐試要用時,卻告訴我「未宣告的識別項」錯誤。

調出 math.h 來看,找到答案了!裡面有一段註解:

/* Define _USE_MATH_DEFINES before including math.h to expose these macro
* definitions for common math constants. These are placed under an #ifdef
* since these commonly-defined names are not part of the C/C++ standards.
*/

2007年9月24日 星期一

[維護]你的 moodle 變慢了嗎?

這學期上課使用 moodle 時,一個班的學生同時使用線上測驗時,就會發生大部份同學遇到 MySQL OverLoad 的問題,進主機用 top 觀察一下,記憶體用量沒問題,但是 mysqld 卻使用了 99.9% 的 CPU 。

檢查了一下 moodle 的 db 使用量,發覺有一個資料表 mdl_cache_text 就用掉了 400MB 以上。這個表應該是前端網頁文字的快取用途,看了一下內容,裡面的條目重複情形還蠻多的。

既然是 cache ,那代表即使刪掉了,也會自己重建吧?!另外,猜測每次執行時,可能會大量 qurey 這個表,所以大膽猜一下,這個表可能是造成系統瓶頸的原因。所以,動手將這個表的內容清掉了。重新進入 moodle 後,感覺反應確實有變快了。

再來就是等星期三上課時的實測效果,看看是不是真的能有效的解決問題了。

[update 2007-09-26]

今天上課時,完全沒有再發生 MySQL OverLoad 問題了,所有學生 ( 44 人 ) 都很順利在同一段時間裡進入隨堂測驗。看來之前的猜測沒錯。有空再來看看 moodle 這個 text_cache 機制到底是怎麼回事?!

[C++]isNumeric

C / C++ 的標準函式庫裡,找不到一個類似 VB 裡的 isNumeric() 可以判斷字串是否為數值型式的標準函式可用。

沒錯, Visual C++ 的 System 命名空間裡,有 Char::isNumeric 可以用,但是非 VC++ 的 compiler 不能用。

另外,有找到一份 C++ Programming How-To ,裡面有一份強化過的 A! Dev's String class ,看起來遠比標準 C++ 的 String class 好多了,有空應該研究看看。只是學生比賽時,這樣的程式庫不知道可不可以用?

回到 isNumeric() 函式,看來只有自己手工打造一個來用了。

2007年9月14日 星期五

[VB]最簡單的中置式求值法

常見的中置式求值做法,是要操作運算元堆疊和運算子堆疊,比較運算子優先順序逐一運算求值。

今天有人問我,想實驗用 VB 的 Print 指令直接求出中置式的值,例如輸入的中置式字串

"(5-3)*4/2+(2+3)"

先把運算子符號放一個陣列(例如叫 opr()),運算元數字放一個陣列(例如叫 opd()),再用 for next 依原來順序放在 Print 指令後執行

Print opr(0);opd(0);opr(1);opd(1)...

結果呢?當然是印出原運算式字串。

那有沒有辦法做到呢?其實是可以的。

2007年9月8日 星期六

朝天子 志感

今天在看霹靂皇龍紀(第36集)時,刖俠遊患吟出這首元曲,深覺與最近的心情相呼應,特此記下:

朝天子 志感

作者:元 無名氏

不讀書有權,不識字有錢,不曉事倒有人誇薦。
老天只恁忒心偏,賢和愚無分辨。
折挫英雄,消磨良善,越聰明越運蹇。
志高如魯連,德過如閔騫,依本分只落的人輕賤。

不讀書最高,不識字最好,不曉事倒有人誇俏。
老天不肯辨清濁,好和歹沒條道。
善的人欺,貧的人笑,讀書人都累倒。
立身則小學,修身則大學,智和能都不及鴨青鈔。

嗯!又是牢騷。

2007年6月4日 星期一

[非關政治]名實相符是重要的!

馬英九因為特支費使用發票有問題,即使據說那是合法的用途,但不能因為用途是正確的,就可以使用非法的手段。

陳水扁因為國務機要費使用發票有問題,即使據說是用在機密外交…等,但不能因為目的是正義的,就可以使用非法的手段。

即使是應得的收入,名實不相符,還是不要拿的好!

有感而發,別理我。

2007年4月25日 星期三

舊的回響浮出來了?

昨天升級了 LifeType 1.2.1 ,今天檢查一下 error_log ,看到一堆如下的 error :

[Wed Apr 25 13:31:01 2007] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/html/lifetype/js/tinymce/jscripts, referer: http://blog.nlhs.tyc.edu.tw/category/2/9

都是找不到 TinyMCE 的 emotions 表情圖。原因是以前自己做 TinyMCE 包的路徑和後來 Mark 包進 LifeType 正式版的路徑不同造成的。

一時手賤,進資料庫改回響裡的回文表情圖路徑,沒改完就放棄了。不過,有改的,卻變成最近回響了。 ^_^|||

程式語言錯亂篇

同時使用多種程式語言還蠻痛苦的。集訓學生 ( 只剩一個了 ) 教他 C++ ,而最近電腦課的程式語言課程則是上 VB.Net 。相似的語法的細微差異,一時不察,讓我多花了許多時間除錯。

紀錄一下:

2007年3月9日 星期五

遠端關閉學生的應用程式-使用 taskkill

伙伴 huihui 發表了一個關閉學生應用程式的電腦教室管理工具。初看到這一段:

……其實用 WMI 加上 Script 就可以達成任務……

天真的我以為是在 AP 裡執行現成的 Windows 命令來達成將學生電腦的 IE 關掉的目的 ( 經過求證,我太天真了 ) ,於是便搜尋看看到底是用那個 Windows 命令完成的,結果找到了一個與 linux 上的 kill 命令相似的 Windows 內建命令: taskkill 。使用 taskkill 命令加上其他命令的配合,便可以達成「一口氣關閉整間電腦教室的 IE 瀏覽器」的目的。

這次要用的命令,除了 taskkill 之外,還有 for 與 start 搭配使用。

2007年2月28日 星期三

修復 moodle 的 log 功能

數位學習網站的紀錄功能壞了好一陣子了,懶得修啊!

今天查了一下,原來是紀錄 log 的 mdl_log table 壞了,用下面的 SQL 語法:

repair table mdl_log

就可以修復了。關於 repair 語法的參考: REPAIR TABLE Syntax

2007年1月24日 星期三

Visual Studio 2005 Express 繁體中文版 ISO 下載網址

用 google 搜尋到的,順便記下來,下載網址如下:

資料來源:台灣MSDN論壇的這篇討論第6個回覆。

另,據該討論版主回覆, Visual J# 2005 Express 沒有中文版, SQL Server 2005 Express 沒有 ISO,但是有完整安裝檔:[前往下載頁]

為維護版面,不顯示下載的原始網址,請自行看連結內容囉!

2007年1月23日 星期二

他們不是代罪羔羊

看完獨孤木的「揮揮衣袖,不帶走一片雲彩(中)」,裡面提到不論是破釜沈舟走定了,還是以退為進有所要求,記得找個代罪羔羊來幫你說話。

已經過了好幾年的不愉快往事不想再提,只是想說,文中提到的方法,除了出國進修之外,其他的我都真實遇到了。我的家人不是代罪羔羊,是苦主啊!

這裡可以再提供一個苦主(當時讀幼稚園的小女兒)的說法:「爸爸已經一個月沒有回家陪我吃晚飯了。」

吐吐苦水,沒事。

2007年1月16日 星期二

測試dp.SyntaxHighlighter

※更新:這個站沒有用 dp.SyntaxHighlighter ,原測試部份移除了

先記一下,要記得替 TinyMCE 加上: