Exim — 如何解讀它的記錄檔 (log file)

閱讀記錄檔,是每個伺服管理員的必修功課。一旦有問題,就需要埋頭在這些記錄中,尋找問題的源頭,再來才能夠找到解決的真正方法。

為了節省儲存空間,一般的記錄檔都會盡量用符號來取代文字。

下面是用於Exim的符號:

用戶插入圖片

一個例子:
用戶插入圖片

解讀:
列一:郵件處理的日期時間
列二:電郵編號
列三:就是上面說的符號啦~(紅色圈起的部份)
列四:郵件處理詳情

當年在舞蹈組的日子

今天,一位老戰友把一些舊照片貼上來了,看到這些照片,真的引起非常多的回憶。那是屬於青澀歲月的回憶。

馬來舞團體照
馬來舞蹈團體照片。後排左一,右一、二都是我們的老師。

和這些老戰友的相遇是在初中二的時候。回想起來當年也是機緣巧合,讓我加入了這個團隊。當時一般上只有制服團體才會在初中一班招生,但不曉得為什麼,這個舞蹈學會竟然會到我的課室上來。而我那時還在發着歌星夢,覺得歌、舞是一定要配合一起才能夠成功,所以毫不猶豫也沒有看清楚就加入了這個舞蹈學會,也自然成為了同齡中第一個加入舞蹈學會的男生。

過了不久才驚覺這個學會的全名是《民間舞蹈學會》,但已經踏得太深,無法回頭了。。。(一笑~)

用戶插入圖片

不過話說回頭,中學生涯時期,在舞蹈學會的日子是我最懷念的生活經歷。從初中二開始到中五畢業,每天除了吃飯、睡覺、上課,就是練習+練習+練習。埋頭苦練基本功、壓腿、翻身、拉筋、手勢、身姿、站位、跳騰、步法等等,讓自己從一個完全不曉得什麼是舞蹈的男生,改造成一個就連在走路時也在練習步法的『癡人』。

用戶插入圖片
學習的第一支馬來舞,Si Penang Muda.

曾經試過
瘋狂練習拉筋,結果晚上睡覺時才發現爬不上床(我睡鐵架床上鋪);
瘋狂練習步法,讓還沒穿夠一年的鞋子穿了兩個大洞;
瘋狂練習劈腿,拉破了十多條練習褲(那時還沒開始穿緊身褲),同伴們對於走光事件從開始的眼淚狂飆變成麻木。。。

最後在最高峰時期,劈腿可以達到胯部離開地面只有少於一厘米的程度。雖然還不完全,但也算是盡力了。

用戶插入圖片
在某團隊邀請,校外表演的馬來舞蹈:Inang.

甚至到了十多年後的今天,對於舞蹈還是懷着興奮的心情。在和舞友們聚會時,我常說這麼一句:期盼有這麼一天,還有機會讓自己可以再次在舞台上,展示屬於自己的風采。雖然在台上只能夠擁有那麼短短的十分鐘,足矣~

這是我的真心話。也祝愿現在還在參與舞蹈團隊的朋友們,繼續全心全意的去享受這人生中難得的時刻。珍惜每次踏上舞台的機會。畢竟舞蹈員的舞台生命是非常短暫的。

用戶插入圖片

也願照片中的你們,現在都過得快樂、安康。

升級CentOS手記

目前大部份比較經濟的網服都是以CentOS為主,除了免費之外,最重要的還是這個Linux Distro是基於 Redhat SE(雖然它一直都在否認),所以其穩定和安全係數還是比較可信的。

目前螞蟻使用的為CentOS 5.5版,為了要追上潮流,試用最新的 Joomla3,所以恨心做了升級的舉動。(Joomla3竟然需要PHP 5.3.1以上才能運作,而在CentOS 5.5最高只能升級到 5.1.x,真的命苦啊~~~)

廢話少說,工作還是得做。

升級時其實非常簡單,只需一個指令即可。

sudo yum update

輸入root密碼後,等它跑一大堆檢查,最後如果沒有狀況,它就會問你是否真的要升級,並提示需要下載的文件總量。按下 “ Y ” 敲一下 Enter 就可以讓它繼續完成其餘工作。
用戶插入圖片

如果在中間出現問題的話,它也會提供解決方式讓你選擇。我在升級時就面對幾個程式的Dependency出現問題,最後選用了其提供指令,跳過出錯的地方。

Power Point 演說小技巧

Power Point,相信很多人都曾經用過。不管是在微軟的Power Point、LibreOffice中的Impress還是蘋果的Notes,大都是用於呈現演說時的一個工具。但我相信絕大部份人都只會用於編譯演說頁面的內容、編排一下轉頁時的特效,有的更熟悉者可以讓頁面中的物件隨著鍵盤或鼠標按鍵,一個個慢慢出現。

下來這裡要介紹的是一個可以讓你在做演說時,更加有信心。

有沒有想過在演說時,還可以看着電子手稿?試試這:

1. 首先,當然是要在你要展示演說內容的電腦上打開你的Power Point文檔咯~

2. 在熒幕的下方,有沒有看到一個空白的位置?
用戶插入圖片

3. 這就是你的手稿位置啦~(按圖放大) 把你在這頁面的演說重點全輸入進去吧~!關鍵是,盡量簡短即可。
用戶插入圖片

4. 完成後,下來就是進行最後投射前的設置了。記得在展示前一定要先做好這部份,否則不靈光的哦~(打開下圖看清楚設置方式吧~)

用戶插入圖片
注意:投影機一定要已經接上了才行!

5. 下圖就是按下投放的時候,設置正確的話,你將會在電腦熒幕上看到的內容。標識的地方個別為:
(1)投放頁面展示區(無需回頭也知道自己在放什麼啦~!)
(2)工具和翻頁按鍵。可以用筆來在頁面上直接繪畫。(要放開按鍵後才會投放到大熒幕上哦!)
(3)當前頁面的演說重點。可以按鍵放大縮小。
(4)頁面小圖預覽。
用戶插入圖片

下面就是成功後的效果了:

用戶插入圖片
後面熒幕是投放效果。

CakePHP學習手札 — Auth,用戶登錄管理

在開發過程中,都是使用其提供的手冊來進行學習。在CakePHP組中,他們稱之為Cook Book。第一章的實作例子就是一個簡單的部落系統,由於整個過程中都非常順利,所以我就不在這手札中提了。這裡要提的,是接下來實作演習中的用戶登錄管理作業。

先來個短短的說明:

Auth是其內建的機制,提供了三種登錄管理:Form, Basic, 和 Digest。在這裡,我使用的是最普遍使用的Form機制。簡單說就是進入一個登錄網頁,輸入你的用戶名、密碼等重要訊息,系統檢查過後就會給予其戶口關聯的使用權力。

CakePHP Cook Book中,介紹了非常直觀使用的 users/login 和 users/logout 這兩個例子。如果按照它的方法,在進入需要權力的頁面時,系統就會自動把你帶到 users/login 這個頁面,讓你進行登錄動作。退出時也只需要進入 users/logout 這個位置即可。非常簡單明確。

在學習過程中,發現一個很奇怪的情況:一旦抵達某個步驟後,就會突然間不管用什麼方法進入 users/logout 這個鏈接頁面,也不會有任何反應。儘管我從頭檢查了全部代碼和例子,都找不到真正的問題所在。結果重做了三次,最後才給我找到了答案。

管制可瀏覽頁面
登錄管理機制本身提供了一個非常簡單的頁面控制方式。只需在當前需要進行登錄限制的Controller項目中,加入下面的代碼,系統就會在某人進入這項目的頁面時,自動使用 isAuthorized( ) 功能來檢查其權限。

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow(‘index’,’view’);
}

上面的例子中,不管是誰進入這個項目中的 /index 或者 /view 都沒問題。但如果進入其餘的頁面,例如 /add 就需要登錄才可以繼續瀏覽。如果項目中只有一個或少許頁面需要管制,可以把上面的例子改成限制登錄人員才能瀏覽 /admin:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->deny(‘admin’);
} 

登錄用戶權限管理
上面的例子只能針對是否能登錄才能瀏覽某個頁面。有時候我們需要多個用戶層次,來進行訊息管理動作。以論壇作為例子,論壇中基本用戶就分成三大類:版主、會員、遊客。其中會員和版主所擁有的權力是不一樣的,前者只能夠進行貼文、回應等動作,而版主則擁有更大的權力來管理論壇。

在CakePHP中,用戶權限層次管理也非常容易,下面例子為只有管理員可以進入用戶管理、文章刪除頁面 :

public function isAuthorized($user){
// Set default admin’s access rights
if(isset($user[‘role’]) && $user[‘role’]===’admin’) {
if(in_array($this->action,array(‘users’,’p.delete’))){
return true;
}
}

}

上面兩個管理工具,基本上配合得好的話會讓編程時,減少很多不必要的力氣來編輯這種常用的用戶管理機制。真的可以節省非常多的時間啊~

我所面對的問題
文章開頭就說到了,我在這個部份面對了一個很詭異的登錄、退出問題,一直檢查到最後才發現原來我犯的只是一個小小的邏輯性錯誤。在頁面權限管理機制中,我沒有放入 /login 和 /logout 這兩個頁面的使用權限,當只是用這一個機制,其實不會面對什麼問題的。但後面我把用戶權限管理機制加入後,由於其中沒有說明這些已經登錄的用戶可以進入 login 和 logout 頁面,所以在進入時就直接被轉移到之前的頁面,而造成不能運作的假象!

最後我在 AppController 中加入這兩個頁面的進入允許後,卡了我三天的登錄問題就這樣解決了。。。

為何把代碼加入AppController,而不是相關項目的Controller中?
任何東西加入AppController將會直接在整個系統框架中實現。既然 login 和 logout 都是公用的功能頁面,直接加入 AppController 就好了。否則就需要每個Controller項目中都需要加一個。

暫時就到此為止。繼續 coding 去~!