(圖片來自http://www.square-enix.co.jp/fabula/ff13/)
其實已經破關一段時間了, 看到 FF XIII-2 快出了, 來寫一下心得.
玩到遊戲中期(尤其是 Snow 救 Hope 那段)時, 感覺這也許是繼 FF VIII、FF X之後, 讓我再次喜歡上 FF 的一款遊戲.
戰鬥系統很棒, 雖然玩到後來, 喜歡的陣形跟攻擊模式大致會固定. 但遇到某些特定敵人仍不得不改變戰略. 讓佔 rpg 遊戲最多時間的戰鬥玩起來一點也不枯燥乏味. GJ.
萬萬沒想到, 後來整個爛尾啊...前面鋪陳繭與下界的恩怨情仇都是假的, 反正衝進去幹掉最後頭目就對了...更...
我猜也許是因為要順應 online game 的風潮, 所以主線弄比較短, 但任務很多...
這是本末倒置了...
對 FF XIII - 2 不抱什麼期待~~~
2011年6月24日 星期五
到頭來,我們記住的,不是敵人的攻擊,而是朋友的沉默
最近很多人轉的影片.
片中那位德佬真是令人感動.
除了引用聖經請服務生 Don't Judge 外.
也用馬丁.路德.金的名言"到頭來,我們記住的,不是敵人的攻擊,而是朋友的沉默"來鼓勵那家人.
查了原文是 In the end, we will remember not the words of our enemies but the silence of our friends
太帥了~~~
片中那位德佬真是令人感動.
除了引用聖經請服務生 Don't Judge 外.
也用馬丁.路德.金的名言"到頭來,我們記住的,不是敵人的攻擊,而是朋友的沉默"來鼓勵那家人.
查了原文是 In the end, we will remember not the words of our enemies but the silence of our friends
太帥了~~~
2011年6月20日 星期一
Spring + Proxool 注意
今天把 tomcat 6 的 jdk 從 1.5 換成 1.6 後, 怪事發生了.
一直出現 java.sql.SQLException: org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'proxool_pool'
這問題之前遇過, 是因為 web.xml 中 servlet load-on-startup 順序沒設定好造成的.
怎麼只換了個 jdk 又沒改 xml 卻又發生了?
一直出現 java.sql.SQLException: org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'proxool_pool'
這問題之前遇過, 是因為 web.xml 中 servlet load-on-startup 順序沒設定好造成的.
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/config/proxool.xml</param-value>
</init-param>
<param-value>WEB-INF/config/proxool.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
怎麼只換了個 jdk 又沒改 xml 卻又發生了?
2011年6月15日 星期三
如何在新增資料後取得自動遞增的主鍵值? How to retrieve the auto-generated database key
自動遞增(ex: mysql 的 auto increment)的主鍵(Primary key)值, 如何在新增(insert)一筆資料後, 取得剛新增的資料鍵值呢?
Spring 的 NamedParameterJdbcTemplate 的 int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder) , 可於新增後取得鍵值.
這裡有範例.
Spring 的 NamedParameterJdbcTemplate 的 int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder) , 可於新增後取得鍵值.
這裡有範例.
2011年6月10日 星期五
Spring 3 + 檔案下載 (file download / export file)
網路上看到的文件都是在講怎麼處理 pdf or excel 的檔案,
但如果是要給使用者下載 jpg or txt 檔該怎麼做呢?
今天試了一下, 其實還滿簡單的. 繼承 AbstractView 即可.
下面是示範的程式碼:
但如果是要給使用者下載 jpg or txt 檔該怎麼做呢?
今天試了一下, 其實還滿簡單的. 繼承 AbstractView 即可.
下面是示範的程式碼:
2011年6月9日 星期四
Spring + Json
為了使用Json, 今天在spring xml 加入下面的設定,
卻出現 exception 如下
是因為少了Jackson Library的關係, 可按此下載
Json 簡單的範例如下:
Java Code
@ResponseBody會依據收到的的 Accept Header 自動將回傳物件轉為客戶端可接受的型態.
此例會將 Java 物件轉為 Json 物件.
Spring 內建了數種轉換物件, 詳情可參考 Spring 說明文件
以下為回傳HashMap的範例:
Java Code:
html code (via jQuery):
ContentNegotiatingViewResolver 會依據
1. URL 的結尾(extension)
2. Accept header
3. 以上都沒有辦法判斷的話, 使用 defaultContentType
來判斷 request 的要求是那一種型態.
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="text/xml" />
<entry key="htm" value="text/html" />
<entry key="html" value="text/html" />
</map>
</property>
<property name="defaultContentType" value="text/html" />
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute"><value>rc</value></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<entry key="json" value="application/json" />
<entry key="xml" value="text/xml" />
<entry key="htm" value="text/html" />
<entry key="html" value="text/html" />
</map>
</property>
<property name="defaultContentType" value="text/html" />
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute"><value>rc</value></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
</bean>
卻出現 exception 如下
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.ContentNegotiatingViewResolver#0' defined in ServletContext resource [/WEB-INF/config/webmvc-config.xml]: Cannot create inner bean 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#17b0998' of type [org.springframework.web.servlet.view.json.MappingJacksonJsonView] while setting bean property 'defaultViews' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#17b0998' defined in ServletContext resource [/WEB-INF/config/webmvc-config.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.view.json.MappingJacksonJsonView]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#17b0998' defined in ServletContext resource [/WEB-INF/config/webmvc-config.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.view.json.MappingJacksonJsonView]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.view.json.MappingJacksonJsonView#17b0998' defined in ServletContext resource [/WEB-INF/config/webmvc-config.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.view.json.MappingJacksonJsonView]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper
是因為少了Jackson Library的關係, 可按此下載
Json 簡單的範例如下:
Java Code
@RequestMapping(value={"JsonTester"})
@ResponseBody
public ObjectNode jsonTester() {
ObjectNode rootNode = new ObjectMapper().createObjectNode();
rootNode.put("result", true);
return rootNode ;
}
html code(via jQuery)
$(document).ready(function() {
$.post("JsonTester.json",function(data) {
if (data.result) {
alert("成功");
} else {
alert("失敗");
}
});
});
return rootNode ;
}
html code(via jQuery)
$(document).ready(function() {
$.post("JsonTester.json",function(data) {
if (data.result) {
alert("成功");
} else {
alert("失敗");
}
});
});
@ResponseBody會依據收到的的 Accept Header 自動將回傳物件轉為客戶端可接受的型態.
此例會將 Java 物件轉為 Json 物件.
Spring 內建了數種轉換物件, 詳情可參考 Spring 說明文件
以下為回傳HashMap的範例:
Java Code:
@RequestMapping(value={"GetMap"})
@ResponseBody
public ObjectNode getMap(String inputValue) {
ObjectNode rootNode = new ObjectMapper().createObjectNode();
HashMap<String, String> result = myService.getMap(inputValue);
rootNode.put("result", true);
rootNode.putPOJO("myMap", result);
return rootNode ;
}
@ResponseBody
public ObjectNode getMap(String inputValue) {
ObjectNode rootNode = new ObjectMapper().createObjectNode();
HashMap<String, String> result = myService.getMap(inputValue);
rootNode.put("result", true);
rootNode.putPOJO("myMap", result);
return rootNode ;
}
html code (via jQuery):
$.getJSON("GetMap.json", {inputValue: variable }, function(data) {
if (data.result) {
$.each(data.myMap, function(key, value){
alert(key + "-" + value) ;
});
} else {
alert("Get Map failed");
}
})
if (data.result) {
$.each(data.myMap, function(key, value){
alert(key + "-" + value) ;
});
} else {
alert("Get Map failed");
}
})
ContentNegotiatingViewResolver 會依據
1. URL 的結尾(extension)
2. Accept header
3. 以上都沒有辦法判斷的話, 使用 defaultContentType
來判斷 request 的要求是那一種型態.
2011年6月7日 星期二
mysql 中文亂碼問題
網路上大多文章是說, 在 my.ini 中加入下面幾行.
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
但我加了後卻出現:
mysqld: unknown variable 'default-character-set=utf8'
原來是 [mysqld] 中的default-character-set已廢棄不用了, 改成下面這行即可.
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
但我加了後卻出現:
mysqld: unknown variable 'default-character-set=utf8'
原來是 [mysqld] 中的default-character-set已廢棄不用了, 改成下面這行即可.
character-set-server=utf8
訂閱:
文章 (Atom)