Log 版

概述

Log 版 (Pixmicat!-Log) 是最早開發的一版,是從 2005/05 以 ceming 君所釋出的 futaba.php 為基礎而修改的版本,另外參考 sogetsu 君早期所釋出的 imgboard.php 與 としあき@しおから 網站的 siokara.php 之功能,架構上與舊有的 futaba.php 差異不大,不過功能上強化不少,經過數十次的修改成為現在所看到的版本。

Log 版已經停止維護。最後的維護版本於 2009/05/21,Pixmicat! 四週年紀念日釋出,正式畫下句點。

名稱

經過數次演進,名稱也有更動。

  1. GazouBBS雙葉改 scribe FIXED (自 ceming 君釋出的版本分化而來)
  2. Pixmicat!-Log (2006 年正式命名)

歷史

因為 2005/05 貼圖版 2cha 的關閉,ceming 君利用 ふたば☆ちゃんねる 釋出的 futaba.php 作修改架了一個 2cha 避難所,也將這份原始碼公開在貼圖版上。由於當時的版本會吃字 ( , 以後的字會消失),版眾提出了解決方案;也因為 2cha 當時使用的版本是 sogetsu 君所修改的版本,與 ふたば☆ちゃんねる 原有版本已有差異,由攤開君提出了程式修改的構想,另外 kirur 君也提出在祭典模式時隱藏所有回應、過長字串不會換行及時區的修正。最後由 scribe 將這些構想全部實裝至 futaba.php 上,並提出了程式碼的修改補強計畫。

這個計畫主要的目標是將翻譯文字口語化、修正問題和強化功能,在 kirur 、 NTj 、 攤開 和 Hikaru 等人的建議與協助下成功了,命名為「GazouBBS雙葉改 scribe FIXED」。

RT 也根據祭典環境分支了此一版本,詳細請參見 祭典版 條目。

在 2006 年時重新命名為「Pixmicat!」,爾後成立了 Pixmicat! 貼圖版開發專案,由 Pixmicat! Development Team 共同維護。

由於 PIO 版開發順利的緣故,及 PIO 版的出現就是為了取代維護不便的 Log/MySQL 版本,團隊決定於 2009/05/21 Pixmicat! 四週年紀念日正式停止 Log/MySQL 版的維護,釋出最後一版 "四週年紀念版"。

架構

所有的討論文章都藉由特定格式的純文字檔儲存。主要從 GazouBBS 的單一 Log 設計,變成 futaba.php 的雙 Log 設計 (tree.log, img.log),最後加上了 LUT 查找表成為雙 Log + LUT索引 (lutcache.dat) 的設計。

投稿文字記錄檔 (img.log)

由 レッツPHP! 的 GazouBBS 所確立,主要將文章各欄位以逗號 (,) 結合儲存成一行資料,而將欄位中出現的逗號取代為 ,1,方便日後的處理。而後由 ふたば☆ちゃんねる 所擴充,藉以儲存更多欄位內容。

以下是投稿文字紀錄檔的格式及範例:

編號,時間 (ID),名稱,E-Mail,標題,內文,狀態旗標,主機位置,編碼後文章密碼,附加圖檔類型,預覽圖寬,預覽圖長,Unix時間撮記,附加圖檔MD5,
5,06/10/20(五)21:44 ID:wn/0nbKo,無名氏,sage,測試標題,測試文章內容,,localhost,00db3363,,,,1161351890483,,
4,06/10/14(六)11:06 ID:ZZ7Dww8A,無名氏,,無標題,w,,localhost,91660f3d,.png,125,94,1160795193031,875b760f312fc2555eac43a7571e4a85,

樹狀結構記錄檔 (tree.log)

這是 futaba.php 加上的新檔案,主要將討論串的結構獨立出來成為一個樹狀索引表,只要讀取此索引便可以清楚知道討論串的架構、先後次序和回應編號,而不必讀取完整個投稿文字紀錄檔。

每一行代表一個討論串,儲存其討論串所有文章編號,以逗號隔開。

以下是樹狀結構記錄檔的格式及範例:

討論串首篇,討論串回應, ... ,討論串回應
10,11,12,13,14
5,6,7,8
3,4,9
2
1

逆轉換查找對應表 (lutcache.dat)

此一對應表 (被稱為LUT查找表, Look up table) 是由 Pixmicat!-Log 所加上的新檔案,嚴格來說它只是一個快取,而這個快取主要儲存的是投稿文字紀錄檔每一個文章編號對應的檔案行數,每一行一個編號。此快取在每次投稿文字紀錄檔更動時重新生成。

傳統的 futaba.php 會在每次解析投稿文字記錄檔成為文章陣列時抓出每一行的第一個欄位 (也就是文章編號) 存成暫存陣列,而這個結構不會常常更動 (事實上讀取比寫入更頻繁),將此一暫存陣列存成檔案可以在下次需要時直接讀取恢復此一暫存陣列。這對版面已有數百筆的文章而每次都要重新解析來說,是比較好的方法。

由上面的投稿文字記錄檔範例來說,此一範例是這樣的:

5
4

藉由此表我們可以知道 No.4 文章在投稿文字記錄檔的第二行,於是我們就可以依這個索引直接抓出已解析成文章陣列的特定資料 (例如這個範例是 Array[1]2)。

版本優缺點

優點

  1. 架設容易。伺服器不需要特別支援什麼,只利用PHP內建的檔案讀寫函式
  2. 速度快。少量資料筆數的情況下從解析到印出不需要太多時間
  3. 備份容易。複製檔案 img.log 和 tree.log 即可

缺點

  1. 缺乏保護措施,容易被他人取得記錄檔案
  2. 伺服器環境的差異,檔案鎖定的機制可能有問題,造成競賽狀況 (Race condition) 的發生
  3. 因為上述原因,有寫壞記錄檔案的可能
  4. 資料筆數一多很容易造成效能低落的情形
  5. tree.log 的依賴性太高,如果樹狀紀錄寫壞了討論串結構無法重新算回,空有資料也沒用

版本演進

4th.Anniversary (v090521)
集結近期的安全性及錯誤修正的最後一版
3rd.Release.8 (v080903)
安全性修正
3rd.Release.7 (v080224)
修正程式部分判斷及相容性錯誤
3rd.Release.6 (v071019)
修正引用瀏覽系統問題
3rd.Release.6 (v071014)
修正 XSS 漏洞、GD BMP 支援、透明代理 IP 問題。增加程式執行效率及封鎖名單 CIDR 表示法
3rd.Release.5 (v070617)
修正名稱問題。新增預設值設定。新增綜合性 IP/Hostname/DNSBL 封鎖機能
3rd.Release.4 (v070106)
修正 Trip 問題。新增強制砍名功能。
3rd.Release.3 (v061027)
修正 Cookie 問題。新增對 Spam 用欄位陷阱。
3rd.Release (v060924)
修正管理模式圖檔連結。新增[無貼圖]勾選欄防止文字廣告。
3rd.Release (v060814)
修正引用系統在同頁的連結方式。新增 BMP 生成預覽圖支援。
2nd.Release (v060513)
修正截字函式、管理員 Cap 權限。新增 DNSBL 黑名單、引用瀏覽系統、逆轉換查找表快取、Big5 櫻花日文檢查功能。
v060319 (1st.Release)
首次 OSS 化後釋出版。新增搜尋功能、PTE 樣版函式庫、內容動態 Gzip 壓縮傳輸。

參見

除非特別註明,本頁內容採用以下授權方式: Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.