[心得] github每月一語分享
好讀版
http://jintin.github.io/blog/2016/02/28/monthly-github/
當工程師好幾年了,但一直都只專注寫Java,雖然對Java沒什麼特別不滿意的地方,
但偶而也想多試試其它語言來增加自己的視野,於是大概在半年前開始給自己一個挑
戰,每個月用一個不熟的語言寫個小工具分享到github上,很快地累積了好幾個小專
案,分享自己的心得也順便介紹這些工具給大家,希望對大家有所幫助。
jgit (Ruby)
git是個很高效好用的版本控制工具,但如果同時有多個專案使用上有點不方便。jgit
就是想要解決這個情境,對git做擴展,解決在任意目錄下查詢任意一個或多個專案
的git狀態,簡單說就是把git command分配到很多個目錄下執行。
比如說 jgit status 可以取得目前群組的所有專案之 git status 的結果,如果同
時要開發或維護多個專案的時候很方便。
範例如下:
---
$ jgit ls
A: /Users/Jintin/Downloads/sample/sampleA
B: /Users/Jintin/Desktop/sample/sampleB
$ jgit status
- Task:A
On branch master
nothing to commit, working directory clean
- Task:B
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: newFile.json
no changes added to commit (use "git add" and/or "git commit -a")
---
心得: 寫ruby一開始的時候蠻不習慣的,少了型別、不用compile、語法也很不習慣。
但慢慢覺得動態語言在小型專案下真的可以很方便解決很多問題,gem 的設計很棒,
不用compile習慣後開發速度也提升不少。
更多資訊可以參考 https://github.com/Jintin/jgit
transai (JavaScript)
transai 是處理Android, iOS多國語言的工具,可以在Terminal把這二個平台的語言檔
解析出來合併為csv格式,等翻譯完了之後再轉回各自的資料夾中。
範例如下:
---
$ transai load -a ~/android -i ~/ios --from en --to de -c ~/strings.csv
$ transai save -a ~/android -i ~/ios --from en --to de -c ~/strings.csv
---
心得: JavaScript跟Ruby一樣是動態但語法平易近人多了,而且 npm 、 node 的設計
又更完善方便,是很好入門的一款語言,在各領域也都有很好的發揮機會,雖然不想承
認但的確是最有機會統一程式語言的語言。
更多資訊可以參考 https://github.com/Jintin/transai
andle (Python)
Android Studio問世之後,大家一定很喜歡可以把dependency設定在build.gradle的特
性,但相對的這個檔案的管理就變成一門學問了,你知道哪些library有更新的版本嗎
?就算知道如果你有十個專案你要一個一個改嗎?
andle 就是幫你解決dependency version的工具,可以直接在Terminal更新所有
library為最新版本,如果你比較嚴謹也可以加上 -d 只會列出新版版號不會修改。
範例如下:
---
$ andle update -d -g -r
check ./build.gradle
com.android.tools.build:gradle: 2.0.0-beta4 -> 2.0.0-beta6
check ./A/build.gradle
com.android.support:cardview-v7: 23.1.1 -> 23.2.0
check ./B/build.gradle
ok
check ./C/build.gradle
com.android.support:support-v4: 23.1.1 -> 23.2.0
com.android.support:design: 23.1.1 -> 23.2.0
check ./gradle/wrapper/gradle-wrapper.properties
ok
---
心得: 又是一門動態語言,Terminal幾乎都是動態語言的天下,語法上最大不習慣就是
用縮排取代括弧,其他結構上跟Ruby有點類似,有點痛苦是Python2.X跟Python3.X有大
改版,所以要二種都測試過比較保險,這種新版本一直出來,舊的版本又不能放棄的感
覺跟Android實在是太契合了。
更多資訊可以參考 https://github.com/Jintin/andle
Swimat (Objective-C)
Swift是我除了Java以外很喜歡的一個語言,也是我接觸iOS開發的第一個語言。但Xcode
對它的支援其實還蠻不足的,除了很慢連個基本的自動排版都沒有。
Swimat就是一個簡單的Swift排版工具,可以安裝在Xcode裡,支援Tab或Space縮排、可
以存檔自動排版。
心得: 原本排版Swift的程式,應該要用Swift寫,但因為要給自己挑戰選了不熟的
Objective-C,雖然沒什麼問題但寫起來真的很贅,無法支援 command line 也是一大敗筆
,之後要找時間換回Swift也是一個大工程。
更多資訊可以參考 https://github.com/Jintin/Swimat
DroidLane (Groovy)
寫完了Xcode的plugin後,就開始想是不是也可以幫Android這邊也寫一個。因為自己寫
太多小app,上架其實很麻煩所以就決定寫個自動上傳的工具。安裝後就不用打開瀏覽器
可以在Android Studio裡直接上傳apk。
心得: Groovy其實就是Java的加強版,帶來一些好處也帶來一些缺點,我覺得最大缺點
就是速度慢還要多包一些Groovy的library。
更多資訊可以參考 https://github.com/Jintin/DroidLane
aliasme (Shell)
身為工程師就是要用 command line 啊,但其實大家都不喜歡打字,切換目錄的時候如
果太遠其實很不方便,aliasme就是要解決這樣的需求,讓大家可以很方便的切換目錄。
範例如下:
---
$ al add A ~/dirA/subA/A
$ al add B ~/dirB/subB/B
$ al A
$ pwd
/Users/Jintin/dirA/subA/A
$ al B
$ pwd
/Users/Jintin/dirB/subB/B
---
心得: 跟寫Object-C一樣會感覺到時代的眼淚,如果可以用高階語言寫的就盡量用高階
語言寫吧…
更多資訊可以參考 https://github.com/Jintin/aliasme
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.35.214
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1456751055.A.553.html
推
02/29 21:23, , 1F
02/29 21:23, 1F
推
02/29 21:48, , 2F
02/29 21:48, 2F
推
02/29 22:12, , 3F
02/29 22:12, 3F
推
02/29 22:49, , 4F
02/29 22:49, 4F
推
02/29 22:51, , 5F
02/29 22:51, 5F
推
02/29 23:24, , 6F
02/29 23:24, 6F
推
02/29 23:53, , 7F
02/29 23:53, 7F
推
03/01 01:59, , 8F
03/01 01:59, 8F
推
03/01 02:31, , 9F
03/01 02:31, 9F
推
03/01 03:50, , 10F
03/01 03:50, 10F
→
03/01 08:35, , 11F
03/01 08:35, 11F
→
03/01 08:36, , 12F
03/01 08:36, 12F
→
03/01 12:27, , 13F
03/01 12:27, 13F
推
03/01 12:32, , 14F
03/01 12:32, 14F
推
03/01 13:03, , 15F
03/01 13:03, 15F
→
03/01 21:17, , 16F
03/01 21:17, 16F
※ 編輯: LinJohn (111.249.35.214), 03/01/2016 21:17:51
→
03/01 21:18, , 17F
03/01 21:18, 17F
→
03/01 21:19, , 18F
03/01 21:19, 18F
→
03/01 21:20, , 19F
03/01 21:20, 19F
→
03/01 21:22, , 20F
03/01 21:22, 20F
→
03/01 21:24, , 21F
03/01 21:24, 21F
→
03/01 21:26, , 22F
03/01 21:26, 22F
→
03/01 21:28, , 23F
03/01 21:28, 23F
推
03/01 23:28, , 24F
03/01 23:28, 24F
→
03/02 08:33, , 25F
03/02 08:33, 25F
推
03/02 09:21, , 26F
03/02 09:21, 26F
推
03/02 13:03, , 27F
03/02 13:03, 27F
→
03/02 20:24, , 28F
03/02 20:24, 28F
→
03/02 22:26, , 29F
03/02 22:26, 29F
→
03/03 11:06, , 30F
03/03 11:06, 30F
→
03/03 11:06, , 31F
03/03 11:06, 31F
推
03/03 12:51, , 32F
03/03 12:51, 32F
→
03/03 20:35, , 33F
03/03 20:35, 33F