2007/02/25

Pixmicat!2 Working Draft

那個 W3C 都可以玩這種把戲,我也來一個 XD
以下是我心目中(?)的 下一代 Pixmicat!,也是正式拋棄舊有 futaba.php 的全新設計。
(功能、版面樣式不敢說拋棄 XD)

簡述:

Pixmicat!2 (暫定,但目前經驗談事前說暫定的,最後都會懶的改而用這個名字)

取消原有 futaba.php 傳承的程式架構 (巨核式,什麼功能都纜在身上),而另以新架構開發的新程式,一方面擺脫目前日漸難以維護的結構;一方面就可以不為 GazouBBS/futaba 的衍生著作程式,只能說是參考寫作,藉此有機會可以改用 GPLv2。

程式以 Pixmicat!-PIO 版為基礎,PIO 版時做了兩套函式庫 PIO 和 FileIO 個別管理文章和圖片。Pixmicat!2 沿用我們自己撰寫的函式庫以支援多樣化的資料後端,而一併導入 AJAX 及 REST 的設計。AJAX 可以在不重新整理頁面的情況下更新頁面資料;REST 則是一種架構風格。打算將伺服器的負擔轉移到用戶端上,例如排版方面就交給瀏覽器負責。

詳細開發記事:

Pixmicat!2 Development Frame:

  • XHTML 1.0 Transitional 化 (1.1 太嚴格不合用)
  • 從原本的 PHP 小程式變成 Web Application 的概念
  • 瀏覽版面導入 AJAX, JSON,文章使用動態要求並輸出,當然可以快取
  • JavaScript + CSS + XHTML + 圖片資源
  • 上傳使用隱藏 iframe 處理
  • 將各個架構以資料夾分明便於分辨及維護
  • 本體直接支援多設定檔、多版面設定
  • 頁面從 1 開始,不再從 0
  • 導入 REST (Representational State Transfer) 架構風格
  • 活用 $_SERVER['PATH_INFO'], $_SERVER['HTTP_METHOD'], $_SERVER['HTTP_ACCEPT']
    和 mod_rewrite。記住沒人強制一定要 100% RESTful,只要開發、維護及使用上便利就好
  • 將各動作控制區塊分開,取代以往的巨型框架。需要時再取用
  • 網址的意義:
    pixmicat.php/設定檔名稱/動作控制區塊/參數
  • 研討萬一設定檔只有一個的時候,要不要省略?不過省略之後又要另外判斷,太麻煩啦
    打成 pixmicat.php/0/show/1 不也挺不錯的? (設定檔取名為 0)
  • PTE Client Version 到底是什麼玩意?簡單說就是把回傳的 JSON 給排好這樣,
    將以前的 lib_pixmicat.tpl 讀取後把特定標籤取代成資料再丟入某<div>內
  • 頁面快取
    如同舊有 Pixmicat!,快取的部分是一頁的份量,討論串的回應模式並沒有去快取,
    目前仍僅對一頁量作快取,格式為 JSON。其內容為當頁所有討論串及回應(僅顯示部分)
    取得後排版並印出
  • 動態取得回應
    利用 XMLHttpRequest GET pixmicat.php/comic/threads/486/2 (仍為 JSON) 再排版印出
  • 新增文章 / 回應
    使用傳統 Form,不過 target 為事先安排好的 iframe (這也是換用 XHTML 1.0 Transitional 的原因)
    然後正常程序送出表單,不過前端這時看起來是沒什麼動作的。成功之後 iframe 會印出回傳資料,
    在這邊可以印 <script>parent.OK();</script> 一類提醒送出成功後的方法
  • 後端管理
    採用 Session 儲存登入認證。有了認證後即具有管理權限。
    不管到哪一頁,只要能確認身分,都可以實施管理。本來想把前後端整合,但是顧及隱密資料及管理方便,
    還是另設後端快速檢視資料並管理較妥當
  • 歷史問題
    雖然能以 iframe + #Hash 方式來模擬,但換個方式想如果導覽功能做的好,
    使使用者能順其自然使用導覽功能,就能夠避免掉這個問題

13 則留言:

  1. 補充一下。

    Action Controller 因為可以自由替換,故 PMC2 不一定要以 AJAX 為單一顯示方式。
    換言之,也可以像現在一樣採用靜態頁面方式。
    將嘗試兩種都能使用的新框架。

    回覆刪除
  2. 把這當成開發雜記吧,之前想建個開發日誌的 Blog,不過卻沒有成功。

    今日測試 define vs array() 哪個當作設定檔較好,
    實驗分別建立連續 100 個設定項目,後者速度滿意。
    前者由於呼叫系統的函數一類的故稍慢,後者屬於語法所以速度極快。

    然後針對 Action Controller 又再改了一下,主要函式庫也小改,
    大體上的框架已經有樣子出來了,離能動還有很大的進步空間。

    回覆刪除
  3. - config 結構再改變
    - Library 引入部分也開始修改 (PIO, FileIO, IFS) 使能順利引入,進行中,完成就可以開始初始化了

    回覆刪除
  4. - IFS (索引檔案系統) 讓需要的 FileIO 呼叫即可,一般情形不使用。
    - PHPDoc 式註解
    - PIO, FileIO, IFS 適應性修正

    試了一下初始化還算成功,接下來可以寫動作控制器了。
    不過離 alpha 版還有非常長的路啊...

    回覆刪除
  5. 實裝 Gzip 即時壓縮及開始製作主樣版,終於有雛型中的雛型了。

    回覆刪除
  6. 決議先開發 AJAX 顯示版本,畢竟這是初衷。等框架完成後再行開發非 AJAX 版也可以。

    目前測試完成 action/status (系統資訊) 顯示,以 XMLHttpRequest 取得 action/status 傳回的 JSON 並分析,再利用定義好的模板,取代變數,顯示 <div>。

    回覆刪除
  7. 把 pHistory 實裝進 PMC2 的框架了,目前看來一切正常。

    回覆刪除
  8. 慢慢刻真的很累,莫怪乎 Ruby on Rails 之類的工具或 Framework 這麼受歡迎。

    今日把 posts 完成一半,縮圖方便還未加入,但已確定可以利用 PIO 存資料。
    另外 show 也做了輸出 JSON 快取的動作,並在前端試讀取成功。
    換頁列也實裝了,再來就是生成快取的部分需要做了。

    回覆刪除
  9. 終於把貼文搞定了,不過回應還沒完成。然後討論串架構的快取 JSON 格式也大致底定,試輸出讀取成功,換頁也正常。

    接下來要做的就是 JSON 排版 (PTE Client)、回應模式、讀取回應(並分頁)。然後記得 FileIO 的目前圖檔使用量大小還沒實作,預定直接掃描目錄下檔案統計大小。如果是遠端模式讀取 IFS 記錄即可。

    回覆刪除
  10. PTE Client 開發中,主要就是將樣版碼跟 JSON 結合。
    目前顯示尚有部分標籤未取代,接下來需要努力讓圖檔能夠出現。
    回應模式 (分頁顯示) 也將開始動工。

    回覆刪除
  11. PTE Client 到達可用階段,終於有點雛型出現了,不錯不錯。
    接著就是回應模式的動工吧。

    回覆刪除
  12. 今日更新 PIO, FileIO,使 PMC 和 PMC2 共用同一組函式庫。
    這樣更新兩邊都可受益,還不錯。

    簡單說就是把 PIO, FileIO 與核心盡量抽離使其具有獨立性。
    (需要的環境常數再利用陣列傳入)

    回覆刪除
  13. 今日修改輸出 JSON 結構,屆時可以與舊有的 PMC Module 結合動態修改標籤。

    雖然 PMC2 脫離了舊有包裹,但有個名為「相容性」的包裹正逐漸逼近...

    回覆刪除