Ruby

Deep CopyにMarshalを使わないこと

RubyでオブジェクトをDeep Copyするとき、面倒だからといって、 clone_obj = Marshal.load(Marshal.dump(obj)) としないこと!Marshalがとにかく遅いからね!

RubyでLogger作ってみた

RubyでLoggerっぽいものを作ってみました。実は、Rubyには標準ライブラリの中に「Loggerクラス」というものが有ります。じゃあ、要らないじゃん、ってことになるんですが、次の点でぼかぁ気に入らなかったのです。 クラスなので、Newして使う インスタンスになってしま…

編集距離

編集距離、一般には「Levenstein Distance」と言うらしいです。二つの文字列について、片方を「削除、挿入」をそれぞれ何回することによってもう片方と同じものにできるか、という数字です。よく、二つの文字列の類似度を測る基準として用いられます。この編…

Ubuntu 12でRuby

まず以下を実行 wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add - sudo wget https://www.ubuntulinux.jp/sources.lis…

RubyInlineを使ったRubyのスクリプトをocraで実行ファイルにする(まとめ)

簡単結論だけ Ruby1.9上でRubyInlineを使ったRuby ScriptをWindows用実行ファイルにするには以下を使う。 環境: RubyInline(3.8.4) (http://rubyforge.org/projects/rubyinline/) Ocra(1.1.3) (http://rubyforge.org/projects/ocra/) Rubyinstaller 1.9.1-p…

RubyでBOM付きファイル出力

間抜けながらはまったこと。 $KCODE="u" lines = ["ほげ(X).","ほんげげ(X)."] io = open("result.txt","w") lines.each{|line| io.print(NKF.nkf("-W8 -w16L",line)) } io.close なんてやってて、SWI-Prologで読み込ませると怒られていた。「なんだよーUnic…

Requireについて

なれてる人は当然のことだと思うけれど、何となく書いてみます。それは、「Require」の書き方。 普通は(本当に普通なのか知らないけれど)、以下のように書きますよね? require 'nkf' class Hoge def utf8(str) return NKF.nkf("-w8",str) end end まあ、P…

演算子の定義

リファレンスからのコピペだけど、これさえ知ってればOKかな。 つまり、 Rubyで二項演算子は左結合 単項演算子定義の時、「@」がselfになる(普通のメソッド定義でも使えそうだな。意味ないけど) '[' と ']' のような対が必要な演算子は、引数が間に入る '[…

クラスメソッドの呼び出し制限設定

class Test def Test.foo; end private_class_method :foo end で、クラスメソッド foo は Private になる。普通の privateじゃ駄目だそうな。 追記 リファレンスマニュアルのFAQに載ってたけど、これ、「クラス・モジュールの定義」の章に書くべきじゃない…

rubyw: No such file or directory(load error)

Cygwinのコンソールで実行できるからいいやと、放置していた問題を解決。

Rubyの実行ファイル化

メモ。 http://blog.livedoor.jp/cannondalekota/archives/50060269.html RubyScript2Exe まず、rubyscript2exe.rbをEXE化したいrbファイル(ここではapplication.rbとする)のあるフォルダにコピー。 次に ruby rubyscript2exe.rb application.rb と実行す…

Rubyの環境再構築

Eclipse 3.3.1.1*1と、RDT 0.9(Nightly Build)を使っていたのだけれど、どーにもRDTの挙動不審さに我慢がならなくなった。 *1:3.3.1のままだとクリップボードの内容の先頭から2バイト欠落するバグがあります。3.3.1.1を使いましょう

ID3v2(Unicode)に統一するScript

mp3のタグの文字コードがそろってないのと、ID3v1だけだったり、ID3v2とID3v1が両方あったりとなんだか美しくないので、統一したくなった。Foobar2000はUnicodeに対応しているらしい。そう、もう時代はきっとUnicode。