2009年11月30日 星期一

Servlet can not resolve multipart/form-data type

當我在osgi環境上,想利用servlet方式上傳檔案,會發現無法上傳且回覆錯誤訊息如下。

Log ErrorError handling connection
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at org.eclipse.equinox.http.servlet.HttpServletRequestImpl.parseRequestLine(HttpServletRequestImpl.java:1264)
    at org.eclipse.equinox.http.servlet.HttpServletRequestImpl.parseHeaders(HttpServletRequestImpl.java:1034)
    at org.eclipse.equinox.http.servlet.HttpServletRequestImpl.<init>(HttpServletRequestImpl.java:77)
    at org.eclipse.equinox.http.HttpListener.handleConnection(HttpListener.java:220)
    at org.eclipse.equinox.http.HttpThread.run(HttpThread.java:159)

發生這個錯誤的原因就是Servlet無法解析multipart型態的上傳,因此我們要針對這做個修改。拜google大神,Oreilly提供了不錯的Multipart處理程式碼。我們只要下載並與專案做連結,而使用語法如下:

public void doGet(HttpServletRequest request,  HttpServletResponse response)
    throws IOException{
                MultipartRequest mr = new MultipartRequest(request , "d:\\", 5*1024*1024);
}

d:\是指儲存的位址,5*1024*1024是檔案大小。如此一來,就可以正確處理上傳文件了。

參考資料:
[1] 解决jsp或serverlet 不能解析multipart/form-data 类型的表单域的问题
[2] com.oreilly.servlet

2009年11月29日 星期日

[360] 50 cent: Blood on the sand

TPS類型。

射擊遊戲+饒舌音樂,果然有搞頭。這遊戲已經變成我的發洩Game了。一天上班很累回來,就是要靠這種遊戲打打殺殺,釋放一肚子的憤怒。很高興有這遊戲陪伴我過這禮拜一到五的時光。

平心而論,重複性還蠻高的,不建議一次打很久,會很無聊。

50_cent_blood_on_the_sand_frontcover_large_naZf9RVzcSDIZEO

[360] Bayonetta

ACT類型。

很多人會拿DMC4跟這款遊戲做比較。我想,這不用比了吧!簡直是LP比雞腿。Bayonetta無論是系統、故事的豐富性,都遠遠超過DMC4以上。沒有DMC4那種破老梗劇情,cost down的地圖來回走兩次。這爽感,會讓人捨不得把它破關呀!

缺點說一下好了,就是有些地方會由動畫轉換回玩家操作,這個階段沒有提示玩家要開始操作,所有有時候會看著動畫就死掉了。

列入360必玩遊戲。

bayonetta-famitsu-perfect-score-xbox-360-box-artwork

[360] Call of Dty – Modern Warfare 2

FPS類型。

這款真得是大作。我就不特別為此介紹了。要提的是,遊戲有越來越電影化的趨勢。利用簡單類似QTE的按鍵,或是即時穿插的動畫,讓人有置身於電影中的感覺。其實類似的作法遊戲還有uncharted系列也是這樣。

玩這遊戲,就像在看電影就好了!

x360-cover-art-with-tag1

2009年11月26日 星期四

java in ubuntu

ubuntu裡面apt-get預設的不是sun出品的java。雖說open是好事,但也造成我有點不太方便。sun自己提供的linux安裝程式也沒有安裝功能,只是解壓縮到目錄。網路上一些文章說要裝這個、改那個才能讓整個環境建立起來,我看了就懶,我只想用java…。

經查詢後,發現了好用的方法。

sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk

就通通裝起來了呀,環境變數也設定好了。

參考資料:
[1] Ubuntu Linux Install Sun Java Development Kit ( JDK ) and Java Runtime Environment ( JRE )

Sip route

Sip協定中有route,record route和via這三種標籤。新手乍看之下覺得這三種長得很像,其實這些分別都有不同的目的和功能。

SIP路由机制解析(zz),這篇文章以很容易了解的中文,把這三種標籤扮演的角色以例子寫出來。說穿了RFC3261裡面也有舉這些例子可以參考,只是我覺得先看這篇blog比較容易上手。

jftpd porting

今天很無聊的把java版的ftp放到版子上。

這次採用的是jftpd這個小型的ftp,可以在這裡下載到原始碼。因為要用j9環境來執行,因此不可以使用java se環境來編譯,必須使用me環境,在之前的文章也有說過。

然而,由於版子上是read-only的檔案系統。所以要把用到log的程式碼全部砍掉,然後修改預設根目錄為"/”,就是最上層目錄。再編譯就可以了。

image

java這麼好移植,那最終目標是製作bt下載!