----------------------------------------
3. 其它, php 應知的便捷操作
----------------------------------------
php 函式,vim語法高亮就是乙個很好的php 函式名稱集合,
php的命令列模式
php -r 'echo "hello world\n";' // 輸出hello world
php -r 'print_r(get_defined_constants());' // 列印php中已經定義過的常量
php -r 'echo "$argc\n";print_r($argv);' abc 1 2 3 //列印命令列引數
php -r 'echo phpinfo();'
----------------------------------------
4. wireshark 怎樣在普通使用者模式下執行
----------------------------------------
問題:以普通使用者執行wireshark, 介面列表是空的。
原因:/usr/bin/dumpcap需要root許可權才能使用的,
普通使用者無法使用dumpcap進行擷取封包。
用超級使用者執行wireshark
running as user "root" and group "root".
this could be dangerous.
得到的封包資料都是root的,危險!
----------------------------------------
解決辦法:
----------------------------------------
建立乙個組,讓普通使用者屬於這個組,把檔案dumpcap組屬性設定為該組,
讓dumpcap 具有root許可權。
具體操作:
1. 新增wireshark 組
sudo groupadd wireshark
2. wireshark 組新增普通使用者(例如我的使用者為hjj)
sudo gpasswd -a hjj wireshark
3. 更改dumpcap 的組屬性
sudo chgrp wireshark /usr/bin/dumpcap
4. 使dumpcap 具有root許可權
sudo chmod 4755 /usr/bin/dumpcap
這個4表示其他使用者執行檔案時,具有與所有者相當的許可權。
用普通使用者執行,介面列表正常了。
----------------------------------------
5. 前端除錯,有firebug, 這裡不詳述。
----------------------------------------
----------------------------------------
6. 後端除錯,php 除錯環境的搭建, 這是本博最關鍵部分
----------------------------------------
僅靠echo 語句有時是不行的,
複雜的**結構中,我們必需關注某些**行時,必需關注某些資料時,
停下來,檢查資料,單步執行等是我們所需要的。
關鍵的時候,我們需要詳細的了解我們的環境。
我們需要 中斷: 單步: 檢視記憶體:
vim + xdebug + dbgp 除錯php
----------------------------------------
6.1. vim +python +sign
python 2.0+
要求vim 支援phthon介面,支援sign, 當然了,我還要讓他支援剪貼簿,支援gdb, 原始碼編譯不可免。
python 版本一般都能滿足。
----------------------------------------
6.2. php5 + xdebug
apt-get install php5-xdebug
安裝php5 後,再安裝xdebug, 下面是xdebug 配置例項
$cat xdebug.ini
zend_extension=/usr/lib/php5/20121212/xdebug.so
;debugging
xdebug.remote_enable = 1
xdebug.remote_host = localhost
;php-fpm 使用unix socket 或其它埠
xdebug.remote_port = 9000
xdebug.remote_handler=dbgp
----------------------------------------
6.3. dbgp 為vim debugger 外掛程式
debug.vim 裡面可以設定埠,預設9000
debugger.py 裡面可以設定等待時間,預設5秒,建議改為30
551 print 'waiting for a new connection on port '+str(self.port)+' for 30 seconds...'
556 serv.listen(30)
666 socket.setdefaulttimeout(30)
----------------------------------------
6.4. 使用:
6.4.1: 用瀏覽器除錯。
用vim 開啟待除錯的php 檔案
press and
browse php file within 5 seconds
這裡是乙個服務端,預設埠9000, 等待遠端的連入。
瀏覽器中輸入:
xdebug 將會與伺服器建立連線。
伺服器接受鍵盤控制命令執行並返回結果到檢視。
檢視或更改debuger.vim,
如果你更改了命令定義, 把debuger.py 的對應提示資訊也改一下
常用命令: 下面是我更改的,匹配自己的環境
f11:獲取所有變數內容,
f12:獲取當前游標下的變數值(為已執行過的**部分中的變數),
f2: run
f3: quit
f7,f8,f9: step_into, step_over, step_out.
:bp 設定斷點。 把游標定位到**行上,執行:bp 就可以了。,e可以檢視變數的值,還是很方便的.
關於vim 在 php 檔案中輸入, 出現attributeerror 問題.
(, attributeerror("dbgprotocol instance has no attribute 'stop'",), )
是的,根本沒有等待30秒, 時間不長就出錯, 我的解決辦法是延長了xdebug.remote_timeout時間,由預設的200改為了2000 (從phpinfo())可以看到.
xdebug.remote_timeout=2000
並開啟了trace 選項, 跟蹤錯誤.
xdebug.auto_trace = on
xdebug.show_error_trace = on
xdebug.show_exception_trace = on
xdebug.trace_output_dir = "/tmp"
實驗結果, 只要在它未出現錯誤之前(大概有10來秒時間),及時從瀏覽器輸入除錯資訊,還是可以中斷的.
然後可以單步執行. 並不需要瀏覽器中輸入xdebug_session_start=1
所以雖沒有完美解決問題,但還是可以使用的, 可能算帶病工作吧, 並不影響使用.
不過這些跟蹤選項最後還是關閉,否則會引起其它問題. 例如phpmyadmin 中顯示資料庫有點問題,會有
mysqli_init(): property access is not allowed yet
使得它的計算影響的行數等不能正常工作, 關閉xdebug trace, 可恢復正常.
有了vim php debugger, 夫復何求!
如何學習 快速掌握使用者需求?
問題描述 客戶的參與是發布乙個優秀軟體的關鍵因素,在專案的開始階段就應該努力致力於為你的專案徵求各個客戶的意見。軟體需求的成功,和軟體開發的成功都取決於開發者是否盡可能地採納客戶的意見。為了徵求客戶的意見,我們該如何學習 快速掌握使用者需求?精彩答案 1 與客戶保持密切關係 關鍵 1 多與客戶交流,...
零基礎快速掌握Python的重點學習資源庫
用python編寫 一點都不難,事實上它一直被讚譽為最容易學的程式語言。如果你準備學習web開發,python是乙個不錯的開始,甚至想做遊戲的話,用python來開發遊戲的資源也有很多。這是快速學習這門語言的途徑之一。許多程式設計師都把python作為程式設計之旅的開始,然後是像php和ruby這樣...
如何快速掌握機器學習中的數學知識?
我們學習的諸多技術中都離不開數學知識,而機器學習中涉及到很多知識,其中最重要的就是數學知識。當然,很多人認為數學是比較難的知識,不過確實是這樣的。現在有很多人都開始關注機器學習,而學習機器學習離不開數學內容,你是否開始納悶,要如何快速地掌握機器學習的知識呢?下面我們就給大家解答一下這個問題。然後就是...