據說裡面是 Django,不過註冊有人數限制,現在只好先 K API 過過癮...

Posted by yungyuc at 19:24, 5 comments, 0 trackback.

狂放 adsense :p

頂上放一個,右邊放一個,下面再放一個 (喔喔,這是原來就有的)。

以上是今天改本站程式的成果。把右邊的 sidebox 統統作成了元件,以後就可以從管理介面裡直接開關調整了。順手就來加些邪惡的資訊上去。把 adsense 的東西全塗黑,倒還不難看吧。

Posted by yungyuc at 10:44, 2 comments, 0 trackback.

newforms 是今年 check-in Django subversion repository 的程式庫。看名字就知道,它將會取代舊有的 forms 程式庫。

如今,Django 內有兩組處理 HTML 表單的程式庫,一為 newforms、二為 oldforms。何者為佳?必為 newforms 也。本文簡單描述一下 newforms 程式庫的使用概念。你不可能看完就會寫 newforms 程式,但會發現它真的很簡單!

» continue reading
Posted by yungyuc at 11:33, 0 comment, 0 trackback.

Steno 就是 yobot。今天我把 Feedjack 掛進 Steno,讓 Steno 可以從 Feedjack 的資料庫裡挖 feed 出來,貼到 IRC 頻道上去。

然後,用 twisted.internet.task.LoopingCall 來定時檢查 Feedjack 資料庫。完成收工,謝謝觀賞。

最近各位有空的話,請儘量狂操 yobot。丟 URL 給她抓、和她聊天,或是拼命寫 Blog 給她 report to channel (Planet@Python.tw 諸君,加油!)

Posted by yungyuc at 23:25, 0 comment, 0 trackback.

把本站的 fastcgi driving script 改成:

#!/your/path/to/python

import sys, os
from datetime import datetime
import traceback

try:
    sys.path.insert(0,'/your/path/to/python/package')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings'
    from django.core.servers.fastcgi import runfastcgi
    runfastcgi(method="prefork", daemonize="false",
            maxrequests=100,
            maxspare=2, minspare=1, maxchildren=5)
except Exception, e:
    logpath = "/your/path/to/traceback.log"
    if os.path.isfile(logpath):
        f = open(logpath, 'a')
    else:
        f = open(logpath, 'w')
    f.write("logged at %s :\n"%datetime.now())
    traceback.print_exc(file=f)
    f.write("log end.\n\n")
    f.close()

# vim: set ft=python ai et nu sw=4 ts=4 tw=79:

看看會不會也有幫助。如果 maxrequests=100 有用的話,crontab 就可以丟掉了。

Posted by yungyuc at 17:53, 0 comment, 0 trackback.
*/20 * * * * killall bad.fcgi

10 隻小孩還嫌少?只給你二十分鐘好活!

近來訪客可能經常看到本站的 500 錯誤畫面,這都是我寫的程式不乖。本人已經縮短 application server 的生命,如果還看到 500,還請向本人舉報。謝謝大家。

Posted by yungyuc at 14:39, 0 comment, 0 trackback.

本站舉家遷移到 site5。為了不要因為吃太多資源被趕出家門,得好好改進程式了。

Posted by yungyuc at 17:18, 0 comment, 0 trackback.
我想不出題目,用關鍵字當題目好了

組態 FastCGI 是好幾年前的事了。前一陣子為了測試某個 hosting 的 fastcgi 功能,再花了一番功夫研究 apache 和 fastcgi 的配合,算是又複習了回來。不過,今天要再作一次遷移工作時,程序還是忘記了 @_@

我決定把步驟寫下來,之後還要用的呢。

» continue reading
Posted by yungyuc at 21:32, 0 comment, 0 trackback.

django.contrib.admin 是 Django 框架裡實作 CRUD 的重要元件。這個 admin 是一個獨立的 Django app,它允許對所有 Django 所支援的資料模型進行操作。因為它的功能強大,所以許多人希望為它延伸功能,好和自己寫的 app 結合在一起,相得益彰;最好是能夠無縫結合,那就太完美了。

卡難啦!Django admin CRUD 樣樣都行,還加上認證和權限管理,真要作到無縫結合,大概也會把 admin 的程式碼全翻過一遍了;這樣一搞,說不定也不必花多少力氣就能改出自己版本的 admin。而且 admin 的設計主要是針對 webmaster/superuser,雖然配有權限系統,但是該權限系統乃是 table-specific 而非 row-specific。也就是說,像本站這種 multi-user 系統,得要另外考慮權限的實作,不能使用內建的系統,使得無法將 admin 介面提供給終端使用者來使用。

其實稍微複雜一點的網頁程式系統大概就會是這種狀況。Django admin 還是很不錯的工具,但程式設計員不能在後台系統上偷懶。尤其現在網頁程式的設計趨勢是靠 ajax 把部分後台的功能作到前台,想要全靠 admin 提供後台管理功能也是有點不太實際的。

limodou[Django动态]newforms Admin分支开始了 也可以看到類似的想法。newforms 是 Django 邁向 1.0 的重要元件之一,以 newforms 重構 admin 或許是必然的一個步驟。然而,我想 admin 要從 webmaster 管理工具,改變成終端使用者工具的機會應該不大。畢竟即使在 newforms admin 的 "Would be nice, and we're going to try our hardest to get this in" goals 裡,至多也只有 "Give developers extra hooks" 這一項。

如果 Django 要有高度自訂的後台管理程式庫,可能不會以舊 admin 或 newforms admin 的形式出現吧。

Posted by yungyuc at 22:04, 0 comment, 0 trackback.

Trackback SPAM 是很討厭的東西;它不像 comment SPAM 可以用 captcha 或帳號/密碼來擋。Trackback 都是由 blog 軟體系統發出來的資料,所以要擋可以,必須考慮到這中間缺乏使用者的互動,否則就會連正常的 trackback 也擋掉。

感謝 Mark許多指教,讓我知道處理 trackback SPAM 常用的幾種方法:

  1. 不良的行為。
  2. DNSBL.
  3. 內容驗證。

我處理 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.
Change to page (10 entries in each page): 1 2 3 4
© hover year to navigate month: powered by django