Trackback SPAM 是很討厭的東西;它不像 comment SPAM 可以用 captcha 或帳號/密碼來擋。Trackback 都是由 blog 軟體系統發出來的資料,所以要擋可以,必須考慮到這中間缺乏使用者的互動,否則就會連正常的 trackback 也擋掉。
感謝 Mark 的許多指教,讓我知道處理 trackback SPAM 常用的幾種方法:
- 不良的行為。
- DNSBL.
- 內容驗證。
我處理 trackback SPAM 的經驗還不夠,無法歸納出 trackback 中的「不良的行為」。因此,我往 2, 3 兩種方法裡面去進行。DNSBL 是許多郵件主機 (或客戶端程式) 用來判別的方式,不過不知道是不是我的處理方式有問題,所有進我這邊的 trackback SPAM 來源都不在這些 DNSBL 裡面。
DNSBL 無法擋掉進來的 trackback SPAM,所以就得實作內容驗證的程式了。幸好,這對 Python 來說是小菜一碟,利用 urllib2,不到二十行就解決了。內容驗證的要訣,根據 Mark 提供的原則,是去 trackback 來源的 URL 把 HTML 內容抓回來,在其中搜尋是否有我這個 blog entry 的 URL。這個原則很合理。一般會 trackback 我的人,在 blog 的內容裡面多半都會提到我的 entry (不然他為什麼要 trackback 呢),也通常會附上 entry URL。
目前內容驗證是這裡 anti-trackback-spam 的主力。為了要通過此處的 trackback 內容驗證,希望對此處 entry 進行 trackback 的朋友們,必須在寫完你的 blog,儲存好可以給別人看之後,再進行 trackback 動作。否則,trackback 內容驗證程式抓不到你的 blog 內容,自然會把你的 trackback 當成 SPAM 囉。
Posted by yungyuc
at
17:09,
0 comment,
0 trackback.
Posted by yungyuc
at
20:54,
0 comment,
0 trackback.
對,我開始改這裡的程式了。所以紀錄一下編網頁的時候會用到的 autocmd:
au BufRead *.py set ai et nu sw=4 ts=4 tw=79
au BufRead *.html set ai et nu ts=4 sw=4
au BufRead *.htm set ai et nu ts=4 sw=4
au BufRead *.css set ai et nu ts=4 sw=4
再補一個 reStructuredText 的:
au BufRead *.rst set ai et nu ts=2 sw=2
Posted by yungyuc
at
18:11,
0 comment,
0 trackback.
把 Python 分類到 dynamic language,看起來就比 scripting language 專業!
thegiive 真的很知道玩 dynamic language (這個名詞聽起來就比 scripting language 厲害多了吧) programming 的人對什麼會感冒:
光是「絕對不是 JavaScript 那種 SCRIPT 語言可以比較的!」這句話,就會被 PHP / Perl / Python 社群罵死,根本不用 Ruby 來補這一刀。
所以我就忍不住也想要來淌一下混水了 (雖然不想罵死誰) ... 很久很久很久沒這樣幹了呀 :D 從奇怪的角度來看,對我個人來講,這也算是個紀念 :p
» continue reading
寫網頁程式時,要輸出到網頁上的資料常常會帶有 HTML 標籤,譬如 <html>blahblah</html>,或者資料內容「像」HTML 標籤,例如 <亂講>一通</亂講>。在 Django template 中,提供了一個 filter 來把字串裡的 HTML 標籤相關字碼轉成 HTML entity。這個 filter 就是 escape。相關說明見 Django 文件。
用法很簡單:
<span class="message">{{ message.message|escape }}</span>
如果我們沒有在 message.message 後面加上 escape filter,那麼萬一 message.message 這個字串裡放了 < 或 > 一類的字元,就會弄亂 HTML 排版。更有甚者,會造成 XSS vulnerability。
escape 是 Django template 處理字串資料輸出到網頁上簡單、好用而必要的 filter。我們會常常用到它。
Posted by yungyuc
at
22:48,
0 comment,
0 trackback.
Thinker 在從 Dynamic 、 script 到 Python 中的
「 KISS; Keep It Simple and Stupid 」,何必將事情搞的很複雜,簡單點不是很好嗎?Template 只需要很簡單的資料置入的功能,何必弄來「能上天下海」的神力。
一言,深獲我心。Django template 強迫移除複雜程式邏輯的作法招致了許多反對的意見,但直到現在,Django 也沒有要改變的意思。ASP, PHP, CFM, PSP 這麼多種 server page,無論一開始多容易撰寫,後續的維護實在是令人頭痛;如果 template language 允許了多一點的可程式化邏輯語法,未來很容易就走進可怕的表現/邏輯混雜的混亂地獄。
那種程式碼很難看,要叫人看那種程式碼得付不少錢才成。
Python 字典是強大無比的概念。撰寫 Python 程式本質上就是建立字典、在字典裡查表的循環。呼叫函式用到字典、存取變數用到字典,最後,整理資料也是字典最好用。初學 Python 的時候只懂得把字典當作字串資料庫來使用,及至經驗累積多了,便慢慢把許多東西都放進字典裡去。一開始是變數,接下來是物件,後來連類別和模組都塞進了字典。偉哉。
合適地組合各種簡單的概念,便能構築強大的系統。
Django 創造者之一的 Simon Willison 的 weblog 搬家了,新家在 simonwillison.net,powered by Django。
新網頁下方的過往 weblog 項目分年列表真好看,有時間我也要來弄成那樣。
Posted by yungyuc
at
10:10,
0 comment,
0 trackback.
本站不知道會新生幾次哦 (笑)。
總之,本小站從獨角戲成長為 multi-blog 了。從下班回家一直作到現在,總算把這個新生 Everyday Work 改到可以上線使用。我在前台加了 pagination,後台也加了些選項。接下來就慢慢寫、慢慢調、慢慢把新系統改成比較理想的樣子吧。
在轉換資料庫的時候才發現,我保留最多的資料不是 blog,而是 referer。為了要轉 referer 搞了幾十分鐘,最後我終於放棄。看來儲存 referer 紀錄的方式大概不太好,或是這種東西本來就是數大量肥,無論如何現在想把舊系統的 referer 轉過來太花時間,不切實際。重頭算起方便點。
而且 referer 本來就是站主看爽的而已;以後把它藏起來好了 :)
Posted by yungyuc
at
22:15,
0 comment,
0 trackback.
程式語言人氣排名,還有分 A, B 級以及不入流 (笑)。這個有意思。Ruby 真的是大受矚目的程式語言,而 thegiive 的預估也神準無比,這個月 Ruby 確實打敗 PL/SQL,受歡迎度上漲到了 1.717%。
Fortran 在哪裡?2006 Nov. 時的受歡迎度是 0.392%,果然是個老掉牙的東西呀。Python 是 3.641%,還輸駱駝文 2.587%。
Posted by yungyuc
at
19:23,
0 comment,
0 trackback.
不知道哪來的印象,可能是 Django mailing list 吧,說 Pro Django: Web Development Done Right 十月要出版。不過 Apress 網頁上還是高高掛著 NOT PUBLISHED。
即讀之則譯之。以下是這本由 Django 原創者之一的 Holovaty 與現任開發者 Kaplan-Moss 合著,Django 首部印行書籍之介紹的中譯:
Django,這個 Python 界中對等於 Ruby on Rails 的網頁開發框架,現在是網頁開發領域中最熱門的題目之一。在專論 Django:網頁開發的正道一書中,Django 創造者之一的 Adrian Holovaty 與 Django 首席開發者 Jacob Kaplan-Moss 將告訴你,他們是如何用這套框架創造出榮獲獎項肯定的網站。他們用三個部分的內容,帶你了解 chicagocrime.org 網站的建立。
本書的第一個部分介紹 Django 的基礎,例如安裝與組態,能讓你建立 Django 網站所需的元件。第二個部分深入 Django 較細緻的功能,像是非 HTML 內容 (例如 RSS 饋送與 PDF),以及快取與使用者管理。第三個部分會詳細說明 Django 許多的組態選項與指令,供讀者參考。另外,本書還包含了 7 個附錄,方便讀者查找組態選項與指令。本書對高人氣的 Django 框架,提供了極致的導覽與參考資訊。
我不知道這本書會不會有中文版喔,專論 Django:網頁開發的正道是我擅自翻的名字。不過,如果有出版社有意代理這本書,我倒是很有興趣接這份工作;請與我連絡。
Update: 我大概想起來是從哪看來 10 月這個時間了,或許是 Amazon 吧。不過現在再去看,預計出版日期改成 Mar 27, 2007 了。還有半年呀,是準備和 Django 1.0 畢其功於一役嗎。
Posted by yungyuc
at
19:46,
0 comment,
0 trackback.