2018年1月28日 星期日

[小技巧] Git指令筆記

git status
查看目前檔案與本地端索引差異狀態。

git add
將目前的變更加入本地端索引

git commit
將目前的本地端索引加入到本地端repository

git clone  url
將遠端repository 複制到本地

git push
將本地端repository內容推上remote repository

git reset HEAD 檔案名稱
單一檔案由索引中取消(不紀錄變更)

git checkout 檔案名稱
恢復單一檔案到最新commit狀態

git reset --hard
還原工作目錄與索引到最後一次commit狀態。

git branch
查詢目前所有的分支

git checkout 前四碼(至少要KEY ID前四碼, 全打也可以)
將Head指到某一個Commit

git checkout master
回到master分支中最新commit

git branch feature1
新增一個分支叫做feature1

git cheackout feature1
將Head切到feature1分支(master將不會受到任何影響)

git merge feature1
將feature1變更合拼到master

若合併有衝突會有如下提示,需要手動處理後git commit 再git merge才會成功
feature1 <<<<<<

-------------------------------------------------
git tag 查詢所有標籤

git tag v1
加入一個名為v1的標籤

git checkout v1
切換Head到v1標籤

git tag -am "v2 add video"  v2
加入一個v2標籤,並加入v2的詳細備註

git tag -n
看tag(包含詳細備註)

git tag -d  v1
刪除v1標籤
------------------------------------------------------
git stash
暫時儲存當前目錄(用git status會發現變更似乎不見了,其實被暫存起來)

git stash list
查詢暫存紀錄

git stash pop 
叫回暫存

git stash clear
清除暫存

-------------------------------------------
git push [預設遠端主機名稱] [branch]

git push origin master

git push origin feature1

git remote
查詢遠端數據庫

git remote rename origin github
把遠端名稱origin 改成github

git pull
把遠端repository最新的內容同步到本地repository

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











2018年1月14日 星期日

[API] 透過OpenWeatherMap取得天氣資訊

1.首先你要先申請一個帳號:
 1.1 到以下網址,點選Sign up
https://openweathermap.org/

 1.2 輸入使用者名稱及E-mail ,按下Create Account


1.3 選一下你的用途

2.註冊你要的API KEY。

2.1這裡以當下的天氣做示範,也可以選擇取得數日的紀錄。


2.2 先用個免費的來用一下,但一分鐘不能呼叫超過60次。


2.3 登入以取得API KEY























2.4 記下API KEY



3.切換到API文件。
https://openweathermap.org/current

可以透過City Name或是City ID來查詢,也可以透過經緯度及ZIP Code





如果要查City ID可以到這裡面下載city.list.json.gz

http://bulk.openweathermap.org/sample/



內容為Json格式,紀錄City ID及名稱還有經緯度及國家代碼


4.發HTTP Request取得資料。

4.1透過City Name 來查一下高雄的天氣

https://api.openweathermap.org/data/2.5/weather?q=Kaohsiung&appid=your API KEY


感覺那裡不對勁,原來是溫度怪怪的,要加一個參數units=metric 才會轉換成我們習慣的溫度單位。









我們加上參數後,API會變成以下這樣子,溫度就會變成習慣的單位。

https://api.openweathermap.org/data/2.5/weather?q=Kaohsiung&units=metric&appid=your api key



4.2 用City ID查詢高雄天氣
https://api.openweathermap.org/data/2.5/weather?id=7280289&units=metric&appid=your api key

跟用City Name不同的地方只要把q=Kaohsiung 換成id= 7280289



4.3 取得天氣Icon
 仔細看了一下回應內容中的weather ,除了描述天氣外,還有一個icon


官方有提供取得Icon的方式 ,以高雄天氣的Icon為02n,則URL如下:
http://openweathermap.org/img/w/02n.png
會取得一個Icon






介紹就到這裡,之後再貼實際應用的例子。


參考文件:

https://openweathermap.org/current

2018年1月9日 星期二

[Android] 正確關閉Socket

過去總是以為執行到了Socket.Close()時,Socket就結束了,沒有特別去注意,

直到遇到連接的裝置是Wi-Fi Module時,有TCP連線數限制時,發現卡死了,

唯有重開手機才有用,研究了很久,發現是以下幾個原因造成的。

1.因為動作需要頻繁重新建立Socket。

2.Android底層並不會在Socket.Close()時就立即關閉Socket,會等到資料傳輸完畢。


若要強制Socket立即關閉,在關閉Socket前先shutdown輸出入流。


socket.shutdownInput();  
socket.shutdownOutput();  

注意,這二行必須在inputstream.close()及outputstream.close()之前。




參考資料:

如何正确关掉socket?直接socket.close( )是否有风险?