2007年1月26日 星期五

擴充 Blogger 功能: blogger_ext2.js 0.4b 版本發表。

經過大家的測試及建議, 0.4b 版本加入了目前所有回應建議的功能嘍:

  • Sidebar 中的網頁元素 可以自動元素 "[-]折收/[+]展開" 功能。 (0.3b)
  • 繼續閱讀支援 Link 至 post 的 URL, 而非 [+][-] 展開內容。 (0.4b)
  • 支援 網誌作者回應 時文章高亮度顯示。 (0.4b)


##CONTINUE##

只要引用 http://racklin.googlepages.com/blogger_ext2.js 的網友已經可以直接使用新功能嘍,只要加上相對應的設定值即可。

相關使用說明及設定,請參考

擴充 Blogger 功能: jQuery way!

謝謝大家!

2007年1月23日 星期二

CSS 3 Selectors

以往在和設計配合 CSS 時,都只用到 CSS1 Selectors 功能而己 :(
並沒有認真去了解 CSS1 , CSS2 到 CSS3 Selectors 的差異及改進是什麼。
自從將專案改用 jQuery 後,不再只是利用 $('Id') 查找物件了。

##CONTINUE##
CSS3 主要支援了利用標籤、class、ID、萬用符號、屬性、屬性值做搜尋,
利用了 CSS3 Selectors 的彈性,真的讓 Javascript 設計及規劃上改進許多。

CSS3 Selectors 相關網站介紹:
http://www.xml.com/pub/a/2003/06/18/css3-selectors.html
http://www.w3.org/TR/2001/CR-css3-selectors-20011113/

jQuery 支援的 Selectors:
http://docs.jquery.com/DOM/Traversing/Selectors

2007年1月22日 星期一

jQuery: 實用 plugins(1) form.js

利用 jQuery 的 selector 來 find Element 再操作非常的容易也愉快!
如取 radio 的值 :

$("input:radio[@name=fieldname][@checked]").val();

這樣一行就可以得到 checked RadioBox 的 String Value.

然而,同樣的程式在 Checkbox 或 Multi-Select 就行不通了。
##CONTINUE##
為了充分利用 jQuery 的 Chainable ,可能會嘗試程式碼:

var values = [];
$("input:checkbox[@name=fieldname][@checked]").each(function(){ values.push($(this).val())});
return values;

怎麼樣也沒辦法在一個 chainable statement 寫完。


Form.js 登場:
在 jQuery plugins 中有個 form.js 的 plugin,pack 完後只有 4K,可以讓 field 的求值表現的更加美麗,同上的例子,可以統一改變如下, 無論是 radio, checkbox, multi-select:


$("input:checkbox[@name=fieldname").fieldValue();


會自動回覆 String(input=text, textarea, radio, checkbox, select) or Array of String(checkbox, multi-select).

另幾個好用的特性是 formSerialize 將整個 Form 轉成 QUERY_STRING 的字串。
fieldSerialize 類似 formSerialize 只是將選擇的 element 轉成 QUERY_STRING。

2007年1月21日 星期日

jQuery: 又一個非常優秀的 JavaScript Framework.

又一個非常優秀的 JavaScript Framework。 誠如它的官方網站所述:

jQuery: The Write Less, Do More, JavaScript Library: "jQuery is a new type of JavaScript library.

jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. jQuery is designed to change the way that you write JavaScript."

What does jQuery code look like? The quick and dirty:

$("p.surprise").addClass("ohmy").show("slow");

我喜歡及推它的原因有五個:

##CONTINUE##

一. Selector:


同大部份的 framework , jQuery 亦是使用 $ 當做選擇物件指令,然而它的 Selector 則更加的靈活及好用,它利用了 CSS3 , XPATH 做為 Selector , 所以我們可以看到以下:

$("#myDiv") => 同 document.getElementById("myDiv") 或 prototype $("myDiv")

然而,以下就神奇了:

$("ul > li ") => 找出 UL 下的 LI
$("div.posts .post") => 找出 Div Element 而 class=posts 下的 class=post element.
$("input:radio") => 找出 input type=radio 的所有物件。


二. Chainability 連鎖呼叫
看到官方的首頁例子,它就是要表達這個概念 :
$("p.surprise").addClass("ohmy").show("slow");
So, Magic!! 這就如同 Java 中的 StringBuffer 及大部份需要 Chainability 的 function 一樣,它總是傳回自已的參照,讓您可以一直串下去,一行程式搞定。

jQuery("div.posts .post").next().removeClass().addClass('comment-body-author').css("font-size", "12px;");



三. Event 及 $(document).ready


可以很容易的實作 event , 如:
$('a').click(function (e){ alert('you click');}); 為所有 a 加上 onclick event.

可以很容易加入function 到 document.onload 中,如:
$(document).ready(function(){}); 或 $(function(){});


四. 沒有覆載任何 javascript 的 build-in objects:

這點比較見人見智,但我喜歡純淨非侵入式的 framework, 如 prototype 提供了 String.trim 的擴充,在使用起來相當直覺,但對於初入門或查找 Docs 上,你會分不清哪些 method 是 build-in, 那些是被 extends 出來的。
而 jQuery 則是只在 jQuery ($) 的 namespace 下擴充,所以同樣的 trim ,是這樣表示的 $.trim(String) 。看起來對於 String Object 比較不 oo , 然而,很清楚的可見區分,這個 trim 是由 jQuery 來提供的,不用到 W3C 去找文件 :D


五. small footprint:

若是使用 normal 版本,整個 jquery.js (56K), pack 的版本,整個 jQuery(21K) 而己,且已包含大部份常用的擴充(core,ajax,fx)

2007年1月17日 星期三

Java and JSON

引自 ONJava.com 的文章,讓 Java POJO 能直接 serialize 成 JSON Format,或由 JSON Format unserialize 回 Java POJO ,透過 XStream 的 toXML 和 fromXML 相當容易及實用。

##CONTINUE##

Java and JSON
from ONJava.com by webmaster@oreillynet.com (Dejan Bosanac)

It seems that JSON vs. XML debate was one of the hot topics for this winter. Again, I think that “vs.” part is sufficient and that both XML and JSON should have their place in overall technology landscape. One of the obvious JSON advantages is that it can be directly evaluated in JavaScript. And for the Ajax-world we live in, it is not a small thing.

For one project, I started looking for a library that would enable me easy transformations between Java and JSON data. JSON in Java looks nice, but what I really want is a more automated and configurable library like those we have for XML processing. My first thought was XStream since I like its simple API, extensible architecture, powerful converters and support for annotations. After first check I found that from version 1.2 on there is a partial support for JSON (which was logical thing to expect). So, currently you can serialize your Java objects to JSON format."

2007年1月16日 星期二

台灣高鐵 beta 2.0

正當台灣高鐵歐先生宣布,由於系統技術問題無法克服,延長試營運半價到一月三十日時。
大家一定很好奇這麼先進的訂票系統,會重覆劃位,還有暫時無法提供線上和網路訂票服務是怎麼開發出來的。
看到這篇同是技術人員的朋友寄給我的這篇Mxcroxoft 案例研究 ,我笑了…
台灣高鐵
跳躍的思考,卓越的技術應用 微軟 Windows Server 2003「終端服務」協助台灣高鐵建構低成本、高安全的作業環境
http://www.microsoft.com/taiwan/resources/casestudies/case/case003_highway.aspx

##CONTINUE##


相關新聞:

聯合新聞網| 國內要聞| 高鐵將試營運| 程式修改不當售票連線續當

高鐵售票第二天還是有狀況。由於程式修改不當,昨天中午起各車站售票機與訂位伺服器無法連線,造成售票機運作斷斷續續。 ... 台灣高鐵前晚開檢討會到凌晨兩點,會中高鐵公司對研發購票系統的神通電腦表達強烈不滿,執行長歐晉德要求每一台售票機旁都要有 ...

2007年1月13日 星期六

亂倉打鳥輸入法~~

在 gcin 網站無意中發現的輸入法。 試用了一下。 感覺不錯…
規則和倉三一樣,只是增加了更多的詞句以及倉三常錯的字,也加入(也就是將錯就錯:D)

http://cle.linux.org.tw/trac/wiki/NewCJ3Cin


##CONTINUE##

"亂倉打鳥 - 融合倉頡三代及大新倉頡的優點,支援常用詞及日文字母的輸入,提供一個更快速、更簡單好用的輸入環境,同時適合新手及倉三、快倉的老手們來使用 ..:P"

2007年1月12日 星期五

台灣高鐵beta ???

在這個 Web2.0 時代.. 什麼服務後面都掛著 beta , 讓使用者嘗鮮, 體驗...

台灣高鐵也搭上了 Web2.0 的風潮嗎???? 也在 台灣高鐵beta 嗎???

當初一堆評審委員出來說系統未全部驗收完畢, 居然還試營運至今..
每天都有狀況每天都有負面消息, 這是拿人命當 beta 測試嗎???
這樣還不停下來好好改進系統再開始試營運, 要等要什麼時侯? 等到出人命嗎???

唉... 夠了~~~~

各語言下的 php like strig_tags.

由於在處理網頁內容及HTML內容過濾, 很常需要將部份 HTML Tag 去除.

在 php 中有內建的 strip_tags 非常好用, 不但能去除Tag, 亦可以接受部份 allow tags.

以下為各語言下的 php like strip_tags.

cakephp bug with PostgreSQL

由於日前將 MySQL 轉移至 PostgreSQL , 原本登入系統突然不能用了..
但是系統並沒有報錯誤, 就是沒有任何人能登入, 都是帳號不存在.... :(

由於使用 CakePHP 開發, 於是往 CakePHP 的方向一路追下去...
發現是 CakePHP 在產生 condition sql 上有問題conditionKeysToString(),
它直接利 php 的 is_numeric 來判斷 value 是否為數字來決定加入引號 (quote)與否,
而由於我們帳號欄位在 PostgreSQL 的 ColumnType = varchar ,
但使用者的帳號能使用如: 001,002,003 之類的純數字帳號.

CakePHP 產生出來的 Condition SQL 會是不含 ' quote 的, 這在 MySQL 會過, 在 PostgreSQL 也會過, 但是不會有任何 ResultSet 回來.. 所以沒有人能登入原系統 ... :(

已報到 cakephp 的 trac 中了.. 希望對有和我一樣發生的人有幫助.

#1927 (db_source.php conditionKeysToString() bug with PostgreSQL) - CakePHP : The Rapid Development Framework for PHP - Trac

2007年1月9日 星期二

ruby 下的 strip_html

類似 php 下的 strip_tags , 可提供 allow_tag !!

   def self.strip_html(str, allow = ['a','img','p','br','i','b','u','ul','li'])
str.strip!
allow_arr = allow.join('\\b|') << '|/'
tag_pat = %r,<(?:(?:/?)|(?:\s*))(?!#{allow_arr}).*?>,
str.gsub(tag_pat, ' ')
end

http://www.bigbold.com/snippets/posts/show/535

2007年1月6日 星期六

GCIN 中文輸入法簡介

一個對 GCIN 介紹很詳盡的網站...

今天的 Tetralet 又在唧唧喳喳了 | GCIN 中文輸入法簡介

GCIN 是由 Edward Liu(同時也是 XCIN 的開發者)所開發的 Gtk2 based 中文輸入法程式,支援了倉頡倉頡五代標點倉頡注音詞音大易行列嘸蝦米(因版權問題,僅支援但程式本身沒有內建)內碼簡易日本式... 等等眾多輸入法,且支援像是倚天倚天 26 鍵許氏鍵盤... 等等鍵盤排列方式,加上本身輕巧快速穩定等等眾多優點,若說在當今眾多中文輸入法之中首屈一指的乃是 GCIN,個人認為應該是當之無愧。