2013年8月29日 星期四

Git 基本操作流程

~感謝雋翔大大的講解以及周麟書記官XD~

閱讀說明:
輸入之命令:藍色(固定不變的部分)
會變動的欄位:綠色(ex.輸入的使用者名稱、加入的檔案等等)
注意事項:橘色

至http://git-scm.com/下載相關軟體
安裝時通通下一步到底即可

安裝完成後,執行Git Bash程式(類似cmd界面)
注意:以下的程式碼可以用複製的,方法為複製後右鍵按下上方框框處,即可找到複製的按鈕了
初次使用時,請先設定使用之名稱與Email
命令為
git config --global user.name "使用者名稱"
git config --global user.email "使用者Email"
(若有使用過GitHub會發現已經有使用者名稱及Email)

輸入完成後,可輸入下面的命令來檢查設定狀態
git config --list
有看到這段就代表成功了
接下來設定存放之資料庫
可選擇在本機上自己的資料夾,或是與他人共用(放在gitHub上)的路徑作為存放之位置
若是使用本機上的資料夾,記得要先切到該資料夾所在位置
舉例來說,我將資料夾放在C:\gitTest\test
則我需要先在命令列輸入cd C:/gitTest/test
注意所使用的是/而非\
此時我們在命令列會看到金色的字顯示移動至所屬的路徑



在此處輸入
git init
會出現下面的字串

同時,命令列也會多出(master)提示你目前所在的位置為主幹或是分支

我們可以將其想像成一個樹狀的結構,除主幹(master)之外,我們可以延伸出多個分支(分支名稱可自訂)
並且,在該資料夾處也會多出一個.git之資料夾
注意:若刪除此資料夾,所有保存之快照將會消失

自此我們可以正式開始使用了
首先,我們可以查詢目前的狀態,檢視此資料庫是否有變動
使用
git status
下面會顯示出目前有什麼更動,這時還看不出效果

接下來,我們在所在資料夾新增一純文字文件,名稱設為test1.txt
此時再次執行git status看看效果

我們會發現,有被修改的文件會出現並顯示紅色

接著,讓我們把這個檔案加入追蹤吧
git add test1.txt
此時再使用git status
就會發現,新增的檔案會顯示為綠色

不過此時還沒加入完成,我們還需要使用commit指令將其儲存
執行
git commit
會進入以下畫面

左上角的游標,必須按下insert才可進行編輯(Mac則是按下i)


在此處輸入你要留下的訊息,建議使用””將要輸入的訊息包住
輸入完成後,按下esc會回到剛剛的游標狀態
此時按下:游標會移到最下方

輸入
wq
並按下Enter結束
(wq代表寫入並離開)


會顯示下列字串

接著,確定一下更新狀況
輸入
git log
會顯示剛剛做的更新 ,與我們所輸入的字串

檢視節點
我們可以輸入
git branch
來看看目前有哪些節點可用
master為主節點,由於我們還沒建立分支,所以只會看到這個節點

建立節點
假設我要建立一個名為sub1的節點,我可以輸入
git btanch sub1
接著再次輸入
git branch
來看看效果
我們所增加的節點的確出現了
也可以發現,目前被選定的節點前方會出現*並且字體顏色會變為綠色

切換節點
使用
git checkout sub1
就切到所選的節點了
各節點間並不會互相干涉
舉例來說
我們按照前面的方式
在此時於資料夾處加入一個test2.txt
使用git add test2.txt
再使用git commit將其加入
完成後使用git checkout master
會發現資料夾處原本應該存在的test2.txt消失了

這就是節點間的互不干涉

2013年8月28日 星期三

Eclipse + Dropbox + Git (Git Bash,Git GUI)


1.      在Dropbox 建立 遠端Repo
(若為團隊專案,這只需要leader做一次,Team Member請跳至步驟5)
A.          切換至要存放遠端Repo 的地方 (Dropbox資料夾)
-->cd E:/Dropbox/Git
B.          建立bare repo
-->git init --bare

2.      建立本機端Repo
--> Create New Repository > Browse -( E:/Test) > Create          
*選擇已存在的資料夾OR Eclipse 專案資料夾 ( workspace/xxxProj/ )
3.      加入遠端
--> Remote > Add


4.      輸入遠端資訊
Name:  隨意
Location: 輸入遠端Repo位置
Further Action: 新增完遠端後
a.      抓遠端branch
b.      初始化遠端Repo 並將本地 branch  push上去
c.       發呆 (建議選這項)

5.      建立本地Repo ( 從遠端Repo Clone 一份)
-->Clone Existing Repository > Source Location - (E:/Dropbox/Git) > Target Directory – (E:/Test1) > Clone
<Clone Type 選 Standard>

6.      創建Eclipse Project (若當初在Eclipse專案資料夾建立本地端Repo者可跳過此步驟)
-->新增專案時 不要勾選 “Use default location” ,並在Location: 選擇你所建立的本機端Repo位置
OR

7.      設定 . gitignore 讓Git不去track某些檔案

*按下Rescan 時,在Unstaged Changes 會發現尚未記錄(commit)的檔案,而因為我們新創建了Eclipse Project 在本機端Repo中,所以會有一些檔案不需要用Git 作紀錄,所以必須新增.gitignore在本機端Repo中 讓Git去忽略這些紀錄在.gitignore 的檔案。



A.          開啟Git Bash > 切換至 本機端Repo目錄
   -->cd E:/Test
B.          新增 . gitignore
-->touch .gitignore
             
C.          到檔案總管開啟 .gitignore,輸入要忽略檔案/目錄
bin/   -- Java Project 中.class 存放目錄
build/ -- Dynamic Web Project 中.class存放目錄
.classpath  --Eclipse 專案相關
.project -- Eclipse 專案相關
.gitignore  -- 自己本身
(其他請自行加入)


8.      接下來就可以快樂的使用Pull , Push 功能囉~

2013年7月23日 星期二

[Servlet/JSP] 取得連接 Eclipse.Tomcat <-> SQL server *使用DataSource

請拋棄DataManager.getConnection (... , ... , ...)
查詢 Doc.  ->  JNDI Datasource HOW-TO
<DataSource  設定>
1.將JDBC Driver 加入Tomcat
     > sqljdbc4.jar 加入Tomcat安裝目錄\lib
     * 如果使用Tomcat的 launch configuration ,在Java Resource -> Libraries ->Apache Tomcat v7.0 中看不到sqljdbc4.jar

2.在Tomcat裡設定DataSource 
     > WebContent -> META-INF -> 新增 context.xml   
     (可以在三個位置新增context.xml 。 補充:另一種方法)
     (context內容可以在文件中可以找到)


<?xml version="1.0" encoding="UTF-8"?>
<Context>
  <Resource  name="jdbc/MyDB" auth="Container" 
             type="javax.sql.DataSource"
             maxActive="100" maxIdle="30" maxWait="10000"
             username="sa" password="passw0rd" 
             driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
             url="jdbc:sqlserver://localhost:1433;database=JDBC"/>
</Context>

PS.若使用文件中的格式,需要改:
name >常取”jdbc/XXX”的格式;
type >”javax.sql.DataSource”;
username >資料庫用戶帳號
password >資料庫用戶密碼
driveClassName >"com.microsoft.sqlserver.jdbc.SQLServerDriver"
*資料庫驅動 可從
Java Resource -> Libraries ->Apache Tomcat v7.0 ->sqljdbc4.jar -> com.microsoft.sqlserver -> jdbc.SQLServerDriver.class
按 右鍵 -> Copy Qualified Name ->貼到driveClassName (記得刪掉 .class)
url >"jdbc:sqlserver://localhost:1433;database=JDBC"
*google : "sql server url"
---補充---
maxIdle: 資料庫連接的最大閒置時間。超過閒置時間,資料庫連接將被標記为不可用,然後被釋放。設為0表示無限制。
maxActive: Connection Pool 的最大資料庫連接數。設為0表示無限制。
maxWait: 最大建立連接等待時間。如果超過此時間將接到異常。設為-1表示無限制。

3.將web.xml 設定DataSource (此處的 web.xml 是在WebContent\WEB-INF中)

<resource-ref>
  <res-ref-name>jdbc/MyDB</res-ref-name> 
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope></resource-ref>

* <res-ref-name>、<res-type>、 <res-auth> 同 context.xml 中 name、type、auth

* <res-sharing-scope> 只有 Shareable , Unshareable 兩種選項(請使用alt+/選擇)

what it exactly means to have <res-sharing-scope> ?

The Bean Provider can control the shareability of the connections acquired from the resource manager connection factory. By default, connections to a resource manager are shareable across other enterprise beans in the application that use the same resource in the same transaction context. The Bean Provider can specify that connections obtained from a resource manager connection factory reference are not shareable by specifying the value of the "res-sharing-scope" deployment descriptor element to be "Unshareable". The sharing the connections to a resource manager allows the container to optimize the use of connections and enables the container's use of local transactions optimizations.

4.寫程式測試DataSource (test.jsp)

-test.jsp-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="java.sql.*" %>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MyDB");
Connection conn = ds.getConnection();
//JDBC
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select * from dept");
while(rset.next()) {
        String col1 = rset.getString(1);
        out.println(col1+"<Br>");
}
rset.close();
stmt.close();
conn.close();
%>
</body>
</html>

---------
*lookup("java:comp/env/jdbc/MyDB") 底線部分記得要跟web.xml中 res-ref-name 一樣