2012-10-01から1ヶ月間の記事一覧
ODEのdsSimulationLoopの引数に渡すため、文字列のArrayをC引数として扱うためには変換が必要です。 色々試して、とりあえず以下の方法なら渡せそうなのでメモします。 require 'ffi' @args = [$0, "-notex"] @argv = FFI::MemoryPointer.new :pointer, @arg…
Ruby-FFIでODE(Open Dynamics Engine)を試してみました。 最近、ODEの話題がめっきり減っている感じですが、ODEのサイトをのぞいてみるといつの間にかバージョンがode-0.12に上がっていました。 メンテナンスされているのは嬉しく思います。 さて、久しぶり…
ODE付属のdrawstuffもFFIで動かしてみました。試した環境は、 ruby 1.9.3p194 @ CentOS on VMWare) jruby 1.7.0 @ Windows linuxでのコンパイルの場合、drawstuffの動的ライブラリは通常は生成されないので、工夫が必要です。 require 'ffi' module DrawStuf…
JRubyには、FFIライブラリがはじめから同封されています。 FFIは、Ruby/DLと類似しています。 以下にコードを記載します。 require 'ffi' module Win32 extend FFI::Library ffi_lib 'User32' ffi_convention :stdcall attach_function :message_box_a, :Mes…
1.7.0がリリースされたようで。 http://jruby.org/個人的に、以下の内容が嬉しい理由です。 Ruby1.9.3との互換 1.9での既知のエンコードに関する問題解決 invokedynamicのサポート 日々進化していますネ。 だんだんCRubyに戻れなくなります。 あとは起動時間…
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をやっていて文字コードの扱いが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を覚えたので、ちょー簡易ブラウザを作ってみました。 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…
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はHTML形式を表示させるのに便利です。 ここでは、ハイパーリンク表示とハイパーリンクをクリックした時にOS既存ブラウザを起動するコードをメモします。↑リンクをクリックするとブラウザが起動しリンクを表示します。ソースコードはこちら。 req…
Rubeus練習のため、テキストフィールドに文字列を打ち込んでEnterキーを押したらテキストエリアに貼り付ける、といった簡単なプログラムを作ってみました。ソースコードはこちら require 'rubeus' Rubeus::Swing.irb JFrame.new do |frame| frame.layout = B…
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…
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はHTML形式を表示させるのに便利です。 ここでは、ハイパーリンク表示とハイパーリンクをクリックした時にOS既存ブラウザを起動するコードをメモします。↑リンクをクリックするとブラウザが起動しリンクを表示します。ソースコードはこちら。 req…
Rubeus練習のため、テキストフィールドに文字列を打ち込んでEnterキーを押したらテキストエリアに貼り付ける、といった簡単なプログラムを作ってみました。ソースコードはこちら require 'rubeus' Rubeus::Swing.irb JFrame.new do |frame| frame.layout = B…
SwingのJTableは、デフォルトでは列ヘッダは付きますが行ヘッダが付きません。 Excelのように行ヘッダ(1,2,3,4...)を付けるサンプルを作成したのでメモします。意外と情報が無かったんですが、実際ソースにしてみると結構シンプルに書けました。 require 'ru…
みたらJRuby1.7.0.RC2がリリースされています。 RC1がついこの間だったので、もうそろそろ1.7.0が正式リリースの予感です。
自分で書いたライブラリを簡単にテストしたいなぁと思った時に使える方法です。 if __FILE__ == $0 #テストコード end ライブラリ中にこのように記載した箇所は、直接実行した場合には呼ばれるが、requireした時にはよばれません。 覚えておくと便利かもしれ…
irbはコマンドですが、スクリプトからも起動することができます。 require 'irb' IRB.start これで、irbと打った時と同じ動作になります。 JRubyのswing上で動作させるとjirb_swingのようなことができるはず。とりあえず下調べまで。