Glide Note

glidenote's blog

GitHubのfeedをfacebookのtimeline風に表示するgitspectiveがシャレオツ

GitHubのfeedをfacebookのtimeline風に表示してくれるgitspectiveという サービスがリリースされていたので、早速試してみました。

http://zmoazeni.github.com/gitspective/にアクセスすると下記のような画面。

私のtimelineを表示させた場合

[Push],[Fork],[Gist],[Branch],[Tags],[Follows],[Comments]などで表示、非表示が 出来るので、必要な情報だけ絞り込むことが出来ます。

Gistだけを表示させると下記のような感じ

またソース自体も公開されているので、ローカルにgit cloneして

1
git clone git://github.com/zmoazeni/gitspective.git

同じディレクトリに下記のようなserver.rbスクリプトを配置し、

ruby server.rbして、http://localhost:10080/にアクセスすれば ローカルですぐに動作もします。

憧れの技術者が「今何を作ってるんだろう」とか「何に注目しているんだろうとか」 ネットストークする際に活躍しそうです。

zshでサブコマンドとファイル名を手抜き補完する

結婚祝いで先日mizzyさんから頂いたBuild Awesome Command-Line Applications in Ruby を読んで自作コマンドを作っているんですが、zshで補完されず不便だったので手抜きで対応。
最初はzshの補完関数も一緒に作っていたのですが、あまりに非効率だったので、.zshrcに書いて対応。

たとえばhogeというコマンドを自作していて、下記のようなサブコマンドがあった場合

1
2
3
4
hoge init
hoge update
hoge upgrade
hoge commit

hoge[tab]でサブコマンドが補完され、

サブコマンドの後はファイル、ディレクトリが補完されるように。

サブコマンドとファイル名を補完する

下記を.zshrcに記載してexec $SHELL

やっていることは

  1. compdef_hogecmdという補完用functionを定義し、hogeコマンドを実行したときに呼び出されるように。
  2. function内のcmdsで補完したいサブコマンドを列挙
  3. CURRENT == 2hogeのあとに補完されるのはサブコマンドだけと指定
  4. _describeで補完候補で表示されるときにsubcommandというグループになるようにしている
  5. サブコマンドのあとは_filesでファイルとディレクトリが補完されるように

参考になるサイト

zshの補完関数の書き方がまとまっているところがほとんど無いので下記が非常参考になります。

特にはこべブログ♨ さんの記事は、 補完の際に用いる、compadd,_files,_describeなどについて詳しく書いてあるのでオススメです。

自作コマンドに限らず、新しいツールなどを利用していたりするとサブコマンドが補完されず ガッカリすることがありますが、ほんの数行でサクッと出来る対応なのでオススメです。

社内でターミナル勉強会を開催した

月一回のペースで社内勉強会を主催しているんですが、 資料をspeckerdeckに置くようにしたので、 先日社内で開催したターミナル勉強会の資料を公開。

去年にも同じテーマで勉強会をやっていて、 今回は実際のターミナル操作8割、説明2割みたいな感じでやったので 資料だけみても正直あんまり役に立たないかと思いますが。

Bash版oh-my-zsh、Bash framework「bash-it」を試してみた

久しく利用していないBashですが、Bash版oh-my-zshといえる bash-itという面白そうなツールがあったので試してみました。

bash-itの導入

1
2
3
4
5
6
7
8
9
10
11
cd ~
git clone http://github.com/revans/bash-it.git ~/.bash_it
sh ~/.bash_it/install.sh

Your original .bash_profile has been backed up to .bash_profile.bak
Copied the template .bash_profile into ~/.bash_profile, edit this file to customize bash-it
Do you use Jekyll? (If you don't know what Jekyll is, answer 'n') [Y/N] Y
Copied the template .jekyllconfig into your home directory. Edit this file to customize bash-it for using the Jekyll plugins
Would you like to enable all, some, or no aliases? Some of these may make bash slower to start up (especially completion). (all/some/none) all
Would you like to enable all, some, or no plugins? Some of these may make bash slower to start up (especially completion). (all/some/none) all
Would you like to enable all, some, or no completion? Some of these may make bash slower to start up (especially completion). (all/some/none) all

私はOctoperssを利用していて、jekyll拡張もあると便利そうなので一緒に導入しました。

bash-itの利用

~/.bash_profileがbash-it用に変更されているのでsourceで読み込む

1
source ~/.bash_profile

自分用のカスタム設定を記載

自分用のaliaseなどのカスタム設定は下記のファイルに記載。 customディレクトリ中に拡張子を.bashで用意。

1
2
3
4
~/.bash_it/aliases/custom.aliases.bash
~/.bash_it/lib/custom.bash
~/.bash_it/plugins/custom.plugins.bash
~/.bash_it/custom/*.bash

テーマの変更

2012年4月24日現在下記のテーマがあるので、 .bash_profileに記載してsourceで再読み込ませすると反映されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bobby
candy
clean
demula
dos
doubletime
doubletime_multiline
doubletime_multiline_pyonly
envy
hawaii50
mbriggs
minimal
modern
modern-t
n0qorg
pete
rainbowbrite
rjorgenson
simple
sirup
standard
tonka
tylenol
zitron
zork

うーん、自分でカスタムしまくったzshに慣れすぎてしまっているせいか 正直今はあんまり便利な感じがしない。
oh-my-zshの出始めはこんな感じだったようか気がするのでもうすこしテーマとか 補完関数がそろってくると便利になるかもしれない。

git + etckeeper + BitbucketのPrivate Repositoryで/etcを管理

個人で利用しているさくらのVPSのプラン変更に伴い、サーバの移行作業をしているんですが、 そのタイミングで、/etc配下のファイルの管理を個人で立ててたgitoliteから Bitbucketのprivate repositoryでの管理に変更したのでメモ。

Bitbucketでprivate repositoryを作成する方法は以前紹介したのでそちらを参照下さい。

導入環境はCentOS 6.2です。Bitbucketへの鍵登録などは済んでいるものとします。

etckeeperの導入

1
sudo yum -y install git etckeeper

/etc/etckeeper/etckeeper.confが設定ファイルになり、デフォルトで

1
2
3
VCS="git"
HIGHLEVEL_PACKAGE_MANAGER=yum
LOWLEVEL_PACKAGE_MANAGER=rpm

などとgitを利用し、CentOSに適した設定になっているので、そのまま利用。

/etc/.gitignore に管理したくないファイルを追加

非公開なリポジトリとはいえ、外部のサーバにファイルを置くので、 万が一漏洩しても被害を少なくするためセキュリティ上管理しないファイルを /etc/.gitignoreに記載。
/etc/passwdとか/etc/shadowは管理しない方がいいかと思います。

etckeeperを用いて、/etcをcommit

1
2
sudo etckeeper init
sudo etckeeper commit

ちなみにetckeeperがcommitするタイミングは主に下記の2点

  1. yumを実行したタイミング
  2. dailyでのcron

手動でcommitするときは下記のような感じ

1
sudo etckeeper commit

Bitbucket上のプライベートリポジトリにpush

Bitbucket上に作成したprivate repositoryにpush。 下記はfoobarというプライベートリポジトリにpushする例。

1
2
3
cd /etc
sudo git remote add origin ssh://[email protected]/glidenote/foobar.git
sudo git push origin master

これで/etc配下のファイルのバージョン管理が出来るようになりました。 検証やpuppetマニフェストの動作確認とかでOSの再インストールを頻繁に行うので、 /etc配下のファイルを管理していると再構築が楽でいろいろと捗ります。

参考