2009年1月2日星期五

mootools 解決 a 不可以有 target 的問題

XHTML 1.0 Strict 限制了a 的tag內不可含有target的 property,
解決的方法是用javascript把全部含 rel="external"的a都用js的方法開新tab.
方法如下:

var ExternalLink=function(){
$$('a[rel="external"]').each(function(a){
a.addEvent('click',function(e){
var e = new Event(e);
e.stop();
window.open(a.getProperty('href'));
});
});
}

2008年12月29日星期一

把UBUNTU WUBI 轉移到 正式的 EXT3 partition

假設你只有一個ntfs ( window)的 文件系統( partition), 本文將會介紹如何使用 LVPM (Loopmounted Virtual Partition Manager ) 轉移到 正式的 EXT3 文件系統。

第一步 : 分割一個新的文件系統
我將會使用 UBUNTU 的Live CD來分割 一個新的文件系統。當然你也可以用其他工具分割。
  • 使用Live CD開機
  • 按系統, Partition Editor
  • 選目前的文件系統, 按 "Resize"
  • 按 "Apply"
  • 在"未使用空間"內, 創造兩個新的文件系統。 其一為 SWAP, 大小約2000MB; 其二為 EXT3, 使用全部剩餘空間
  • 按 "Apply"

第二步 : 安裝與使用LVPM
  • 進入Wubi 的 UBUNTU
  • 到這下載最新的LVPM, 並進行安裝
  • 在LVPM的對話框內, 選"TRANSFER" , "sda3"(按你的硬碟位置而定, 可到"硬碟分割處理器"查看 )
  • 重新開機
  • 在GRUB內, 選新的UBUNTU。 如果顯示"Error 17: Cannot mount selected partition." 則繼續下一步; 沒有的話, 你已經成功了 ^^
  • 按"e"修改指令。把 "root ()" 改為 "root (hd0,2) " hd0指第一隻硬碟, 2指第3個文件系統, 請按自已的環境更改。
  • 進入新的ext3 ubuntu 後, 請到" /boot/grub/menu.lst" 把 新的 "root ()" 改為 "root (hd0,2) "
  • 完成了^^



原文参考: http://www.saltycrane.com/blog/2008/08/notes-moving-ubuntu-wubi-standard-ext3-partition-using-lvpm/

2008年12月22日星期一

GOOGLE CHRISTMAS LOGO



兩條友係度整緊乜?








.
.
.
.
.
.
.
.
.



Merry Christmas!

PHP 繁簡字碼直接轉換

最近幾日都係度整緊字碼既事 ,UTF-8, BIG5, GB2312, GBK。 要做既係兩樣野:
  1. detect charset
  2. 簡繁轉換

總結如下:

iconv斷字
icon
遇到無法轉換的字時, 預設是會斷句。
可以在第2個参數加入//IGNORE
iconv("BIG5","UTF-8//IGNORE",$query);
或//TRANSLIT
iconv("BIG5","UTF-8//TRANSLIT",$query);

//TRANSLIT will raise an exception on characters it can't transliterate, however; this can be solved by using '//IGNORE//TRANSLIT' together (in that order).
也可以兩個参數一起來
iconv("BIG5","UTF-8//IGNORE//TRANSLIT",$query);

用mb_convert_encoding 的話, 但會把有問題的字換成 "?"

gb->utf8

iconv("GBK","UTF-8//ignore",$word);
iconv("GB2312","UTF-8//ignore",$word);

用GBK比GB2312好, 據說係因為GBK既字庫比較大

mb_convert_encoding

mb_convert_encoding($word,"UTF-8","BIG-5");

有以下地方要注意:
  • 参數次序跟ICONV剛好倒轉
  • "BIG5" 要換成 "BIG-5"
  • "EUC-CN"要換成"GB2312"
  • "CP936" 要換成 "GBK"

charset detecting
$encoding_list="UTF-8,BIG-5,EUC-CN";
mb_detect_encoding($word, $encoding_list);

$encoding_list為 charset 的次序

-繁簡字碼可能會誤測, 所以次序很重要

繁簡換轉

上GOOGLE搜尋一下,
如果想簡轉繁的話, 方法是 UTF-8 -> GB2312 -> BIG5 -> UTF-8, 的確是可行的, 也不用任何外部的文件。但因為BIG5和 GB2312的字庫不夠UTF-8的大, 所以總有些字會變成 "?"。
解決方法是找個 簡體的UTF-8 -> 繁體UTF-8 的MAP , 再跟據MAP直接轉換。問GOOGLE後發現好像沒有人試過這樣做, 所以就寫了個類轉換。

源碼可以這下載
http://code.google.com/p/fukidutf8t2s/

2008年12月15日星期一