A Day in the Life

2006-12-15

おなかへってないけどおなかへった

帰宅途中、全く空腹感がなくておなかへってないし何にも買わなくてイイかぁ、などと考えつつ、帰宅後、晩ご飯食べてないじゃん!と考えたとたんおなかが減ってきたぉ…。でも茎わかめがあるので明日昼ぐらいまではがんばれる!がんばりたい…。

RMagick でImageオブジェクトをバイト列として出力

to_blob で。

だいぶ前にも解らなくて API 探しまくった記憶が。read とかで読み出せろよ!とかいつも思う。もーーー RMagick は多機能なのはいいのだが API が複雑すぎてわからんよ…。

image.to_blob

memcache_stats

探すよりちゃっちゃと作った方が楽そうだったので作った。memcache-client memcache-client-stats パッケージが必要。

]$ ./memcache_stats 192.168.10.112 localhost
+ localhost:11211
bytes                 1106
bytes_read            292462
bytes_written         305268
cmd_get               1987
cmd_set               1139
connection_structures 11
curr_connections      1
curr_items            7
get_hits              1933
get_misses            54
limit_maxbytes        4194304
pid                   1397
rusage_system         7.760000
rusage_user           4.820000
time                  1166161738
total_connections     34
total_items           1139
uptime                1799195
version               1.1.12

+ 192.168.10.112:11211
bytes                 42144103
bytes_read            5667489398
bytes_written         5496319183
cmd_get               98653156
cmd_set               16260858
connection_structures 751
curr_connections      130
curr_items            429547
get_hits              82317143
get_misses            16336013
limit_maxbytes        67108864
pid                   305
rusage_system         4997.215307
rusage_user           2563.752250
time                  1166161724
total_connections     3841608
total_items           16260858
uptime                5535565
version               1.1.12

みたいな。ソース

#!/usr/bin/env ruby

require 'rubygems'
require 'memcache'
require 'memcache_client_stats'

class MemCache
  def output_stats(io = STDOUT, options = {})
    stats = {}
    key  = options.is_a?(Hash) ? options[:key] : options
    type = options[:type] if options.is_a?(Hash)
    @mutex.synchronize do
      if self.active?
        @servers.each do |server|
          begin
            stats[server.key] = server.stats(type)
          rescue
            stats[server.key] = "Error: Not Found Server"
          end
        end
      end
    end
    unless key.nil?
      new_stats = {}
      stats.each_pair {|k,v| new_stats[k] = v[key]}
      stats = new_stats
    end
    stats.each_pair do |k, v|
      io.puts "+ #{k}"
      if v.kind_of?(Hash)
        max_length = v.map{|s| s.first.length }.max
        v.sort_by {|s| s.first }.each {|key, val| io.puts "#{key.ljust(max_length)} #{val}" }
      else
        io.puts v
      end
      io.puts ''
    end
    stats
  end
end

if ARGV.empty?
  puts "usage: #{__FILE__} 192.168.10.10:11211 192.168.10.11:11211"
  exit 1
else
  cache = MemCache.new ARGV, :multithread => true
  cache.output_stats
end

Readline::History::Restore

作って上げて放置してた。path の違う irb を利用したアプリケーションごとに History が使いたくて作った。最近 capistrano や script/console や iar なんかでヒストリーを一緒くたにしたくないことがよくあるので。

利用方法は

$ sudo gem install readline-history-restore

してから irb で使いたい場合 ~/.irbrc に

require 'rubygems'
require 'readline/history/restore/auto_save'
Readline::History::Restore::AutoSave.scriptname

とか書いておく。デフォルトだと ~/.ruby_readline_history/* に履歴ができる。つーか rubyforge また落ちてる。。

記事の一覧 >