Ruby

inf-ruby を導入してみた

Gauche プログラミングをする際は、Emacs 上で scheme-mode を使用しています。 EmacsにはScheme-modeというSchemeプログラミングをサポートするための環境があります。ここではGaucheとEmacsを使ってプログラミングするための 簡単なEmacsの設定について説…

Ruby でインベーダー

Ruby/SDL でスペースインベーダーっぽい何かを作っています。まだインベーダーは実装していませんが、自機と弾発射は仕込みました。 例によってクラスの設計でとても悩みます。どのようにクラスを分けるかという問いに正解はないのですが、正解を追い求めて…

Ruby/SDL でシューティングゲーム

昨年から思い出した時にぼちぼちと進めているゲーム作成。今日は思いつきで gimp で描いた背景画像をつけてみました。毎フレーム画面を描画する都合上、当たり前ですが極端にパフォーマンスが落ちる。put メソッドで描画するんじゃなくて、背景は背景で特別…

マルチスレッドと例外2

るびきちさんに添削して頂いちゃいました。 あと、「strip!」すれば最後の改行は取れるのでchomp!は不要。 そうでした。最初に chomp! した後に「前後の空白無視したほうがいいじゃね?」と思いついて strip! を後付けしたのですが、確かに chomp! いりませ…

マルチスレッドと例外

最近、「マルチスレッドプログラミング出来る?」と聞かれることが何度かありました。マルチスレッドプログラムはシングルスレッドなプログラムに比べて考える必要のあることが多く*1、プログラミングのコスト増加に比較してリターンが少ないため「基本的に…

宇宙船演算子

Ruby には比較を行う <=> という演算子があります。sort メソッド等は内部でこの演算子を利用して値の比較を行っているので、自作クラスにこの演算子を定義してオブジェクトの大小関係を明らかにすることが出来るようにしておけば、配列に入れた自作クラスを…

lambda と Proc.new について

先日「Ruby の Proc.new と lambda って何が違うか解る?」と聞かれることがありました。私はてっきり lambda は Proc.new のシンタックスシュガーだと思い込んでいたのですが、ピッケル本を見てみるとどうやら違うようです。リファレンスマニュアルには Pro…

クリップボードから Google 検索

Ubuntu 日本語フォーラムで googlizer の話題が出ていました。ドラッグで選択した領域*1を Google のアドレスと結合して既定のブラウザに突っ込むアプリのようです。 使い方としてはパネルに登録しておき、検索したい文字をドラッグして反転させた状態でアイ…