Web Development 的學習之旅

2008/08/23

Google Chart API - 簡單大方的 Chart

最近又發現好神的 Google 的新 API: Google Chart API

看看這個:

目前是還沒機會深入使用它, 不過光是這麼簡單的用法, 就非常吸引我了.

參考文章: Google图表及gchartrb初探
文章內除了介紹這個 API 外, 也介紹了封裝了這個 API 的 Ruby Library.

Ext 2.2.0 FileUploadField extension 的問題

Ext 2.2 又多了幾個重要的 component, 加油 Ext !!

FileUploadField 是 Ext 2.2 才開始有的元件, 且尚未納入正式的 API 內.

目前用 FileUploadField 最大的問題在於, 置於 TabPanel 內, FileUploadField 的 Input 長度會設定不正確. 由於我目前沒能力(或是沒時間?) 把它改得更好, 只好直接使用暴力法, 在 FileUploadField 物件產生後, 直接去修改其 css width 屬性(通常在 doLayout 之後做, 比較保險), 硬是把它調整過來:

Ext.getCmp(field_id).getEl().setStyle('width',null);

另一個問題是, FileUploadField 的 button 元件, 在 IE6 顯示下, 左半部按下會沒有作用, 右半部按下才會出現 dialog, 很明顯是 component render 時出了問題.

另外, 若是使用 hideLabel: true, 想把 fieldLabel 隱藏起來, 結果會整個不見. 目前只能把fieldLabel 及 seperatorLabel 清空來因應


總之, 這個元件還不夠成熟.

2008/08/17

使用 command-line 啟動 Eclipse

來源:

http://wiki.eclipse.org/Starting_Eclipse_Commandline_With_Equinox_Launcher



使用 BAT 來啟動 Eclipse 的一個好處是可以預先在 BAT 指定好各項環境變數. 若 ANT build 有需要讀取環境變數時, 在 BAT 內預先設定, 這會是很方便的方式.

2008/08/10

MySQL command-line[basic]

[mysqld]


mysqld --console

=>將錯訊息在螢幕上輸出. 省略此參數, 則會在 datadir 指定的資料夾內產生 .err 的文字檔.



mysqld --verbose --help

=>顯示所有的參數



mysqld --install

=>設定 mysql server 成為 Windows Service(預設 Service Name 為 MySQL)



mysqld --install MySQL50 --defaults-file=c:\my-opts.cnf

=>設定 mysql server 成為 Windows Service(Service Name 為 MySQL50), 並讀取 c:\my-opts.cnf 內設置的參數



mysqld --install-manual

=>設定 mysql server 成為 Windows Service(手動), 系統啟動時不會自動啟動 MySQL

mysqld --remove

=>移除 mysql server 為 Windows Service 的設定

net start [ServiceName] 啟動 Windows Service
net stop [ServiceName] 停止 Windows Service

[mysqladmin]


mysqladmin -u root shutdown

=>關閉 mysql server, 若 root 有設定密碼, 請使用 -p 指定密碼


mysqladmin version status proc

=>顯示 mysql server 狀態

[mysqlshow]


mysqlshow -u root

=>mysql 顯示資料庫[mysql]的內容

mysqlshow test

=>顯示資料庫[test]的內容

2008/06/04

Load resource file test / 讀取資源檔案測試

測試 function:
object.getClass().getResourceAsStream(filename);

Project 的資料夾結構:



結論:
* 只寫檔名只能找到與該 class 相同的 namespace 下的檔案.
* 若以相對路徑的寫法, 則 jar 檔內的檔案一律找不到. 即使在相同目錄也找不到.
* 以絕對路徑的寫法, 可以完全找到.


Project: ResTest1


package tw.purple.test;

import java.io.*;

public class ResTest1 {
public static void main(String[] args) {
ResTest1 test = new ResTest1();
test.runTest();
}

public void runTest() {
String[] pathList = {
""
,"./"
,"/"
,"../"
,"../../"
,"../../../"
,"/tw/"
,"/tw/purple/"
,"/tw/purple/test/"
,"/tw/yahoo/"
};
String[] nameList = {
"log4j_1.properties"
,"log4j_2.properties"
,"log4j_3.properties"
,"log4j_4.properties"
,"log4j_5.properties"
,"log4j_6.properties"
,"log4j_7.properties"
,"log4j_8.properties"
};

for (int i=0; i<pathList.length; i++) {
for (int j=0; j<nameList.length; j++) {
String filename = pathList[i] + nameList[j];
InputStream stream = this.getClass().getResourceAsStream(filename);
if (stream==null) System.out.print(" not found: ");
else System.out.print(" found: ");
System.out.println(filename);
}
}
}

}



Project: ResTest2

package tw.purple.test;

public class ResTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ResTest1 test1 = new ResTest1();
test1.runTest();
}
}

2008/05/23

Eclipse 一些開發環境設定

[關掉 Spelling]
在編輯文字檔案時, Spelling 會進行檢查, 不合格的英文字下方就會有 underline 出現, 看起來挺礙事的, 自己是完全不會用上併字檢查的功能, 就關了它吧.
Windows->Perferences:
General->Editors->Text Editors->Spelling

[調整常用 Editor 字體大小]
Windows->Perferences:
General->Appearance->Colors and Fonts

Basic->Text Font: 調整一般文字檔的字體設定
Java->Java Editor Text Font: 調整 .java 檔案的字體設定
Java->Properties File Editor Text Font: 調整 .properties 檔案的字體設定
Debug->Console font: 調整 Console View 裡的文字大小

[Validation]
Eclipse 在很多時候會執行 Validation 的動作, 若機器等級不夠, 可是會讓人等翻天.
Windows->Perferences:
General->Validation 內有各種的 Validation, 可視需要把不需要的關掉, 或乾脆全關掉.
當然, 也可以至某 Project 內的 Properties 單獨設定 Validation 的開關.

Axis2 Eclipse plugin: Code Generator 在 Finish 時產生 Exception: java.lang.reflect.InvocationTargetException

[版本]
Eclipse 3.3.2
Axis2 1.4

[問題原因]
主要的問題在於 Code Generator plugin 內缺少了 backport-util-concurrent-3.1.jar 檔案

[解決方案]
- 關閉 Eclipse
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到下列 folder
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

- 註冊此 jar 檔案: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , 在 <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

- 執行 Eclipse 即可

- 若問題仍存在, 嘗試改變 Eclipse 使用的 JRE, 換成 JAVA 6
- 使用 JRE 1.6 啟動 Eclipse 後, 若仍有問題, 試著加入 -clean 參數啟動 Eclipse, 清除 osig cache:
eclipse.exe -vm "c:\java\jre1.6.0_05\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M

- 關閉 Eclipse 後, 再以一般方式啟動 Eclipse, 應可解決問題

[參考]
Error while using Axis2 Code Generator Plugin for Eclipse
http://www.nabble.com/Error-while-using-Axis2-Code-Generator-Plugin-for-Eclipse-td17147595.html

同時安裝多個版本的 Firefox 及 IE

終於如願以償地擁有了新的 Notebook, 現在當然是要開始執行許多以來的願望了, 其中一個就是要有一個 VM 是專門用來測試不同的 Browser 的 -- 最簡單的環境, 但要有許多不同的 Browser.

目前我準備裝:
Firefox 3(RC1)
Firefox 2.x
IE 7
IE 6
IE 5.5

Firefox 多版安裝很好解決, 只要裝 Firefox Protable 即可.

IE 多版安裝就比較麻煩了...
* 首先由於系統是 WinXP, 內建的是 IE6, 安裝 IE7 時會要求驗證, 特地找來了這篇 blog 協助:

安裝IE 7 跳過驗證的安裝方法
http://hi.baidu.com/203x/blog/item/7d385dcf85eab43cf8dc6150.html
這樣會讓原本的 IE6 變成 IE7. 不過很奇怪, 我在第一次應該會失敗的驗證, 結果成功通過了, 或許是 MS 政策改變了吧(太多人想用它 !?)

* 接著安裝 MutipleIE:
Install multiple versions of IE on your PC
http://tredosoft.com/Multiple_IE
它提供了各種版本的 IE(IE3, IE4.01, IE5, IE5.5, and IE6), 選擇需要的安裝即可

2008/05/10

Tomcat manual install / 手動安裝

目前這裡寫的 tomcat 版本是: 6.0.16

1. 先確認已經安裝好 JDK 或是 JRE, 並且設定好 JRE_HOME 或是 JAVA_HOME 的環境變數. 這樣 tomcat 才可以執行.
例如: JRE_HOME=c:\java\jre1.6.0_05

2. 至 tomcat 官方網站(http://tomcat.apache.org/)下載 .zip 檔案:
apache-tomcat-6.0.16.zip

3. 解壓縮到欲安裝的目錄(例如: c:\server), 因此 tomcat 預設的根目錄會是:
c:\server\apache-tomcat-6.0.16

4.啟動 tomcat => c:\server\apache-tomcat-6.0.16\bin\startup.bat

5.測試是否安裝成功, 以 firefox 開啟 http://localhost:8080/ 可以看到 tomcat 的頁面, 表示安裝成功.

6.關閉 tomcat => c:\server\apache-tomcat-6.0.16\bin\shutdown.bat

實在是很簡單吧. 根本就是 copy & paste & run !!

這樣給了我們開發人員需要的彈性. 這樣可以安裝不同的 tomcat 版本, 不用擔心衝突的問題, 視需要才啟動需要的版本, 使得系統的負擔降到最低. 如果環境很簡單, 只有一個 tomcat, 也可以安裝成 service, 開機時就啟動 tomcat:

執行 service.bat
c:\server\apache-tomcat-6.0.16\bin\service install tomcat6

其中 tomcat6 是註冊到 windows service 的名稱, 可以自行定義.

若不重新開機, 要啟動tomcat service 的話, 直接執行: net start tomcat6

停止 service: net stop tomcat6

移除這個 service 的註冊(檔案不會被刪除):
c:\server\apache-tomcat-6.0.16\bin\service remove tomcat6

以上的安裝雖然可以裝多個版本, 但若需要同時執行多個 tomcat, 應該還需要一些設定, 以後有需要再來試試吧.

當然, tomcat 進階的設定一定還是有, 可以參考 Tomcat User Guide:
http://tomcat.apache.org/tomcat-6.0-doc/index.html

2008/04/22

MySQL 的手動安裝

下載 without installer 版本


下載版本: 5.0
網址: http://dev.mysql.com/downloads/mysql/5.0.html




解壓縮至需要安裝的目錄


此處範例: d:\server\mysql50


建立配置檔(Optipon File)


MySQL 在啟動時會自動尋找兩個位置的配置檔, 一個是 Windows 資料夾裡的 my.ini, 另一個是 c:\my.cnf

選擇 MySQL server type


mysqld-nt: Optimized binary with named-pipe support
mysqld: Optimized binary without named-pipe support
mysqld-debug: Like mysqld-nt, but compiled with full debugging and automatic memory allocation checking
這裡選擇 mysqld

啟動 MySQL


啟動 MySQL: 開啟 cmd, 輸入啟動指令:
D:\server\mysql50\bin>mysqld --console
若是第一次執行, 會是如下的畫面:


關閉 MySQL: 另外開啟一個 cmd, 執行如下指令:
D:\server\mysql50\bin>mysqladmin -u root shutdown

參數說明:


就可以在另一個 cmd 視窗看到 MySQL 被關閉:


測試 MySQL 是否啟動成功


D:\server\mysql50\bin>mysqlshow -u root mysql


將 MySQL server 設定以 Windows service 的型式啟動

2007/08/29

網頁之間的參數傳遞

不知道有多少人跟我一樣, 在剛接觸 Web Development(javascript) 時, 最想知道的答案的三大問題之一就是: 我要怎麼傳參數到另一個網頁呀 ?

就我目前的學習成果裡, 用了兩種方法, 而這兩種方法適用的地方不同.

一般的網頁利用 location.href


一般網頁是指像以 <a> 開啟的頁面, 可以 href 連結後方加入?的參數, 就像呼叫後端php程式一樣:

<a href="http://domain.com/new_page.html?name=vito&country=taiwan">new page</a>

在new_page.html 被載入後,即可讀取 location.href 取得完整 URL, 然後再利用 parseQuery 做解析工作, 得出參數.


function parseQuery ( query ) {
var Params = new Object ();
if ( ! query ) return Params; // return empty object
var Pairs = query.split(/[;&]/);
for ( var i = 0; i < Pairs.length; i++ ) {
var KeyVal = Pairs[i].split('=');
if ( ! KeyVal || KeyVal.length != 2 ) continue;
var key = unescape( KeyVal[0] );
var val = unescape( KeyVal[1] );
val = val.replace(/\+/g, ' ');
Params[key] = val;
}
return Params;
}

var params = parseQuery(location.href.replace(/^[^\?]+\??/,''));
v1 = params["name"] // vito
v2 = params["country"] // taiwan


註:parseQuery是我在 jQuery 的一個 plugin 內發掘出來的 function, 蠻好用的. 不過後來發現在一些 blog 都有提到這個 function, 所以真正來源目前我不清楚.

AJAX 載入的網頁, 不可使用 location.href, 可運用全域變數


由於使用 ajax 載入的網頁, 並未真的更新網頁, 因此 location.href 不會改變, 也就無法利用 location.href 了, 但也因此表示在 javascript 使用宣告的變數, new_page.html 是可以讀得到的(就像在同一個網頁), 當然, 我們要將全域變數管好啦.

AJAX 載入的網頁, 在 tag 內定義自訂的屬性, 當作參數


很多時候是藉由 click <a>, <img> 等 tag 觸發一個 function, 使用 ajax 技術載入一個網頁, 此時可在這個 tag 定義特殊的屬性, 當 click 觸發 function 時, 再讀取這個 element 的屬性值, 對載入的網頁做變化.

附註:
使用 ajax 載入網頁很困難嗎? 非也, 運用 jQuery, 只要一行 ajax 就收工了:

$("#product_wrapper").load("product_page.html");

假設 html 有個 div tag, id="product_wrapper".
以上 code 的意思是, 將 product_page.html 載入到 id="product_wrapper" 的 element 內.

2007/07/27

Basecamp 使用心得

Basecamp 是一個簡易的 Web 型式專案管理系統, 主旨是促使團隊的協同合作. 它有 messages, to-do list, milestone, writeboard, chat, file 等功能. 團隊成員可在裡面做訊息發佈, 檔案分享

message 其實就是討論區, team member 都可以發佈及回覆, 也提供 email 提醒的功能.
to-do list是待辦事項, 專案經理可以 assign 給某位成員, 並與 milestone 結合, 追蹤進度. writeboard 可以當作一個草稿區塊, 並讓 member 一起參與修改, 用這個功能把網頁內容草稿放在這裡讓客戶直接去改是最好的了. chat 提供多個 chat room, 每個 room 可以容納二位以上的 member 一同 chat, chat 包含了 message 及 talk, 也能即時上傳圖片至 chat room 裡, 使所有參與者看得到. file 就不多講了, 就是檔案上傳啦

以功能來看, 它並不提供很華麗或很龐大的功能, 它的功能都維持在最需要, 最簡單使用的層面上, 但又不忽略解決協同合作時會發生的問題及需求.

不必再管 server 一堆的鎖事, 就像租用虛擬主機一樣的意思. 我只要用它, 發揮出價值即可. Basecamp 的 writeboard, file 都提供版本控制的功能, 會將每次修改的版本都記錄區隔開來, writebord 甚至可以做 compare, 不過這些功能都維持在極簡易使用的型式. 跟有些大型合作軟體內提供的華麗功能, 它是相當樸素的, 不過只要使用者自己覺的夠用, 就好了. 像 compare, 若真的需要高級的 compare, 那我就取出這兩個檔案, 再用 Beyond compare 就好了.

說了一堆它的好話, 不過還是有一點不滿意, 就是它的英文操作介面. 雖然是這樣, 但我在裡面輸入中文並使用中文檔案名稱, 都沒有任可問題, 系統發出的 mail 中文字也能正確顯示. 希望未來會有中文的介面

2007/07/19

放下我執, 站在巨人的肩膀看這美麗世界

早上在看這本"超越式CSS"時, 突然想到一句話: "站在巨人的肩膀上", 沒幾秒鐘又想到了另一句: "放下我執". 瞬間感到有點奇怪, 這兩句話都是耳熟能詳的話, 但今天卻突然同時間冒出來, 沒多久我就瞭解了, 最後得出這句:

放下我執, 站在巨人的肩上看這美麗的世界

在學習的過程中, 會遇到不同世界裡的巨人, 由於主要是靠閱讀, 所以大部份不是真的遇到他們. 最近在閱讀時, 彷彿越來越能置身於其中, 感受巨人們想傳達的美麗世界, 閱讀時當心中愈沒有自我的聲音, 這種感受就愈強.

我的看法是...我的經驗是...我學過的東西是...我想說的是...我...我...都可能會造成障礙, 即所謂的知識障. 想要站在巨人肩上, 必須要放下這些障礙, 與巨人合而為一, 才能瞭解巨人們看到的世界.

這裡不是要說過往的知識與經驗不好, 這不是絕對好與壞的二元概念, 相同的知識或經驗在不同層次下, 會有不同的結果. 因此在才一直以"放下"來描述, 而不是以"放棄"來表達. 對我們而言是好的經驗, 在巨人的世界裡或許就不這麼一回事了, 想站在巨人的肩上, 不只是努力看書學習, 還要磨練自己的心性, 才看得到不同的世界.

2007/07/18

超越 CSS

今天很高興的運用 Firefox 裡用 Firebug 做 css 的修改, 還對自己修改得比較順手沾沾自喜時, 突然想到老婆都是用 IE6, 所以用 IE Tab 來檢視一下, 結果慘不忍睹, 果然高興不了太久. 痛定思痛, 決定要更深入瞭解 CSS, 並克服跨瀏覽器的問題.

馬上就跑到金石堂買了這本: 超越式CSS-網頁視覺設計の王道. 吸引我的原因是這本書是以親和力為核心價植(當然還是免不了討論到技術面), 而非以技術面為核心價值. 再來是整本書的設計感增加了整本書的價值, 這讓我有了更深刻的領悟:

不論做什麼網站, 若是沒辦法使網站瀏覽者感受到價值存在(無論是文字,版面,配色,影像,互動性等各層面), 再優秀的技術也是枉然. 設計者用充滿價值的心來製作, 客戶也能感受得到它的價值, 自然就與低價的產品有所區隔.

最後就是譯者在這領域也是專家, 自然更能表達出作者的精神了.

總之, 開始超越 CSS 吧.

(咦 ? 好像離 Ruby,RoR 愈來愈遠了...)

2007/07/16

幾個製作 Blogger 網頁時遇到的問題

在製作彩油的展示與選取頁面時, 遇到不少問題, 在此記錄:



* Blogger 使用的是 UTF8 格式的檔案, .js 檔案內可能會有中文資料, 若不是以 UTF8 存檔, 可能會造成執行時期的錯誤.



* Blogger 內的文章可以貼入 <script>....</script>, 但卻不可貼入 <style>...</style>, Blogger 會自動將 <style> 及其內的所有資料全部移除, 所以放了也沒用. 因此 <style> 變成只能靠修改 template 置入. 但 template 卻是所有文章共用的區域, 久了不但 template 會變得複雜混亂, 也會使整體網頁顯示變慢. 拜這個問題所賜, 讓我找到了動態讀取 css 及 javascript 檔案的方法:


function loadCSS(css_filename) {
var css=document.createElement('link');
css.setAttribute('rel', 'stylesheet');
css.setAttribute('type', 'text/css');
css.setAttribute('href', css_filename);
document.getElementsByTagName('head')[0].appendChild(css);
}
function loadScript(script_filename) {
var js = document.createElement('script');
js.setAttribute('language', 'javascript1.2');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', script_filename);
document.getElementsByTagName('head')[0].appendChild(js);
}

呼叫上述的 code, 就可以擺脫使用 html tag 載入 css 與 js 的命運, 以 javascript 來呼叫載入.

update:沒多久就發現其實 jQuery 早已有 require 的 plugin, 真好. 不過目前暫時先用上面的方案就好了.



* 在使用 thickbox plugin 時遇上了奇怪的問題, 後來發現是 thickbox 內呼叫 jQuery 的 $("...").load 方法載入 html 檔案, 在這裡某些時候有問題. 這個方法使用形式是 load( url, params, callback ), 問題在 url 參數. 若傳入 url 是完整的, 像 "http://domain.com/html/page.html" 的話, 就會有點像當掉一樣, 停留在這裡; 若 url 只傳檔案名稱, 像 "page.html" 的話, 就可正常執行. 為什麼目前不得而知, 只好暫時避免以 ajax 的方式使用 thickbox, 改用 inline 的方式就沒問題了, iframe 的方式則還沒用過.


2007/07/14

重要的基本功

雖然有了 jQuery 這把神兵利器, 提供了很多現成的方案也解決了不少的問題, 不過現在進入了必須要靈活運用的階段, 東拼西湊的情形無法維持太久, 須要多花點時間熟悉 javascript 及 DOM 的基礎面, 並多寫點 code.



想起以前剛開始用 delphi 的時候, 現在這種情形跟當時好像. 由於有 coding 經驗, 知道整體要學的部份有那些, 所以有時就想偷懶跳過一些基礎的部份, 直接做更後面一些的部份, 剛開始會感覺很好, 但往往在不久之後, 這些被忽略的部份仍會反應出來. 直到靜下心來瞭解, 才發現這些看似簡單的基礎有多麼重要.



所以...把馬步蹲好, 不然 jQuery 會哭的, 呵呵.

2007/07/06

Blogger 工作

猶豫了一天, 最後還是決定把 jQuery 等相關的檔案移到 Google Pages. 不過由於在 Google Pages 內無法建立資料夾, 所以針對檔名做了統一的修改:



圖檔 - img.jq.(plugin).(filename).(ext)

CSS - css.jq.(plugin).(filename).css

JavaScript - jq.(plugin).pack.js





將之前增加在 template 的 CSS 移至獨立的 .css 檔案內.





對 CSS 還不熟, 但為了將喜愛的圖放在上方, 還是花了一番苦心呀:


#top_background {
width: 100%;
height: 160px;
position: absolute;
top: 0px;
left: 0px;
z-index: 1;
filter: alpha(opacity=20); /* for IE 濾鏡*/
opacity: 0.20; /* for CSS3 濾鏡 */
-moz-opacity: 0.20; /* for Mozilla 濾鏡*/
}


<div align="center" id="top_background">
<img width="320" src="..."/>
</div>



需要的效果是在將圖形置於右上角當底圖, 再加上圖片淡化, 嚴格來說這並不是底圖, 不過因為加了淡化效果, 所以湊和著用吧~~

不過也因此使 Title 的首頁連結失效(按不到), 最後乾脆在整個圖加上 Hyperlink 連結至首頁.

2007/07/04

Template Solution

http://www.templatemonster.com/
號稱世界最大的 template provider , 提供非常多各式的 template, 它還提供 100% Satisfaction Guaranteed 的服務, 保證購買的 template 完全符合案子的需要, 否則退費. 所以它是論件收費的. 還有經銷方案喔, 國內有些網站就是跟 templatemonster 配合的.




http://www.zeustemplates.com/


http://www.deonixdesign.com/

跟 templatemonster 不同的是, 它們提供固定時間無限 download 的模式, 有 6 month / 1 year / 2 year 的方案, 不過在數量上跟 templatemonster 差很多啦

2007/06/29

Blogger Template 筆記

[隨時記錄關於 blogger template 方面的事]


基本 widget 的格式


<b:widget id="Header1" locked="true" title="孚力資訊 (標頭)" type="Header">

id 為識別名稱, locked 用於 Template-Page Elements 頁面表示此 widget 是否被鎖定, type 為 widget 的種類. widget 目前觀察的結果, 裡面都會有一個名為 <b:includable id="main"> 的 tag, 表示widget 執行的進入點.



* 在 template 加了一些像 b:if 的 code 之後, 再更換另一個內建的 template, 發現 template 已更新, 但我加的 code 卻還能保留, 實在佩服.



* <data:blog.pageType/> 在首頁值是 "INDEX", 在文章內值是 "ITEM"(xxxx.html), 在 Archive 的年份值是 "INDEX", 在月份值是 "ARCHIVE"(年份用 search, 月份則用yyyy_mm_dd.html), 在 Label Vew 值是 "INDEX"(label 使用的是 search)



* 修改 template 的過程, 有時會下載到本機做修改再上傳, 有時會直接使用"網頁元素"做修改, 若兩者交互使用時, 記得在使用"網頁元素"做修改後, 一定要下載最新的 template 至本機修改, 以免發生覆蓋的情形.



* 只要加入 b:section tag 即可在"網頁元素"內新增一塊 dockable(可停駐)的區域.




* 用來判斷是否為單一文章的頁面:

<b:if cond='data:blog.pageType == "item"'>

* 需要針對特定文章做處理的話, 可以用下面指令判斷:(nnnnnnnnnn 是指 blogID)

<b:if cond='data:post.id != "nnnnnnnnnn"'>

* 尚不知何時有值:

<data:pageTitle>






[Blogger Help]

* Google 太強了, 有些用在 code 裡的單字都翻成中文了(那怎麼用呀?), 可能會需求要對照英文版.

版面配置的網頁元素標記

版面配置的小裝置標記

版面配置資料標記

版面配置的字型和顏色標記

如何才能將第三方網頁元素加入我的版面配置?

為他人建立新的迷你組件,供他們加入其版面配置




[Blog Resource]

Template 的基本內容和結構

Beta Template 版面改造

2007/06/28

超漫長的開機時間與慘不忍睹的速度

忍了一段時間, 終於受不了啦. 今天檢查了一下到底裝了那些東西, 結果發現令我意外的一些東西. 原來我們的 HP Color LaserJet 2840 裝了這些東西呀...快昏了:


1. 它的 ToolBox 是以 Java 開發的 Web 版, 安裝了 Java Runtime, Apache Tomcat 4.0

2. Digital Imaging 是以 .NET 安裝了, 所以安裝了 .NET Framework 1.1 環境(這部份是我本來就知道的)

3. 各式的 driver 與應用程式.

4. 當然, Install 與 Update 程式是少不了的.



那麼這台全方位宇宙超級無敵的一流機器在電腦開機時啟動了那些服務呢 ?

1. HP Digital Imaging Monitor

2. HP ImageZone 快速啟動

3. TomcatStartup 2.5

4. HPUsage Tracking -> 令人覺得恐怖的名字, 竟大剌剌地寫出來.

5. HP Software Update

6. 未在自動執行清單內的 driver



將上述的服務在啟動時關閉的話, 開機速度感覺提昇約 1/3, 後續的整體速度我不知道, 但可以感覺得到速度提昇. 以我使用電腦的時間來看, 這是無價的呀...



HP Color LaserJet 2840 這台機器用得還不錯, 只是沒想到它的軟體竟是那麼龐雜, 而在安裝時沒有完整的選擇性安裝方式, 變成一股腦兒全裝進去. 在解除這個部份後, 也就暫時不須要找別的可疑份子了.



感想: 除了安裝/移除的功能外, 廠商應該要提供一個總開閉, 讓使用者在暫時不用時, 可以做一次關閉的動作, 才不會將電腦的速度拖慢. 或是做更好易用的整合.



update: 後來又發現在 firefox 內速度明顯地慢, 因此又只好忍痛將一些比較用不著的 plugin 拿掉了