2014年5月21日 星期三

[Maven] 常用資訊

Maven2 的運行命令為: mvn ,

常用命令為:

mvn archetype:create :創建Maven 項目

mvn compile :編譯源代碼

mvn test-compile :編譯測試代碼

mvn test :運行應用程序中的單元測試

mvn site : 生成項目相關信息的網站



mvn clean :清除目標目錄中的生成結果

mvn package : 依據項目生成jar 文件

(忽略單元測試:mvn -Dtest -DfailIfNoTests=false package)

mvn install :在本地Repository 中安裝jar

(mvn install:install-file -DgeneratePom=true -DgroupId=com.shunwang.swpay -DartifactId=swpay -Dversion=0.0.1 -Dpackaging=jar -Dfile=F:/新框架/swframe.jar )

mvn eclipse:eclipse :生成Eclipse 項目文件

生成項目

建一個JAVA 項目: mvn archetype:create -DgroupId=com.demo -DartifactId=App

建一個web 項目: mvn archetype:create -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp

生成Eclipse 項目

普通Eclipse 項目執行: mvn eclipse:eclipse

Eclipse WTP 項目執行: mvn eclipse:eclipse –Dwtpversion=1.0

( wtp1.0 以上版本均可用)

在Eclipse 裡面file>import

然後選擇General>Existing Projects into Workspace(如果安裝了maven插件這個地方選擇maven project,然後下一步找到pom.xml文件)

設置maven 的路徑變量M2_REPO

Window -> Preferences -> Java -> Build Path -> Classpath Variables

New Name 命名: M2_REPO

路徑:本地的maven 類庫地址

這里為C:/Documents and Settings/{ 你的系統登錄用戶名}/.m2/repository(自定義設置的倉庫:修改.setting.xml文件C:/Java/Tools/apache-maven-2.0 .8/M2Repository 並讓ide內的setting.xml文件設置指向你得這個文件)

注意事項:
1、Maven默認的remote repository是ibiblio.org,這個地方有些人上不去,因此要更改一下 ​​。
Maven找尋配置參數的默認的順序是從maven.jar中的defaults.properties開始。打開該文件,修改:
maven.repo.remote = http://apache.linuxforum.net/dist/java-repository , http://dist.codehaus.org , http://mirrors.sunsite.dk/maven/ , http://public.planetmirror.com/pub/maven , http://www.ibiblio.org/maven

可在以下兩個網站查閱:http://mvnrepository.com/,http://repo1.maven.org/maven2/

2、Maven默認的本地文件保存在Document and Setting的user.home裡面,非常不便。
在%MAVEN_HOME%下建立一個local目錄,將本地的repostiory保存在此,以免重裝系統丟失。
maven.home.local = ${maven.home}/local
3、Maven的提示語言在中文環境中可能出現亂碼,進入maven.jar,
發現org/apache/maven/messages目錄下的messages_zh_CN.properties裡面直接寫了中文字符。刪掉它!就不會亂碼了。
(或者用native2ascii轉換)

4、Maven中最大的麻煩之處就是不能從Maven存儲庫中獲取Sun的jar文件。這個問題歸因於Sun在其代碼中設置的許可證限制。解決這個問題的辦法有兩種,一種是下載這些代碼並將它們安裝在您本地的存儲庫中,另一種是做一個外部聲明,並將這個聲明指向文件系統中依賴項所在的位置。希望Sun能夠儘早地創建自己的存儲庫,儘管如此,Maven也會被升級來使之能夠下載這些資源,只是在下載之前它會提示用戶接受許可證協議。

5、另外一個麻煩的地方就是有時候使用的最新的庫文件可能在遠程存儲庫中不存在。另一種可能是由於無法訪問Internet,需要所有的依賴項都能在本地獲取。這些問題的最好解決方案就是將jar文件安裝到本地的存儲庫中。將本地的存儲庫放在一台web服務器上也同樣是個便利之舉,這樣整個開發團隊就能從此獲益,每個人都沒有必要去管理自己的存儲庫了。改變Maven的存儲庫路徑只需簡單地編輯其安裝目錄下conf文件夾下面的settings.xml文件即可。

IDE下的問題

1. 當M2eclipse 插件裝上之後,會報這個錯

Eclipse is running in a JRE, but a JDK is required

Some Maven plugins may not work when importing projects or updating source folders.

解決辦法:查看eclipse/readme/readme_eclipse.html 裡面有詳細說明,在Selecting a workspace 這一節

創建一個快捷方式,設定目標位置為D:/eclipse_jee/eclipse.exe -vm D:/Java/jdk1.5.0_10/bin/javaw

因為默認vm 為jdk/jre/bin/javaw ,直接改到jdk 下,錯誤即可消除

2.在使用命令mvn eclipse:eclipse之後,import到Eclipse,然後在Eclipse項目上點右鍵,選擇插件Maven>Enable Dependency Management後,會報重複引用依賴的錯誤
解決辦法:再執行mvn eclipse:eclipse然後刷新Eclipse的項目,取消掉maven插件的引用依賴,錯誤就會消除

3. Failure executing javac, but could not parse the error:
編譯器(1.5.0_10)中出現異常。如果在Bug Parade中沒有找到該錯誤,請在Java Developer Connection (http://java.sun.com/webapps/bugreport )對該錯誤進行歸檔。請在報告中附上您的程序和以下診斷信息。謝謝您的合作。
java.nio.BufferOverflowException
解決辦法:(臨時)在控制面板中將區域與語言選項中,把當地語言設為英語

[自動下載dependency 對應的 javadoc or source]
From the Maven Eclipse Plugin FAQ

mvn eclipse:eclipse -DdownloadSources=true  -DdownloadJavadocs=true
or in your pom.xml: ==> View

2014年5月16日 星期五

各廠牌手機工程模式 [Android]

各廠牌手機工程模式:

步驟.1
進入手機撥號介面

步驟.2
輸入以下號碼. (不需要按撥出,按完最後一個碼之後就會進入工程模式了)

HTC => *#*#4636#*#*
Sony => *#*#7378423#*#*
三星 => *#0*#
小米機 => *#*#6484#*#*
華為非 MTK 機種 => *#*#2846579#*#*
華碩 =>    *#*#4636#*#*
小米 => *#*#6484#*#*
Infocus => *#*#3646633#*#*
LG => 3845#*802#
Acer => *#*#3646633#*#*
NEXUS => *#*#4636#*#*
OPPO => *#*#4636#*#*

一般MTK系列的手機 => *#*#3646633#*#*

提醒 : 進入工程模式後是全英文介面
可以測試螢幕/LED/喇叭/麥克風/相機/WIFI....等等

以上並不保證該廠牌所有型號機種可用,如果不行使用
只好請大家使用谷歌大神囉

2014年5月12日 星期一

雙網卡設定不同出路 外網及內網

以Win8 為例
進入網路及共用中心 --> 變更介面卡設定
選取一張網卡的內容設定


點選TCP/IP設定 -> 進階
可自訂該網卡的閘道值(一般外網是 192.168.1.1)
表示該網卡的通訊要從這裡出去,另一張則設定內網的閘道設定
或者是取消選項中的自動劑量設定,填入隨意設定,兩張之間的大小影響誰內誰外




2014年5月6日 星期二

notepad ++ 常用快捷鍵

只列常用的出來
Alt-F4 關閉程式
Ctrl-W 關閉檔案
Ctrl-O 開啟檔案
Ctrl-Tab 切換分頁
Ctrl-H    打開Find / Replace 對話框
Ctrl-D    複製當前行
Ctrl-L    刪除當前行
Ctrl-T    上下行交換
F3    找下一個
Shift-F3    找上一個
Ctrl-Shift-F    在文件中找
Ctrl-F2    觸發書籤
F2    到前一個書籤
Shift-F2    到下一個書籤
F5    打開run對話框
Ctrl-Space    打開CallTip列錶框
Tab (selection of several lines)    加入Space
Shift-Tab (selection of several lines)    移除Space
F11    全屏
Alt-0    折疊全部
Alt-Shift-0    展開全部
Ctrl-U    變為小寫
Ctrl-Shift-U    變為大寫
Ctrl-Q    塊註釋/消除註釋

2014年5月5日 星期一

運用jQuery搜尋Table中特定條件select option 的資料

直接看程式碼

function test2(){
$("tr").each(function(i){
//取得符合條件checkbox的value
//var checkboxValue = $(this).find("input[type='checkbox']").attr('checked');
var checkboxValue = $(this).find("td input[type='checkbox']").attr('checked');

if(checkboxValue==true)
//取得在該tr中符合條件的value
var tmp = $(this).find("select option:selected").attr('value');
//console.log(checkboxValue);
if(tmp!=null){
console.log(tmp);
}
});
}

大意是找出整份文件中 tr 中符合 ("input[type='checkbox']").attr('checked')
條件的 row,找到該row 後,再依照 ("select option:selected"),取得想要的值

2014年3月24日 星期一

GitHub 學習資源 & 常用指令


GitHub ==> 一套線上版本控管服務

以下紀錄一些相關的學習網址:


Git 教學(1) : Git 的基本使用

30 天精通 Git 版本控管 (01):認識 Git 版本控管 - iT邦幫忙::IT知識分享社群

Git

Git - Book

Code School - Try Git

GitHub - GitHub初體驗

GitHub 官網




常用指令:
git init             建立Repository
git init --bare            建立Repository(裸)
git clone [REPO_URL]        建立副本Repository
git clone [repo_url] [dir]    建立副本Repository 到目的 Dir
git add .            目錄下所有檔案加入到 Git 版本控管(儲存庫)
git add -u             可以僅將「更新」或「刪除」的檔案變更寫入到「索引檔」中
git rm                刪除檔案
git mv                更名 搬動檔案
git reset             重設工作目錄的索引狀態
git reset --hard        重設工作目錄的索引狀態,還原到目前的最新版
git reset --hard HEAD        (版本尚未被成功合併)
git reset --hard ORIG_HEAD    重設工作目錄的索引狀態,還原到之前最新的版本(回到合併前)
git reset --soft "HEAD^"    「刪除最近一次的版本紀錄,但留下最後一次版本變更的異動內容」
git reset HEAD@{1} --hard    我們如果想要「取消」最近一次的版本紀錄
git status             查詢當前工作目錄的詳細狀態(儲存庫狀態--目前最新版 與 索引檔 之間的差異)
git status -s             查詢當前工作目錄的詳細狀態(簡)
git checkout master [fileName]    還原檔案
git commit            將新增/修改/刪除 提交 建立版本(版本資訊寫入到「物件儲存區」當中)
git commit -m "說明文字"    將新增/修改/刪除 提交 並附加訊息
git commit --amend        重新提交一次最後一個版本 (即 HEAD 版本)
git help [command]        查詢help文件
git log             查詢版本的歷史紀錄
git log -10             查詢版本的歷史紀錄,只查最新的10筆
git ls-files            列出所有目前已經儲存在「索引檔」中的檔案路徑
git ls-files -u            列出所有目前已經儲存在「索引檔」中的檔案路徑(所有已追蹤或未追蹤的檔案)
git gc                執行重新封(repacking)
git fsck            檢查 Git 維護的檔案系統是否完整
git diff            比對的是「工作目錄」與「索引」之間的差異(執行git add . 之前)
git diff [commitOId]        比對的是「工作目錄」與「指定 commit 物件裡的那個 tree 物件」
git diff HEAD            拿「工作目錄」與「當前分支的最新版」比對。不會去比對「索引」的狀態
git diff [oldCOId] [newCOId]    比較 commit Object,可以跳過「索引」與「工作目錄」的任何變更(比對tree 物件)
git diff --cached        等待被 commit 的檔案,按Q可離開,同 git diff --cached HEAD
git diff --cached [commitOId]    比對「當前的索引狀態」與「指定 commit 物件裡的那個 tree 物件」
git diff --cached HEAD        「當前的索引狀態」與「當前分支的最新版」比對。不會比對「工作目錄」的檔案內容
git diff --staged        等待被 commit 的檔案,按Q可離開,同 git diff --cached
git diff HEAD^ HEAD        比較【最新版的前一版】與【最新版】之間的差異
git push            合併/推送 至遠端 Repository
git push originRef masterRef
git push -u origin master    本地推送到遠端,GitHub 上的遠端儲存庫是完全空的 需下-u 參數
git push --set-upstream        加上 --set-upstream 參數 即可將本地分支註冊進 .git\config 設定檔
git push --all
git push --tags
git remote add [tag] [URL]    添加遠地參照(reftag)
git remote -v             可列出目前註冊在工作目錄裡的遠端儲存庫資訊(列出 origin 資訊)
git remote set-url origin git@github.com:doggy8088/frontend-tools.git    重設 origin 對應 url
git pull            合併/推送 至本地 Repository
git pull origin master
git fetch --all --tags
git fetch            將遠端儲存庫的最新版下載回來,下載的內容包含完整的物件儲存庫(object storage)
git ls-remote
git ls-remote origin         可列出所有遠端分支
git branch            顯示分支結構
git branch -a            顯示出所有「本地分支」與「本地追蹤分支」。
git branch -d [BranchName]    刪除分支
git branch -D [BranchName]    刪除沒有執行過「合併」的分支
git branch -r            顯示出【遠端分支】。
git branch [BranchName]        建立分支,但目前工作目錄維持在自己的分支
git checkout -b [BranchName]    建立分支,並將目前工作目錄切換到新的分支
git checkout [BranchName]    切換分支,工作目錄切換到其他分支
git cat-file -p commitOId    查看 commit 物件的內容
git cat-file -p treeid        查看 tree 物件的內容
git log --pretty=oneline    取得較為精簡的歷史紀錄(含commit Object ID及commit message)
git log --pretty=oneline --abbrev-commit    取得較為精簡的歷史紀錄(含commit Object ID及commit message)
git show            取得版本變更紀錄
git update-ref refName [oId]    自由建立「一般參照」,參照名稱可以指向任意 Git 物件,沒有限定非要commit物件不可。
git update-ref -d refName    刪除參照
git show-ref [ref or object_id]    顯示所有參照
git symbolic-ref        若要建立與刪除「符號參照」
git rev-parse            可以把任意「參考名稱」或「相對名稱」解析出「絕對名稱」ex:git rev-parse HEAD^
git stash            會將所有已列入追蹤(tracked)的檔案建立暫存版 同 git stash save
git stash -u            會包括所有已追蹤或未追蹤的檔案,全部都建立成暫存版
git stash pop            將 stash 暫存版本合併回主要版本
git stash list             列出目前所有的 stash 清單
git stash save -u     自訂暫存版的註解
git stash apply            將 stash 暫存版本合併回主要版本,但不清除stash資訊
git stash apply "stash@{1}"    取回「特定一個暫存版」
git stash drop "stash@{1}"     將特定暫存版刪除。
git stash clear            將全部暫存版刪除
git config --list        列出目前設定在 Git for Windows 工具下的所有選項
git config --list --system    篩選出關於系統層級的選項設定
git config --list --global    篩選出關於使用者層級的選項設定
git config --list --local    篩選出關於儲存區層級的選項設定
git config [config_section.config_name]                取得特定選項值 ex:git config user.name
git config --unset --system [config_section.config_name]    刪除特定選項設定
git config --edit --system        直接編輯設定檔
git config --global core.autocrlf true    自動辨識 CRLF 字元
git config --global help.autocorrec    自動訂正打錯的參數
git config --system color.ui auto    啟用訊息顏色
git config --local commit.template "G:\git-commit-template.txt"    自訂 commit 訊息範本(儲存庫層級)
git tag                列出所有標籤:
git tag [tagname]        建立輕量標籤
git tag [tagname] -d        刪除輕量標籤
git cat-file -t [tagname]    查看「輕量標籤」的內容
git tag [tagname] -a        建立標示標籤,需加入 -m
git reflog            印出所有「歷史紀錄」的版本變化
git reflog delete ref@{specifier}    刪除之前紀錄的某些紀錄
git merge [branchName]            執行合併
git merge [branchName] --no-ff        執行合併 停用 Git 的快轉機制
git merge origin/master
git config gc.reflogExpire        修改reflog預設的過期期限
    ex:git config --global gc.reflogExpire "never"
git config gc.reflogExpireUnreachable    修改預設reflog的過期期限
    ex:git config --global gc.reflogExpireUnreachable "7 days"
git reflog expire --expire=now --all    立即清除所有歷史紀錄
git revert [commit object id]        還原某一個版本的紀錄(某個版本的變更,透過「相反」的步驟把變更給還原)
git revert -n        使用 git revert 命令套用變更,但不執行 commit 動作
git revert --continue    代表你已經完成所有操作,並且建立一個新版本,就跟執行 git commit 一樣。
git revert --abort    代表你準備放棄這次復原的動作,執行這個命令會讓所有變更狀態還原,也就是刪除的檔案又會被加回來。
git revert [commit_id] -s    在訊息內容加上目前使用者的簽署名稱
git revert [commit_id] -e    在完成版本之前顯示編輯訊息的視窗
git cherry-pick [commit_id]    「手動挑出」你想套用的變更
git cherry-pick [commit_id] -e    「手動挑出」你想套用的變更 建立版本前先編輯訊息
git cherry-pick [commit_id] -n    「手動挑出」你想套用的變更 不建立版本 僅套用變更
git cherry-pick    [commit_id] -x    「手動挑出」你想套用的變更 並加註由哪個分支過來的訊息
git log [branchName]    查詢分支的紀錄
git rebase -i [commit_id]
git rebase ---continue
git config --global push.default simple  
    Git 的預設行為將會在 Git 2.0 之後發生改變,建議你透過設定 push.default 選項的方式明確指定 push 的方法
git shortlog -sne        取得版本庫中所有人的 commit 次數統,-n 參數還可以按照 commit 數量進行降冪排序
git shortlog            顯示出每個人最近 commit 過的歷史紀錄
git clean -n            從工作目錄清除不在版本庫中的檔案
git push origin :branchName    刪除遠端分支 同 git push origin --delete branchName
git blame            找出改壞程式的兇手
git blame [filename]
git blame -L [開始行數],[結束行數] [filename]

PS.
「目錄資訊」/「檔案內容」,即為 tree 物件與 blob 物件
blob 物件就是把原本的「檔案內容」當成 blob 檔案的內容 (blob 物件其實就是一個實體檔案)
--blob 物件就是只有內容的檔案,檔名是由內容產生
tree 物件,則是用來儲存特定資料夾下包含哪些檔案,以及該檔案對應的 blob 物件的檔名為何。
在 tree 物件中,除了可以包含 blob 物件的檔名與相關資訊,還可以包含其他的 tree 物件。所以
--tree 物件其實就是「資料夾」的代名詞
參照:
30 天精通 Git 版本控管 (05):了解儲存庫、工作目錄、物件與索引之間的關係
http://ithelp.ithome.com.tw/question/10133653

常見的 git 屬性範例:
0100000000000000 (040000): Directory
1000000110100100 (100644): Regular non-executable file
1000000110110100 (100664): Regular non-executable group-writeable file
1000000111101101 (100755): Regular executable file
1010000000000000 (120000): Symbolic link
1110000000000000 (160000): Gitlink

git diff 說明
git diff            => 工作目錄 vs 索引
git diff HEAD          => 工作目錄 vs HEAD
git diff --cached HEAD      => 索引 vs HEAD
git diff --cached         => 索引 vs HEAD
git diff HEAD^ HEAD       => HEAD^ vs HEAD

Git 參照名稱又有區分「一般參照」與「符號參照」,兩者的用途一模一樣,只在於內
容不太一樣。「符號參照」會指向另一個「一般參照」,而「一般參照」則是指向一個
 Git 物件的「絕對名稱」。

我們手邊改到一半的檔案,可能會有以下狀態:
* 新增檔案 (尚未列入追蹤的檔案) (untracked files)
* 新增檔案 (已經加入索引的檔案) (tracked/staged files)
* 修改檔案 (尚未加入索引的檔案) (tracked/unstaged files)
* 修改檔案 (已經加入索引的檔案) (tracked/staged files)
* 刪除檔案 (尚未加入索引的檔案) (tracked/unstaged files)
* 刪除檔案 (已經加入索引的檔案) (tracked/staged files)

救回誤刪的分支
1. 先利用 git reflog 找出該分支(最後一個版本的 object id (也就是 SHA1 格式的物件絕對名稱)
2. 執行 git branch feature 即可

在 Git 裡面,是透過 .gitignore 檔案來進行定義「忽略清單」,主要的目的是排除一些
不需要加入版控的檔案,列在裡面的檔名或路徑 (可包含萬用字元),都不會出現在
git status 的結果中,自然也不會在執行 git add 的時候被加入。不過,這僅限於
Untracked file 而已,那些已經列入版控的檔案 (Staged file),不受 .gitignore
檔案控制。

使用git rebase 如果你的分支是從遠端儲存庫下載回來的,請千萬不要透過 Rebase 修
改版本歷史紀錄,否則你將會無法將修改過後的版本送到遠端儲存庫!

Rebase 能做的事
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插入一個 commit
4. 編輯一個 commit
5. 拆解一個 commit
6. 壓縮一個 commit,且保留訊息紀錄
7. 壓縮一個 commit,但丟棄版本紀錄
8. 刪除一個 commit

將遠端儲存庫的 master 分支取回,並合併到本地儲存庫的 master 分支,有兩種方法:
1. 使用 git pull origin master 指令
    git pull 指令幫我們一次做到 git fetch 與 git merge origin/master 這個動作
2. 使用 git fetch 指令後再執行 git merge origin/master 合併動作

轉換Subversion to GIT
http://ithelp.ithome.com.tw/question/10140481

第一次使用 GitHub for Windows 工具的時候,如果你有照著步驟登入與設定,這套工具會
預設幫你產生一對金鑰,然後該工具會自動上傳到 GitHub 的 SSH Key 專區,讓你日後不用
再輸入帳號密碼,就能順利的操作 GitHub 上的遠端儲存庫。

這一對金鑰,預設就放在 %USERPROFILE%\.ssh 資料夾下,如果你的 Windows 登入使用者名
稱為 Will 的話,這個路徑就位於 C:\Users\Will\.ssh 目錄下。這對金鑰的檔名分別是
 github_rsa (私鑰) 與 github_rsa.pub (公鑰)
Related Posts Plugin for WordPress, Blogger...