WebEngineでJRubyとHTML間で連携をしてみる

JRuby(JRubyFX)とWebView上のHTMLの連携を試してみる。JRuby側のボタンを押したらHTML上のspanにメッセージを表示して、 HTML上のボタンを押したらJRuby側のラベルにメッセージを表示するプログラムは、RubyコードとHTMLコードの2つを用意します。 require…

重い処理をバックグラウンドスレッド実行させてみる

重い処理をTimeline上に書いてしまうと、処理中はGUIが止まってしまうことになります。 それを回避するためにServiceとTaskを用いる方法があります。 重い処理をTaskに書いて、バックグラウンド実行し、GUIで定期的にモニタリングするようなプログラムを作っ…

円を左右に動かすアニメーション

JRubyFXでアニメーションをやりたくて、まずは簡単なところから始めてみた。 はじめに、サークルを描画して、大きさを150、色をgreen、位置を縦方向に200の場所においた。 そのあと、play関数を呼んで、 そこで、idが"c"となっているサークルのX方向をtimeli…

Timelineを用いて1秒ごとに時刻を表示するプログラム

JRubyFXによるアニメーションを調べていて、まずは簡単なところから始めてみようと思う。 テキスト(ラベル)を1秒ごとに更新するプログラムを作成してみた。 Timelineに登録されたハンドラを1000msごとに呼ぶという単純なプログラムになっている。 require …

[JRuby][JRubyFX] Ubuntu16.04でJRubyFXを動かす

手順としては次の通り。 Java8を入れる rbenvを入れる jruby-1.7.26を入れる jrubyfxを入れる サンプルを動かす まず、Javaを入れる。 $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installe…

シグモイド関数をグラフ表示

Ubuntu 16.04 で試した % sudo apt-get install gnuplot % gem install gnuplotrequire 'gnuplot' def sigmod( x ) 1.0 / (1.0 + Math.exp( -x ) ) end Gnuplot.open do |gp| Gnuplot::Plot.new(gp) do |plot| plot.title 'sample' plot.ylabel 'ylabel' plo…

UDPで送受信を行う

単純に2つのポートを開いて Server->Client ... port:10000 Client->Server ... port:10001 として双方向の通信を行ってみます。UDPのため送信されたデータが届くことは保証されないですが、TCPより手続きが簡単かと思います。 サーバ側のプログラム require…

RubyスクリプトからSSHコマンドを実行してみる

ブログの更新がずいぶんしてなかったのですが、 最近ようやくやる気も徐々に出てきて、何かやろうかなぁと思って、 Rubyを使ってリモート操作したいなぁと思い立ってとりあえずSSHコマンドを叩いてみることにしました。まずは、インストールから % jruby -S …

JRubyFXでWebブラウザを作ってみる

JavaFxになってSwingと比べてWebViewのエンジンが強化されているようです。 SwingでJavascriptとかHTML5とかがうまく動かなかったのがJavaFXではちゃんと動くっぽいです。 まずは簡単なWeb表示 require 'jrubyfx' class App < JRubyFX::Application def star…

これはいい!JRubyFX+SceneBuilder(fxml)を使ったGUI開発

JRubyFXはJavaFxをRubyっぽく書けますが、 そこにプラスしてfxmlを使うとよりGUI開発が簡単になります。 ここではJRubyFXでfxmlを使う方法をメモとして残します。 まずはJRubyでfxmlをロードする Scene Builderを使って、適当にhello.fxmlというファイルを作…

Ruby実装のTclインタプリタを作ってみた

Ruby実装のTclインタプリタを探していたのですが、 libtclのバインディングしか見つからなくって、しかたなく自分でつくってみました。 いろいろと手抜きはありますが、それなりに実装できたっぽいので以下に公開します。https://github.com/zuk74/pico-tcl…

JRubyでODEをはじめてみる2

前回に引き続き 今度はGUIで試してみます。オリジナルのODEにはdrawstuffというデモ用のGUIキット?が含まれています。 ode4jにもありがたいことにdemoのjarの中にdrawstuffが隠れています。 今回はdemoに含まれているdrawstuffを利用します。ode4jのdrawstu…

JRubyでODEをはじめてみる

物理計算エンジンOpen Dynamics Engine (ODE) をRubyでやりたい!という前々から願望があり、いろいろ調べているうちにJRubyならどうだろうということで試してみました。ODEはC/C++のライブラリですが、探してみるとJava版も存在しているようです。 Java版OD…

Windowsで簡単にRedmine on JRubyをデプロイするメモ

WindowsにてRedmineを立ち上げる方法はいろいろあると思います。 ネットで検索かければいろいろ紹介されていると思います。 ここでは、 誰でも手軽に インストールに手間をかけず 持ち運びが容易な(ポータブル) 方法を目標にします。データベースの選択は…

ANTLR4で生成したファイルをjrubyから触ってみる

ANTLR4でパーサまでを生成してクラスをjarにして、扱うときはJRubyからアクセスしてみます。 あまり、ANTLR4には詳しく説明しません。まだよくわからいので。 準備 Java JDK7準備 以下のページからJDKを落とします。 http://www.oracle.com/technetwork/java…

JRuby+LWJGLでGLSLを試してみる

はじめてということで、手始めに動くかどうかだけ試します。 GLSLのfragment側で色を緑にしてみます。 $:.unshift File.dirname(__FILE__) require 'java' require 'lwjgl.jar' import org.lwjgl.opengl.Display import org.lwjgl.opengl.DisplayMode GL11 =…

JRubyFXでボタンを押してラベルに表示するのを試してみた

jrubyfxのsampleをいろいろあさって、ボタンを押したらラベル表示を更新する簡単な実装を試してみました。実装イメージはこんな感じ。 hello2.rb require 'jrubyfx' class Hello < JRubyFX::Application def start(stage) with(stage, title: "sample", widt…

JRubyFXでまずは簡単なラベル表示をしてみた

まだ、JavaFXもよく理解していないですが、適当に実装してみます。 とりあえず、ラベルを使って文字列を表示するところから。 stage上に、まずはsceneを作って、その上にlabelとか貼っていけばよさそうです。イメージはたぶんこんな感じ。 hello.rb require …

JRubyFX+FXMLのデモを動かしてみた

今日試した限りでは、JRubyFXがrubygemsに登録されているものは動かなくて、直接githubから持ってきて、ようやく動きました。 2003/05/20にjrubyfxのバージョン1.0.0なるものがrubygemsにアップされたようです。 おそらく、FXMLローダあたりのバグが解消され…

JRubyFXのHelloWorldを実行してみた。

準備 # jruby -S gem install jrubyfx Hello.rb require 'jrubyfx' class HelloWorldApp < JRubyFX::Application def start(stage) stage.title = "Hello World!" stage.width = 200 stage.height = 100 stage.show() end end HelloWorldApp.launch

Jruby+LWJGL+RubeusでOpenGLしてみる

$:.unshift File.dirname(__FILE__) require 'lwjgl.jar' require 'rubeus' Rubeus::Swing.irb import org.lwjgl.opengl.AWTGLCanvas GL = org.lwjgl.opengl.GL11 class MyCanvas < AWTGLCanvas def initialize end def initGL GL.glClearColor 0.0,0.0,0.0,…

JRubyからImageIOで画像を触ってみる

JRubyならJavaのAPIが扱えるのでImageIOを使うと簡単に読み書きできると思います。 JPGからPNGに変換する require 'java' import 'javax.imageio.ImageIO' import 'java.io.FileInputStream' import 'java.io.FileOutputStream' def read_image name file = …

optparseを使わずにオプション引数をパースしてみる

optparseは使いやすいです。引数は"-X"のショートタイプと"--xxxx"のロングタイプが使用できますし、すっきりとした記述で書けます。ふと、"-test "のようなオプションはパースできないかと考えました。既に"-X"と"--xxxx"が処理できるのに"-xxxx"を処理する…

Rubyでtar.gzを解凍する方法

OSに依存することなく、Ruby上で圧縮データを解凍できるといいなと思うのは私だけでしょうか。 https://github.com/rapodaca/minitar gem install archive-tar-minitarrequire 'zlib' require 'archive/tar/minitar' include Archive::Tar tgz = Zlib::GzipR…

Rubyでunzipする方法

サイトをいろいろあさって、よさそうなものを手直してメモさせていただきました。 require 'fileutils' require 'zip/zipfilesystem' def unzip(src, dest) Zip::ZipInputStream.open(src) do |rf| src = src.encode("UTF-8").gsub("\\", "/") while entry =…

rakeを使ってテストを実行してみる

初心者もいいところで、テストのやり方も満足に知らないもので、ここでテストの方法を勉強です。 とりあえず、RakefileとTestUnitの組み合わせで作るのが簡単そうで触りとしてはよさそうです。 準備するもの Rakefile task :default => [:test] require 'rak…

sinatraでcoffee-scriptをはじめてみる

準備 あらかじめ、Node.jsをインストールしておいてください。 % gem install sinatra coffee-script ソースコード 必要最小限のコード量になっています。 hello.rb require 'sinatra' require 'coffee-script' get '/hello.js' do coffee :hello end get '/…

RVMインストール覚書

Vine6.1環境にRVMをインストールした時の覚書です。 % echo insecure >> ~/.curlrc % \curl -L https://get.rvm.io | bash -s stable --ruby通常のユーザで実行すると、~/.rvm へインストールされます。 root(su -)で実行すると、デフォルトで /usr/local/rv…

JRubyでpptを作ってみる

POIのHSLF形式がPowerPoint(ppt)にあたるようです。 とりあえず、タイトルに"Hello World"を表示させてみました。 require 'java' require 'poi-3.9-20121203.jar' require 'poi-scratchpad-3.9-20121203.jar' import org.apache.poi.hslf.usermodel.SlideSh…

Rakefileでg++コンパイルするとき、.oファイルを別ディレクトリにする

g++コンパイルするとき、".o"ファイルがソースと同じディレクトリにあるのがあまり好きではありません。 そこで、.objdirというディレクトリを作成し、そこに".o"や".mf"を置くようにしたいと思います。 CXX = "g++" CFLAGS = "-O2 -Wall" LIBS = "-lm" TARG…