2017年9月16日 星期六

Java 8 的 Date 及 Time 的處理

方便機器處理的日期時間類別 java.time.Instant; java.time.Duration.

方便人類閱讀的日期時間類別: java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime; java.time.Period

2017年6月17日 星期六

PrimeFaces p:calendar 元件套用 bootstrap form-control 樣式

技術問題

PrimeFaces p:calendar 套用 bootstrap .form-control 是無法正確顯示。p:calendar 的輸入外框會超出元件邊界外框,如下圖所示:


2017年6月10日 星期六

EJB 3.1 Embeddable API + Junit 技術心得整理

簡介

在 Junit 中使用 Embedded GlassFish Server 做爲 EJB 元件的測試環境。The EJB 3.1 Embeddable API is designed for unit testing of EJB modules.

參考範例 Using the Embedded EJB Container to Test Enterprise Applications (https://netbeans.org/kb/docs/javaee/javaee-entapp-junit.html?print=yes)


2017年5月14日 星期日

Netbeans 中 pull 特定的 remote branch

要 pull 特定的  remote branch 到本地端:

1. (M)Teams > Pull > Remote...
2. 選擇 Git Repository Location
 
3. 選擇要 pull 的 remote branch
4. OK.

2017年4月28日 星期五

melt() 使用時 measure variable 的型態要一致

使用 melt() 來 reshape 資料時, measure variable 的型態要一致,否則會出現警告。

例如有以下的資料:


資料中,subject 欄位為 factor。若使用 subject 為 id.var 進行 melt,則會出現以下警告訊息:


因為,第一個欄位為 Factor 型態,melt() 把後面其他的欄位也視為 Factor,造成轉換時的錯誤。


Reference:
[1] thiagogm, 2013. Reshape and aggregate data with the R package reshape2, www.r-bloggers.com.

2017年4月27日 星期四

ui:debug 和 flash.keep 的衝突

若在 facelet 中使用 ui:debug,則在同一個 facelet 中使用 flash.keep 時無法正常顯示 flash scope 中的變數。

測試資料

References:
[1] ui:debug
[2] Flash class

2017年4月15日 星期六

Expectation-Maximization (EM) Algorithm 介紹


演算法,用來計算混合模型(Mixture Model)下的 Maximum Likelyhood 估計。

混合模型(Mixture Model):
觀察到的資料點(Data Point) 來自於兩個分配(Distribution), 哪些資料點是屬於那個分配呢?




Youtube 影片介紹
EM Algorithm: How it works (1) by Victor Lavrenco
EM Algorithm: How it words (2) by Victor Lavrenco

2017年3月29日 星期三

心得整理 - 文字探勘者的入門心法.


文字探勘(Text mining) 是由人類文字中找出知識的研究。其過程,先對需進行文字處理,將人類自然語言文字和機器文字(如 HTML 標籤)分離。之後,在應用 Data Mining 的技術,找出文字間的關係或者分群等,以找出文字背後所代表的群眾知識[1]。


一、研究範疇

文字探勘的研究主題可依人類產生文字的過程進行區分。文字是人類對於客觀世界現象的主觀描述。在文字探勘的第一個主題是找出自然語言的知識,內容包括:

  • 自然語言處理(Natural Language Processing): 將人類自然語言轉化為電腦更易於處理的形式,如詞性分析、句法分析、語義分析等。
  • Text Representation: 利用數字表示沒有結構化的文字,以利後續數學處理。
  • 文字關聯及探勘(Word association and  Mining): 找出具有相同用途的文字,也稱為 Paradigmatic Analysis;或者找出文字間不同的組合的方式,也稱為 Syntagmatic Analysis。
  •  Topic Mining: 在了解字與字之間的關係後,找出主觀描述者在討論的話題(Topic)。
  •  Concept Mining: 試著找出文字中的抽象想象(abstract idea)或稱概念,此概念是大家都知道的概念,雖然所有的字彙不同,但描述的都是相同的概念。如自然語言中的同義字或者片語,be completely dead = be as dead as doornail。

文字探勘的第二個主題是找出主觀描述者背後的知識,試著分析出描述者的主觀意見(Opinions)。 這個主題稱為 Opinion Mining, 從文字中分析主觀描述者的意見或情緒, 如 positive/negative, happy/sad 等.

第三個主題是從主觀描述者所提供的文字, 分析出主觀描述者所處客觀環境中發生的情境資料, 如地點、事件、描述者的人際網絡等, 此主題稱之為 Contextual Text Mining。


二、方法整理

2017年3月17日 星期五

在 RStudio 啟動時自動執行語系切換 指令


問題

在資料中有中文字,每次進 RStudio 時都要手動執行 Sys.setlocale(category="LC_ALL", locale = "cht") 將語系改成  CP-950。

做法

在專案目錄下新增一個 .Rprofile 的檔案,加入 Sys.setlocale(category="LC_ALL", locale = "cht")  指令。如此,在開啟專案時便會自動執行 .Rprofile 內的指令[1]。


參考資料

[1]  Josh Paulson, 2017/1/22, Using Projects, https://support.rstudio.com/hc/en-us/articles/200526207-Using-Projects, Accessed on 2017/3/18

2017年2月23日 星期四

如何對 Datatable 上的某一個資料列進行編輯? - 使用 p:dataTable 元件



原理:
1. 利用 p:dataTable 中的 selection 屬性取得目前選擇的物件. selection 屬性要和 Managed Bean 的 property 綁在一起.
2. 設計一個 UI 提供使用者輸入新的資料. 這個 UI 可以是 Dialog, 也可以是 Page. 此 UI 的輸入元件會取得先前 Managed Bean Property 的資料並何其繫結在一起.
3. 在 Managed Bean 提供一個方法, 例如 saveDB(), 呼叫 EJB 的方法, 將修改後的資料儲存到資料庫中.

2017年2月7日 星期二

Defining relative clause 和 non-defining relative clause 間的用途差別


Defining relative clause 和 non-defining relative clause 間的使用方式有什麼不同呢?
參考此 youtube

My brother, who is a policeman, lives in New York.
我只有一個哥哥,現在住在 New York. 使用 non-defining relative clause, 因為不用特別限定我所要描述的規格。

My brother who is a policeman lives in New York.
我有兩個哥哥,當警察的那個現在住在 New York。使用 defining relative clause 限定我所要描述的其中一個哥哥。

來個 Quiz:
5 things about non-defining relative clauses

2017年1月30日 星期一

將 JSF Composite Component 包裝成 jar 檔供其他 Web 專案使用

1.技術問題

JSF 的 composite component (複合元件) 的功能可以組合現有 UIComponent 成為新的、重複使用的元件。可以組合成的複合元件使用、驗證器、轉換器、JSF 系統事件、及 AJAX。 完成的複合元件會包含:
  • facelet: 檔案名稱為新的標籤的名稱,其內容定義標籤的屬性及組合現有的元件。
  • java class: 支援此複合元件執行所需要的 java 程式碼。
例如,可以組合 h:outputLabel, h:inputText, h:commandButton 等三個元件,再加上一個驗證器成為新的元件專門用來輸入電子郵件。
當你完成複合元件時,你可以在現有 Web 專案的 facelet 中直接使用此元件的標籤。但是,如何將此複合元件變成一個獨立的程式庫供其他的 Web 專案使用呢?

2017年1月27日 星期五

h:inputxxx 標籤所支援的 ajax behavior event 有哪些?


技術問題:

jsf 提供 f:ajax 標籤讓元件具備 Ajax 處理的能力。f:ajax 的 event 屬性要指定與攔截的客戶端的事件[1]。若沒有指定,會使用預設的事件。

h:inputText, h:inputTextArea, h:inputSecret 標籤提供哪些 ajax 事件行為呢?

參考答案:

h:inputText, h:inputTextArea, h:inputSecret 三個標籤的元件皆是屬於 javax.faces.component.EditableValueHolder 類別的元件。這類的元件的預設 ajax 事件為 valueChange。詳細的事件如下:

2017年1月2日 星期一

如何在 Weblogic 中設定 Java DB 的 DataSource

技術問題:

已有一個 Java DB,其路徑為 D:\derby\TicketCareDB。如何在 Weblogic Server 下新增一個此 Java DB 的 Data Source,使得  Weblogic 啟動時自動啟動此 Java DB?

做法:
1. 開啟 Weblogic 的 Admin Console.
2. Navigate to (youDomain) Services > Data Sources > (B)New 新增一個 Generic Data Source
3. 設定相關的欄位,其中 Database Name 欄位要設定為 Java DB 的路徑(ie. D:\derby\TicketCareDB )

更多細節,請參考 [1].


Reference:
[1]  https://blakboard.wordpress.com/2012/11/27/set-up-apache-derby-jdbc-data-source-in-oracle-weblogic-application-server/

PrimeFaces 處理 Ajax request 過程中所產生的 callbacks 及 events

在執行 Ajax Request 的前後, 我們可以有機會執行 Javascript 完成瀏覽器上的操作。過程中的一連串的過程如下:

  • User clicks button in client
  • onclick JavaScript code is executed
  • JavaScript prepares ajax request based on process and current HTML DOM tree
  • onstart JavaScript code is executed
  • JavaScript sends ajax request from client to server
  • JSF retrieves ajax request
  • JSF processes the request lifecycle on JSF component tree based on process
  • actionListener JSF backing bean method is executed
  • action JSF backing bean method is executed
  • JSF prepares ajax response based on update and current JSF component tree
  • JSF sends ajax response from server to client
  • JavaScript retrieves ajax response
    • if HTTP response status is 200, onsuccess JavaScript code is executed
    • else if HTTP response status is 500, onerror JavaScript code is executed
  • JavaScript performs update based on ajax response and current HTML DOM tree
  • oncomplete JavaScript code is executed