星期六, 4月 30, 2011

[Java] 快快樂樂安裝Tomcat in Window

本文記錄如果在Window安裝Tomcat伺服器
1.下載tomcat 這裡,下載解壓放在你想放的目錄下
本文是統一放在Apache自動安裝的AppServ目錄下,以方便管理
Tip:現在還有提供Windows Service Installer方便Windows的用戶

2.安裝JAVA JDK 這裡
目前版本為Java 6

3.設定JAVA 環境變數
我的電腦->右鍵->內容-> 進階系統設定(Vista) ->進階 -> 環境變數

在PATH變數里的最後面貼上你JAVA安裝的路徑

;C:\Program Files\Java\jdk1.6.0_19
(注意每個變數前面要用分號隔開)

新增下列所有的環境變數值
變數名稱                                               變數值
JAVA_HOME                                        C:\Program Files\Java\jdk1.6.0_19\
CLASSPATH                                       C:\Program Files\Java\jdk1.6.0_19\lib
CATALINA_HOME                                C:\AppServ\apache-tomcat-6.0.32

註:第三個是選擇性設定

4.測試你的java環境
C:\Program Files\apache-tomcat-6.0.32\bin>java -version
java version "1.6.0_19"
Java(TM) SE Runtime Environment (build 1.6.0_19-b04)
Java HotSpot(TM) 64-Bit Server VM (build 16.2-b04, mixed mode)

5.啟動你的Tomcat

C:\Program Files\apache-tomcat-6.0.32\bin>startup.bat
關掉的話就是將命令提示字元(終端機)關掉即可

6.測試Tomcat
瀏覽器開啟http://127.0.0.1:8080/ 測試tomcat是否有啟動,讀到Tomcat首頁你就完成了 :)

星期六, 4月 23, 2011

[JAVA] 快快樂樂學JAVA JDBC 連接 MySQL

JDBC連接MySQL
使用JDBC連接資料庫存取資料時,必須執行以下三個步驟:

1.用DriverManager載入及註冊適當的JDBC驅動程式
Class.forName("com.mysql.jdbc.Driver");

如果發生Driver not found錯誤訊息改改用
Class.forName("com.mysql.jdbc.Driver").newInstance();

2.用JDBC URL定義驅動程式與資料來源之間的連結,並且建立一個連結物
//option1
String jdbcUrl = "jdbc:mysql://[hostname]:[port]/[dbname]?user=[username]&password=[pwd]";
Connection conn = DriverManager.getConnection(jdbcUrl);

//option2
String jdbcUrl = ""jdbc:mysql://[hostname]:[port]/[dbname]";
Connection conn = DriverManager.getConnection(jdbcUrl,"username","password");

3.建立一個sql陳述句,並利用它來執行SQL語法
Statement stmt = conn.createStatement();


執行陳述句有三種方法:

方法一:取回結果集

ResultSet rs = stmt.executeQuery("sql語法")

//取得每一列資訊
while(rs.next()){
//取得這筆資料的結果
rs.getString(1);
rs.getInt(2);
}


方法二:新增、更新、刪除等等使用

//updateRow為執行成功的列數
int updateRow = stmt.excuteUpdate("sql語法");
方法三:單純判斷執行有無成功使用,回傳boolean
bool success = stmt.execute("sql語法");


[JAVA] 快快樂樂學JAVA RESTful Service using Jersey

本文記錄如何在JAVA+TOMCAT下使用Jersey快速建立RESTful WebService :
感謝Owen血尿付出。

第一步:安裝Eclipse跟Tomcat 6.0.32
第二步:下載Jersey Library 1.6。官網http://jersey.java.net/
第三步:將下載的.jar檔放到Tomcat/lib
核心的lib asm-3.1.jar, jersey-core.jar, jersey-server.jar, jsr-311-api-1.0.jar



第四步:開啟Eclipse,新建一個Dynamic Web Project
第五步:修改專案內的YourProjectName/WebContent/WEB-INF/web.xml,新增以下內容

<servlet>
      <servlet-name>JerseyServlet</servlet-name>
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
      <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
      <servlet-name>JerseyServlet</servlet-name>
      <url-pattern>/services/*</url-pattern>
 </servlet-mapping>

第六步:第一個HelloWorld Restful API (支援GET / POST)

星期三, 4月 20, 2011

[Linux] 快快樂樂學Linux指令筆記

如何mount裝置內的共享資料夾

1.設定共用資料夾
裝置->共用資料夾->加入共用資料夾

2.在ubuntu建立一個暫存的目錄
$cd /home
$mkdir temp

3.掛載裝置:D_DRIVE為共用資料夾的名稱
#掛載的共享資料夾目錄名稱 ./要掛載的目錄
$sudo mount -t vboxsf D_DRIVE ./temp

4.卸載所有裝置
$umount -a
=====================================================================
Symbol Link

unlink 其實就跟 rm 一樣罷了,當要移除一個 symbolic link ,有時發現怎樣移不掉,一直說 "unkink: my_symbolic_link/ : is a directory" ,這個訊息就跟使用 rm 去移除一個目錄時的錯誤訊息!原來,在移除一個 symbolic link 時,要留意後面不能加個 "/" !這樣,若 symbolic link 是連到一個目錄時,等同於在對那個目錄做 rm 的動作,才會顯示 "is a directory" 訊息。這時可不能一氣之下用 rm -rf !可會將 link 到的目錄給移除掉的!要額外小心。

#目的地是一個檔案
$ ln -s target_file_path my_file_link
$ unlink my_file_link

目的地是一個目錄
$ln -s target_dir my_dir_link
例如:產生在當前目錄下的symbol link
$sudo ln -s /home/temp/mysite.war

$unlink my_dir_link/
$unlink: my_dir_link/: is a directory
$unlink my_dir_link

Done
=====================================================================
MYSQL

#安裝圖形化介面(ubuntu)
$sudo apt-get install mysql-admin

#連接資料庫
$mysql -u root -p

#離開資料庫
mysql>exit


=====================================================================
RM

#移除整個資料夾
$rm -rf 資料夾名

=====================================================================
ifconfig


#列出網路卡資訊
$ifconfig

#設定網路卡ip
$ifconfig eth10 192.168.0.112

=====================================================================
Apache Web Server


#開啟apcahe
$/etc/init.d/httpd start

#關閉apache
$/etc/init.d/httpd stop

#開機啟動檔路徑,可設定開機執行一些shell script指令
$vim /etc/rc.local

=====================================================================
VI

#搜尋
/ <搜尋的字串>

#強制執行存檔
:w ! tee %

#強制離開
:q!


#刪除一行(離開insert模式)
dd

#全刪除
dG



星期二, 4月 19, 2011

[JQuery] getting URL parameters values

/**
 * 
 * get request url parameters and values
 */
(function($) {
 $.extend({
    getUrlVars: function(){
      var vars = [], hash;
      var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
      for(var i = 0; i < hashes.length; i++)
      {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
      }
      return vars;
    },
    
    getUrlVar: function(name){
      return $.getUrlVars()[name];
    }
 });
})(jQuery);

Reference: Get URL parameters & values with jQuery

[JQuery Plugin] 自訂jQuery plugin 教學

記錄jQuery外掛的常見的寫作方法。

第一步:將下面的範例程式複製起來,
這是一個簡單將jQuery物件別名為$號的方法,
可以避免其他Javascript Framework別名衝突的問題!!

(function($) {

})(jQuery);


第一種:我偏好的方式 $.fn與$來擴充jQuery物件的方法
(function($) {
 
//呼叫此方法需要帶入指定的元素,可一定綁定多個元素
   $.fn.helloworld= function() {
        this.each(function(){
             alert('helloworld');
        });
        
    };
    
//不需元素即可呼叫(靜態函式)
    $.helloworld2 = function() {
       alert('helloworld 2');
    };
    
})(jQuery);



第二種:改用extend方法來擴充!!
什麼是extend方法請參考黑大的文章:jQuery extend 的用法

(function($) {
 $.extend({
   helloworld: function(){
    alert('helloworld');
   },
   goodbyeworld: function(){
    alert('goodbyeworld');
   }
 });
})(jQuery);


Reference:
網站製作學習誌 » [jQuery] 自製 jQuery Plugin – Part 1
網站製作學習誌 » [jQuery] 自製 jQuery Plugin – Part 2

星期一, 4月 18, 2011

[Alfresco] login using Jquery

/**
 * authentication
 */

$(function(){
 //dologin
 $("#login_submit").click(function(){
  var username = $("#username").val();
  var password = $("#password").val();
  if(username == "" || password == ""){
   alert("Invalid UserName or Password.");
  }else{
   //call resetful api
   
   var endpoint = "http://localhost:8080/alfresco/service/api/login?u=" + username + "&pw=" + password + "&format=json";
   alert(endpoint);
   $.ajax({
     type: "GET",
     headers: {
                 "Content-Type": "application/json"
     },
     url: endpoint,
     //contentType: "application/json",
     processData: false,
     //data: stringData,
     dataType: "jsonp",
     jsonp:"alf_callback",
     jsonpCallback:"jsonp_callback_login",
     statusCode: {
        404: function() {
          alert('page not found');
        },
     400: function() {
           alert('bad request');
         }
     }
   });
  }
 });
});

function jsonp_callback_login(data){
 alert(data.data.ticket);
}

[Alfresco] alf_ticket VS ticket url parameter

For all the pages under the path /faces/* and Web Scripts with the Web Client authenticator alfresco/wcservice/*, you have to use the ticket parameter.
For all the Web Scripts with a path alfresco/service/ you have to use the alf_ticket parameter and in this case you are using the HTTP Basic Authenticator.



Reference:
http://forums.alfresco.com/en/viewtopic.php?f=4&t=28524

[JQuery] AJAX cross-domain issues

Reference:
jQuery抓取跨網域外的資料(cross-domain) 運用JSONP

[Alfresco] Restful API cross-domain issues

Reference:
Web Scripts:JSON Callbacks



[MSSQL] 安裝錯誤解決方法

問題:升級到 SQL Server 2005 失敗,並出現「安裝程式無法連接到資料庫服務進行伺服器組態。」錯誤訊息。

問題:如果在升級到 SQL Server 2005 期間無法使用通訊埠 1433,則 SQL Server 安裝程式會傳回下列錯誤:

SQL Server 安裝程式無法連接到資料庫服務進行伺服器組態。

解決方案:若要繼續,請終止使用通訊埠 1433 的處理序,並繼續進行 SQL Server 2005 安裝程式:

從命令提示字元執行 netstat -o。
識別使用通訊埠 1433 的應用程式或處理序。
使用 [工作管理員] 來關閉應用程式或終止處理序以釋放通訊埠 1433。
繼續 SQL Server 2005 安裝程式。
如果使用上述步驟仍無法釋放通訊埠 1433,請使用下列其他步驟:

開啟 [控制台] 的 [新增或移除程式]。
選取 [Microsoft SQL Server 2005],再按一下 [變更]。
在 [元件選擇] 頁面上,按一下要升級的 SQL Server 執行個體的選項按鈕,然後按 [下一步]。
在 [功能維護] 頁面上,按一下 [Database Engine],然後按 [下一步]。
按一下 [繼續] 來繼續 SQL Server 2005 的升級作業。

Reference:
對 SQL Server Database Engine 的安裝進行疑難排解

星期四, 4月 14, 2011

md5 image file

string ImageFileName = null;
string StrImageName = null;
string UploadImageFolderPath = Server.MapPath("../Upload/Images/");
string ImageFileExtension;

if (ImageUpload.HasFile)
{
StrImageName = ImageUpload.FileName.ToString();
ImageFileExtension = System.IO.Path.GetExtension(StrImageName);

// GIVE A UNIQUE FILENAME(MD5) TO THE UPLOADED FILE:

MD5CryptoServiceProvider objMD5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(StrImageName);
bs = objMD5.ComputeHash(bs);
System.Text.StringBuilder s = new System.Text.StringBuilder();

foreach (byte b in bs)
{
s.Append(b.ToString("x2").ToLower());
}

StrImageName = s.ToString();

ImageFileName = StrImageName + ImageFileExtension;

// As long as the Image-File-Name is exists in the folder then we are MD5ing again the imgage-file-name:

while (System.IO.File.Exists(UploadImageFolderPath + ImageFileName))
{
MD5CryptoServiceProvider objMD5While = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bsWhile = System.Text.Encoding.UTF8.GetBytes(StrImageName);
bsWhile = objMD5.ComputeHash(bsWhile);
System.Text.StringBuilder sWhile = new System.Text.StringBuilder();

foreach (byte bWhile in bsWhile)
{
sWhile.Append(bWhile.ToString("x2").ToLower());
}

StrImageName = sWhile.ToString();
ImageFileName = StrImageName + ImageFileExtension;
}

ImageUpload.PostedFile.SaveAs(UploadImageFolderPath + ImageFileName);
}

星期三, 4月 13, 2011

圖片檔案hash

string hash = null;
                using (System.Security.Cryptography.SHA1CryptoServiceProvider sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider())
                {
                    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
                    System.Drawing.Image myImage = System.Drawing.Image.FromFile(path + f.ToString());
                    myImage.Save(ms, format);

                    hash = Convert.ToBase64String(sha1.ComputeHash(ms.ToArray()));
                }

星期四, 4月 07, 2011

[ZK] Image setContent using Stream

Aimage stream設定範例
    
URL url = new URL(avatar);
            AImage aimg = new AImage("avatar",url.openStream());
            myPhoto.setContent(aimg);

[Alfresco] upload user avatar using resetful api

Build a uploadavatar.jsp page to test uploadavatar restful api.
The page content is shown as the below:

<form id="avatar" enctype="multipart/form-data"
action="http://ideas-cosa.dyndns.org/alfresco/service/slingshot/profile/uploadavatar?alf_ticket=TICKET_32178fa17bcf3b975e76129dccb78d646466e88d" method="post">
<input type="text" name="username" value="ken"/>
Select a file:
<input type="file" name="filedata" />
<input type="submit" name="button" value="upload" />
</form>

星期三, 4月 06, 2011

[Java] Simulator to POST multipart/form-data using HttpURLConnection

使用HttlURLConnection模擬表單 multipart/form-data 動作。

找了二篇介紹比較好的作法可參考以下二篇:
Multipart form upload on Android
Useful Code of the Day: Multipart Form File Upload

[ZK] How to use undo redo button using zk

If you want to use 'undo' and 'redo' button on web browser in your zk website,you can refer to the following link:
ZK Developer's Reference/UI Patterns/Browser History Management

星期二, 4月 05, 2011

HTTP 檔案上傳機制解析 [精華]

HTTP 檔案上傳機制解析 [精華]

[Asp.Net] 重新註冊IIS .NET Framework

以下程式碼為簡單的範例:請自已修正安裝的.net framework路徑

REM This batch file addresses "Server unavailable" error
@echo off

REM "Changing to the Framework install directory"
cd /d C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

echo "Stopping IIS"
iisreset /stop
echo "----------------------"

echo "Stopping the ASP.NET state service if it is running"
net stop aspnet_state
echo "----------------------"

echo "Re-registering ASP.NET"
aspnet_regiis -i
echo "----------------------"

echo "Restarting IIS"
iisreset /start
echo "----------------------"

其他你感興趣的文章

Related Posts with Thumbnails