MySQL 是一套眾所皆知的 Database System,今天來簡介 InnoDB 儲存引擎,在 MySQL 5.5.5 之前預設的儲存引擎是 MyISAM,但是為什麼在 5.5 之後官方要將預設儲存引擎換成 InnoDB 呢?大家都知道 InnoDB 用來交易管理非常方便,因為 InnoDB 透過 row lock,相對於 MyISAM 透過 table lock 來的有效率,也避免大量寫入的時候,造成無法讀取資料,這就是 row lock 的優勢,當然用 InnoDB 最主要的原因還有 Full-text search indexes 功能,但是別擔心 MySQL 5.6.4 之後(含此版本) InnoDB 開始支援 Full-text search 功能,另外在使用 MyISAM 時候,如果資料突然出問題,還必須使用 MySQL Binary Log 來恢復資料,如果用 InnoDB 這就沒關係了。大家還在用 MyISAM 嘛?開始升級伺服器,一起體驗 InnoDB 的功能,如果已經上線很久的網站,作者不建議轉換,因為可能會遇到很多雷。
[Read More]2012 PHPConf RESTful API Design & Implementation with CodeIgniter PHP Framework
去年 PHPConf 介紹了 CodeIgniter PHP Framework,這次講如何在 CodeIgniter 底下設計 RESTFul API,其實主要介紹兩個 CodeIgniter 套件,第一個是 RESTFul Server 前面是 RESTFul Client,一個伺服器端,後面用來測試 (Unit Test),底下是今年的 Slide,歡迎大家下載
PHP 免費雲端主機 PHPFog vs Pagoda vs AppFog
Git 版本控制的出現後,大家可以發現,以往免費的虛擬主機搭配後台 Panel,這種模式已經不再看到,取代而之的就是用 Git 來管理程式碼,而不是用 FTP 上下傳方式了。筆者認為學會 Git,是一件非常重要的事情,這樣可以嘗試不同雲端服務,,像是 PHPFog,Pagoda Box,AppFog …等。這次介紹的雲端主機服務不同於 Linode VPS,Linode 是可以拿到完整的虛擬主機權限,可以進行主機的效能優化,以及安裝合適的套件。
[Read More]PHP MVC Framework 搭配 Nginx + PHP-FPM 設定檔
Nginx 搭配 PHP-FPM 用起來效能還不錯,這次來筆記如何設定 Nginx 去除 PHP MVC Framework 討厭的 index.php 字串,不管是 Laravel 或 CodeIgniter 教學文件都是在 Apache 設定 .htaccess 來達成 Cleaner URL,Apache 最大好處支援 .htaccess,但是 Nginx 也有強大的效能,此篇紀錄如何設定 Nginx 達成 mod_rewrite 效果。
[Read More]Windows 下安裝 sshfs
遠端寫程式最方便的就是架個 FTP,並且用支援 FTP 模式的編輯器開始編輯,個人推薦 Windows 底下用 PSPad 或 Sublime,另外一種方式就是透過 sshfs 將 Linux 的硬碟 mount 到自己的系統,如果是 Ubuntu 就很簡單,可以參考我以前寫的教學,那 Windows 呢,可以透過 Google win-sshfs project,把 Dokan Library 0.6.0 跟主程式 win-sshfs 安裝好就可以用了。比較需要注意的是,如果 Server 是 FreeBSD,那需要而外設定 /etc/ssh/sshd_config
PasswordAuthentication yes
[PHP] preg_replace 效能測試 (將兩個空白字元以上取代成一個)
preg_replace 可以使用正規語法來取代字串任何字元,,今天探討取代空白字元的效能,雖然這是個不起眼的效能評估,一般人不太會這樣去改,不過這是國外 PHP Framework 有人提出來修正的,經過許多人的測試一致同意。功能就是一篇文章內如果有多餘的空白能空取代成一個,一般人都會用 \s+ 正規語法,畢竟大家都知道 \s 代表單一空白或 \r 等符號,但是國外有人提出用 {2,} 方式來取代空白。程式碼如下,大家可以測試看看。
[Read More]簡易 PHP Excel Generator Library
PHPExcel,不管你要對 Excel 做任何處理都一定辦的到,但是專案只需要 generate excel 簡易表格出來,有需要這麼強大的 PHPExcel,網路上找到一個非常簡易的 Library 那就是 php-excel 作者似乎現在沒再更新了,不過已經夠專案使用了,PHP 程式碼也非常簡單。
How to use 程式碼很簡易
$header = array('編號', '姓名', '電話');
$body = array('1', '小惡魔', '0934353289');
$xls = new Excel_XML;
$xls->addRow($header);
$xls->addRow($body);
$xls->generateXML("test");或是將資料寫成多為陣列$body = array(array('編號', '姓名', '電話'), array('1', '小惡魔', '0934353289'));
$xls = new Excel_XML;
$xls->addArray($body);
$xls->generateXML("test");結論就是殺雞焉用牛刀,就這個簡易 Library 就對了。CSS layout 好幫手 Compass scss version of normalize.css
我相信網頁程式設計師都知道,網站一開始必須先使用 CSS Rest 將所有的 browser layout 初始化,這樣可以讓以後 CSS debug 速度增加,也解決了很多跨瀏覽器的問題,昨天使用 Compass-h5bp 來自動產生 html5 template,但是發現版本並非是 html5 boilerplate 所提供的 V4.0.0 版本,專案裡面的 Normalize.css 也是舊版的,雖然有其他開發者提交 pull request,但是作者似乎還沒 merge 到主分支,只是我好奇這個 tool 除了幫忙產生 html5 boilerplate,另外多了 Compass 檔案,讓寫 Compass 前端工程師更加方便,由於 Normalize.css 還沒更新,所以我 fork 了 normalize.css 專案,並且將 v2.0.1(IE 8+, Firefox 4+, Safari 5+, Opera, Chrome) 跟 v1.0.1 (Includes legacy browser support) 整合在同一支 scss 檔案,歡迎大家取用。 如果要支援 IE6/7 的話,請將 $legacy_browser_support 設定為 true 即可。檔案可以由底下專案取得 SCSS version of normalize.css
CodeIgniter 3.0.x 支援 Native Session Driver

CodeIgniter 團隊看到大家的心聲了,在 2.0.x 版本的時候就已經有人開始發 patch 讓 CI 可以支援 Native Session,也就是透過 session_start 來存取 session,而不是本來的 cookie session,很高興 philsturgeon (Fuel Framework 作者) 今天將此功能 merge 進來 3.0.x 分支,另外 Session 也同時抽出來變成 Driver 而不是單一個 Library 了,詳細可以看此 Patch 連結,也因為這樣所以之前自己寫的 CodeIgniter-Native-Session 可以功成身退了。目前官方同時維護兩個分支,2.1.x 另外是 3.0.x,後者是專門開發新功能,有機會在慢慢介紹。
快速修正專案 PHP Coding Standards
底下是之前的投影片教導創業團隊制定 PHP 程式碼規範,讓工程師可以遵循此規則達到團隊合作
投影片內容都是現有 PHP FIG Group 所制定的 PSR-0, PSR-1, PSR-2 規則,那如何將既有專案的 Coding Style 轉換成上述標準呢,可以透過 PHP Coding Standards Fixer tool 來快速完成,此工具是由 Symfony Framework 完成。透過此工具可以快速且無痛轉換程式碼風格,舉個簡單例子:
[Read More]


