好一個SSL認證網站
ssl網站的網址應該是https:://開頭的吧=_=
Kohana Captcha module - securimage
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 '<p style="color:green">Good answer!</p>'; } else { echo '<p style="color:red">Wrong answer!</p>'; } } // Show form echo form::open(); echo html::image('image/securimage',null,true); echo form::input('imageCode'); echo form::submit(array('value' => 'Check')); echo form::close(); } } // End Welcome Controller
國軍青年日報網站
話說...我從google新聞看著看著無意間連到這個網站,而且他相當在乎使用者的感覺,所以做了一個很貼心的投票,如下圖:

呃...至少也要考慮一下其它瀏覽器的使用者吧/__\
現在我懷疑政府機構的案子,外包條件中的「無障礙網頁」,是把圖片貼上去就可以了嗎XD
filectime 和 filemtime 的差異
最近會使用到「取得檔案最後修改的時間」,從PHP手冊發現有兩個功能描述幾乎一模一樣的函式filectime()與filemtime,當然很自然的好奇倒底是差在哪邊,所以就用G大仙查了一下,很慶幸在「這篇討論文」有找到由coopster所提出的解答:),而且還特別說明了fileatime這個函式
Read the rest of this post »
Native
經由 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. 當原生類型已經存在的方法,並不會被實作出來(已經有了何必再做呢ˊ_ˋ)
ClassScript
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的宣告方式,就索性得把這些方法都做出來了。
Firebug Lite
原本以為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」,載入的方式有三種:
Read the rest of this post »
哪一種程式語言好?
哪一種程式語言比較好呢?
通常會提出這個問題的是一個剛想踏入暗黑程式界的初心者程式設計師
希望在一開始就能夠選擇對的路,拜對師門。我的經驗告訴我,不論你
選擇哪個門派,唯有一種結果是肯定的
「絛絛道路通爆肝」
「欲成高手,必先爆肝」
通常討論或提到這個問題所得到的回應,大多是各語言擁立的支持者
開始互相抨擊對方有多爛,然後誇讚自己有多好。
這不知道算不算是一種迷失呢,深陷在追求強化效能語言漩渦裡
Read the rest of this post »
ClassScript:類別的Extends(繼承)與Implements(實作)
物件導向的核心價值來自於繼承的機制,當然ClassScript少不了實作此方法。
首先我們來宣告父類別
Abstract.Class("Animal")(function(){ var name this.constructor = function(n){ name = n } this.getName = function(){ return name; } this.setName = function(n){ name = n; } });
接下來宣告子類別
Class("Dog").Extends(Animal)(function(){ this.showName = function(){ alert(name); } })
建立Dog物件,並呼叫方法
var d = new Dog("Bob"); alert(d.getName()); //→ 顯示 "Bob" d.showName() //→ 顯示 ""(null) 私有屬性不會被繼承,所以沒有定義name變數
ClassScript:靜態、私有與公開屬性
續上一篇「像Java一樣的寫法來宣告JavaScript的Class」簡單的介紹Class的宣告方式,這篇針對屬性的特性做說明,ClassScript除了實作靜態屬性,也實作了封裝的特性,雖然不是百分百模擬其特性,但在使用上就像是封裝的特性。接下來一一說明使用方法:
1.私有屬性 - 使用 var 宣告,直接使用 變數 操作
Class("Animal")(function(){ var name this.constructor = function(n){ name = n } this.getName = function(){ return name; } this.setName = function(n){ name = n; } }); var oneAnimal = new Animal("狗"); alert(oneAnimal.getName()); //→ 顯示 '狗' alert(oneAnimal.name); //→ 顯示 'undefined' (未定義)


