@kyanny's blog

My thoughts, my life. Views/opinions are my own.

github/gitignore

Git でバージョン管理の対象に含めないファイルのパターンを指定するには gitignore というものを使う。詳細は man 5 gitignore または http://hail2u.net/blog/software/git-ignoring-files.html などに詳しい。

プロジェクトごとの .gitignore ファイルを都度作るのは面倒だ。 GitHub のなかのひともそう思った...かどうかは知らないが、 https://github.com/github/gitignore に様々な、実に様々な .gitignore のサンプルがある。プログラミング言語別、プラットフォーム別、エディタ別、フレームワーク別、などなど、通常思いつきそうなものはほぼ網羅されていて、オレオレ言語やオレオレエディタの作者|利用者でもない限り困ることはなさそうだ。

と、ここまではわりあい良く知られた Tips だが、ここでもう一つ Tips を。 github/gitignore は様々なケースを想定した .gitignore のカタログだが、ファイルが分かれているのでそのままでは新規プロジェクトの .gitignore には使いづらい。ぼくはその手間を省くために、このレポジトリを fork して https://github.com/kyanny/gitignore/blob/master/00forme.gitignore のような自分専用の .gitignore を作っている。ファイルを一個コピー/ダウンロードするだけで済むのでお手軽だ。

ま、 pmsetup とかのテンプレートに書いてるからいちいち作らないよ!ってひとのほうが多いと思うけど。

実用のことを一旦忘れて、 .gitignore からプロジェクトのありがちなディレクトリレイアウトを想像してみるのも楽しいかもしれない。昭和のかほりを払拭したモダンな IDE の世界でも .gitignore のお世話になることがあるのか、 VisualStudio.gitignore やら VB.Net.gitignore なんてものも置いてある。そうまでして VisualStudio を使わなければいけないのかという疑問は残るが、同僚が謎のドットファイルをコミットし続けるのに悩んでいるひとがいたら、この URL を送りつけてやると頭痛の種がひとつ減るかもしれませんよ。

mysql クライアントでページャを使う

mysql クライアントでクエリを実行すると結果が印字されるが、結果をファイルにリダイレクトしたり、表示せずに捨てたいことがたまにある。 SELECT INTO OUTFILE を使ってもいいけれど、 mysql サーバに接続するユーザーに FILE 権限が付与されていないこともある。そんなときはページャを指定するといい。

ページャはコマンドラインオプションから指定することも、プロンプトに入ってからコマンドで指定することもできる。 http://dev.mysql.com/doc/refman/5.1/ja/mysql-command-options.htmlhttp://dev.mysql.com/doc/refman/5.1/ja/mysql-commands.html にリファレンスがあるが、抜粋すると、

# コマンドラインオプションで指定
$ mysql --pager='cat >/dev/null'

# mysql プロンプトからコマンドで指定
mysql> pager cat >/dev/null

mysql プロンプトからコマンドで指定する場合はクォートが不要なことに注意。

せっかくクエリを実行した結果を捨てたいことなんてあるの?と不思議に思うかもしれないが、例えばクエリのチューニングを行うときに便利なことがある。 SELECT * FROM ... のようなクエリでフェッチする行が多い場合、クエリの実行は終わっているのに表示が完了するまで待たされるのはかったるい。 EXPLAIN で確認するのはもちろんだけど、行をディスクから読み込む I/O 操作まで含めた実行時間を知りたければ、クエリを実行してみるしかない。ページキャッシュに載るから二度目以降はあんまり有意な結果にならないとか、もっと細かい話はいろいろあるけど、ブログ書きたかったんだからまぁいいじゃない。