2012年4月13日 星期五

【Hadoop】安裝配置

本文介紹在一個 Linux 的環境下建立一個 Hadoop

首先我的環境是 Ubuntu 10.10  (非虛擬機下)

在接下來的動作之前  請記得先讓你的環境可以上網

這裡提供簡單的 Ubuntu 的有線上網設定 (自動取得IP)

eth0 是我的有線網卡

sudo gedit /etc/network/interfaces


iface etho inet dhcp


sudo /etc/init.d/networking restart


sudo ifup eth0

接下來進入正題,再安裝 Hadoop 之前必須要先安裝 Java

主要是因為 Hadoop 是基於 Java 開發的

2012年4月2日 星期一

【MongoDB】安裝配置

本篇介紹如何在Windows的系統下安裝與配置你的MongoDB

並額外推薦一個簡易的MongoDB管理工具介RockMongo


首先到 http://www.mongodb.org/downloads 下載MongoDB的最新版

我目前是抓 2.0.4 的版本,下載下來並解壓縮之後

可以將整個目錄放到 D:\ 也可以只將目錄下的bin資料夾移到 D:\ (位置自行決定)

我這邊是先在 D:\ 底下建立一個資料夾 mongodb,並把解壓縮後的內容都放入

完成之後在 mongodb 中建立一個 data 的資料夾

之後開啟你的 command line (cmd) 並移動到 D:\mongodb\bin

並輸入如下的指令  >  mongod --dbpath D:\mongodb\data

應該會看如如下的結果:

2012年3月28日 星期三

Hibernate 教學 - 繼承 : Table per concrete class with implicit polymorphism

本篇介紹的是Hibernate繼承機制方案中的另一解法

跟上一篇大同小異 Hibernate 教學 - 繼承 : Table per concrete class with unions (<如需看以下內容請先看這篇)

基本上Discount 和 Free 這兩個實體類別都會對應一個Table

差別式在於Table per concrete class with unions 這個作法下

他只需透過一個映射檔就能夠交代繼承關係(union-subclass)

那麼在 Table per concrete class with implicit polymorphism 這個情況下

你必須針對每個實體類都撰寫一份映射文件

這樣子的狀況下 就會出現共同屬性(父類別的屬性) 會出現在每份映射文件內

也就是說 會寫到一些重複的代碼,如之前的範例就會造成

在 Preferential 這個父類別下的 id 和 name 屬性必須重複在

Discount.hbm.xml 和 Free.hbm.xml 中去定義

當然Table per concrete class with implicit polymorphism 這個方法是繼承架構下

最易懂也易學的一個基本概念。

2012年3月17日 星期六

Hibernate 教學 - 繼承 : Table per concrete class with unions

本篇介紹 Hibernate 中的繼承機制裡的其中一個  Table per concrete class with unions

從字面上翻譯,可以看得出一個table會對應到一個具體類

但是它不像 Table per concrete class with implicit polymorphism 需要一個具體類別就要一個映射檔

Table per concrete class with unions  只需要一個映射檔並透過 union-subclass 

來指名具體類是對映到哪個資料表即可

以下以一個"優惠(Preferential)"為一個抽象的父類別,並有兩個子類別

"折扣(Discount)" 以及 "免費(Free)"

首先先來看這三個簡單的Java程式

Preferential.java

2012年3月16日 星期五

【DisplayTag】Excel亂碼問題

在使用DisplayTag的時候多,如果你會出Excel檔案的時候,多半會發生中文亂碼問題

因為DisplayTag並沒有針對中文作良好的編碼,因此如果你遇到類似問題

不仿採用下面介紹的方法解決亂碼的情況吧

先去下載 displaytag-export-poi-1.1.jar





這是目前官方推薦的作法,它已經將POI導出Excel的一些過程整合到

DisplayTag下以解決中文亂碼的問題,所以你只需要額外下載displaytag-export-poi-1.1這個JAR即可。

  並將它放到/WEB-INF/lib/  最後在classpath下的displaytag.properties中新增這一段

        export.excel.class=org.displaytag.export.excel.ExcelHssfView

        就可以解決問題了。

注意我使用的是 display1.1.1版本,所以你如果抓錯POI的JAR檔,就無法有效解決你的問題



2012年3月15日 星期四

【DisplayTag】匯出檔案

如果有要匯出 Excel,Xml,Pdf,RTF,CSV檔案的話,不仿可以考慮使用 DisplayTag

首先你必須先下載 displayTag相關的JAR檔案

在以下的範例環境我採用displaytag1.1.1版的

接著如果我們想針對網頁上的某份報表進行匯出的動作

可以將原本呈現報表的tabel標籤轉成如下所示:


<display:table export="true" name="show_query" pagesize="10"  >
    <display:column property="userName" title="姓名"  />
    <display:column property="email" title="連絡電話" />         
</display:table>


export="true" 告訴display:table 開啟匯出功能

pagesize="10" 則是每個table會有10筆資料

name="show_query" 資料的來源,這裡的show_query是request裡的一個屬性資料
                                                            等同於 request.getAttribute("show_query")

2012年3月12日 星期一

【Cordova】環境配置與範例

Cordova 的前身是PhoneGap,但是在前陣子已經將PhoneGap捐給Apache基金會了

並命名為Cordova。以下我以Cordova在Android環境上建立一個簡單的HTML範例

首先先到 http://phonegap.com/download/ 這是PhoneGap的官網下載 library

目前最新版是1.5.0,但是下載下來並解壓縮之後的JAR檔案名稱已經更改為 cordova.jar 了

首先先依照下面步驟建立範例程式

前提是你必須已經具備Android得開發環境,包括Eclipse。Android環境配置

建立Android專案

File > New > Android Project > 輸入專案名稱 > 選擇SDK (這裡我是用Android 3.2)

> 設定package name > Finish

完成之後,就可以來配置Cordova的環境

1. 在專案目錄下建立libs的目錄
2. 在assets目錄下建立www目錄

2012年3月9日 星期五

【DWR】調用HttpServletRequest

最近在用 DWR 處理 Ajax 問題時,遇到一個狀況

就是我想要在前端網頁送出請求到後端時,透過HttpSession 檢查請求的有效性

但是我們一般在建立一個 DWR的後端處理元件時,如下:


<create creator="new" javascript="PhoneVisitDataService">
      <param name="class" value="erp.mgt.PhoneVisitDataService" />
</create>


PhoneVisitDataService.java 是一個後端的DWR原件,或許你會問

我該如何讓這之程式取得Session,在Servlet中取得Session是透過:

HttpServletRequest的getSession()取得,那這支程式又該怎樣擁有HttpServletRequest物件

在DWR的應用中,所有的AJAX請求都會先到某一支Servlet

再由該Servlet呼叫 PhoneVisitDataService 的某方法(例如: getPhoneVisitData() )

因此如果要在 getPhoneVisitData方法中取得HttpServletRequest物件

你只要這樣寫就可以了

public PhoneVisitData getPhoneVisitData(HttpServletRequest request) 

這樣DWR就會自動幫你把 HttpServletRequest 物件導入給你的方法中了

2012年2月11日 星期六

【DWR】集合物件與JavaBean


最後的範例綜合前面的所介紹的,底下程式提供一個遠端服務,

能夠取得所有書籍(BookBean),並放到Java的List集合內以回傳給前端網頁的Javascript

先來看一下BookBean.java的內容

package org.bean;

/**
 * @author allen
 *
 */
public class BookBean 
{
 private String title;
 private int price;
 
 public BookBean(){}

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public int getPrice() {
  return price;
 }

 public void setPrice(int price) {
  this.price = price;
 }
}

2012年2月9日 星期四

【DWR】陣列運用

如果我們需要透過DWR呼叫遠端還取得多筆的資料

可以用以下範例在網頁中有一個select-option的下拉式選單

當網頁在載入的過程中透過DWR呼叫遠端服務,並回傳一個字串陣列

取得四個季節的選項並加入到下拉式選單中。

首先,先提供一個遠端的服務SeasonService.java 

package org.service;
/**
 * @author allen
 *
 */
public class SeasonService
{
 public String[] getSeason(){
  return new String[]{"春","夏","秋","冬"};
 }
}