2010年11月12日 星期五

[Android] uses-permission 備註

AndroidManifest.xml 的 uses-permission 意義

頭尾是用"<"uses-permission">"包起來

android:name=”android.permission.INTERNET”
允許程式存取 internet

android:name="android.permission.ACCESS_NETWORK_STATE"
照字面的意思應該是允許程式存取網路的狀態吧!

android:name="android.permission.RESTART_PACKAGES"
以經不被支援了(This constant is deprecated. The restartPackage(String) API is no longer supported)

android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
(Allows mounting and unmounting file systems for removable storage.)
允許安裝和卸載在可移動存儲設備上吧

android:name="android.permission.WRITE_EXTERNAL_STORAGE"
寫入外部的儲存設備(應該是指SD Card)

android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"
(Allows an application to change whether an application component (other than its own) is enabled or not.)
允許一個程式是否改變一個組件或其他的啟用或禁用

android:name="android.permission.WRITE_CONTACTS"
(Allows an application to write (but not read) the user's contacts data.)
允許這個AP寫入(但不會讀出)用戶的聯絡人
 
android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
(Allows an application to access extra location provider commands)
允許應用程式訪問額外的位置提供命令

2010年8月5日 星期四

[Tomcat] 啟動錯誤


2008/5/10 上午 04:51:08 org.apache.catalina.core.AprLifecycleListener init
資訊: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_05\bin;....


有人找到原因:

原來Tomcat從5.5版本後增加了APR技術(Apache Portable Runtime),這是一個用C語言寫成文件包,目的在於提高Tomcat的服務性能,從而使得Tomcat將不僅僅擔任一個容器的功能,而是要成為一個一般的web服務器(general purpose webserver)。

可以知道的是,原來預設的版本都沒有附加那個檔案!
因此,請各位到Tomcat網站上去下載:http://tomcat.apache.org/download-native.cgi
進去後找到 You may download them from HERE 連結,
在裡面找一個版本編號是最新的,進去後去下載一個叫 tcnative-1.dll 的檔案。
下載下來的tcnative-1.dll 的檔案,如果各位有設定JAVA_HOME的環境變數,
就直接把此檔案放進去 %JAVA_HOME%\bin 的目錄底下即可!

重新啟動Tomcat

2008/5/10 上午 04:42:00 org.apache.catalina.core.AprLifecycleListener init
資訊: Loaded Apache Tomcat Native library 1.1.12.

我使用的版本為5.5.30

參考來源:http://www.javaworld.com.tw/jute/post/view?bid=9&id=227419&sty=1&tpg=1&age=0

2010年8月3日 星期二

2010年7月14日 星期三

[Java] 檔案刪除 File.delete()

application.getRealPath("")為抓取真實路徑

File file = new File(application.getRealPath("abc.txt")); //jsp user
或是
File file = new File("c:/abc.txt")

file.delete();

2010年7月8日 星期四

[Jsp] 檔案上傳(org.apache.commons.fileupload)

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

List  items = upload.parseRequest(request);
   
   Iterator iter = items.iterator();
    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();

        if (item.isFormField()) {
           //一般的request item
            String name = item.getFieldName();
            String value = item.getString();
            out.println(name + "=" + item.getString("UTF-8"));
        } else {
            // 如果是上傳檔案, 就在這接收
            //processUploadedFile(item);
            String fieldName = item.getFieldName();
            String fileName = item.getName();
            String contentType = item.getContentType();
            boolean isInMemory = item.isInMemory();
            long sizeInBytes = item.getSize();
            out.println("fieldName="+fieldName+"");
            out.println("fileName="+fileName+"");
            out.println("contentType="+contentType+"");
            out.println("isInMemory="+isInMemory+"");
            out.println("sizeInBytes="+sizeInBytes+"");
            if (fileName != null && !"".equals(fileName)) {
                fileName= FilenameUtils.getName(fileName);
                out.println("fileName saved="+fileName+"");
                File uploadedFile = new File(saveDirectory, fileName);
                item.write(uploadedFile);
            }
        }
    }           

2010年7月7日 星期三

[Hibernate] 使用hibernate會使用到的jar檔

hibernate-distribution-3.5.3-Final  require lib
antlr-2.7.6.jar
c3po-0.9.1.2.jar
cglib-2.2.jar
commons-collections-3.1.jar
commons-logging-1.1.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.0.jar
slf4j-jcl-1.6.0.jar

有用到ehcach才使用ehcach
有用到c3po才使用c3po

[Hibernate] 使用hibernate會遇到的slf4j錯誤

at org.slf4j.impl.JCLLoggerAdapter.(JCLLoggerAdapter.java:49)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:70)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:103)
at org.hibernate.cfg.Configuration.(Configuration.java:151)
at com.xxxxxx.SessionFactory(自訂的SessionFactory).(SessionFactory.java:xxx)

解決方法是更新"slf4j-jcl.jar"

http://www.slf4j.org/codes.html#jclDelegationLoop

2010年6月30日 星期三

Apache2.2.x 上建置SVN服務 for windows

Apache官網:http://httpd.apache.org/

文中使用Apache版本:http://archive.apache.org/dist/httpd/binaries/win32/apache_2.2.10-win32-x86-no_ssl.msi

SVN官網:http://subversion.tigris.org/

文中使用SVN版本:http://subversion.tigris.org/files/documents/15/46880/svn-win32-1.6.6.zip


1.Apache2安裝及設定
開啟防火牆80埠
本人是將Apache安裝於C:\Apache2.2 \bin\httpd.exe
新增 C:\Apache2.2 \bin 到環境變數PATH 內
將 svn-win32-1.6.6.zip 解壓縮到 C:\svn-win32-1.6.6 資料夾
新增 C:\svn-win32-1.5.5\bin 到環境變數 PATH 內
為了讓環境變數 PATH 生效,強烈建議您重新開機
Stop Apache,將 Apache 服務停止
複製 C:\svn-win32-1.6.6\bin\mod_dav_svn.so 及 C:\svn-win32-1.6.6\bin\mod_authz_svn.so
將兩檔案貼至C:\Apache2.2\modules
開啟 C:\Apache2.2\conf\httpd.conf
移除 #LoadModule dav_fs_module modules/mod_dav_fs.so 開頭的#號
移除 #LoadModule dav_module modules/mod_dav.so 開頭的#號
於 httpd.conf 的尾端加入


#修改/WEB-INF/及/META-INF/,配合tomcat目錄權限,
#要瀏覽這兩個目錄時,至少要通過基本Apache的帳號認證
<LocationMatch "/WEB-INF/">
AllowOverride AuthConfig
Order allow,deny
Allow from all
Order deny,allow
Deny from all
</LocationMatch>
<LocationMatch "/META-INF/">
AllowOverride None AuthConfig
Order allow,deny
Allow from all
Order deny,allow
Deny from all
</LocationMatch>

# 添加 SVN 的模組
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

#http://localhost/svn的目錄設定
<Location /svn>
DAV svn

#SVN實體磁碟路徑
SVNPath C:/svn-win32-1.6.6/svn
AuthType Basic
AuthName "Subversion repository"

#使用者權限設定檔
AuthzSVNAccessFile C:/svn-win32-1.6.6/auth

#使用者密碼檔
AuthUserFile C:/svn-win32-1.6.6/pwd
Require valid-user
</Location>

將 httpd.conf 存檔
2.權限設定說明
目前有3個帳號,admin_user是總管理者,user_a、user_b都是一般使用 者,http://localhost/svn/project_1可讓一般使用者讀寫,http://localhost/svn/project_2 只可讓一般使用者讀,但不可以寫入
開啟命令提示字元(cmd.exe)
輸入:svnadmin.exe create C:\svn-win32-1.6.6\svn ,並按 Enter 鍵送出
建立新的純文字文件 C:\svn-win32-1.6.6\auth
注意:auth 是一個無副檔名的純文字檔而非一個目錄
於auth內輸入:

[groups]
admins = admin_user
users = user_a,user_b

[svn:/]
* = r
@admins = rw

[svn:/project_1]
@admins = rw
@users = rw
[svn:/project_2]
@admins = rw
@users = r

將 auth 存檔
3.使用者的密碼設定
在命令提示字元內

* 輸入 htpasswd.exe -c C:\svn-win32-1.5.5\pwd admin_user 按 Enter 鍵送出,會提示設定 admin_user 的密碼兩次,-c 代表初始建立密碼檔案
* 輸入 htpasswd.exe C:\svn-win32-1.5.5\pwd user_a 按 Enter 鍵送出,一樣會提示設定 user_a 的密碼兩次
* 輸入 htpasswd.exe C:\svn-win32-1.5.5\pwd user_b 按 Enter 鍵送出,一樣會提示設定 user_b 的密碼兩次

4.啟動 Apache
5.建立SVN內的目錄
在命令提示字元內

* 輸入 svn.exe mkdir -m "project_1" http://localhost/svn/project_1 按 Enter 鍵送出
* 輸入 svn.exe mkdir -m "project_2" http://localhost/svn/project_2 按 Enter 鍵送出
* 輸入 svn.exe list http://localhost/svn 按 Enter 鍵送出,查看目錄是否建立

6.最後測試
開啟瀏覽器,輸入網址 http://localhost/svn 按 Enter 鍵送出
輸入 admin_user 的帳號密碼

[Java] quartz 工作定時排程器

[Java] quartz 工作定時排程器
http://polinwei.blogspot.com/2008/11/java-quartz.html

quartz 工作定時排程器
http://www.ebismacau.com/blog/archives/41

2010年4月9日 星期五

[Java]JOptionPane


JOptionPane.showInputDialog("輸入一個整數:");

JOptionPane.showMessageDialog(Componentparent Component,Object message,String title, int messageType)

參數:

parentComponent - 確定在其中顯示對話框的 Frame;如果為null或者parentComponent 不具有 Frame,則使用預設的 Frame

message - 要顯示的 Object title - 對話框的標題字元串

messageType - 要顯示的訊息型別:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE