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 ,個人覺的是本相當不錯的書,非常值得研究瞭解。

2009-03-11

Partition Table Fix

今天有個同事拿了顆 sata 的硬碟給我,說因為裝了 ghost 9 後造成無法開機,本來想說用 Partition Manage 來改一下開機磁區就好,結果回應該該硬碟的磁區錯誤,可是在 xp 中還是看的到磁區,真是見鬼了。後來用 Partition Table Doctor 去看,才發現原來裡面的磁區已經有問題,Ghost 產生的磁區蓋到既有的開機磁區,造磁碟分割軟體沒辦法使用。而 Partition Table Doctor 需要付費才有辦法修復,後來上網找到一個小軟體:TestDisk,可以用來針對分割磁區檢查、救援,不論是因為手賤誤刪了磁碟分區,或是因為安裝作業系統、感染病毒而不慎毀損或遺失硬碟分區表,他都有辦法幫你救回來。 TestDisk 可以在多種作業系統下執行,也支援多種檔案系統,有需要人可以下載試試嚕。 使用方法:
  1. 將下載回來的 TestDisk 解壓縮,找到並執行置於「win」中的「testdisk_win.exe」。
  2. 在它的歡迎訊息之下的,選擇您要如何處理 Log 檔案。
  3. 選定硬碟後,選擇「Proceed」後按「Enter」。
  4. 選擇該硬碟的檔案系統類型,一般的Windows系統請選擇第一個[ Intel ],然後按「Enter」即可。
  5. 按下「Analyse」開始分析現有分區結構和搜尋遺失的分區。另外還有「Advanced」選項可以將分區設定成開機磁區或改變分割區類型、「Geometry」選項可以修改分區結構參數及大小、「MBR Code」選項可以將主要開機磁區代碼寫入第一分割區。
  6. TestDisk就會幫你找出所有磁碟分區,確定無誤後,以選擇「Save」後,按下「Enter」,最後再按「Quit」離開程式
  7. 重新開機後就可看到原本消失的磁碟分區了。
PS. 進行『磁碟救援』並無法保證絕對能完整救回您硬碟裡的資料,相反的,進行『磁碟救援』很有可能會反而使得您硬碟裡的資料一去不復返。您應該將『磁碟救援』視為最後的救援手段。非必要請勿輕易嘗試! 參考: TestDisk Step By Step官網的教學,圖、(英)文並茂。 Data Recovery Examples官網還舉了一些範例。

2009-03-10

Continuous Integration

Continuous Integration 是我們在開發時的一個好方法,Fontys 大學 的 Georg Fleischer 寫了一篇有關持續整合的報告。報告裡討論了用戶的需求和不同的產品如何滿足這些需求,並對於用戶和工具開發提供了不錯的參考資料。它裡面包涵了 12 種產品,算是相當有參考價值的一份報告。

2009-03-06

如何刪除不合法檔名的檔案

之前曾經下載 portable 版的 open office ,結果解壓縮後有個檔案刪不掉,今天發現,原來只要利用 command 模式,用短檔名來刪除即可;那要怎麼做呢,方法如下:
  1. 使用 cmd 進入命令列模式
  2. 用 dir /x 察看檔案的 8.3 短檔名
  3. 直接 del 那個短檔名即可。
參考: http://blog.miniasp.com/post/2008/01/How-to-delete-file-with-invalid-filename.aspx