1. 建立XML新文件
document.implementation.createDocument() / MSXML2.DOMDocument
load / onload or readyState
2. 利用<xml>建立網頁中的資料庫
3. 利用DOM or XPath操作XML
4. JSON -> 用eval or JSON parser處理 JSON回應
About Me
星期日, 3月 16, 2008
Javascript 與Http and XML
Javascript 與表單 Form / Cookie
Form
- Button tag
defines a group of form elements as being logically related. The browser draws a box around the set of fields to indicate that they are related.<FIELDSET>
Cookie
- IE userData 永存機制
Javascript 與 event
1. 基本事件
- 於HTML attribute以及javascript宣告事件處理
- 留意event handler的範圍
2. DOM Level 2
- 事件會從Document物件往下傳播, 如果標的節點上層任何的祖先節點有註冊一個事件處理器, 則這些處理器也會執行. 由第三個參數決定
- bubble phase又會將事件往上傳遞
- addEventListener() 註冊事件, stopPropagation() 終止往上傳遞
- 可為一個物件註冊好幾個事件
- event
- IE使用不同的界面, event物件為廣域變數
Javascript and image
1. 利用XHTML為HTML增加新的attrtibute
2. 利用 Image.onload 來判斷image是否已經load
3. 利用 new Image() 來進行image preload
4. SVG 與 VML
星期六, 3月 15, 2008
Javascript 與 CSS
1. CSS position的定位類型
static, absolute, fixed, relative
2. CSS box model
margin
border
padding
width
3. Clip 與透明度
4. 操作inline, className and class rule
5. 有closure的應用
星期四, 3月 13, 2008
Javascript
物件
1. 如何建立一個物件
==> var obj = { a:1 , b: 2}
也可以後續再指定屬性
var obj = {}
obj.a = 1
obj.b = 2
2. 如何檢查某個物件是否有某個屬性
if (obj.a)
3. 可以用讀取陣列的方式讀取屬性
obj["a"]
易於用變數的方式去讀取屬性, 讓user input的字串來決定讀取哪個變數
函式
1. 函式可以assign給一個變數, 或是當成參數, 或是寫成不具名 (只用一次)
var f = function() {}
a.sort(function() {} )
var a = ( function() {} ) ()
2. function可以接受用任意個數的參數呼叫, 預設arguments物件可以依序讀取每一個變數
同時可以從arguments取得 callee & caller
3. 以物件的方式傳遞參數, 可以避免寫死參數順序與個數
4. apply & call
如果function中有用到this, 則其對象變成指到o
f.call (o, 1, 2)
==> o.m = f; o.m (1,2,) ; delete o.m
類別
1. 寫的很像function, 不過主要是再初始化內部變數
method 指定在 prototype上
new operator接的function name意思是指定該function為constructor
prototype的指標也會指到該function的prototype指標上
* add on 2008/9/21
- function在生成時,會同時生成prototype and prototype.constructor=自己
- new運算子生成空物件後, 會把空物件直接由function.prototype繼承所有屬性
2. Class variable / method 直接指定在Class上
3. function class( a,b ) { /* ... */ }
4. function body就是constructor也是代表這個class物件
new class() ==> 拿到的就是prototype
星期三, 3月 12, 2008
關於SSL憑證
最近公司又要Launch新的網站
不能免俗的又要申請新的SSL憑證
很奇怪不知道為何每個新的網站都要用這麼不同的domain name
如果可以有點規則的話,就可以申請 Wildcard SSL了
不過到底是沒人想過,還是有人想過但是有其他考量
就不是我這個小工程師可以置喙的了
有鑑於之前都把申請SSL這件事情交給IT
從來沒有好好的SURVEY過
現在跟IT的關係搞的有點糟,而且IT做事感覺不太牢靠
所謂靠山山倒、靠樹樹倒,還是靠自己最好
市面上提供SSL服務的CA還不少
每個CA又提供了不同種類的產品,一時還真不知道該如何比較起
稍微Google了一下
中文的網頁沒啥人再討論,大概只有這幾篇在討論
台幣萬元以下 SSL 憑證選購指南
选择 SSL 证书提供商
國外的則較多
例如 SSL Web Certificate Choices
我稍微歸納重點如下
- 一定要選擇 Single Root CA
- 如果要確認Browser支援度(如IE 5.0以前),選擇歷史較悠久的CA如Verisign, Thawte
- 需要給客戶更強的信賴感,請選用有提供 Extended Validation certificate identification 的廠商如Thawte, 這個憑證可以讓IE7以上的address bar變成綠色

- 如果沒有Browser或EV的考量,選擇便宜的為佳,如 RapidSSL
最後,在申請前,可以上網找一下有沒有特惠價,幫公司省一點荷包也是不錯啦
星期四, 3月 06, 2008
Design Pattern - Template Pattern
Template Pattern
要點 將一個演算法的骨架定義在一個方法中, 而此骨架中應用到的方法定義為abstract, 由次類別決定 (或是由外部傳入的物件行為決定)
如此一來可由次類別或外部傳入的參數物件動態的改變演算法中的某部份
應用 Hook
Design Pattern - State Pattern
State Pattern
要點
程式中因為許多不同的狀態而有不同行為時, 可以將這個狀態所對應的行為封裝
外部使用者只要更換狀態即可以改變行為
Design Pattern - Iterator & Composite Pattern
Iterator Pattern
要點
如果有物件類部包含一聚合的attribute, 需要被瀏覽檢視, 有的物件是用ArrayList or List or Hashtable,
外部使用者必須面對不同的對象處理, 改封裝成Iterator, 可以隱藏內部實際的implementation, 讓使用者面對一致的對象處理
可利用java.util.Iterator
Composite Pattern
要點 讓屬狀結構中的Node與Leaf實踐同一介面, 讓需要瀏覽數的外部使用者可以用一致的方法處理物件
對於互相不支援的method, 可用UnsupportedException 處理
Composite Iterator
用Iterator的方式可以瀏覽一個樹狀結構, 需要紀錄訪問的Node等
設計守則
一個類別應該只據有一個改變的理由
星期三, 3月 05, 2008
Design Pattern - Facade
Facade Pattern
要點
當需要連續呼叫一連串的物件方法才可以完成一個要完成的事, 可以將這一連串包裝成一個method, 以後只要呼叫這個method即可
設計守則 - 極少化, 減少物件中須要認識的物件數, 物件中呼叫的方法必須是
- local method
- 被當作參數傳進來的物件的方法
- local variable的method
- local create的物件的方法
public float get Temp()
{
Theromoeter t = station.getThermometer();
return t.getTemp();
}
優點可減少物件之間的依賴程度, 減低維護成本
缺點是會大量增加包裝物件, 以及降低執行時的效率
Design Pattern - Adapter
Adapter Pattern
要點
與Decorator類似, 但Adapter只轉換, 並不增加功能.
其實也可以直接改寫該物件的界面, 但有可能手邊並沒有原始碼, 或是改寫成本過高.
星期二, 3月 04, 2008
Design Pattern - Command
Command Pattern
要點
如果硬寫, 會需要一連串的if else. 透過Command的界面轉介, 發出請求的物件只要直接呼叫execute, 封裝的Command物件
會自己去處理接收者的執行動作
應用
- Undo - 將執行過的Command紀錄下來放到Queue裡面, 要復原的話, 直接呼叫Command的undo()
- Queue - 拿出物件後直接呼叫execute, 不必管Queue裡面放的是什麼物件
- Log Restore - 將執行過的command封裝紀錄下來, 如果遇到Crash, 直接load Command的execute即可回覆原來的操作
Javascript Closure 的概念與應用
最近讀到了javascript closure
搞得有點一頭霧水,Google了一陣子之後
總算有點瞭解,在這邊做點記錄
- 概念
在函數a之中宣告的內部函數b,此內部函數b可讀取該函數a的區域變數
即使a已經離開他的scope.
function a() {
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();c();c();
以上例而言,會得到0,1,2,表示即使var c=a() 結束之後,a的區域變數i仍然持續存在 - 特性
- 不同次呼叫的closure,local變數為個自的,而同次呼叫的則共用
- 使用時要特別注意哪些屬於closure變數哪些不是
- closure變數的值決定於return當時(或是呼叫執行)的狀態(binding value), 而非宣告當時 - 作用
- 可模擬私有變數,因為變數i只有透過b()才可更改
- 當需要一個持續存在的變數時,可以避免使用廣域變數影響命名空間
- 做breakpoint追蹤目前變數情況
- 參考資源
Javascript Closures
http://www.javascriptkit.com/javatutors/closures.shtml
Design Pattern 裝飾者模式
裝飾者模式 (Decorator Pattern)
要點
裝飾者可附加被裝飾者原本的method
Design Pattern - 觀察者模式 Observer Pattern
觀察者模式 Observer Pattern
觀察者實踐同一個界面, 被觀察者須提供register, remove, notify等method.
觀察者向被觀察者註冊, 一但被觀察者發生改變, 即可依序呼叫觀察者的update()
須注意不可依賴呼叫的順序
設計守則
星期一, 3月 03, 2008
陳金鋒退出奧運八搶三資格賽
剛剛才在Yahoo新聞看到陳金鋒確定退出中華隊
心裏其實高興比擔心多一些些
陳金鋒已經三十歲了,為國家付出的也夠多了
實在沒有必要硬撐,也應該要為自己的職業生涯打算
La new可是一年花一千萬在他身上
遲早有一天中華隊必須要習慣沒有陳金鋒的日子
與其晚面對不如早面對
多給機會培養能打大比賽的好手
才不會遇到不能徵召就沒人可打的窘境
希望台灣的球迷們可以給這些國手真正的支持
不論勝負都應該要給予鼓勵
而不是勝了捧上天,輸了罵到臭頭
這樣整個國家才會進步
我們的棒球運動才能成長茁壯
中華隊,加油!
Design Pattern 工廠模式 Factory Pattern
Simple Factory
與Framework類似.
讓高低元件都依賴中間的一個抽象類別
設計守則
- 依賴抽象類別而非實體類別 (不要用new)
- 變數不可以據有具象類別的參考
- 不要繼承一個具象的類別
- 不要override方法
Design Pattern 策略模式 Strategy Pattern
策略模式 Strategy Pattern
用合成的方式提供物件行為, 可以定義為演算法家族封裝起來, 容易互相替換也不易影響使用該演算法的程式
設計守則
- 找出程式中可能需要更動之處, 把他們獨立出來, 不要和那些不須要更動的程式碼混在一起.
- 針對界面寫程式, 而非Implementation寫程式
- 多用合成, 少用繼承
星期日, 3月 02, 2008
極光拍攝方法簡介
這次為了拍極光, 上網找了不少資料, 也翻閱了手邊的書籍
深怕有一個閃失, 會錯失拍攝極光的好機會
不過其實在極光出現的當時, 因為現場實在太冷, 也怕搞太久極光就消失了
根本沒有時間去想那些有的沒的
所幸這次拍回來的極光還算可以看
順便在這裡記下一些心得
1. 裝備
a) 單眼數位相機 - 現場因為氣溫太低, 掛掉很多傳統相機, 但還沒看到數位的掛掉, 所以建議攜帶數位的單眼相機
b) 快門線 - 必備, 用手按快門等拍完應該會結凍, 或是被黏在相機上
c) 腳架 - 不用多說了
d) 備用電池 - 不用多說了, 一組肯定不夠
e) 大光圈鏡頭 - 可以減少曝光的時間, 一方面減少雜訊, 一方面可以減少在戶外冷凍的時間
2. 拍照時的設定
a) 以ISO 400為佳, 我的*istDS大概只能用ISO400, 如果手上是 D3之流, 就不用管我說啥了
b) 光圈開到最大, 手動對焦至無限遠
c) B快門, 時間依極光亮度及ISO而定, 約一分鐘上下應該OK
d) 關掉NR, 否則拍一張會等很久才可以在拍下一張, 回來自己在用軟體做NR
3. 其他
有人會說盡量不要戶內外進進出出, 以免相機結霜故障
不過在當場應該是很難一直待在戶外
我大概拍個三五張就得回小屋取暖
一進到戶內相機產生水滴時盡量不要在開機
所幸相機有撐住, 供大家參考
2008 新年 阿拉斯加極光之旅 Alaska Aurora Trip
趁著過年幾天的年假,加上偷偷請了三天假
跟女友一起到阿拉斯加走了一趟,想去看看傳說中的極光是甚麼樣子
出發之前看著世界各國紛紛發生大雪災情,實在非常擔心這次的旅行是否會泡湯
到了當地果然遇到當地的寒流,遇到了不知道是幾年來最冷的天氣
最低到了-46度C,實在很難用言語說出那倒底有多冷
不過幸運的是大部分的行程還堪稱順利
只可惜因為鐵道上有其他車輛發生故障,沒坐到"北極特快車"
不多囉唆,看照片吧
機司:Pentax *istDS + DA 16-45 + DA 55-200 + 35 F2
Easy Showily
1. 中正機場的Hello Kitty候機室
一過海關便迫不及待的前往傳說中的Hello Kitty候機室,果真名不虛傳,一整個可愛夢幻到不行

2. Welcome to Alaska !! 真是一整個冰天雪地的

3. 就是那個光!花這麼多錢,全為了這幾道綠光啊






拍完之後相機變成這樣了,叔叔有練過,小朋友不要學啊
4. 今天跑去玩狗拉雪翹,每隻狗都好有活力啊,不過其實拉我們的小狗到最後好像有點沒力快拉不動了,該減肥啦XD

5. 聖誕老公公的家,不知道為什麼這裡也有,聖誕老公公不是住芬蘭嗎?

6. 在黃金心臟公園前的紀念銅像
剛好遇到年度的Yukon Quest狗拉雪翹大賽!每年從這裡出發要跑到加拿大的白馬鎮,全程一千六百公里, 要跑一個禮拜哩
內閃不知道打到哪去啦XD,每隻狗都好興奮好有活力啊
出發啦,加油吧,大家看照片的同時他還在路上跑!(追焦追不到XD)
7. 本來要從Fairbank搭景觀火車回Anchorage的,可惜 ... 無緣的北極特快車

8. 這天來到Anchorage北方的小鎮Talkeetna,真是個很有特色很溫馨的小鎮
這裡的房子加上厚厚的積雪,真的很像薑餅屋喔


9. 可愛的北極熊 ~~~ 可惜是在動物園裡的 ... 下次要來看真的

10. 峽彎冰河遊船,本年度第一班!夠幸運了吧,哈,之前都因天氣不好未開, 不過好晃啊,一整個暈到不行,有機會來的話一定要吃個暈車藥
看到殺人鯨!
看到海豹!看起來好像一朵朵香菇,哈
到這裡整個旅行就告一段落了,短短的八天六夜真令人意猶未盡,下次在來囉 ~~~

