2008年12月15日 星期一
2008年11月5日 星期三
Fat-jar -- 把全部的jar打包成一個可以執行的jar包含lib
會跳出一個輸入對話窗,要求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)用法
[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
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:
- Right-click My Computer, then click Properties.
- On the Advanced tab, click Environment Variables.
- 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.
- 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.
- 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.
- 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.
準備配置文件(文件customer.xsdconfig) 內容如下
建立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 |
那就是 Linux 之安全性特色的一個示範。 Linux 就像 UNIX 一樣是一種多使用者的系統,而檔案的權限設定是一種用來保護系統以避免惡意的竄改。
當您被權限拒絕時,一個取得存取權的方法就是您之前所學的 su 到 root。 這是因為不管誰知道 root 的密碼,就能夠擁有完全的存取權限。
不過轉換為 superuser 並不總是那麼方便或一個好主意,因為這樣會很容易因為犯錯而更改了重要的設定檔案。
所有檔案與目錄都屬於建立它們的使用者所 "擁有"。 您建立 sneakers.txt 檔案 (請看 菴 13.9.1 節) 在您的登入目錄,所以 sneakers.txt 是 "屬於" 您的。
這表示您可以指定誰能讀取、寫入甚至執行這個檔案(如果該檔案是一個應用程式的話)。
讀取、寫入以及執行是三種主要的權限設定。 因為當建立使用者的帳號時,使用者被放置在群組中,您也可以指定是否某些群組可以讀取、寫入或執行檔案。
請使用 ls 指令加上參數 -l(請看 圖形 13-11)來更仔細的看看 sneakers.txt 檔案。
這裡提供了很多的資訊。 您可以看到誰可以讀取(r)、誰可以寫入(w) 這個檔案, 以及誰建立這個檔案(sam),還有擁有者屬於哪一個群組(sam)。 還記得嗎,您所屬群組的名稱是與您的登入名稱相同的。
其他在群組右邊的資訊包括大小以及檔案建立的日期與時間,還有檔名。
第一列顯示出目前的權限設定; 總共有十個位置。 第一個位置代表檔案的類型。 其餘的九個位置實際上是給三個不同類型使用者的三組權限設定。
舉例來說:
-rw-rw-r-- |
這三組是這個檔案的擁有者、這個檔案所屬的群組以及 "其他人" (代表系統上的其他使用者)。
- (rw-) (rw-) (r--) 1 sam sam |
用來指定檔案類型的第一個項目,會顯示下列的其中之一:
d — 一個目錄
-(破折號) — 一個一般的檔案(而不是目錄或連結)
l — 一個符號連結到系統中的另一個程式或檔案
在第一個項目之後的三組設定中,您將會看到下列的其中之一:
r — 可以讀取的檔案
w — 可以寫入的檔案
x — 可以被執行的檔案(假如它是一個程式的話)
假如您在擁有者、群組或其他人的權限設定有看到一個破折號,這表示該權限不被允許。 再看一次 sneakers.txt 檔案的第一列來指出它的權限。
ls -l 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, g 與 o)
- 權限設定
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 |
來移除所有人的執行權限。
當您試著要 cd 到 tigger 目錄時, 會發生此種情況:
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--) |
使用者的總和是 6,群組的總和是 6,以及其他人的總和是 4。 這個權限設定被解讀為 664。
假如您想更改 sneakers.txt 的權限設定,讓您所屬群組沒有寫入的權限,但仍可以讀取這個檔案,您可以從該組號碼中減掉 2 來移除這個權限。
這個數值將成為 644。
要實作這個新的設定,請輸入:
chmod 644 sneakers.txt |
現在將檔案列出來確認這個變更。 請輸入:
ls -l |
輸出應該為:
-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
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管理者
- 在終端機中輸入:
sudo su
(記得輸入密碼)
再輸入:
passwd
輸入新的密碼(不會顯示)
再次確認(不會顯示)
到系統 > 管理 > 登入畫面
按標籤"安全性",把"允許本地端系統管理員登入"框框打勾 - 在終端機下指令:sudo nautilus
- 用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 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 是屬於長期維護的版本,桌面版部份保證維護 3 年,而伺服器部份則是 5 年。有興趣的人可以安裝看看。
安裝後再提供,安裝後心得與感想。
2008年4月10日 星期四
JavaWeb中URL上的jsessionid
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
----------------------------------------------------------
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++
- 安裝minGW
$sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
- 首先先安裝CDT
- 安裝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
首先我們至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
可先至官方網站下載最新的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
紅色字體輸入你的使用者名稱
- 接下來設定裝權限
- 從選單「系統」→「管理」→「使用者及群組」→「管理群組(M):」進入群組設定名單。
- 尋找vboxusers這個群組名稱(通常在最底下)。
- 點選vboxusers後,選擇「屬性」,將允許使用VitualBox的使用者都勾選起來,就完成權限設定了。
- 設定使用USB裝置的權限
$ sudo gedit /etc/udev/rules.d/40-permissions.rules
找下列的敘述:
SUBSYSTEM=="usb_device", MODE="0664"
替換成:
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裝置
- 打開VirtualBox,點選「設定值」→「USB」→「啟用USB控制器」。
- 先插上你要用的usb裝置。
- 按右邊「+」號,增加剛剛插上的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
假設配置環境都已經準備好了,即將開始下列的安裝說明:
首先我們先至官方網站下載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
以下將提供我在安裝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
當然如果不透過這套件也可以,安裝動作可以參考 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官方網站上下載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環境
終端機輸入:
$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 過程全記錄
說到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)
終端機輸入:
$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
然後設定「受限驅動程式管理員」
- 【系統】→【管理】→【受限驅動程式管理員】
如此一來,你就可以在"外觀偏好設定"(系統>偏好設定>外觀設定)裡,按「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
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。
這是我第一篇的文章,有寫不好的地方請大家多多包含與指教。