CakePHP 入門、安裝 及 其它設定和準備工作

CakePHP 總算最近有花時間好好玩一下, 來做個一連串的筆記吧~

首先要使用 CakePHP 前, 第一步先了解何謂 MVC(Model-view-controller):

  • Model: 檢查資料型態/驗證, 與 DB 溝通(儲存/查詢) 等.
  • Controller: 程式的流程, 商業邏輯等. 是 Model 與 View 的中間層
  • View: 頁面瀏覽, 使用者看到的頁面就是這邊.

再來就是下載 CakePHP 來安裝看看囉~

註: 此篇為 CakePHP 1.1.x 版, 1.2.x 以上的, 可能要做些微調整.

閱讀全文〈CakePHP 入門、安裝 及 其它設定和準備工作〉

PHP: 移除"同時寫入" MySQL 資料的程式(資料重覆)

規畫 DB 時沒注意到, 有一個欄位是這種狀況: 寫入前檢查是否有此 URL, 有的話, 就不再寫入, 這個現在一看就知道, 該加 UNIQUE KEY, 但是當初規劃時並沒注意到此事(或者是加的時後不能加), 然後自己測, 或者網站量小的時後是都不會有問題的, 但是會出問題的狀況, 會發生在同時寫入的時後, 同時寫入兩筆, 或者寫入第二筆時, 第一筆的資料臨時沒查到(系統太忙 或者 第一筆還沒寫完), 就會有兩筆以上的重覆資料.

這種狀況要把後來寫的那個 ID 拉出來, 砍掉後面的那個 ID(可能會有 2筆以上), 所以下述的程式就是把這些 ID 拉出來, 然後寫成 SQL 檔, 再手動執行砍掉的動作, 砍完後, 再加上 UNIQUE KEY 的屬性.

閱讀全文〈PHP: 移除"同時寫入" MySQL 資料的程式(資料重覆)〉

PHP: 將 CSS 檔 做排版的程式(inline, formatter)

有某人說要將 css selector "{}" 包住的值, 依照字母排列順序的排列(註), 所以先寫了 css_formatter.php, 後來發現某人寫程式的時後, 有時後會做其另一類的排版方式, 所以就再寫一個 css_inline.php(將格式先變成 一個 selector {} 一行), 這樣子(inline)的格式才能給 css_formatter.php 正常吃下來, 並做排版的動作.

註: 依照字母順序來寫 css, 維護起來比較容易, 看起來也蠻漂亮的.(PS: IE hack 要特別處理一下, *, _ 要排在最後面, 所以順序會是 Global -> IE -> IE6)

閱讀全文〈PHP: 將 CSS 檔 做排版的程式(inline, formatter)〉

寫 JavaScript 需要的 VIM Syntax 和 Plugin 檔

預設 vim 來寫 JavaScript, 會發現到 Plugin 很糟, 主要是縮排(indent), 根本跟沒縮沒什麼兩樣, 要看程式碼真苦, 所以就去找了一下, 加了一個 Plugin 後, 整個程式看起來舒服多了, 縮排做的好, 對讀懂程式就已經成功一半了~ 🙂

閱讀全文〈寫 JavaScript 需要的 VIM Syntax 和 Plugin 檔〉

PHP: 英文的數字值 轉換成 阿拉伯數字的值 程式

這星期臨時需要一個將英文的數字值, 轉換成 阿拉伯數字的程式, 發現怎麼找都是 數字 => 英文, 就是找不到 英文 => 數字.(需求就是同 English-Number Translator 這篇).

大致要做的就是如下的例子:

six => 6
negative seven hundred twenty nine => -729
one million one hundred one => 1000101

閱讀全文〈PHP: 英文的數字值 轉換成 阿拉伯數字的值 程式〉

PHP5 物件相互引用, 造成 Memory Leak

PHP5 的 物件A 裡面再 new 物件B, 然後 unset(物件A), 會發現 Memory 還是存在(Memory Leak) 的狀況, 然後如果程式繼續不斷的遞迴跑下去, 很快記憶體就會使用完, 然後就會出現 PHP Fatal error:  Allowed memory size of .. 等的錯誤訊息.

可詳見: Bug #33595 recursive references leak memory

閱讀全文〈PHP5 物件相互引用, 造成 Memory Leak〉