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

JRuby+swingでinvokeLaterを使ってみる

SwingUtilities.invokeLaterというものを自分なりに理解してみました。 swingのスレッドについて Swingのスレッドは、通常スレッドセーフではありません。また、Swingには次のようなスレッドポリシーがあります。従わないと最悪デッドロックが発生することも…

JRuby+swingでスレッドを実行

JRubyのThreadを使って並列実行させるプログラムを作ってみました。 正直正しく書けているか自信がありません。ボタンを押すと、そのボタンが10秒間だけ無効となり、カウントダウンが終わると再び有効となります。2つのボタンは非同期で動作します。サン…

JRuby+swingで画像をドラッグ&ドロップで表示する(JPanel)

前回、ファイルをドラッグ&ドロップしてファイル名をテキスト表示できたので、今度はドラッグ&ドロップで画像表示に挑戦してみました。 以下に、サンプルプログラムを記載します。 require 'java' DataFlavor = java.awt.datatransfer.DataFlavor %w[ JFra…

JRuby+swingでtextile風の表記法からレイアウトしてみる(実験)

swingのレイアウトをJRubyで書こうとすると結構手間です。 GUI設計を手書きで書くのは、Rubyのスクリプト記述の手軽さがあると言えども、ベタ書きだとどうしても地味で冗長なコーディングになってしまいます。 なんというか、美しくないです。もやもやします…

フリーのルック&フィールを試してみる(JTattoo)

swingにはじめからインストールされているルック&フィール以外を試してみます。 とりあえず目についたものを試します。 JTattoo http://www.jtattoo.net/ここからJTattoo.jarを落とします。 require './JTattoo.jar' import javax.swing.UIManager UIManage…

多重配列のdeep copy

Rubyの配列をそのまま代入"="するだけだとメモリの参照先が同じなので同じ値しか返ってきません。 また、.dupや.cloneを使っても多重配列はダメみたいです。浅いコピーなので。。。 そこで配列の深いコピー(deep copy)する方法をメモします。 配列のdeep cop…

JRubyJava型変換

JRubyとJavaの型変換についてメモします。 Arrayjava.util.ArrayList #Array -> java.util..ArrayList ruby_ary = [1,2,3] java_ary = java.util.Arrays.as_list(ruby_ary.to_java) puts java_aray.class.to_s #java.util.ArrayList -> Array java_ary = jav…

JRuby+swingでファイルのドラッグ・アンド・ドロップを試す

Windowsとかからファイルをドラッグ&ドロップできるようにします。 swingの"TransferHandler"を使うと簡単に実現できるようです。 メモします。 ↓ドラッグ&ドロップ 全ソースコード # coding: cp932 require 'java' JFrame = javax.swing.JFrame JLabel = …

JRuby+swingでJFileChooserを試す

swingで外部ファイルを選択して何か操作するとき、"JFileChooser"を使うと便利です。 JFileChooserはファイル選択のための専用ダイアログで、使用するのがとても簡単です。 何かしらアプリを作ろうと思った時使いそうなのでメモします。 以下に全ソースコー…

JRubyでSWTを試す

JRubyでswtを試してみます。 JRuby+swtの情報がなかなか無いですが、とりあえずメモします。まずは、swtライブラリの準備です。 swtはEclipseのライブラリなのでJRubyには含まれていません。なので別途準備が必要です。swt.jarは以下URLから取ってこれます。…

JRuby+swingでJFileChooserを試す

swingで外部ファイルを選択して何か操作するとき、"JFileChooser"を使うと便利です。 JFileChooserはファイル選択のための専用ダイアログで、使用するのがとても簡単です。 何かしらアプリを作ろうと思った時使いそうなのでメモします。 以下に全ソースコー…

JRubyでSWTを試す

JRubyでswtを試してみます。 JRuby+swtの情報がなかなか無いですが、とりあえずメモします。まずは、swtライブラリの準備です。 swtはEclipseのライブラリなのでJRubyには含まれていません。なので別途準備が必要です。swt.jarは以下URLから取ってこれます。…

JRuby+swingでJavaクラスの冗長な呼び出しをeach文で記述する方法

たとえば、JRubyにてswingのJFrame, JButton, JLabelを使うとき JFrame = javax.swing.JFrame JButton = javax.swing.JButton JLabel = javax.swing.JLabel と書くが、これは冗長な記述でもう少し工夫したいと思い、いろいろ調べた所eachでできることがわか…

JRuby+swingを使って]画像を表示する(ImageIcon)

JRubyとswingを使って簡単に画像表示ができます。 以下にサンプルを示します。 require 'java' frame = javax.swing.JFrame.new "sample window" icon = javax.swing.ImageIcon.new "./img/baboon.png" label = javax.swing.JLabel.new icon frame.content_p…

JRuby+Windows環境でベンチマークを取る

Linuxでスクリプト処理時間のベンチマークを取るときtimeコマンドを使うと思いますが、Windowsでは代替案を探す必要がありそうです。僕はコマンドをよく知りません。JRubyを調べてたところ、"-b"をつければ良いようです。 % jruby -b -e "require 'rubygems'…

RVMの使い方メモ

RVM管理下で使えるRuby(バージョン)をリストする: rvm list known % rvm list known # MRI Rubies [ruby-]1.8.6[-p420] [ruby-]1.8.7[-p370] [ruby-]1.9.1[-p431] ・・・ インストールしたRuby(バージョン)をリストする: rvm list % rvm list rvm rubies jru…

複数の異なるバージョンのRubyを入れる

複数の異なるRubyを管理する方法をメモします。 RVM(Ruby Version Manager)を使うことでできます。 https://rvm.io RVMのダウンロードとインストール 通常のユーザで入れると$(HOME)/.rvmにインストールされます。 root(su -)だと、/usr/local/rvm にインス…

Rubyでlinuxのtree似のプログラムを作ってみる

Rubyのお勉強として、linuxコマンドの「tree」を題材にスクリプトを作ってみました。 def tree(path="./", pre=nil) unless pre puts path pre = " " end dir = Dir::entries path dir.delete_if {|d| d == "." or d == ".." } dir.each do |d| last = d == …

RubyでWindowsのtree似のスクリプトを作る

今度は、Windowsの「tree /F」を実行した時の表示と同じようになるようスクリプトを作ってみました。 # coding: cp932 def tree(path="./", pre="") puts path if pre == "" list = Dir::entries path list.delete_if {|d| d =~ /^\./ } dir = list.select {…

Rakefileでgccコンパイルしてみる

MakefileのRuby版であるRakefileでgccのコンパイルをやってみました。まずはMakefileで書いてみます。 CC = gcc all: hello hello: hello.o ${CC} -o hello hello.o hello.o: hello.c ${CC} -c hello.c clean: rm -rf hello *.o次にRakefileで書いてみます。…

JRubyでSwingしてみる

最近JRubyをよく使っています。(仕事でも) 何かと複数ファイルの文字列操作とかデータ操作とかの単純作業でRubyを使うんですが、 JRubyってJavaで動くからWindowsでも使えるので気に入っています。 プラスしてJRubyはJavaのクラスが簡単に呼べるのでJavaをRu…

JRubyで作ったスクリプトをwindowsユーザに提供する方法

良いスクリプトができたとき、その感動を他の人にも共有したくなる時があります。 ですが、Rubyスクリプトを他の人に実行してもらう時困ったことが起こります。 それは、Rubyを実行する環境が、他の人のデスクトップで整っていないことです。 これは致命的で…

RMagickをはじめてみる

RMagickというライブラリを使うと容易に画像を読み込んで編集して保存することができるようです。 でJRubyでやりたいなと思っていろいろ調べてよさそうな方法をメモします。 JRubyにRMagickをインストール WindowsでJRubyにRMagickを入れようとすると、なん…

ルックアンドフィールを設定する

swingはルックアンドフィールを設定できます。 調べるのに意外と苦労したのでメモしておきます。 知っている人にとってはどおってことない話だと思いますが。。 ルックアンドフィール一覧表示 まずは設定できる種類を一覧表示してみます。 require 'java' im…

はじめの一歩

はじめはやっぱり、これでしょう。 hello.rb puts "hello ruby" % ruby hello.rb

はじめまして

日々感動をメモしたく思い立ってブログをはじめてみることにしました。