Browse Month: March 2012

闇Webサーバ勉強会 #5 – Apache 2.4 Changelog 和訳編

みなさん、こんばんは。
先日、Webサーバ勉強会 #5という楽しい勉強会が開催されたようです。
この勉強会には参加できなかったのですが、その日の夜日本のどこかでこっそり一人で闇Webサーバ勉強会 #5を開催したので、そのときの資料を公開します。#5 といっても、五回目ではなく、Webサーバ勉強が五回目だったので、それにあわせているだけです。

そこに広がるのは、無限の、闇、闇、そして闇。
一部内容におかしい箇所があるかもしれませんが、そこは闇ということでご了承下さいませ。

mod_log_rotate をミラーしました

日頃、愛用している mod_log_rotate の公式ページがリンク切れになってしまったので、github の方に取り急ぎ、こちらにミラーしました。

mod_log_rotate 細かいところを改善したいことがあるので、対応次第、このブログにアップしていきたいと思います。

あと、個人的には公式の rotatelogs とのパフォーマンス測定などもしてみたいです。

gitconfig を github で公開して管理する方法

今日から、gitconfig を自分のドットファイルに含まれて、github で管理し始めました。
最初のコミットで誤って gitconfig の中に github の API トークンを含めてコミットしてしまいました・・・。すぐに API トークン部分だけを削除して、github 上からパスワードを再設定して API トークンを再作成しました。

どうやって、gitconfig に github の API トークンを含めようかなと思い、検索してみると ERB でやっている強者がいました。もっと、エレガントな方法がないものかと思ってさらに調査してみると、Pro Git に素晴らしい情報を見つけることができました。

Pro git によると gitconfig は、次の順序で読み込まれるようです。

  1. /etc/gitconfig
  2. $HOME/.gitconfig
  3. $HOME/.git/config git リポジトリの .git/config

ということで $HOME/.gitconfig を github 上で公開して管理するようにして、$HOME/.git/config /etc/gitconfig を作成してその中に github の API トークンを含めることにしました。

この状態で、git config -l してみると、ちゃんと設定はされているようで安心しました。

.gitconfig に include が追加されると、かなり便利なんですけれど、今はそのオプションはない模様です。

 

2012.03.28: 追記

@hirose31 さんの指摘により、一部修正しました。

 

hub が便利

hub という github のラッパーコマンドが便利です。man は、こちら。インストールは、gem install hub するだけ。
あとは、git コマンドを hub にエイリアスすると、さらに便利かもしれません。

github にリポジトリを新規作成する

$ mkdir hoge
$ cd hoge
$ git init
$ hub create
$ git add README
$ hub push -u origin master
(以降は・・・)
$ hub push

man をみると、github 向けに拡張されたコマンドがあるので、とても便利です。

ということで、hub コマンドがない環境も考慮して、次の設定を .zshrc に、追加してみました。

if [ -x "`which hub 2> /dev/null`" ]; then
alias git=hub
else
alias git=git
fi

alias g=git

Enjoy, github life.

MySQL の SHOW TABLE STATUS を見やすくする方法

A better SHOW TABLE STATUS » Fatal Exception で紹介されていた方法が便利なので紹介します。

これは、MySQL の SHOW TABLE STATUS をストアプロシージャーを使って、見やすく方法です。

  1. tools というデータベースを作成します
  2. ここにある SQL を実行して、ストアプロシージャーを作成します
  3. あとは、call tools.sp_status(database()); のような形でデータベース名を指定して実行するだけです

たとば、mysql データベースの場合だと、こんな感じです。

通常の show table status。

root@localhost[mysql]> show table status;
+---------------------------+--------+---------+------------+------+----------------+-------------+-
-------------------+--------------+-----------+----------------+---------------------+--------------
-------+---------------------+-------------------+----------+----------------+----------------------
-----------------------------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length |
Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time
| Check_time | Collation | Checksum | Create_options | Comment
|
+---------------------------+--------+---------+------------+------+----------------+-------------+-
-------------------+--------------+-----------+----------------+---------------------+--------------
-------+---------------------+-------------------+----------+----------------+----------------------
-----------------------------+
| columns_priv | MyISAM | 10 | Fixed | 0 | 0 | 0 |
227994731135631359 | 4096 | 0 | NULL | 2011-08-11 01:09:56 | 2011-08-11 01
:09:56 | NULL | utf8_bin | NULL | | Column privileges
|
| db | MyISAM | 10 | Fixed | 4 | 440 | 1760 |
123848989752688639 | 5120 | 0 | NULL | 2011-08-11 01:09:56 | 2011-08-28 22
:51:20 | 2011-08-11 01:09:56 | utf8_bin | NULL | | Database privileges
|

sp_status を使った場合。

root@localhost[mysql]> call tools.sp_status(database());
+---------------------------+--------+------+---------+-------------------+
| Table Name | Engine | Rows | Size | Collation |
+---------------------------+--------+------+---------+-------------------+
| columns_priv | MyISAM | 0 | 0.00 Mb | utf8_bin |
| db | MyISAM | 4 | 0.01 Mb | utf8_bin |
| event | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| func | MyISAM | 0 | 0.00 Mb | utf8_bin |
| general_log | CSV | 2 | 0.00 Mb | utf8_general_ci |
| help_category | MyISAM | 38 | 0.02 Mb | utf8_general_ci |
| help_keyword | MyISAM | 452 | 0.10 Mb | utf8_general_ci |
| help_relation | MyISAM | 993 | 0.03 Mb | utf8_general_ci |
| help_topic | MyISAM | 508 | 0.43 Mb | utf8_general_ci |
| host | MyISAM | 0 | 0.00 Mb | utf8_bin |
| ndb_binlog_index | MyISAM | 0 | 0.00 Mb | latin1_swedish_ci |
| plugin | MyISAM | 0 | 0.00 Mb | utf8_bin |
| proc | MyISAM | 1 | 0.01 Mb | utf8_general_ci |
| procs_priv | MyISAM | 0 | 0.00 Mb | utf8_bin |
| servers | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| slow_log | CSV | 2 | 0.00 Mb | utf8_general_ci |
| tables_priv | MyISAM | 0 | 0.00 Mb | utf8_bin |
| time_zone | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| time_zone_leap_second | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| time_zone_name | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| time_zone_transition | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| time_zone_transition_type | MyISAM | 0 | 0.00 Mb | utf8_general_ci |
| user | MyISAM | 7 | 0.00 Mb | utf8_bin |
+---------------------------+--------+------+---------+-------------------+
23 rows in set (0.06 sec)

かなりターミナル画面で見やすくなりましたね!