2011年10月4日 星期二

PHP Xdebug安裝

PHP好用的debug和profiling工具: Xdebug
$ git clone git://github.com/derickr/xdebug.git
$ cd xdebug
$ phpize
$ ./configure
$ make
$ cp modules/xdebug.so /to/wherever/you/want/it

php.ini加上
zend_extension="/wherever/you/put/it/xdebug.so"
重啟apache2, 如果phpinfo頁有出現Xdebug的字就成功了!

Django的Template的if判斷不能用除數或餘數

我的版面需要ul tag裡有4個li tag,PHP裡常用if i % 4 == 0之類的來判斷,Django裡可以用divisibleby的判斷(回傳True/False),
或是要用可以用cycle來決定輪流出現的tag。

{% if forloop.counter0|divisibleby:4 %}
<ul>
{% endif %}
<li>...<li>
{% if forloop.counter|divisibleby:4 or forloop.last %}
</ul>
{% endif %}

Linux處理硬碟壞軌工具

檢查壞軌


(v: verbose, s:show progress )
badblocks -vs /dev/sdb
加“-n” 測試非破壞性寫入
badblocks -nvs /dev/sdb

預先偵測


ATA 硬碟都有支援 S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology)
安裝smartmontools, 用smartctl來看
smartctl --attributes /dev/sdb
如果以下幾組數字不為0時就要注意了:
Reallocated Sectors Count/Reallocations event count,/Current Pending Sector Count/Uncorrectable Sector Count

備分


dd if=/dev/sdb of=sdb.img
要更安全用dcfldd,會檢杳hash
壞軌無法用dd時就用dd_rescue,可以跳過壞掉的資料

更深入請看: Linux 上處理壞軌硬碟的兩三事

php.ini 安全性設定

PHPサイバーテロの技法―攻撃と防御の実際看來的,推薦設定值。

開發環境



















設定名稱預設值php.inihtaccessscript中修改
expose_phpOn-xx
error_reporting2039error_reporting=E_ALLphp_value error_reporting2047error_reporting(E_ALL);
display_errorsOn---
log_errorsOff---
allow_url_openOnallow_url_fopen=Offxx
register_globalsOff--x
session.use_cookieOn---
session.use_only_cookiesOffsession.use_only_cookies=Onphp_flag session.use_only_cookies Onini_set('session.use_only_cookies', 1);
session.use_trans_sidOff---
session.auto_startOff---



正式環境



















設定名稱預設值php.inihtaccessscript中修改
expose_phpOnexpose_php=Offxx
error_reporting2039---
display_errorsOndisplay_errors=Offphp_flag display_errors Offini_set('display_errors', 0);
log_errorsOfflog_errors=Onphp_flag log_errors Onini_set('log_errors', 1);
allow_url_fopenOnallow_url_fopen=Offxx
register_globalsOff--x
session.use_cookiesOn---
session.use_only_cookiesOffsession.use_only_cookies=Onphp_flag session.use_only_cookies Onini_set('session.use_only_cookies', 1)
session.use_trans_sidOff---
session.auto_startOff---



  • - : 不用改變

  • x : 無法改變

CSV格式

逗號分隔欄位, 換行符號("\n")是下一筆
* 有逗號, 空格, 換行的字串用雙引號包起來: "foo, bar"
* 顯示1個雙引號要用2個雙引號, 如 "12'30"""-->12'30"
* 如要顯示數字前的0, 就要用="007"來表示

IE下載docx會變zip檔

因為apache不認得,
可以改httpd.conf
或.htaccess加上
AddType application/vnd.openxmlformats .docx .pptx .xlsx .odp

Python的dict用某一key排序

有個dict有title和date二個key, 要指定用date來排序:
>>> list = []
>>> list.append({'title':'abc','date':1})
>>> list.append({'title':'def','date':2})
>>> list.append({'title':'ghi','date':0})
>>> print sorted(list, key=lambda x: x['date'])
[{'title': 'ghi', 'date': 0}, {'title': 'abc', 'date': 1}, {'title': 'def', 'date': 2}]
>>> print sorted(list, key=lambda x: x['date'], reverse=True)
[{'title': 'def', 'date': 2}, {'title': 'abc', 'date': 1}, {'title': 'ghi', 'date': 0}]