2012年10月20日 星期六

Tomcat on QNAP TS-219P+

在Mac上運行Tomcat伺服器沒有問題。 但要將伺服器放在自己的NAS想就發覺有問題啦。因為我的NAS是行Marvel (ARM) 處理器的QNAP TS-219+。因為QNAP沒有出ARM 的QPKG Java Runtime(JRE),只有Intel處理器的JRE。

在網上搜尋好幾個討論區舊post都沒有成功的例子。不過在七月中,Oracle 出了自己的JRE(其實有左好耐XD)。細看之下發覺更新左Embedded JRE 並支援ARM 處理器喎,於是立即下載JRE 6和安裝。最後Tomcat 能在NAS 完美運行!以下分享簡單安裝步驟 :)


  • 在Oracle網站下載這個ejre-1_6_0_34-fcs-b04-linux-arm-sflt-eabi-headless-19_jul_2012.tar.gz Embedded JRE.
  • 把它抄入/share/Public/,並且把它解壓。
gzip -d ejre-1_6_0_34-fcs-b04-linux-arm-sflt-eabi-headless-19_jul_2012.tar.gz
tar xvf ejre-1_6_0_34-fcs-b04-linux-arm-sflt-eabi-headless-19_jul_2012.tar
  • 咁JAVA_HOME=/share/Public/share/Public/ejre1.6.0_34/。
  • 在伺服器創建 tomcat 户口,並建立一個 home directory。我把它設定在 /share/homes/tomcat。
  • 在tomcat .profile 裡設定 umask 027.
  • Tomcat網站下載最新版本(我只下載了Core tar.gz apache-tomcat-7.0.32.tar.gz),並把它抄入 tomcat home directory。同樣把它解壓。
gzip -d apache-tomcat-7.0.32.tar.gz
tar xvf apache-tomcat-7.0.32.tar
  • 咁TOMCAT_HOME=/share/homes/tomcat/apache-tomcat-7.0.32
  • 之後,設定tomcat port,在 $TOMCAT_HOME/conf/server.xml 中,揾8080並更改為你想要的port。
  • 記住一定要更改在 $TOMCAT_HOME/conf/tomcat-users.xml的tomcat密碼。
  • $TOMCAT_HOME/bin/startup.sh 和 $TOMCAT_HOME/bin/shutdown.sh 最前行加入以下幾句:

JAVA_HOME=/share/Public/ejre1.6.0_34
export JAVA_HOME
umask 027
  • tomcat身份執行 $TOMCAT_HOME/bin/startup.sh 便成。


如果你是以admin身份登入NAS,伺服器本身是沒有安裝su的,執行ipkg install coreutils便有了。之後可以su - tomcat來登入tomcat.

2012年9月15日 星期六

YUI fight ~~ 正!


頑張れ頑張れ
命燃やして
続く現実
生きてゆく
頑張れ頑張れ
限りある日々に…
花を咲かせる

加油呀加油呀
燃燒生命吧
繼續在現實
生存下去
加油呀加油呀
在有限的日子裡
讓花盛放吧

好聽,又勵志,大家快啲去買啦!YUI Y_Y



2012年9月2日 星期日

HKID validation in Java

Courtesy to http://keatonchan.blogspot.hk/2009/08/hkid-check-digit-calculation-algorithm.html for algorithm. Revised edition:

public class HKID { 
 public static boolean validate(String prefix, String serial, String checkdigit) 
   String prefixU = prefix.toUpperCase();
   long value = 0; if (prefixU.length() == 2) { 
     value += (prefixU.charAt(0) - 55) * 9 + (prefixU.charAt(1) - 55) * 8; 
  } else if (prefixU.length() == 1) { 
     value += 36 * 9 + (prefixU.charAt(0) - 55) * 8; 
   } 
   for (int i = 0; i < 6; i++) { 
     value += Integer.parseInt(serial.substring(i, i + 1)) * (7 - i); 
   } 
   long reminder = value % 11; 
   long valid_checkdigit = 11 - reminder;
   if ("A".equalsIgnoreCase(checkdigit) && valid_checkdigit == 10) 
      return true; 
   } 
   try { 
     if (valid_checkdigit == Integer.parseInt(checkdigit)) { 
       return true; 
     } 
   } catch (Exception e) { } 
   return false; 
 }  
}

PS> Objective-C version


#import "HKID.h"

@implementation HKID

+ (BOOL) validateWithPrefix:(NSString*) prefix serial:(NSString *) serial checkdigit:(NSString*) checkdigit {
    NSString* prefixU = [prefix uppercaseString];
    int value = 0;
    if ([prefixU length] == 2) {
        value += (([prefixU characterAtIndex:0] - 55) * 9) + (([prefixU characterAtIndex:1] - 55) * 8);
    } else if ([prefixU length] == 1) {
        value += 36 * 9 + ([prefixU characterAtIndex:0] - 55) * 8;
    } else {
        return false;
    }
    if ([serial length] != 6) return false;
    if ([checkdigit length] != 1) return false;
    for (int i = 0; i < 6; i++) {
        int tempValue = [[serial substringWithRange:NSMakeRange(i,1)] intValue];        
        value += tempValue * (7 - i);
    }
    long reminder = value % 11;
    long valid_checkdigit = 11 - reminder;
    NSCharacterSet *digitSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
    if ([[checkdigit stringByTrimmingCharactersInSet:digitSet] isEqualToString:@""]){ // all digits
        if ([checkdigit intValue] == valid_checkdigit) {
            return true;
        }
    } else if ([@"A" isEqualToString:checkdigit]) {
        if (valid_checkdigit == 10) {
            return true;
        } else {
            return false;
        }
    }
    return false;
}
@end

2011年10月9日 星期日

Green a.live

YUI 又有新碟啦。呢隻Green a.live 好正,好有311感受。又俾到正面同鼓勵俾人去面對困難。Let's Face It 都唔錯,不過第一次見作曲唔係 YUI 喎。@@

2011年7月18日 星期一

Utada Hikaru - Wild Life


今日去左HMV,見到Utada嘅Concert DVD。無慮即決。
加上今日買左嘅 Sennheiser MM 70 i 耳筒。係noise reduction 嘅幫助下,可以聽到Hikki 無比利害嘅唱功,心情大靚。可惜一想佢會大休一排,唉。Ayaka又退出左。唔好逼我聽AKB 啦。好在仲有 YUI。


2010年6月27日 星期日

La Brasserie林柏軒

今日約左朋友L同佢食飯,仲有就係揾左(林)生、(林)太、(林)大公子和D小姐一行六人大吃一餐。原本想去四季酒店嘅稻菊食鐵板燒,但因天雨關係取消了。之後揾左好多間酒店Buffet都滿左,最後揾左呢間法國餐廰食Brunch。

佢其實係 Semi-buffet,Buffet有頭盤,有甜品、可以選擇加Main Course。加Main Course有無限加飲汔水,橙汁等。

首先,Buffet 其實都好多野食架喇。

頭盤
  1. 頭盤有涷蝦、龍蝦仔、蟹、生蠔!涷蟹好正,有肉,有蟹味。龍蝦仔就無龍蝦味但連汁吃都可以嘅。其中生蠔(仔)有三種地方,美國蠔,澳洲蠔等地(仲有一個地方唔知係邊)。澳洲蠔最好,新鮮,有蠔味,正。美國蠔就一般喇。
  2. 沙侓有都有好多選擇。
  3. 仲有鮮帶子,煙三文魚,三文魚肝,仲有一種肝我無食,唔知係乜。三文魚肝同三文魚都唔錯,鮮帶子有少少腥,唔係太新鮮。
熱葷
有魚,有牛肉條,有法國雲吞,有龍蝦汁蒸蛋。因我有叫Main Course ,所以唔係食左好多肉。牛肉條都好,法國雲吞就不如中國雲吞啦。龍蝦汁蒸蛋唔錯呀,好味。

更新:唔記得有無限量香煎鴨肝,好好食!我怕膽固醇,所以只食左一客。朋友每人各食左四、五客。

Main Course
有四種選擇,魚,羊膝,肉眼扒,龍蝦
  1. 我叫左羊膝,嘩好大碟,以經食左Buffet嘅我見到有啲眼到凸埋。完全無羊羶味,好[lum],不過我覺得好似食豬肉咁,哈哈。
  2. L先生叫左魚,我無食,我唸應該唔錯。
  3. (林)太食肉眼扒,都好大碟,都好正,六成,火喉啱啱好。
  4. 龍蝦要加三佰二,無叫啦。

甜品就正,有Cheese Cake,有Blueberry加Apple Jelly,有特色。有朱古力蛋糕,好味。朱古力fountain。仲有好好味嘅朱古力加朱古力碎雪糕,真係好好味。但太飽了,只吃了一個。

之前因無期望,食落真係有驚喜,係我食咁耐Buffet 頭三甲之內。侍應好好服務,態度又好,讚!由十二點食到两點半(佢時間係十一點半到三點),全程食,唔係好夠時間。Openrice 有七五折,埋單一千三佰幾,每人都係二佰五,抵!

另外(林)大公子坐我側面,好乖,好得意。

評份:九十五(咁嘅價錢,咁嘅食物質素,咁嘅服務,佢值呢個份)