跳到主要內容

發表文章

目前顯示的是有「PHP」標籤的文章

AWS PHP SDK for New Region eu-central-1

其實在 AWS 對外正式 announce 這個 region 之前, 我們已經有先接到了通知,並且要事先準備好 patch 來支援這個新的 region. 因為覺得很有趣,所以在看到 AWS 正式對外的 announce 後 發現裡面提到新的 region 只支援 "v4" 的 signature, 而我們用的 AWS PHP SDK 版本似乎過舊,所以認證都會失敗... 當晚馬上在測試環境更換2.7.1後,認證過了 可是卻出現 invalid endpoint 之類的錯誤訊息. 原來在 2.7.2 之前, 所有的 endpoint 都是內建在 SDK 的 resource file 裡面 所以即使 AWS 對外 announce 了新的 endpoint , 還是需要上 patch 幫 SDK 加新的 endpoint 隔天睡醒後,同事看到有更新的 2.7.2  而且發現 不需要手動 patch 加 endpoint 就可以 access 新的 eu-central-1 region 看了一下發現原來 2.7.2  以後 SDK 會自動去抓 AWS 最新的 Region & Edpoint List 所以以後有新的 region announce 的話, 就不用再去 patch AWS PHP SDK 啦~

PHP-CS-Fixer

我一直覺得我有個強迫症 要開始修 bug 或者 trace code  之前都要先把  code reindent 一遍... 用了 php-cs-fixer 去做 PSR2 的 auto indent 後, 發現 comma後的空白和 function call 參數的 comma 的分隔不會被修正.. 於是一邊看code又會一邊手賤的加 space... 加到後來就會從從頭到尾加一遍...然後忘記看 code 了..lol... 覺得這樣下去不行,於是送了生平的第一個給 open source project 的 pull request... 希望可以被 merge ...lol... Fix Spaces in method arguments and array values #119

CakePHP CakeFest 2014 Slides Share

CakeFest 2014 一些我覺得不錯的 Slide Share... MySQL Scaling Without Losing Your SAnity 遇到 scaling issue 的時候, 可以參考裡面提到比較常見的方式.. CakePHP and AJAX AJAX 這個蠻實用的...有提到怎麼在 cakephp 裡面測試 ajax Testing your app with Selenium on Travis CI 這個也挺有趣的...Travis CI + CakePHP + Selenium Effective debugging 這應該已經一次上完了整堂的前端/後端和腦端的 debug 課程.... Advanced Querying with CakePHP 3 CakePPH 3 的 ORM, query 更直覺了! Why You Can't Test   Keep Updating...

MAMP with macports

Install macports  Howto MAMP with php54 After that, composer still will using system default php 5.3 So, we have use port swith to php54 sudo port select php --set php54 Then, composer can using the correct php54 with required extensions..

PHP CodeSniffer with Custom Rule

程式碼的靜態分析是 team work 或者 CI 中很重要的一個環節 而靜態分析,其中的一項功能 coding standard 和 coding style的分析更是可以保護你的眼睛 squizlabs/php_codesniffer 內建有許多 ruleset, 像是 PHPCS, PSR2, PSR1, Squiz, PEAR, Zend etc... 如果你仔細去看每個 Standards 目錄下的 ruleset.xml 和 Sniffs 目錄大概就可以看出 其實他們是互相 include, 然後在自己的 Sniffs 裡做 Overide 或者是定義自己的新規則 例如 PSR2 的 ruleset.xml 裡面就宣告了 reference rule 是 PSR1 而 PSR1 又 include 了像是 Squiz 之類的 如果因為某些歷史/framework 的因素, 你希望盡可能地採用 PSR2, 但是又希望 exclude 掉其中的某一部分, 例如 PSR0  這時候你可以在 Standards 目錄下建立自己客製化的 ruleset, 目錄裡面只要放 ruleset.xml  內容是 reference PSR2, 再另外加上你想 exclude 掉的 rule. 但是你要怎麼知道有那些 rule 可以 exclude 呢? 以你想套用大部分的 PSR2 ruleset, 但是又想 exclude 掉 PSR 0 為例. 我們知道 PSR2 引用了 PSR1, 而 PSR1 裡面又包含了 PSR0 所以 Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php 裡面會檢查 class 有沒有正確宣告 namespace 想 Exclude 掉這個 rule 的話, 我們可以從目錄拆解出 rule name: "PSR1.Classes.ClassDeclaration" 大概就是這樣啦~ 透過客製化自己的 ruleset, 然後再設定 sublime linter 裡的 code sniffer. 就可以馬上讓你的知道, 自己寫的 code 有沒有符合規則. ...

Redeclare Error with APC

如果 apc.enable_cli 因為"某些因素"有開啟的話 那麼有時候一些 command line 會遇到類似下面的 error "Cannot redeclare class xxxxx" 這時候有兩種方式: 1. 如果是針對 .phar 的話, 可以用 apc.filters="^phar://" 2. 如果是 cron job 或者暫時性的話: php -d apc.enabled=0 /path/to/cron_job.php 比較特別的是 phar 檔不只是 cli 容易遇到 redeclare error,  像是 aws 的 php sdk 最好還是用 composer 的方式安裝吧. See Also: http://stackoverflow.com/questions/4575341/php-with-apc-fatal-errors-cannot-redeclare-class http://docs.aws.amazon.com/aws-sdk-php/guide/latest/faq.html#why-am-i-seeing-a-cannot-redeclare-class-error

CakePHP Applications

12-factor-cakePHP-applications Slides:  https://speakerdeck.com/josegonzalez/12-factor-cakephp-applications Youtube:  https://www.youtube.com/watch?v=Kye8yaq4jqk composer / satis  - Simple static Composer repository generator d11wtq / boris  - A tiny REPL(read-eval-print loop) for PHP kamisama/Cake-Resque - Resque plugin for CakePHP : for creating background jobs that can be processed offline later (redis backend) seatgeek / djjob D- A PHP port of delayed job (database backed asynchronous priority queue )