2009-09-22

批次檔設定 classpath

windows 的批次檔以利用 for 來對目錄中的檔案進行處理,但是 for 在取得環境變數只會在一開始取,因此,如果當我們將批次檔寫成:
set CLASSPATH=
for %i in (*) do set LIST=% CLASSPATH%;%i
echo % CLASSPATH%
並不會建立目前目錄中所有檔案的清單,相反的只會將 CLASSPATH 變數設為最後一個找到的檔案。因為 % CLASSPATH% 只有在 FOR 敘述第一次被讀入時才展開,此時 CLASSPATH 變數是空的。所以我們實際執行的 FOR 迴圈是:
for %i in (*) do set LIST= %i
可是當我照著微軟的說明,將 % 改為 ! ,還是得不到正確的結果:
set CLASSPATH =
for %i in (*) do set LIST=! CLASSPATH!;%i
echo % CLASSPATH%
這部份我還沒找到為什麼不行。後來,在網路上找了一下,發現只要呼叫外部的批次檔或是其它 label 就不會有問題了:
set CLASSPATH =
FOR /f %%I IN ('dir /b *.jar') DO call :cpappend %%I
echo %CLASSPATH%
goto end
:cpappend
set CLASSPATH=%CLASSPATH%;%1
:end

2009-08-27

Chrome 簡繁自動轉換 Extension

之前曾經在重灌狂人的 blog 上看到在簡繁轉換的書籤,在 chrome 上用也是可行,不過總覺的還要多按個紐很麻煩,而且沒辦法處理 google reader ,因此就把那書籤裡面的 script 小修改做成了 chrome 的 extension,這樣就方便許多,看網頁會自動轉成繁體字。
安裝方式:
  • 將 chrome 的捷徑加上 --enable-extensions 來啟動 extension 功能
  • 重新啟動 chome
  • 下載 簡繁轉換 extension 並安裝它
之後網頁就會自動轉成繁體了。

2009-08-19

查詢Linux 系統版本

最近常碰到 Linux 的機器,有時候想要查說目前的 Linux 用的是哪個版本,可以用下面的指令: #cat /etc/*-release 在 CentOS 5 會出現類似下面的結果: CentOS release 5 (Final) 在 Red Hat 7.3 會出現類似下面的結果: Red Hat Linux release 7.3 (Valhalla) 如果是要查核心的版本,可以用下面的指令: uname -a

2009-06-25

Java 如何偵測目前記憶體可能不足

今天有個同事說,他在操作 Netbeans 時,Netbeans 竟然提示他記憶體可能不足:
不知道 Netbeans 是怎麼做的。後來上網查了一下, JDK 1.5 後提供了 java.lang.management.MemoryMXBean,可以讓我們偵測目前記憶體的用量及狀態: 上面這程式可以列出目前記憶體的使用狀態。
參考資料:
How do you detect low memory situations within the java virtual machine?
J2SE5.0新特性之監控與管理

Vista + IIS + Access 出現 80004005 錯誤

最近有個同事遇到一個問題,開發好的程式在 Vista 上的 IIS 會沒辦法讀取 access 裡面的資料,後來上網查了一下,發現這個問題還滿常發生的,要解決也很簡單,在命令模式下執行下面三行指令即可:
  • %windir%\system32\inetsrv\appcmd set config /section:applicationPools /[name='DefaultAppPool'].processModel.loadUserProfile:false
  • icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp /grant Users:(CI)(S,WD,AD,X)
  • icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp /grant "CREATOR OWNER":(OI)(CI)(IO
看起來因為 %windir%\serviceprofiles\networkservice\AppData\Local\Temp 這目錄的權限不足所造成的問題。
參考資料:

2009-06-08

運用 Windows Time 讓 Windows 進行時間同步

一般我們要進行時間的同步,可以使用 NTPClock 來進行同步。今天發現原來 Windows 有指令可以直接進行電腦時間的同步:
:: 設定要同步的 NTP Server
w32tm /config /update /manualpeerlist:ntp.ntu.edu.tw
:: 開始進行同步
w32tm /resync
如此一來,就不用再去特別下載 NTPClock 了。
註:
Windows Time 這個服務要開啟才能用
參考來源:

2009-06-06

如何查詢 Oracle 的版本

下面兩個語法都可以達到此需求:
  • select * from v$version
  • select * from product_component_version

2009-06-05

Chrome Extension

最近因為用 Firefox 常會有卡住的現像,因此改用 Google Chrome 來當我預設的瀏灠器。Chrome 實際用起來還滿不錯的,不過就是沒有像 firefox 那麼多 extension 可以使用。上網找了一下,目前比較急迫的三個需求都有辦法解決了:
  1. AdSweep:擋廣告,這是 chrome extension,需要在 chrome 的捷徑後加上 --enable-extensions 才可使用
  2. plurk 表情:user script,需要在 chrome 的捷徑後加上 --enable-user-scripts 才可使用
  3. 簡繁轉換繁簡轉換:加到書簽或拉到書簽工具列即可。
  4. GDI++:在 chrome 的捷徑後加上 --no-sandbox 即可讓 GDI++ rander Chrome 了。

2009-05-31

如何以 command 來更改螢幕解析度

因為我的 eeepc 1000h 外接 22 吋螢幕輸出時,不會自動將解析度換成 1680*1050,每次都要到【顯示 內容】來修改,很麻煩,因此想說寫個批次檔,直接點兩下就將解析度更換。上網找了一下,發現有 Display Changer 這個好東西,可以直接用用命令來改解析度,如此一來,我只要建立好下面這指令的捷徑,就可以在開機後直接點兩下修改解析度了,不需要那麼多步驟處理: dc.exe -width=1680 -height=1050

2009-05-13

執行 ant 發生 out of memory

當我們執行 ant 時,有時候會發生 Out Of Memory,此時只需要在環境變數上加上一個變數即可,ant 執行的 jvm 會去使用這個參數: set ANT_OPTS=-Xmx1024m

2009-05-04

如何取得 class 的實體位置

通常,我們的開發環境與部署環境多多少少會有些不同,而我們開發測試完成後,進行部署時,有時候會有一些 method 找不到的問題,這個時候我們可能就需要找到某個 class 到底是不是我們部署的檔案,底下這個 class 是我從網路上找來的,用它就可以快速找到 class 的實體路徑了。

2009-04-30

Eclipse 中 將Java Project 轉換為Dynamic Web Project

因為工作的關係,常常要將一些舊的 WSAD 專案轉新 Dynamic Web Project,之前都是產生一個 Dynamic Web Project,然後把投定檔 copy 過來,今天剛好看到設定方式,記錄一下:
  1. 修改專案的 .project 文件,在 之間添加下列三行配置
  2. 專案重新整理。
  3. 打開【project properties】,會看到新增了很多選擇項,點中【Project Facets】,按下圖設定:
  4. 完成後,就變成一個【動態 Web 專案】了。
參考: http://www.blogjava.net/vcok/archive/2009/04/28/267815.html

2009-04-14

Notepad++ Regular Expression 的使用

今天有個前同事問我,要怎麼在 excel 中讓住址排序可以按照 1號 2號 3號 ..100 號排下來,因為我對 excel 不熟,所以只想到幫所有的號補 0 來處理。那要讓號補 0 ,最方便的方式便是用 Regular Expression 來取出並代之 。剛好小弟之前沒用過 Notepad++ 的 Regular Expression 取代功能,今天就來玩玩看。

在 Notepad++ 中,他的搜尋模式有三種:一般(Normal)、增強模式(Extended)、用類型表式(Regular Expression),我們使用的是第三種【用類型表式(Regular Expression)】。

下圖是將個位數前面補 0 ,尋找目標:路(\d)號,取代成:路0\1號,並勾選【用類型表式(Regular Expression)】,按下取代後,一位數的數值前面就補 0 了。

p1

接下來再尋找目標:路(\d\d)號,取代成:路0\1號,並勾選【用類型表式(Regular Expression)】,按下取代後,所有的數值就會變為三位數了。

在 Notepad 中,要取 () 內容的方式是前面加上 \,上面的【\1】表示我們要取第一個() 的內容。

參考:

http://ozansafi.wordpress.com/2008/12/11/notepad-regular-expression-usage/

http://www.slideshare.net/anjesh/the-power-of-regular-expression-use-in-notepad

2009-04-11

數字拆解問題

最近在找工作,有家公司寄了一個題目給我,要我作答,題目不難,有興趣可以看看: #數字拆解 題目是這樣的: 3 = 2+1 = 1+1+1 所以3有三種拆法 4 = 3 + 1 = 2 + 2 = 2 + 1 + 1 = 1 + 1 + 1 + 1 共五種 5 = 4 + 1 = 3 + 2 = 3 + 1 + 1 = 2 + 2 + 1 = 2 + 1 + 1 + 1 = 1 + 1 +1 +1 +1 共七種 依此類推,請問一個指定數字NUM的拆解方法個數有多少個? #建議方案(也可使用其他方法) 6 = 5 + [1] = 4 + [1+1] = 3 + [1+1+1] = 2 + [1+1+1+1] = 1 + [1+1+1+1] = 2 + [2+1+1] = 3 + [2+1] 4 + [2] = 2 + [2+2] 3 + [3] *括弧內數字為固定數字,最大數字繼續拆解 *拆解過程中,數字須由大到小 #請計算出Num=40共多少解法,需花多少時間(須印出所有合法解法) num = 40, count = 37337, time = 1.188 想不到他的最後答案竟然是錯的,還真是有一點點心機。過兩天再把答案 po 上來。

Eclipse 中文化

因為 Eclipse 3.3 之後已經將多國語言介面改為另外一個專案了,其安裝方式跟裝 plugin 一樣,說明,這篇文章只是註記一下它是哪個專案,以備不時之需。 多國語言介面專案:http://www.eclipse.org/babel/

2009-04-09

運用 command 來批次改檔名

從網路上抓某些漫畫圖片回來,其裡面的命名會是 1.jpg, 2.jpg, 10.jpg, 11.jpg, 100.jpg... 等,使用看 Imagine 看時,看的順序會是 1, 10, 11, 12 ... 等,而不是真正想看到順序。最近剛好看到使用 awk sprintf 修改 檔案名稱,突然想到用在 Windows 環境下應該也是有處理的方式,找了一下 command 的寫法,可以用下面兩行指令來解決:
for /F %G in ('dir /b ?.jpg') do ren %G 00%G
for /F %G in ('dir /b ??.jpg') do ren %G 0%G
第一行是針對一位數的 jpg 檔前面補兩個 0。 第二行是針對二位數的 jpg 檔前面補一個 0。

如何讓設定 FlowLayout 的 JPanel 有 ScrollBar

因為 JDK 的 bug ,設定 FlowLayout 的 JPanel 沒辦法在 JScrollPane 裡面正確呈現出 ScrollBar,因此要自己實作 Scrollable 來達到這個效果。 測試 這問是困擾了我兩天, sun 竟然這麼久都不修復,唉。

2009-03-24

如何設定 Eclipse 中變數的 highlight

啟用: 按下工具列的 "Toggle Mark Occurrences" 就有 highlight 變數的功能 更改 highlight 時的背景色 Window -> Preferences -> General -> Editors -> Text Editors -> Annotations -> Occurrences

2009-03-20

IE8 正式版的 bug?

base 元素可規定頁面中所有鏈接的基準 URL。 通常情況下,瀏覽器會從當前文檔的 URL 中提取相應的元素來填寫相對 URL 中的空白。 使用 base 標籤可以改變這一點。瀏覽器隨後將不再使用當前文檔的 URL,而使用指定的基本 URL 來解析所有的相對 URL。這其中包括 a、img、link、form 標籤中的 URL。 但是在 IE8 裡面有個 bug,就算設定了 base標籤,它還是會使用當前的 URL 提取相應的元素,然後再用 base 設定的 url 去提取元素。如此一來,造成 server 不必要的負擔,不知道有沒有人有解決方式?還是這其實是我對標準的誤解? 假設我有下面這個 index.html 放在 ui 的目錄: 當利用 IE8 去開 index.html 時,其會對 server 做以下的 request:
http://scott0228.blogspot.com/ui/index.html
http://scott0228.blogspot.com/main.css
http://scott0228.blogspot.com/main2.css
http://scott0228.blogspot.com/mootools.js
http://scott0228.blogspot.com/ui/mootools2.js
http://scott0228.blogspot.com/ui/mootools3.js
http://scott0228.blogspot.com/ui/main3.css
http://scott0228.blogspot.com/mootools2.js
http://scott0228.blogspot.com/mootools3.js
http://scott0228.blogspot.com/main3.css
IE8 對於 base 的正確處理只會到第一個 script 之前,之後的 script 及 link 都會取兩次,一次是 base 的,一次是當前的 url 目前 IE8 對於第一個 script 的 src 只取以 base 為基楚的檔案,第二個以後,及其之後的 link 都會取兩次,這樣會造成 server 的 loading 及程式的錯誤,不知道有法有辦法解決?

2009-03-15

Java Transaction Strategies

Transaction Management 對於企業交易是相當重要的,今天剛好看到 IBM DeveloperWorks 上有一些文章,說明的滿不錯的,介紹給大家知道: http://www.ibm.com/developerworks/cn/java/j-ts1.html?ca=drs-tp4608 裡面有參考了 Java Transaction Design Strategies ,個人覺的是本相當不錯的書,非常值得研究瞭解。