2012年9月23日日曜日

sbtの導入


いろいろあってScala+JavaFXでテトリスを作ることになりそう.
なので,まずsbtを導入します.


環境






  • Mac OS 10.7.4(Lion)







sbtのインストール




sbtのインストールは sbt-launch.jar をダウンロードし,これを実行するスクリプトを作成することで完了する.
例として ~/local/bin/sbt/ の下にインストールする手順を以下に示す.


  1. sbt-launch.jar から sbt-launch.jar をダウンロード.これを ~/local/bin/sbt/ の下に置く.


  2. sbt というファイル名でスクリプトファイルを作る.
    スクリプトの中身は以下のようになる.



    java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar `dirname $0`/sbt-launch.jar "$@"






  3. スクリプトファイル sbt に実行権限を与える.
    $ chmod +x ~/local/bin/sbt/sbt


  4. PATHを通す.
    ~/.bash_profile に以下の行を追加



    export PATH=/Users/<ユーザー名>/local/bin/sbt/:$PATH







これでインストールは完了





とりあえずHello World




とりあえず,Hello Worldを出力するだけのプログラムを実行してみる.
プログラムは ~/hello 以下に作成する.
手順を以下に示す.



$ cd ~
$ mkdir hello
$ echo 'object Hi { def main(args: Array[String]) = println("Hello World!") }' > hw.scala
$ sbt
...
> run
...
Hello Wolrd!










おわりに




とりあえずこれでHello Worldができた.
使い方など,もっとsbtのことを知りたい人は参考URLを見てください.
というか,この記事よりも参考URLの方がわかりやすいと思います.





参考URL





--
My Emacs Files At GitHub

2012年9月22日土曜日

「JRuby+Swingでテトリス」という話を聞いて


今日は第11回 岡山Ruby, Ruby on Rails勉強会に参加して,いろいろな発表を聴講させていただきました.
いろいろ話を聞かせていただいたなかで,自分が一番興味を持った話についてまとめた記事を書きます.
内容はJRubyとSwingでテトリスを作るというものでした.
Ruby初心者にとっていい話だったと思います.


なぜテトリス?




雑誌に書いてた言葉「テトリスもかけないとプログラマになれない」





JRuby






  • JRubyはJavaで実装されたRuby


  • GUIのライブラリは標準ではない.


  • そこでJavaのswingを用いる


  • SwingはOSに依存することは少ない.







参考動画




【プログラミング】テトリスを1時間強で作ってみた【実況解説】


  • テトリスを1時間強で作ってみる.(ニコニコ動画)


  • この動画はWinAPIとC言語でテトリスを作っている.







コード






  • テトリスの落ちたブロックは2次元配列で管理


  • 全体のコードは300から400行


  • 開発はTDDで行う.







プログラミング




ゲームプログラムには以下のような要素が詰め込まれている.


  • 関数呼び出し


  • 条件分岐


  • ループ


  • オブジェクト指向


  • テスト



これらのことをゲームプログラミングを通して学べる.





Ruby初学者にとってのメリット




Ruby初学者は






発表を聞いた私の感想






  • Rubyに限らずゲーム作りはプログラミングや言語の勉強の題材としてよさそう.


  • とりあえず僕もテトリスを作ろうと思った


  • テトリスできたらまた報告する予定





--
My Emacs Files At GitHub

2012年9月20日木曜日

JRubyでSwingを使ってみる




目標




JRubyを使ってJavaのGUIツールキットであるSwingを用いる.
これによってRubyでGUIプログラムを作成する.






動作環境




私が動作させた環境を以下に示します.
どれが関係あり,どれが関係ないかはよくわかってません.


  • Mac OS X 10.7.4(Lion)


  • Ruby 1.9.3


  • Jruby 1.6.8


  • java version 1.6.0_35






そもそもJRubyとは




JavaVM上でRubyを動かすソフトウェアである.JavaからRubyを呼び出すこともできるらしい.





JRubyの長所




JRubyには以下の長所がある(らしい)


  • Javaの豊富なライブラリが使える.


  • Java並みの速度でRubyで書いたプログラムが動く


今回は1つめ長所の恩恵にあずかることになりそうです.





JRubyをインストール




RVMを用いてインストールします.
以下のコマンドでインストールできます.



rvm install jruby-1.6.8










JRubyの使い方




ex.rb というRubyのプログラムをJRubyで動かすには以下のようにする.



jruby-1.6.8 ex.rb










swingを使ってみる




参考ページそのままのサンプルコードを動作させてみる.
上の方のimport文でswing関連のものをインポートしている.



require 'java'

import 'javax.swing.JFrame'
import 'javax.swing.JButton'
import 'javax.swing.JTextField'
import 'javax.swing.JPanel'
import 'java.awt.BorderLayout'

class ButtonAction
  include java.awt.event.ActionListener
  
  def initialize(text)
    @text = text
  end
  def actionPerformed(evt)
    @text.setText("Click")
  end
end


frame = JFrame.new("HOGE")
button = JButton.new("Click!!!")
text = JTextField.new(10)

button.add_action_listener(ButtonAction.new(text))

panel = JPanel.new
panel.add text
panel.add button
frame.getContentPane.add(panel, BorderLayout::CENTER)
frame.setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE)
frame.pack
frame.visible = true










おわりに




とりあえず,動作することまでは確認.
これでRubyでGUIプログラムをつくることができそう.
他にもRubyでGUIプログラムをつくる方法があるのかもしれないけど,僕はまだ知らない.






--
My Emacs Files At GitHub

MacにRVMをインストール


MacにRubyのバージョン管理プログラムであるRVMをインストールする.


実行環境






  • Mac OS X 10.7.4


  • GNU bash, version 3.2.48







RVMのインストール







$   bash < <(curl https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)




次にエディタで ~/.bash_profile を開き,文末に以下を追加する.
(私の場合は上記コマンドの実行により,既に追加されていた.)



[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*




.bash_profile 編集後



$ source ~/.bash_profile




を実行.
これで,RVMのインストールは完了する.
試しにRuby1.9.3をインストールしてみる.



$ rvm install 1.9.3
$ rvm list

rvm rubies

=* ruby-1.9.3-p194 [ x86_64 ]

# => - current
# =* - current && default
# * - default












--
My Emacs Files At GitHub

2012年9月16日日曜日

Emacsからbloggerへ記事を投稿する




実行環境






  • Mac OS X 10.7.4


  • GNU Emacs 23.4.1






googleclのインストール




ターミナルで以下のコマンドを実行
sudo port install googlecl
Ubuntuならapt-get でできるかも(やってないけど)





googlecl.elのインストール




https://github.com/rileyrg/org-googlecl
からZIPをダウンロードし,適当なところに展開し,ファイルのパスをload-pathに追加する.






Emacsの設定




.emacs に以下の設定を追加する.
(require 'org-googlecl)
(setq googlecl-blogname "ブログの名前")
(setq googlecl-username "gmailのアドレス(hogehoge@gmeil.com)")





投稿方法




Emacs上で投稿したい記事(見出し)にカーソルを合わせ
M-x org-googlecl-blog
を実行する.
カーソルを合わせている見出しの部分木がブログとして認識される.





余分な行間への対策




以上の手順を踏めば投稿はできるのですが,行間が無駄に大きく見栄えが悪いです.
これは,(参考URL(2)曰く)出力結果のhtmlが余分に<p>タグを出力しているかららしいです.
ということで,googlecl.elを改造します.
googlecl.elの135行目あたりの

(with-temp-file tmpfile
(insert bhtml)
(goto-char (buffer-end 1))


(with-temp-file tmpfile
(insert (replace-regexp-in-string
"<p>\n*\\(\\(.*\n\\)+?\\)</p>"
"\\1" bhtml))
(goto-char (buffer-end 1)))
と書き換えます.
おそらく正規表現を用いて,出力結果のhtmlの<p>部分を変換してると思われます.





おわりに




この記事は上記の通りに行って投稿した記事です.
今後は,もう少し見栄えがよくなるようにしてみたいです.
あと,プレビューできないのも困るので,なにかいい方法があればいいな…と思ってます.






--
My Emacs Files At GitHub
新しいブログを作りました. <![CDATA[/*>

新しいブログを作りました.

1 はじめに

この記事は新しいブログの作成にあたり,本ブログ作成の目的,また本ブログの方針について述べる.

2 作成の目的

本ブログの作成の目的は以下の2つである.
  1. 技術系の記事と日記を別々のブログにすること. これまで,私が更新していた苦学生 時羽金也 では,技術系の記事と日記を混合して更新していた. これでは,方向性がわかりづらいブログになる. よって,技術系の記事と日記を別々のブログへ投稿することにする.
  2. EmacsのOrg-modeから記事を投稿すること. 現在,ブログへ記事を投稿するには多くのコストがかかる. 長い文章をブラウザ上で作成することは,作業効率の点で不利である. 作業を効率的にするため,EmacsのOrg-modeで記事の作成,投稿を行う環境を構築する.

3 本ブログの方針

本ブログは日記のような記事は一切投稿せず,技術系の記事のみを投稿する.
Date: 2012-09-16 日
HTML generated by org-mode 6.33x in emacs 23
-->