2010年6月23日 星期三

2010年5月25日 星期二

在Eclipse中使用Jena API的教學
還有lib、doc跟src的設定


該死的java.lang.NoClassDefFoundError:出現時的解法
ps:這是在用Java servlet的情況下


上面的Libraries照第一個網站這樣作

下面的lib除了第二個網站那樣,還要把JENA/lib下的所有.jar複製到workspace中的WEB-INF的lib資料夾裡面

不然就...

不要問
沒有很恐怖

2010年5月8日 星期六

package 與 import

轉錄自Java World


有些人寫了一陣子 Java,可是對於 Java 的 package 跟 import 還是不

太了解,很多人以為原始碼 .java 檔案中的 import 會讓編譯器把所 import

的程式通通寫到編譯好的 .class 檔案中,或是認為 import 跟 C/C++ 的

#include 相似,實際上,這是錯誤的觀念。



讓我們先了解一下,Java 的 package 到底有何用處。


其實,package 名稱就像是我們的姓,而 class 名稱就像是我們的名字

。package 名稱有很多 . 的,就好像是複姓。比如說 java.lang.String,就

是複姓 java.lang,名字為 String 的類別;java.io.InputStream 則是複姓

java.io,名字為 InputStream 的類別。



Java 會使用 package 這種機制的原因也非常明顯,就像我們取姓名一樣

,光是一間學校的同一屆同學中,就有可能會出現不少同名的同學,如果不取

姓的話,那學校在 處理學生資料,或是同學彼此之間的稱呼,就會發生很大的

困擾。相同的,全世界的 Java 類別數量,恐怕比台灣人口還多,而且還不斷

的 在成長當中,如果類別不使用套件名稱,那在用到相同名稱的不同類別時,

就會產生極大的困擾。幸運的是,Java 的套件名稱我們可以自己取,不像人

的姓沒有太大的選擇 ( 所以有很多同名同姓的 ),如果依照 Sun 的規範來取

套件名稱,那理論上 不同人所取的套件名稱不會相同 ( 請參閱 "命名慣例"

的相關文章 ),也就不會發生名稱衝突的情況。



可是問題來了,因為很多套件的名稱非常的長,在寫程式時,會多打好多

字,花費不少時間,比如說:

1 java.io.InputStream is = java.lang.System.in;
2 java.io.InputStreamReader isr= new java.io.InputStreamReader(is);
3 java.io.BufferedReader br = new java.io.BufferedReader(isr);

實在是不美觀又麻煩。於是,Sun 想了一個辦法,就是 import。

這個 import 就是在程式一開頭的時候,先說明程式中會用到那些類別的

簡稱,也就是只稱呼名字,不 稱呼他的姓。首先,在檔案開頭寫:

1 import java.lang.System;
2 import java.io.InputStream;
3 import java.io.InputStreamReader;
4 import java.io.BufferedReader;

這幾行說明了這四個姓名的類別,在程式中只用他的名字來稱呼,所以當 程式

中提到 System 就是指 java.lang.System,而 InputStream 就是指

java.io.InputStream, 依此類推。於是原來的程式就變成:

1 InputStream = System.in;
2 InputStreamReader isr = new InputStreamReader(is);
3 BufferedReader br = new BufferedReader(isr);

這樣看起來是不是清爽多了呢?如果這些類別用的次數很多,那就更能體 會到

import 的好處了。可是這樣還是不夠,因為懶是人的天性,還是會有人覺得

打太多 import 了也很浪費時間,於是 Sun 又提供了一個方法:

1 import java.lang.*;
2 import java.io.*;

意思就是,等一下程式中提到的沒有姓名的類別,不是姓 java.lang,就是姓

java.io,如果這兩個裡面有同樣名字的類別,而不幸的你又只用名字稱呼這

個類別,那編譯器仍然會跟你抱 怨,因為它還是不知道你說的這個類別指那一

個姓的類別。那可不可以再懶一點呢,只寫:


1 import java.*;


歷史告訴我們,人可以懶,但不能太懶,這樣是不行的。因為那些類別是 姓

java.io 而不是姓 java。就像姓『諸葛』的人應該不會喜歡你稱他為『諸』

先生吧。




為甚麼我一開始說 import 跟 #include 不同呢?因為 import 的功能

到此為止,它不像 #include 一樣,會將檔案內容載入進來。import 只是請

編譯器幫你打字,讓編譯器把沒有姓的類別加上姓,並不會把別的檔案的程

式碼寫進來。如 果你想練習打字,可以不要使用 import,只要在用到類別的

時候,用它的全部姓名來稱呼它就行了(就像例子一開始那樣),跟使用

import 完全沒有甚麼兩樣。




另外,雖然人不可以太懶,但是 Sun 還是幫我們多偷了一點懶。因為

java.lang 這個套件實在是太常太常太常用到了,幾乎沒有程式不用它的,

所以不管你有沒有寫 import java.lang;,編譯器都會自動幫你補上,也就

是說編譯器只要看到沒有姓的類別,它就會自動去 java.lang 裡面找找看,

看 這個類別是不是屬於這個套件的。所以我們就不用特別去

import java.lang 了。

2010年4月21日 星期三

Eclipse 3.5 & Subclipse

http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeCoreInEclipse

http://protege.cim3.net/cgi-bin/wiki.pl?CompileProtegeOWLInEclipse

Subclipse 安裝 (Subversion,簡稱SVN,是一個開放原始碼的版本控制系統。) 這篇才有效
http://oss-tw.blogspot.com/2009/06/eclipse-35-and-svn.html
http://sites.google.com/site/javaenterpriseeditiongroup/pm-of-software/reversion-control

2010年3月22日 星期一

在Eclipse上弄protege

http://protege.stanford.edu/plugins/owl/api/guide.html上面的protege-owl API的guide,第一個範例就卡關,google上的方法都試過了

最主要的步驟應該是下面
把Eclipse項目的Java構建路徑(Java Build Path)中將所有Jar文件添加為外部Jar文件(guide中的話是「add all the JAR files from the installation to your project classpath」)。
這裡選擇添加\\Protege_3.2_beta\plugins \edu.stanford.smi.protegex.owl目錄下面的所有Jar文件和\\Protege_3.2_beta\目錄
下的所有Jar文件
但還是出現這該死的錯誤訊息,
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type OntologyLoadException at com.demo.application.OWLAPIDemoApplication.main(OWLAPIDemoApplication.java:13)


實在想不到辦法,後來按了二下圖中打叉的那個圖案


出現了兩個選項(解決方案?)


試過第二個發現不行,選第一個後發現程式碼變成這樣


Run(application)了之後,紅色部份把plugins裡面都loaded過一遍


新長出來的import edu.stanford.smi.protege.exception.OntologyLoadException;
我在plugin資料夾裡面沒看到...難道這是Eclipse的一個功能嗎?


2010年1月27日 星期三

Eee PC with Easy Peasy

Easy peasy-以Ubuntu為核心,為Netbook而生的OS

此為英文介面,可安裝中文版
特點: 可以試用的方式登入OS(免安裝),無線網路、MSN、Gmail都可以使用
更酷的是可以直接在試用的模式將OS安裝到eeepc(刪除windows),非常方便

安裝教學(此教學保留XP,並將easy peasy安裝到記憶卡):
【原 創教學】打造 Eee PC XP + Linux 雙系統環境:Easy Peasy 安裝教學
【原 創教學】打造 Eee PC XP + Linux 雙系統環境:Easy Peasy 安裝教學(續)

不過教學的easy peasy是1.0版,跟我安裝的1.5版有些不同的問題
例: language無法安裝中文(台灣),所以SCIM輸入法也沒有中文可用
解: EASY PEASY 1.5的更新問題~~
打開終端機輸入:
sudo rm -r /var/lib/apt/lists
sudo mkdir -p /var/lib/apt/lists/partial
sudo aptitude clean
sudo aptitude update
sudo aptitude full-upgrade
完成後,在網際網路裡面也順便安裝了PCMANX,不過一打開Ptt連線卻出現亂碼。
調整字型和ASCII字型成中文後就ok了,雖然畫面的大小似乎還不是最佳化

SCIM-嘸蝦米的安裝


3/22心得:雖然說是Netbook專用os,一些東西支援性還是很差,雖然這是早就知道的,但是整體效能比XP還差,最不可忍受的是音量開最大卻還是很小聲,想關靜音卻又會漏音...所以我想,暫時跟它說再見了,有空再玩

更改XP序號

最近還常幫人修電腦,大部份的情況不是中毒就是os認證未通過
明明有正版序號卻無法修改又更痛苦了,試過m$自已出的程式、keyfinder還有google到的一些reg、exe檔,沒想到都失敗

最後找到這招,而且是最簡潔有力的一招,不用重開機,it's brilliant!

引用自發卡布洛

for each Obj in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("win32_WindowsProductActivation")
result = Obj.SetProductKey ("您的序號")
Next



使用方法:

請你 把程式貼到記事本中
將"您的序號"改成想更換的序號存成XXX.vbs檔(注意25個英文數字間不用加 dash )
執行它,完成!

keyfinder有修改序號的功能,但試了多次一直無法成功修改,而且改了之後還要重開機確認。
不過至少用上面的方式改完之後,可以用keyfinder看一下有沒有改成功

如果可以擺脫windows就沒有這些困擾了,但現在很多網路ATM還是只能用IE開啟,方便也造成了不方便
希望google可以早日打敗m$,解救民間疾苦

2010年1月24日 星期日

Windows Live Sync V.S. DropBox

常常有隨身碟忘記拔的困擾嗎?
需要備份重要檔案嗎?


以下是兩個服務的介紹
微軟的免費Live Sync服務,讓你輕鬆同步多台電腦的檔案!

免費的雲端檔案儲存服務 Dropbox

一、Windows Live Sync

微軟windows Live系列的同步服務,只要有MSN的帳號就可以在MSN網站上開啟你的sync同步檔案服務。

運作方式:可以在多台電腦上,建立你想同步資料的檔案夾,連上網路後,WLS會幫你更新至最新版本(如上圖所示)

缺點:
最新版檔案所在的電腦如果沒開機或沒連上網路,將無法同步
優點:
1.不會發生舊版蓋過新版的問題,如果有兩種或以上的不同版本,會使用不同檔名的方式同時存在
2.容量上限高(取決於硬碟空間)


二、Dropbox

如圖,你的檔案存在網路上的Dropbox,方便同步化,不用讓電腦開著浪費電。甚至可以同步到iphone,不過我沒有iphone,無法體會服務的方便性。

優點:最新版存在於雲端,跨平台,可以當成圖床、網路硬碟分享檔案
缺點:申請一個dropbox帳號(要填email但不用認證),免費版的空間只有2G(最大可達5.25G)


最大限制(兩者都存在的問題):容量的問題目前來說並不大,因為最大的問題在於你的上傳頻寬,如果是一般家裡的Hinet或Seednet這種上傳頻寬很小的連線方式,想上傳太大的檔案也不很方便

ps: 如果急著關機,但是怕檔案還沒上傳完的時怎麼辦?
方法:請到開始-執行-貼上
1. shutdown.exe -s -t 3600 (3600秒=1小時後關機)
2. at 20:00 Shutdown -s (晚上8點的時候關機)


不嫌棄的話請用此連結註冊,我可以多500mb空間 XD
https://www.dropbox.com/referrals/NTQxOTExMDM5


更多Dropbox介紹教學:

3/30更新:dropbox有些檔案會無法同步,原因不明

2010年1月19日 星期二

word減肥軟體-NXPowerLite



很容易上手,剛剛把一個91Mb的檔壓成2.9Mb
效果好到我也吃了一斤...