MySQL Storage Engines 值得細細品味!
簡單的講, 要快要方便用 MyISAM, 要 Transaction-safe 用 innoDB。
2008-01-27
JavaScript 動態產生 radio 選項
例子
如果沒有表單成員, 不可以直接使用 document.form1.radiog.value 去判斷, 否則會發生語法錯誤, 而應先以 document.form1.radiog 判斷。
多個 radio button 會變成陣列, 判斷方式和單一個不同。
另外, 上面的例子在 Firefox 2.0.0.11 會發生錯誤, 如果先在「單一選項」或「多個選項」選第一個項目再回到「沒有選項」並按「檢查」, 就可以看到問題 =.=
如果沒有表單成員, 不可以直接使用 document.form1.radiog.value 去判斷, 否則會發生語法錯誤, 而應先以 document.form1.radiog 判斷。
多個 radio button 會變成陣列, 判斷方式和單一個不同。
另外, 上面的例子在 Firefox 2.0.0.11 會發生錯誤, 如果先在「單一選項」或「多個選項」選第一個項目再回到「沒有選項」並按「檢查」, 就可以看到問題 =.=
2008-01-26
2008-01-24
AS3 翻頁效果 (使用現成類別)
PageFlip class
作者首頁
測試範例
測試範例原始檔
作者首頁
測試範例
import com.foxaweb.pageflip.PageFlip;
const PAGE_WIDTH = 240;
const PAGE_HEIGHT = 180;
var render:Shape=new Shape();
var page0:BitmapData=new p0(PAGE_WIDTH, PAGE_HEIGHT);
var page1:BitmapData=new p1(PAGE_WIDTH, PAGE_HEIGHT);
render.x=250;
render.y=35;
addChild(render);
this.addEventListener(Event.ENTER_FRAME, onEF);
function onEF(e:Event){
render.graphics.clear();
// 計算翻頁的物件
var o0:Object = PageFlip.computeFlip(
new Point(render.mouseX, render.mouseY), // 翻折位置
new Point(1,1), // 右下角
PAGE_WIDTH, PAGE_HEIGHT, // 尺寸
true, // 水平翻頁
1);
PageFlip.drawBitmapSheet(o0, render, page0, page1);
}
測試範例原始檔
2008-01-16
JavaScript 傳中文給 PHP
用 GET 送中文字時, 不同瀏覽器的行為不同
所以先以 JS 轉換成 Unicode
傳給 PHP 後, 再轉成 utf8
資料來源: Neo's Blog 使用 PHP 解譯 javascript escape() 編碼過的字串
所以先以 JS 轉換成 Unicode
傳給 PHP 後, 再轉成 utf8
資料來源: Neo's Blog 使用 PHP 解譯 javascript escape() 編碼過的字串
<?php
$search_value = uniDecode($search_value, 'utf8');
function uniDecode($str,$charcode){
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",toUtf8,$str);
return mb_convert_encoding($text, $charcode, 'utf-8');
}
function toUtf8($ar){
foreach($ar as $val){
$val = intval(substr($val,2),16);
if($val < 0x7F){ // 0000-007F
$c .= chr($val);
}elseif($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
}else{ // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}
?>
2008-01-14
2008-01-11
INNER JOIN 的效能 (SQL)
個人經驗是 JOIN 三張表以上, 效能明顯變慢。可以使用 sub select 來達到相同的目的。
用一個資料表開得不好的例子來說明。
第一種:
第二種:
第二種看起來較複雜, 但執行效能通常比第一種好。
用一個資料表開得不好的例子來說明。
第一種:
SELECT a. * , ch.listname AS chl, cn.listname AS cnl, en.listname AS enl, jp.listname AS jpl, kr.listname AS krl
FROM aa_mainmenu a
INNER JOIN ch_mainmenu ch ON a.sno = ch.a_id
INNER JOIN cn_mainmenu cn ON a.sno = cn.a_id
INNER JOIN en_mainmenu en ON a.sno = en.a_id
INNER JOIN jp_mainmenu jp ON a.sno = jp.a_id
INNER JOIN kr_mainmenu kr ON a.sno = kr.a_id
ORDER BY a.priority DESC
第二種:
SELECT *
FROM (
SELECT a. * , b.listname AS kr
FROM aa_mainmenu a
INNER JOIN kr_mainmenu b ON a.sno = b.a_id
)a
INNER JOIN (
SELECT a. * , b.en, b.jp
FROM (
SELECT a.a_id, a.listname AS ch, b.listname AS cn
FROM ch_mainmenu a
INNER JOIN cn_mainmenu b ON a.a_id = b.a_id
)a
INNER JOIN (
SELECT a.a_id, a.listname AS en, b.listname AS jp
FROM en_mainmenu a
INNER JOIN jp_mainmenu b ON a.a_id = b.a_id
)b ON a.a_id = b.a_id
)b ON a.sno = b.a_id
ORDER BY a.priority DESC
第二種看起來較複雜, 但執行效能通常比第一種好。
訂閱:
文章 (Atom)