Mysql show function list
....喵的明明有create function,drop function
可是根本沒說清楚怎麼查阿!
找了N久才看到可以
select * from mysql.func;
PHP測試小技巧
不能直接echo值怎麼辦?
試試echo "<script>console.log( '".$YourValueWantToDisplay."' )</script>"
註:僅供開發測試用,上線請避免使用這種寫法
更進階的用法參考 http://stackoverflow.com/questions/4323411/how-can-i-write-to-console-in-php
cli 和apache2
這是不同的環境設定
前面是指打cmdline的時候所引用的設定
以xdebug為例,我們灌好要新增這個功能的時候,必須要在php.ini裡面設定
zend_extension=xdebug.so
不過你如果locate,就會發現實際上有兩個php.ini
$ locate php.ini
/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini
Ubuntu 14 的GuestAddition 與字型
VM必用到的無痕模式
其實不一定用到,但是可以隨意縮放視窗是賣點
...
但是14.04有部分特定版本(或者說,更新)讀光碟會異常(會告訴你檔案iso格式不符
阿google下去那就是光碟的標準格式阿....為什麼會讀不到.....orz
現在的最新版,嗯,老實說不太穩定,問題也比之前難解(畢竟才出沒多久
所以要做這類更新之前自己照個VM快照吧
------------
注意:這是"部分版本"對光碟格式判斷錯誤,不是"全部版本"
所以這邊才建議更新前照快照,如果內容有更動,第一次重新開機無痕模式仍然會失效
但是這個時候插入光碟並不會有錯誤訊息(如果不相容的版本,插光碟就會告訴你I/O錯誤,如果這個狀態再更新會不會解決就不清楚)
此時重新安裝Guest Addition
------------
原本以為只能忍耐用心細明體了,沒想到發現一篇
http://scar.simcz.tw/article/2014/04/22/fix-ubuntu-14-04-lts-zh-font-selector/
phpmyadmin 提示缺少mcrypt
php.ini裡面
Dynamic Extensions中
extension=mcrypt.so <=注意自己locate一下可能不同路徑 名字之類
還有一個做連結的方法
不過網路上的方法製造出來的可能跟旁邊的預設設定不一樣,同樣自行參照一下修正
理論上做一個就可以了....
php 資料庫編碼問題
$conn = mysql_connect(ConnectionProperty::getHost(), ConnectionProperty::getUser(), ConnectionProperty::getPassword());
mysql_select_db(ConnectionProperty::getDatabase());
mysql_query("set names utf8");
if(!$conn){
throw new Exception('could not connect to database');
}
在選擇db以後設定編碼
其他的做法莫名其妙的沒用...
phpunit+gearman產生的矛盾
嗯,經過各種接近極限整人的測試以後,發現以下幾點,有誤請指正
指正是拿具體例子或明顯可執行/實作的例子來反駁,如果舉不出可行的簡單例子,請勿來亂,謝謝。
------------------------
先說結論
phpunit沒有辦法正確顯示coverage的原因是沒有直接call,然而這個應該是gearman的必然現象
判斷的結果,既然是單元測試,那麼必然是我直接call他可以得到期望的回傳(即使中間有邏輯),好死不死gearman的運作機制並不是這類型的
首先是worker部分必然是脫離phpunit獨立執行,因為開worker那部份一定要無窮回圈來listen(不然用gearman就失去意義了)
phpunit比起coverage實際上assert才是重要的檢證機制(畢竟他不只可以用來assert true,assert false,或是assert 特定的value,還可以使用regexp來檢查return,是相當有效的防修改掛掉的test
然後listen的client部分為什麼沒有cover呢? 很簡單,即使用了class,即使require,我們也不會去直接執行那條function
因為在沒有job的狀態下,去執行那條function毫無意義,然而如果是發出去的worker需求,會變成這樣:
"我們(傳資料)給已經註冊的job server function,由他幫你處理註冊好先前設定的工作"
所以中間的code都是我們一開始註冊的無窮迴圈狀態的worker在執行的,既然是別人在執行,那就不會cover了