<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.6.2" -->
<rss version="0.92">
<channel>
	<title>::低溫烘焙::</title>
	<link>http://doublekai.org/blog</link>
	<description>自然‧原味</description>
	<lastBuildDate>Tue, 04 Aug 2009 09:54:37 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>好一個SSL認證網站</title>
		<description>

ssl網站的網址應該是https:://開頭的吧=_= </description>
		<link>http://doublekai.org/blog/?p=1081</link>
			</item>
	<item>
		<title>Kohana Captcha module - securimage</title>
		<description>Well...Maybe it's an unnecessary library in Kohana,but I still try to make it be module.
The original source from http://www.phpcaptcha.org/,so It's GNU LESSER GENERAL PUBLIC LICENSE
呃…或許這個模組在Kohana是多餘的，但是我還是把他做出來了= =，他一樣是用http://www.phpcaptcha.org/的原始碼修改的，所以授權一樣是LGPL
Usage Sample:

class Welcome_Controller extends Controller {
	public function __construct()
	{
		parent::__construct();
	}
	public function index()
	{
		// Load Securimage library
		$this->securimage = new Securimage;
		
		// Form submitted
		if ($_POST)
		{
			$imageCode = $this->input->post('imageCode');
			echo $this->securimage->getCode();
			if ($this->securimage->check($imageCode)==true)
			{
				echo 'Good answer!';
			}
			else
			{
				echo ...</description>
		<link>http://doublekai.org/blog/?p=1065</link>
			</item>
	<item>
		<title>國軍青年日報網站</title>
		<description>話說...我從google新聞看著看著無意間連到這個網站，而且他相當在乎使用者的感覺，所以做了一個很貼心的投票，如下圖：


呃...至少也要考慮一下其它瀏覽器的使用者吧/__\

接著我看見他的頁尾資訊：


現在我懷疑政府機構的案子，外包條件中的「無障礙網頁」，是把圖片貼上去就可以了嗎XD </description>
		<link>http://doublekai.org/blog/?p=1058</link>
			</item>
	<item>
		<title>filectime 和 filemtime 的差異</title>
		<description>最近會使用到「取得檔案最後修改的時間」，從PHP手冊發現有兩個功能描述幾乎一模一樣的函式filectime()與filemtime，當然很自然的好奇倒底是差在哪邊，所以就用G大仙查了一下，很慶幸在「這篇討論文」有找到由coopster所提出的解答:)，而且還特別說明了fileatime這個函式

fileatime

The atime of a file is supposed to change whenever the data blocks of a file are being read. This can be costly performancewise when an application regularly accesses a very large number of files or directories. Some Unix filesystems can be mounted with atime updates disabled to increase the ...</description>
		<link>http://doublekai.org/blog/?p=1049</link>
			</item>
	<item>
		<title>Native</title>
		<description>經由 ClassScript 核心檔所提供的 Native() 方法來指定欲擴充的類型，並呼叫 Prototype() 方法來實作，便可讓我們可以快速的為原生類型提供更便利的使用方法。

舉例說明，一般我們可能會遇到將字串轉換成數字以便計算，這時我們通常會透過 parseInt() 方法來轉換，但是或許你會想使用更簡單的介面，像是 "123".toInt() 的方式，這時我們便可以透過 Native 的來擴充 String 原生類別。

Native("String").Prototype({
    toInt: function(){
        return parseInt(this);
    }
});

這時候只要是屬於字串類型的變數，便具有toInt()可供呼叫。

var str = "12";
str + 34 // print "1234";
str.toInt() + 34; // print 46

PS. 當原生類型已經存在的方法，並不會被實作出來(已經有了何必再做呢ˊ_ˋ) </description>
		<link>http://doublekai.org/blog/?p=1026</link>
			</item>
	<item>
		<title>ClassScript</title>
		<description>ClassScript是一個模擬Java寫法的JavaScript Lib，目的是讓開發者能再JavaScript的環境中，用Java宣告Class類似語法來宣告JavaScript的Class。但是基於JavaScript本身的語法限制，所以不可避免有些部份無法實作出來，但是還是能提供相當直覺的宣告方式，目前實作出來的語法介面為下：

	Package - 並非實際的將class包起來，而是使用物件來存放Class的參照，比較像是命名空間
	Class - 類別的宣告，並提供Extends、Implments兩個語法介面的實作
	Interface - 本質上也是個類別，只是提供Interface關鍵字來模擬，在嘗試實作new時會拋出例外
	Abstract.Class  - 本質上也是個類別，只是提供Abstract關鍵字來模擬，在嘗試實作new時會拋出例外
	Super - 父類別參照，透過Super來呼叫superclass的參照
	Static - 靜態屬性，在Class的建構式中，使用Static.來宣告Class的靜態方法
	Native - 針對 JavaScript原生類別作為擴充的特別類別宣告方法

開發感想：

由於JavaScript是個弱型別與直譯式的語法，所以是否要實作Interface與Abstract.Class的令我蠻猶豫的，宣告了一個完全沒有實作的方法的介面或抽象類別，再給一個Class去實作、繼承，在JavaScript感覺作了兩次工，光宣告介面就感覺像多此一舉，而且研究目前有實坐出Class的JavaScript Lib，幾乎也都只有Class，其他似乎沒必要。但既然說要模擬Java的宣告方式，就索性得把這些方法都做出來了。 </description>
		<link>http://doublekai.org/blog/?p=1018</link>
			</item>
	<item>
		<title>Firebug Lite</title>
		<description>原本以為FireBug只有在好用的firefox才有的plugin，今天我二哥說…官方早就有一個叫Firebug Lite。囧rz...我竟然這麼晚才發現，害我每次在Firefox跑很順的網頁，在IE跑不出來，然後這個笨IE的錯誤訊息又令人抓狂。(不過通常在firefox正常的，ie不正常的原因往往都只有一個，就是在物件陣列裡了一個逗號)

var obj = {     
     param1: '參數1',
     param2: '參數2', //最後多了一個逗號，在IE就會出錯
}

anyway...這個是常常裡到才會記得的ie問題，但是如果不是這個原因就頭大了/__\，不過Firebug Lite的安裝方法比較不同，他並不是像firefox的插件，而是用javascript所模擬的，安裝方法就是直接在網頁中載入官方所提供的「firebug-lite.js」，載入的方式有三種：


//第一種是直接以絕對網頁的方式指定官網的firebug lib網址：
http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js



//第二種是把firebug-lite.js下載回來自己的電腦，再載入：
myproject/js/firebug-lite-compressed.js



//第三種是把官方提供的快速鍵，加入到我的最愛
Firebug Lite as bookmarklet
Drag the following link to your bookmark toolbar and use Firebug Lite on any page:

Firebug Lite  </description>
		<link>http://doublekai.org/blog/?p=1004</link>
			</item>
	<item>
		<title>哪一種程式語言好？</title>
		<description>哪一種程式語言比較好呢？

通常會提出這個問題的是一個剛想踏入暗黑程式界的初心者程式設計師
希望在一開始就能夠選擇對的路，拜對師門。我的經驗告訴我，不論你
選擇哪個門派，唯有一種結果是肯定的

「絛絛道路通爆肝」
「欲成高手，必先爆肝」

通常討論或提到這個問題所得到的回應，大多是各語言擁立的支持者
開始互相抨擊對方有多爛，然後誇讚自己有多好。

這不知道算不算是一種迷失呢，深陷在追求強化效能語言漩渦裡

企管有一本相當有名的小說叫「目標」，作者是高德拉特，一個TOC制約法創始人。
至於什麼是TOC法則，可以到圖書館借閱這本書，讓自己觀念獲得翻新。

或許用TOC來比喻我接下來要講的內容有點不符合，但我覺得這和TOC
想要傳達的意思很像，如果有TOC高手發現我說錯了，也煩請指點糾正。

你必需想想程式最終的目的是什麼？

「寫出一個系統，讓N個使用者使用」

假設有兩種新的程式語言叫OGC和ORZ，一個效能超高，學習曲線高
一個效能普普，學習曲線低，每年有10000名投入這兩種語言的學習者
如下表：

			OGC	　 ORZ
===================================
效能(反應）  	 0.3s      1.5s
易學度　　　   	　 2%     10% 
每年精通程式高手     200p　 1000p 
伺服可負荷量      10000kp   200kp
高手分享資源           3%   ...</description>
		<link>http://doublekai.org/blog/?p=998</link>
			</item>
	<item>
		<title>ClassScript：類別的Extends(繼承)與Implements(實作)</title>
		<description>物件導向的核心價值來自於繼承的機制，當然ClassScript少不了實作此方法。

首先我們來宣告父類別

Abstract.Class("Animal")(function(){
    var name

    this.constructor = function(n){
        name = n
    }

    this.getName = function(){
        return name;
    }

    this.setName = ...</description>
		<link>http://doublekai.org/blog/?p=975</link>
			</item>
	<item>
		<title>ClassScript：靜態、私有與公開屬性</title>
		<description>續上一篇「像Java一樣的寫法來宣告JavaScript的Class」簡單的介紹Class的宣告方式，這篇針對屬性的特性做說明，ClassScript除了實作靜態屬性，也實作了封裝的特性，雖然不是百分百模擬其特性，但在使用上就像是封裝的特性。接下來一一說明使用方法：
1.私有屬性 - 使用 var 宣告，直接使用 變數 操作
Class("Animal")(function(){
    var name

    this.constructor = function(n){
        name = n
    }

    this.getName = function(){
        return name;
    ...</description>
		<link>http://doublekai.org/blog/?p=961</link>
			</item>
</channel>
</rss>
