這兩天上了 開源程式碼的課程 知道有個網頁還不錯, 可以協助定義出 open source license 下
的開發限制 , 是否需要繼續OPEN 程式的義務 及相關的感染力
https://tldrlegal.com/
2018年2月8日 星期四
2013年12月18日 星期三
心得 取得TOMCAT 路徑
標籤:
知識
可利用 下列語法取得Tomcat 執行路徑, catalina.base
File catalinaBase = new File( System.getProperty( "catalina.base" ) ).getAbsoluteFile(); // get tomcat root
File catalinaBase = new File( System.getProperty( "catalina.base" ) ).getAbsoluteFile(); // get tomcat root
可參考 自行 Google catalina.base
2013年7月18日 星期四
心得 windows 建立服務工具 ServiceEx
ServiceEx 可以讓 exe 轉換成 windows 服務
使用方法如下:
1. 下載 ServiceEx.exe
2. 建立 檔案的 ini 如 mem.ini , 下面以執行 memcached.exe 為例
[ServiceEx]
; ServiceExeFullPath EXE 路徑
ServiceExeFullPath = "D:\msample\memcached.exe"
; program arguments to be sent to executable ,選項設定 如這裡 設 10M item size , 128 m 的空間
options = "-m 128 -I 10m"
; can program interact with desktop [true | false] (default: true) ,是否會影響桌面,這我就不太了解
desktop = false
; start type (valid values: Auto Manual Disabled) (default: auto) 啟動類型
Start=Auto
; start the service upon installation [true | false] (default: no) 安裝後是否啟動
StartNow=false
3. 在 cmd 下 執行
4. 在 windows 下 找到 服務 ,系統管理工具/服務 確認 服務msm 是否在清單上
參考:
[1] http://serviceex.com/
使用方法如下:
1. 下載 ServiceEx.exe
2. 建立 檔案的 ini 如 mem.ini , 下面以執行 memcached.exe 為例
[ServiceEx]
; ServiceExeFullPath EXE 路徑
ServiceExeFullPath = "D:\msample\memcached.exe"
; program arguments to be sent to executable ,選項設定 如這裡 設 10M item size , 128 m 的空間
options = "-m 128 -I 10m"
; can program interact with desktop [true | false] (default: true) ,是否會影響桌面,這我就不太了解
desktop = false
; start type (valid values: Auto Manual Disabled) (default: auto) 啟動類型
Start=Auto
; start the service upon installation [true | false] (default: no) 安裝後是否啟動
StartNow=false
3. 在 cmd 下 執行
ServiceEx install
如
ServiceEx install mem
4. 在 windows 下 找到 服務 ,系統管理工具/服務 確認 服務msm 是否在清單上
參考:
[1] http://serviceex.com/
心得- Memcached 儲存 1M 空間限制
- memached 限制每筆資料設定在 1M 大小, 但 1.4.2版之後 多了一個參數可以設定 到 1k 到 128M [1]
如
memcached -I 10m
- 在 window 安裝方面 可以參考下載 [2] 所提供包好的 windows exe ,
不過要使用 Memcached 1.4.5 這個版本, 以我的經驗使用 1.4.4 版的 超過 1M 的資料儲存 服務就會終止
- 但是 1.4.5 版 有一個問題就是不能 用 sc create 的方式建立服務,
不過還好有找到 工具 ServiceEx 可以解決這個問題
- 此外 API 也要做設定
這裡我採用 xmemcached [3] , 在程式裡加上敘述
xmemcached MemcachedClient client=new XMemcachedClient("127.0.0.1",11211);
client.setTranscoder(new SerializingTranscoder(10*1024*1024)); // 10M 看大小多少這裡就要設多少
參考:
[1] https://code.google.com/p/memcached/wiki/ReleaseNotes142
[2] http://blog.elijaa.org/index.php?post/2010/10/15/Memcached-for-Windows&similar
[3] https://code.google.com/p/xmemcached/
2013年5月15日 星期三
心得 網路服務 at winserver2008
標籤:
知識
簡短的新心得,在安裝好服務之後(如 tomcat , memched ,mysql 等等 會用到遠端連線的服務)
要使遠端的電腦能夠使用的話, 要記得設定防火牆的規則,當然用exe 安裝的話通常都會詢問防火牆開啟例外的訊息
不過用指令安裝的話 就必須設定了, ex 我是在使用 memched 的服務下遇到的
2013年4月26日 星期五
心得- Memcached in java
簡介
摘要官方網站的介紹
特色有
- 免費
- open source
- 高效率
- 分散式
- 使用記憶體儲存
- 以 key value 物件的方式存取資料
- 安全性較低,所以建議放在防火牆後面的機器
Server 安裝
原始Lib 並不支援windows 系統, 若是使用linux 等系統的話去官方網站下載就可以
要額外安裝 memcached for win
我是參考 [2] 的步驟
- 將jar 解壓縮到資料夾如D:\Appserv\memcached
- 配置服務
- D:\Appserv\memcached>sc create memcached binPath= "D:\Appserv\memcached\memcached.exe -p 9999 -l 127.0.0.1 -m 128 -d runservice" DisplayName= "memcached server" start= auto depend= TCPIP
- 其中 -p 9999 是指透過 port 9999 監聽請求 (預設為 11211 ) , -l 127.0.0.1 是指伺服器指定的 IP 位址 (預設為 INDRR_ANY) , -m 128 是指 memcached 最大可用的記憶體為 128 MB (預設 64 MB) ,最後 -d runservice 就是啟動為 Windows 服務。
- 再去工作管理員開啟服務
重要議題
參考[3] ,摘要幾個重點
撰寫使用 memcached 程式的基本模式就是,先查看有沒有 key-value,有就把快取資料讀出來,沒有就運算結果後存到 memcached sever。這部份算是簡單的。真正困難的事情有兩件:
- 一是清除過期的快取資料(expire)
- 二是Key的命名
兩種方式清除快取資料:
一是在新增/刪除資料時,順便刪掉這個快取 key-value,這樣下次 request 來時便會重新 快取。
二是在有更新的時候直接重設快取資料(Reset)。要注意的是如果您有不同的程式會直接更新資料庫(也就是不只是透過主應用程式,還有別的背景程式),就會有可能 memcachd 裡面的資料沒有被更新到,
解法有
1. 清空所有資料
2. 有一隻程式可以重建 memcached 裡面的資料
3. 統一用一套知道 memcached 機制的介面操作
Key的命名
為了 Security 避免被人猜到 Key 和避免超過 255 bytes 的 key 長度限制,建議你將 Key hash 過
Client API
我是使用 JAVA 的API Memcached-Java-Client
摘錄 MemcachedBench.java 的說明 並加上註釋
/**
* Copyright (c) 2008 Greg Whalin
* All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the BSD license
*
* This library is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE.
*
* You should have received a copy of the BSD License along with this
* library.
*
* @author Greg Whalin
*/
package com.meetup.memcached.test;
import cht.batchevent.show.EventList;
import com.meetup.memcached.*;
import java.util.*;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
/*
*
*
*
*/
public class MemcachedBench2 {
// logger
private static Logger log =
Logger.getLogger( MemcachedBench2.class.getName() );
public static void main(String[] args) {
BasicConfigurator.configure();
org.apache.log4j.Logger.getRootLogger().setLevel( Level.OFF );
int runs = Integer.parseInt(args[0]);
int start = Integer.parseInt(args[1]);
//伺服器位址清單
String[] serverlist = { "127.0.0.1:9999" };
// initialize the pool for memcache servers
SockIOPool pool = SockIOPool.getInstance( "test" );
pool.setServers(serverlist);
pool.setInitConn( 100 );
pool.setMinConn( 100 );
pool.setMaxConn( 500 );
pool.setMaintSleep( 20 );
pool.setNagle( false );
pool.initialize();
// get client instance
MemcachedClient mc = new MemcachedClient( "test" ); // 要和pool 的名稱一樣
mc.setCompressEnable( false );
String keyBase = "testKey";
//String object = "This is a test of an object blah blah es, serialization does not seem to slow things down so much. The gzip compression is horrible horrible performance, so we only use it for very large objects. I have not done any heavy benchmarking recently";
long begin = System.currentTimeMillis();
long end = System.currentTimeMillis();
long time = end - begin;
begin = System.currentTimeMillis();
for (int i = start; i < start+runs; i++) {
String str = (String) mc.get(keyBase + i);
// 沒有資料時和資料庫要資料, 取得後放入 memcatch
if(str == null){
System.out.println(i+" is null ");
OBJ_obj = new OBJ();
StringBuffer _theobj = new StringBuffer();
_theobj = _obj.getDataFromDB();
String object =_theobj .toString();
mc.set(keyBase + i, object);
}
System.out.println(i+" : " + str);
}
end = System.currentTimeMillis();
time = end - begin;
System.out.println(runs + " gets: " + time + "ms");
// 取得多筆
String[] keys = new String[ runs ];
int j = 0;
for (int i = start; i < start+runs; i++) {
keys[ j ] = keyBase + i;
j++;
}
begin = System.currentTimeMillis();
Map vals = mc.getMulti( keys );
end = System.currentTimeMillis();
time = end - begin;
System.out.println(runs + " getMulti: " + time + "ms");
/*
* //刪除的語法
* begin = System.currentTimeMillis();
for (int i = start; i < start+runs; i++) {
mc.delete( keyBase + i );
}
end = System.currentTimeMillis();
time = end - begin;
System.out.println(runs + " deletes: " + time + "ms");*/
SockIOPool.getInstance( "test" ).shutDown();
}
}
參考:
[1] 官方網站
2013年3月1日 星期五
Hibernate心得
前幾天上了一下 Hibernate 的課程,在此作一個摘要,
Hibernate 網站 (http://www.hibernate.org/)
- 簡單的說 Hibernate 有一個好處可以當個接口,讓資料庫找到的資料直接轉成定義好得物件。
- 而資料庫的連結定義,試用組態的XML來定義的,要抽換更改比較有彈性
- 除了可以使用HQL的方式查詢,也可以利用 criteria 查詢, criteria 簡單的說定一種查詢的function 而不需使用SQL 類似的查詢語句
Hibernate 網站 (http://www.hibernate.org/)
2013年1月8日 星期二
Lambda 語法
標籤:
知識
根據MSDN 的定義如下[1]:
Lambda 運算式是可用來建立委派或運算式樹狀架構型別的匿名函式。 使用 Lambda 運算式,您可以撰寫可當做引數或傳回做為函式呼叫之值的區域函式。 Lambda 運算式為撰寫 LINQ 查詢運算式中特別有用。
不過看了半天還是沒有感覺,想不到Python[2]的寫法反而比較好理解
其他針對不同語言也有人系新的整理[3], javascript 也蠻好讀,不過JAVA 的寫法真是好神奇
參考:
[1] MSDN , Ladbda(http://msdn.microsoft.com/zh-tw/library/bb397687.aspx)
2012年6月26日 星期二
轉貼 javascript minify and beautifer
標籤:
知識,
javascript
偶爾會使用到xxx.min.js 的javascript 檔案, 一直在想要怎麼製作,原來線上就有編輯的功能, 如 : Online Javascript Compression Tool ,優點應該只是縮小檔案容量。
不過有 min 當然也有還原的程式, 如 http://jsbeautifier.org/
2012年4月17日 星期二
轉貼 WSDL CLient in JAVA
WSDL 是一種網路服務傳送接收的方法,以XML 樣視為基礎的溝通方式[1],
關於建立的方式這裡就不介紹了,以client 端為主, 詳細流程不多說,
搜尋 wsdl eclipse clinet 就能找到相關的資料了,值得提醒的地方就是大部分都是用 AXIS2 來搭配解析[2], 在 eclipse 中要使用的話要先下載後在設定路徑 , Windows->Preference->Web Services, AXIS2 載點(http://axis.apache.org/axis2/java/core/download.cgi)。

圖一,設定AXIS
此外還有,
a. 在有限制的環境下,要套用proxy.
b. 也可以使用 AXIS 的方式取得 WSDL, AXIS 至少在 eclipse3.6 是內建的
以下簡介使用的步驟:
圖二,新增WSDL Client
圖三,選擇輸入WSDL 服務的網址,設定APACHE 和 AXIS2 的server
補充 , 若要將產生的class 檔 在 client 端程式使用,必須使用 AXIS2 的lib ,不過查詢一下找到精簡的jar 清單[3], 清單如下:
參考:
[1] WSDL,wiki
[2] AXIS2
[3] Minimum set of jar files for Apache Axis2 1.6.1
關於建立的方式這裡就不介紹了,以client 端為主, 詳細流程不多說,
搜尋 wsdl eclipse clinet 就能找到相關的資料了,值得提醒的地方就是大部分都是用 AXIS2 來搭配解析[2], 在 eclipse 中要使用的話要先下載後在設定路徑 , Windows->Preference->Web Services, AXIS2 載點(http://axis.apache.org/axis2/java/core/download.cgi)。

圖一,設定AXIS
此外還有,
a. 在有限制的環境下,要套用proxy.
b. 也可以使用 AXIS 的方式取得 WSDL, AXIS 至少在 eclipse3.6 是內建的
以下簡介使用的步驟:
- 新增web專案TEST_WSDL_Client,我是使用 Dynamic Web Project, static project 應該也可以吧。
- 在TEST_WSDL_Client專案下新增 Web Service Client 如圖二。
- 設定 Web Service Client,Service definition 輸入 WSDL 的網址, Configuration 設定AXIS2,預設是AXIS,設定畫面如圖三。
- 若是在有proxy 的環境下記得設定proxy,接者按下一步應該就可以產生相關的java class 了
圖二,新增WSDL Client
圖三,選擇輸入WSDL 服務的網址,設定APACHE 和 AXIS2 的server
補充 , 若要將產生的class 檔 在 client 端程式使用,必須使用 AXIS2 的lib ,不過查詢一下找到精簡的jar 清單[3], 清單如下:
- axiom-api-1.2.12.jar
- axiom-impl-1.2.12.jar
- axis2-adb-1.6.1.jar
- axis2-kernel-1.6.1.jar
- axis2-transport-http-1.6.1.jar
- axis2-transport-local-1.6.1.jar
- axis2-xmlbeans-1.6.1.jar (optional)
- commons-codec-1.3.jar
- commons-httpclient-3.1.jar
- commons-logging-1.1.1.jar
- httpcore-4.0.jar
- mail-1.4.jar
- neethi-3.0.1.jar
- woden-api-1.0M9.jar
- woden-impl-dom-1.0M9.jar
- wsdl4j-1.6.2.jar
- wstx-asl-3.2.9.jar
- xmlbeans-2.3.0.jar (optional)
- XmlSchema-1.4.7.jar
參考:
[1] WSDL,wiki
[2] AXIS2
[3] Minimum set of jar files for Apache Axis2 1.6.1
2012年2月15日 星期三
心得 SVN Client 介紹
標籤:
知識
因為工作的關係又整理了一次,當然網路上還有很多詳細的文章,這裡就放者自己參考用。
此外GIT 好像不錯用的樣子,不過還沒碰過,找時間會在試試。
附註 slideshare 比Google 文件分享在發布上面好用的多,至少不會跑掉版面
此外GIT 好像不錯用的樣子,不過還沒碰過,找時間會在試試。
附註 slideshare 比Google 文件分享在發布上面好用的多,至少不會跑掉版面
2011年12月12日 星期一
心得 MongoDB 圖形管理工具
MongoDB 在官網有提供了不少工具,下面是我試用其中幾個的心得。
1. JMongoBrowser
有安裝 java 就可以啟動,介面簡單,不過要輸入查詢的指令都要用輸入的方式,比較麻煩一點
2. MongoVUE
介面操作都不錯,不過試用版只有10多天,要使用的話還要額外購買。
3. RockMongo
以PHP5 開發的,此外若用windows 系統的話也有提供一包的執行檔直接執行網站。
所以我個人目前是傾向使用RockMongo, 還有其他4,5個工具,功能基本上大同小異,可以直接參考官方網站(*),要使用哪個就看使用者的習慣和喜好了。
參考:* MongoDB Tool
1. JMongoBrowser
有安裝 java 就可以啟動,介面簡單,不過要輸入查詢的指令都要用輸入的方式,比較麻煩一點
2. MongoVUE
介面操作都不錯,不過試用版只有10多天,要使用的話還要額外購買。
3. RockMongo
以PHP5 開發的,此外若用windows 系統的話也有提供一包的執行檔直接執行網站。
所以我個人目前是傾向使用RockMongo, 還有其他4,5個工具,功能基本上大同小異,可以直接參考官方網站(*),要使用哪個就看使用者的習慣和喜好了。
參考:* MongoDB Tool
2011年12月6日 星期二
心得 Mongo DB 安裝
Mongo DB 是 NoSQL 中 適合處理大量文件的資料庫,適合儲存大量的資料,如Log[1].
此外他也支援大部分的程式語言,C | C# | C++ | C# & .NET | ColdFusion | Erlang | Haskell | Factor | Java | Javascript | PHP | Python | Ruby | Perl | More... [2].
至於安裝說明,可以從官網[2],中點選 Quick Start 就有相對應的教學。
這裡針對Windows 環境作簡單的敘述:
1. 下載檔案。
2. 將下載的檔案解壓縮。
3. 移動檔案,像我下載的版本是 mongodb-win32-i386-2.0.1, 由於是在Dos 下測試,不妨將檔案傳新命名如mongodb.並移動在上層的目錄,如C:\mongodb 。
4. 建立資料庫資料夾,mongodb設定都會在 \data\db 資料夾下讀取,若剛剛是放在c槽,路徑就是
C:\data\db,若放在D槽就是D:\data\db, 以此類推。
5.進入DOS ,開始->執行->cmd
6. 進入mongodb 的bin資料夾,如 C:\mongodb\bin. 輸入 mongod 開啟伺服器服務
7. 若上一步成功的話可以在開一個cmd, 輸入 如範例的 3+3 測試性能
其他有關NoSQL 的介紹,可以參考[3],這裡根據特性將NoSQL分成四類,不過其他的地方是三類,所以大約瞭解一下就好。
參考:
[1]. Use Case-MongoDB
[2]. MongoDB Home
[3]. NoSQL解決資料庫暴量的新方法
此外他也支援大部分的程式語言,C | C# | C++ | C# & .NET | ColdFusion | Erlang | Haskell | Factor | Java | Javascript | PHP | Python | Ruby | Perl | More... [2].
至於安裝說明,可以從官網[2],中點選 Quick Start 就有相對應的教學。
這裡針對Windows 環境作簡單的敘述:
1. 下載檔案。
2. 將下載的檔案解壓縮。
3. 移動檔案,像我下載的版本是 mongodb-win32-i386-2.0.1, 由於是在Dos 下測試,不妨將檔案傳新命名如mongodb.並移動在上層的目錄,如C:\mongodb 。
4. 建立資料庫資料夾,mongodb設定都會在 \data\db 資料夾下讀取,若剛剛是放在c槽,路徑就是
C:\data\db,若放在D槽就是D:\data\db, 以此類推。
5.進入DOS ,開始->執行->cmd
6. 進入mongodb 的bin資料夾,如 C:\mongodb\bin. 輸入 mongod 開啟伺服器服務
7. 若上一步成功的話可以在開一個cmd, 輸入 如範例的 3+3 測試性能
其他有關NoSQL 的介紹,可以參考[3],這裡根據特性將NoSQL分成四類,不過其他的地方是三類,所以大約瞭解一下就好。
參考:
[1]. Use Case-MongoDB
[2]. MongoDB Home
[3]. NoSQL解決資料庫暴量的新方法
2011年11月30日 星期三
心得 WordPress 安裝外掛
WordPresss 有一個好處就是很多的外掛可以玩,很多很酷的外掛,比如說可以結合本身的相簿管理外掛(NextGEN Gallery)[1],或者是call 其他網路相簿的話掛(Filker, Picasa 等等),還有可以有外掛把他變論壇。
之前有稍微介紹 http://catonchuang.blogspot.com/2011/08/wordpress.html
這裡要說的心得是:
參考:
[1]. WordPress - NextGEN Gallery 簡單好用的相簿外掛
[2]. Wordpress FAlbum外掛 - flickr相簿與 blog完美的結合
[3]. [WP] kPicasa Gallery – 讓 WordPress 結合 Google Picasa
[4]. WordPress外掛&佈景主題安裝教學(此教學適用於WP2.9以下版本)
之前有稍微介紹 http://catonchuang.blogspot.com/2011/08/wordpress.html
這裡要說的心得是:
- 安裝 wordpress 前 先要準備好 php,Mysql , 而且要在mySql 先建一個資料庫給 wordpress.
- 我直接安裝外掛會出現FTP 上傳的訊息,若懶得再架FTP,可以利用後台安裝法[4],下載完解壓縮後複製到 ..\var\www\wordpress\wp-content\plugins\ 下,在由網路控制介面啟動
參考:
[1]. WordPress - NextGEN Gallery 簡單好用的相簿外掛
[2]. Wordpress FAlbum外掛 - flickr相簿與 blog完美的結合
[3]. [WP] kPicasa Gallery – 讓 WordPress 結合 Google Picasa
[4]. WordPress外掛&佈景主題安裝教學(此教學適用於WP2.9以下版本)
2011年10月28日 星期五
2011年10月21日 星期五
2011年9月29日 星期四
Dropbox 用網頁分享自己的影片
標籤:
知識
在預設中若分享在 dropbox 分享影片的話,會是一個下載的連結,不過 chrome 可以直接撥,不過影片大的話還是會 lag.
若要開啟這個功能的話,在網頁登錄後, 連結 下面的網址
https://www.dropbox.com/enable_shmodel
就可以開啟,
點選 Get shareable Link

就可以線上預覽放了

參考:
My Issues with Dropbox while facing a client deadline (service is bait & switch) , Dropbox
若要開啟這個功能的話,在網頁登錄後, 連結 下面的網址
https://www.dropbox.com/enable_shmodel
就可以開啟,
點選 Get shareable Link


參考:
My Issues with Dropbox while facing a client deadline (service is bait & switch) , Dropbox
2011年9月8日 星期四
心得 css span 固定寬度
css 在 'span' tag 中設定 寬度 不能只設定 width 屬性而已, 簡單的作法 還要加入 "display: inline-block;"
如:
我試過 Chrome v10, FF 6 , ie8 都可以
為何要用呢,因為在手機上 有 翻轉的功能, 我希望 變成寬螢幕時能夠 把 三行 的訊息 變成一行
參考: TIPS-XHTML下如何強制指定SPAN寬度,黑暗執行緒
如:
<span style="width:300px; display: inline-block;">
</span>
我試過 Chrome v10, FF 6 , ie8 都可以
為何要用呢,因為在手機上 有 翻轉的功能, 我希望 變成寬螢幕時能夠 把 三行 的訊息 變成一行
參考: TIPS-XHTML下如何強制指定SPAN寬度,黑暗執行緒
2011年8月26日 星期五
轉貼 WordPress
從網路上的資料看來 WordPress WordPress 是一套以 PHP + mySQL 為基礎的架Blog網站軟體,若想自己維護blog 資料的話倒是可以玩玩。 不過架站還要考慮到:
- Web server 安裝, 可以考慮懶人方式的 WAMP
- 固定ip 申請 , 像ISP,中華電信, 申請固定ip
- 網址申請 這些問題。
手邊沒有伺服器的話,或許可以考慮 AWS, AWS 像是一台遠端的伺服器,申請帳號後可以免費使用1 年(實際時間以AWS 網站說了算),雖然有頻寬流量的限制,不過一開始玩玩應該還是夠的。
相關的 WordPress 文章可以看看:
2011年8月23日 星期二
轉貼 伺服器如何判斷是否手機上網
手機等行動裝置因為版面設計與一般電腦不太一樣, 所以在版面設計上也會有些差異,
以下是相關的特色:
如何判斷是否是手機等裝置連上在網頁瀏覽,研究了一下找到兩種方式
[5] 的 code:
ASP:
JSP:
附註2. 手機上網常見的廠牌會出現在 User-Agent 中的:
iphone, ipad, android, nokia, motorola, sony,.....
以下是相關的特色:
- 手機:解析度較小、通常是以長度大於寬度的介面
- 電腦:解析度比較大、寬螢幕
如何判斷是否是手機等裝置連上在網頁瀏覽,研究了一下找到兩種方式
- 列出清單來過濾 header file 中的 User-Agent,手機品牌百百種,若要完全涵蓋可能有點困難,不過涵蓋 已知的大廠倒是ok, 見 [1],[3] ,
- 在首頁的html 中 加入javascript 判斷 是否解析度太小(ex. 小於 800 X 600), 見 [2]
[5] 的 code:
ASP:
if (Request.Headers["user-agent"] != null && Request.Headers["user-agent"].ToLower().ToString().IndexOf("mozilla") != -1)
Response.Redirect("www/index.aspx");
else
Response.Redirect("wap/index.aspx");
JSP:
if(request.getheader("user-agent")!=null&&(request.getheader("user-agent").tolowercase().indexof("mozilla")!=-1))
{
strfinishurl = "/web/index.jsp";
}else
{
strfinishurl = "/wap/index.jsp";
}
附註2. 手機上網常見的廠牌會出現在 User-Agent 中的:
iphone, ipad, android, nokia, motorola, sony,.....
訂閱:
文章 (Atom)



