xxxx_contrはXxxxContro
お手製の acts_as_xx
xxxx_contrはXxxxContro
お手製の acts_as_xx
debianで普通にsnmpdをパッケージからインストールすると、
1 # netstat -lnp | rak snmp 2 17|udp 0 0 127.0.0.1:161 0.0.0.0:* 13404/snmp d
このように、127.0.0.1にbindしてlistenするようになっているため、 プライベートネットワーク内のほかのサーバ (cactiとかが動いているもの)から接続できません。
この辺の設定を変えるには、/etc/defauを
以下のように編集します。
1 ..(略).. 2 3 # snmpd options (use syslog, close stdin/out/err). 4 SNMPDOPTS= '-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/s nmpd.pid 192.168.10 .123' 5 6 ..(略)..
192.168.10
先日お伝えしたとおり、Rails 2.0がリリースされましたね。
Rails 2.0 is finally finished after about a year in the making. This is a fantastic release that’s absolutely
stuffed with great new features, loads of fixes, and an incredible amount of polish. We’ve even taken a fair bit of cruft out to make the whole package more coherent and lean.
Railsを使い始めたのが2005年の12月、ちょうどRails 1.0がリリースされた ころの事。あれからちょうど2年の歳月が流れました。 感慨深いものです。
末尾が偶数バージョンがリリースされると、すぐに奇数バージョン が跡を追うのは相変わらずですね ;-)
早速ですが、このブログシステムもRails 2.0(2.0.1)に移行しました。 1.2.5から、RC1、RC2を経て、バージョンアップをしてみましたが、 特に大きな問題は発生しなかったです。
新しいscriptとして、script/perというものが
新たに加わったみたいです。
1 h% ./script/performance /request --help 2 USAGE: ./script/p erformance /request [options] [session script path] 3 -n, --times [0000] How many requests to process. Defaults to 100. 4 -b, --benchmar k Benchmark instead of profiling 5 --open [CMD] Command to open profile results. Defaults to "open %s &" 6 -h, --help Show this help
ふむふむ。ベンチマーク系のスクリプトのようですね。 紹介してる記事を見つけました。
New in Rails: a request profiler for profiling your app
Jeremy Kemper (aka bitsweat) committed a very useful tool into the Rails trunk not too long ago: a request profiler! It’s a human-frie
ndly wrapper script around the ruby-prof library, a nice ruby code profiler, that lets you run multiple requests against a URI in your applicatio n and get a detailed code profile report in text and HTML.
おーなるほど。前回のRails勉強会で紹介した ruby-prof を
human-frie
試してみようと思って触ってみたら、上のサイトで紹介されてる ものと、Rails 2.0で入ったものは若干インターフェイスが違う模様。
DHHが書いてる こっちの情報 が最新のようです(以下に抜粋)
Action Pack: New request profilerFiguring out where your bottleneck
$ cat login_sess ion.rb
get_with_r edirect '/'
say "GET / => #{path}"
post_with_ redirect '/sessions', :username => 'john', :password => 'doe'
say "POST /sessions => #{path}"
$ ./script/p erformance /request -n 10 login_sess ion.rb
And you get a thorough breakdown in HTML and text on where time was spent and you’ll have a good idea on where to look for speeding up the applicatio
なにやらIntegratio
基本はstableで使いつつ、ちょっと使ってみたい新しい パッケージがある場合だけ、unstableから持ってくるような使い方を する場合のaptの設定メモ。
まずはsources.li
/etc/apt/s
1 deb http://cdn.debian.or .jp/debian / etch main contrib non-free 2 deb-src http://cdn .debian.or .jp/debian / etch main contrib non-free 3 4 deb http://sec urity.debi an.org/ etch/updat es main contrib 5 deb-src http://sec urity.debi an.org/ etch/updat es main contrib 6 7 deb http://cdn .debian.or .jp/debian / unstable main contrib non-free 8 deb-src http://cdn .debian.or .jp/debian / unstable main contrib non-free
それがすんだら、優先度の設定を行います。
/etc/apt/p
1 Package: * 2 Pin: release a=stable 3 Pin-Priority: 100 4 5 Package: * 6 Pin: release a=stable-p roposed-up dates 7 Pin-Priori ty: 110 8 9 Package: * 10 Pin: release a=unstable 11 Pin-Priori ty: 90
ついでに、キャッシュ容量の設定なども行っておきましょう。
/etc/apt/a
1 APT::Cache-Limit "100000000"; 2 APT::Defau lt-Release "stable";
上記の設定ファイルファイルが無い場合は、新しく作成します。
これで完了。あとはapt-get updateすればOK。
必要に応じて、-t unstable オプションを指定して unstableの
パッケージを利用できます。
acts_as_seを使う程度であれば、例えばDebianなら、
aptでhyperestra
1 # estcmd 2 /usr/local/lib/ruby/ site_ruby/ 1.8/rubyge ms.rb:304: in `report_act ivate_erro r': Could not find RubyGem estraier (> 0) (Gem::LoadE rror) 3 from /usr/local /lib/ruby/ site_ruby/ 1.8/rubyge ms.rb:238: in `activate' 4 from /usr/local /lib/ruby/ site_ruby/ 1.8/rubyge ms.rb:76:i n `active_gem _with_opti ons' 5 from /usr/local /lib/ruby/ site_ruby/ 1.8/rubyge ms.rb:50:i n `gem' 6 from /usr/local /bin/estcm d:15
このestraierをインストールするためには、HyperEstra
1 # aptitude install libqdbm-dev
あとは、gemコマンドで通常通りにestraierをインストールします。
1 # gem install estraier
これで estcmd などのコマンドラインツールが使えるようになります。
1 # estcmd 2 estcmd: command line utility for the core API of Hyper Estraier 3 4 usage: 5 estcmd put [-cl] [-ws] db [file] 6 estcmd out [-cl] db expr 7 estcmd edit db expr name [value] 8 estcmd get db expr [attr] 9 estcmd uriid db uri 10 estcmd inform db 11 estcmd optimize [-onp] [-ond] db 12 estcmd merge [-cl] db target 13 estcmd search [-vu|-va|-vf|-vs] [-gs|-gf|-ga] [-cd] [-ni] [-sf|-sfr|-sfu|-sfi] [-attr expr] [-ord expr] [-max num] [-sk num] [-aux num] [-dis name] db [phrase]
Changeset 8321 - Rails Trac - Trac
Preparing for release shortly
Tracのタイムラインを見ていたら、Rails 2.0が本日 (米国時間だと12/6)リリースするみたいですね。

ワークパイル(Work pile)は、並列処理の為のアルゴリズムの一種です。
lucille 開発日記: マルチスレッド化: ワークパイル
簡単に云ってしまえば、ワークパイルはサーバ/クライアント機構と似たようなもので、ジョブを処理するスレッド部分ではマスタースレッドから仕事(ジョブ)を受け取って処理し、仕事がなくなるまでループするというものです。
いわゆる生産者消費者問題を解決する手法の一つですね。 ちょっとサンプルコードを見てもらったほうがはやいかも。
workpile.r
1 require 'thread' 2 3 class Workpile 4 def initialize(num_worker s) 5 @queue = Queue.new 6 @workers = ThreadGrou p.new 7 8 # Spawn worker threads 9 num_worker s.times do |i| 10 @workers.add(Thread.new do 11 puts "Worker #%d is ready." % i 12 loop do 13 @queue.pop.call # work 14 puts " (#%d)" % i 15 end 16 end) 17 end 18 end 19 20 def push_task(&block) 21 @queue.push block 22 @workers.list.sort_by{rand}.each{|worker| worker.run} # wake up! 23 end 24 25 def start 26 while input = gets.chomp 27 break if input == 'exit' 28 input.split('').each do |i| 29 push_task{print i} 30 end 31 end 32 end 33 end 34 35 Workpile.new(3).start
出力結果
1 % ruby workpile.rb 2 Worker #0 is ready. 3 Worker #1 is ready. 4 Worker #2 is ready. 5 hello! 6 h (#0) 7 e (#2) 8 l (#1) 9 l (#0) 10 o (#2) 11 ! (#0)
3つのワーカースレッドを作成して、投入したタスクを処理しています。
RubyのQueueは同期の面倒を見てくれるので、何も考えずにpushと
popでタスクのやり取りを行うことができてしまいます。
しかも、キューが空になったらカレントスレッドを停止するように
なってるんですね。
並列処理というとC/C++でCriticalSe
クリスマスに出る(という噂の)Ruby 1.9でネイティブスレッド化されたら、 もっと楽しいかもしれませんねー。
ちょっと使ってみて良い感じだったので紹介します。
Rak is a grep replacemen
t in pure Ruby. It accepts Ruby syntax regular expression s and automatica lly recurses directorie s, skipping .svn/, .cvs/, pkg/ and more things you don't care about. It is based on the Perl tool ack by Andy Lester.
Pure ruby で書かれた grep みたいな感じですね。 なんといっても見た目が美しい。

デフォルトで再帰的に、.svn や .cvs を無視して検索してくれる というのも良い感じ。
RubyGemsとして提供されているので、インストールするのは
1 % sudo gem install rak
でOKです。
See Also
更新履歴
昨年 に続いて今年も、 東京と関東のRubyの忘年会2007 が行われるようです。
Rubyistの皆さん、今年も一年間お疲れさまでした。
RubyKaigi2
007での感動的スピーチがまだまだ記憶に新しい今日この頃ですが、早いもので師走を迎え、今年も残すところあと一ヶ月となりました。 ということで、今年の振り返りと来年に向けた英気を養う場として忘年会を行いたいと思います。皆様お誘い合わせのうえ、年忘れ出来る人も出来ない人も(出来ないけど忘れたい人も)奮ってご参加くださいませ。
早速参加申請。もろはしさん、幹事お疲れ様です。