SlideShare a Scribd company logo
ADF 2015/03/28
Shell
Script
Who?
!
松田
!
!
松田 淳平 @fat_daruuuuma, jmatsu
東工大CS専攻 新M2
キッチンドリンカー、Java/kotlin、準シェル芸人、リポジトリ解析
皆さん
Application Developer Festival 2015 LT
使いますよね
デブは使います
※研究対象
でもコマンドとか
オプションとか
フローとか
記憶してます?
Gitの
コマンド数
知ってます?
git help
Application Developer Festival 2015 LT
23個
・・・ん?
!
有効なコマンドは
git help -a・・・?
Application Developer Festival 2015 LT
見えない
数えよう
git help -a ¦
grep -n -e "add " -e "write-" ¦ awk
'match($1, /^[0-9]+/) {print
substr($1, RSTART, RLENGTH)}' ¦
tr "n" " " ¦
awk '{print 2 * ( $2 - $1 ) - 1}'
=
151
151個使った
ことあります?
てか
覚えられない
組み合わせ?
もぅマヂむり
( っ◞‸◟c)
じゃあ
楽しよう
Git
&
Shell script
夢の
マリアージュ
✌( ω ✌ )三( ✌ ω )✌
例えば
.gitignore
一々だるい
そこで
gibo
言語別.gitignoreをFetch
さらに
peco
interactive grep
組み合わせ
gibo -l ¦ peco ̶prompt Select
lang. ¦ xargs gibo >> .gitignore;
!
git igにaliasしよう
LICENSEも
取ってこよう
Application Developer Festival 2015 LT
Github
license API
さらに
jq
cliでjsonパースできるコマンド
curl -H "Accept: application/vnd.github.drax-
preview+json" -X GET https://api.github.com/
licenses ¦ jq ".[].url" ¦ peco --prompt "Select
license: > " ¦ sed -e "s/"//g" ¦ xargs -J % curl -
H "Accept: application/vnd.github.drax-
preview+json" -X GET % ¦ jq ".body" >
LICENSE
git licenseで動くように。
さらに
Initial commit
も楽にしよう
普通の場合
git init
git remote add origin $repo
#make .gitignore
#make LICENSE
git add .gitignore LICENSE
git commit -m This is initial commit.
面倒くさい
git ig; git license; git add .gitignore LICENSE;
git commit -m "This is initial commit";git remote
add origin $repository_url
!
でgit setup $repository_urlにalias
いや待てよ
Repo. URL
めんどくない?
これも取れば
よくない?
Application Developer Festival 2015 LT
Github API
my_name= github username ; curl -# -X GET
https://api.github.com/users/${my_name}/
repos¦jq ".[].ssh_url"¦peco --prompt "Select
repository. > " ¦ git remote add origin
つまり
git init; gibo -l ¦ peco --prompt "Select lang." ¦ xargs
gibo >> .gitignore; curl -# -H "Accept: application/
vnd.github.drax-preview+json" -X GET https://
api.github.com/licenses ¦ jq ".[].url" ¦ peco --prompt
"Select license: > " ¦ sed -e "s/"//g" ¦ xargs -J % curl
-# -H "Accept: application/vnd.github.drax-preview
+json" -X GET % ¦ jq ".body" > LICENSE; git
add .gitignore LICENSE; git commit -m "This is initial
commit"; my_name="jmatsu"; curl -# -X GET
"https://api.github.com/users/${my_name}/repos"¦
jq ".[].ssh_url"¦peco --prompt "Select repository. > " ¦
xargs -J % git remote add origin %
これで楽ちん
次は
就活生の
皆さんへ
就活といえば
自己PR
コミット数
自慢
したくない?
commit
ランキング
見るのは簡単
git shortlog -s 
̶after=yyyy/mm/dd 
̶before=yyyy/mm/dd 
¦ sort
でも
1位に
なりたいよね?
無理?
何をしても
なりたいよね?
2位じゃダメ
なんですか?
ダメです
なりましょう
filter-branch
̶commit-filter
&
準シェル芸
my_name=`git config --get user.name`; my_email=`git config --get user.email`; 
start=0; while : ; do 
top=`git shortlog -s ¦ sort -r ¦ head -1 ¦ awk '{ $1=""; print $0}'`; 
[[ "$top" = "$my_name" ]] && break; git shortlog -s ¦ sort -r ¦ 
awk 'NR==1 ¦¦ /'"${my_name}"'/{print $1 " " $2}' ¦ tr "n" " " ¦ 
awk '{ print $1 - $3 " " $2 }' ¦ 
if read num_author ; then num=`echo $num_author ¦ awk '{print $1}'`; 
author_frg=`echo $num_author ¦ awk '{print $2}'`; 
count=`expr ( "$num" + 1 ) / 2 + "$start"`; range="HEAD ${count}..HEAD"; 
if [ "$start" != "0" ]; then range="${range} ${start}"; fi; 
git filter-branch -f --commit-filter 
'if [[ "$GIT_AUTHOR_NAME" = ^'"${author_frg}"' ]]; then 
GIT_AUTHOR_NAME="'"${my_name}"'"; GIT_AUTHOR_EMAIL="'"${my_email}"'"; 
git commit-tree "$@"; else git commit-tree "$@"; fi' 
"${range}"; else break; done
(DEMO)
やったね
ただし
※自己責任で
他にもバグ探索やら
色々できるのでぜひ
Thx 4
listening.

More Related Content

PDF
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
parrotstudio
 
PDF
入門 超絶技巧プログラミング !
Nobutada Matsubara
 
PDF
QtとC++でGUIプログラミング
seanchas_t
 
PPTX
USP 友の会 LT 資料 20130413
博文 斉藤
 
PDF
Groovy Shell Scripting 2015
Uehara Junji
 
PDF
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
 
PDF
いい加減に作ったAndroidアプリを放流したった
boiledorange73
 
PDF
これからのJavaScriptの話
Shogo Sensui
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
parrotstudio
 
入門 超絶技巧プログラミング !
Nobutada Matsubara
 
QtとC++でGUIプログラミング
seanchas_t
 
USP 友の会 LT 資料 20130413
博文 斉藤
 
Groovy Shell Scripting 2015
Uehara Junji
 
Groovy Bootcamp 2015 by JGGUG
Uehara Junji
 
いい加減に作ったAndroidアプリを放流したった
boiledorange73
 
これからのJavaScriptの話
Shogo Sensui
 

What's hot (20)

PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
 
PDF
Swiftのアプリ開発でハマったこと
yohei sugigami
 
PDF
覚醒!JavaScript
Haraguchi Go
 
PDF
ClojureでElectronアプリを作ろう
Kazuhiro Hara
 
PDF
Pythonで電卓アプリ(デスクトップ)を作成する
Jun Okazaki
 
PDF
大規模Node.jsを支える ロードバランスとオートスケールの独自実装
kidach1
 
PDF
Programming camp 2008, Codereading
Hiro Yoshioka
 
PDF
Groovyの紹介20130323
Yasuharu Hayami
 
PDF
Pythonで画面付きのアプリを作成する
Jun Okazaki
 
PDF
入門ClojureScript
sohta
 
PDF
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
 
PDF
Redmineを快適に使うためのおすすめ初期設定
Go Maeda
 
PDF
ドキュメントを直し続ける話 #kbkz_tech
Michihito Shigemura
 
PDF
Ginとbindataで作るシングルバイナリWebApp
Akihiko Horiuchi
 
PDF
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
 
PDF
映画にでてくるハッカーになりたい - YAPC Asia 2010
Hiroh Satoh
 
PDF
Gitとちょっと仲良くなるために覚えたことまとめ
Natsumi Kashiwa
 
PPT
20130924 Picomon CRH勉強会
Yukihiro Kitazawa
 
PDF
Bpstudy #37 djagno tips
bpstudy
 
PDF
ておくれないgit
rkmathi
 
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
 
Swiftのアプリ開発でハマったこと
yohei sugigami
 
覚醒!JavaScript
Haraguchi Go
 
ClojureでElectronアプリを作ろう
Kazuhiro Hara
 
Pythonで電卓アプリ(デスクトップ)を作成する
Jun Okazaki
 
大規模Node.jsを支える ロードバランスとオートスケールの独自実装
kidach1
 
Programming camp 2008, Codereading
Hiro Yoshioka
 
Groovyの紹介20130323
Yasuharu Hayami
 
Pythonで画面付きのアプリを作成する
Jun Okazaki
 
入門ClojureScript
sohta
 
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
 
Redmineを快適に使うためのおすすめ初期設定
Go Maeda
 
ドキュメントを直し続ける話 #kbkz_tech
Michihito Shigemura
 
Ginとbindataで作るシングルバイナリWebApp
Akihiko Horiuchi
 
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
 
映画にでてくるハッカーになりたい - YAPC Asia 2010
Hiroh Satoh
 
Gitとちょっと仲良くなるために覚えたことまとめ
Natsumi Kashiwa
 
20130924 Picomon CRH勉強会
Yukihiro Kitazawa
 
Bpstudy #37 djagno tips
bpstudy
 
ておくれないgit
rkmathi
 
Ad

Similar to Application Developer Festival 2015 LT (20)

PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
 
PDF
About GStreamer 1.0 application development for beginners
Shota TAMURA
 
ODP
Chromeが落ちる問題を 追いかけていたら libgcryptのbugに出会った
Mitsutoshi Nakano
 
KEY
Gitを使ってみませんか
Atsuhiro Takiguchi
 
PDF
Hacking Ruby with Python
Taisuke Yamada
 
PDF
Rのデータ構造とメモリ管理
Takeshi Arabiki
 
KEY
Inside frogc in Dart
Goro Fuji
 
PDF
Node予備校 vol.1 名古屋
Mori Shingo
 
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
 
PDF
20130819 jjugnslt
Shinya Takebayashi
 
PDF
Flutterを体験してみませんか
cch-robo
 
PDF
Gitの使い方あれこれ
よしだ あつし
 
PDF
emc++ chapter32
Tatsuki SHIMIZU
 
PDF
Okinawa.rb 第2回勉強会
Naoki Takaesu
 
PDF
Metahub for github
Suguru Oho
 
PDF
Dive into RTS - another side
Kiwamu Okabe
 
PDF
JavaScript経験者のためのGo言語入門
Shohei Arai
 
PDF
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
 
PDF
とある受託ベンダの開発環境
Tomoki Hasegawa
 
PPT
Dsl&Builder
Uehara Junji
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
 
About GStreamer 1.0 application development for beginners
Shota TAMURA
 
Chromeが落ちる問題を 追いかけていたら libgcryptのbugに出会った
Mitsutoshi Nakano
 
Gitを使ってみませんか
Atsuhiro Takiguchi
 
Hacking Ruby with Python
Taisuke Yamada
 
Rのデータ構造とメモリ管理
Takeshi Arabiki
 
Inside frogc in Dart
Goro Fuji
 
Node予備校 vol.1 名古屋
Mori Shingo
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
 
20130819 jjugnslt
Shinya Takebayashi
 
Flutterを体験してみませんか
cch-robo
 
Gitの使い方あれこれ
よしだ あつし
 
emc++ chapter32
Tatsuki SHIMIZU
 
Okinawa.rb 第2回勉強会
Naoki Takaesu
 
Metahub for github
Suguru Oho
 
Dive into RTS - another side
Kiwamu Okabe
 
JavaScript経験者のためのGo言語入門
Shohei Arai
 
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
 
とある受託ベンダの開発環境
Tomoki Hasegawa
 
Dsl&Builder
Uehara Junji
 
Ad

More from Junpei Matsuda (7)

PPTX
れれれのGitおぢさん - git rerere #w8lt
Junpei Matsuda
 
PDF
Spring + Gradle + Kotlin W8LT#5
Junpei Matsuda
 
PPTX
Try to Write A Better Commit Message
Junpei Matsuda
 
PDF
Bashで競技プログラミング #w8lt #w8lt4
Junpei Matsuda
 
PDF
シェルスクリプトでQOLを上げる話
Junpei Matsuda
 
PDF
Kotlinで快適Android開発 #W8lt
Junpei Matsuda
 
PDF
PRML2.3.8~2.5 Slides in charge
Junpei Matsuda
 
れれれのGitおぢさん - git rerere #w8lt
Junpei Matsuda
 
Spring + Gradle + Kotlin W8LT#5
Junpei Matsuda
 
Try to Write A Better Commit Message
Junpei Matsuda
 
Bashで競技プログラミング #w8lt #w8lt4
Junpei Matsuda
 
シェルスクリプトでQOLを上げる話
Junpei Matsuda
 
Kotlinで快適Android開発 #W8lt
Junpei Matsuda
 
PRML2.3.8~2.5 Slides in charge
Junpei Matsuda
 

Application Developer Festival 2015 LT