2011年12月26日 星期一

心得 ASP.net 網站本地部屬

主要是使用 visual stdio 2010 來將編譯後的asp.net 檔案直接部屬到伺服器。 在這裡以本機IIS為例。





 圖一, 專案上右鍵,發行專案






圖二,選擇目標位置,也就是發行後的URL



 圖三,這裡可以看到四種選項,這裡選擇本機IIS, 在站台上新增一個別名,在設定匯出的資料夾,匯出成功的話可以在這裡看到編譯後的檔案。





參考:

*. ASP.NET 網站部署可考慮使用 Web Deployment Project , The Will Will Web

2011年12月23日 星期五

轉貼 Captcha in Asp.net Csharp

要在 Asp.net 上 實現 圖形驗證碼 Captcha 除了有簡單 的 reCAPTCHA 的API 可以使用[1](不過我覺得樣式不是很好看得說)。
  也可以利用 C# 繪圖的方式產生出來,可以參考 [2]  或 [3] 的作法。



參考:
[1].  reCAPTCHA
[2].   如何用 ASP.NET 實做簡單的圖片驗證機制(Captcha),The Will Will Web
[3].   [ASP.net WebForm] 圖形驗證碼(C#) + 前端驗證 - 懶人Code, The blog of typewriter職人(旧Shadow與愉快的程式碼伙伴)

2011年12月22日 星期四

心得 Asp.net C Sharp 多國語言 定義在Master page


雖然Google 一下  "Asp.net C Sharp 多國語言" 就可以找到很多參考資訊,不過若要放在 Master Page 中定義,就必須改寫 InitializeCulture, 詳細可以參考一下  Code Project, Developing an ASP.NET page with MasterPage and Localization  的作法。


參考:
*  Code Project, Developing an ASP.NET page with MasterPage and Localization

2011年12月13日 星期二

心得 MongoDB CSharp Driver


以下是參考 官方網站所提供的 CSharp sample 教學的心得。


  • 為了說明方便,先在mongoDB 中的test資料庫上建一個Table : "Employee",如下圖(RockMongo的介面)


內容是一個JSON 的物件,包含 id,name,age 等屬性



接者一件很重要的是就是下載libary.(官方網站上有link,在Download 項目下,連結見*) 不論是下載安裝版還是編譯版,之後記得將 MongoDB.Bson.dll 和 MongoDB.Driver.dll 記得引用


以下是相關的功能:

1. 連結資料庫: 以下是本機且沒有設帳密
//在code 中
 using MongoDB.Driver;
 using MongoDB.Driver.Builders;
 MongoServer Server;
 MongoDatabase test;
Server = MongoServer.Create(); // connect to localhost test = Server.GetDatabase("test");

   

2. 取得所有項目
MongoCollection<BsonDocument> employees = test.GetCollection<BsonDocument>("Employee");
var query = new QueryDocument(); // 查詢內容為空,可以想像是Sql 中的 select *
string _result = "";
foreach (BsonDocument _employee in employees.Find(query)){
_result += _employee.ToJson() +"/n";
}




3. 查詢特定項目
MongoCollection<BsonDocument> employees = test.GetCollection<BsonDocument>("Employee");
var query = Query.GT("age", "20"); // 查詢 age 大於 20, 其他等於是eq 還有很多請參照文件的說明*
string _result = "";
foreach (BsonDocument _employee in employees.Find(query)){
_result += _employee.ToJson() + "/n";
}



4. 查詢特定項目並存到物件中
要先定義好物件,且變數要和資料庫中的JSON一致才能轉換,先定義TEmployee
public class TEmployee{
public MongoDB.Bson.ObjectId Id { get; private set; } // Id 的屬性使用Mongodb的 objectId
public string name { get; set; }
public string age { get; set; }
}
接下來一樣搜尋age大於20的物件,不過先將物件存到 TEmployee中
MongoCollection<temployee> ee = test.GetCollection<temployee>("Employee");

var query = Query.GT("age", "20");
string _result = "";
foreach (TEmployee _employee in ee.Find(query)){
_result += _employee.name + "/n";
}



5. 新增項目
新增一個BsonDocument物件,再Insert到資料庫 MongoCollection<temployee> ee = test.GetCollection<temployee>("Employee");
BsonDocument newEmployee = new BsonDocument { { "name", "Dannie" }, { "age", "47" } };
employees.Insert(newEmployee);





參考:
* CSharp Driver Serialization Tutorial

2011年12月12日 星期一

心得 MongoDB 圖形管理工具

MongoDB 在官網有提供了不少工具,下面是我試用其中幾個的心得。


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解決資料庫暴量的新方法

2011年12月5日 星期一

轉貼 favicon

favicon.cc 這個網站可以幫助我們在網路上將圖片轉成 favicon.ico ,也就是網頁上面的小圖示。
此外也可以google 一下 "Favicon", 可以找到很多相關的文章.





2011年12月2日 星期五

分享 Google MarkerClusterer

這裡分享一個Google Map 的 library. 簡單的說 就是在地圖上顯示多少個節點。

如下圖,到Google Map API 的範例就可以找到[2].

要使用的話記得引用 markerclusterer.js 定義要匯入的JSON,這些在範例都找得到。











更多範例 [3], 在[1]裡面找一下就有,不過為了方便先列出來。

 參考:

[1]: google-maps-utility-library-v3
[2]: Google Map API Sample, MarkerClusterer
[3]:MarkerClusterer v3 Examples


2011年11月30日 星期三

心得 WordPress 安裝外掛

WordPresss 有一個好處就是很多的外掛可以玩,很多很酷的外掛,比如說可以結合本身的相簿管理外掛(NextGEN Gallery)[1],或者是call 其他網路相簿的話掛(Filker, Picasa 等等),還有可以有外掛把他變論壇。

之前有稍微介紹 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年11月2日 星期三

心得 ASP.NET MVC 練習

MVC 架構的好處,我認為至少是可以模組化,還有把介面和程式分開,以下我整一下官方操作教學的心得筆記。

開發條件:
visual stdio 2010以上,或 visual stdio express




1. Create a Movie Database Application in 15 Minutes with ASP.NET MVC

     這篇練習心得

  •      在 web project 中建立資料庫
  •      建立資料庫連結,這裡資料庫要一次定義好,要修改欄位似乎不行,可能有別的方式或是用   MS SQL先建好在連,不過這篇教學沒有包含到
  •      資料庫物件匯成 Model 
  •      Control 部份可以在control 定義好 , 編譯後(Build) 可以 右鍵 直接 Create View
  •      這裡的Edit page 是要從 Index  

2. ASP.NET MVC Overview

MVC 特色說明


  •  模組化,耦合度低,簡單的說介面和程式邏輯分開
  • 對於單元測試支援比較多


3. Understanding the ASP.NET MVC Execution Process

MVC 的流程


4. Understanding Models, Views, and Controllers

MVC 的架構進一部說明


  •    Global.aspx ,首頁是在這裡定義
  •    HomeController.cs, XXXControl 表示在 XXX Views下的頁面連結規則




不過現在找到的資料大多是MVC3 ,MVC3 要額外安裝,(至少我用visual studio 2010 沒有)而且MVC4 的框架也好像要推出了,囧,不知道會不會像 Silverlight 改版迅速 且差異大呢??









2011年10月28日 星期五

心得 VirtualBox 上網功能

安裝完 虛擬機器後,使用預設的網卡選項 NAT, 在公司有設 proxy 的環境下還是不能夠連出去的,若要連上網可能要試試其他方法,不過一般的開放網路是可以使用的。

2011年10月21日 星期五

心得 線上免費流程圖繪製軟體

這裡介紹一下兩個線上流程圖編輯軟體:

1. Cacoo, 個人認為裡面的圖都很精美操作也蠻方便的,免費版是每個人可以放25張圖,要存放超過25張的話就要付費,  官方網站 , 或者chrome 的外掛搜尋一下也找得到。
        註冊的話也可以使用gmail帳號註冊。

畫面截圖


2. Diagramly, 也是免費的網頁應用軟體,不同的是他可以將這次編輯的檔案匯出XML存檔, 下次可以讀取出來繼續編輯修改,當然匯出png圖檔也是可以的,網址在這邊

                                                                        畫面截圖



2011年10月6日 星期四

心得 C# 產生 excel

查了 一些方式,有些事直接引用 excel 的 lib , 不過我是過在A 電腦 編輯可以成功 ,但 B電腦卻不行,初步推測可能是函式引用的路徑關係。


不過搜尋了一下,找到一個 excellibrary  可以使用, 詳細可以連結 http://code.google.com/p/excellibrary/ , 或 google 搜尋 'excellibrary'

2011年9月29日 星期四

心得 PHP 使用 htacess 登入登出(authentication ) 問題

  使用 .htacess 來實作 登入登出(authentication ) ,有一個問題 ,


  •    若是想要作到切換使用者的方法,要使用一些額外的方式才能達成。
  •    使用 .htacess 登入之後 , 會吧帳號 密碼存到這些變數 PHP_AUTH_USER (帳號), PHP_AUTH_PW(密碼) ,PHP_AUTH_TYPE(認證型別) [1]
            不過若強制 更新 這些值 是不行的,無論是使用 , unset 卸載 或是 session_destroy() [2];     也都在 firefox 或 chorme 是行不通的, 原因是它們會存到自己的快取,只有關閉瀏覽器材會消失。 不過我在 IE 是也不行




  • 原本有考慮過新增一個logout 頁面 當呼叫的時候 就自動關閉網頁,不過很遺憾 只有 ie 支援 window.close(),  firefox 或 chorme  雖然也有找到關閉分頁的 javascript 語法 不過也沒找到 關閉整個瀏覽器的函式,不過想想也不 合邏輯 ,就放棄這方法


-------------------------------------------------

  因此,參考查到的資料, 大方向就是分成兩部份一是 IE 系列的瀏覽器,另一是其他 FF 和 Chrome.

  • IE 系列: 可參考[1] 的方式 , 呼叫 下面的 function , 在加上一個 變數 logout 當 logout.php 呼叫的時候存入 session.
function authenticate() {
 header('WWW-Authenticate: Basic realm="Test Authentication System"');
header('HTTP/1.0 401 Unauthorized');
 echo "You must enter a valid login ID and password to access this resource\n";
exit; }
.



  • FF 和 Chrome, 使用[1] 的方法也不行,我想原因也是存到 catch 的關係, 所以可以採用 [3] 的方式 , 使用 http://fake:fake@localhost/index.php 的方式,剛好這方始IE 也不是用這種語法... ,  不過 使用 這種方式我自己實驗的結果是每切換一個頁面就必須重新輸入一次帳號密碼,囧。 目前我想到的方式 就只好改成多一個頁面輸入帳號密碼,在傳入下面的 暫存網址  http://account:password@localhost/logoutTemp.php 。  以帳號密碼登入之後,整個網域都會用這個身份存取,在此我使用暫存網址的公用是隱藏帳號密碼, 用 javascript  : location.href= ("http://Host/index.php"); 來隱藏,不然都會出現帳號密碼。不過第一次傳輸的時候帳號密碼還是會被看到,還好目前先應用到公司內網。 



附註:可以使用
  strpos($_SERVER["HTTP_USER_AGENT"],"MSIE")
來判斷 是否為IE 瀏覽器 [4].

參考:

[1]. 章 16. 用 PHP 進行 HTTP 認証, PHP 手冊
[2]. PHP Code to Log a User Out,PHP Tutorials
[3]. .htaccess Logout,bytes > php > php questions
[4]. Something Useful,PHP

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          

2011年9月23日 星期五

心得 php register_globals

接到 前人的php 程式,也許是不熟得關係查了好久, 原來是前人把 全域變數打開了,也就 是register_globals選項是開得。

而預設安裝php 是關閉的....。



  • register_globals 關閉的話 就要使用比較嚴謹的語法,比如 

      存在 seeeion 中的變數 foo


      要取得的話 必須呼叫
     $_SESSION['foo'];
     但若 on 的話 直接呼叫 $foo 即可


參考:

http://blog.xuite.net/samba2005/blog/15425755


2011年9月20日 星期二

心得 PHP htaccess 及.htpasswd 帳號登入設定

感覺用起來 htaccess 就像是一個 filter. 不過預設不一定是會開啟支援的,至少 WAMP 我安裝後是沒有的。


  •  要使用的話必須確認 在 httpd.conf 中 mod_rewrite.so 有無開啟 詳細可以參考[1],或google 一下 'htaccess PHP'。


  •           至於要設定密碼的話, 在 .htaccess  設定, 可以參考[2]:

  

  AuthName 'My Test'
  AuthType Basic
  AuthUserFile E:/wamp/ServerPass/.htpasswd 
  require valid-user

          注意  .htpasswd 這裡要用絕對路徑比較簡單, 至於密碼的話 加密可以在 google 一下



  •  .htpasswd 的密碼格式 ,如
    • admin:123456789         

    

 參考:
[1]: 檢測.htaccess 是否啟用, PHP 程式 學習 筆記本
[2]: WAMP - .htaccess & .htpasswd

2011年9月19日 星期一

心得 Jquery Select option 回上一頁錯誤


如下圖的操作方式, 圖一點選上一頁到圖二。


  • 我的構想是由 select option 來切換頁面,並且在 select 的標題顯示現在的選項
  • 切換是同一個頁面,但利用HTTP doGet 的方式判斷顯示的資料


但出現了bug,

  •  在使用 瀏覽器的上一頁或 javascript 的 window.history.back() 呼叫,選項卻沒辦法回到上次的選項..... , (圖二應該要兩個都是 Today
  •  不過顯示原始檔的內容卻是沒錯
  • 圖中我是顯示兩個select option 作實驗,出現錯誤的是實際觸發事件的 select option




  圖一  


圖二







參考圖三,但是回到上一頁還是會一樣,所以必須修改 javascript. 




圖三




我在select option 新增一個選項來表示標題 "Choose Interval" , HTML 如下
<select name="s" id="select-choice-custom" data-native-menu="false"> 
    <option value="0" selected >Choose Interval</option> 
    <option value="1" >Today</option> 
    <option value="2" >3 Month</option> 
    <option value="3" >Life Time</option> 
 </select>



此外使用javascript 來設定每次 select選項都設為 標題,如下面程式碼, 至於 選擇的範圍就在找其他地方顯示了

$(document).ready(function (){
    var myselect = $("select#select-choice-custom");
     myselect.val("0"); 
     myselect.selectmenu("refresh"); // 記得要 refresh
 });





圖四



圖五





參考: http://jquerymobile.com



2011年9月8日 星期四

心得 css span 固定寬度

 css 在 'span' tag 中設定 寬度 不能只設定 width 屬性而已, 簡單的作法 還要加入 "display: inline-block;"


如:
<span style="width:300px; display: inline-block;"> </span>



  我試過  Chrome v10, FF 6 , ie8  都可以




  為何要用呢,因為在手機上 有 翻轉的功能,  我希望 變成寬螢幕時能夠 把 三行 的訊息 變成一行


參考: TIPS-XHTML下如何強制指定SPAN寬度,黑暗執行緒


2011年9月6日 星期二

心得 Flot 畫圖 時區問題

若要使用 Flot 畫圖有想要設定時區的話, 還是老老實實的 從server 吧 時間的變數轉好(我是過要轉成long 格式),要在 client 端 設定時區目前還是不支援。


參考: http://efreedom.com/Question/1-5663821/Time-Zone-Problem-Flot-JQuery-Plugin

心得 json eval 在手機上網無法顯示狀況

  嘗試一下利用AJAX 呼叫 json 的方式在網頁上讀取, 配合的 library 還包含 jquery.mobile 和 flot , 不過使用AJAX Post 回傳摭取直的時候 利用 eval 的方式 可以在一般電腦網頁上的FF 和 Chrome 是可以執行取得json, 不過 在我的 Android 2.1 下是不行的... ,估計應該是手機版的瀏覽器對於 eval 的支援比較差。

我也用過 JSON.parse 不過直接跳到 complete.

所以我還試紙好用伺服器來取得直接寫入, 不過這樣 AJAX 的 loding  動畫我就不知道在哪放了,只好放棄用loading動畫了。

2011年9月1日 星期四

心得 JQuery 繪圖 Plugin , jqPlot 和 Flot

介紹一下兩個繪圖的plugin, jqPlot  和  Flot  , 我主要是用在手持裝置上顯示圖片的,因為flash 在手持裝置上執行有些地方含是有問題,像我的 android 2.1 手機就不行。

個人心得
jqPlot  :

  •     支援JSON 格式的文件
  •     Sample 比 Flot多
  •    官網文件比較多,而且有整理過
  •   官網:   http://www.jqplot.com/

   Flot :
  
  •     同樣也支援JSON 格式的文件
  •    可以支援 JQuery Mobile, jPlot 目前版本沒辦法顯示圖形(或很難我不會用) ,
  •  目前我搭配最好的各版本 jquery 1.5.x,  jquery.mobile-1.0a4.1.min.js, flot 0.7, 
    • 主要是 flot 0.7 是以 jquery 1.5.x 為基礎的,看他所附得lib 就可以看到
    • jquery.mobile 目前最新的是 jquery.mobile-1.0b2 但是用起來搭配  jquery 1.6.x 比較好
  • 官網: http://code.google.com/p/flot/

心得 jquery mobile 撰寫 手持裝置網頁的好幫手

不得不推薦一下 jquery mobile 這個 plugin, 利用簡單的預設套件就可以做出配合觸碰及有質感的網頁 ,
附帶一題 他是使用HTML5 的功能,


詳細參考可參閱 官方網頁: JQuery Mobile Framework.

2011年8月30日 星期二

心得 Jquery checkBox 檢查語法


想要取得 check box 回傳的值,原本以為很簡單,不過還是有點給他小困難,



以下是作範例的 checkbox, chkRemember

<input type="checkbox" name="chkRemember" id="chkRemember" class="custom" />



下面是用來取值的語法

var _r1 = $('input[name=chkRemember]').attr('checked');

2011年8月26日 星期五

轉貼 WordPress

從網路上的資料看來 WordPress  WordPress 是一套以 PHP + mySQL 為基礎的架Blog網站軟體,若想自己維護blog 資料的話倒是可以玩玩。  不過架站還要考慮到:

  1. Web server 安裝,  可以考慮懶人方式的 WAMP
  2. 固定ip 申請 , 像ISP,中華電信, 申請固定ip  
  3. 網址申請 這些問題。
 手邊沒有伺服器的話,或許可以考慮 AWS,  AWS 像是一台遠端的伺服器,申請帳號後可以免費使用1 年(實際時間以AWS 網站說了算),雖然有頻寬流量的限制,不過一開始玩玩應該還是夠的。


相關的 WordPress 文章可以看看:

2011年8月23日 星期二

轉貼 伺服器如何判斷是否手機上網

  手機等行動裝置因為版面設計與一般電腦不太一樣, 所以在版面設計上也會有些差異,
 以下是相關的特色:

  •       手機:解析度較小、通常是以長度大於寬度的介面
  •       電腦:解析度比較大、寬螢幕

如何判斷是否是手機等裝置連上在網頁瀏覽,研究了一下找到兩種方式


  • 列出清單來過濾 header file 中的 User-Agent,手機品牌百百種,若要完全涵蓋可能有點困難,不過涵蓋 已知的大廠倒是ok, 見 [1],[3]       , 
  • 在首頁的html 中 加入javascript 判斷 是否解析度太小(ex. 小於 800 X 600), 見 [2]



附註1.
[5] 利用 取得header 然後判斷 是否 有包含 mozilla 的字串, 不過我用android 上網來看也是有這個字串, 所以我認為現在可能不能用了,如圖





[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,.....




2011年8月10日 星期三

轉貼 andorid 啟動模擬器錯誤

啟動模擬器時出現錯誤   ,  '@foo' to launch a virtual device named 'foo'.
原因就是eclipse 或 android SDK 讀取路徑時不支援有 空格的資料夾位置 如  'Program Files'` , 簡單的解決方式是 將路徑改為 'PROGRA~1' , 或注意安裝SDK 不要放在有空格的目錄下


參考:
【亂整理】Android开发无法打开模拟器的问题:use '@foo' to launch a virtual device named

2011年8月9日 星期二

心得 遇到傳說得 parseint 08 錯誤

今天檢查程式時,居然發現錯誤,檢查了一下原來是 javascript 的 parseInt 的問題,
parseInt 不是很聰明的玩意,所以當 parseInt('08')時 ,他會判斷為8進制或2進制, 所以08,09 就會變成0....., 解決方式就是告訴他要實際的進制規則 ,將判斷式修正為  parse('08',10) 即可


參考: 傳說中 JavaScript 的 parseInt('08')



2011年8月3日 星期三

將 即時通軟體嵌入在網頁 以 MSN, Yahoo Message, Skype 為例

因為老闆有提到說想再網站上加上線上客服的功能,所以就搜尋了一下,

這些服務都很貼心的有網頁自動產生語法,所以設定起來真的不難。


 設定方式


1. MSN


2. Yahoo Message
     官方就有介紹,參考[2].

3. Skype
     訊息可參考[3] , Skype Phone 可參考[4].

順帶一題,MSN 和 Yahoo Message 比較相近, 可以允許匿名交談; 而 Skype 則必須要登入後才能對談,不過 Skype 除了訊息交換之外,還有 Skype phone 的語法直接可以嵌入






參考:
[1].  梅問題教學網
[2]. Yahoo!奇摩即時通對講機
[3]. 自定您的Skype 按鈕
[4]. skypeme

2011年8月2日 星期二

心得 RSS 製作在自己的伺服器上

在[1]中有介紹 rss xml 的格式,大致由兩個部份 , channel 和 item 兩個區塊

主體格式如下:

<rss version="2.0">
<channel>
<title>Title</title>
<link>http://XXX</link>
<description></description>
<item>
</item>
</channel>
</rss>


item 的內容如下:

<item>
<title> News Title</title>
<link>http://xxx.com/news1.html</link>
<description>... oooxxx... </description>
</item>


當然這是最基本的寫法,詳細的應用可以看看 yahoo 新聞 或其他有提供rss 的網站,

其他還有像 google feedburner 的 工具可以製作RSS,

不過更偷懶的方式就是申請一個Blogger ,大部分的部落格工具都支援RSS發布吧。




要提醒瀏覽器有 xml 時 ,加入下面的語法即可, http://xxx/rss.xml 就是你放在伺服器上的路徑

<link rel="alternate" type="application/rss+xml"
href="http://xxx/rss.xml" title="title">


參考:
[1]. RSS - Really Simple Syndication
[2]. Feedburner`

2011年7月29日 星期五

心得 Youtube 等 flash 檔案遮住 css 下拉式選單

  使用下拉式選單,若下面有嵌入 flash 的話 使用一般的 object, embed 標籤下的話 ( youtube 中 影片右鍵可以 '複製嵌入程式碼') , 則youtube 的影片在網站上的就會顯示在最上層

若要避免這種情況的話,可以使用 swf object 來必面這個問題

[1] 有引用swf範例code 如下


<script type="text/javascript" src="swfobject.js"></script>
<div id="ytapiplayer">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>

<script type="text/javascript">

var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/e/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer",
"ytapiplayer", "425", "356", "8", null, null, params, atts);

</script>




VIDEO_ID 是上傳youtube , youtube 給的 ID , 可以從連結影片的路徑中


找到





[2] 中有提到 在 params 中 加入 wmode: "transparent" 參數設定可以解決這個問題

修正後的 變數如下,在此我順便設定了允許全螢幕的選項:


var params = { allowScriptAccess: "always" , allowFullScreen: 'true' , wmode: "transparent"};






詳細 的 params 變數可以參考[3].

參考:
[1]: YouTube API and Tools
[2]: Clayliao.f2e , 解決Flash 遮住 javascript 的小技巧
[3]: swf document

2011年7月28日 星期四

心得 Google Search API

    Google Search api 改版後,現在可以分成 個人 或商用的 ,最顯著的差異就是 商用不會有廣告,但要付錢, 申請的方式也是和google 帳號綁在一起,
  Sites to search: 的地方 可以所定要查詢的網站名稱

 設定完之後會給 javascript 和 css 檔 複製到網頁上就可以使用


  此外, [2] 中也提供了相關API 的定義,像 .execute(query)  就是 查詢query 的字串




參考:
[1] : Google Custom Search
[2] : Google Custom Search Element

2011年7月26日 星期二

心得 將Google app engine 的網站 掛到 Google Apps 的網域下

無法查看此摘要。請 按這裡查看文章。

2011年7月18日 星期一

轉貼 google app engine enhancer error 解決方式

原因可能是google 沒有將一些class enhancer 起來, 不過搜尋後找到一個解法 就是


設定 eclipse 的 ORM 的 path(Project Settings -> Google -> App Engine -> ORM) , 手動引用使用到的class


如圖:
















2011年7月5日 星期二

心得 Google app engine deletePersistentAll

JDO 中,可以利用 deletePersistentAll 來刪除符合條件的資料


例如.

javax.jdo.Query query = pm.newQuery(Person.class);
query.setFilter("height > 100");
query.deletePersistentAll();




不過若因為符合資料太多 則會造成 java.lang.OutOfMemoryError: Java heap space 的錯誤(heap 空間不夠),

可以考慮其他方式, 因為 google app enigne 的查詢只允許 1 個範圍的過濾查詢[2], 目前想到的方式是用order 後 取出前幾位,之後在將每個屬性判斷否符合條件在刪除, 用起來還真不方便....







參考

2011年7月4日 星期一

心得 jquery 動態新增欄位

參考以下的來源 利用 jquery 達成動態的新增移除 text欄位





以下是 code:






<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Test Jquery dyamic</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1.4.4");



function AddItem() {

document.getElementById('newitems').innerHTML +=

"<div class=\"rowElem\" >"+
"<label> ITEM ID: </label>"+
"<input name=\"serid\" id=\"serid\" type=\"text\" maxlength=\"11\"/>"+
"<input type=\"button\" value=\"add\" onclick=\"AddItem()\" /> "+
"<input type=\"button\" value=\"delete\" onclick=\"DeleteItem()\"/>"+
"</div>";



// 先抓到是哪一個 tr
var sids= $('input:button', '#reg');

if(sids.length<4){
var _count= sids.length-3;
sids.eq(_count).hide();
}
else{
var _count= sids.length-3;
sids.eq(_count-1).hide();
sids.eq(_count).hide();
}


}


function DeleteItem() {

// 先抓到是哪一個 tr
var txts= $('input:text', '#reg');

var _count= txts.length-1;
// 移除它
var rownow = txts.eq(_count).parent();
rownow.remove();




// BTN 顯示先前的
var btns= $('input:button', '#reg');

var _bcount= btns.length-1;
if(_bcount==0){
btns.eq(_bcount).show();
}
else{
btns.eq(_bcount-1).show();
btns.eq(_bcount).show();
}

}

function check(){

var txts= $('input:text', '#reg');
var _count= txts.length;
var _str ="";
for (var i=0;i< _count; i++){
_str = _str +i + ": " + txts.eq(i).val()+" ";
}

alert(_str);
}




</script>
</head>
<body>


<div id ="fromBody" >
<form id ="reg" method="post" action="#" ">


<div class="rowElem">
<label> ITEM ID: </label>
<input name="serid" id="serid" type="text" maxlength="11"/>
<input type="button" id="additem" value="add" onclick="AddItem()" />
</div>

<div id = "newitems">

</div>

<div class="rowElem">
<input type="submit" value="Send" onclick="check()"/>
</div>

</form>


</body>
</html>










注意 落利用他的jquery plugin 要注意 DOM的資料結構會變動,如圖使用 jqTransform






2011年6月30日 星期四

轉貼 ASP.net URL Rewrite


只要 修改 web.config  在 system.web 下增加以下的設定, 此範例是將 輸入 ReURL  的位址取代 test.aspx



<system.web>
<urlMappings enabled="true">
<add url="~/ReURL" mappedUrl="~/test.aspx"/>
</urlMappings>
</system.web>





參考:


2011年6月28日 星期二

轉貼, ie 下 window.open 自動關閉

應該是 IE 的安全性的關係,在 FireFox 下狀況是正常, 開啟後會自動關閉, 我是在設定新視窗是MS word format 格式下發生的。


我測試的例子是開啟 新視窗 MS word format,這個方式 ie8 會出現 封鎖警告訊息,按下載就可以將 word 檔下載,達成我想要得結果。



code:



function openNewWindow()
{
window.open('TEST.html', '_self' );

}


附註:
原本的預想流程, 網頁上有一連結可以開新視窗->以word 格式瀏覽,原頁面和新視窗產生的文件都存在瀏覽器上。
現在流程,按下連結後 下載檔案,不過 chrome 或 FF 下載完要改副檔名,下完是.aspx 檔,改成doc 就可以達到效果了。 遇到情況是 我是用asp.net 來作伺服器的。

2011年6月27日 星期一

轉貼 Request.Form與Request.QueryString

用法類似 java servlet 的 dohttpPost 和 do httpGet, asp .net 還不算熟


可以 google 一下 "request form asp.net" 看看相關資料

2011年6月24日 星期五

轉貼 Eclipse UML 外掛 modelgoon



環境需求:

Eclipse 3.5.x and 3.6.x
GEF + Draw2D 3.5.x and 3.6.x
Java 1.5 or higher


外掛位址:
http://www.modelgoon.org/update

心得

1. 安裝後可以建立 class diagram ( project-> new -> MoelGoon Diagrams-> Class Diagram)

2. 可以新建class 或者用拖曳的方式把寫好的java 檔 拖到編輯畫面

3. 在圖上function 的地方還可以秀 seqence diagram

官網
http://www.modelgoon.org/?page_id=75

功能教學:

2011年6月17日 星期五

轉貼 Continuous Integration

以下轉自網路,基本上此篇可以當作書籤


Continuous Integration, 持續整合,感覺好像喊了好久了,今天偶然看到詞知道有這東西

簡單說 ,以我理解概念包含版本控管和單元測試,比較像TE 會用到的東東

其中 hudson 就是一套 以java 撰寫的 CI 軟體

以下轉貼幾個連結

[1] WIKI
[2] 當紅炸子雞:Continuous Integration,http://www.josephj.com
[3] 淺談 CI, Continuous Integration (持續整合),http://blog.toright.com
[4] 十件有關 Continuous Integration 的事情 , http://www.wretch.cc/blog/kojenchieh/15488468

2011年6月16日 星期四

心得 google app engine 1.5 支援 struct2 有問題

看來google 又失誤了 還是 struct2 太少人用了 哈
目前解決的方式 是 改sdk 到1.4 或 1.43 版

下載舊的版本可以到下面link
選擇 search alldownload, 預設是顯示最新版的API.



參考:http://code.google.com/p/googleappengine/issues/detail?id=5053

2011年6月14日 星期二

轉貼 asp.net 產生MS-Word

主要因應公司有人的需求才開始找的,由ASP.NET 動態產生資料在直接由ms word 開啟

主要有幾點注意
  • a. 預設使用 ms word 開啟 ,
將 設為 ContentType="application/msword" , 其他還有很多種型態如 excel,pdf 等這裡就不贅述
  • b. 使用特殊符號
如□ , 我的作法是 將 ResponseEncoding="big5", utf-8 的話會亂碼, 此外內文也要加入 <meta http-equiv="Content-Type" content="application/msword; charset=big5" /> 不然一樣出現亂碼, 這邊應該和宣告範圍有關

  • c. 設定邊界,
內文中 ,設定 style , 記得要內容要放在 class = style1 的 div tag 中 ,參考[1]




<html>

<head>
<meta http-equiv=Content-Type content="text/html; charset=big5">
<title>Test Margin</title>
<style>
<!--
@page Section1 {size: 21.59cm 27.94cm;
mso-page-orientation:landscape;
margin: 1.5cm 1.48cm 1cm 1.5cm;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
mso-header:h1;
mso-footer:f1;
layout-grid:18.0pt;}
div.Section1 {page:Section1;}

</style>
</head>

<body>
<div class=Section1 style='layout-grid:18.0pt'>
Test Margin
</div>
</body>

</html>

連結


  • d.設定 header footer[2] ,
不過這方法 header 的字串會重複出現 最後一行


參考
[1] 請教 document.execCommand(藍色小舖)
[2] Hiding Header/Footer In ASP Generated Word Document (experts-exchange)

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

2011年4月26日 星期二

轉貼- 免費小圖示

上google 找 其實可以找到很多 免費的小圖示,不過大部分先會找到 non - commercial use 的 ,也就是非營利使用的, 要放在一些公開的地方可能不太好用,

不過其實在 關鍵字上多加了一個 commercial 就可以 幫助我們找到 可以用的資訊

我用的關鍵字是 "free icon commercial use"

以下是我找到的一個網站
http://esdev.net/2880-icons-for-free-and-commercial-use/

http://www.iconfinder.com/free_icons

ICON Finder: 可以搜尋
http://www.iconfinder.com/

個人使用的
http://www.freeiconsdownload.info/tw/

2011年4月25日 星期一

轉貼 Jquery JSON 匯入 table

還蠻好用的小 plugin

jQuery.Table.js

2011年4月21日 星期四

小心得 16位元字串轉2位元字串

因為有需求所以查了一下 code 改寫出了一個function 來達成這個功能,不過載本機上可以執行,帶放在 google app engine 上 就會出現 "java.lang.NumberFormatException" 的錯誤,
估計是toBinaryString 或 parseInt 出錯


輸入像 '12AF' 的字串

就會轉出像 '0001001010101111' 的字串


CODE:

public static String GetHexString(String _str){
String _string = "";

char[] _c = _str.toCharArray();

for(int i=0; i < _c.length ; i++){
String _tempString = Integer.toBinaryString(
Integer.parseInt(String.valueOf(_c[i]), 16));

/// 0
for(int j=_tempString.length();j< 4 ;j++){
_tempString = "0"+_tempString;
}

_string += _tempString;
}

return _string;
}




之後只好改成另一種簡單的寫法



public static String GetHEXFormatString(String _str){

String _string = "";


for(int i =0 ; i <_str.length() ; i++ ){
String _tempStr = "";

char x = _str.charAt(i);

switch (x){
case '0':
_tempStr ="0000";
break;
case '1':
_tempStr ="0001";
break;
case '2':
_tempStr ="0010";
break;
case '3':
_tempStr ="0011";
break;
case '4':
_tempStr ="0100";
break;
case '5':
_tempStr ="0101";
break;
case '6':
_tempStr ="0110";
break;
case '7':
_tempStr ="0111";
break;
case '8':
_tempStr ="1000";
break;
case '9':
_tempStr ="1001";
break;
case 'A':
_tempStr ="1010";
break;
case 'B':
_tempStr ="1011";
break;
case 'C':
_tempStr ="1100";
break;
case 'D':
_tempStr ="1101";
break;
case 'E':
_tempStr ="1110";
break;
case 'F':
_tempStr ="1111";
break;
default:
_tempStr ="0000";
}

_string += _tempStr;
}

return _string;
}

轉貼 Javascript JSON

在 javascript 中 若要 接收轉換JSON物件的話,保險起見可以 引用
json2.js

主要有兩個function



JSON.stringify: 將物件轉為JSON 的 string


JSON. parse: 將JSON string 轉成javascript 物件


參考


[1] JSON in JavaScript
[2] JavaScript Essence: 傳送與接收 JSON

2011年4月19日 星期二

轉貼 Google Map API 本地化

Google Map API version 3 中,本地化有兩種功能

1. 顯示語言

只要將 language=XX 加入 scrpit 中, XX 表示語言代碼




<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=xx">



語言代碼可以 到這裡查詢

2. 區域本地化,以設定的區域為優先搜尋

只要將 &region=00 加入 scrpit 中, 00 表示地區代碼

這方面設定資訊比較少,範例上都是兩碼, 地區代碼的話可以參考 List of Culture Codes

參考

Google Map API v3

2011年4月14日 星期四

paypal IPN test

Paypal 線上付費有提供一個 IPN (Instant Payment Notification)的服務,簡單的說當交易完成之後,可以設定一個網址來處理客戶付費的訊息。

詳細步驟可以參考[1].

可以到 paypal 的網頁下載範例程式,支援包含ASP.Net(C#),ASP.Net(VB),JSP,PHP等語言



若要單純的試IPN,可以到 paypal 提供的 測試平台 sandbox, 利用 Test tool 來簡單的確認IPN ,步驟如下, (記得要將API 的url 從 https://www.paypal.com/cgi-bin/webscr 換成 https://www.sandbox.paypal.com/cgi-bin/webscr )


步驟1. 進入snadbox 網頁 選擇 Test tool

步驟2. 填入處理交易完成回報的URL

步驟3. 按下 Send IPN


--------------------------------
實際使用的步驟如下
步驟1. 登入後選擇我的 paypal


步驟2. 交易紀錄,即時付款通知紀錄


步驟3. 設定URL










參考[1]: IPNGuide.pdf

Google App engine 啟用SSL

若要使用SSL 的服務在Google App Engine 的話 要在

\war\WEB-INF\appengine-generated.xml 加入以下的敘述

<ssl-enabled>true</ssl-enabled>



參考:
Configuring Secure URLs (SSL)

2011年4月13日 星期三

轉貼 JQuery Plugin dynamic field

在網頁製作 動態的欄位 在 JQuery 中 找到兩個 plugin


1. jquery-dynamic-form

這個是 GPL2 授權的code

2. dynamicField - A jQuery Plugin

這個是 MIT 或 GPL 授權的code

2011年4月11日 星期一

轉貼 Visual SVN 簡單架SVN server

以前不知道有這個軟體,所以SVN 只能慢慢架 不過現在可以利用 Visual SVN 來簡單的架設


參考:
[1] visual svn

[2] 無腦安裝 SVN 過程,使用 Visual SVN

2011年4月8日 星期五

使用 google ClientLocation 取得使用者IP的位置

在引用 google api 後, 就可以使用以下的函數取得 所在 IP的 地理位置,

如範例


var _clientLocation= google.loader.ClientLocation;
/// 緯度
var lat = _clientLocation.latitude;
/// 經度
var lng = _clientLocation.longitude;
///城市名稱
var city = _clientLocation.address.city;
/// 國家
var country = _clientLocation.address.country
/// 國家簡碼
var countryCode = _clientLocation.address.country_code;



此外還有一種更精確的定位API
Geolocation [3] , 不過測試下 只有 FF 可以執行,CHROME 和 IE8 都支援有問題??



參考

[1] Gmap samples

[2] Google Map IP定位 - 自動載入使用者位置

[3] Google Maps JavaScript API 第 3 版

小心得 Google map api key

雖然是同一個domain name , 不過 Http 和 Https 的 網頁要使用不同的 google api key

不過
Google Map API V3 就不需要 Key 了

2011年4月6日 星期三

JDO 日期 範圍搜尋

JDO 在查詢日期範圍的方法,比 標準 SQL 麻煩一點 ,可以參考以下的語法,有兩種寫法

Declarative JDOQLSingle-String JDOQL, my_date_limit 就是要比較的日期




Declarative JDOQL :

Query query = pm.newQuery(domain.Product.class,
"endDate > best_before_limit");
query.declareImports("import java.util.Date");
query.declareParameters("Date best_before_limit");
query.setOrdering("endDate descending");
Collection results = (Collection)query.execute(my_date_limit);


Single-String JDOQL :

Query query = pm.newQuery("SELECT FROM mydomain.Product " +
"WHERE endDate > best_before_limit " +
"PARAMETERS Date best_before_limit " +
"import java.util.Date ORDER BY endDate DESC");
List results = (List)query.execute(my_date_limit);



日期的宣告如下

/*
宣告 2011 年 4 月 1 號
*/
Date my_date_limit = new Date(111,3,1); /// 年(1900+)、月(0=1月)、日



參考

[1] Java Data Objects

[2] JavaTM 2 Platform, Standard Edition, v 1.4.2
API Specification - java.util.Date

2011年4月1日 星期五

小心得, 在 Goole Site 使用自己的Flash

1 上傳 swf 檔案到 協作平台上, 這裡以 sample 中的雪花場景為例上傳




2 點選view 檢視 網址 並將網址複製下來



3 編輯頁面



4 選擇修改 html




5 在 html 加入 embed tag 把 步驟2複製的網址填入src 屬性






6. 編輯完記得按儲存