「C言語による最新アルゴリズム事典」技術評論社のコードをRubyで書きなおしたホームページ
がありましたので、紹介。
Rubyでアルゴリズム
C言語による最新アルゴリズム事典
を読む際には役立つと思います。
» 2010 » 11月のブログ記事
先月の初期費用無料キャンペーンでミニバードを借りたので、お名前.comで取得していたドメインを設定してみます。

お名前.comのドメイン設定-ネームサーバーの設定-ネームサーバーの変更で
設定するドメインを選んで、「ネームサーバー情報を入力する(上記以外のサービスをご利用の場合はこちら)」
をチェック、「ネームサーバー情報を入力する」で1~3にミニバードのネームサーバーを設定。
「ns1.minibird.jp、ns2.minibird.jp、ns3.minibird.jp」

お名前.com会員情報をコピーをクリックして契約者情報を入力。
ドメイン取得時に「Whois情報公開代行」を設定していればお名前.com
の情報が公開されます。ためしに「ruby-ruby.info」をこちらの「whois情報検索」に入力して管理情報紹介実行ボタンを押してみてください。「お名前.com」の情報が表示されます。「Whois情報公開代行」の設定をしていないと、契約者の住所氏名が表示されます。
確認画面へ進んで設定するを押せばお名前.comでの設定は完了です。
次にミニバードでログインしてサーバー管理ツール画面のドメイン設定をクリック。
ドメイン追加で取得したドメインを入力、Whois認証をチェックして確認画面ボタンを押せば完了です。

ドメイン追加完了画面にFTPのアカウント名やパスワードが表示されるのでメモ。

![]()
お名前.com
初年度費用が安いキャンペーンが頻繁にあるので沢山のドメイン取得する方にはお勧め。
![]()
ミニバードで簡単に独自ドメインの設定をしたい方はスタードメイン。
![]()
マルチドメインで複数サイトの運営もできるミニバード。
継承を使えば既にあるクラスの機能を引き継いで新しいクラスを作る事ができます。
継承の仕方は簡単です。
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」メソッドも継承しているので利用することができます。
キャンペーン期間:2010年10月1日-2010年11月30日
<期間限定!新規月額プラン契約特典>
キャンペーン期間中にWiMAX機器(通信カード(ルータ機能付含む)もしくは内蔵PC)を
ご購入頂き、同時に「月額プラン」へ新規ご加入頂くと最大13カ月に限り「月額プラン」の
基本使用料として4,280円/月を適用します!
知り合いがWiMAXを使用しているので通信状況や速度について聞いてみたところ、
ストレス無くネットにつながるようです。ただしUSBの端末などは熱を持つので
長時間使用などしてると寿命が心配と言っていました。
場所にもよると思いますがニコニコ動画やユーチューブ、オンラインゲーム等は
快適に使用できるみたいです。
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)」が呼び出されて引数の値で初期化されています。
最近のコメント