看板 Soft_Job 關於我們 聯絡資訊
好讀版 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
dojay: 推 02/29 21:23
rubyk: 好像有點猛 推推 02/29 21:48
ntddt: 推 這樣就對惹...XD 02/29 22:12
dali17dali17: 推了再上 02/29 22:49
singoboy: 謝謝分享 02/29 22:51
ah7675: 第一個google有寫一個python tool叫repo 02/29 23:24
abc0922001: 推,第一個感覺很有趣 02/29 23:53
MoonAndEye: 推 03/01 01:59
johnny94: 推個耐心! 03/01 02:31
Ladizman: 猛猛的 感謝分享 03/01 03:50
LinJohn: repo好像蠻像的 不知道可不可以用group的方式 03/01 08:35
LinJohn: 還是一定要寫 [<PROJECT0> <PROJECT1> <PROJECTN>] 03/01 08:36
Baternest: repo有manifest file在管控project 03/01 12:27
chchwy: 抓個小錯誤 那個語言叫做Objective-C...不是Object-C 03/01 12:32
michael1436: 最後一個似乎沒有autojump 好用 03/01 13:03
LinJohn: 謝謝大家的支持與建議 如果有方向可以改得更好一點 03/01 21:17
※ 編輯: LinJohn (111.249.35.214), 03/01/2016 21:17:51
LinJohn: aliasme未來也可以朝把整串command記起來的方向前進 03/01 21:18
LinJohn: 不知道大家覺得這樣有比較好嗎? 03/01 21:19
LinJohn: Objective-C已改 chchwy感謝指正 03/01 21:20
LinJohn: 如果大家有興趣一起改得更好也可以來信討論 03/01 21:22
LinJohn: 目前想到的有transai web介面 swimat改swift 03/01 21:24
LinJohn: andle custom repository, jgit 支援tab 03/01 21:26
LinJohn: DroidLane可以把截圖的功能也補上 03/01 21:28
kewang: 推推!!! 03/01 23:28
LinJohn: 每篇文章都會讓樓上抓到 真是太強了 03/02 08:33
tear0216: 推 03/02 09:21
eric0609: push 03/02 13:03
ah7675: 整串command記起來不就變ubuntu的history XD? 03/02 20:24
LinJohn: 我的意思是可以把一行或幾行指令轉成'al XXX' 這樣 03/02 22:26
ah7675: ubuntu history 只要用"!${index}"就可以執行曾經敲過的co 03/03 11:06
ah7675: mmand 03/03 11:06
slrune1049: 推 03/03 12:51
LinJohn: 我的意思不是叫出歷史指令 而是想要取代複雜指令 03/03 20:35