2009年10月21日 星期三

freebsd + ahci

mav@freebsd.org 之前將 ahci(4) import 進 freebsd source tree, 昨天在桌機上裝了一下 freebsd 8,

順手把這個打開來用用看, 果然用起來沒問題呀.


安裝光碟, 預設還是 ata, 所以得裝完之後, 自己在 /boot/loader.conf 加上 ahci_loader="YES",

然後修改 /etc/fstab 之後, 重開機就可以使用 ahci 了, 當然, 硬體跟 bios 都要有支援就是, 有的 bios 預設就是 ata, 要自己進去改一下,

不然怎樣搞都還是進不了 ahci mode.

--
ata 硬碟的命名是 adX, ahci 則是 adaX, 所以 fstab 得自己改過.

2009年10月20日 星期二

git 的 hooks

由於公司內部一些東西改用 git 做版本控制, 所以現在用 git 的頻率還頗高的,

大家共用一個 codebase 最大的缺點, 就是有人可能搞爛東西, 然後大家還不知道,

為了預防這種事情發生, 大部分的 scm 都會有所謂的 hook, 可以在一些事情被執行前後, 做點檢查之類的事情.

我是直接拿 git pre-commit 這個 hook, 檢查更新過的 php 的 syntax, 如果有問題直接就不給 commit,

至於 bug, 當然是沒辦法檢查出來的.

下面是 code, 存成 .git/hooks/pre-install, chmod u+x 一下就可以用了,

不過比較好奇的是一般自己架設的 git server, 是可以自己處理 server side hooks, 但是 github 看起來並沒有這種機制.


#!/usr/bin/env php
exec( "git diff --numstat", $output );
$fa = array();
foreach( $output as $o ) {
$f = explode( "\t", $o );
$p = pathinfo( $f[2] );
if( $p['extension'] == 'php' )
$fa[] = $f[2];
}

foreach( $fa as $f ) {
system( "php -l $f", $result );
if( $result != 0 ) {
$flag = true;
break;
}
}
if ($flag) exit( 1 );
?>


2009年6月24日 星期三

論 "php cpu 使用率不佳" 以及 php extension

pixnet 的大神貼了一篇徵才的 blog, 中間講到, "因為 php cpu 使用率不佳, 所以我們決定換成 python"...

會說這種話, 要不就是不用功, 沒真的找出怎樣壓榨出更多 cpu 效能的辦法, 不然就是手槍打得很兇, 只會假裝自己弄了新東西很炫...

簡單的講, facebook 大不大? yahoo 大不大? 他們都用 php 當前端顯示的 language, 你 pixnet 跟他們比, 算什麼咖?


php 作者 rasmus 自己都研究過, 一般狀況, 一個 request 進來, 到顯示完成,
php 本身只消耗了 10% 的 cpu, 剩下的時間, 幾乎都是等其他東西比較多, 例如資料庫, browser 端的 render 等等.
(http://talks.php.net/show/ntu/9)

就算真的 cpu 使用率不佳, 總能把不佳的部份, 改用 php extension (c or c++) 來改寫, 一個在網站內最常被使用到的 function (not bif),
改用 php extension 方式處理的話, 速度上得提昇, 馬上就可以感覺出來.

python 本身沒有不好, 只是把 "php cpu 使用率不佳" 這種沒有道理, 隨口胡謅的結果, 強加期望在 python 身上, 實在是罪過.

以 yahoo 架構上來講, 重要的核心, 基本上都會有 c or c++ library, 然後會有 php extension 來封裝起來,

一般的 web coder, 只要知道 php extension 版本的語法就好, 後面的速度跟效能, 只要 c or c++ library 升級, 馬上就得到成果.