ラベル Ruby の投稿を表示しています。 すべての投稿を表示
ラベル Ruby の投稿を表示しています。 すべての投稿を表示

2014年2月12日水曜日

RubyでLSBfirst

とある機器との通信でLSBit firstで送信する必要があり、Rubyでコーディング。
美しくないけど、これでいいはず…。

  def b_reverse(s_char)
    i_work = 0
    i_ascii = s_char.ord
    8.times {|x|
      i_work += (i_ascii & 1) * 2**(7-x)
      i_ascii >>= 1
    }
    return i_work.chr
  end

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年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年4月30日火曜日

はじめてのRubyの為のはじめてのインストール

仕事でRubyに手をつけることになりそうなので環境整備してみる。

まず、VMwareとUbuntuをインストール。
Ubuntuは13.04を入れてみた。(コードネームがアレなので)

肝心のRubyは2.0を入れてみることに。
参考にしたのは日経Linux2013年4月号の記事。



1.『初めにツールの導入に必要な「ライブラリ」を導入。』
 これってUbuntuソフトウェアセンターでできんじゃないの?という疑問はあるがLinuxの特にUbuntuやRubyの最新事情を知らないので素直に従う。

    $ sudo apt-get -y install zlib1g-dev build-essential libssl-dev libreadline-dev git

と入力するとパスワードを要求されるので、パスワードを入力するとインストールが開始される。



2.『インストーラの「ruby-build」をインストール。』
 最近は、バージョン管理ツールの「rbenv」とインストーラーの「ruby-build」を組み合わせて利用することが多いとのこと。これも素直に実施してみる。

    $ git clone git://github.com/sstephenson/ruby-build.git
    $ cd ruby-build
    $ sudo ./install.sh



3.『バージョン管理ツールの「rbenv」をインストール。』
 バージョン管理はRuby自体のバージョン管理ってことね。

    $ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    $ echo 'eval "$(rbenv init -)"' >> ~/.profile
    $ exec $SHELL -l



4.『インストールできるRuby2.0をチェック。』
 ここでバージョン管理ツールを使うのか。

    $ rbenv install --list | grep "2.0.0"

      2.0.0-dev
      2.0.0-p0 <ーーーこれが正式版
      2.0.0-preview1
      2.0.0-preview2
      2.0.0-rc1
      2.0.0-rc2
      rbx-2.0.0-dev
      rbx-2.0.0-rc1



5.『Ruby2.0の正式版のインストール。』
 ここで、ようやくRubyのインストール。ftpで取りにいきながらインストールしてるのか。結構長いので気長に待つ。

    $ rbenv install 2.0.0-p0

     Downloading ruby-2.0.0-p0.tar.gz...
     -> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
     Installing ruby-2.0.0-p0...
     Installed ruby-2.0.0-p0 to /home/akihiro/.rbenv/versions/2.0.0-p0






6.『どこのディレクトリーでもRuby2.0が使えるようにする。』
    これも素直に。僕いい子や。
    $ rbenv global 2.0.0-p0



7.『Rubyのバージョンを確認』
   お約束ですね~。
    $ ruby -v
      ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]



とりあえず、今日はここまでにしとこう。ふう。