香蕉架

今天在彩遊館買的,以後就可以「摘」香蕉來吃啦!

看不懂嗎?唔... 這個架子上面可以用來掛香蕉,這樣便不必擔心香蕉被壓黑了。我喜歡吃香蕉,不過我不喜歡大部分人喜歡的芝麻蕉,反而愛吃青中帶黃,剛剛開始要熟成的香蕉。如果香蕉被壓得黑一塊黃一塊,那我會很難過。另外,這個新武器還可以讓香蕉大大方方地佔據餐桌中央的位置:你永遠看得到它,不會放到變成芝麻蕉!

推薦給所有香蕉的愛好者。

Posted by yungyuc at 21:52, 3 comments, 0 trackback.

自從發現 vim 支援檔案中的 metadata 之後,我有了一個煩惱。我喜歡給程式碼檔案顯示行號,而 vim 編的行號會佔去五個 column,減少了視窗的可視行寬。為此,常常需要手動調整一下視窗大小。因為顯示行號的動作不適合寫死在 .gvimrc 裡,所以都是手動操作 (:set nu),這樣順便拉一下視窗大小,還不會覺得很麻煩。

一旦發現可以把 :set nu 寫到檔案裡變成 metadata 給 vim 自動在讀檔的時候執行後,就沒有「順便」拉一下視窗大小這件事了。最近又換了片新的 LCD,螢幕的可視面積大增,提醒了自已該改改 vim 預設的行列尺寸才對。

這功能很基本,奇怪我以前怎麼沒有想到要改它。請到 ~/.gvimrc 裡加上:

set columns=120
set lines=40

(第二行之前誤植為 set rows=40,謝謝 Spooky 指正)。

Posted by yungyuc at 23:42, 4 comments, 0 trackback.
繼續努力
tag on Python

為了把原設為 irclog/$tag/$0/%Y/$0.%Y%m%d.log 格式的 irssi log 改成 irclog/$tag/$0/%Y/$0.%Y%m.log (每月一個檔;之前每天放一個檔,感覺資料太難找了),寫了一個小程式把舊的 log 接合起來。

寫的時間稍微有點久,程式看起來也有點累贅;有沒有辦法在二三十行內解決呢?

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

del.icio.us 的 private bookmark 公開了。目前是 experimental function。這個功能沒有拖太久,十分令人高興。

今天另一件讓人高興的就是在大電視上看到了宇宙のステルヴィア,還剛好是我最喜歡的第 10 話。しぽん開出藍色巨大機器人解救了地球的危機,這一段是最高潮的劇情,而且還引發了町田往後的報復陰謀。好棒啊。

真幸福,感謝上帝。

Posted by yungyuc at 23:16, 0 comment, 0 trackback.
tag on Python

PingFreenode 上開了一個 irc channel "#pot", a.k.a. Python.Org.Tw。希望有更多人加入這個園地。

如果你使用 chatzilla (firefox/mozilla),請在網址列輸入 irc://chat.freenode.net/#pot,如果使用 irssi,可以用

/channel add -auto #pot Freenode

把 #pot/Freenode 加到 auto join channel 列表裡 (每次啟動 irssi 就會自動加入)。

我想 #pot 應該是用 UTF-8 編碼。如果你的 irssi console 是 Big5,那我之前寫的筆記或許有參考價值。

Posted by yungyuc at 09:37, 0 comment, 0 trackback.
實際測試結果
tag on Django

對 Django 的 site-wide cache middleware 進行測試。

本站以 FastCGI 進行佈署,資料庫後端是 sqlite3。在使用 dummy:/// cache middleware (即不進行快取) 的情況下,大約是 2 hits/sec,加上 locmem:/// 快取後,約可達 200 hits/sec。

比較有趣的是,看來我的 home router 有一點 DOS 防止功能 :-) 直接對具有外部域名 blog.seety.org 進行測試的結果是 1x~20 hits/sec,遠小於佈署於內部域名上的效能 (兩者均使用同一個 apache2,以 vhost 分隔)。內外域名只差在有沒有過 home router,我猜那個小盒子大概在中間動了一點手腳吧。

順便也對 Django 內附的伺服器作了測試,大約是 500 hits/sec。

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

我的評註寫在最下面,如果你懶得看完全文,請一定要去看一下最末的結論。

Django 的 magic-removal branch 將在 0.92 裡現身,發行的日子應該不遠了。magic-removal 聽說會有非常巨大的改變,巨大到了我不敢去看有多巨大的程度。好不容易把資料從 COREBlog 轉出來了,如果還要再重寫系統,那可真恐怖。

幸好,實際看了一下說明以後,發現 magic-removal 沒有那麼可怕。除了會把一些功能放到更合理的位置之外,最大的改變就是把原本神奇的 ORM model "module" 正本清源成類別 (class),其它許多改變,其實都和 ORM 的這一點改變有關。

原本的 ORM model module (這真繞口) 是一個非常神奇的東西,我曾經嘗試進行說明,不過真難。module (模組) 在 Python 裡也是一種物件,並且可以直接在程式碼裡面製造出來。這種作法非常不正常,因為一般認知的 Python 模組就是一個 .py 檔,但 Django 裡面自行製造的 ORM model module 卻不存在於磁碟上!

考慮一個 Django app 的 model:

from django.core import meta

class Sample( meta.Model ):
  field1 = meta.CharField( "field1", maxlength=32 )
  field2 = meta.CharField( "field2", maxlength=32 )

假設取名為 app/models/somemodel.py (app 是 Django app 的名稱),那麼我們在 Django 程式中要使用這個 ORM model 的時候,並不是用:

from app.models.somemodel import Sample

obj = Sample( field1="f1", field2="f2" )
obj.save()

而要用:

from django.models.somemodel import samples

obj = samples.Sample( field1="f1", field2="f2" )
obj.save()

看!在目前的 Django (0.91) 中使用 ORM 的語法,我們所預料中的 Sample, somemodel 全都出現在奇妙的地方,還多了一個完全沒有定義過的 samples (這就是 Django 為我們製造出來的 ORM model module)!真是夠「神奇」了,或者說夠鳥了吧。

不過 magic-removal 會拯救世界。在 magic-removal 中原本放在 app/models/somemodel.py 的檔案,現在要改放到比較合理的 app/models.py 裡面去。內容還是差不多:

from django.db import models

class Sample( models.Model ):
  field1 = models.CharField( "field1", maxlength=32 )
  field2 = models.CharField( "field2", maxlength=32 )

其實就是把 django.core.meta 改成 django.db.models。使用 ORM 的時候變成:

from app.models import Sample

obj = Sample( field1="f1", field2="f2" )
obj.save()

變得直覺了。

各位,如果要來玩 Django 的話,直接 check out magic-removal branch,不要用 0.91 release 了。依我的感覺,舊的語法難看又古怪;magic-removal 正在往對的方向走,只是 0.91 與 0.92 的差距會讓人覺得有點可怕。然而,0.92 再沒多久就要發行,我想現在是放棄 0.91 的時候了。

Posted by yungyuc at 20:46, 0 comment, 0 trackback.

Head First Java中文版。連琛哥都出來跑龍套啦!

Posted by yungyuc at 21:01, 0 comment, 0 trackback.
還是不太好看

把淺色底換成深色底;背景前景深淺互調。當然另外還改了不少邏輯;這就叫玩物喪志。

Posted by yungyuc at 17:39, 3 comments, 0 trackback.

用 COREBlog 系統的舊 Everyday Work 還在,不過改名放到別的位置去了

這兩天發起狠來,硬把 Django-based blog 程式給作完了。這個程式現在只測過撰寫 comment、收發 trackback/ping,管理介面也非常地簡單。不過反正 COREBlog1 使用 ZMI,管理介面也不怎麼樣,這方面倒也不算退步很多 :p

另外,把 Category 換成 Tag 也是放在心裡好久的想法,現在終於在這裡實現。利用 Django 提供的 syndication app,為每一個 tag 製作 RSS 也真的非常簡單。當然,其它現成的 Blog 軟體早就具備這個功能,但它們都不能用 reStructuredText 來寫 entry 呀!

接下來慢慢看能把這個程式完整化到什麼程度吧。

Posted by yungyuc at 22:43, 1 comments, 0 trackback.
Change to page (10 entries in each page): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
© hover year to navigate month: powered by django