2012-10-01から1ヶ月間の記事一覧

FFIにてRuby引数をC引数に変換してみる

ODEのdsSimulationLoopの引数に渡すため、文字列のArrayをC引数として扱うためには変換が必要です。 色々試して、とりあえず以下の方法なら渡せそうなのでメモします。 require 'ffi' @args = [$0, "-notex"] @argv = FFI::MemoryPointer.new :pointer, @arg…

Ruby-FFIでODEを動かす実験

Ruby-FFIでODE(Open Dynamics Engine)を試してみました。 最近、ODEの話題がめっきり減っている感じですが、ODEのサイトをのぞいてみるといつの間にかバージョンがode-0.12に上がっていました。 メンテナンスされているのは嬉しく思います。 さて、久しぶり…

Ruby-FFIでODEを動かす実験2

ODE付属のdrawstuffもFFIで動かしてみました。試した環境は、 ruby 1.9.3p194 @ CentOS on VMWare) jruby 1.7.0 @ Windows linuxでのコンパイルの場合、drawstuffの動的ライブラリは通常は生成されないので、工夫が必要です。 require 'ffi' module DrawStuf…

JRuby-FFIを使ってWindowsのMessageBoxを呼び出す

JRubyには、FFIライブラリがはじめから同封されています。 FFIは、Ruby/DLと類似しています。 以下にコードを記載します。 require 'ffi' module Win32 extend FFI::Library ffi_lib 'User32' ffi_convention :stdcall attach_function :message_box_a, :Mes…

JRuby-1.7.0 Releaseされたようです

1.7.0がリリースされたようで。 http://jruby.org/個人的に、以下の内容が嬉しい理由です。 Ruby1.9.3との互換 1.9での既知のエンコードに関する問題解決 invokedynamicのサポート 日々進化していますネ。 だんだんCRubyに戻れなくなります。 あとは起動時間…

Ruby/DLでWindowsのMessageBoxを呼び出す

Ruby/DLは標準ライブラリに含まれます。以下のバージョンで動作を確認しました。 Ruby-1.9.3p286 JRuby-1.7.0.RC2 # for 1.9.x require 'dl/import' module Win32 extend DL::Importer dlload 'User32' extern 'int MessageBoxA(int, char*, char*, int)' en…

JRubyのエンコードでつまづいた件

JRubyをやっていて文字コードの扱いがCRubyと異なるんです。 サンプルを載せてみました。以下のバージョンで試しています。 Ruby 1.9.3p194 JRuby1.7.0.RC2 JRubyとCRubyでのエンコード扱いの違い # coding: utf-8 puts DATA.read.encoding __END__ 日本語で…

ちょー簡易な電卓を作ってみました

勉強がてら電卓を作ってみました。 計算機能はevalに任せてしまった安易なものです。いまさら電卓のサンプルなんて作ってもあまり新鮮味はないですが。。。 それでもやっぱり一度は作っておかないとネ。 require 'rubeus' Rubeus::Swing.irb JFrame.new "den…

JEditorPaneでswingブラウザを作ってみましたが。。。

JEditorPaneを覚えたので、ちょー簡易ブラウザを作ってみました。 require 'rubeus' Rubeus::Swing.irb JFrame.new "swing browser" do |f| f.layout = BoxLayout.new :Y_AXIS JPanel.new do |p| p.layout = BoxLayout.new :X_AXIS JLabel.new "Site: " @url…

RSSを読み込んでみる

Rubyの標準ライブラリの'RSS'を使ってみました。 require 'rss' #$stdout.set_encoding('cp932') url = 'http://d.hatena.ne.jp/diarylist?mode=rss' result = RSS::Parser.parse(url) p result.feed_info puts "Channel: " + result.channel.title result.i…

JEditorPaneのハイパーリンクから外部ブラウザを起動する

JEditorPaneはHTML形式を表示させるのに便利です。 ここでは、ハイパーリンク表示とハイパーリンクをクリックした時にOS既存ブラウザを起動するコードをメモします。↑リンクをクリックするとブラウザが起動しリンクを表示します。ソースコードはこちら。 req…

JTextAreaとJTextFieldのサンプル(不具合対応あり)

Rubeus練習のため、テキストフィールドに文字列を打ち込んでEnterキーを押したらテキストエリアに貼り付ける、といった簡単なプログラムを作ってみました。ソースコードはこちら require 'rubeus' Rubeus::Swing.irb JFrame.new do |frame| frame.layout = B…

JEditorPaneでswingブラウザを作ってみましたが。。。

JEditorPaneを覚えたので、ちょー簡易ブラウザを作ってみました。 require 'rubeus' Rubeus::Swing.irb JFrame.new "swing browser" do |f| f.layout = BoxLayout.new :Y_AXIS JPanel.new do |p| p.layout = BoxLayout.new :X_AXIS JLabel.new "Site: " @url…

RSSを読み込んでみる

Rubyの標準ライブラリの'RSS'を使ってみました。 require 'rss' #$stdout.set_encoding('cp932') url = 'http://d.hatena.ne.jp/diarylist?mode=rss' result = RSS::Parser.parse(url) p result.feed_info puts "Channel: " + result.channel.title result.i…

JEditorPaneのハイパーリンクからブラウザを起動する

JEditorPaneはHTML形式を表示させるのに便利です。 ここでは、ハイパーリンク表示とハイパーリンクをクリックした時にOS既存ブラウザを起動するコードをメモします。↑リンクをクリックするとブラウザが起動しリンクを表示します。ソースコードはこちら。 req…

JTextAreaとJTextFieldのサンプル(不具合対応あり)

Rubeus練習のため、テキストフィールドに文字列を打ち込んでEnterキーを押したらテキストエリアに貼り付ける、といった簡単なプログラムを作ってみました。ソースコードはこちら require 'rubeus' Rubeus::Swing.irb JFrame.new do |frame| frame.layout = B…

JTableにてExcel風の行ヘッダ付きテーブルを作ってみました

SwingのJTableは、デフォルトでは列ヘッダは付きますが行ヘッダが付きません。 Excelのように行ヘッダ(1,2,3,4...)を付けるサンプルを作成したのでメモします。意外と情報が無かったんですが、実際ソースにしてみると結構シンプルに書けました。 require 'ru…

JRubyもうそろそろ1.7.0リリースか

みたらJRuby1.7.0.RC2がリリースされています。 RC1がついこの間だったので、もうそろそろ1.7.0が正式リリースの予感です。

ライブラリ中にテストコードを書く"if __FILE__ == $0"

自分で書いたライブラリを簡単にテストしたいなぁと思った時に使える方法です。 if __FILE__ == $0 #テストコード end ライブラリ中にこのように記載した箇所は、直接実行した場合には呼ばれるが、requireした時にはよばれません。 覚えておくと便利かもしれ…

スクリプト上でirbを起動する

irbはコマンドですが、スクリプトからも起動することができます。 require 'irb' IRB.start これで、irbと打った時と同じ動作になります。 JRubyのswing上で動作させるとjirb_swingのようなことができるはず。とりあえず下調べまで。