2016-05-01から1ヶ月間の記事一覧

RMagick を使ってGIFアニメ(Ruby)

メソッド gifanme(delay, dir) です。dir は素材画像の入っているディレクトリ、delay は待ち時間(1/100秒単位)です。gifanime.gif という名前で出力されます。アニメーションされる順番はディレクトリ内のファイルのアルファベット辞書順になります。例え…

カジノゲーム「クラップス」のシミュレーション(Ruby)

ギャンブルのゲームで「クラップス」というのがあるそうで、カジノではとても盛り上がるらしいです。T_NAKA さんのブログ(参照)でこの「クラップス」のシミュレーションをやってあったのを拝見して、おもしろそうなので自分も Ruby でやってみました。T_NA…

ブロックと proc(Ruby)

ひとつのメソッドでブロックを使っても、 proc を引数にしても実行できる。 def output(&bk) bk.call end output {puts "test1"} a = proc {puts "test2"} output(&a) bk.call は yield でもいい。

OpenGLの座標系覚書き

OpenGL の五つの座標系 ローカル座標系(オブジェクト座標系、ボディ座標系、モデリング座標系) ワールド座標系 視点座標系(ビュー座標系) 投影面座標系(クリップ座標系、表示範囲) ウィンドウ座標系(スクリーン座標系、ビューポート) 我々がコマンド…

OpenGL のラッパーモジュール Opal を書いた(Ruby)

Ruby で OpenGL 遊びをしているうち、同じことを繰り返し書くのに飽きたので、せっかく Ruby を使っているのだから少しだけ Ruby っぽくするラッパーモジュール「オパール Opal」を書いた。Gem 'OpenGL' は、C言語のコードを移植するには便利なのだが。なお…

ライブラリ作成覚書(Ruby)

ちょっと考えてみた。デザインパターンっぽいのだけれど、何だろう。 module App class A def display=(st) puts st end def <<(st) puts st end def output(st) puts st end end def self.exec(&bk) A.new.instance_eval(&bk) end end App.exec do |x| x.di…

OpenGLで三次元表示(Ruby)

詳しくはこちら。下は画像キャプチャして GIFアニメにしたもの。ぐるぐる回っています。

Linux Mint 17.2 に Docker を導入

ここの情報が有用でした。以下、同じことを書きます。Linux のカーネルのバージョンが 3.10 以上であることを確認。 $ uname -r wget を使って Docker をインストールする。apt-get でやると古いバージョンがインストールされるのでダメ。 $ wget -qO- https…

Linux Mint 17.2 で IRuby と jupyter notebook(IRuby notebook)を使う

IRuby を使おうと思ったのですが、できるまでにかなり苦労したのでメモ。 環境は Linux Mint 17.2. Ruby 2.2.3.まず、iPython を入れないといけないので、Python のインストールが必要です。僕は既に virtualenv を使って Python 3.4 をインストールしていま…

Green Shoes でメモ帳を作る

やってみました。 require 'green_shoes' Shoes.app title: "Shoes Notepad", width: 600, height: 370 do ebox = nil text = "" read_text = "edit area" background papayawhip flow width: 1.0, height: 0.1 do button "読み込み", height: 1.0 do fname …

OpenGLでGIFアニメ(Ruby)

OpenGL の画像キャプチャ(参照)を使って、簡単な GIFアニメを作ってみました。 Ruby で書いたソースはこことここ。 GIFアニメは、Web サービスなどで簡単に作れます。例えばここ。 キャプチャされた画像は bmp ファイルなので、これを使って jpg 画像へ一…

Green Shoes で落書きを真似る

ここで Ruby/Tk を使って描いてある画像がきれいだったので、Green Shoes で真似してみました。 ちなみにこのサイトでは Ruby/Tk に悪戦苦闘されていて(参照)、とても感動的(?)です。僕は好きですね。 require 'bundler/setup' require 'green_shoes' i…

Ruby で外部イテレータを使う

ソートされた2つの配列を、ソートされた配列としてマージ(結合)します。 class Array def sorted_merge(ar) (self + ar).sort end end というのは(むりやりなので)なしです。 class Enumerator def next_be? begin peek rescue StopIteration return fal…

野良Gem のバージョンアップ

以前 Bundler と GitHub を使った野良Gem のバージョンアップについてまとめたのですが(参照)、もう少しちゃんとしたやり方がわかったのでメモしておきます。野良Gem 'Utils' を例にします。(バージョンアップではなく、野良Gem作成はここがわかりやすい…

Ruby の C拡張で約数を求めるメソッドを書いた

なぜか Ruby 本体には、約数を求めるメソッドがないようですので、C拡張で作ってみました。以前書いた Utilsc への機能追加です。コードは必要な部分だけ載せます。全体のコードはここ です。 #include "utilsc.h" #include "math.h" VALUE divisors(VALUE s…

Ruby の修飾子について

Ruby の if, unless, while, until は修飾子として使えますが、 puts i if (i = 1) #=>NameError: undefined local variable or method `i' for main:Object はこれ以前の行に i が出てこないかぎり、エラーなのですね。しかし i = 0 puts i if (i = 1) #=>1…