2014年11月27日 星期四

【分享】Oralce認證:Oracle Certified Expert, Java EE 6 Java Persistence API Developer(1Z0-898)的考取心得

今天以98%的分數,考過了1Z0-898,取得Oracle Certified Expert, Java EE 6 Java Persistence API Developer的證照。


一開始在準備的時候,看它過的分數比較低,以為比較難,但這次過的分數是歷次來最高的,感到非常幸運。

其實,想想,要取得這張證照,除了對Java Persistence API要有一定程度的認識外,對EJB在交易(Transaction)的控制與例外(ex. EJBException)的處,以資料表間的設計,也要有一定認識,應該是這個關係,分數門檻才設在61%。

這次考試準備的參考書是先看下列這本:


這本是國外在準備認證的網友必推的一本,我一共看了兩遍,看第一次時,真的似懂非懂,看第二遍就會比較有感覺,現在回想,如果在閱讀時,搭配作者提供的範例程式碼,吸收應該會更快一點,理解也會更透徹一點,上面這一版內容有包含到JPA2.1的部份,作者在內文都會有說明,若只是要準備1Z0-898,考試內容只會包含JPA2.0,JPA2.1的部份可以先跳過。

再來,就是「必讀的聖經」:Java Persistence Specification,這我看了三次,相較於EJB的Spec,JPA的Spec好念多了,其中還滿多以程式碼來說明的,我覺得有助於以實作的角度來理解某些觀念。

我覺得範例程式碼一定要自己打一遍,而且要能看到執行結果,對於了解一些Annotation或其他設定很有幫助。

最後,要考認證,一定免不了模擬考題,經由國外網友的推薦,我這次依然使用Enthuware出的模擬考題,他的優點是在每個題目都會有說明,真的能補足閱讀時的盲點,就如大多數的網友說的一樣:不管題目答對或答錯,一定要把它對題目的說明背起來,這樣做,對考試很有助益的

2014年11月20日 星期四

【雜志】今天天氣真是他媽媽的好

今天出大太陽,聽說會有幾天的好天氣。

像這樣的陽光,應該是騎著車浸濡其中的。


2014年11月19日 星期三

【雜志】有時我們需要的只是...

今日小小創作...XD


【筆記】在Servlet中直接存取EntityManager的建議方式

因為Servlet是預設在多執行緒環境中運行的,所以若在Servlet使用下列方式來注入EntityManager物件,是違反執行安全的(NOT thread-safe):
@PersistenceContext(unitName="QueryPaging")
private EntityManager em;
所以,若要在Servlet若要直接存取EntityManager的話,應該用本文(context)查找(lookup)的方式來取得EntityManager,再做相關的操作
package examples.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import examples.model.Employee;

@PersistenceContext(unitName="QueryPaging",name="myapp/QueryPaging")
@WebServlet("/EmAccessServlet")
public class EmAccessServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
       
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  doPost(request, response);
 }

 @SuppressWarnings("unchecked")
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  PrintWriter pw = response.getWriter();
  try
  {
   EntityManager em = (EntityManager)new InitialContext()
                                        .lookup("java:comp/env/myapp/QueryPaging");
   List empList = em.createQuery("select e from Employee e").getResultList();
   for(Employee e : empList)
   {
    pw.println(e);
   }
  } catch (NamingException e)
  {
   e.printStackTrace();
  }
 }
}
使用上面的方式,對每個請求(request)都查找一個EntityManager,應用程式容器(container)會確保不會有相同的要求共享這些EntityManager

2014年11月10日 星期一

【筆記】使用Freemake Video Converter來編輯、旋轉影片

有時使用手機或DV拍攝回來的影片會因拍攝時,手拿角度不同,造成某些播放軟體在播放影片時,會轉90度或整個倒過來,如:


若要能正確地播放,可以使用Freemake Video Converter來編輯影片,Freemake Video Converter中有可以旋轉影片的功能,可以用來矯正影片的角度。

首先點這裡來下載Freemake Video Converter,在安裝過程中,會問你要不要安裝一些功能,下列是我的選項:

選擇不安裝「Optimizer Pro」:


在安裝「Linkey」步驟時,選擇自訂安裝,並取消勾選下列選項:


安裝完成後,開啟Freemake Video Converter,開啟後的執行畫面如下:


點按【視訊】按鈕加入要編輯的影像檔:


再來在要編輯的影像檔上,點按滑鼠左鍵兩下,以開啟編輯視窗:


點按下方的「Rotate」,旋轉影像到你要的方向後,再按下【OK】按鈕:


再來選擇要轉換的影像格式:


這裡選擇「AVI」格式後,按下【轉換】按鈕:


轉換完成後,按下【確定】鈕離開: