以下紀錄些 免費轉址的網站
其中 2~3 支援中文網址
2011年5月25日 星期三
轉貼 心得 加速 Google App Engine 速度的方法
標籤:
google api,
WebServer
- 精簡所引用的 jar
- 少用JSP,用其他的方式呈現ui
- 避免臃腫的程式
- 選擇其他輕量的儲存方式
- 有條件的開啟 always on instance, 合理設置Warming Request
因為app engine 建立 instance 會掃描 所有的jar file
jsp 在第一物讀取的時候會花費很多 cpu time,原文有推薦 Freemarker
原文是敘述 Spring 這種套件很花CPU time
JDO 的存取掃描真的很化費時間,原文有推薦 Objectify,SimpleDS和Twig 等
預設是自動開啟 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
標籤:
google api,
java
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来提高网站的性能
詳細的用法在 [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
標籤:
java
Serialization 簡單的說就是可以將java 物件(object) 儲存成一個位元組起來,下次在讀取的時候在將位元組轉成物件使用
若要 Serialization 在物件必須 implements Serializable 這個 Interface
如以下的 code
呼叫的範例可以參考, 範例簡單的說是將 這個物件存到 obj.dat 的檔案 ,之後再取出來( obj.dat 也可以換成指定的路徑 如 c:/obj.dat )
參考:
[1]:Object serialization with Serializable interface, ObjectOutputStream and ObjectInputStream.
[2]:http://home.so-net.net.tw/idealist/Java/IO.html
若要 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
標籤:
WebServer
簡單步驟如下
重新啟動就可以
附註
[1] 進入 https://localhost:8443 會出現 "網站的安全性憑證不可靠!" 的訊息,是因為憑證沒有認證, 關於憑證認證的東西就是另一向學問了 ... 可能要購買 或使用 openssl 的方式
[2] 參考1 中後面有教導匯入憑證的方式,由於要先取得到憑證才有意義,所以這裡沒說明
[3] 忘記自己Tomcat 的密碼 可以到 ..\Tomcat\conf\tomcat-users.xml 下設定
參考 :
[1] Tomcat SSL certificate installation
[2] Tomcat配置SSL的客户端认证
- 進入Dos/命令提示字元
- 進入 java root 下的bin ( ex. C:\Program Files\Java\jdk1.6.0_22\bin\)
- 建立 kyestore , 下面語法會新增到bin 下面, 記得輸入的帳號
ex.(keytool -genkey -alias tomcat -keyalg RSA -keystore mykeystore.keystore) - 把 檔案 放在 tomcat root 的資料夾下(ex. E:\Tomcat)
- 設定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
標籤:
WebServer
搜尋一下網路可以找到很多方法 ,不過試了很多都是不出來,不過最後總算找到一個方法
我設的環境很簡單, 試採用 WAMP 2.1 ( 含 apache2.2.17 )+ Tomcat 7.0
首先先下載這些東西
整合步驟
如此就可以 呼叫 jsp 在apache 上( jsp 檔要到 tomcat 的路徑)
可以用下面的 jsp 測試一下
參考: 發稿為止
我設的環境很簡單, 試採用 WAMP 2.1 ( 含 apache2.2.17 )+ Tomcat 7.0
首先先下載這些東西
- jdk ( 有的話就不用重新下載)
- WAMP
- Tomcat( 我是選 32-bit/64-bit Windows Service Installer (pgp, md5),安裝後顯示在工作列,個人認為比較好管理 )
- tomcat-connectors 的 so 檔 ( 隨apache 版本有不同的設定,這裡選用 mod_jk-1.2.31-httpd-2.2.3.so, ../jk/binaries/win32/jk-1.2.31/ , 由於我是在XP 設定的所以是用win32, 路徑找了很久這裡註明一下)
- tomcat-connectors 的 src 原始檔 ( 隨apache 版本有不同的設定,這裡選用 tomcat-connectors-1.2.31-src.zip , ../jk/source/jk-1.2.31/)
整合步驟
- 安裝 WAMP
- 安裝 Tomcat
- 將 mod_jk-1.2.31-httpd-2.2.3.so 重新命名 mod_jk.so ,複製到Apache 下的 modules 檔案夾下(..\wamp\bin\apache\Apache2.2.17\modules)
- 將tomcat-connectors-1.2.31-src.zip 解壓縮到tomcat-connectors-1.2.31-src 資料夾下
- 把 tomcat-connectors-1.2.31-src\conf 目錄下的 httpd-jk.conf 複製到 ..wamp\bin\apache\Apache2.2.17\conf\extra\ 下
- 確認 有無這行 LoadModule jk_module modules/mod_jk.so 在 httpd-jk.conf , 這行功能是確認有無引用 mod_jk.so 的模組
- 找到這行 # JkMount /myapp|/* balancer 下 新增 JkMount /*.jsp wlb , 設定監聽檔案的類型
- 把 tomcat-connectors-1.2.31-src\conf 目錄下的 workers.properties.minimal 複製到 ..wamp\bin\apache\Apache2.2.17\conf\ 下 ,並重新命名 workers.properties
- 修改 ..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 - 確認 ../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
參考來源: Code Project -Sending email from gmail server wuing asp .net 3.5 with c#
會使用寄信的功能主要是用來通知使用者,至於收信的話應該也辦得到不過暫時沒用到就先不研究
要記得是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
標籤:
jquery plugin
這個外掛主要參照 yahoo weather API.
使用方式:
1. 下載 / 參照 jQuery API
2. 下載這個API
簡單的 code 大致如下,輸入 地點 (_location) 和設定 單位'c' 表示攝氏溫度
成功的話就會將資訊在 weather 物件裡面,包含溫度、天氣概況,風向、濕度...等等 Yahoo Weather API 所提供的資訊
轉貼自 : jQueery Plugin's
使用方式:
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
訂閱:
文章 (Atom)