Amazon Ads

2013年9月27日 星期五

[筆記]oceejbd6隨手筆記-Chapter 4

每個session bean的global JNDI name的語法如下:
java:global[/<app-name>]/<module-name$gt;/<bean-name$gt;[!<fully-qualified-interface-name$gt;]

其中
<app-name>只有在session bean是包在一個.ear的檔案才需要的,預設是.ear檔的名稱,可以透過application.xml來修改
<module-name>指的是session bean所在的模組 (module) 名稱,如ejb-jar檔或一個.war

2013年9月26日 星期四

【筆記】Java中transient關鍵字的意義

當一個類別進行序列化 (serialize) 時,有些欄位 (field) 不需要儲存或不能儲存,如密碼,因為可能在日後會被別人做反序列化 (deserialize) 後而得知一些隱密性資訊,這時可以對一個變數加上transient關鍵字來修飾,如:
private transient String password;
這就像在宣告說,針對「password」這個欄位,不要去做儲存或回復的動作,「我會自己處理它」。

2013年9月19日 星期四

[筆記]oceejbd6隨手筆記-Chapter 3


說到這個
說想到這個
Client View of a Session Bean
  1. A client never directly accesses instances of the session bean's class.
  2. A client accesses a session object through the session bean's client view
  3. Independent of the implementation of the session bean and the container
The interface used by a remote client of a session bean
  1. implemented by the container as a remote business interface
  2. location-independent
It's possible to provide more than one client view for a session bean
  • But typically only one will be provided.
Remote Clients
  • The arguments and results of the methods of the remote business interface are passed by value
Local Clients
  1. May be another enterprise bean or a web component
  2. The arguments and results of the methods of the local business interface are passed by reference
筆記...中
說到這個
說想到這個
EJB的例外可以分成兩群:Application Exception和System Exception。
Application Exception
  1. 是由Bean Provider所定義,用以報告商業邏輯有關的問題
  2. 是java.lang.Exception及其子類別
  3. Unchecked Exception (java.lang.RuntimeException及其子類別),並有@ApplicationException的annotation
  4. 類別javax.ejb.CreateException及其子類別
  5. javax.ejb.RemoveException及其子類別
  6. javax.ejb.FinderException及其子類別
@ApplicationException是用來標示一個例外 (Exception) 為一個Application Exception,並宣告它應該在發生時,能被客戶端攔截到。

它有下列幾項選擇性的元素:
Element敘述
inherited指明子類別是否也應該做為Application Exception
預設:true
rollback指定在例外被丟出時,是否應該進行交易回滾 (transaction rollback)
預設:false

參考文件

2013年9月16日 星期一

【分享】學習Java物件導向的好工具-BlueJ

記得剛開始學Java時,老師有使用一套工具,叫BlueJ,它是一套可以幫助協學者來學習物件導向的工具,拜歐覺得若要準備OCJP認證的話,對學習上非常有幫助。

上完課之後,有一段時間沒碰Java,結果也忘了曾經使用過這套工具,但最後重新接觸後,發現它還是在發展中,目前最新的版本為3.1.0,所需要的JDK版本為JDK6以上。

在此下載

如果一開始執行BlueJ之後,顯示找不到JDK的訊息,它應該會出現一個對話窗,需要選擇JDK,就按【browsing...】,選擇JAVA_HOME (Java安裝目錄) 下的bin資料夾中的java.exe」

開啟後畫面如下:


再來點按工具列的【Project】【New Project...】,建立一個新的專案。


這時會開啟儲存專案的對話窗,選到要儲存專案的資料夾,然後輸入專案名稱後,再點按【Create】


回到專案主視窗:


點按右上方的【New Class...】,會出現下列對話窗:


「Class Name」中,輸入「MyInterface」,在「Class Type」選項中,點選「Interface」

BlueJ會建立一個MyInterface的介面:


點按兩下「MyInterface」開啟編輯視窗,並把範例方法改成:
int add(int x, int y);
再點按上方的【Compile】,若編輯無誤,視窗下方應會出現「Class compiled - no syntax errors」的訊息,如下圖:


建立好一個介面後,來看看BlueJ如何協助學習物件導向。

再點按專案主視窗【New Class...】,這次在「Class Name」中,輸入「MyClass」,在「Class Type」選項中,點選「Class」,產生「MyClass」後,再點按兩下編輯「MyClass」,修改如下:


修改後直接點按上方的【Compile】,則會出現沒有覆寫MyInterface中方法的錯誤訊息:


上列的訊息在說明一個基本概念:當一個類別去實現 (implements) 一個介面時,若該類別不是抽象 (abstract) 類別,則該類別要實作介面中所定義的所有方法。

再次編輯「MyClass」,找一個地方加入下列程式碼後,再點按,這時應該會出現編譯成功的訊息。

    public int add(int x, int y)
    {
        return x + y;
    }
如下圖:


關閉編輯視窗回到專案主視窗,這時BlueJ也會將「MyInterface」「MyClass」之間,用帶空心三角形的虛線連接,來表示「implements」的關係。


最後分享一下使用經驗,當在準備OCJP等認證考試時,有做到一些題目,不知道題解在講什麼,可以把那些程式碼用BlueJ打一遍,就可以了解原因並加深印象。


2013年9月14日 星期六

[分享]使用canvas做簡單線條動畫

在HTML5中,使用canvas,搭配JavaScript的setInterval方法,就可以做出一些簡單的動畫出來,下列就是一個超陽春的例子:


首先在html檔案中,加入一個canvas元素:

然後再加入下列JavaScript程式:


其實動畫就是把一張張動作相進的畫布,加上時間軸的概念後接續起來,上列程式針對同一畫布清除後,再畫下一幕動作,這個過程由程式來執行的話,轉換是非常快的,所以使用者看起來就像是接續的一樣,只要能熟悉Canvas相關的API,要做出一些簡單但有創意的動作,應該不是難事。

2013年9月13日 星期五

[筆記]Session Bean Life-cycle Annotations

Annotation可以用來在Session Bean的生命周期 (life-cycle) 中,定義那些方法會因應相關事件而被呼叫,相關的Annotations如下表:
Annotaion
Comments
@PostConstruct
  1. 在EJB實體被建立之後,而開始被使用之前
  2. 可以用來做一些初始化的工作
  3. EJB 3.1 spec建議使用此來做初始化,而不是用建構方法
@PreDestroy
  1. 在EJB實體被容器停止服務之前被呼叫
  2. 可以用來清除或釋放一些被EJB實體使用的資源
  3. 當EJB實例丟出系統錯誤 (system exception) 時、容器毀損,或當Stateful session bean狀態為非活化 (passivated) 中而發生過時 (timeout)時,有此annotation的方法將不會被呼叫
@PrePassivate
  1. 當Stateful session bean狀態將轉為非活化 (passivated) 之前被呼叫
  2. 可以讓活化時的EJB實例所使用的資源得以釋放,並對一些非序列化的參照物件做序列化 (serialization)的處理
@PostActivate

    1. 當Stateful session bean狀態將轉為活化 (passivated) 之前被呼叫
    2. 用以獲得一些需要使用到的資源
    3. 對所參照的物件做反序列化的設定

    ps. 翻得不好,請有需要的朋友還是參考原文或EJB spec。

    節錄自:http://www.slideshare.net/krizsan/ocp-jbcd-6-study-notes,p.253

    2013年9月10日 星期二

    [里程碑]The Redtiger Planet己發佈文章數破百

    昨天中午發了一篇,應該就算破百了,但101篇,更加有意思,以此紀念。


    純粹衝文章數用:P

    [筆記]使用Canvas畫大餅 (pie chart) 再配甜甜圈 (doughnut chart)

    最近因需要開始去研究html5、如何使用canvas畫圖表,這個範例,是以後可能要實作的應用之一,滿陽春的,小小心得,在做個筆記、分享。

    如果對Canvas如何畫圓形沒有概念的,可以先看這一篇

    先看結果,如下圖:


    先在body中加入一個canvas:
    
    
    
    然後再加入下列Javascript程式碼:
    
    
    上列畫圓餅圖的部份,若要詳細說明,請參考這裡,畫甜甜圈部份,請參考程式碼中註解。

    參考來源:

    1. http://blog.yojimbocorp.com/2012/01/17/creating-a-simple-pie-chart-with-html5-canvas/

    2013年9月9日 星期一

    [分享]使用Google Chrom瀏覽器中的Screen Capture擴充程式擷取整個網頁

    有時候要擷取整個網頁,當網頁的高度超過螢幕的高度時,使用一般電腦版本的畫面擷取軟體,來擷取整個網頁是有點麻煩的事,但若是使用Google Chrome瀏覽器,再加上一個Google開發的Screen Capture擴充程式,擷取整個網頁就會變得非常容易。

    安裝網址如下:
    https://chrome.google.com/webstore/detail/screen-capture-by-google/cpngackimfmofbokmjmljamhdncknpmg?utm_source=gmail

    開啟後,點按右上角的【+ 免費】,即可開裝:


    安裝完成後,可以在Chrome上看到該工具的圖示,若要擷取整個網頁,就在該網頁中,點按該圖示,選擇【Capture whole page】,就可以將整個網頁畫面擷取下來。

    在擷取完成的畫面中的右上角,有幾個選項,點按【Save】,就可以將擷取的畫面存成一個圖檔。


    下列是拜歐擷取整個yahoo首頁的結果:


    2013年9月8日 星期日

    【解決】使用Windows 8連ADSL,出現「錯誤651:數據機(或其他連線裝置)回報了一個錯誤」

    今天拜歐終於請人來家裡裝了ADSL,當工程師裝好測試完成離去後,拜歐興奮拿起自己的電腦來測試,卻一直出現下列的錯誤訊息:

    因為有看到工程師測試的過程,一直覺得是拜歐自己記錯密碼了,還在猶豫要不要跑一趟服務門市去查密碼。但還是先Google了一下,發現ADSL連不上有可能是網卡沒啟動的關係,於是打開裝置管理員進行確認。


    拜歐的作業系統是Win8,就在最左下角點按滑鼠右鍵,開啟【裝置管理員】,再找到【網路介面卡】,再點按滑鼠右鍵後,點按【啟用】,如下圖:


    若是Window 7或XP,可以點按【我的電腦】,然後【管理】,就可以找到【裝置管理員】

    2013年9月6日 星期五

    【分享】利用FileMenu Tools新增右鍵選單

    現在免安裝 (Protable) 的軟體愈來愈多,這類的軟體通常不用安裝就可使用,但像有些文字編輯軟體,會希望在使用右鍵就可以快速找到,並使用它來開啟某些檔案,這時,就可以安裝FileMenu Tools來達到這個目的。

    按此下載

    安裝完成後,在任何一處點按滑鼠右鍵,可以看到右鍵選單多了FileMenu Tools:

    `
    點按【Configure FileMenu Tools...】,會出現下列視窗:


    這裡拜歐以新增一個可以開啟文字的免安裝軟體Notepad++為例。

    在上列視窗右上角【Action】區塊中,點按【Add Command】,在下方【Properties】區塊【Menu Text】中,輸入自己定義的名稱,這是要顯示在選單中的名稱,這裡是「Notepad++」


    在下拉到【Program】欄位,點一下右邊的空白處,會出現下圖紅框中的按鈕,點按開啟選擇要啟動的程式。


    這裡拜歐選的是免安裝的「Notepad++,如下:


    選擇好後,點按右下方的開啟鈕。

    這時,就會看到「Notepad++出現在右方的選單中,再點按左邊綠色勾勾確認後關閉設定視窗。


    再來選擇電腦中任一個文字檔案點按滑鼠右鍵,就可以找到剛設定的「Notepad++用以開啟該檔案。


    除了可以自訂右鍵選單外,還有一些好用的功能,如移動、複製,或刪除檔案等,拜歐覺得很是實用。

    這個軟體拜歐用了有一段時間了,是一直有在發展的軟體,有需要可以試用看看,如果覺得好用,請記得給予一些實質的鼓勵喔。

    2013年9月4日 星期三

    [筆記]GlassFish v3的部署設定檔:sun-web.xml

    有時要找一個設定檔,從空的XML開始,實在是有點為難自己,下列sun-web.xml是GlassFish v3特有的部署描述檔 (deployment descriptor),在此做下筆記,以後比較好找。


    
    
    
     /EJBSecurityAnnotations
     
     
      superusers
      ivan
     
     
     
      plainusers
      plain-users
     
     
      runasadmin
      runas-superuser
     
     
    
    
    
    節錄自:http://www.slideshare.net/krizsan/ocp-jbcd-6-study-notes,p.187

    2013年9月1日 星期日

    【分享】在Google Blogger中使用SyntaxHighlighter來顯示程式碼

    SyntaxHighlighter是使用JavaScript開發,用來在網頁中展示程式碼語法的一套工具,之前一直想把這套工具引入到拜歐的部落格中,但試了一次後,就完全忘了這檔事,直至最近看了這篇教學,才又想起要讓部落格加點功能來。

    第一步就是到SyntaxHighlighter的網站下載該工具,然後你需要一個地方放相關的JavaScript函式庫,可以對外開放,讓瀏覽的使用者可以連得到,這樣使用者連到你的Blogger時,這些函式庫才有作用,拜歐的JS函式庫是放在Google Site這邊,基本上只要有Google帳號,就可以使用,可以參考這篇教學,或搜尋Google Site,照說明申請。

    當上傳完所需的檔案後,在Blogger的管理介面,點選編輯HTML,如下:


    然後找到區塊,可以把要引入的CSS和JS直接貼在</head>前面,如下圖,其中黃線框起來的就是要引入的檔案:

    如下:
    
    
    
     
    
    
     
      
    
    
    
    
    
    
     
    
    
    

    其中,「js」檔案,可以在下載的「scripts」中找到,「css」檔案可以在「styles」中找到。「shCore.js」是一定要放的,其他語言的顯示,都有一個對應的「js」檔案,只要引部落格中要展示的語言對應的「js」檔即可。

    因為是在Google Blogger中使用,要在<script>區塊中加入:
    SyntaxHighlighter.config.bloggerMode = true;
    

    再來,要貼上程式碼,先切換到「HTML」編輯模式,再如下方式:
     
    function abc(){
    }
    

    相對應的語法代碼,可以這裡找到,如上列區要插入的是JavaScript代碼,就替換成「js」。

    參考來源:
    http://sharedderrick.blogspot.tw/2010/10/google-blogger-syntaxhighlighter-3083.html
    http://www.cc.ntu.edu.tw/chinese/epaper/0016/20110320_1608.html
    https://sites.google.com