作者LinJohn (猜心)
看板Soft_Job
标题[心得] github每月一语分享
时间Mon Feb 29 21:04:03 2016
好读版
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://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1456751055.A.553.html
1F:推 dojay: 推 02/29 21:23
2F:推 rubyk: 好像有点猛 推推 02/29 21:48
3F:推 ntddt: 推 这样就对惹...XD 02/29 22:12
4F:推 dali17dali17: 推了再上 02/29 22:49
5F:推 singoboy: 谢谢分享 02/29 22:51
6F:推 ah7675: 第一个google有写一个python tool叫repo 02/29 23:24
7F:推 abc0922001: 推,第一个感觉很有趣 02/29 23:53
8F:推 MoonAndEye: 推 03/01 01:59
9F:推 johnny94: 推个耐心! 03/01 02:31
10F:推 Ladizman: 猛猛的 感谢分享 03/01 03:50
11F:→ LinJohn: repo好像蛮像的 不知道可不可以用group的方式 03/01 08:35
12F:→ LinJohn: 还是一定要写 [<PROJECT0> <PROJECT1> <PROJECTN>] 03/01 08:36
13F:→ Baternest: repo有manifest file在管控project 03/01 12:27
14F:推 chchwy: 抓个小错误 那个语言叫做Objective-C...不是Object-C 03/01 12:32
15F:推 michael1436: 最後一个似乎没有autojump 好用 03/01 13:03
16F:→ LinJohn: 谢谢大家的支持与建议 如果有方向可以改得更好一点 03/01 21:17
※ 编辑: LinJohn (111.249.35.214), 03/01/2016 21:17:51
17F:→ LinJohn: aliasme未来也可以朝把整串command记起来的方向前进 03/01 21:18
18F:→ LinJohn: 不知道大家觉得这样有比较好吗? 03/01 21:19
19F:→ LinJohn: Objective-C已改 chchwy感谢指正 03/01 21:20
20F:→ LinJohn: 如果大家有兴趣一起改得更好也可以来信讨论 03/01 21:22
21F:→ LinJohn: 目前想到的有transai web介面 swimat改swift 03/01 21:24
22F:→ LinJohn: andle custom repository, jgit 支援tab 03/01 21:26
23F:→ LinJohn: DroidLane可以把截图的功能也补上 03/01 21:28
24F:推 kewang: 推推!!! 03/01 23:28
25F:→ LinJohn: 每篇文章都会让楼上抓到 真是太强了 03/02 08:33
26F:推 tear0216: 推 03/02 09:21
27F:推 eric0609: push 03/02 13:03
28F:→ ah7675: 整串command记起来不就变ubuntu的history XD? 03/02 20:24
29F:→ LinJohn: 我的意思是可以把一行或几行指令转成'al XXX' 这样 03/02 22:26
30F:→ ah7675: ubuntu history 只要用"!${index}"就可以执行曾经敲过的co 03/03 11:06
31F:→ ah7675: mmand 03/03 11:06
32F:推 slrune1049: 推 03/03 12:51
33F:→ LinJohn: 我的意思不是叫出历史指令 而是想要取代复杂指令 03/03 20:35