2013年9月19日木曜日

Android端末でRubyの学習

Rubyの学習を始めた頃に、電車の中でノートPC広げにくいので「Nexus7(2013)を有効活用できないものだろうか? 」と思ったことがあった。

よくある手段としてはマーケットでオライリーなどの電子書籍を購入するというのがあるけど、どうせならN7上で動作するRubyの環境とかないかな?と探してみたらあっさり、みつかった。

  Ruboto
 画面はこんな感じ。
ちょっと、思いついたことを試すには便利。
サンプルスクリプトも用意されており、中にはRubyからカメラアプリを制御なんてのもあったり。

2013年9月8日日曜日

require 'eventmachine'でcannot load such file

require 'eventmachine'の部分で,'cannot load such file'とエラーになる。RubyMineのruby SDK & Gemsにはeventmachineがリストにある。

そこで、以下のリンクを参考にしてみた。
インストールしたgemがrequireできない - Ruby - 教えて!goo

参考にしたのは以下の部分。
$ rm -r ~/.gem
で消してしまい(このディレクトリは消してもよい)
$ gem update --system
$ gem update
$ gem clean

このあと、RubyMineを起動し。evebtmachineをTools->Quick Install Gemでインストールしたところ、エラーはでなくなった。

2013年9月1日日曜日

Rubyでリングバッファ

超初心者ですので、コードに誤りがあるかもしれないし、もっとRubyっぽく書けるのかもしれませんがとりあえず、意図したことはできていそう。

P_MAX = 10        # 配列の最大個数
class Point
  def initialize
    @x=Array.new(P_MAX)
    @y=Array.new(P_MAX)
    @pointer = -1        # ポインタ
  end

  def x; @x[@pointer]; end   # @xの最新値のゲッターメソッド
  def y; @y[@pointer]; end   # @yの最新値のゲッターメソッド

  # @xの配列ゲッターメソッド
  def getX(n)
    if n >= P_MAX then
      @x[P_MAX-1]
    else
      @x[n]
    end
  end

  # @yの配列ゲッターメソッド
  def getY(n)
    if n >= P_MAX then
      @y[P_MAX-1]
    else
      @y[n]
    end
  end

  # @x,@yの為のセッターメソッド
  def setXY(valueX,valueY)
    @pointer += 1
    if @pointer >= P_MAX then @pointer = 0 end
    @x[@pointer]=valueX
    @y[@pointer]=valueY
    puts "setXY(#{valueX},#{valueY}):@pointer=#{@pointer}"
  end
end

p = Point.new
q = Point.new
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"

p.setXY(0,1)
q.setXY(0,-1)
puts 'p.setXY(0,1) q.setXY(0,-1)実施後'
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"


p.setXY(1,2)
q.setXY(-1,-2)
puts 'p.setXY(1,2) q.setXY(-1,-2)実施後'
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"

n = 0
while n < P_MAX do
  p.setXY(n,n+1)
  q.setXY(-n,-n+1)
  n += 1
end
puts 'p.setXY(n,n+1) q.setXY(-n,-n+1) n=0..9実施後'
puts "p.x = #{p.x} p.y = #{p.y}"
puts "q.x = #{q.x} q.y = #{q.y}"

puts 'getX(n) getY(n) 確認'
n = 0
while n < P_MAX do
  puts "p.getX(#{n}) = #{p.getX(n)}"
  puts "p.getY(#{n}) = #{p.getY(n)}"
  puts "q.getX(#{n}) = #{q.getX(n)}"
  puts "q.getY(#{n}) = #{q.getY(n)}"
  n += 1
end

2013年7月15日月曜日

現時点でのrayの壁紙晒し

いまさらの Xperia Ray root化  でroot化後、不要なアプリを削れたお陰で、 LauncherPro と MultiPicture Live Wallpaper を使って、複数画像を壁紙にしても常用アプリが普通に使えるようになったのが嬉しい。
で、今の壁紙はこんな感じ。










1枚目から4枚目はカレンダーからスキャンして切り出したもの。
1枚目から4枚目はビジュアル重視で、5枚目は実用性重視で。
2番目と4番目の白文字は、アプリケーションのショートカットで、Simple Text-Text Icon Creatorを使用。



2013年5月31日金曜日

RubyMineのスペルチェック機能

RubyMineから(というかgemから)eventmachineをインストールしてみたが、さくっとインストールが通ってしまった。

で、【翻訳】EventMachine入門 を参考に、まずは、コードをコピペしてみる。
require 'eventmachine'
  class Echo < EM::Connection
    def receive_data(data)
      send_data(data)
    end
  end
  EM.run do
    EM.start_server("0.0.0.0", 20000, Echo)
  end
すると、1行目から 'eventmachine' のところで破線のアンダーラインが引かれ、Typoとか注意される。

ぬぬ?さては、eventmachineのインストールに失敗した?
いろいろ確認してみたが、特に問題なし。

実はたいした話じゃなくて、eventmachineがRubyMineの持つスペルチェック用の辞書に入っていないだけだったという、お恥ずかしい話。

スペルチェック用の辞書に登録するには、当該の単語上でマウスを右クリック→Spelling→Typo:Save 'eventmachine' to dictionaryで辞書に登録され、破線のアンダーラインが表示されなくなる。

なるほど、よく考えられている。



2013年5月25日土曜日

Rubyの為のEclipse及びPleiadesのインストール

RubyのIDEとしてRubyMineを強く押されたのだが、社内はEclipse使いが多い事、RubyMineがそれほど使いやすいのであれば当て馬比較用としてUbuntu13.04にEclipseを導入してみることに。

Eclipseのインストールは以下のサイトから、Eclipse IDE for Java EE Developersを選択。
現時点での最新はJuno(4.2)
http://www.eclipse.org/downloads/

Pleiadesのインストールは以下のサイトからプラグインをダウンロードする。
今回は安定版の1.4.0をDLした。
http://mergedoc.sourceforge.jp/index.html#pleiades.html


Eclipseは、eclipse-jee-juno-SR2-linux-gtk-x86_64.tar.gzが、
Pleiadesは、pleiades_1.4.0.zipがDLされる。

それぞれ解凍して、Pleiadesのplugins、features ディレクトリをEclipseのHOMEにコピーする。

Eclipseを起動すると、日本語化もされるのだが、残念な事に左端のアイコンが残念なことになるので、以下を参考に。
http://blog.animato99.info/?p=1446


そして、ようやくRubyが使えるようにするためにEclipseのプラグイン版RadRailsをDLする。
http://aptana.com/products/studio3/download

※AptanaはOpenJDKに対応していないので注意。

RadRailsのインストールについてはこちらに詳しく書かれている。
http://www.kkaneko.com/rinkou/javaintro/rdt.html

Eclipseを起動し、projectを作成してデバッグすると、こんなエラーが発生。


ruby-debug-ideがないと怒られるので、調べてみると、Linuxの場合はgem installでインストールできるとのこと。
$ gem install linecache19
$ gem install ruby-debug
$ gem install ruby-debug-ide
どうも色々、めんどくさい。

なるほど。RubyMine一択と推される気がわかるような気がする。







RubyMineのインストール

RubyのIDEについて有償ではあるが、RubyMineが秀逸であるとのコメントをいただき、インストールしてみた。

現在のバージョンは5.4であり、Ruby2.0にも対応しているという。

1.ダウンロード
1.1.以下のURLから30日間無料の評価版をDLする。
Ruby on Rails IDE :: JetBrains RubyMine


2.インストール
1.2.DLしたファイル内にあるInstall-Linux-tar.txtがあるのでこれを見ながらインストールする。
(1)RubyMineをインストールしたい場所に解凍。

(2)解凍したディレクトリ配下のbinディレクトリにて以下を実施するとアプリケーションが起動する。
$ ./rubymine.sh
(3)Complete Installationというダイアログが表示され古いバージョンのRubyMineを持っているなら設定を引き継ぐためのpathを入力せよとあるが、今回は新規なので、「Ido not hava a previous version of RubyMine or I do not want to import my settings」を選択(デフォルトではこちら)し、「OK」をクリック。

(4)Enter JetBrains RubyMine Licenseというダイアログが表示される。評価用なので、「Evalute for free for 30 days」を選択し、「OK」をクリック。

(5)License Agreement for JetBrains RubyMine 5.4.2というダイアログが表示される。
同意して先に進みたいので、ここでは「Accept all termas of the license」を選択して「OK」をクリック。

(6)スプラッシュウィンドウが表示後、「JetBrains rubyMine Initial Configration」というウインドウが表示される。
Keymap scheme, IDE theme, Editor colors and fontsは後で変えられそうなのでデフォルトで。

(7)以下については
Enable opening files and projects from the command line
Script path:/usr/local/bin/mine->/home/xxxx/mine

Create desktop entry(integrate in system menu)

「OK」をクリック。



インストールはさくっと終わる。この辺は、Eclipseなどのように環境を整える面倒さがない。
RubyMineのインストールされたフォルダをのぞくとJarファイルがいっぱい入っているので、RubyMine自体はJavaアプリケーションのようだ。