ruby
hoge.yyyymmdd.logのような形式を持つログファイルが大量に手元にあり、そのうち欠落している日を探すという処理が必要になったので、Rubyでちゃちゃっと書きました。 結構あちこちでありそうなケースだと思うんですが、既存のツールの組み合わせで書く方法…
国際会議の論文を書いていて、ある程度固まってきたので英訳する作業を始めたものの、いちいち書いてはYahoo翻訳にかけてチェック、書いてはチェックを繰り返すのは非常にめんどくさいので、なんとかならないかと思ってやってみた。・できること Emacsで範囲…
忘れてたので自分用にまとめておく。サーバ側: require 'msgpack/rpc' class MyServer def ping_sync "pong" end def ping_async as = MessagePack::RPC::AsyncResult.new # as.result("pong") as.result("pong at #{Time.now}") return as end end mysvr =…
タイトルで完結シリーズ。(ご指摘頂いたArray#concatについて追記しました)ある配列に対して、「空かもしれない配列」を追加していく処理が必要になった。 fruits1 = [:apple, :orange] fruits2 = [] fruits3 = [:grape] fruits_array = [fruits1, fruits2…
タイトルで完結シリーズ。ある比較処理を頻繁に実行するとする。その比較対象が、ほとんどある値を取る場合、その値を優先的に評価してやると高速になるんじゃないか?と思い立って実験してみた。linuxのコードに出てくるif(likely(cond))やif(unlikely(cond…
制御構造を適当にやっつけで作るときに(たまに)便利なcatch句のコストは、あまり安いわけではなさそうだ。 以下のベンチマークが妥当かどうかは別として、catchじゃなくてもできる処理ならば、catchを書かずに実現した方がたぶん早い。 ほとんどthrowする…
Scientific Linux 6.1のslリポジトリにあるRubyは1.8.7なので、自分で1.9のrpmを作ってインストールしてみた。 環境 $ cat /etc/redhat-release Scientific Linux release 6.1 (Carbon) checkinstallのインストール $ git clone http://checkinstall.izto.or…
タイトルで完結シリーズ。しかも割と「いまさら」ではありますが。システムの稼働中に延々とインクリメントする変数が必要だったので、実際に実験してみた。 先に結果を。 ***** Hello, this is a test benchmark script for Incrementing Integer number. I…
Ruby 1.9から、文字列にそのエンコーディングが含まれるようになった。また、MessagePack-RPCでは、Encoding::ASCII_8BITの文字列を送っても、受け手側ではEncoding::UTF_8になってしまうという仕様がある。 そのため、受け取ったデータをそのままsliceした…
をやってみた。環境はLinux 2.6.35.6, Core2 Quad Q6600, 4GB RAM. $ ruby --version ruby 1.8.6 (2010-02-05 patchlevel 399) [x86_64-linux] 結果 結果から先に。 $ ruby mprpc-bench.rb 127.0.0.1 12345 10 ********** Local Call ********* 1MB 0.001449…
Rubyを使ったスクリプトの中で、WHOIS情報を参照したいことがあったので調べてみたところ、Whoisというgemがあるらしい。すばらしい。 gem install whoisでOK。リファレンス等はhttp://www.ruby-whois.org/api/を参考に。 単純に問い合わせたい Whois.whois…
自分用メモ。Net::DNS(net-dns) irb(main):001:0> require 'rubygems' => true irb(main):002:0> require 'net/dns/resolver' => true irb(main):003:0> require 'pp' => true # 8.8.8.8(google public dns)を使って名前解決を行うインスタンスを生成 irb(ma…
いやぁハマった。RubyでFile.open()する際のモードの話。結論から言うと、"r+"が万能で、"w+"はすでにファイルがあるときは0バイトにされ、"a+"は末尾にしか書けない。リファレンスはこれ。読んだつもりだったけど理解が不十分だったらしい。 やりたいこと 1…
ソースから入れたら詰まった。悲しい。 extconf.rbでは共有ライブラリ(.so)を見に行くけど、ソースからのインストールだとスタティックライブラリ(.a)しか作られないのが原因だったっぽい? NArray gemから入れる。 # gem install narray PGPlot 諦めてRPMか…
Ruby-listのMLで流れていた、[ruby-list:47175] 金額を漢字フォーマット 億, 千, 万を見て、汎用的に「n桁で区切っていく接頭辞系」を作れないかなと思って試しにやってみた。 #!/usr/bin/ruby -Ku # -*- coding: utf-8 -*- Units = [ "" , "万", "億", "兆"…
IPアドレス・サブネット関係の処理が必要になったので調べた。 "IPAddr"クラスを使うようだ。そのメモ。参照:プログラミング言語 Ruby リファレンスマニュアル irb(main):001:0> require 'pp' => true irb(main):002:0> require 'ipaddr' => true irb(main)…
http://segment7.net/projects/ruby/drb/DRbSSL/を参考に。SSL/クライアント認証を使わない場合に比べどれくらいのオーバヘッドが生じるのかを簡単にベンチマークしてみた。500回「new_with_uriして there_object.hello("")する」ベンチマークスクリプトを10…
Fedora12 x64で試す。ruby1.8, ruby-develを入れておく。解凍してパッチを当てる。次の内容のrfuse-ng.patch を作る diff -Nurdp org.rfuse-ng/ext/rfuse.c rfuse-ng/ext/rfuse.c --- org.rfuse-ng/ext/rfuse.c 2010-05-04 01:57:18.000000000 +0900 +++ rfu…
Rubyのbegin-rescueについて勘違いしていたのでメモ。Rubyでは、Object->Exception->StandardErrorのような継承構造になっており、独自の例外クラスを作って識別する際には、Exceptionを継承するのではなく、StandardErrorを継承した方が(俺の)思っている…
C#で言うところのEventHandlerみたいな奴がRubyで欲しくなったので勉強してみた。 #!/usr/bin/ruby -Ku # -*- coding: utf-8 -*- # 呼ばれる側 その1 class Class1 def class1_print puts " called:Class1.class1_print()" end def class1_print_with_arg(ar…
@repeatedly謹製のDS(Discovery Service)である、Shule-aroonを使ってみたメモ。 インストール 環境はCentOS5.4。SPとして動作させているサーバ上にDSを構築。 gitをインストーる。 http://brass.to/blog/yum_dag.htmlを参考にしてdagレポジトリを登録してお…
前回に続いてRinda。RindaのTupleSpaceを使ってデータをやりとりできるようになったので、今度はほかのプロセスからデータが更新されるようなケースで、その更新を反映させながら動作するようなデーモンっぽいものを作ってみます。ほかのプロセスなどによる…
LindaのRuby実装、Rindaを使うことになったのでそのメモ。Rindaすげーよ! Rindaについては http://www.druby.org/ilikeruby/d208.htmlをご覧ください。非常に丁寧な解説があります。 TupleSpaceデーモンを作ってみる いきなりかよ、って感じですが、今回作…
TIG(TwitterIRCGateway)のTypableMapについては、TwitterIRCGatewayをより(俺にとって)便利にする - しょんぼり技術メモをご参照ください。あるユーザの発言を表示したいときには、#Consoleで、 timeline [screen_name]としてやれば最近の発言が取得できま…
CentOS 5.3で WWW::Mechanizeを使おうとしたら、どうもうまく行かなくて困った。 libxml2-develやlibxslt-develをインストールしてもダメ。http://groups.google.com/group/nokogiri-talk/browse_thread/thread/56db4580e3670aedを見る限り、どうやらRuby 1.…
※注意:本記事はすべてTwitterIRCGateway 2.xについての記述です。 また、TIGや付属のスクリプトはMITライセンスで提供されているため、 本記事におけるコードもMITライセンスとします。 TwitterIRCGateway(以下TIG)は、TwitterをIRCクライアントから使うこ…
自分用メモ。RoR以外でAR使いたいシーンがあったりなかったりするので。 require 'rubygems' require 'activerecord' としておいて、 ActiveRecord::Base.establish_connection( :adapter => 'postgresql', :host => 'localhost', :username => 'user', :pas…
curlに投げたりするために必要になったので、適当に書いてみた。 #!/usr/bin/ruby # check argument if (ARGV.length != 1) abort("Usage: bin2URLEnc.rb binaryfile") end infile = ARGV[0] File.open(infile, "rb"){|fp| while (buf=fp.read(1)) do s = sp…