2011年5月31日 星期二

轉貼 網頁轉址網站

以下紀錄些 免費轉址的網站

  1. idv.st
  2. 98.to
  3. tw886.to
  4. FreeDNS
  5. no-ip

其中 2~3 支援中文網址

2011年5月25日 星期三

轉貼 心得 加速 Google App Engine 速度的方法



  1. 精簡所引用的 jar

  2. 因為app engine 建立 instance 會掃描 所有的jar file

  3. 少用JSP,用其他的方式呈現ui

  4. jsp 在第一物讀取的時候會花費很多 cpu time,原文有推薦 Freemarker

  5. 避免臃腫的程式

  6. 原文是敘述 Spring 這種套件很花CPU time

  7. 選擇其他輕量的儲存方式

  8. JDO 的存取掃描真的很化費時間,原文有推薦 Objectify,SimpleDS和Twig 等

  9. 有條件的開啟 always on instance, 合理設置Warming Request

  10. 預設是自動開啟 Warming Request, 不過要 讓 instance 一直開啟的話可以付費開啟[2]




補充:連結
Google App Engine 的每項服務啟動時都會建立 instance, 若之後又呼叫同一個服務便不需要在inital 一次, 不過在一定時間內過後就會自動消失,節省 主機的負擔, 我個人觀察大約1~2分鐘,不過可以用付費的方式讓instance 一直開啟,詳細見[2] 的 中的alaways on細項



參考:
[1] : 优化Google AppEngine上Java应用程序的启动速度
[2]: Google App Engine - Instances in the Admin Console

2011年5月24日 星期二

心得 JCache in Google App Engine

App Engine 提供了 JCache API 的方法, 目前可以想到的用法就是吧 常用的 靜態資料 存到 catche 裡 在加速讀取速度

詳細的用法在 [1],[2] 有說明了,這裡就不再贅述,

使用 CacheFactory 取得 Cache 實例 , 可以將 CacheFactory 取得的資料定義一個static 或全域的物件,我個人是認為這樣比較方便 存取 JCache

不過要注意的是 存到 catch 的值 必須是 Serializable 的物件 所以要自訂物件的話就要 implement
Serializable 這個 interface 先

順道一題 google app engine 不允許 FileOutputStream 這個方法

[3] 這篇文章 是將
JCache 的方法定義到 ServletContextListener, 來加速首頁讀取的速度



參考

[1] Google 應用服務引擎, 使用 JCache
[2] Google App Engine, Using JCache
[3] GAppEngine中使用JCache来提高网站的性能

心得 Object Serialization Java

Serialization 簡單的說就是可以將java 物件(object) 儲存成一個位元組起來,下次在讀取的時候在將位元組轉成物件使用

若要 Serialization 在物件必須 implements Serializable 這個 Interface


如以下的 code

import java.io.Serializable;

class MyClass implements Serializable {
String str;
double[] vals;
File fn;

public MyClass(String s, double[] nums, String fname) {
str = s;
vals = nums;
fn = new File(fname);
}

public String toString() {
String data = " str: " + str + "\n vals: ";

for (double d : vals)
data += d + " ";
data += "\n fn: " + fn.getName();

return data;
}
}



呼叫的範例可以參考, 範例簡單的說是將 這個物件存到 obj.dat 的檔案 ,之後再取出來( obj.dat 也可以換成指定的路徑 如 c:/obj.dat )


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Main {
public static void main(String[] argv) throws Exception {
double v[] = { 1.1, 2.2, 3.3 };
double v2[] = { 9.0, 8.0, 7.7 };

MyClass obj1 = new MyClass("This is a test", v, "Test.txt");
MyClass obj2 = new MyClass("Alpha Beta Gamma", v2, "Sample.dat");

ObjectOutputStream fout = new ObjectOutputStream(new FileOutputStream("obj.dat"));
System.out.println("obj1:\n" + obj1);
fout.writeObject(obj1);
System.out.println("obj2:\n" + obj2);
fout.writeObject(obj2);
fout.close();

ObjectInputStream fin = new ObjectInputStream(new FileInputStream("obj.dat"));
MyClass inputObj;

inputObj = (MyClass) fin.readObject();
System.out.println("First object:\n" + inputObj);

inputObj = (MyClass) fin.readObject();
System.out.println("Second object:\n" + inputObj);
fin.close();
}
}











參考:
[1]:Object serialization with Serializable interface, ObjectOutputStream and ObjectInputStream.
[2]:http://home.so-net.net.tw/idealist/Java/IO.html






2011年5月20日 星期五

心得 Tomcat open SSL

簡單步驟如下



  1. 進入Dos/命令提示字元
  2. 進入 java root 下的bin ( ex. C:\Program Files\Java\jdk1.6.0_22\bin\)
  3. 建立 kyestore , 下面語法會新增到bin 下面, 記得輸入的帳號
    ex.(keytool -genkey -alias tomcat -keyalg RSA -keystore mykeystore.keystore)
  4. 把 檔案 放在 tomcat root 的資料夾下(ex. E:\Tomcat)
  5. 設定server.xml (ex. E:\Tomcat\conf\server.xml ) 找到 設定https 的地方 將 註釋的地方取消並加入 認證檔案和密碼 如下



<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="mykeystore.keystore" keystorePass="Password"
clientAuth="false" sslProtocol="TLS" />




重新啟動就可以


附註

[1] 進入 https://localhost:8443 會出現 "網站的安全性憑證不可靠!" 的訊息,是因為憑證沒有認證, 關於憑證認證的東西就是另一向學問了 ... 可能要購買 或使用 openssl 的方式
[2] 參考1 中後面有教導匯入憑證的方式,由於要先取得到憑證才有意義,所以這裡沒說明
[3] 忘記自己Tomcat 的密碼 可以到 ..\Tomcat\conf\tomcat-users.xml 下設定



參考 :
[1] Tomcat SSL certificate installation
[2] Tomcat配置SSL的客户端认证

心得 Apache 整合Tomcat

搜尋一下網路可以找到很多方法 ,不過試了很多都是不出來,不過最後總算找到一個方法

我設的環境很簡單, 試採用 WAMP 2.1 ( 含 apache2.2.17 )+ Tomcat 7.0

首先先下載這些東西

  1. jdk ( 有的話就不用重新下載)
  2. WAMP
  3. Tomcat( 我是選 32-bit/64-bit Windows Service Installer (pgp, md5),安裝後顯示在工作列,個人認為比較好管理 )
  4. tomcat-connectors 的 so 檔 ( 隨apache 版本有不同的設定,這裡選用 mod_jk-1.2.31-httpd-2.2.3.so, ../jk/binaries/win32/jk-1.2.31/ , 由於我是在XP 設定的所以是用win32, 路徑找了很久這裡註明一下)
  5. tomcat-connectors 的 src 原始檔 ( 隨apache 版本有不同的設定,這裡選用 tomcat-connectors-1.2.31-src.zip , ../jk/source/jk-1.2.31/)


整合步驟

  1. 安裝 WAMP
  2. 安裝 Tomcat
  3. 將 mod_jk-1.2.31-httpd-2.2.3.so 重新命名 mod_jk.so ,複製到Apache 下的 modules 檔案夾下(..\wamp\bin\apache\Apache2.2.17\modules)
  4. 將tomcat-connectors-1.2.31-src.zip 解壓縮到tomcat-connectors-1.2.31-src 資料夾下
  5. 把 tomcat-connectors-1.2.31-src\conf 目錄下的 httpd-jk.conf 複製到 ..wamp\bin\apache\Apache2.2.17\conf\extra\ 下
  6. 確認 有無這行 LoadModule jk_module modules/mod_jk.so 在 httpd-jk.conf , 這行功能是確認有無引用 mod_jk.so 的模組
  7. 找到這行 # JkMount /myapp|/* balancer 下 新增 JkMount /*.jsp wlb , 設定監聽檔案的類型
  8. 把 tomcat-connectors-1.2.31-src\conf 目錄下的 workers.properties.minimal 複製到 ..wamp\bin\apache\Apache2.2.17\conf\ 下 ,並重新命名 workers.properties
  9. 修改 ..wamp\bin\apache\Apache2.2.17\conf \httpd.conf 在文件最後加入下行:
    #To be added at the end of your httpd.conf
    Include conf/extra/httpd-jk.conf
    找到這行設定 首頁檔案類行 新增 jsp 格式(本例在242行):
    DirectoryIndex index.html index.htm index.jsp
  10. 確認 ../Tomcat/conf/ server.xml 下 有無 啟用 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />


如此就可以 呼叫 jsp 在apache 上( jsp 檔要到 tomcat 的路徑)


可以用下面的 jsp 測試一下



<HTML>
<HEAD><TITLE>Test JSP</TITLE></HEAD>
<BODY>
<H1>Test JSP</H1>
Time: <%= new java.util.Date() %>
</BODY>
</HTML>






參考: 發稿為止

2011年5月17日 星期二

ASP. net 寄送mail

利用 asp.net 來寄送mail 的方法 除了架設 SMTP server, 還可以利用 gmail 來幫忙寄信

會使用寄信的功能主要是用來通知使用者,至於收信的話應該也辦得到不過暫時沒用到就先不研究


要記得是using System.Net.Mail.MailMessage


範例 code



System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add("taannmay@gmail.com");
mail.To.Add("toemail@yahoo.com");
mail.From = new MailAddress("frmemail@gmail.com");
mail.Subject = "Email using Gmail";

string Body = "Hi, this mail is to test sending mail" +
"using Gmail in ASP.NET";
mail.Body = Body;

mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com"; //Or Your SMTP Server Address
smtp.Credentials = new System.Net.NetworkCredential
("myemailID@gmail.com", "mypassword");
//Or your Smtp Email ID and Password
smtp.EnableSsl = true;
smtp.Send(mail);




參考來源: Code Project -Sending email from gmail server wuing asp .net 3.5 with c#

2011年5月10日 星期二

轉貼 Jquery plugin weather

這個外掛主要參照 yahoo weather API.

使用方式:
1. 下載 / 參照 jQuery API
2. 下載這個API


簡單的 code 大致如下,輸入 地點 (_location) 和設定 單位'c' 表示攝氏溫度

成功的話就會將資訊在 weather 物件裡面,包含溫度、天氣概況,風向、濕度...等等 Yahoo Weather API 所提供的資訊


var getWeather = function(_location) {

$.simpleWeather({
location: _location,
unit: 'c',
success: function(weather) {
// alert(weather.forecast);

},
error: function(error) {
alert(error);
}
});

}







轉貼自 : jQueery Plugin's