照片來源是在 flickr 上找到的 PhpConf 2012 相片集。然後你沒看錯,這是 2012 年的筆記⋯⋯好吧我為什麼當年還沒懷孕也拖這麼久沒整理呢?(明明之前還直接捨棄掉 OSDC.tw 2012 的草稿了⋯⋯)
ant, "A step to better PHP - Enterprise ORM / Security / Tips"
開發各種程式語言時,都會有令人不喜歡的部分,這個議程的目的就是「減痛使用 PHP」,幫助大家繞過不喜歡的部分。
如同 ant 後來在他自己的 blog 上說的,他先分享了 phalcon php 對他的啟發。這是一個 C 寫的擴充元件,提供低耗能、高效率的 PHP 環境。特色是速度快,但可能不是最快的(Yaf 2.2.2 > phalcon 0.4.5) 。但是快速就比較好嗎?以 LinkedIn 的一篇文章提到他們改用 node.js 來取代 ruby,使得原來的 100 台伺服器可以減量為五台(提高 20 倍的效能)。(←其實我弄不清楚 ant 的意思⋯⋯這是指犧牲速度來節省 server 配置嗎?)
第二部分是談談 phpwoworm 這個專案:
- soft delete
沒有真正刪除,只是標示已刪除,以符合某些法規或特定顧客需要。 - audit
所有的 create / update / delete 都需要保留先前資料狀態記錄,以利日後稽核。 - record checksum
確保資料完整性,所以要加上 checksum 來驗證資料完整性。 - transparent data encryption
- security hash library
資料庫外洩時,要能保護資料不會輕易被破解。 - PBKDF2 (SHA-256/SHA-512) → 應用上的瓶頸在於 GPU 的運算速度可能不支援,或是計算的時間成本太高。
- bcrypt
scrypt (計算成本高,是這幾個 solution 之中相對而言破解成本較高的)
php 5.4.0 以後的版本內建了 web server,以前我們想要有環境可以執行自己寫的程式得要先裝個 apache 之類的環境,現在,我們可以透過下列指令簡單建立一個小小的 web server 來做測試:
$php -S localhost:8000
可以利用 php 的一些特性來做些有別於其他語言的設計:
- strlen($foo) > 5
- isset($foo{5})
JanathnMaron, "Template-Based DOCX, DOC & PDF Generation with Zend Framework 2"
講者是 Zend formwork 的成員之一,這場講如何使用 Zend framework 2 產製 docx, doc, pdf。
- HTML-to-PDF approach
- domPDF, HtmlToPdf
- HTML_ToPDF
- wkhtmltopdf
- Programmatic approach
- Zend_Pdf
- PDFlib
- FPDF
- Cpdf
- template approach
- ZendSerice LiveDocx
在 word 直接做一份範本檔,設定 {MERGEFIELD subject} 這樣的 tag,可以以類似這樣的方式賦值:
$mailMerge -> assign("subject", "this is title");
作者的 blog: http://www.phplivedocx.org
會後的 Q&A 有人問到中文或其他語言的文字是不是可以正確產製文件,講者說只要餵 utf-8 就沒問題。如果要嵌入字型,也是可以的。
(live demo 的內容是產製報價單,感覺好棒喔!)
Orange (黑橘), 《Security in PHP - 那些在滲透測試中的小技巧》
Security in PHP - 那些在滲透測試的小技巧 from Orange Tsai
講者的 blog: http://blog.orange.tw
php 在 windows 上面會把網址參數裡的部分符號置換為其他文字,例如:name=config.php 可以是 name=config"php
在雙字節的編碼環境下, param=phpconf%cc' 是可以繞開單引號的過濾的,另外有像是這樣的 code injection:
<input value="${@phpinfo()}" />
Ronny wang, 《PIXNET如何使用PHP》
講者的 twitter: https://twitter.com/ronnywang
特別要留意的是有些工具可能不太適合 startup 或小型團隊。
利用 gitolite 可以做一些權限管理,例如在工程師上傳程式時,可以過濾掉不小心貼上去的敏感資訊(例如一些測試用的內容),或是語法上不符合的地方,增加系統的穩定度。
Pixnet framework: http://framework.pixnet.net
如果使用 framework,通常都會有個單一入口,例如 rewirte 之前會跑到某個 controller 上,就可以統一加上一些錯誤處理或是統計,不必一頁一頁為了不同的功能去增加。
利用 framework 裡的 top 可以看出目前佔用 CPU 較高的網頁,或是看出哪幾個網址佔住大部分資源
「我們的經驗是有些 warning 在 php 版本升級後就變成 error,今天的 warning 就是明天的 error!所以我們會把 warning 修掉,未來希望連 notice 也納入。」
pixnet 的 issue tracking 是 trac,他們的測試環境會依照 trac 的編號建置,例如 trac id 12345 的 ticket 就用 "http://ronnywang.pixnet.net/12345.staging.pixnet/blog" 來做測試,以便 QA 可以輕鬆對照問題來確認修改成果。
(但 trac 沒有直接和測試環境做整合,不會因為開新票就自動 build 新的測試環境出來)
像在 facebook 要來抓頁面內容(例如 like 一個頁面時要抓圖片),就是推到線上測。
最早是用 zend framework,但當時版本的 zend framework 很慢,controller & view 就由自己做的 pix framework 處理。
線上的 blog & album 都還是用 zend framework,新的產品才是用 pix framework。
大部分的場次討論 framework 居多,有興趣可以參考其他場次的投影片。
阿土伯,"Phalcon PHP Framework and Phalcon Kernel Introduction"
大澤木小鐵,"Laravel Framework Modern Website Building"
Aaron Huang, "Yii framework"
phpconf 2012 yii from Aaron Huang
Ricky Su, Symfony 2
相關連結
留言列表