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

Linux Mint 17.2 に RMagick を入れる

ImageMagick を Ruby で使おうと、Bundler で RMagick という Gem を入れようと思ったのだが、エラーが出た。ImageMagick は入っているのだが。

GreenShoes を使って画像ファイルの変換 GUI を作ってみる

Ruby の GUI ツールである GreenShoes を使ってみました。 Linux mint 17.2 で確認しました。ImageMagick のインストールが必要です(Gem 'RMagick' は必要ありません)。 $ sudo apt-get install imagemagickGreenShoes についてはこちらも。 単独のファイ…

OpenGL のウィンドウを bmp 画像ファイルとして保存する(Ruby)

Ruby で OpenGL のウィンドウ・キャプチャをしようと苦労していたのですが、すばらしいライブラリを発見して成功しました。ウィンドウを BMP ファイルに落とします。Ruby で OpenGL を使うことについては、ここが参考になれば幸いです。RubyでBMPファイルを…

JavaScript で i 番目のボタンが押された時に処理をする方法

ここを読んでいて、(本文とはあまり関係がないけれど)では i 番目のボタンが押されたときに i を使って処理をするには、どうしたらよいかと考えた。ただし、HTML の中に onclick を書いて処理したくない(全部ちがう関数名にしないといけないので)。これ…

Ruby でプロトタイプベースのOOPは可能か

オブジェクト指向JavaScriptの原則作者: Nicholas C. Zakas,和田祐一郎出版社/メーカー: オライリージャパン発売日: 2014/06/18メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を見る JavaScript では以下のように書けます。 var person = { n…

Ruby の lambda は第一級オブジェクト(だと思う)

JavaScript の関数は第一級オブジェクト(第一級関数)だとよく言われますね。変数に代入できるし、関数の引数にすることができるし、関数の戻り値にすることもできます。以下のとおりです。 function a() { console.log("Hello!"); } function f(x) { x(); …

Ruby で OpenGL

Ruby でも OpenGL が使えるようですが、日本語ではぐぐっても古い情報が多いので、できるかやってみました。Linux Mint 17.2, Ruby 2.2.3 で確認しました。'OpenGL' という Gem(公式HP)を入れればいいのですが、その前に Linux の OpenGL 関係のライブラリ…

Ruby の C拡張でモンキーパッチ(オープンクラス)

なんと、C拡張でモンキーパッチまで可能だとは! ここが参考になりました。前記事の C拡張をオープンクラスで実現します。Bundler を使っています。ソースは以下。 #include "utilsc.h" long gcd(long x, long y) { long tmp; if (x < y) {tmp = x; x = y; y…

Ruby の C拡張を作ってみた

プロジェクト・オイラー(参照)の計算高速化のため、Ruby の C拡張に挑戦してへろへろに疲れました。参考にしたのはここ、ここなど。公式ページ(だと思う)がやはり詳しいです。ここも読むべきでしょう。(※追記 ここも追加。)とりあえずソース。 #includ…

プロジェクト・オイラーの Problem 68, 69

Problem 68。 def sum(i); @b[i].inject(:+); end max = 0 @b = Array.new(5) [10, 9, 8, 7, 6, 5, 4, 3, 2, 1].permutation(10) do |a| next unless a[0] == 10 or a[1] == 10 or a[2] == 10 or a[3] == 10 or a[4] == 10 @b[0] = [a[0], a[5], a[6]] @b[1]…

Python の os.walk もどきを Ruby で

Python に os.walk という関数があって、よく Python の入門書で自慢されているので、遊びで Ruby でマネしてみました。あるディレクトリ以下を再帰的にトラバースします。ただし、Python の実装そのままではなくて、面倒なのでマネだけにしてあります。同じ…

ディレクトリの保存

コピー先のディレクトリにコピー元のディレクトリ乃至ファイルがない場合、コピー先に再帰的にコピーします。コピー元になくても、コピー先のディレクトリ乃至ファイルを削除することはありません。また、ファイルが変更されているかは考慮しません。つまり…

Enumerable モジュールの include(Ruby)

Enumerable モジュールを include することで、Enumerable の多くのメソッドが使えます。必ず each を実装すること。 class SortedList include Enumerable def initialize @data = [] end def <<(element) (@data << element).sort! end def each @data.eac…

Ruby で gnuplot を使い関数グラフを描く

Python の pylab で簡単に関数グラフが描けたので(参照)、Ruby でも出来ないかとぐぐってみたところ、なかなか簡単なやつがありました。Linux で使える Gnuplot というツールのラッパーGem があったので使ってみます(ソースコード)。すでにここにとても…

Python 3.4 に matplotlib を入れる

T_NAKA さんのブログを拝見していたら(参照)、Python で簡単に数学の関数グラフが描けるようである。これはいいというので、自分も試してみました。コードはこんなに簡単。 from numpy import * import pylab as plt x = linspace(-10, 10, 100) y = x plt…

Linux Mint 17.2 で Wine を使ってみた

Wine とは Linux で Windows のソフトを使えるようにするものです。情報はぐぐればたくさん出てくるので、ここで書くことはあまりない。ちょっとしたことだけ。まずインストールだけれども、僕は「ソフトウェアの管理」で入れました。最新版が欲しい人はぐぐ…

Ruby でインクリメントは可能か

結論から云うと、無理。Integer を継承したクラスを作っても、new メソッドが定義できない。無理やりインクリメントとデクリメントしかないクラスを作ることはできるが、そんなことをしても意味がない。おとなしく i += 1 とか書こう。下は無理やりクラス。 …