2010年3月30日 星期二

C# 4.0 dynamic 關鍵字與 ExpandoObject

昨天翻了一下 Apress 的 Introducing .NET 4.0,看到動態語言特性的部分,一個很面熟的 expando 字眼出現在面前,它是 ExpandoObject

不清楚 expando 一詞多久以前就出現了,但是如果是 JavaScript 就不能不提 expando 特性,它讓任何一個物件能隨時隨地的被賦予新成員 (包含屬性和函式)
// JavaScript
var data = new Object();
data.name = "Dino";
data.sex = "Male";
另一種 JavaScript 等價程式碼 (JSON 表示法)
// JavaScript
var data = { name: "Dino", sex: "Male" };
程式執行下來 data 含有 name、sex 這兩個屬性,並且值也被賦予了,我不必先為他產生類別定義,多麼簡單直覺!

2010年3月28日 星期日

Lazy Load - jQuery plugin for lazy loading images

之前在瀏覽一些網站時,發現有些網站圖片內容載入好像稍微慢了一些,像是 The Ultimate jQuery List

仔細的觀察一下行為,就會查覺到這些網站的圖片載入的速度其實並不慢,只是圖片會在捲動到可視範圍內才開始載入。

這麼作真適合版面較長的網頁,可以舒緩伺服器端的瞬間吞吐量,能夠增加效率而且並不難,已經有現成的 Lazy Load Plugin for jQuery 能用,真是一整個開心吶。

簡介一下使用方法,除了 jQuery,你還需要先下載 jquery.lazyload.js,並且在網頁中把它們都載入。

2010年3月25日 星期四

C# 排列組合練習, 使用 extension method and yield return

此例用飲料口味甜度冰塊作為測試情境為求容易理解。

測試資料集 optionValueSet 型態可為 Dictionary<string, List<string>> 或 Dictionary<string, string[]> 等,主要是因為 extension method 設計對象為 IDictionary<string, IEnumerable<string>>。

主程式 (Program.cs)