Monthly Archives: March 2010

讓Python程式出錯時自動寄信給你

我喜歡Python的原因之一就是它的標準函式庫把該有的東西幾乎都包進去了,像是ConfigParser用來讀取設定檔,而logging更是不可缺少的,用來記錄程式的訊息非常好用的函式庫,而且這些函式庫不是只是陽春的玩具,而是功能齊全的基礎,其中logging一個很棒的功能就是將錯誤訊息寄給你,因為通常錯誤發生雖然都可以寫到記錄檔中,但是你有多少時間會去翻記錄檔? 通常程式出錯了,你也不會有認何知覺,將錯誤訊息寄給你的好處就是,一有錯誤你就立刻可以知道,而且少見的錯誤也不會被漏掉,例如有人試圖攻擊你的伺服器,在這過程中如果伺服器發生錯誤會寄信給你,在他成功之前你可能就有機會發現,總之將錯誤訊息寄給自己是很有用的技巧 一個錯誤報告的例子 最棒的就是,要用此功能非常簡單,以下是一個簡單的範例: # -*- coding: utf8 -*- import logging import logging.handlers rootLogger = logging.getLogger(”) rootLogger.setLevel(logging.ERROR) handler = logging.handlers.SMTPHandler( mailhost=’smtp.example.com’, fromaddr=’[email protected]’, toaddrs=’[email protected]’, subject=”Houston, We’ve Got a Problem”, credentials=(‘username’, ‘password’) ) rootLogger.addHandler(handler) log = logging.getLogger(__name__) log.fatal(‘HELP! We are under attack!’) … Continue reading

Posted in Python, Uncategorized, 中文文章 | Tagged , , , | Comments Off on 讓Python程式出錯時自動寄信給你

99乘法表C++ Meta Programming版

前些日子有人在PTT C++版問了99乘法表相關的問題,於是我手癢就寫了一個C++ Meta-Programming的版本,沒用真正寫過Meta-Programming,因為感覺上實在是太炫技了,像是帕格尼尼的炫技曲似的,如果inline最佳化都成功的話,應該是會整個被展開來,用的是編譯時間來換效能,因為和一般的程式寫法和思考方式都不太一樣,所以這樣的東西還是盡量別亂用的好,不然別人通常都難以維護,所以這只是純寫好玩的 如果你在修C++的課,剛好遇到99乘法表的作業,或許你可以把這拿去交,看助教看了會有什麼反應 XD 以下是程式碼 #include using namespace std; inline void printLine(int i, int j) { cout

Posted in C/C++, 中文文章 | Tagged , | 5 Comments