2008-12-31

ThinkPad 還原

最近很多同事離職,在要把公司的 ThinkPad nb 還回去時,才發現因為自己重灌過,沒辦法按 F11 鍵來還原,在網路上找到的方式大部份是利用 IBMTool 去做開機救援磁片,不過這太麻煩了。後來找到一個比較簡單的方法,就是把那個還原磁區改為 Active 就好了,這樣開機時從那磁區開機就可以還原了。 設定這個可利用免費的 EASEUS Partition Manager 來進行。 PS. 此方法的前提是還原磁區沒有被刪掉 後記 同事利用此方式還原時,不知道為什麼會卡在一半,後來小弟就改用我安裝在 USB 上的 Ubuntu 開機,利用 Gnome Partition Editor 將非還原磁區的部份刪掉,再重新將還原磁區改為 boot ,重開機來還原就好了。只能說,Linux 是好物啊。

2008-12-28

如何取得目前運行的 Java Process

在 JDK 1.6 中,有一個 JConsole 的工具,可以用來監看目前運行中 Java Process 的狀況。其在啟動時候,會列出目前運行的 Java process 來給使用者選擇要監控哪個 process。如果我們也希望取到該 List ,要如何處理呢?今天剛好在網路上看到,就留下來做記錄。

import sun.tools.jconsole.*;
import java.util.*;
public class Main {
  public static void main(String[] args) {
    Map map = LocalVirtualMachine.getAllVirtualMachines();
    Iterator iter = map.values().iterator();
    LocalVirtualMachine vm = null;
    while (iter.hasNext()) {
        vm = (LocalVirtualMachine)iter.next();
        System.out.println(vm.displayName());
    }
  }
}

classpath 必需加上 jconsole.jar 和 tools.jar 兩個 jar

參考:

http://w3hjava.com/uncategorized/handling-java-code-from-another-java-code/

2008-12-26

好的測試應該具備哪些特質?

什麼樣的測試算是好測試?我們又該怎麼知道如何編寫好測試?

Kent Beck斷定,好的測試應該具備下列條件:

  • 互相隔離的(不受其他測試的表現形式、是否存在、執行結果的影響)
  • 自動化的
  • 編寫快
  • 運行快
  • 獨一無二(為開發人員提供自信,而不會由其他測試提供信息,與其他測試不相關)

Roy Osherove 補充:好的測試有三個基本屬性:

  • 可維護
  • 值得信賴
  • 易於理解。

Mike Hill的列表要更長:

  • 它會很短,通常只有十來行代碼。
  • 它不會測試運行程序內部的對象,但是會測試為了測試目的而構建的應用內部的對象。
  • 它只會調用很小的一部分代碼,通常是某個函數的某一分支。
  • 它是灰盒的形式編寫的。也就是說,它運作的方式像是黑盒,但是有時又會利用白盒的長處。(一般來說,這是避免組合問題的重要因素。)
  • 測試要符合生產代碼的編碼標準,比如,團隊目前對於優秀編碼的最佳看法。
  • 應用的眾多小測試構成了一個「提交關卡」。這就是說,開發人員可以在所有小測試通過的情況下提交代碼,否則(強烈建議、甚至不惜手段)阻止他們提交。
  • 測試應對接受測試的對象有完全的控制權,因此應是自包含的。也就是說,它不會依賴不屬於測試代碼及其依賴圖的任何其他對象。
  • 它的運行時間非常短。
  • 它會先於要測試的代碼變更之前編寫。
  • 通過一系列slip-and-fake技巧,它會避免使用所有「糟糕」的collaborator。

Mike和Ron Jeffries提醒我們:TDD的核心價值是要簡化設計、提升開發效率;代碼質量的提升和bug數量的減少是因此而帶來的重要好處。

Jeremy Miller補充了良好單元測試應該具備:

  • 與順序無關,並且是隔離的。運行測試的軟件可以按照以任何順序運行。
  • 意圖明確。最好的單元測試應該能夠告訴閱讀者,一個對象的API是如何準備被調用的。
  • 易於設置。

最後,Ed Burnette 寫到:要讓你的單元測試在任何方面都可以重複;測試邊界條件,並且要一直保持測試的通過率是100%。

原文:
http://www.infoq.com/news/2008/10/qualities_good_test

2008-12-25

幾個可在遠端桌面中使用的快速鍵

在公司裡每天都在不同的遠端桌面(Remote Desktop)上工作,但是很多按鍵在非全螢幕下都是不能用的,若要在非全螢幕的情況下使用的話,就必須用另一組快速鍵來操作。

本機 遠端桌面 說明
CTRL + ALT + DEL CTRL + ALT + END

顯示 [Windows 安全性] 對話方塊

-

CTRL + ALT + BREAK

在視窗和全螢幕顯示模式間切換。

Win Key 或 CTRL + ESC

ALT + HOME

顯示 [開始] 功能表。

ALT + TAB

ALT + PAGE UP

從左到右切換視窗
PrintScreen

CTRL + ALT + 數字鍵上的加號(+)

將遠端的整個螢幕畫面複製回本機。
ALT + PrintScreen

CTRL + ALT + 數字鍵上的減號(-)

將遠端的作用中的螢幕畫面複製回本機。

參考:
在遠端桌面連線中可以使用哪些快速鍵?

使用 Fiddler2 無法截取到封包的問題

之前在公司使用 Fiddler2 的時候,監控封包都沒什麼問題,在家裡的 eee-pc 上剛裝好時,好像也可以用,只是後來不知道為什麼,就是截取不到封包,今天上網查資料,才發現原來是因為 Fiddler 預設只會監控區域連線,而我使用撥接 ADSL 上網,它就沒有監控到,要解決這個問題透過以下方式解決:

在 Fiddler2 的 Options 中的 Connections 裡:
Noname
 
選取 Monitor all connections 讓 Fiddler 監控所有的連線。

另外網路上還有看到修改 HKCU\Software\Microsoft\Fiddler2 機碼的方式來處理,不過我沒試過,有興趣的可以試試。

http://blog.miniasp.com/post/2008/10/Fiddler2-can-not-capture-packets-when-using-3G-networking.aspx

http://www.fiddler2.com/Fiddler/help/hookup.asp#Q-VPN

讓IE執行Javascript更快速

只要加上一行,就可以讓IE更快的執行Javascript。

/*@cc_on _d=document;eval('var document=_d')@*/

測式範例

Before

var date = new Date();
for (var i = 0; i < 100000; i++) document; 
alert(new Date() - date); // 643
After
/*@cc_on _d=document;eval('var document=_d')@*/
var date = new Date();
for (var i = 0; i < 100000; i++) document; 
alert(new Date() - date); // 145
解說

對 Internet Explorer 來說,要使用 document ,必須經過 window 。而上面那一行是讓 document 成為一個獨立的物件,不必透過 window ,因此速度就提昇了。

參考:

http://d.hatena.ne.jp/amachang/20071010/1192012056

http://gis.iwant-in.net/blog/?p=90

在 IE 中把 Browser 強制關閉的方法

Browser 都因為安全性的問題不允許強制關閉主視窗,但自己透過 window.open() 開啟的視窗可以控制強制關閉。

不過還是找的到方法處理:

IE 6

window.opener=null;    
window.close();  

IE 7

window.open('','_parent','');
window.close(); 

參考:http://blog.miniasp.com/post/2008/01/How-to-force-close-the-browser-window-in-IE.aspx

Top 100 Network Security Tools

http://sectools.org/ 裡面有很多網路安全的工具,有需要可以參考。

2008-12-22

對程式設計師收入的有趣觀點

http://thevault13.blogspot.com/2008/11/blog-post.html?showComment=1229485860000#c1738109330569040837

如何利用批次檔取得系統日期時間

之前曾經有想過要利用批次檔加上 windows 的排程來定時為測試用的資料庫進行備份,只是不知道怎麼取得目前系統日期時間來使用,最近剛好看到這幾篇文章,留下來做參考:

取得今天日期的年、月、日:

for /f "tokens=1-4 delims=-/ " %%i IN ("%date%") DO (
    set year=%%i
    set month=%%j
    set day=%%k
)
取得當下時間的時、分、秒、百分之一秒
for /f "tokens=1-4 delims=:." %%i IN ("%time%") DO (
    set hour=%%i
    set minute=%%j
    set second=%%k
    set centisecond=%%l
)
組合含有日期、時間的字串:
SET OutputDir=%year%%month%%day%_%hour%_%minute%_%second%_%centisecond%
指令取得上個月的月份(使用 SET /A,/A 可以做數值運算(arithmetic)):
@echo off
rem 把日期裡的斜線拿掉;2008/10/21→20081021
set Today=%DATE:/=%
 
set ThisYear=%Today:~0,4%
 
rem 取回今天的年度月份;200810
set ThisMonth=%Today:~4,2%
 
rem 本月份減1取得上個月份
set /A LastMonth=%ThisMonth%-1
 
rem 如果是1月份的話,要把年度減1
if "%LastMonth%"=="0" set /A ThisYear=%ThisYear%-1
 
if "%LastMonth%"=="0" set LastMonth=12
 
rem 如果是1月到9月時,左補零成為01~09
if "%LastMonth:~1,1%"=="" set
LastMonth=0%LastMonth%
 
echo Year=%ThisYear%
echo Month=%LastMonth%

參考:

2008-12-16

突破AD查詢1000條限制

以前專案曾經連 AD 遇過這個問題,記錄一下。 http://support.microsoft.com/kb/315071

啟動 Ntdsutil.exe

Ntdsutil.exe 位於 Windows 2000 安裝 CD-ROM 上的 [支援工具] 資料夾中。
  1. 請按一下 [開始],再按一下 [執行]
  2. [開啟] 文字方塊中,輸入 ntdsutil,然後按 ENTER 鍵。如果要隨時檢視說明,請在命令提示字元下輸入 ?

檢視目前的原則設定

  1. 在 Ntdsutil.exe 命令提示字元下,輸入 LDAP policies,然後按 ENTER 鍵。
  2. 在 LDAP 原則命令提示字元下,輸入 connections,然後按 ENTER 鍵。
  3. 在伺服器連線命令提示字元下,輸入 connect to server <伺服器的 DNS 名稱>,然後按 ENTER 鍵。如果要連線至目前您正在使用的伺服器。
  4. 在伺服器連線命令提示字元下,輸入 q,然後按 ENTER 鍵以返回前一個功能表。
  5. 在 LDAP 原則命令提示字元下,輸入 Show Values,然後按 ENTER 鍵。
  6. 如果它們存在的話,便會顯示原則。

修改原則設定

  1. 在 Ntdsutil.exe 命令提示字元下,輸入 LDAP policies,然後按 ENTER 鍵。
  2. 在 LDAP 原則命令提示字元下,輸入 Set <設定> to <變數%>,然後按 ENTER 鍵。例如: Set MaxPoolThreads to 8。 如果您將另一個處理器加入伺服器,則這個設定會變更。
  3. 您可以使用 Show Values 指令,確認變更。 如果要儲存變更,請使用 Commit Changes
  4. 當您完成時,請鍵入 q,然後按 ENTER 鍵。
  5. 如果要結束 Ntdsutil.exe,請在命令提示字元下輸入 q,然後按 ENTER 鍵。

Web Debugger

因為開發 Web application 的原故,常需要去監控 Http 連線內容, request 與 reponse,最早之前是使用海盜版的 HttpWatch,後來發現微軟有提供了一個地方產品:fiddler,也可以用來分析 http 封包。 這程式其實算是一個 http proxy ,當我們啟動後,他會監聽 8888 port 當 proxy ,並且自動把 windows 的 http 及 https 的 proxy 指到本機的 8888 port,因此它就可以監聽所有的 http request 及 response。有這這程式,我們就可以容易的為 ajax 的程式除錯,或是查看 http head 、request parameter、reponse content 的內容是不是正確。如果 Firefox 要透過它來進行除錯,就要手動設定 proxy 指到本機端的 8888 port 了。 另外,因為預設 localhost 是不透過 proxy 來進行連線的,因此再本機測試的時候,可以加個點來讓瀏灠器透過 proxy 連線,如: http://localhost.:8080/ 目前這類相關 http debug 的產品看到的有: IE base:
  1. IEInspector
  2. HttpWatch
Firefox base:
  1. Live HTTP Headers
  2. HTTPGuideDog
  3. HttpFox 與 httpwatch 相當類似,還滿好用的

Debugging Deadlocks - Print All Stack Traces

http://www.symphonious.net/2008/11/24/debugging-deadlocks-print-all-stack-traces/ 如何處理 Deadlock ,雖然最近沒在寫 thread 的程式,不過留著記錄,說不定哪天會用到。
private static void printAllStackTraces() {
    Map liveThreads = Thread.getAllStackTraces();
    for (Iterator i = liveThreads.keySet().iterator(); i.hasNext(); ) {
      Thread key = (Thread)i.next();
      System.err.println("Thread " + key.getName());
        StackTraceElement[] trace = (StackTraceElement[])liveThreads.get(key);
        for (int j = 0; j < trace.length; j++) {
            System.err.println("\tat " + trace[j]);
        }
    }
}

其內容是寫說用上面這 method 去印出 thread 中的相關資訊,以便發現是哪個 thread 造成的 lock。

利用Microsoft Office Document Image Writer的ActiveX元件做OCR

http://www.javaworld.com.tw/roller/qing/entry/%E5%88%A9%E7%94%A8microsoft_office_document_image_writer%E7%9A%84activex%E5%85%83%E4%BB%B6%E5%81%9Aocr 網路上看到,留作記錄,改天再來試試

2008-12-14

Notepad++

Notepad++ 是個好用又免費而且 Opensource 的文字編輯軟體,他的 plugin 功能也不少,只是始終覺的有些功能不足,像是沒有像 Ultraedit 的區塊模式(Column Mode),列近發現原來 Notepad++ 也是有區塊模式的,使用方式如下:
  1. Alt+shift+方向鍵
  2. Alt+mouse 左鍵
  3. Edit->Column Editor => 插入文字
雖然沒有像 Ultraedit 那麼方便,但也是夠用了,看樣子對我來說, 使用 Ultraedit 的優勢可能只有它對大檔案處理的速度而己。

2008-12-10

查詢 IP 對應的電腦

前陣子在公司常被別的電腦攻擊,而防毒軟體或防火牆只知道攻擊者的 IP 而不知道實際的電腦名稱,因而不好找到攻擊者的電腦請他修復。最近剛好找到 xp 的指令可以查,留個記錄: nbtstat:

nbtstat -a 電腦名稱:查該電腦所提供的網路共享資源名稱,與網路卡硬體位址

nbtstat -A IP:查該電腦所提供的網路共享資源名稱,與網路卡硬體位址

nbtstat -n :查本機電腦所提供的網路共享資源名稱

nbstat -s :列出目前與本機電腦建立網站連線的遠端電腦名稱與資料量大小。

nbstat -S :列出目前與本機電腦建立網站連線的遠端電腦IP名稱與資料量大小。

參考:http://www1.cpshs.hcc.edu.tw/leson/netadm/nbtstat.htm

2008-12-07

JTA 的實作

最近為了加速開發,整合 JPA seam 進到公司既有的產品中,為了讓 jdbc 與 jpa 共用同一個 Transaction,便再將 JTA 整合進來,因為我們開發實作是使用 tomcat 與 jetty ,因此只能找一些 open source 的 JTA 實作,目前在網路上看到的有:
  1. JOTM 目前已經停止開發了,在跟 tomcat 整合時,使用 xapool 似乎有問題,常會取不
  2. Atomikos 近幾個版本改為 open source,目前正在使用,感覺還滿不錯的
  3. JBossTS 沒使用過,最近剛好看到。
改天有空再來分享它們相對的設定方式

2008-12-05

免費的驅動程式備份工具

DriverBackup:http://sourceforge.net/projects/drvback/

DriverMax:http://www.drivermax.com/

雖然沒用過,但這對重灌系統應該很有用吧,先留記錄,以備不時之需。 參考:http://blog.soft.idv.tw/?p=423

2008-12-04

文件編碼自動偵測

當我們拿到一個文字檔的時候,如果不知道他的編碼,就有可能顯示錯誤或是轉碼錯誤。之前看到的 solution 都不是 java 開發的,今天剛好看到,就記錄下來,以備以後不時之需:
  • jchardet :http://jchardet.sourceforge.net/ 看起來是乎是把 Mozilla Charset Detector 的演算法改用 java 撰寫。
  • cpdetector:http://cpdetector.sourceforge.net/ 據說比 jchardet 可靠,不過有時會出現奇怪的 exception
  • ROME 的 XML Charset Encoding detection 功能:http://wiki.java.net/bin/view/Javawsxml/Rome05CharsetEncoding
以上是 java 相關的 implement ,如需其它語言可看後面的參考聯結。 參考: http://blog.linux.org.tw/~jserv/archives/001672.html http://www.arachna.com/roller/spidaman/entry/character_set_encoding_detection_in http://william.cswiz.org/blog/archives/2008-10-28/charset-patch-part2/ http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html

Eclipse 常用 plugin

  • M2Eclipse:Maven 的 plugin ,讓我們可以在 eclipse 整合 maven 開發。
  • subclipse:整個 svn 來進行程式碼管控
  • Implementors:方更 trace 程式,當我們程式有多種 implement 時,可以利用這個 plug in 來追踨進 method 的實作者。
  • FindBug:程式碼靜態分析,找出可能的錯誤或是不好的寫法。
  • CheckStyle:同上。
  • JInto:多國語言訊息編輯。
  • SQL Explorer:查詢資料庫。
  • Regex Util:正規表達式。
  • visualswing4eclipse:好用的 swing design 工具,跟 netbeans 的 matisse 有的拼。
  • Jigloo:GUI builder。
  • AnyEdit:為 eclipse 中的右鍵增加了不少實用的功能,如:跟外部檔案比較、space 跟tab 的轉換之類的。
  • QuickRex:正規表達式的工具。

Java decompiler

目前市面上找的到且 freee 的 Decompiler 有以下幾個:
  • Jad:http://www.kpdus.com/jad.html C++ 開發,目前好像已經沒有在發展了,最後更新日是 2006,使用它為核心的工具還不少。
  • JODE:http://jode.sourceforge.net/ java 開發,目前發展也停滯中,支援到JDK1.3。
  • jd-gui:http://java.decompiler.free.fr/ C++ 開發,持續有在發展,支援到 JDK1.5
個人覺的因為 jd-gui 有持續在開發,且支援到 jdk 1.5 ,應該會是目前最合用的 decompiler。

2008-10-26

如何在 Tomcat 中運用 JNDI 的方式取得 C3P0 的 connection pool

Tomcat 本來內建的 connection pool 是 dbcp,但據說有一堆 bug 沒解,因此想說要把 DBCP 換成 c3p0 以避免這些問題。剛好在網路上看到這個解法,就將它記下來嚕。

首先當然是要先把 c3p0 的 jar 檔及 jdbc driver 放到 tomcat 的 lib 目錄下。

Tomcat 5.0

在 Tomcat 的目錄下 conf/server.xml ,找到 <Context> 修改其內容:

<Resource name="jdbc/pooledDS" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource" /> <ResourceParams name="jdbc/pooledDS">
   <parameter>
      <name>factory</name>
      <value>org.apache.naming.factory.BeanFactory</value>
   </parameter>
   <parameter>
      <name>driverClass</name>
      <value>org.postgresql.Driver</value> 
   </parameter>
   <parameter>
      <name>jdbcUrl</name>
      <value>jdbc:postgresql://localhost/c3p0-test</value> 
   </parameter>
   <parameter>
       <name>user</name>
       <value>swaldman</value>
    </parameter>
    <parameter>
       <name>password</name>
       <value>test</value>
    </parameter>
    <parameter>
       <name>minPoolSize</name>
       <value>5</value>
    </parameter>
    <parameter>
       <name>maxPoolSize</name>
       <value>15</value>
    </parameter>
    <parameter>
       <name>acquireIncrement</name>
       <value>5</value>
    </parameter>
</ResourceParams>

Tomcat 5.5/6.0

在 Tomcat 的目錄下 conf/server.xml ,找到 <GlobalNamingResources> 加上其內容:

<Resource auth="Container"
        description="DB Connection"
        driverClass="com.mysql.jdbc.Driver"
        maxPoolSize="4"
        minPoolSize="2"
        acquireIncrement="1"
        name="jdbc/TestDB"
        user="test"
        password="ready2go"
        factory="org.apache.naming.factory.BeanFactory"
        type="com.mchange.v2.c3p0.ComboPooledDataSource"
        jdbcUrl="jdbc:mysql://localhost:3306/test?autoReconnect=true" />

Web.xml

標準 J2EE 的程式中,需要在 web.xml 中做以下設定:

<resource-ref>
   <res-ref-name>jdbc/pooledDS</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

如何利用程式取得 DataSource

InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/pooledDS");

原文參考:http://www.mchange.com/projects/c3p0/index.html#tomcat-specific

2008-10-19

隨身碟病毒

最近很多朋友都中 Kavo 系列的病毒,上網找了一下,有人寫好了刪毒程式,在此記錄一下。 http://reinfors.googlepages.com/main.html 其功能說明:

EFix有下列功能:

  1. 修復因病毒造成隱藏檔選項無法開啟和磁碟雙擊顯示找不到程式的錯誤
  2. 修正工作管理員無法開啟的問題 (因登錄檔關閉造成的話) (4.68版後才有,前面沒有)
  3. 關閉自動撥放功能 (此功能在Ver4.56後取消)
  4. 簡易的病毒檔案刪除 (像KAVO KXVO JVVO TASO AMVO AVPO那一類的,還有部分病毒下載器,如auto.exe等等)
  5. 會產生掃瞄報告供解毒人員分析
  6. 可利用文字腳本方式刪除檔案及登錄值,使用方式請看此篇

EFix Lite有下列功能:

  1. 修復因病毒造成隱藏檔選項無法開啟和磁碟雙擊顯示找不到程式的錯誤
  2. 目前已知的KAVO系列病毒清除

磁碟無法開啟的意思是如下圖顯示:

2008-09-12

Tomcat 的 Datasource 問題

最近在 Tomcat 上開發,使用 Tomcat 所提供的 Datasource 來接資料庫,可是發現測試時,在針對 CLOB 轉型時 oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(1); 一直出現 java.lang.ClassCastException: oracle.sql.CLOB 的錯誤,而用 Debug Mode 去觀察時,發現取回來的 Clob Object 確實是 oracle.sql.CLOB 的 instance,原本以為是用的 JVM 太新的關係,結果換了 JVM 也發生一樣的錯,後來才發現,原來是 tomcat ClassLoader 的問題。 一般 ClassLoader 的工作流程是:
  1. 收到一個載入類的的請求
  2. 請求其父ClassLoader來完成該類的載入
  3. 如果父ClassLoader無法載入,則自己試圖完成該類的載入
而 WEB APP 的 ClassLoader 實現與眾不同: 它先試圖從 WEB APP 自己的目錄裡載入,如果失敗則請求父 ClassLoader 的代理。 而我為了使用 Datasource 來連接資料庫,因此在 Tomcat 的 lib 放裡放了 Jdbc driver ,Datasource 取資資料庫連線使用的 driver 是這個。但在 ap 的 web-inf/lib 下,我也放了 Jdbc driver ,這使得我在轉型時,ClassLoader 會取用這個 Driver 來轉型,雖然兩個本版一模一樣,但始終還是透過不同的 ClassLoader 載入的,因此沒辦法互轉,造成程式出錯。 所以,在 Tomcat 上使用 Datasource 時,記得 ap 下不要再放重覆的 Driver 了,以避免造成同樣的錯誤。 可參考: http://www.memezilla.com/2007/01/05/remove-oracle-clob-classcastexception http://www.blogjava.net/realsmy/archive/2007/05/04/115272.html

2008-09-01

利用 VPC 測試 Internet explorer

上一篇有寫到要測試不同版本的 IE ,有兩種方法,今天又發現微軟提供第三種方法,就是利用他所併購的 VPC 軟體來測試: 1. 首先我們要到下面網址先下載免費的 Virtual PC 來安裝 http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx 2. 到Internet Explorer Application Compatibility VPC Image下載內含IE6、IE7、IE8等不同版本的 Windows XP 或 Windows Vista 映像檔,目前有下列幾個版本
  1. IE6-XPSP3_VPC.exe(421.7 MB):內含Windows XP SP3及IE6 VHD映像檔。
  2. IE7-VIS1.exe、IE7-VIS2.rar、IE7-VIS3.rar(3個檔案合計約1990.5 MB): 內含Vista及IE7 VHD映像檔(下載這3個檔案並放在相同目錄,再執行IE7-VIS1.exe即可解壓縮)。
  3. IE7-XPSP2_VPC.exe(456.8 MB):內含Windows XP SP2及IE7 VHD映像檔。
  4. IE8B2-XPSP3_VPC.exe(464.6 MB):內含Windows XP SP3及IE8 Beta 2 VHD映像檔。

2008-08-30

多版本 IE

身為一個 Web application 的開發者,常常需要測試不同版本的 Brower 來了解本身開發的程式是否相容,尤其是 IE 在不同版本有不同的問題,一定要針對每個版本進行測試。但微軟只允許我們系統中只有一個版本的 IE ,那要怎麼解決呢?有以下兩種選擇:
  1. IE Tester
  2. Internet Explorer Collection
利用上述個程式,我們便可針有不同版本的 IE 進行測試了。 參考連結: http://www.ghacks.net/2008/08/30/use-multiple-internet-explorer-versions-simultaneously/

2008-08-22

破解 windows 2000 的帳號密碼

最近因為一些 Windows 2000 Server 的密碼被別的同事改掉,造成沒辦法進去系統進行維護,剛好在網路上看到 2008 Best of Open Source Software Awards ,裡面有 Ophcrack 這個軟體可以找出目前系統的帳號及密碼,剛好可以解決我這個問題嚕,有需要的可以去下載試試,只要燒他的開機光碟然後拿到那台電腦開機就好了。 參考連結: http://www.goodman-lai.idv.tw/2008/08/infoworld-2008.html

2008-08-18

如何啟動 ACPI 來讓電腦自動關閉電源

最近在公司為了節能減炭,計畫將一些測試用的 Server 定時開關機來減少電力的損耗,而那些電腦裡,有幾台是 Windows 2000 server ,主機版也有支援 ACPI,不知道為什麼關機就是會出現【您可以安心關機了】的字眼而不會直接關機,這樣的 Server 造成需要有人去實際關機而不能排程關機(人是懶墮的,可以由電腦自己開關機就不要排值日生去關啊)。因此小弟就研究了一下,原來是 ACPI 的功能沒有被開啟,造成電腦不會自動關電源,只要照著以下步驟將 ACPI 的 Driver 改一下就行了(PS. 前提是主機版有支援 ACPI):
  1. 在【我的電腦】上按右鍵,選擇【管理】,點選【裝置管理員】,展開【電腦】,如果顯示如下【Advanced Configuration and Power Interface (ACPI)PC】表示已經開啟此功能,否則則繼續往下做。
  2. 在上面按右鍵,選【內容】,點選【驅動程式】
  3. 點選【更新驅動程式】,按下一步,選擇【請顯示這個裝置目前的驅動程式清單,讓我從清單中指定驅動程式(D)】
  4. 點選下一步,點選下面的【顯示這個裝置類別的所有硬體】,然後選擇 ACPI 的 driver。
  5. 點選下一步,安裝 Driver,重開機後就大功告成了

請注意,如果你的電腦沒有 Acpi 的功能,千萬不能裝這個 Driver,否則可能出問題。

2008-03-08

我的練習曲-今天要出發了

預計早上八點從汐止火車站出發,我竟然整理東西到現在還沒睡覺,不知道會不會騎車騎到睡著,XD

先預祝我環島成功囉!! 晚安

2008-03-04

我的練習曲 - 預計行程

Day1 南港 => 基隆 => 礁溪 100 公里左右 Day2 礁溪 => 蘇澳 約 50 公里 Day3 蘇澳 => 新城 約 90km Day4 新城 => 花蓮 30 km Day5 花蓮 => 玉里 100 km Day6 玉里 => 台東知本 100 km Day7 台東知本 => 屏東楓港 88.45 km Day8 屏東楓港 => 墾丁 50 Day9 墾丁 => 屏東楓港 50 km Day10 屏東楓港 => 高雄路竹(芃朋家) 100 km Day11 高雄路竹 => 台南新營(Cedric 同學) Day12 台南新營 => 彰化溪洲(我家) Day13 彰化溪州 => 苗栗頭份(Nancy 家) 100 km Day14 苗栗頭份 => 中壢 90 km Day15 中壢 => 台北 50 km

五指山環島行前會

本週本來要去玉山重新體驗一下山上生活的,但是因為封了山,沒辦法去,嘉明湖的時間我又不能配合,只好引恨留在家裡當宅男嚕XD。好在下星期就要開始環島了, Lopo 說要行前會,Cedric 說要去五指山開,因此就成就了這次的行程。

原本的目標行程:

原計畫路程

但是因為我們 GPS 還沒搞懂怎麼用,加上路沒有記的很清楚,結果多跑了一個【金龍禪寺】,前面坡度還滿徒的XD:

實際路程

沒錯,就是旁邊那個 4 讓我們多爬了一段,雖然直接從那上去也是可以啦,但是為了怕迷路,加上原來只有準備走原路線的地圖,只好再騎回原路線往上爬嚕。

在上山的路上,遇到兩位走路的小姐,走的速度竟然可以跟我們騎腳踏車比,真是太慚愧了;在長青路跟五指山產業道路交界休息時,遇到一個老伯,已經六十多歲了,他六十三歲第一次買車就是去環島,而且帶帳蓬只花了十二天,我們這些年青人竟然安排了十五天去環島,真是太令我汗顏了。另外他也介紹了一條一天來回的台北騎車路線,就從五指山上去,下金山再從淡水回來,沿路還找朋友聊天喝酒,一天來回,這對我來說,怎麼可能嘛,相比之下,我真的遜掉了,唉。

上山遇到的老伯 
上山遇到的老伯,騎的滿快的

P1020199
Mark 熱心讚助的 PDA 加上在上山喝的熱可可

P1020197
路上的山櫻花

P1020206 P1020207 P1020213
山上的夜景,滿美的,可惜天氣不是很好,視線不佳。如果帶女朋友上來看,應該相當不錯,可惜我沒女朋友啊XD。

blog 重新開張

好久沒有寫 blog 了,現在開始要重新開張囉,要努力為將來留點回憶。