読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

俺がQiitaに投稿されたランダムウォークのGemをmrubyで動かした

パソコン・インターネット

はじめに

この記事は、@kjunichiの2014年パーソナルアドベントカレンダーの22日目の記事です。

なる素晴らしい投稿を見つけて、WebRubyで動かして、Jsdo.itの投稿さぼり気味だから、今年最後の作品かもなぁ。と作業を始めた。

コードは短いが

WebRubyでさっそく試したら、 配列に対しての#sampleメソッドがwebrubyに入っていなかった。

なんと、今回も

前回

今回

途中であきらるわけにはいかない

Chromebook買ったばかりで、いろいろ試したいのもあり、一旦WebRubyで動かすことは 潔く諦め、mrubyで動かすことに

mrubyの最新版ではデフォルトで、#sampleが使えるようにmrbgemがコンパイルされていた。

bin/mirb 
mirb - Embeddable Interactive Ruby Shell

> [1,-1,2].sample
 => 1
> [1,-1,2].sample
 => 1
> [1,-1,2].sample
 => -1
> [1,-1,2].sample
 => -1
> [1,-1,2].sample
 => 1
> [1,-1,2].sample
 => 1
> [1,-1,2].sample
 => 1
> [1,-1,2].sample
 => 1
> [1,-1,2].sample
 => 2

sleepがない!

のモジュールを追加するだけでよかった

が、どうも、CRubyのスリープとは異なり、小数点指定だと、動かないようで、整数で指定する必要がある模様。

-> usleepだと1秒未満のスリープを指定できた。

  # Use mrbgems
  # conf.gem 'examples/mrbgems/ruby_extension_example'
  # conf.gem 'examples/mrbgems/c_extension_example' do |g|
  #   g.cc.flags << '-g' # append cflags in this gem
  # end
  # conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
  # conf.gem :github => 'masuidrive/mrbgems-example', :checksum_hash => '76518e8aecd131d047378448ac8055fa29d974a9'
  # conf.gem :git => 'git@github.com:masuidrive/mrbgems-example.git', :branch => 'master', :options => '-v'
  conf.gem :github => 'matsumoto-r/mruby-sleep'
  # include the default GEMs
  conf.gembox 'default'

mrubyで今回のGemを動かすには、

gem install enjoy_markov

でインストールして、enjoy_markov.rbを取出し、以下を追加

range, speed = 20, 1
EnjoyMarkov.start!(range, speed)

mrubyでこの編集したenjoy_markov.rbを実行。

出来た!

mruby/bin/mruby enjoy_markov.rb
|                   *|                    |
|                  * |                    |
|                   *|                    |
|                    *                    |
|                    |*                   |
|                    *                    |
|                   *|                    |
|                    *                    |

Link

関連記事