顯示具有 java 標籤的文章。 顯示所有文章
顯示具有 java 標籤的文章。 顯示所有文章

2013-02-03

Titanium sdk 如何利用 andriodvm 來加速測試開發

最近利用 Titanium studio 來開發 android app ,發現 android 模擬器真是非常的慢,上網找了一下資料發現 AndroidVM 這個好物,它利用 VirtualBox 來執行,整個速度真是快的不得了。

安裝檔案:

  1. VirtualBox
  2. AndroidVM
    vbox86p : 手機版, 預設解析度 480×800
    vbox86t : Tablet 版,預設解析度 1024×600
    vbox86tp : Tablet 版,但有電話的功能,預設解析度 1024×600
    gapps : 代表包含 Google 相關服務 (有 Google Play)
    houdini: 代表包含 Arm emulation (AndroidVM 是跑在 x86 上,所以反過來需要去模擬 Arm)
安裝步驟可參考:Android Development with AndroVM

那在 Titanium Studio 中要如何直接部署它並且在上面 Debug 呢?
首先,連結 androidVM

要修改 Titanium SDK 的 source code:
~/Library/Application Support/Titanium/mobilesdk/osx/2.1.4.GA/android/builder.py
將 run_adb(self, *args) 的第三行 command.extend(self.device_args) 註解掉,即可利用 Titanium Studio 的 Android Device 功能直接佈署到 device 中進行測試及除錯了。
如果要查看 AndroidVM 中 Titanium 的 log,可以在 Console 環境下執行:
adb logcat | grep -G '\(TiAPI\)\|\(TiApp\)'

2013-01-04

利用 Groovy + jsoup 來擷取網頁內容

今天一位朋有希望我幫它把某人在 yahoo 拍賣上的物品清單抓下來,剛好讓我試試利用 Groovy 及 jsoup 來處理:

參考:
http://blog.lyhdev.com/2012/12/groovy-jsoup-java-html-parser.html

2012-11-19

如何在 OSX 中開啟多個 Eclipse


在 OSX 環境中,預設 Eclipse 只能開啟一個,當我們需要同時間開啟兩個 workspace 時,就需要以指令的方式去開啟另外一個 Eclipse instance:

  1. 開啟 Terminal 
  2. 切換到 Eclipse 安裝路徑
    cd /Application/eclipse
  3. 下指令開啟 Eclipse
    ./eclipse &
    或是
    open -n Eclipse.app

參考:
http://stackoverflow.com/questions/118243/open-multiple-eclipse-workspaces-on-the-mac

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-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新特性之監控與管理

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-11

Eclipse 中文化

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

2009-04-09

如何讓設定 FlowLayout 的 JPanel 有 ScrollBar

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

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-02-07

JNI

目前 java 與 dll 溝通的技術主要有以下幾種:

目前看起來好像是 JNative 比較方便。

參考文章: JNI技術實踐小結

2009-02-02

背景執行 Unit Test

Background Unit Testing: New Evolutions in Unit Testing and IDE Integration 裡面介紹了兩個 eclipse 的 plugin 來讓我們即時的執行 Unit Test ,這樣的好處就是我們一改動程式,就可以立即知道是否有造成 unit test 錯誤,感覺相當不錯,可以看看嚕。裡面介紹的兩個工具如下: 第二個還有 idea 的 plugin ,而且是 open source 的,改天有空而且電腦有升級後再來玩玩看。XD

2009-01-07

Tomcat Resource 使用的 lib 擺放位置

在網路上看到在 Tomcat 中設置 Datasource,都需要將 jdbc driver 放到 Tomcat 的 lib 目錄下,之前在研究使用 JTA 時,才發現原來並不一定要將 jdbc driver 放在 Tomcat 的 lib 目錄下。之前說過 Tomcat 載入 class 的順序,當我們在 context.xml 中宣告了 Resource ,如果該 Resource 的 factory 是使用到 Tomcat lib 下的 class ,此時 classloader 就只會找 Tomcat lib 目錄下的 class 來載入。

上面的寫法,使用的是 Tomcat 預設的 Factory 來啟始 Resource,如果 jdbc driver 沒有放在 Tomcat 的 Lib 下,就會無法使用。

此寫法,當我使用 factory 是 com.atomikos.tomcat.BeanFactory,我是將其 jar 檔都打包在我的 war 檔裡,因此 Tomcat 在載入此 Resource 時,會使用的是 WEB APP 的 classloader ,因此 jdbc driver 也只要放在 web app 下即可被載入。

如何利用 Java 5 Concurrency 來加速程式

好文共享:Accelerating Applications with Java 5 Concurrency

如何動態取得 Windows 系統特殊資料夾

怎麼利用 Java 去取得 windows 系統上的特殊資料夾呢? 在 dot net 平台上,微軟有準備好Environment.SpecialFolder 列舉型別 來給開發者用,而 java 平台上,目前有看到 winfoldersjava 可以使用,目前似乎不支援中文,用法如下:

import java.io.File;

import com.catnapgames.winfolders.WinFoldersJava;


public class Test {
 public static void main(String[] args) {
  System.load(new File("").getAbsolutePath() + "\\WinFoldersJava-1.0.dll");
  System.out.println("CSIDL_PERSONAL\t\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_PERSONAL));
  System.out.println("CSIDL_LOCAL_APPDATA\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_PERSONAL));
  System.out.println("CSIDL_MYPICTURES\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_MYPICTURES));
  System.out.println("CSIDL_COMMON_APPDATA\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_COMMON_APPDATA));
  System.out.println("CSIDL_COMMON_DOCUMENTS\t" + WinFoldersJava.getSpecialFolderPath(WinFoldersJava.CSIDL_COMMON_DOCUMENTS));
  
 }
}

這程式目前對中文似乎不支援。如果只是要取得【我的文件夾】目錄的話,可以直接使用 Swing 的功能取得,中文沒問題:

javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory()

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-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-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:正規表達式的工具。