Ruby

空気ねこにもおおよそ分かるにんげんは牛ではないことを RSpec で証明してみた

ネットミームをコードで表現してみるかもしれないシリーズ。 まあ、にんげん(Human)と牛(Cow)の抽象クラス Animal を定義する: # lib/animal.rb class Animal end 中身は何も無いけど、そのうち実装されるっしょ。ヘーキヘーキ。 ここら辺で Animal クラス必…

空気ねこにもたぶん分かる RSpec

空気ねこは猫、エレメンタルの青パーマネントで飛行を持ってると思われる。 消費マナは多分 (2)(B) でパワー/タフネスは 2/3 か 3/2 だと思われる。 この記事は RSpec のドキュメントを読んで学んだことを自分用にまとめたものなので、他の人にはあんまり役…

DLR で .NET Framework 上で動く Ruby 風言語 Beryl を書いてみようとした

IronRuby は衰退しました Mirah という JVM 上で動く Ruby 風言語があるそうで、ググっていたところ .NET Framework 上で動く Ruby 風言語を作りたいなーと思ってしまった。 まずは IronRuby を目コピしてみることにした。 分かったこと Linux 版の MonoDeve…

Sinatra ぐろーいんぐ

Mojolicious::Guides::Growing を Sinatra で書いてみた。 まだログインマネージャとか書けれてないので序盤の序盤だけ。 基礎 わたしたちは新しいアプリケーションを、1 つの実行可能な Ruby スクリプトからスタートします。 % mkdir ./myapp % cd ./myapp …

TreeView で データを表示させてみたと思う

Gtk::TreeView は、Gtk::TreeModel オブジェクトを表示するためのウィジェットだよ。 このウィジェットはツリー上のデータが表示できるってわけじゃなくて、Windows Forms でいう ListBox みたいなこともできるんだ。 習作として、ENV の id と value を表示…

Ruby/Tk で Hello, World! してみた

なーんにも書くことないんだけど、とりあえずやってみた。 require 'tk' TkLabel.new { text "Hello, World!" pack } Tk.mainloop

とりあえず、Ruby で .NET Framework のバージョンを調べてみた

Windows 使ってると、.NET Framework のバージョンが気になるよね。 そこで、Ruby で .NET Framework のバージョンを確かめるスクリプトを書いてみたよ!みたよ! 実はね、.NET Frameworkのバージョンを確認する方法 [atmarkit.co.jp] っていう記事を覧て書…

あなたの予想に反して、この式が評価されているでしょうか?

ということで、こういうことをしたかったんだけど: puts if ((0..12).cover? Time.now.hour then "Hello, World!" else "Good evening, World!" end これはシンタックスエラーになる。 他の方法で上のようにワンライナーで書ける方法は無いかと考えてみたと…

Ruby で SQLite ってみた

Ruby で sqlite3 を使うにはコマンドプロンプトにこんな風に打ってね。 gem install sqlite3-ruby 使う時は上の方に: require 'sqlite3' って書いとけばおk。 次は早速データベースを作成しよう。 今回の例題は SQLで集合演算[codezine.jp] の「差集合で関…

require 'zlib' で false になる

とりあえず、./ext/zlib いけ、話はそれからだ。 require 'zlib' が false を返すのは読み込みに失敗したからで、 ruby をビルドして使っているなら、 zlib.so がビルド出来ていないからだ。 まず、ruby のソースがあるディレクトリをターミナル、またはコマ…

twitter モジュール使ってつぶやいてみた

bot を作ろうと思って最近ご無沙汰してたんだけど、またググってみた。 そしたら、よさげなソースが見つかった[hisasann.com] のでついったーに つぶやくとこだけ抜き出して書いてみた。 @foo に うふふ… とつぶやかせるスクリプト: # testtweet.rb require…

makefile を自動生成するスクリプト書いてみた

makefile.in 必須w #!c:/bin/ruby/bin/ruby # -*- encoding: shift_jis # mkconf.rb require 'optparse' opt = OptionParser.new opt.version = "0.0.1" OPTS = {} DEFAULT_PREFIX = "./bin" DEFAULT_INCLUDEDIR = "./include" DEFAULT_SRCDIR = "./src" DE…

optparse が使いやすすぎるので調子に乗って mkdir 書いてみた

エンコードがアレだけど、書いてみた。 --mode 実装してないけどね! #!c:/bin/ruby/bin/ruby # -*- encoding: shift_jis -*- # mkdir.rb require 'optparse' Encoding.default_external = Encoding::Shift_JIS Encoding.default_internal = Encoding::Shift…

前に書いたアーカイヴるスクリプトを optparse 使って書き直してみた

OptionParser を作成して、on でコマンドライン引数を追加するような感じ。 くわしくはここ [doc.okkez.net]で。 #!/c:/bin/ruby # -*- encoding: shift_jis -*- # archive.rb require 'optparse' opt = OptionParser.new opt.version = "0.3.1" OPTS = {} o…

めんどくさいので Ruby でカテゴリをソートしてみた

はてなダイアリー書いてると、カテゴリーがソートされてなくてちょっとイラッ☆ってしちゃう*1よね。 幸いにも、カテゴリを編集できるみたいだから、ファイルにコピペして、ソートしてみるよ。 コピペしたのが category.list で、ソート後のファイルが sorted…

とりあえず、require 'zlib' できた

ruby 1.9.2 rc1 を make instal したらできた…。 どーいうことなの…?

RSTRING(str)->ptr と RSTRING(str)->len の ptr と len が無いんだそうだ 2

ビンゴですた。 s/RSTRING(z->input)->ptr/RSTRING_PTR(z->input)/g とかしてたんだけど、めんどくさくなって、 s/RSTRING(\(.*\))->ptr/RSTRING_PTR(\1)/g s/RSTRING(\(.*\))->len/RSTRING_LEN(\1)/g で、コンパイル通った。 出来上がったのは、zlib.so だ…

RSTRING(str)->ptr と RSTRING(str)->len の ptr と len が無いそうだ。

RSTRING は、 #define RSTRING(obj) (R_CAST(RString)(obj)) のように定義されている。 obj って、VALUE 型だったんだっけ? 多分、R_CAST だし、キャストしてるんだろう。 RString が、Ruby での文字列の実体だったのか〜。 RString 構造体は、こんな風にな…

HEAD をアーカイブるスクリプトを書いてみた

git archive なんてら〜って毎回やるのは*1めんどくさいので、書いてみた。 tag には、ver-1.0.0.0 みたいなのが入ってるの前提で。 #!/local/usr/bin/ruby # -*- encoding: shift_jis -*- # archive.rb versions = `git tag`.split( /\n/ ).delete_if { |ta…

`dirname' を書いてみた

File クラスに入ってるけど、書いてみた。 ルールはこんな感じ。 path の一番後ろのスラッシュより前を返すこと スラッシュを含まないファイル名に対しては "." を返すこと 先頭が "./" なファイル名に対しても "." を返すこと path が "C:/" のようなときは…

Ruby で which 書いてみた

which[q-e-d.net] ってのは、コマンドのパスを調べるコマンドなんだって〜。 偶然、whichコマンドを作る[atmarkit.co.jp] なんてページを発見したので、 Ruby で書き直そうと思う。 bat バージョンがこちら: @echo off for %%I in (%1 %1.com %1.exe %1.bat…

らでぃっくすを底としちゃうかもしれない その3

ついに分かった。 とりあえず、おさらいしておこう: 常用対数は底が 10 な log。 自然対数は底が E な log(ln*1 とも)。 で、底が b な lob を logb とすると logb x は: log(x) / log(b) で求められる。 log8 19 を計算してみよう。 foo = Math.log(19) / M…