プログラミングRuby1.9ライブラリ編を読んだので、個人的にはあまり使ってなかったけど、便利そうなメソッドとかライブラリとかをメモします.
組み込みクラス/モジュール
Hash
Hash#assoc
キーが一致するペアを返す
Hash#rassoc
valueが一致するペアを返す
IO
IO.binread
バイナリとして開く
IO.foreach
セパレータを指定して行ごとに繰り返す
IO.popen
サブプロセスを起動してその標準入出力を取得する
Kernel
Kernel.__method__
現在のメソッド名
Kernel.at_exit
インタプリタ終了時に与えられたブロックを実行するよう登録する
Kernel.caller
現在の実行スタックを配列で返す
Kernrl.fork
子プロセスでブロックを実行する
Kernel.trap
指定したシグナルを受けたらブロックを実行する
Process
Process.wait
で待つか、Process.detach
で子プロセスのステータスに関心がないと宣言しとかないとゾンビプロセスだらけになる
Process.waitall
forkした子プロセスが全て終了するまで待つ.各プロセスの終了ステータスがArrayで返ってくる.
Proc
Proc#===
whenにprocを指定するとcaseの値を引数としてprocを呼び出す
Proc#curry
カリー化。先頭から順に適用する。
Regexp
Regexp.union
引数で渡したパターンのうち、一つ以上にマッチするようなパターンを返す。
Regexp#named_captures
キャプチャ名をキーにしたHashを返す
String
String#[regexp,int]
正規表現にマッチした部分を返す。部分マッチがほしい場合はintで指定する。
String#center
左右をパディングして中央寄せする。String#ljust
, String#rjust
で左右寄せ。
String#crypt
文字列を暗号化して返す
String#hex
"2a".hex # => 42
. String#oct
もあるよ。String#to_i
は先頭の "0x" とか "0" で基数判断してくれる。
String#partition
パターン渡して、最初に見つかった[マッチ前,マッチ部分,マッチ後] を返す。後ろから探索したい場合はString#rpartiton
.
String#scan
パターンにマッチした部分が配列で返ってくる.パターンにグループが含まれてる場合はネストされてる.
String#squeeze
連続する文字を1文字に圧縮した文字列を返す。
その他
Array#pack
, String#unpack
テンプレート文字列に従って文字列化したり戻したりする
標準ライブラリ
Abbrev
文字列集合を与えると、一意に識別可能ないいかんじの短縮形=>原形 をHashで返す。
Benchmark
ベンチマークとる。
Delegator
簡単に委譲を実装できる
Digest
md5とかsha1とか計算する
expect
IOストリームから特定のパターンが返ってくるまで待つ
FileUtils
unixライクなファイル操作群
Forwardable
指定したメソッドを別のオブジェクトへ委譲する。メソッド単位で一部を委譲したい場合はDelegatorよりこっち?
GetoptLong
コマンドラインオプション処理。オプションが先に来るように並べ替えたり、引数有り無し指定が便利そう。
IPAddr
IPアドレスを扱う際に
irb
実行中のアプリケーションからirbを起動する。シグナルが来たらirb起動して変数の値にアクセスしたりできる。すごい。
json
JSONを扱う. j とか jj でいい感じにフォーマットできる.
Logger
ログレベル指定、ローテートもできるロガー
OptionParser
GetoptLongより便利そう。引数の型指定できたりする.
OpenStruct
Hashのキーをメンバ、valueを値とする構造体をつくる
PP
インスペクトの結果をフォーマットして出力する。自分で実装する場合はPrittyPrintで。
Prime
素数関連
Profile
requireするだけで実行全体をプロファイリングしてくれる。実行時に -r profile
するのがお手軽で良さそう。
PStore
お手軽に永続化.階層化したオブジェクトも楽に扱える.
Readline
ユーザ入力を扱うためのプログラムreadlineが使えます.コマンドヒストリとか補完ができて便利.
Resolv
DNSクライアント.Ruby製.
REXML
XMLのパースやXPathによる問い合わせができる.Ruby製.
SDBM
ハッシュみたいに使える、お手軽な永続化モジュール.
Set
集合.よく考えたら組み込みクラスに入ってなかった.
Socket
ソケット通信できる.
StringIO
オープンされたIOオブジェクトのようにStringを振る舞わせる
StringScanner
組み込みの String#scan
との違いとして、StringScannerは現在のポインタを持ってるので途中から再開できること.
Tempfile
Rubyプログラムが終了すると自動的に削除されるテンポラリファイルを作成する.
tmpdir
システムのテンポラリディレクトリへのパスを取得する.
Tracer
requireするだけで、プログラムの一部または全体の実行をトレース出力する.-r tracer
で起動すると全体をトレースする.
TSort
トポロジカルソート.依存関係グラフを作るときなどに使えそう.
URI
URI文字列をパースして、host部分やクエリ部分を取り出せる.
WEBrick
お手軽HTTPサーバ.
Zlib
zip,gzipを処理するモジュール.zlibライブラリがないと使えません
よくわからんかったところ
ThreadGroup
の使いどころ
Contnuation
の使いどころ
Fiber
の使いどころ