『入門git』 Travis Swicegood 著 でびあんぐる 監訳

Amazon URL
タイトル 入門git
著者 Travis Swicegood
価格 2520円(本体2400円+税)
ISBN 978-4-274-06767-9
発売日 2009/08
判型 A5 208頁
正誤表 -



PDF版もある。

良書。さすが The Pragmatic Bookshelf。内容は充実していながら、とても読みやすく、万人におすすめ。

Subversionなど他のバージョン管理システムとの比較や、SubversionCVSを知っている人向けのわかりやすい説明、Subversionからの移行、Windows版での注意なども書かれており、わかりやすく、つまづきにくい内容となっている。

『入門Git』(濱野純) が、ほぼLinux版のGitについてのみ扱っているのとは対照的だ。

『入門Git』 濱野純

Amazon URL
タイトル 入門Git
著者 濱野純
価格 2310円(税込)(本体2200円)
ISBN 978-4-7980-2380-9
発売日 2009/9/19
判型 A5
正誤表 URL


良書。Gitのメンテナーである濱野純が日本語で書き下ろしたGitのバイブル本。

概要を説明する1章「gitとは」の次の2章「gitの基本概念」が、いきなり内部構造の話となり、とっつきにくい。このため、読み手を選ぶ本となってしまっている。

しかし、内部構造を理解しておくと、Gitの理解の助けとなり、その後の理解が深まることは確実だ。

9章「変更履歴を追いかける」では、リーナス版管理システムに求める理想を語っており、これを知ることもGitの理解の大きな助けとなる。

このように、開発の最初期から中心になって関わっているメンテナーならではの他では得難い内容を多く含んでいる。

10章「パッチベースのワークフロー」では、Linuxのような大規模なオープンソースプロジェクトがどのように開発を進めており、Gitがなぜ必要で、どのように役に立つのかが語られており、Gitの使い方を説明するに留まらない。

肝心のGitの使い方の説明も、とてもわかりやすい。「独りで使う」→「2ヶ所で使う」→「グループで使う」→「ブランチを使った開発」→「分散環境とブランチとの関連」と、順を追って、よくあるストーリーにそって説明されるので、無理なく理解を深めていくことができる。

いつも手元に置いておきたい一冊。

color tee コマンド "cotee" 素案

tail -f で、ログを眺めているときに、キーワードを見落とさないように色を付けたい。

実行例。

$ cat cotee | ./cotee
#!/usr/bin/ruby
#
# cotee - color tee command. read from stdin and write to stdout with color and files
#
#


filename = ARGV.shift

begin
  file = open("#{filename}", "w") if filename
  ARGF.each_line do |line|
    print line.gsub(/ERROR/, "\e[31m" + '\&' + "\e[0m")   # ERRORに色を付ける
    file.print line if file
  end
rescue => e
  puts e
ensure
  file.close if file
end

こんなことができたらいいな。

  • 色をつける文字を正規表現で指定可能にする
  • 何色をつけるか指定可能にする
  • 上記2つの組み合わせを可能にする
  • tee表示中に画面からの入力が出力ファイルにも反映される
    • ログを流しているときにあとで見直しやすいように、区切りを入れたり、説明を入れたり


source

#!/usr/bin/ruby
#
# cotee - color tee command. read from stdin and write to stdout with color and files
#
#

filename = ARGV.shift

begin
  file = open("#{filename}", "w") if filename
  ARGF.each_line do |line|
    print line.gsub(/ERROR/, "\e[31m" + '\&' + "\e[0m")   # ERRORに色を付ける
    file.print line if file
  end
rescue => e
  puts e
ensure
  file.close if file
end

今すぐSQLite入門。知っておくべきたった5つのこと。

SQLite (エス・キュー・ライト) は、サーバー不要のお手軽データベース。

特徴

  • データの保存に単一のファイルのみを使用する
  • 中小規模ならば速度に遜色はない
  • ファイルを使わないインメモリ・データベースとしても利用可能
  • データ型を指定する必要がない
    • サポートしている型は、Null / Integer / Real / Text / BLOG のみ
  • Unicodeサポート

その他の特徴として、コメントは、SQLコメント(--から行末まで)に加えてC言語スタイル(/* から */ 複数行)が使用可能。

1. インストールは超簡単

Red Hat系のCentOSなどならば、yumコマンドで一発。

$ sudo yum install sqlite

(sudoよく分からないって人はrootユーザになって実行)

sqlite3-rubyなどライブラリのインストールにはsqlite-develも必要となるので、インストールしておく。

$ sudo yum install sqlite-devel

RHEL5、CentOS5 ならばバージョンは 3.3.6-5 がインストールされる。(2011年4月1日現在)

2. 起動/終了は不要

サーバー型ではないので、サーバープロセスの起動といった煩雑な手順は不要。
インストールが終わったら今すぐに使える!
sqlite3コマンドで接続して、.quit.exit切断

$ sqlite3
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> .help
.databases             List names and files of attached databases
(略)
.exit                  Exit this program
(略)
.quit                  Exit this program
(略)
sqlite> .quit

3. ユーザの作成/削除/パスワード変更は不要

SQLiteにはユーザという概念がない。パスワードという概念もない。
だから、ユーザもパスワードもなくてもお手軽に利用できるというメリットがある。
反面、セキュリティ上のリスクというデメリットがあることも覚えておこう。

4. データベースの作成/削除

これも簡単。特別にデータベースを作成するというコマンドはない。
作成したいデータベース名を指定してsqlite3コマンドを実行するだけでよい。

$ sqlite3 otameshidb.sqlite3

「otameshidb.sqlite3」がデータベース名(長いね...)。データベースが既に存在すれば接続し、存在しなければ新規作成する。

データベース名と同じ名前のファイルが作成されるので、データベース名には必ず「.sqlite3」と付けて、拡張子代わりにするのがオススメ。


実際には、接続して空っぽのままではデータベースファイルは作成されないので、テーブルを作る。

$ sqlite3 otameshidb.sqlite3
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> create table test_table(id, name);
sqlite> .quit

$ file otameshidb.sqlite3
otameshidb.sqlite3: SQLite database (Version 3)

データベースの削除は、このファイルを削除するだけでよい。

$ rm otameshidb.sqlite3

5. バックアップ/リストア

データベースの実体はたった1つのファイルなので、バックアップはこのファイルをコピーすればよい。

$ cp otameshidb.sqlite3 otameshidb.sqlite3.backup

リストアはこのファイルを戻すだけ、超簡単。

(.backup/.restoreや.dump/.readという方法もある。)


以上

これだけ知っておけば、さっそく今からSQLiteが安心して使えるよ! Enjoy!


参考サイト

SQLite入門

Linuxパフォーマンス問題判別

情報収集のためのツール

  • CPU
    1. vmstat/sar
      • システム全体のCPU使用率調査
    2. top/ps
      • プロセス単体のCPU資料率調査
  • メモリ
    1. vmstat/sar
    2. vmstat/sar
      • システム全体のメモリ使用状況調査
    3. top/ps
      • プロセス単体のメモリ使用状況調査
    4. ipcs
  • I/O
    1. vmstat/sar
      • I/O Wait発生状況調査
    2. iostat
  • ネットワーク
    • sar
      1. ネットワーク使用状況の調査
      2. ソケット数・コネクション数調査
      3. 障害の可能性調査
コマンド 概要 CPU メモリ ディスク ネットワーク
vmstat 指定した時間間隔でリソース使用状況を取得 ×
mpstat 指定した時間間隔でCPU使用状況を取得 × × ×
sar 指定した時間間隔でリソース使用状況を取得
top プロセス単位のCPU使用率、メモリ使用率を取得 × ×
ps プロセス単位のCPU・メモリ使用率を取得 × ×
free メモリ、スワップの空き状況を取得 × × ×
ipcs 共有メモリ、セマフォ、メッセージキューの使用状況を取得 × × ×
iostat バイス単位のディスクI/Oの状況を取得 × ×
netstat ネットワーク接続状況や統計情報を取得 × × ×

Oracleをreadlineに対応させる(rlwrap)

入力の履歴やBackSpaceに対応していなくて入力にイライラするCUIアプリケーションのお悩み解決!
すべてのCUIアプリケーションに対応可能。rlwrapに続いて通常のコマンドを入力するだけ。

$ rlwrap sqlplus user/pass@orcl

本家
http://utopia.knoware.nl/~hlub/rlwrap/
インストールは通常通り、./configure; make: make install;。

REHL/CentOSRPMはないみたいだが、Fedora ExtrasにあるらしいのでRPMでインストールしたい場合は(って普通そうだよね)そこから持ってきたらよいかも。
http://www.e-tsuyama.com/cgi-bin/blog/ms.cgi?blogid=20
CentOS5 = RHEL5 = Fedora Core 6 だから(イコールじゃないけど)、Fedoraの... と思ったらこんなもの発見。

http://www.rpmfind.net/linux/rpm2html/search.php?query=rlwrap

これ使ってみよう。

CentOS5(x86_64)を使っているのでel5.x86_64を選択。

$ wget ftp://194.199.20.114/linux/EPEL/5/x86_64/rlwrap-0.30-1.el5.x86_64.rpm
$ sudo rpm -ivh rlwrap-0.30-1.el5.x86_64.rpm
$ which rlwrap
/usr/bin/rlwrap

使ってみる。

$ rlwrap ruby
p 'hello rlwrap!'
p 'hello rlwrap!'
p 'hello rlwrap!'
"hello rlwrap!"
"hello rlwrap!"
"hello rlwrap!"

rlwrap: Oops, segfault -  this should not have happened!
If you need a core dump, re-configure with --enable-debug and rebuild
Resetting terminal and cleaning up...

Ctrl-Dでruby的には正常終了しているのにrlwrapでエラーが起きているっぽいのがイマイチだなぁ。
でも、便利!


参考
http://doruby.kbmj.com/8y/20090526/readline_