Shiun@ShiundeMacBook-Pro ~ sudo lsof -i -P | grep -i "listen"
2014年7月20日 星期日
Mac OSX 10.9 查詢listening ports
在Linux中可以簡單透過netstat -tulnp列出目前系統listening ports,但OSX 10.9上這招行不通,要改用以下指令才能查詢到目前系統正在listening的ports
2014年7月17日 星期四
Mac OSX Apache 啟用/停止 開機啟動
由於筆者最近跑去玩RoR使用Pow作為web server,之前在MAC上開啟的Apache每次都會開機自動啟動,老實說要手動關後才能開Pow真的很煩,因此筆者上網找要怎麼關閉開機啟動Apache
2. 打開終端機
3. 輸入以下指令
2. 打開終端機
3. 輸入以下指令
停止開機啟動Apache
1. 打開瀏覽器並輸入http://127.0.0.1先確認Apache是開啟狀態,若是關閉狀態請先執行以下指令開啟ApacheShiun@ShiunMac ~ sudo apachectl start
2. 打開終端機
3. 輸入以下指令
Shiun@ShiunMac ~ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
此時Apache也會被一起關閉
啟用開機啟動Apache
1. 確認Apache是關閉狀態,若是開啟狀態請先執行以下指令關閉ApacheShiun@ShiunMac ~ sudo apachectl stop
2. 打開終端機
3. 輸入以下指令
Shiun@ShiunMac ~ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
此時Apache會跟著一起被啟動
2014年7月14日 星期一
PHP 比對非0字串與整數0時卻回傳true問題
今天強者我朋友遇到PHP比對字串和0時卻發生回傳結果不如預期的問題,因為還挺有趣的所以就筆記下來
以下用簡單的switch case程式碼說明
以下用簡單的switch case程式碼說明
<?php $foo = 0; switch ($foo) { case "str1": echo "str1"; break; case "str2": echo "str2"; break; default: echo "default"; } ?>Result
str1
由於直覺上0不可能等於"str1"應該要印出"default"才合理,為此筆者翻了一下PHP的文件Comparison Operators,其中有一句話這麼說
If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically. These rules also apply to the switch statement.
簡單翻譯:
若用"=="比對的是數字和字串時,字串會被轉換為數字再進行比對,此規則也適用於switch-case
因此上述的switch-case程式碼實際比對的流程如下
1. 由於比對的是整數和字串,因此準備開始轉換字串"str1"為整數
2. 無法將字串由"str1"轉換為整數,因此PHP將字串"str1"轉換為0
3. 由於"str1"轉換為0且$foo也為0,因此PHP判斷條件式case "str1"成立印出"str1"到網頁上
同樣的問題可以簡化為
顯然地,要比對字串和數字時千萬要小心,不然就是用"==="來進行比對避免出問題
那若我們比對的是0和"1str"呢?
參考資料
1. Comparison Operators
If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically. These rules also apply to the switch statement.
簡單翻譯:
若用"=="比對的是數字和字串時,字串會被轉換為數字再進行比對,此規則也適用於switch-case
因此上述的switch-case程式碼實際比對的流程如下
1. 由於比對的是整數和字串,因此準備開始轉換字串"str1"為整數
2. 無法將字串由"str1"轉換為整數,因此PHP將字串"str1"轉換為0
3. 由於"str1"轉換為0且$foo也為0,因此PHP判斷條件式case "str1"成立印出"str1"到網頁上
同樣的問題可以簡化為
<?php echo (0 == "str1" ? "true" : "false") . "<br />"; var_dump((int)"str1"); ?>Result
true // 0等於"str1"
int(0) // 整數型態的0
顯然地,要比對字串和數字時千萬要小心,不然就是用"==="來進行比對避免出問題
那若我們比對的是0和"1str"呢?
<?php echo (0 == "1str" ? "true" : "false") . "<br />"; echo (1 == "1str" ? "true" : "false") . "<br />"; var_dump((int)"1str"); ?>Result
false // 0不等於"1str"
true // 1等於"1str"
int(1) // 整數型態的1
至於為啥會有這樣的結果呢?不要懷疑,就只是PHP的規則如此而已XD
參考資料
1. Comparison Operators
訂閱:
文章 (Atom)