» Rubyのブログ記事

Ubuntu 12.04.2 LTSとruby 1.8.7とRubyGems1.7.2で作っていきます。

Ruby1.8.7をインストールする。

Dashホームから「端末」を起動し、「sudo apt-get install -y ruby ruby1.8-dev」を実行しインストールを行います。

「ruby -v」を実行しバージョンを表示してみます。

RubyGemsをインストール。

sudo apt-get install -y rubygems

バージョンを確認

gem -v

1.7.2以外のバージョンでも問題ないかもしれません。

rubygemsのアップデート方法

sudo gem install rubygems-update

sudo /var/lib/gems/1.8/bin/update_rubygems

バージョンを確認

gem -v

rubygemsのダウングレード方法

gem list rubygems-update

上記コマンドで表示されたバージョンを下記コマンドのバージョン部分と置き換えて実行。

sudo gem uninstall -v 1.7.2 rubygems-update

sudo gem install -v 1.3.7 rubygems-update

sudo update_rubygems

gem -v

RubyGemsの使い方は下記ページを参考。

Ruby/Rubygems使い方まとめ

RubyでTwitterAPIを使うために「twitter」をインストール。

sudo gem install twitter

ツイッターアカウントの登録とツイッターサービスの登録。

アカウントはツイッター公式で取得。

サービスの登録はhttp://dev.twitter.com/apps/newで登録します。

取得したツイッターアカウントでDevelopersサイトにログインしたら
画面右上の自分のツイッターアイコンをクリックしてMy applicationsをクリック。
My applications画面右のCreate a new applicationsボタンをクリック。
Application DetailsのName、Description、Websiteに記入。
例
Name:初めてのボット
Description:テスト用のツイッターボット
Website:http://hogehoge.com

※Websiteの部分は連絡先のURL、無ければ自分のツイッターアドレス等。

Developer Rules Of The RoadのYes、I agreeをチェックして

CAPTCHAに表示される2個の単語を入力、Create your Twitter applicationボタンをクリック。

Your access tokenの下にあるCreate my access tokenボタンをクリック。
OAuth toolタブをクリックしてConsumer Key、Consumer secret、Access token、Access token secretの値を
メモしておきます。

Settingsタブをクリック。Application TypeでRead and WriteかRead、Write and Access direct messagesを
チェックしてUpdate this Twitter applications settingsボタンをクリックします。

これで準備完了。

RubyGemsをダウングレードしようとしたところエラーが出たので備忘録。

rubygems-updateのインストールで下記エラー発生。
ERROR: Could not find a valid gem ‘rubygems-update’ (= 1.8.1) in any repository

この記事を参考に。

/etc/network/interfacesにdns-nameserversを追加。

sudo gedit /etc/network/interfaces
で下記一行追加。
dns-namaservers 192.168.2.1 ←追加

アドレス(192.168.2.1)はDashからネットワークを起動して確認。(ルーターのアドレスと一緒?)

sudo /etc/init.d/networking restart

で再起動して完了。

Ubuntu12.04の問題なのかな。

「C言語による最新アルゴリズム事典」技術評論社のコードをRubyで書きなおしたホームページ
がありましたので、紹介。
Rubyでアルゴリズム
C言語による最新アルゴリズム事典
を読む際には役立つと思います。

継承を使えば既にあるクラスの機能を引き継いで新しいクラスを作る事ができます。
継承の仕方は簡単です。

class クラス名 < 継承したいクラス名

end

「<」を作成するクラス名の後に書き、つづけて継承するクラス名を書くだけです。
今回はHTMLのカレンダーを出力するメソッドを持ったクラスを作ってみます。
まず前回作ったカレンダークラスを「library.rb」という名前で保存します。
2行目の「require “library”」で保存したファイルを読み込みます。

#クラス定義
require "library"

class HtmlCalendar < Calendar

  def disp_html
     calendar = "<table border>\n"
     calendar << "<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>\n"
     calendar << "<tr>"
     
     #第1週の空白セルを作成
     if @firstday.wday != 0 then
       for x in 1..@firstday.wday do
          calendar << "<td></td>"
       end
     end

     #1日から末日までのセル作成
     for d in 1..@lastday.day do
       if @firstday.wday == 0 then
         calendar << "</tr>\n"
         calendar << "<tr>"       
       end
       calendar << "<td>#{@firstday.day}</td>"
       @firstday = @firstday.next
     end

     #最終週の空白セルを作成
     if @firstday.wday != 0 then
       for x in @firstday.wday..6 do
          calendar << "<td></td>"
       end
     end
     
     calendar << "</tr>\n"
     calendar << "</table>"
     
     puts calendar
  end

end



a = HtmlCalendar.new(2010,9)
a.disp_html
#a.disp

カレンダークラスにあった「initialize(y,m)」や「@firstday、@lastday」が
ありません。これは「Calendar」クラスを継承することにより、記述しなくても
利用可能になります。
45行目でコメントアウトしてある「disp」メソッドも継承しているので利用することができます。

Rubyでプログラムを作る際は「クラス」を定義して、そのオブジェクトを作ってプログラムを組み立てて行きます。
クラスの定義は以下のようにします。

class クラス名

  def initialize()
    処理
  end

  def メソッド

  end

end

ではカレンダープログラムをクラスにしたコードを見て行きます。

#クラス定義

require "date"

class Calendar

  def initialize(y,m)
     @firstday = Date.new(y,m)
     @lastday = Date.new(y,m,-1)
  end
  
  def disp
     calendar = @firstday.strftime("%Y年  %m月")+"\n"
     calendar += "日 月 火 水 木 金 土"+"\n"

     if @firstday.wday != 0 then
       for x in 1..@firstday.wday do
          calendar += "   "
       end
     end

     for d in 1..@lastday.day do
       if @firstday.wday == 6 then
         calendar += sprintf("%2s ",d)+"\n"       
       else
         calendar += sprintf("%2s ",d)
       end
       @firstday = @firstday.next
     end

     puts calendar
   end
end


#クラスの利用
a = Calendar.new(2010,9)
a.disp

5行目でクラス名を決めています。なお最初の文字は大文字で書く必要があります。
7行目の「def initialize(y,m)」はコンストラクタです。これはクラスからオブジェクトを作るとき
最初に実行されるメソッドです。このメソッドはクラスに定義してある変数の初期化をするのに使用します。

def initialize(y,m)
     @firstday = Date.new(y,m)
     @lastday = Date.new(y,m,-1)
end

今回つくるカレンダークラスでは「initialize(y,m)」で引数に年と月を与えて「Date.new(y,m)」に渡し
「@firstday」と「@lastday」をDateクラスのオブジェクトとして利用します。変数名の前に「@」が付いていますが
これはクラス定義の中であればどこでも利用できる変数です。
12行目の「disp」メソッドは前回作成したプログラムの「show_calendar(y,m)」とほぼ同じです。
「disp」メソッドでコンソールにカレンダーを出力します。
36行目の「a = Calendar.new(2010,9)」でカレンダークラスのオブジェクトを作成しています。
「new(2010,9)」でオブジェクトを作成していますがカレンダークラスの内部では
「initialize(y,m)」が呼び出されて引数の値で初期化されています。

2018年12月
« 4月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

カテゴリー

広告

現在の住まい、将来はVPSへ引越します。 ロリポップの上位版です。

広告

広告

最近のコメント

    広告

    Railsを動かす予定のVPS。無料キャンペーン中。

    広告