ruby

はてなダイアリーの日記データを hatena-mode 用のファイルに変換する

はてなダイアリーのエントリを hatena-mode 用に全部ローカルに持ってこようと思ったんだけど、hatena-mode の hatena-get-webdiary はなんか自分の環境だとうまく機能しないので、Ruby でやることにした。 はてなダイアリーのエクスポートは はてダの「管理…

既存のメソッドをオーバーライドするときに、以前のメソッドを呼び出す方法

既存メソッドを override する場合、以前のメソッドも呼び出すには alias または alias_method を用いて別名保存しておきます。alias_method の例 alias_method :original_foo, :foo http://wota.jp/ac/?date=20060503#p01 例 ary.size = 10 の ary[10] を参…

ポーカーの役判定

エロと風俗情報満載 どう抜く? 引数に手札を与えると、ポーカーの役を表示するプログラムを作ってください。 条件: * スートはS,D,H,C、ランクはA,2〜9,T,J,Q,Kのそれぞれ一文字で表します。 * 手札は S2D5H3CQS9 のように10文字で指定されます。特にソー…

カレンダー生成

404 Blog Not Found:javascript - カレンダーを作るのソースを JavaScriptの勉強がてら読んでみることにしました。 ネタ元のネタ元*1はエロと風俗情報満載 どう抜く?だったので、 danさんのソースを読む前にまず自分もRubyで書いてみることにしました。 で…

経路探索アルゴリズムA*をRubyで実装してみた

前回書いた経路探索アルゴリズムA* - gan2 の Ruby 勉強日記が たくさんブクマされててちょっとびっくりです(;゚Д゚) 実装はFlash(Action Script)でやろうと思っていたのですが、 その前にRubyで書いてみることにしました。 途中、アルゴリズムの理解が不十分…

nの階乗を求めるプログラムを1行で

Life is beautiful: 教えながら学ぶRuby:イテレータに片思いの問題2を1行でやってみた。 1つ目はすごく下手なやつ。 2つ目はRubyならではって感じ。 def fact1(n) n > 1 ? n * fact1(n-1) : 1 end def fact2(n) (1..n).to_a.inject(1){|r, i| r * i} end p …

mp3ファイルの名前の先頭から数字を取り除く

こんなスクリプトでもアップしないよりはいいだろう、 ってことでアップしておく。 =begin mp3ファイルの名前の先頭にある数字を消す。 (数字は大体トラックナンバー。) =end require 'find' root = ARGV[0] || '.' Find.find(root){|path| dirname = File.d…

月末の日を返す

その月の最大日付を返すユーティリティ - プログラムメモを見て僕も書いてみた。 僕ならこうかなぁ。 require 'date' class Date def max_day max_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] max_days[2] = 29 if self.leap? max_days[sel…

配列を要素を含めて全てコピーする

ary2 = Marshal.load(Marshal.dump(ary1)) を使う。 このような複製を深いコピー(deep copy)という。 ary2 = ary1.dup や ary2 = ary1.clone では、配列はコピーされても、 配列の要素が参照しているオブジェクトはコピーされない。 そのため、ary2 で破壊…

ruby-electri.el を使っているときに {|e| が勝手に { |e| になっちゃうのを防ぐ

ruby-electric.el の168行目にある (insert " ") をコメントアウトすればOK。 コメントアウトする行を周辺の5行と一緒に見るとこんな感じ。 (if (ruby-electric-is-last-command-char-expandable-punct-p) (cond ((ruby-electric-code-at-point-p) ;(insert …

RubyでCSVをパースするならLightCSV。でもそれでもPythonには全然敵わない。

http://itoshi.tv/d/?date=20070715#p01 ruby lightcsv.rb Mouse430_2.na22.annot.csv > /dev/null 21.85s user 2.24s system 99% cpu 24.245 total ruby csv.rb Mouse430_2.na22.annot.csv > /dev/null 556.47s user 2.42s system 98% cpu 9:26.36 total py…

メソッドの名前の付け方で悩む

ユーザを管理するクラスを作るときに、 ユーザの登録と削除をするメソッドの名前を考えいてふと思った。 entry の対義語って何だろう? (どうやら exit のようです。) そしてその疑問をチャットで友人にぶつけているうちに、 メソッドの名前の付け方全般に…

エロと風俗情報満載 どう抜く?

Excelの桁表示は 1桁目はA、2桁目はB、以下C、D、 E…とすすみ、Zの次はAA AB AC…と続きます。AZの次はBAです。この表記法で1から100までを表示してください。出力結果は下記のサンプルの「...」の部分に適切な文字列を埋めたものになります。A, B, C, ... CU…

バトエンのシミュレータ

ドラゴンクエスト バトエンG のシミュレータっぽいものを書いた。 えんぴつのデータはYAML使って読み込むよっ( `・ω・´) まだまだ雛形といった感じだけど、 発展させていくと面白いものができるかもねぎ。 今のところは、CUIで画面をただ見つめるのみ。 出力…

eshell は出力するのが遅い?

例えばこんなプログラムを実行してみると分かる。 lineがなかなか出力されない。 コマンドプロンプトだったらすぐに出力されるのに。 while line = gets line.chomp exit if /^e|q/ =~ line puts line #=> ここ止まりまくり end 内部バッファをフラッシュさ…

Cygwin を入れたら Cygwin 用の Ruby がでしゃばってくる

しょうがないからActiveScriptRubyはやめて、 Cygwin版Rubyに乗り換えようかな、と思ったら、 irbをどうやって動かしたらいいのか分からない。 RubyGemsも入れたはいいけどなんか動かない・・・。 挙句の果てには、Cygwinのsetup.exeから、 Interpreterにあるru…

# で始まる行を取り除いて出力

エロと風俗情報満載 どう抜く? ファイルから1行ずつ読み込み、"#"で始まる行だけを取り除いてファイルに出力するコードを書いてください。 サンプル入力 hello! # remove this # don't remove this bye! サンプル出力 hello! # don't remove this bye! せっ…

ピラミッドを作る

http://ja.doukaku.org/8/ 正の整数nが与えられたときに、高さnのピラミッドを出力するプログラムを作ってください。 n=4の時の出力は下のようになります。 * *** ***** ******* やってみた。 class Pyramid def initialize(n) @ary = [] 1.upto(n) do |i| @…

サーバにCGIスクリプトをアップロードして動かすときの注意点

shebang スクリプトの先頭行に #!/usr/local/bin/ruby*1 が入っていることを確認 Content-Type スクリプト中に print "Content-Type: text/html\n\n" が入っていることを確認 アスキーモードでの転送 FFFTPなら オプション > 環境設定 > 転送1 にある、アス…

Ruby のデバッガの使い方まとめ

以下の3つが参考になる。 いやなブログさんのがコンパクトにまとまっていて分かりやすかった。 スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl - bkブログ Wiki系過去ログ - あさあさ.tk Rubyリファレンスマニュアル - debug

インスタンス変数を外部から参照できない

なんでこれでnilが出力されるのー? なんで'A'が出力されないんだうわー。 class A attr_reader :var @var = "A" end a = A.new puts a.var #=> nil ほんとに分からない。何で?? ちなみに、これだと意図した通りに'A'と表示される。 class A attr_reader :…

Meadow から Ruby のデバッガを起動する

rubydb3x.elをsite-lisp以下に置き、.emacsに以下を追加する。 rubydb3x.elはRubyのアーカイブの中にあるmisc以下から入手できる。 ;;; Ruby のデバッガを Emacs から使うための設定 ;; M-x rubydb (autoload 'rubydb "rubydb3x" "run rubydb on program fil…

迷路作ってみた

アルゴリズムは自動生成迷路にのってる棒倒し法。 ソースはあんまりキレイじゃないかも。。 ネストが多いと見づらいね( ´・ω・`) リファクタすべき? 明日ちょっとやってみようかな。 CGIバージョンはここ。 #!/usr/local/bin/ruby #print "Content-Type: te…

/(?!)/ は「どんな文字列にもマッチしない」パターン

るびま Regexp.union は Ruby 1.8.1 で追加されたメソッドで、引数がすべて文字列の場合は以下と同じ意味です。 def Regexp.union(*strings) return /(?!)/ if strings.empty? new(strings.map {|s| escape(s) }.join('|')) end 例えば Regexp.union('aa', '…

inspect はオブジェクトを人間が読める形式に変換する

p と同じような効果を持つ。 使い方は違うけども。 hash = { 'hoge' => 10, 'fuga' => 20, } puts hash #=> fuga20hoge10 puts hash.inspect #=> {"fuga"=>20, "hoge"=>10} p hash #=> {"fuga"=>20, "hoge"=>10}

Ruby関連のファイルがUTF-8で開かれるようになった

なんだろう。rails.elを入れたせいかな? SJISで書いておいた日本語が片っ端から文字化けするので困る( ´・ω・`) 以前のファイルを開くときは C-x RET c sjis が必須に。。 追記 rails.elの一番下の方に、 (modify-coding-system-alist 'file "\\.rb$" 'utf-…

Rails を触らなくても入れて置いたほうがいい rails.el

Railsのことはよく分からないけどRubyは使ってるって場合でも、 rails.elを使うと開発効率がよくなる。 例えば、if と入力したときに、ついでに end がついてくれたり、 同じように { に対応して } が自動で挿入されたりする。 ( や ' や " なんかについても…

今、人工無能と話せるチャットを作ってる

デモ→http://www.gan2.65rpm.com/lab/ajax-chat.html Ajaxなチャットを作ってみた - gan2 の Ruby 勉強日記の続きで、 適当にでっちあげた人工無能を使って、チャットで遊んでいる。 名前はむのぅ。 その名の通り本当に無能なばかたれちゃん。 学習機能は、…

OpenSearchライブラリを使ってみる

OpenSearchで「Ruby」をはてな検索する。 そしてアイテムごとにタイトルとリンクを出力。 require 'rubygems' require 'opensearch' require 'kconv' url = "http://search.hatena.ne.jp/osxml" os = OpenSearch::OpenSearch.new(url) # description の各要…

Yahooの日本語形態素解析Webサービスのテスト(2)

前回のを改良してみた。 入力された文章から名詞を抽出して、タグクラウドで表示する。 デモはここ。 出力の部分はAjax。 タグクラウドの作成には、http://yatsu.info/articles/2005/08/05/ruby%E3%81%A7tagcloud-tagcloud-rubyを使わせてもらった。 以下は…