MySQL 在 NetBSD 上的效率

參考:Thread benchmarks,因為 被廣泛應用,所以大家都拿他當作 Thread/Lock/... 的實際效率測試指標。

這個測試結果顯示 輸了一屁股,一定會讓 src committer (大光頭與 Jeffrey Roberson?) 測試 在 AMD64 上跑 的效率,這陣子應該可以在 的 mailing list 上看到相關的討論...

InnoDB 的重大修正

MySQL InnoDB 的 auto-increment 會造成 INSERT 時使用 table-level lock 的 bug 終於修正 (從 2006 年一月就進 MySQL 回報系統的 bug),下個 5.1 的版本 (預定是 5.1.22) 就會包括在裡面:InnoDB auto-inc scalability fixed

這個 bug fix 目前介紹了新的變數:innodb_autoinc_lock_mode,目前有三個數值可以用:

  • 其中 0 是原來的 table level lock 架構 (主要是因為其他原因而需要升級到 5.1.22,但是又不想上這個 patch)。
  • 1 是預設值,在 simple insert 時會改用新的 row level lock,但 bulk insert 時會使用新的 table level lock (要與 row level lock 配合)。
  • 而 2 目前不保證在 statement-based replication 下能夠正常運作 (預設是 statement-based + row-based 混和使用),但現在用 不搞 replication 的很少了吧 :/

無論無何,這是一個重大修正,在大量 INSERT 卻不能 bulk 時會造成的問題終於解決了。雖然最近我都用 開發... XD

Firefox 3.0a9pre - Minefield 版

(也就是 Firefox 3.0a9pre) 裝了起來,雖然還是有些 bug,不過穩定性比起六月時用的 3.0a6 好太多了,目前還沒有出現過「本程式作業無效,即將關閉」的畫面,而且中文顯示、輸入也都正常,大多數的 Extensions 也都可以透過 強制在 3.0a9pre 上跑。

因為通過了 的關係,很多亂寫 CSS,用 看會爛掉的網站,用 Firefox 3 看也會爛掉,這些站台在 Firefox 3 出來以後應該會修正。

WordPress 2.3

我已經不知道現在在發展什麼了... 感覺跟 每隔幾年就出個 Windows XX 差不多:WordPress 2.3 公告文

這是第一個對 Atom 1.0 完整支援的版本 (其實所有的離線寫作程式都用其他方式支援了...),另外改用新版 ,號稱快 800% (問題在於,就算是快了 800%,還是得用得很多才會有感覺)。另外一個重點是新的 WYSIWYG (呃,我到現在還是用舊的 HTML code 介面)。

不過看在這次 份上,還是鼓勵大家更新好了,說不定可以解決各種靈異現象之類的...

現在寫 PHP6-compatible 的一些技巧

Becoming PHP 6 Compatible 這篇裡面提到的五個技巧,現在遵循這些習慣,等到 PHP6 正式推出的時候程式碼才不會改太多:

  • 不要再依賴 register_globalsregister_globals$_GET$_POST$_COOKIE 這三個的變數內容直接對應到全域變數。這在目前的 PHP4 與 PHP5 預設都是關閉的,但還是有文件書籍會「建議」你打開。在 PHP6 中,這個功能將直接消失。不過,還是可以透過 達到一樣的效果。
  • 不要使用 magic_quotes:這個功能在目前的 PHP4 與 PHP5 預設是開啟的,但在 PHP6 將會消失 (而非改為關閉),所以,在開發軟體時最好以 magic_quotes 關閉的情況下開發。
  • 不要使用 $HTTP_POST_VARS$HTTP_GET_VAR,改用 $_POST$_GET。這點可以用編輯器的字串代換很快的換完。就算真的是很多的程式碼,也可以一次換一些。
  • 使用 preg_*,而不要再用 ereg_*。現在就用 preg_* 是因為執行速度比 ereg_* 快,另外在 PHP6 將會廢掉 ereg_*。不過應該會有人寫出 PECL extensions 放回來。
  • 直接拿原作者的 code 比較清楚:

    $a = & new object(); // Do not do
    $a = new object(); // Do this as of PHP 6

上面所提到的改變,會強迫使用者不能再用壞習慣寫程式,對於 的發展會是相當好的事情。

Facebook 的 Storage Solution?

上看到 開始提供 Beta 版的 Storage Solution API 介面:,一路連到 看,卻看不出來要怎麼寫入資料... (不知道真正的 data 要放到哪個欄位)

也許再等一陣子看看。

jQuery 1.2.1 以及 jQuery UI

1.2.1 釋出,修正了 ,官方 Blog 上的公告在這:

另外一個 1.2.1 很重要的「修正」就是把 1.2 裡拿掉的 .eq(n) 放回來了,寫成 .slice(n, n+1) 太脫褲子放屁 (你可以在看到 裡看到我在選擇第四個 table 時用 slice(3,4) 的寫法),結果就是在一陣抱怨聲後把 .eq() 補回來了... XD

另外一個消息是

這代表 也開始做 UI 的部份了,在 的「jQuery UI 問世」這篇有提到一些,另外在網站上也有一些 sample html 可以玩。

BSD license 的 C Compiler

上看到 貼了這個 link:BSD Licensed PCC Compiler Imported 的人把 () 放到 CVS repository 了。

決定要走向 後,就可以預測到下面這幾件事情一定會有一件發生:

  • 4.2.1 (以 發佈的最後一個版本) 發展的 C Compiler,維持
  • 重寫,或是改寫一個 C Compiler,以比 更自由的 license 釋出。

前者在 決定轉為 的時候就有人說要做,但是一直沒看到進一步的消息。後者則是 ( maintainer) 決定拿 改,結果 把這份 code 塞進 的 CVS repository 裡。

看 CVS log 的檔案列表似乎支援不少平台,但據說目前 只能夠在 i386 平台上跑,而且還有 bug。不過當有人先做了第一步,造成新聞後 (這是重點),接下來的事情就好辦很多了...

另外幾個有趣的事情拿來對照 的動作還蠻有趣的: 大魔頭 對於 Linux community 處理 GPLv2/BSD license 雙重授權時的砲轟,以及 預定在 9/18 釋出 4.2.2 的計畫。

OpenLDAP 2.3 在 FreeBSD 上的架設

紀錄一下 上的安裝及設定流程。

先透過 安裝

# cd /usr/ports/net/openldap23-server
# make clean install clean

裝完後設定 /usr/local/etc/openldap/slapd.conf,主要要改的幾個部份是:

  • 開頭的 include 部份:預設只有 /usr/local/etc/openldap/schema/core.schema,如果需要其他的 objectClass 則需要把 cosine.schemainetorgperson.schema 也寫進去。
  • 下方的 suffixrootdn,以及 rootpw。其中 rootpw 可以用 slappasswd 產生密碼。

改完後要設定開機時跑起 slapd,這個部份要在 /etc/rc.conf 裡新增:

slapd_enable="YES"

接下來用 /usr/local/etc/rc.d/slapd startslapd 跑起來。用 ps -U ldap 應該可以看到 slapd process 在跑:

25290 ?? Is 0:00.04 /usr/local/libexec/slapd -u ldap -g ldap

以上就是 server 的架設。

接下來講 client 的部份。先是修改 /usr/local/etc/openldap/ldap.conf

BASE dc=example,dc=org
URI ldap://ldap.example.org/

找文件的時候會發現大家都是建議用 domain name 當作 BASE,但其實並沒有強迫要用 domain name,只是 domain name 剛好是全世界獨一無二的 (這是粗略的說法),所以用 domain name 是慣例,以後接手的人也會比較容易上手。

將 server 跑起來,並且將 client 改完後,直接打 ldapsearch 應該就會看到沒有任何結果 (最後一行應該是 #numEntries: 0),這代表 server 應該沒什麼問題,接下來就是亂塞一些資料進去,這部份網路上大多數的文件都有提到 ldapaddldapdeleteldapmodify 的用法以及 ldif 的寫法,這些不太會因為在 上就有不同的格式,可以看其他提到 2.3 的網頁。