這幾天沒在 blog,原因是都跑到美西去練功了 :Q
然後練一練就去寫 KKcity 的 code… 目前看起來 semaphore library (用 semaphore 實做 read/write mutex) 的部分沒問題了,要把 bbsd 用到的 code 整個檢查一次 :o
PS:用 semaphore 實做 read/write mutex 的方式我是參考 Implementing a Read/Write Mutex 這篇文章的說明。
My main job in Skysoft, KKCity BBS.
這幾天沒在 blog,原因是都跑到美西去練功了 :Q
然後練一練就去寫 KKcity 的 code… 目前看起來 semaphore library (用 semaphore 實做 read/write mutex) 的部分沒問題了,要把 bbsd 用到的 code 整個檢查一次 :o
PS:用 semaphore 實做 read/write mutex 的方式我是參考 Implementing a Read/Write Mutex 這篇文章的說明。
先定義一下我所說的 Crosspost 與 Multipost。
在 Usenet 上,Crosspost 通常是指一個 Message-ID 有多個 Newsgroups,而 Multipost 是指同樣內容的東西貼到許多不同的 Newsgroups。而在 BBS 上,Crosspost 則是指「轉貼文章」的功能所產生的文章,而 Multipost 則是使用者自己一篇一篇的貼。
要注意的是,如果 BBS 上有轉信,由於 bbslink 不支援 Usenet Crosspost,所以轉出去的 article 都是 Multipost。
然後回到正題… 前幾天我在寫 KKcity 的 code 發現 BBS 的 Multipost 似乎不好處理:KKcity 是直接限制每次上站只能 post 二十篇文章,其中在分站長與板主在自己地盤上發表文章不會計算在這二十篇內。
不過這種方式來擋 Multipost 看起來就很虛,於是就要找一些替代方案,不過我想了幾天沒想到,就跑去找一群不願意具名的長輩們討論 XD
中間討論的過程在 blog 上就略過好了 (有提出來很多實在是笨到不行的方法),直接講最後的做法:五分鐘內只能在五個看板發表文章。(當然,數字可以再調整)
所以你在某個看板上面灌水是沒有問題的 (因為只有一個看板),而如果你是回文章的話也沒問題,理論上看一看文章然後再 reply 的動作應該會超過一分鐘?:p
hmmm,大概先這樣 :p
以後我會把關於 KKcity 的部分放到 KKcity 的 blog 上:KKcity 發展日誌,至於我自己這邊就放一些瘋言瘋語 :p
這幾天唸 algorithm 剛好念到幾個經典的 algorithm,其中之一就是 O(m+n) 的 KMP algorithm,突然想到 BBS 應該要大量使用這類 O(m+n) 的 algorithm 才對。因為掃一次 pattern 求出 fail function 後 (當然,為了速度要存到 array) 就可以不斷的重複使用。
在 string matching (nist.gov) 有列出不少都是 O(m+n) 的演算法。(當然,O(m*n) 的暴力法一定也會列的啦)
以 M3 (Maple3) 為例,在 ‘~’ 的串接功能,以及 ‘/’ 的中文看板板名搜尋 都應該以 KMP 改寫。於是這幾天就把 KKcity 的 str_str() 換了不少下來,在看板搜尋的部分果然馬上就有感覺。(因為全 KKcity 的看板實在太多了)
應該把 str_str_kmp() 以及 str_str_kmp_fail() 丟出來,接下來 itoc 就會處理了 :p
大家好,1/1 是頹廢的一天,因為沒有寫 blog,所以我要替自己找理由 XD
Continue reading trace BBS code 需要花大量腦力
有人問起 KKcity 跑 Postgrey 的數據是多少,我就直接提供圖片好了:
Continue reading KKcity 跑 Postgrey 的數據
果然上新聞的時候都沒什麼好新聞 :p
The LLVM Compiler Infrastructure,回台北以後拿到 kkcity 上面跑,看一下整個系統的 loading 到底是那邊產生的…
在鮮肉站看到 libmemcache 出新版,才發現這個東西拿到現在的系統上超好用… (大概是因為遇到瓶頸後才會看到什麼東西都想看看能不能用)
Continue reading memcached