2008年11月5日 星期三

Fat-jar -- 把全部的jar打包成一個可以執行的jar包含lib

可以從Eclipse的選單,help-> software updates -> Find and Install -> Search for new features to install -> new remote site

會跳出一個輸入對話窗,要求plugin的名字和更新的來源,輸入如下:
Name: Fat Jar
URL: http://kurucz-grafika.de/fatjar


它就會幫你全部打包成一個xxx.jar檔,並放置於你的Project的根目錄下。

這個xxx.jar檔無論放在什麼位置,應該都是雙點便可執行的。

也可以在console下輸入java -jar xxx.jar 來執行它。


Reference:
http://redbug.twbbs.org/index.php/2008/07/28/397

Java World
http://www.javaworld.com.tw/jute/post/view?bid=20&id=111801&sty=1&tpg=1&age=0

2008年10月5日 星期日

linux ln (Symbolic Link)用法

ln 指令的用法

[root@linux ~]# ln [-sf] 來源檔 目標檔
參數:
-s :如果 ln 不加任何參數就進行連結,那就是hard link,至於 -s 就是symbolic link
-f :如果 目標檔 存在時,就主動的將目標檔直接移除後再建立!

範例三:將 /tmp/passwd 建立一個符號連結,(passwd 為要指定之路徑資料夾,passwd-so 為產生出來之link名稱)
[root@linux tmp]# ln -s passwd passwd-so
[root@linux tmp]# ls -li passwd*
1242760 -rw-r--r-- 2 root root 1746 Jun 29 01:03 passwd
1242760 -rw-r--r-- 2 root root 1746 Jun 29 01:03 passwd-hd
1242806 lrwxrwxrwx 1 root root 6 Jul 23 20:02 passwd-so -> passwd
# 仔細看喔,這個 passwd-so 指向的 inode number 不同了!這是一個新的檔案~
# 這個檔案的內容是指向 passwd 的,你可以看到這個檔案的大小,是 6bytes ,
# 怎麼來的?因為 passwd 共有六個字元啊!哈哈!沒錯~這個連結檔的內容只是填寫
# 連結的目標檔案檔名而已!所以,你的連結檔檔名 (有時候含路徑) 有多長,檔案就多大!


參考網址:
http://tw.myblog.yahoo.com/up-station/article?mid=124&prev=130&next=123&page=1

2008年7月29日 星期二

WebSphere 中配置 DB

ORACLE:
1.設立環境變數:

ORACLE_JDBC_DRIVER_PATH : (如:C:\oracle\ora92\jdbc\lib)

2.JDBC 提供者

變更類別路徑 (${ORACLE_JDBC_DRIVER_PATH}/classes12.jar)

3.資料來源
設定URL 例如:jdbc:oracle:thin:@127.0.0.1:1521:estore

4.在資料來源功能中,點選右邊自訂內容選項
修改driverType :oracle.jdbc.driver.OracleDriver
databaseName : estore
serverName : localhost
新建 user :xxx
password : XXXX

5.儲存設定

6.測試連線

7.重新啟動WebSphere


引用http://www.matrix.org.cn/thread.shtml?topicId=30665&forumId=40

(二)、SQL server连接池的配置

SQL Server连接池的配置步骤同Oracle,具体的参数值:
JDBC 提供程序:下拉选择Microsoft JDBC driver for MSSQLServer 2000
Sybase连接池的配置步骤也同Oracle,具体的参数值:
常规属性中的名称:Microsoft JDBC driver for MSSQLServer 2000
常规属性中的描述:Microsoft JDBC driver for MSSQLServer 2000
常规属性中的类路径:
${ORACLE_JDBC_DRIVER_PATH}/msbase.jar
${ORACLE_JDBC_DRIVER_PATH}/mssqlserver.jar
${ORACLE_JDBC_DRIVER_PATH}/msutil.jar

常规属性中的实现类名:默认
数据源中的名称:SQLSERVER_JNDI
数据源中的JNDI:SQLSERVER_JNDI
定制属性中的databaseName:数据库名称
定制属性中的serverName:Sybase数据库服务器的名称或IP
定制属性中的portNumber:端口号
定制属性中的preTestSQLString:SELECT COUNT(1) FROM TEST
同Oracle,手工“新建”user和password属性,值为数据库的用户名和口令,该用户的缺省数据库必须为databaseName的值。
其他默认。

(三)、Sybase连接池的配置

JDBC 提供程序:下拉选择Sybase JDBC Driver
Sybase连接池的配置步骤也同Oracle,具体的参数值:
常规属性中的名称:SYBASE JDBC Driver
常规属性中的描述:SYBASE JDBC Driver
常规属性中的类路径:${ORACLE_JDBC_DRIVER_PATH}/jconn2.jar
常规属性中的实现类名:默认
数据源中的名称:SYBASE_JNDI
数据源中的JNDI:SYBASE_JNDI
定制属性中的databaseName:数据库名称
定制属性中的serverName:Sybase数据库服务器的名称或IP
定制属性中的portNumber:端口号
定制属性中的preTestSQLString:SELECT COUNT(1) FROM TEST
同Oracle,手工“新建”user和password属性,值为数据库的用户名和口令,该用户的缺省数据库必须为databaseName的值。
其他默认。

(四)、MySQL连接池的配置

MySQL连接池的配置步骤同Oracle稍有不同,JDBC 提供程序中并没有MySQL中的选项,选Oracle JDBC Driver就可以,实际运行中,WebSphere是以设置的参数为准的。

具体的参数值:
常规属性中的名称:MySQL JDBC Driver
常规属性中的描述:MySQL JDBC Driver
常规属性中的类路径:${ORACLE_JDBC_DRIVER_PATH}/mysql-connector-java-3.1.10-bin.jar
常规属性中的实现类名:com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
数据源中的名称:MYSQL_JNDI
数据源中的JNDI:MYSQL_JNDI

(一)、DB2连接池的配置

1.进入管理控制台(http://localhost:9090/admin/)

2. 指定 Java 2 连接器安全性使用的用户标识和密码的列表
在安全性->JAAS配置->J2C认证数据里新建

image
这里别名和用户标识都写db2inst1(就是登录DB2数据库的用户名和密码,别名可以任意.),密码写登录DB2数据库的密码。单击应用。

3.选择:资源->JDBC提供程序,点击“新建”,建立JDBC提供程序。

image
点击“应用”后,在类路径中,“${ORACLE_JDBC_DRIVER_PATH}/db2jcc.jar”,"${UNIVERSAL_JDBC_DRIVER_PATH} /db2jcc_license_cu.jar", "${DB2UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license_cisuz.jar"三个文件,只要第一个文件路径要配置对(可以写成绝对路径),其他两个文件可以去掉,如图,再点击“应用”,然后保存,再保存。

image

4.定义数据源
点击界面中“数据源后”再点击“新建”,建立数据源。
image


这里名称写dbsource,JNDI名是jdbc/dbsource,注意JNDI名必须是上述格式,否则可能连接不上DB2数据库。组件受管认证别名和容器受管的认证别名都选择在安全性->JAAS配置->J2C认证数据里新建的选项。点击应用。

image

4.界面上点击“定制属性”,定义连接池的databasename信息。
databasename的值修改为DB2数据库里的数据库名。
点击“确定”保存配置。
其余的取默认值。

image


參考網址
http://www.matrix.org.cn/thread.shtml?topicId=30665&forumId=40
http://www.ibmdatabasemag.com/showArticle.jhtml?articleID=191600717
http://blog.csdn.net/mfkzj/archive/2006/04/29/697147.aspx

2008年7月22日 星期二

利用XMLBean寫XML

官方網站
http://xmlbeans.apache.org/documentation/conInstallGuide.html

首先設定環境變數

Windows Setup

On Windows, do the following:

  1. Right-click My Computer, then click Properties.
  2. On the Advanced tab, click Environment Variables.
  3. Add an XMLBEANS_HOME variable whose value is the XMLBeans location.

    For example, if you downloaded the XMLBeans release to the root of your C drive, this might be c:\xmlbeans-1.0.2.

  4. Edit the PATH variable so that it includes the bin directory of your XMLBeans installation. For the XMLBeans release, you could add %XMLBEANS_HOME%\bin.
  5. Edit the CLASSPATH variable to include the xbean.jar included with XMLBeans.

    This is located in the lib directory. If you built XMLBeans from source, you can also use the JAR file in the build/ar or build/lib directories.

  6. For XMLBeans V2, also include the jsr173_1.0_api.jar (or jsr173_api.jar, whichever one came in your download) to the CLASSPATH variable.

    This is found in the lib (or build/lib if you built XMLBeans from source) directory.

準備XML檔案(customers.xml),內容如下:



1
female
Jessica
Lim
1234567


350106
#25-1
SHINSAYAMA 2-CHOME


Ms Danielle
350107
#167
NORTH TOWER HARBOUR CITY




2
male
David
Bill
808182


319087
1033 WS St.
Tima Road


Mr William
672993
1033 WS St.
Tima Road





準備配置文件(文件customer.xsdconfig) 內容如下


sample.xmlbean

建立XML Schema文件(customer.xsd)內容如下








































利用scomp產生Java Classes ,語法如下

scomp [options] [dirs]* [schemaFile.xsd]* [service.wsdl]* [config.xsdconfig]*

  主要参数说明:

  -src [dir] -- 生成的Java Classes存放目录

  -srconly -- 不编译Java Classes,不产生Jar文件

  -out [jarFileName] -- 生成的Jar文件,缺省是xmltypes.jar

  -compiler -- Java编译器的路径,即Javac的位置

  schemaFile.xsd -- XML Schema文件位置

  config.xsdconfig -- xsdconfig文件的位置, 这个文件主要用来制定生成的Java Class的一些文件名规则和Package的名称,在本文,package是sample.xmlbean


在此用的例子如下:

F:\>scomp -src build\src -out build\customerXmlBean.jar customer.xsd -compiler C:\Program Files\Java\jdk1.6.0_02\bin\javac customer.xsdconfig


將生成的customerXmlBean.jar加入到Project的ClassPath.

新建一各Java Class: CustomerXMLBean. 如下:

package com.sample.reader;

import java.io.File;

import sample.xmlbean.*;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.xmlbeans.XmlOptions;
public class CustomerXMLBean {
private String filename = null;

public CustomerXMLBean(String filename) {
super();
this.filename = filename;
}

public void customerReader() {
try {
File xmlFile = new File(filename);
CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);
CustomerType[] customers = doc.getCustomers().getCustomerArray();

for (int i = 0; i < customer =" customers[i];" primaryaddress =" customer.getAddress().getPrimaryAddress();" billingaddress =" customer.getAddress().getBillingAddress();" filename = "F://JavaTest//Eclipse//XMLBean//xml//customers.xml" customerxmlbean =" new">

}

 输出结果

Customer#0
Customer ID:1
First name:Jessica
Last name:Lim
Gender:female
PhoneNumber:1234567
PrimaryAddress:
PostalCode:350106
AddressLine1:#25-1
AddressLine2:SHINSAYAMA 2-CHOME
BillingAddress:
Receiver:Ms Danielle
PostalCode:350107
AddressLine1:#167
AddressLine2:NORTH TOWER HARBOUR CITY

Customer#1
Customer ID:2
First name:David
Last name:Bill
Gender:male
PhoneNumber:808182
PrimaryAddress:
PostalCode:319087
AddressLine1:1033 WS St.
AddressLine2:Tima Road
BillingAddress:
Receiver:Mr William
PostalCode:672993
AddressLine1:1033 WS St.
AddressLine2:Tima Road










參考網址
http://www.2ed.cn/Article-3-19078.shtml

2008年6月11日 星期三

安装BIN文件

執行下列指令

chmod 755 xxx.bin——把bin 文件改成可執行的文件

參考網站
http://freesf.tnc.edu.tw/docs/rh/rhl-gsg-zh_TW-9/s1-navigating-ownership.html



所有權與權限

稍早在這個章節中,當您試著要轉換到 root 的登入目錄,您收到下列的訊息:

cd /root
bash: /root: Permission denied

那就是 Linux 之安全性特色的一個示範。 Linux 就像 UNIX 一樣是一種多使用者的系統,而檔案的權限設定是一種用來保護系統以避免惡意的竄改。

當您被權限拒絕時,一個取得存取權的方法就是您之前所學的 su 到 root。 這是因為不管誰知道 root 的密碼,就能夠擁有完全的存取權限。

不過轉換為 superuser 並不總是那麼方便或一個好主意,因為這樣會很容易因為犯錯而更改了重要的設定檔案。

所有檔案與目錄都屬於建立它們的使用者所 "擁有"。 您建立 sneakers.txt 檔案 (請看 菴 13.9.1 節) 在您的登入目錄,所以 sneakers.txt 是 "屬於" 您的。

這表示您可以指定誰能讀取、寫入甚至執行這個檔案(如果該檔案是一個應用程式的話)。

讀取、寫入以及執行是三種主要的權限設定。 因為當建立使用者的帳號時,使用者被放置在群組中,您也可以指定是否某些群組可以讀取、寫入或執行檔案。

請使用 ls 指令加上參數 -l(請看 圖形 13-11)來更仔細的看看 sneakers.txt 檔案。

這裡提供了很多的資訊。 您可以看到誰可以讀取(r)、誰可以寫入(w) 這個檔案, 以及誰建立這個檔案(sam),還有擁有者屬於哪一個群組(sam)。 還記得嗎,您所屬群組的名稱是與您的登入名稱相同的。

圖形 13-11. sneakers.txt 的權限設定

其他在群組右邊的資訊包括大小以及檔案建立的日期與時間,還有檔名。

第一列顯示出目前的權限設定; 總共有十個位置。 第一個位置代表檔案的類型。 其餘的九個位置實際上是給三個不同類型使用者的三組權限設定。

舉例來說:

-rw-rw-r--

這三組是這個檔案的擁有者、這個檔案所屬的群組以及 "其他人" (代表系統上的其他使用者)。

-    (rw-)   (rw-)   (r--) 1 sam sam
| | | |
type owner group others

用來指定檔案類型的第一個項目,會顯示下列的其中之一:

  • d — 一個目錄

  • -(破折號) — 一個一般的檔案(而不是目錄或連結)

  • l — 一個符號連結到系統中的另一個程式或檔案

在第一個項目之後的三組設定中,您將會看到下列的其中之一:

  • r — 可以讀取的檔案

  • w — 可以寫入的檔案

  • x — 可以被執行的檔案(假如它是一個程式的話)

假如您在擁有者、群組或其他人的權限設定有看到一個破折號,這表示該權限不被允許。 再看一次 sneakers.txt 檔案的第一列來指出它的權限。

ls -l sneakers.txt
-rw-rw-r-- 1 sam sam 130 3月 12 23:16 sneakers.txt

這個檔案的擁有者(在此為 sam)有讀寫這個檔案的權限。 這個群組 (sam) 也有讀寫 sneakers.txt 檔案的權限。 因為它不是一個程式,所以擁有者或群組都沒有執行它的權限。

13.14.1. chmod 指令

可以使用 chmod 指令來輕易地更改權限設定。 這個例子顯示如何使用 chmod 指令來更改 sneakers.txt 檔案的權限設定。

原本的檔案看起來就像是這樣,它的初始權限設定是:

-rw-rw-r--    1 sam sam     130 3月 12 23:16 sneakers.txt

假如您是這個檔案的擁有者或您是以 root 帳號登入,您可以更改擁有者, 群組以及其他人的權限設定。

現在,擁有者與所屬群組可以讀取與寫入這個檔案。 在這個群組之外的其他人只可以讀取這個檔案 (r--)。

注意警告

請記得檔案的權限是一種安全的象徵。 每當您允許任何人來讀取、寫入與執行檔案,您正在增加檔案有可能被竄改、變更甚至刪除的風險。 原則上,您只應該允許讀寫權限給真正需要它們的人。

在下列的例子中,您想要允許所有人來寫入這個檔案,所以他們可以讀取、寫入並儲存它。 這表示您必須要更改檔案權限中 "其他人" 的部份。

讓我們先看一下這個檔案。 在 shell 提示符號下輸入:

ls -l sneakers.txt

前面這個指令顯示了檔案的資訊:

-rw-rw-r--    1 sam sam     130 3月 12 23:16 sneakers.txt

現在,再輸入下列的指令:

chmod o+w sneakers.txt

這個 o+w 指令告訴系統您想要給予其他人寫入 sneakers.txt 檔案的權限。 如要檢查結果,再將這個檔案的資訊列出。 此時,這個檔案應該就像這樣:

-rw-rw-rw-    1 sam sam     130 3月 12 23:16 sneakers.txt

現在,所有人都可以讀寫這個檔案了。

如要從 sneakers.txt 移除讀寫的權限,可以使用 chmod 指令來一併拿走讀取與寫入的權限。

chmod go-rw sneakers.txt

藉由輸入 go-rw,您正在告訴系統從 sneakers.txt 移除群組與其他人的讀取與寫入權限。

結果看起來會像:

-rw-------    1 sam sam     130 3月 12 23:16 sneakers.txt

當您要使用 chmod 指令來更改權限設定時,您可以將這些設定當作一種簡略的表達方式,因為您所要做的事就是記得一些符號與字母來使用 chmod 指令。

這裡是這些簡略表達方式所代表意思的清單:

身份認定

u — 擁有這個檔案的使用者(就是擁有者)

g — 該使用者所屬的群組

o — 其他人(非擁有者或擁有者所屬的群組)

a — 所有人或全部 (u, go)

權限設定

r — 讀取權限

w — 寫入權限

x — 執行權限

動作

+ — 增加權限

- — 移除權限

= — 使之成為唯一的權限

想要測試您的權限設定技術嗎? 從 sneakers.txt 移除所有人的權限。

chmod a-rwx sneakers.txt

現在,看看是否您可以使用 cat sneakers.txt 指令來讀取這個檔案,您應該可以看到以下的輸出:

cat: sneakers.txt: 拒絕不符權限的操作

移除掉包括您自己的所有權限將會成功的鎖定該檔案。 不過因為這個檔案屬於您的,您總是可以使用下列的指令將它的權限設回來:

chmod u+rw sneakers.txt

請使用 cat sneakers.txt 指令來確認您(檔案的擁有者)可以再次的讀取這個檔案。

這裡是一些可使用在 chmod 的一般設定的例子:

  • g+w — 增加寫入的使用權給這個群組

  • o-rwx — 移除其他人的所有權限

  • u+x — 允許檔案的擁有者執行這個檔案

  • a+rw — 允許所有人來讀寫這個檔案

  • ug+r — 允許擁有者與所屬群組來讀取這個檔案

  • g=rx — 只讓這個群組讀取與執行(無法寫入)

藉由增加 -R 參數,您可以更改整個目錄樹的權限設定。

因為您不能真正 "執行" 一個目錄(像是在執行一個應用程式一樣),當您從一個目錄新增或移除執行權限時,您是在允許(或拒絕)搜尋這個目錄的權限。

假如您沒有允許其他人在目錄 tigger 有執行的權限,誰有讀取或寫入的權限將不重要。 沒有人可以進入這個目錄除非他們知道他們想要的確切檔案名稱。

例如,輸入:

chmod a-x tigger

來移除所有人的執行權限。

當您試著要 cdtigger 目錄時, 會發生此種情況:

bash: tigger: 拒絕不符權限的操作

再來,回復您自己與所屬群組的權限:

chmod ug+x tigger

現在,假如您使用 ls -l 檢查您的工作,您將會看到只有其他人被拒絕存取 tigger 目錄。

13.14.2. 使用數字更改權限

記得 chmod 速記方法的參考嗎? 這裡有 另一種方式來更改權限,雖然一開始看起來有點複雜。

讓我們回到 sneakers.txt 原本的權限設定:

-rw-rw-r--    1 sam sam     130 3月 12 23:16 sneakers.txt

每一種權限設定都可以一個數值來代表:

  • r = 4

  • w = 2

  • x = 1

  • - = 0

當這些數值加在一起時,總和被使用來設定特定的權限。 例如,如果您想要讀取與寫入的權限,您將會有數值 6; 4(讀取)+ 2(寫入) = 6。

至於 sneakers.txt,這裡是它的數值權限設定:

-  (rw-)   (rw-)  (r--)
| | |
4+2+0 4+2+0 4+0+0

使用者的總和是 6,群組的總和是 6,以及其他人的總和是 4。 這個權限設定被解讀為 664

假如您想更改 sneakers.txt 的權限設定,讓您所屬群組沒有寫入的權限,但仍可以讀取這個檔案,您可以從該組號碼中減掉 2 來移除這個權限。

這個數值將成為 644。

要實作這個新的設定,請輸入:

chmod 644 sneakers.txt

現在將檔案列出來確認這個變更。 請輸入:

ls -l
sneakers.txt

輸出應該為:

-rw-r--r--    1 sam sam     130 3月 12 23:16 sneakers.txt

現在,所屬群組與其他人都沒有寫入 sneakers.txt 檔案 的權限。 如要回復所屬群組的寫入權限,增加寫入 (w) 的數值 2 到第二組的權限數值即可。

chmod 664 sneakers.txt
警告警告

設定權限為 666 將允許所有人讀寫一個檔案或目錄。 設定權限為 777 將給予所有人讀寫以及執行的權限。 這些權限設定將允許竄改一些重要檔案,所以大體上來說,使用這些設定並不是個好主意。

這裡有一些一般的設定, 數值以及它們的含意:

  • -rw------- (600) — 只有擁有者有讀寫的權限。

  • -rw-r--r-- (644) — 只有擁有者有讀寫的權限; 而群組與其他人只能讀取。

  • -rwx------ (700) — 只有擁有者有讀寫以及執行的權限。

  • -rwxr-xr-x (755) — 擁有者有讀寫以及執行的權限; 而群組與其他人只能讀取與執行。

  • -rwx--x--x (711) — 擁有者有讀寫以及執行的權限; 而群組與其他人只能執行。

  • -rw-rw-rw- (666) — 所有人都可以讀寫這個檔案。(請特別小心這些權限。)

  • -rwxrwxrwx (777) — 所有人都可以讀寫與執行這個檔案。(再次叮嚀,這種權限設定是很危險的。)

這裡有一些目錄的一般設定:

  • drwx------ (700) — 只有使用者可以讀取與寫入這個目錄。

  • drwxr-xr-x (755) — 每個人都可以讀取這個目錄,但使用者與其群組有讀取與執行的權限。

2008年6月10日 星期二

放置『我的電腦』等圖示

在官方網站中有說明如何新增我的電腦等圖示

1. 由 系統(System) → 偏好設定 → Main Menu,可更改主選單
2.「Main Menu」編輯視窗中,左欄找到「系統工具」,右方勾選「組態編輯器」
3.再由 應用程式 → 系統工具 → 組態編輯器,點選「組態編輯器」視窗左欄的 apps,再點選 nautilus ,再選 desktop。右方勾選你想要出現在桌面上的圖示。

參考網站
http://wiki.ubuntu.org.tw/index.php/Ubuntu_%E6%A1%8C%E9%9D%A2%E5%85%A5%E9%96%80#.E6.94.BE.E7.BD.AE.E3.80.8E.E6.88.91.E7.9A.84.E9.9B.BB.E8.85.A6.E3.80.8F.E7.AD.89.E5.9C.96.E7.A4.BA

Ubuntu下安裝Oracle XE

最近嘗試安裝Oracle 安裝了數次,發現下列的安裝方式最快且修改的地方最少,1.在/etc/apt/source.list 中添加
deb http://oss.oracle.com/debian unstable main non-free


1.1 sudo apt-get install bc
1.2 sudo apt-get install libaio
1.1 和1.2 為所需要的套件。

2.wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle
3.sudo apt-key add RPM-GPG-KEY-oracle
4.sudo apt-get update
5.sudo apt-get install oracle-xe-universal
6.編輯 /etc/environment,添加如下幾行:
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
TNS_ADMIN=/usr/lib/oracle
PATH=$PATH:$ORACLE_HOME

儲存/etc/environment

7.執行/etc/init.d/oracle-xe configure 指令

執行初始化指令


2008年6月8日 星期日

Ubuntu 安裝 RPM 檔案

Alien 是一個將 rpm, dpkg, stampede slp 及 slackware tgz 檔案格式間轉換的工具,在 Ubuntu 上安裝 Alien 也只需用 apt 即可,相當方便,以下是安裝方法:

$sudo apt-get install alien


例如:

sudo alien -k xxxx.rpm #會將rpm轉換為deb,完成後會生成一個同名的xxxx.deb。

sudo dpkg -i xxxx.deb #安裝deb檔。

2008年5月29日 星期四

VirtualBox 分享資料夾

裝置->分享資料夾

名稱: share

路徑: C:\share

在客端(Linux)底下新增要分享的目錄(如/mnt/share)

mount -t vboxsf share /mnt/share

如果要開機就掛載的話請將上面那行加在/etc/rc.local裡面

參考網址:
http://lunafox.wordpress.com/2008/02/12/%E5%9C%A8virtualbox-154-%E4%B8%8A%E5%AE%89%E8%A3%9Dubuntu-710/#_

2008年5月27日 星期二

成為Ubuntu Root管理者

  1. 在終端機中輸入:
    sudo su
    (記得輸入密碼)
    再輸入:
    passwd
    輸入新的密碼(不會顯示)
    再次確認(不會顯示)
    到系統 > 管理 > 登入畫面
    按標籤"安全性",把"允許本地端系統管理員登入"框框打勾
  2. 在終端機下指令:sudo nautilus
  3. 用Lazybuntu安裝nautilus的外掛指令,就可以在滑鼠右鍵裏面選以root身份開檔案管理員


參考的網址:
http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?topic_id=9454&forum=7&post_id=46529#forumpost46529

2008年5月2日 星期五

eclipse Deployment failure

前幾天發現Deployment failure 的問題,出現以下錯誤訊息

Deployment failure on Tomcat 5.x. Could not copy all resources to E:\javatool\Java\Tomcat 5.5\webapps\web. If a file is locked, you can wait until the lock times out to redeploy, or stop the server and redeploy, or manually remove the deployment at E:\javatool\Java\Tomcat 5.5\webapps\web

原因有可能是eclipse 包了不存在的JAR 檔,解決方法:確認jar files並重新reference jar files 設定

2008年4月24日 星期四

Ubuntu 8.04 LTS 出爐了

Ubuntu 8.04 LTS 終於出爐了,這禮拜打算重新安裝看看,順便把一些專案會用到的工具也一起安裝起來。

Ubuntu 8.04 LTS 是屬於長期維護的版本,桌面版部份保證維護 3 年,而伺服器部份則是 5 年。有興趣的人可以安裝看看。


安裝後再提供,安裝後心得與感想。

2008年4月10日 星期四

JavaWeb中URL上的jsessionid

FYI :
http://www.blogjava.net/steady/archive/2007/09/08/143664.html
http://randomcoder.com/articles/jsessionid-considered-harmful

上列網頁中提到,透過加入 Filter 的方式過滤掉 URL 中包含的 jsessionid,再重新包装 Response 返回给瀏覽器。
以解決jsessionid在URL出現的問題。

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* Servlet filter which disables URL-encoded session identifiers.
** Copyright (c) 2006, Craig Condit. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*

*/
@SuppressWarnings("deprecation")
public class DisableUrlSessionFilter implements Filter {

/**
* Filters requests to disable URL-based session identifiers.
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// skip non-http requests
if (!(request instanceof HttpServletRequest)) {
chain.doFilter(request, response);
return;
}

HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;

// clear session if session id in URL
if (httpRequest.isRequestedSessionIdFromURL()) {
HttpSession session = httpRequest.getSession();
if (session != null) session.invalidate();
}

// wrap response to remove URL encoding
HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse) {
@Override
public String encodeRedirectUrl(String url) {
return url;
}

@Override
public String encodeRedirectURL(String url) {
return url;
}

@Override
public String encodeUrl(String url) {
return url;
}

@Override
public String encodeURL(String url) {
return url;
}
};

// process next request in chain
chain.doFilter(request, wrappedResponse);
}

/**
* Unused.
*/
public void init(FilterConfig config) throws ServletException {
}

/**
* Unused.
*/
public void destroy() {
}

2008年3月13日 星期四

Error Message: Illegal memory access for BEA

currently system

----------------------------------------------------------
Error Message: Illegal memory access. [54] ----I couldn't find any thing release notes of 27.4 update
Version BEA JRockit(R) R27.4.0
C Heap : Good; no memory allocations have failed
StackOverFlow: 0 StackOverFlowErrors have occured
OutOfMemory : 0 OutOfMemoryErrors have occured
-----------------------------------------------------------

I couldn't find jcaptcha problem for jrockit.10158.dump.

For BEA

The paper describes some possible solutions to stack overflow errors.
at http://edocs.bea.com/jrockit/geninfo/diagnos/crash.html#wp998430


But I find some body have same problem,too.
Maybe we can try it to solve the problem.


1) Try the latest version of JRockit (Version BEA JRockit(R) R27.5.0 )

2)
I first tried disabling JIT optimizations but that didn't help
I then changed GC to single generational (-Xgc:singlecon) and that seems to have fixed the problem


References
http://forums.bea.com/thread.jspa?threadID=300004611



For JCaptcha Framework

In JCaptcha Site have some Issue Navigator.

3) May be we could try to give more than 4M to JVM!!
-Xmx4M !!


References
http://forge.octo.com/jcaptcha/jira/browse/FWK-64

2008年1月27日 星期日

Ubuntu 7.10安裝Qt Eclipse Integration for C++

嘗試在LINUX 中安裝QT,忽然發現Eclipse可以整合QT所以就去官方網站看了一下資料,提供我安裝的步驟給大家參考。

  • 安裝minGW
終端機輸入:
$sudo apt-get install mingw32 mingw32-binutils mingw32-runtime


  • 首先先安裝CDT
我們可直接由 Eclipse plug-in 來安裝CDT ,我們新增一個 Remote Site 其中URL 設為http://download.eclipse.org/tools/cdt/releases/europa 然後進行Update。安裝完畢後會在Eclipse中發現 C 和C++Project

  • 安裝QT
接下來下載Qt Eclipse Integration for C++至桌面並解壓縮,解壓縮後會出現名稱為eclipse的資料夾裡頭有features和plugins兩個資料夾,分別將這兩資料夾內的內容放置你Eclipse(以我為例我的Eclipse放置/opt/Eclipse)相對應的資料夾內(Eclipse中也有features和plugins兩個資料夾),然後啟動Eclipse,即可。這樣QT就整合完成了。


參考資料
http://trolltech.com/developer/downloads/qt/eclipse-integration-download
http://trolltech.com/developer/downloads/qt/qteclipse-installmanual
http://www.cppblog.com/oomusou/archive/2006/11/11/15020.html
http://vertex.javaeye.com/blog/monthblog/2006-07?show_full=true

2008年1月23日 星期三

Ubuntu 7.10安裝EclipseME

最近忽然想研究一下J2ME,所以就找了一下資料,最後決定用EclipseME 來開發因為我都用Eclipse來開發不太想灌第二套的IDE,所以下列將提供我安裝的經驗。

首先我們至Sun 安裝WTK (Ubuntu 英文版 6.x版有測試過)或是其他的模擬器,當然也可以使用套件安裝,我這邊是使用自行下載安裝。本文下載sun_java_wireless_toolkit-2_5_1-linux.bin至/opt/

  • 安裝WTK
終端機輸入:
$   cd /opt/

輸入:
$   sudo sh sun_java_wireless_toolkit-2_5_1-linux.bin

會出現是否接受 license 的規定(當然是按y)。

些下來會出現一些安裝訊息,擷取片斷資訊如下所示供大家參考
Do you agree to the above license terms? [yes or no] y

Testing /usr/X11R6/bin/java...

A suitable Java interpreter was detected

0) Use /usr/X11R6/bin/
1) Specify a path to a Java interpreter directory.
2) Cancel this installation.
Select a choice [0-2]: 0

Please enter a directory into which you would like to install the Sun Java(TM) Wireless Toolkit, 2.5.1 for CLDC.
[ default is /opt/WTK2.5.1 ]:
Installation directory is /opt/WTK2.5.1
....
『省略』
....
Check for Product Updates? [yes or no] y

Setup has enough information to start copying the program files.
Current Settings:
Destination Directory
/opt/y/
JVM Folder
/usr/X11R6/bin/
Check for Program Updates
Enabled

Please choose one of the following options:
0) Begin copying files if you are satisfied with the settings .
1) Cancel the installation.
Select a choice [0-1]: 0

然後在按照官方網站的設定去Update和設定,即可Eclipse中在使用EclipseME,因為官方網站所提供的安裝方法很詳細,所以不在這邊再做介紹。

下載antenna.jar
http://antenna.sourceforge.net/

下載proguard
http://proguard.sourceforge.net/

簡體版教學
http://www.cnjm.net/eclipseme/docs/installation.html

PS:我的Eclipse Platform Version: 3.3.1.1

2008年1月21日 星期一

Ubuntu 7.10 下安裝VirtualBox

目前所有軟體還沒有100%支援Linux,所以有時候會造成一些操作上的不便,和有些無解的問題需要Windows因此建議安裝虛擬機器來切換作業系統,已減少不便之處。

可先至官方網站下載最新的VirtualBox,以我為例下載檔案為virtualbox_1.5.4-27034_Ubuntu_gutsy_i386.deb並放置/home中。

然後先安裝一些套件,以方便安裝VirtualBox。
終端機輸入:
$   sudo apt-get install libxalan110 libxerces27

$   sudo apt-get install build-essential linux-headers-`uname -r`

然後到VirtualBox安裝包的目錄(/home)
終端機輸入:
$   cd /home

開始執行安裝
終端機輸入:
$   sudo dpkg -i virtualbox_1.5.4-27034_Ubuntu_gutsy_i386.deb

使用者加到 vboxusers 的 group 去
終端機輸入:
$   udo usermod -G vboxusers -a USER_NAME

紅色字體輸入你的使用者名稱

  • 接下來設定裝權限
  1. 從選單「系統」→「管理」→「使用者及群組」→「管理群組(M):」進入群組設定名單。
  2. 尋找vboxusers這個群組名稱(通常在最底下)。
  3. 點選vboxusers後,選擇「屬性」,將允許使用VitualBox的使用者都勾選起來,就完成權限設定了。
  • 設定使用USB裝置的權限
終端機輸入:
$   sudo gedit /etc/udev/rules.d/40-permissions.rules

找下列的敘述:

# USB devices (usbfs replacement)
SUBSYSTEM=="usb_device", MODE="0664"

替換成:

# USB devices (usbfs replacement)
SUBSYSTEM=="usb_device", GROUP="usbusers", MODE="0664"

紅色字體為增加的部份

Ubuntu 7.10中預設關閉usbfs的支援,會導致VirtualBox出現以下錯誤:
Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.

  • 修正錯誤
終端機輸入:
$  sudo gedit /etc/init.d/mountdevsubfs.sh

開啟後,找下列敘述:

#
# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount --rbind /dev/bus/usb /proc/bus/usb

將最後四行的#去掉,如下所示:
#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb


設定完後,重啟系統,設定才會生效。就不會再出現錯誤訊息了,也能夠正常使用usb裝置了。

  • 設定使用USB裝置
  1. 打開VirtualBox,點選「設定值」→「USB」→「啟用USB控制器」。
  2. 先插上你要用的usb裝置。
  3. 按右邊「+」號,增加剛剛插上的usb裝置,按「確定」,完成。

接下來就可以按照一般程序開始安裝xp了

補充:
開啟virtualbox選擇設定值->分享資料夾
新增一個資料夾
假設資料夾為xyz(個人習慣放在home的目錄裡或桌面)
設定好資料夾後啟動虛擬xp
點選開始->執行輸入net use z: \\vboxsvr\xyz
z為想設定的槽
打開我的電腦後就會看見多了一個網路磁碟z(z為所設定的槽代號)

參考
http://blog.pixnet.net/Ubuntu/post/8524747

virtualbox教學可參考
http://mmpo.pcadsl.com/mmpo/windows_software/virtualbox/

參考資料
http://ubuntucookbook.com/recipes/install-virtualbox-on-ubuntu.html
http://www.wmfield.idv.tw/496

2008年1月20日 星期日

Ubuntu 7.10 下安裝Tomcat

首先確認是否已經安裝 Java Software Development Kit (SDK) and J2SE Runtime Environment (JRE)如果還沒,請先參照這裡的設定方式設定。

假設配置環境都已經準備好了,即將開始下列的安裝說明:
首先我們先至官方網站下載Tomcat,在這範例我是下載apache-tomcat-6.0.14.tar.gz
並放置在/home底下。

我們將tomcat解壓縮至/opt/底下,所以
打開終端機並輸入:

$   cd /opt/

執行解壓縮
終端機輸入:
$   tar xvzf /home/apache-tomcat-6.0.14.tar.gz

解壓縮完,就會發現apache-tomcat-6.0.14的資料夾了。

測試是否安裝成功
終端機輸入:
$   cd apache-tomcat-6.0.14/bin

$   ./startup.sh 

會出現下列的訊息:
Using CATALINA_BASE: /opt/apache-tomcat-6.0.14
Using CATALINA_HOME: /opt/apache-tomcat-6.0.14
Using CATALINA_TMPDIR: /opt/apache-tomcat-6.0.14/temp
Using JRE_HOME: /usr/lib/jvm/java-6-sun

假如沒出現上面的訊息請確認你設定的環境變數是否正確。

然後打開瀏覽器並輸入http://localhost:8080/ 輸入完畢後會出面tomcat 預設的首頁畫面,這時Tomcat已經安裝完成了。


參考資料:
http://ubuntuforums.org/showthread.php?p=226828

Ubuntu 7.10 下安裝Pidgin

Gaim 一直以來是大家在 X (Xorg/X11) Window 下常用的即時通訊(IM)軟體,可以用來與 MSN Messenger、Yahoo! 即時通或 Google Talk 等常見通訊軟體上的聯絡人、好友互相傳送訊息或檔案。而Gaim 在 2.0 正式版本之後就更名為 Pidgin

以下將提供我在安裝Pidgin的過程
首先至Pidgin下載並點選Source選項來下載,我下載pidgin-2.3.1.tar.bz2至(/home)


打開終端機並輸入:
$   sudo apt-get install libgtk2.0-dev libxml2-dev gettext libgnutls-dev

(這部份我有做修改,在參考資料中libnss-dev 和libnspr-dev 套件無法找到)

先到我們下載檔案所在的目錄中:
終端機輸入:
$   cd /home

執行解壓縮
終端機輸入:
$   tar xvfj pidgin-2.3.1.tar.bz2

解壓縮完畢後進入pidgin-2.3.1
終端機輸入:
$   cd pidgin-2.3.1

現在開始配置(Configure)和安裝(Install)
終端機輸入:
$   ./configure

$   make

$   sudo make install

執行上列幾個程序pidgin即可順利安裝完成。


參考資料
http://jhcore.com/2007/06/04/install-pidgin-in-ubuntu/

2008年1月18日 星期五

Ubuntu 7.10 下安裝My SQL

Ubuntu 7.10 apt 有提供安裝My SQL套件,我們可以很方便的安裝My SQL
當然如果不透過這套件也可以,安裝動作可以參考 My SQL 官方所提供的文件安裝

在這將說明利用apt套件如何安裝 My SQL
打開終端機並輸入:
$   sudo apt-get install mysql-server


安裝完畢後,
打開終端機並輸入:
$   cd  /etc/init.d/

假如你在安裝的時候沒輸入密碼的話
輸入:
$   mysql -u root 

如果有,請在後面在增加 -p 終端機會要求你輸入密碼

假設你已經順利去進mysql (左邊會出現mysql>),接下來就新增用戶及權限
終端機中輸入:
$   mysql>grant all privileges on *.* to username@localhost identified by 'password' with grant option;

username ,password 分別輸入你所要的帳號密碼。你就可以透過這帳號和密碼使用在loaclhost中的資料庫了。

終端機並輸入:
$   sudo apt-get install mysql-admin mysql-navigator

即可使用MySQL 所提供的介面來操作MySQL



2008年1月17日 星期四

Ubuntu 7.10安裝Eclipse+MyEclipse

有很多人很習慣使用Eclipse IDE 來開發軟體,當然我也不例外,所以在這提供我安裝Eclipse IDE的經驗與大家分享,希望能幫到需要在Ubuntu 系統下利用Eclipse開發軟體的許多的人們。
不多說我就直接說明:

先去至Eclipse官方網站上下載Eclipse:
http://www.eclipse.org/downloads/
將Eclipse下載至主文件夾(ex:/home/scout/datas/)下建立一個目錄存放Eclipse,下載完後,将下載到的壓缩檔直接解壓缩至文件夾至/home/scout/java/下,

然後下載MyEclipse至桌面(home/scout/Desktop)
http://www.myeclipseide.com/module-htmlpages-display-pid-4.html

下載前需要注意一點,MyEclipse是一個商業軟體簡單說就是需要付費的軟體,只能免費試用30天。

打開終端機並輸入:
cd /home/scout/Desktop

先進入到存放MyEclipse檔案的資料夾之中。

然後在終端機輸入(如果下載的檔案名稱為MyEclipse_6_0_1GA_E3_3_1_Installer.bin):
$sudo sh MyEclipse_6_0_1GA_E3_3_1_Installer.bin

然後就會出現安裝程序,比較要注意的是在安裝過程中,必須選擇Eclipse所在的目錄,點擊“Choose“按鈕来選擇“/home/scout/datas/Eclipse/"(我們之前下載Eclipse所放置的資料夾),後面的安裝就沒什麼太大問題。

然後在“應用程式“裡建立MyEclipse的選單:
打開終端機並輸入:
$sudo gedit /usr/share/applications/Eclipse.desktop

打開後,複製下列內容(注意紅色字體的路徑)
[Desktop Entry]
Name=Eclipse
Comment=Eclipse IDE
Exec=/home/scout/datas/eclipse/eclipse
Icon=/home/scout/datas/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=Application;Development;

然後存檔,之後你就會在應用城市--->軟體開發 中發現eclipse的選項

如此一來基本的MyEclipse IDE 就準備就緒了。

Ubuntu 7.10 下配置JAVA環境

Ubuntu 7.10下安装JAVA 簡單 只要電腦有連上網路的情況下:
終端機輸入:
$sudo apt-get install sun-java6-jre sun-java6-jdk

安裝完畢後我們還要設定java的環境設定
終端機輸入:
$sudo gedit /etc/environment


然後寫入下面兩列内容:《複製:/usr/lib/jvm/java-6-sun/lib 到CLASSPATH 的後面即可不同的CLASSPATH以冒號來區分》

CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib

JAVA_HOME=/usr/lib/jvm/java-6-sun

然後設定jvm的優先順序
終端機輸入:
$sudo gedit /etc/jvm


新增下列寫到最上面
/usr/lib/jvm/java-6-sun

最後確認java的版本
終端機輸入:
$java -version

會出現下列的字樣
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)

這時恭喜您已經設定成功了

2008年1月15日 星期二

安裝Ubuntu7.10 過程全記錄

今天忽然想到我很久沒有碰我那台黑金剛(IBM R52 筆電),於是趁這機會就把它改裝成Ubuntu玩玩看。

說到Ubuntu就一定要去Ubuntu官方網站看看不然一定會後悔的,裡面有相當多的資料和資源及高手,如果是新手的話,那更是一定要去的聖地。

先到Ubuntu網站去下載Ubuntu7.10 ISO檔 ,下載來源:http://apt.nc.hcc.edu.tw/pub/ubuntu-cd/7.10/從這網址選擇適合自己安裝環境的Ubuntu。可能是我這的網路速度快吧,下載不到幾分鐘就下載完畢了。

然後再去下載
Lazybuntu懶人包因為等等會用到它,這對一個新手來說是非常有用的套件喔。接下來就是我安裝Ubuntu紀錄片的開始了。

從官方網站的Ubuntu7.10 ISO檔 下載下來後,並將這映像檔燒製成CD,並放置我的黑金剛裡面,而我在一邊看著官方提供的安裝使用手冊(我用另一台桌上型電腦上網),一邊將黑金剛重新開機並設定電腦成由光碟機來開機啟動。

進入Ubuntu畫面後,我照著網站的說明step-by-step的開始設定,首先由F1~F6都設定完畢,這時我腦海裡想著,要不要順便測試一下記憶體呢?我千萬也沒想到這各決定正是我惡夢的開始,於是我就開始執行記體測試,從下午5點到 到隔天9點還沒測試完畢(我的記憶體1.5G),建議新手如果真的有"時間"的話,可以嘗試測試看看。

進入 Ubuntu主畫面後,即可點選桌面上的 安裝(Install) 圖示進行安裝的動作。然後按照Ubuntu所提供的安裝手冊設定語系、時區和鍵盤順序後,開始建立分割區,這步驟其實是我比較害怕的地方,這步驟必須小心處理,否則會資失掉電腦上的原有資料,(建立分割區畫面選項說明不在這敘述,可至Ubuntu裡面有完整介紹與說明)於是我選擇了手動的方式開始進行分割區設定。

目前黑金剛有C、D兩個資料區而且是 SCSI 硬碟,所以在partitions table 中會出現代號為 /dev/sda 的兩個分割區,這時選擇並設定主分割區(root)、建立 swap (swap是作虛擬記憶體,當實體記憶體不夠用,就會使用swap)和 個人資料(/home 分割區)。接下來的步驟就按照使用手冊的說明安裝,很順利的安裝完畢並執行第一次的開機。

開機後,點選左上角的應用程式(Applications) ->附屬應用程式(Accessories) ->終端機(Terminal),讓黑金剛先撥接上網在終端機中輸入sudo pppoeconf 進入PPPOE設定程式,依照Hinet 或別他家網頁業者所提供的帳號和密碼輸入進去即可完成設定。

然後將剛剛下載的懶人包解壓縮並執行,接下來就選擇你所要的套件去安裝,執行完畢後,在Ubuntu 桌面,右上方的工作列會有更新通知,請點選此程式來進行最新程式的更新。這些更新下載的時間比安裝的時間還久(給新手了解一下)。

全部安裝完後,就要設定一件重要的事情,這要視個人的電腦配備來做適當的設定,以我為例,因為會不定時的當機(這讓我很困擾),原因是Ubuntu抓不到我黑金剛的顯示卡驅動程式於是目前先暫時安裝Ubuntu所提供的內建ATI驅動程式來應急,所以未來如果要安裝Ubuntu的話,先看看自己電腦硬體設備的型號記起來並去官方下載最新驅動程式才是明智的作法。在這提供小弟的小小經驗。

目前有幾個問題:

1.開機速度很慢
從網路上搜尋到幾篇文章在這提供大家參考
http://yurinfore.blogspot.com/2007/10/x31-ubuntu-710.html
http://blog.pixnet.net/mouse329/post/10049739

這兩篇的教學,讓我的機開時間原本150秒所短到26秒,讓我有蠻大的感動,因為等開機的時間這麼久實在讓我快瘋掉了。

首先安裝bootchart,
到終端機輸入:
sudo apt-get install bootchart

安裝之後,每一次開機,它會記錄各個開機程序所耗用的資源,並整理成圖表檔案會放在/var/log/bootchart下,然後重開機,看還沒調整前開機要花費多少時間。

按照X31 於 Ubuntu 7.10 的調校(by YUREN)的做法是修改 /boot/grub/menu.lst,將開機選項中的 splash 改成 nosplash:
終端機輸入:
$sudo gedit /boot/grub/menu.lst

然後搜尋splash字串,並修改成 nosplash,然後存檔;

然後在修改 /etc/fstab,把開機的兩個磁區的檢查關閉:
終端機輸入:
$sudo gedit /etc/fstab

找到這兩列的資料並修改為0(如下列紅色字體)
UUID=3cd59194-5bd7-4ed3-b238-ca5b83a90dcb / reiserfs notail 0 0
UUID=8e6a1c42-85b6-48b4-af08-bcd4657856aa /home reiserfs defaults 0 0

接下來在系統→管理→服務裏面把電腦裡用不到的藍牙、APMD關閉。
然後重新開機,看看開機速度是不是已經變快了。

我的黑金剛只調整上列的動作,速度提昇了一半以上。

至於要不要調整其他的設定如省電功能或其他設定,就依個人的需要來自行決定。

2.特效開不起來(解決方法重新安裝驅動程式)

先下載最新的驅動程式,下載 ati-8.42.3版本

  • 下載到自己桌面,然後記得要改名!
  • 把下載下來的檔案名稱當中有「-X86.X86_64」的字眼去掉。
  • 例如,如原来是 ati-driver-installer-8.42.3-x86.x86_64.run 的改為ati-driver-installer-8.42.3.run
  • (引用johnlin)
然後建立deb的安裝檔案包:
終端機輸入:
$sudo apt-get update

$sudo apt-get updatesudo apt-get install module-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-$(uname -r)

先到剛剛下載到的驅動程式的位置。
終端機輸入(我下載的檔在放置桌面):
$cd /home/scout/Desktop

終端機的模式之下,開始建立deb的包裝檔案。
終端機輸入:
$ sh *.run --buildpkg Ubuntu/feisty
之後在桌面會產生四個deb包裝檔案

修改fglrx核心模組
終端機輸入:
$ sudo gedit /etc/default/linux-restricted-modules-common

然後將下列敘述改為紅色字體的敘述
DISABLED_MODULES="" 改成 DISABLED_MODULES="fglrx"


☆☆重新安裝☆☆

安裝剛剛deb包裝檔案
終端機輸入:
$ sudo dpkg -i xorg-driver-fglrx_*.deb fglrx-kernel-source*.deb fglrx-amdcccle*.deb

移除舊的fglrx
終端機輸入:
$  sudo rm /usr/src/fglrx-kernel*.deb

(我第一次執行時,有發生錯誤的訊息,但是別緊張先繼續執行下去)

$  sudo apt-get -f install

編譯核心模組並安裝:
終端機輸入:
$   sudo module-assistant prepare

$   sudo module-assistant update

$   sudo module-assistant build fglrx

$   cd /usr/src

$   sudo dpkg -i fglrx-kernel-*

$  sudo depmod -a

執行完畢後,接著重新開機。

重新開機之後,進行fglrx的驅動程式設定

終端機輸入:
$   sudo dpkg-reconfigure xserver-xorg

畫面可參照這裡

設定完畢後,編輯xorg.conf檔案
終端機輸入:
$    sudo gedit /etc/X11/xorg.conf

開啟後,在Device 段添加兩行敘述:
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"

且在後面添加兩段敘述:
Section "Extensions"
Option "Composite" "0"
EndSection

Section "ServerFlags"
Option "AIGLX" "off"
EndSection

存檔完畢後,接著在終端機輸入:
$     sudo mkdir -p /usr/X11R6/lib/modules/dri

$      sudo ln -s /usr/lib/dri/fglrx_dri.so /usr/X11R6/lib/modules/dri

然後重新開機。

重新開機之後,
在終端機輸入:
$     fglrxinfo


所以,如果顯示的是以下的訊息或是其他錯誤的訊息時(我的情況就是出現不一樣的訊息)
  • display: :0.0 screen: 0
    OpenGL vendor string: Mesa project: www.mesa3d.org
    OpenGL renderer string: Mesa GLX Indirect
    version string: 1.2 (1.5 Mesa 6.4.1)
那就是沒有安裝成功!需要重新安装!(我就是重新安裝就成功了,再試一次吧)

移除剛剛所安裝的驅動程式

在終端機輸入:
$     sudo apt-get remove --purge fglrx-control

$     sudo apt-get remove --purge fglrx-kernel-source

$     sudo apt-get remove --purge xorg-driver-fglrx

$     sudo lrm-manager

移除deb包裝檔案
在終端機輸入:
$     sudo apt-get autoremove --purge fglrx*

然後回到上面有☆☆重新安裝☆☆字樣的地方繼續往下面的步驟安裝。

假設你跟我一樣順利安裝成功後,請繼續往下面走

  • 下載安裝XGL相關組件
在終端機輸入:
$     sudo apt-get install xserver-xgl

  • 建立一個新的配置XGL文字檔案
在終端機輸入:
$     gksudo gedit /usr/local/bin/startxgl.sh

打開後將下面紅色字體複製上去並存檔
#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
DISPLAY=:1
cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"
exec dbus-launch --exit-with-session gnome-session

接著,在終端機輸入:
$     sudo chmod a+x /usr/local/bin/startxgl.sh

然後在建立檔案
在終端機輸入:
$     gksudo gedit /usr/share/xsessions/xgl.desktop

打開後將下面藍色字體複製上去並存檔
[Desktop Entry]
Encoding=UTF-8
Name=Xgl
Comment=Start an Xgl Session
Exec=/usr/local/bin/startxgl.sh
Icon=
Type=Application


然後設定「受限驅動程式管理員」
  • 【系統】→【管理】→【受限驅動程式管理員】
將ATI影像加速驅動程式的選項打勾。

如此一來,你就可以在"外觀偏好設定"(系統>偏好設定>外觀設定)裡,按「Visual Effects」調整3D特效,預設是「Normal」,(但是我在還沒重新安裝驅動程式是是無法選擇「Normal」,且會出現「The Composite extension is not available」的錯誤訊息),當然要調到「Extra」開啟更多特效,開到Extra,視窗移動就有布丁特效了。

以上是我安裝ATI驅動程式的經驗供大家參考

參考的資料
http://johnlin96.blogspot.com/search/label/Ubuntu%207.10-%E6%A1%8C%E9%9D%A2%E7%89%B9%E6%95%88%E8%AE%8A%E8%A3%9D%E7%A7%80

以下資料我個人覺得寫的還蠻清楚的供大家參考:
billypan 部落格

2008年1月11日 星期五

Integration ThinWire and Spring 、 JPA

ThinWire:RIA Ajax GUI Framework用此框架開發Web應用程序,其外觀像是在模擬桌面GUI應用的程序。採用事件驅動的GUI開發的模式且支持大部分主要的流覽器。而所有程式都是用 Java 語言编寫,用標準的 Sun javac 编譯器將程式編譯為 Web應用程式。

Spring 、JPA 在此就不作詳細之介紹。


下載ThinWire 後將其Web、Spring、ThinWire相關的 jar library 放置/WEB-INF/lib 中後,該文章即將說明該如何整合Spring 和 ThinWire 且透過JPA來存取資料庫。這次整合的重點只有幾個檔案設定applicationContext.xml、web.xml 為這次主要的設定檔。

applicationContext.xml 主要設定如下:
  <class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor"/>
宣告Spring support jpa 元件

<bean id="personService" class="thinwrie.test.service.PersonServiceImpl"/>

程式主要實做

<bean id="entityManagerFactory" class="org.springframework.orm.jpa. LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="MYSQL" /> <property name="showSql" value="true" /> </bean> </property> </bean>
設定entityManagerFactory

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
/>
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost/plain?useUnicode=true&characterEncoding=utf-8"
/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>

設定資料庫

<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
>
<property name="entityManagerFactory"
ref="entityManagerFactory"
/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />
設定transactionManager


設定好之後,回想一下要如何取得Spring 的Service呢?對!就是透過Spring ApplicationContext
之前都會透過下列的敘述來取得我們所需要的Bean
WebApplicationContext appCtx = WebApplicationContextUtils.getWebApplicationContext( servletContext );但是在ThinWire 中並沒有提供可得到WebApplicationContext 的方法,所以透過ContextLoaderListener 這元件我們就可以辦到了


首先先建立繼承ContextLoaderListener 的Class

然後再建立另一各Class 來讀取Sping Bean 的 Method


這可以讓我們隨時可以用來取得Spring Bean.

接下來設定Web.xml



1. 設定所建立的
StaticContextLoaderListener Class
<listener> <listener-class>thinwrie.test.app.StaticContextLoaderListener</listener-class> </listener>

2. 設定
ThinWire 所需要的設定

<servlet> <servlet-name>thinwire </servlet-name> <servlet-class>thinwire.render.web.WebServlet </servlet-class> <init-param> <param-name>mainClass </param-name> <param-value>thinwrie.ez.app.SayHi </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>thinwire </servlet-name> <url-pattern>/ </url-pattern> </servlet-mapping>
這麼一來所需要的佈署就準備好了,接下來就可以開始撰寫囉

1. 我們利用Spring 所支援的JPA來建立一各 Person 的Calss 如下圖所示

2.建立這Person 的 interface :

3.建立PersonService 的實做


4.最後我們利用ThinWire建立一各簡單的範例

public class SayHi { public static void main(String[] args)
{
// TODO Auto-generated method stub
final Dialog dialog = new Dialog("Simple ThinWire Application");
final GridBox gbx = new GridBox();

gbx.setBounds(25, 25, 300, 120);

gbx.setVisibleHeader(true);

GridBox.Column idcol = new GridBox.Column();
idcol.setName("ID");
idcol.setVisible(false);

GridBox.Column col1 = new GridBox.Column();
col1.setName("First Name");
col1.setVisible(true);
GridBox.Column col2 = new GridBox.Column();

col2.setName("Last Name");
col2.setVisible(true);

gbx.getColumns().add(idcol);
gbx.getColumns().add(col1);
gbx.getColumns().add(col2); PersonService fs = (PersonService) Spring.getBean("personService");
List personlist = fs.findAll();
for (int r = 0; r < personlist.size(); r++)
{

GridBox.Row row = new GridBox.Row();
Person ps = (Person)personlist.get(r);
String temp_first_name = ps.getFirst_name();
String temp_last_name = ps.getLast_name();

row.add(ps.getId());

row.add(temp_first_name); row.add(temp_last_name);
gbx.getRows().add(row);
}

dialog.getChildren().add(gbx);

dialog.setVisible(true);
}
}




然後將Tomcat 跑起來後 即會出現下圖所示之視窗



有人也許對我上面所舉的Person 的範例很眼熟,沒錯,我是利用Struts2官方網站所提供的範例,藉由這範例讓大家更能了解到核心技術採用好與否,更能選擇出更多更有彈性的UI,所以我將透過ThinWire也可以呈現模擬桌面化UI。

這是我第一篇的文章,有寫不好的地方請大家多多包含與指教。



This My news in my Blog

I will Building my Blog.