読者です 読者をやめる 読者になる 読者になる

Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Ruby Cookbook

書籍 Ruby Cookbook | A Simple Feed Aggregator

パンくず Ruby Cookbook A Simple Feed Aggregator 概要 A Simple Feed Aggregator 内容 RSSフィードの取得方法について。 サンプルコード 当サイトの2013/05/05時点のRSSを取得してみます。 # encoding: utf-8 require_relative "../open_classes.rb" requi…

書籍 Ruby Cookbook | Converting an XML Document into a Hash

パンくず Ruby Cookbook Converting an XML Document into a Hash 概要 Converting an XML Document into a Hash 内容 XMLをHashに変換する方法について。 サンプルコード # encoding: utf-8 require_relative "../open_classes.rb" require 'xmlsimple' xml…

書籍 Ruby Cookbook | Navigating a Document with XPath

パンくず Ruby Cookbook Navigating a Document with XPath 概要 Navigating a Document with XPath 内容 XPathでのデータ取得について。 サンプルコード # encoding: utf-8 require_relative "../open_classes.rb" require 'rexml/document' xml = %{ <languages> <language name="java"> <name>Java</name></language></languages>…

書籍 Ruby Cookbook | Extracting Data from a Document's Tree Structure

パンくず Ruby Cookbook Extracting Data from a Document's Tree Structure 概要 Extracting Data from a Document's Tree Structure 内容 XMLを木構造のデータで取得するには REXMLのインスタンスをeach_elementで取得する。 サンプルコード # encoding: u…

書籍 Ruby Cookbook | Checking XML Well-Formedness

パンくず Ruby Cookbook Checking XML Well-Formedness 概要 Checking XML Well-Formedness 内容 XMLをパースすることでXMLの正当性を検証できる。 サンプルコード # encoding: utf-8 require 'rexml/document' VALID_HOGE_XML = %{ <hoge> <child_hoge>child_hoge</child_hoge> </hoge> } INVALID_…

書籍 Ruby Cookbook | alias

パンくず Ruby Cookbook alias 概要 alias 内容 Rubyではメソッドに別名をつけることが可能です サンプルコード 改行付きで標準出力を行うKernel#putsに 「改行付表示」というエイリアスをつけてみます。 # encoding: Windows-31J require "pp" module Kerne…

書籍 Ruby Cookbook | 文字列評価によるメタプログラミング

パンくず Ruby Cookbook 文字列評価によるメタプログラミング 概要 文字列評価によるメタプログラミング 内容 method_defineで定義したメソッドと同様のことが文字列評価で定義可能です。 利用するメソッドは Module#module_eval です。method_defineと異な…

書籍 Ruby Cookbook | メタプログラミングでコードのボイラープレートを避ける

パンくず Ruby Cookbook メタプログラミングでコードのボイラープレートを避ける 概要 メタプログラミングでコードのボイラープレートを避ける 内容 メソッド名・処理内容がメソッドがある場合は、 define_methodによるメタプログラミングで簡潔に記載可能で…

書籍 Ruby Cookbook | メンバー変数の自動設定

パンくず Ruby Cookbook メンバー変数の自動設定 概要 メンバー変数の自動設定 内容 レシーバのインスタンス変数に値を設定 instance_variable_set サンプルコード # encoding: UTF-8 require "pp" class Object private def set_instance_variables(binding…

書籍 Ruby Cookbook | Classの変更をListenする

パンくず Ruby Cookbook Classの変更をListenする 概要 Classの変更をListenする 内容 undef,remove_methodの利用時は、各メソッドをオーバーライドした際に 特定の処理を実行することが可能です。 Listenメソッド名 内容 method_added メソッドの追加,オー…

書籍 Ruby Cookbook | メソッドの参照の取得

パンくず Ruby Cookbook メソッドの参照の取得 概要 メソッドの参照の取得 内容 callでメソッドの呼び出し arityで引数の数を確認できます。 サンプルコード # encoding: Windows-31J require "pp" class Hoge def hoge(txt) return "#{txt} hoge" end end h…

書籍 Ruby Cookbook | 自身で定義したメソッドのリストを取得

パンくず Ruby Cookbook 自身で定義したメソッドのリストを取得 概要 自身で定義したメソッドのリストを取得 内容 各アクセスレベルごとのメソッドリストは XXXX_methods(false) で取得可能です。 ※XXXXはアクセスレベルただし、methodsの自メソッド取得版は…

書籍 Ruby Cookbook | オブジェクトのメソッドリスト

パンくず Ruby Cookbook オブジェクトのメソッドリスト 概要 オブジェクトのメソッドリスト 内容 <メソッドリストの取得> メソッドのリストの取得はObject#methods クラスメソッドのリストの取得は Object#singleton_methods<メソッドの保持確認> インス…

書籍 Ruby Cookbook | オブジェクトのクラスと基底クラス

パンくず Ruby Cookbook オブジェクトのクラスと基底クラス 概要 オブジェクトのクラスと基底クラス 内容 オブジェクトのクラスはObject#class 基底クラスはClass#superclass 祖先のリストはModule#ancestors で取得出来ます。 サンプルコード # encoding: W…

書籍 Ruby Cookbook | Mixing in Class Methods

パンくず Ruby Cookbook Mixing in Class Methods 概要 Mixing in Class Methods 内容 クラスメソッドのMixinをする場合、 サブモジュールを作成し,メインのモジュールのself.includedメソッドで レシーバを拡張する。 サンプルコード # encoding: Windows-3…

書籍 Ruby Cookbook | 後から特定のオブジェクトのみにModuleを追加

パンくず Ruby Cookbook 後から特定のオブジェクトのみにModuleを追加 概要 後から特定のオブジェクトのみにModuleを追加 内容 特定のオブジェクトのみにModuleの機能を追加したい場合は extendメソッドを利用します。 サンプルコード # encoding: Windows-3…

書籍 Ruby Cookbook | Automatically Loading Libraries as Needed

パンくず Ruby Cookbook Automatically Loading Libraries as Needed 概要 Automatically Loading Libraries as Needed 内容 利用する時に初めて対象ファイルをロードしたい場合には autoloadを利用します。 サンプルコード サンプル中で、ロード有無の確認…

書籍 Ruby Cookbook | オブジェクトの凍結

パンくず Ruby Cookbook オブジェクトの凍結 概要 オブジェクトの凍結 内容 freezeメソッドによって、オブジェクトを凍結できます。 破壊的な操作を防ぐことはできますが、参照自体を置き換えることを防げません。 サンプルコード # encoding: Windows-31J r…

書籍 Ruby Cookbook | 抽象メソッドの作成

パンくず Ruby Cookbook 抽象メソッドの作成 概要 抽象メソッドの作成 内容 Rubyは言語として抽象メソッドをサポートしていないため、 Javaのような抽象メソッドを利用したい場合は自分で仕組みを用意する必要があります。抽象メソッドとしてオーバーライド…

書籍 Ruby Cookbook | ブロックの呼び出しと作成

パンくず Ruby Cookbook ブロックの呼び出しと作成 概要 ブロックの呼び出しと作成 内容 ラムダ構文によりブロックを変数として扱うことが可能。 また、その変数をメソッドの引数にしたり 戻り値にすることも可能です。 サンプルコード # encoding: Windows-…

書籍 Ruby Cookbook | バージョン番号付き履歴ファイルの作成

パンくず Ruby Cookbook バージョン番号付き履歴ファイルの作成 概要 バージョン番号付き履歴ファイルの作成 内容 バージョン番号付き履歴ファイルの作成。 書籍では履歴番号だけ追加してましたが、応用してシステム日付を追加しました。 本日の日付+0詰め3…

書籍 Ruby Cookbook | ツリーの作成

パンくず Ruby Cookbook ツリーの作成 概要 ツリーの作成 内容 カレント配下のファイル、フォルダを取り扱うにはFindクラスのfindメソッドを 利用します。 サンプルコード # encoding: Windows-31J require 'find' Find.find('./').each do |file| puts file…

書籍 Ruby Cookbook | パーミッションの確認

パンくず Ruby Cookbook パーミッションの確認 概要 パーミッションの確認 内容 パーミッションの確認読み込み可能か確認 File.readable? <ファイル名> 実行可能か確認 File.executable? <ファイル名> 書き込み可能か確認 File.writable? <ファイル名> サン…

書籍 Ruby Cookbook | ファイルの存在確認

パンくず Ruby Cookbook ファイルの存在確認 概要 ファイルの存在確認 内容 ファイル、の存在チェックを行う場合 ファイルの存在のみ確認する場合 File.file? <ファイル名> ディレクトリの存在のみ確認する場合 File.file? <ディレクトリ名> ファイル、ディ…

書籍 Ruby Cookbook | 最終更新日の取得

パンくず Ruby Cookbook 最終更新日の取得 概要 最終更新日の取得 内容 variable = File.stat(<ファイル名>) variable.mstat # => modified time サンプル # encoding: Windows-31J require "pp" def output_file_stat(filename) stat = File.stat(filename)…

書籍 Ruby Cookbook | keyとvalueの入れ替え

パンくず Ruby Cookbook keyとvalueの入れ替え 概要 keyとvalueの入れ替え 内容 keyとvalueの入れ替えするには以下の構文を利用します。 hash.invert サンプル # encoding: Windows-31J require "pp" hash = {ge:"ho",go:"hi",shi:"ha"} pp hash pp hash.inv…

書籍 Ruby Cookbook | HashをYamlに変換

パンくず Ruby Cookbook HashをYamlに変換 概要 HashをYamlに変換 内容 HashをYamlに変換するには以下の構文を利用します。 require yaml hash.to_yaml サンプル # encoding: Windows-31J require 'yaml' require 'pp' hash = [neuro:'majin',korosensei:'un…

書籍 Ruby Cookbook | 1つのハッシュに複数の値を設定

パンくず Ruby Cookbook 1つのハッシュに複数の値を設定 概要 1つのハッシュに複数の値を設定 内容 基本、Hashはkeyとvalueの1対1で成り立ちます。 valueに配列を指定することで1対多でハッシュを利用することが可能です。 サンプル require "pp" languages …

書籍 Ruby Cookbook | ハッシュキーにシンボルを利用

パンくず Ruby Cookbook ハッシュキーにシンボルを利用 概要 ハッシュキーにシンボルを利用 内容 以下の構文でシンボルを利用可能です。 :hoge 'hoge'.intern シンボルについて Rubyマニュアルより Rubyの内部実装では、メソッド名や変数名、定数名、クラス…

書籍 Ruby Cookbook | 配列の最大値・最小値

パンくず Ruby Cookbook 配列の最大値・最小値 概要 配列の最大値・最小値 サンプル require "pp" class Person attr_accessor:name,:age def initialize(name,age) @name,@age=name,age end end puts [12,11,13].min puts [12,11,13].max puts ["hage","hog…

書籍 Ruby Cookbook | 配列のソート

パンくず Ruby Cookbook 配列のソート 概要 配列のソート サンプル require "pp" class Person attr_accessor:name,:age def initialize(name,age) @name,@age=name,age end end person_list = [Person.new("tanaka",23),Person.new("suzuki",30),Person.new…

書籍 Ruby Cookbook | 配列の重複要素削除

パンくず Ruby Cookbook 配列の重複要素削除 概要 配列の重複要素削除 サンプル array = [:one,:two,:three,:two] print array puts print array.uniq #=>不変メソッドで重複要素削除 puts print array puts print array.uniq! #=>破壊的メソッドで重複要素…

書籍 Ruby Cookbook | 配列一括設定

パンくず Ruby Cookbook 配列一括設定 概要 配列一括設定 サンプル array = [:one,:two,:three] a,b,c=array puts "#{a},#{b},#{c}" array << :four << :five a,b,*c=array puts "#{a},#{b},#{c}" 出力 one,two,three one,two,[:three, :four, :five]

書籍 Ruby Cookbook | Timeoutの制御

パンくず Ruby Cookbook Timeoutの制御 概要 Timeoutの制御 サンプル require 'timeout' def timeout_logic(limit_time, sleep_time) puts "limit_time=#{limit_time},sleep_time#{sleep_time}" Timeout::timeout(limit_time){ sleep sleep_time } rescue Ti…

書籍 Ruby Cookbook | 一定時間ごとに処理を実行

パンくず Ruby Cookbook 一定時間ごとに処理を実行 概要 一定時間ごとに処理を実行 サンプル # 指定したmsecごとに処理を実行する def execute_each_sec(sleep_sec) yield sleep sleep_sec end 5.times do execute_each_sec(1) do || puts "実行時間:#{Time.…

書籍 Ruby Cookbook | 日付同士の比較

パンくず Ruby Cookbook 日付同士の比較 概要 日付同士の比較 サンプル base_date = Date.new(2000,1,1) after_date = Date.new(2000,1,5) before_date = Date.new(1999,12,28) puts base_date puts (base_date - after_date).to_i puts (base_date - before…

書籍 Ruby Cookbook | 日付、日時の加算

パンくず Ruby Cookbook 日付、日時の加算 概要 日付、日時の加算 サンプル # encoding: Windows-31J require 'date' today = Date.today puts today puts today + 1 # => todayに1日足した結果 puts today - 1 # => todayから1日引いた結果 puts today >> 1…

書籍 Ruby Cookbook | 日付のイテレーション

パンくず Ruby Cookbook 日付のイテレーション 概要 日付のイテレーション サンプル # encoding: Windows-31J require 'date' today = Date.today ten_date_after = today + 10 now = Time.now puts today puts ten_date_after puts now puts "-------------…

書籍 Ruby Cookbook | 日付のフォーマット

パンくず Ruby Cookbook 日付のフォーマット 概要 日付のフォーマット フォーマット表 フォーマット用文字 内容 %A English day of the week %a Abbreviated English day of the week %B English month of the year %b English month of the year %C The cen…

書籍 Ruby Cookbook | 現在日時の取得

パンくず Ruby Cookbook 現在日時の取得 概要 現在日時の取得 サンプル now_date_time=DateTime.now now_time=Time.now now_date=Date.today puts now_date_time.to_s puts now_time.to_s puts now_date.to_s 出力 2012-06-19T00:41:31+09:00 2012-06-19 00:…

書籍 Ruby Cookbook | 数値リテラル

パンくず Ruby Cookbook 数値リテラル 概要 数値リテラル 構文 数値リテラル取得 10 0b10 0o10 0x10 サンプル puts 10 # => 10進数 puts 0b10 # => 2進数 puts 0o10 # => 8進数 puts 0x10 # => 16進数 出力 10 2 8 16

書籍 Ruby Cookbook | 乱数

パンくず Ruby Cookbook 乱数 概要 乱数 構文 乱数取得 num = rand 引数なし、デフォルトの場合は0から1の値が返ってくる。乱数取得(引数有り) num = rand(5) 0から指定した数値-1の数が返ってくる。 この場合は0から4。 サンプル (1..10).each {|num |put…

書籍 Ruby Cookbook | 分数

パンくず Ruby Cookbook 分数 概要 分数 サンプル require "rational" puts ra=Rational(2,3) puts ra.to_f puts ra*100 puts ra*Rational(3,2) puts ra+10 出力 2/3 0.6666666666666666 200/3 1/1 32/3

書籍 Ruby Cookbook | 文字列から基数変換

パンくず Ruby Cookbook 文字列から基数変換 概要 文字列から基数変換 サンプル puts "10".oct # => 8進数 puts "10".hex # => 16進数 # おまけ puts '10hoge'.to_i # => 先頭にある数値を抽出出来る puts 'hoge10hoge'.to_i # => 先頭以外の数値は抽出不可 …

書籍 Ruby Cookbook | 正規表現のUNION

パンくず Ruby Cookbook 正規表現のUNION 概要 正規表現のUNION 正規表現のUNION 以下の構文で正規表現のUNIONが可能です サンプル class String # => freezeはオブジェクトの凍結 def mgsub(key_value_pairs=[].freeze) # => Hashのキーを配列に変換 regexp…

書籍 Ruby Cookbook | メソッドの保持確認

パンくず Ruby Cookbook メソッドの保持確認 概要 メソッドの保持確認 メソッドの保持確認 以下の構文でメソッドの保持確認が可能です obj.respond_to?(:method) サンプル class Hoge def upcase(hoge);hoge.upcase;end end puts "hoge".respond_to?(:upcase…

書籍 Ruby Cookbook | 空白詰め、空白除去

パンくず Ruby Cookbook 空白詰め、空白除去 概要 空白詰め、空白除去 空白詰め 両端空白詰め(文字数指定) str.center(num) 右空白詰め(文字数指定) str.ljust(num) 左空白詰め(文字数指定) str.rjust(num) 空白除去 両端空白除去 str.strip 右空白除…

書籍 Ruby Cookbook | 大文字小文字変換

パンくず Ruby Cookbook 大文字小文字変換 概要 大文字小文字変換 大文字小文字変換 文字列全体を大文字にする場合 str.upcase 文字列全体を小文字にする場合 str.downcase 大文字小文字を変換する場合 str.swapcase 頭文字を大文字に、他を小文字にする場合…

書籍 Ruby Cookbook | 文字列を一文字ずつ抜き出して処理

パンくず Ruby Cookbook 文字列を一文字ずつ抜き出して処理 概要 文字列を一文字ずつ抜き出して処理 文字列を一文字ずつ抜き出して処理 正規表現を利用することで、文字列を一文字ずつ処理します。 サンプル 'hoge'.scan(/./) do |c| # =>正規表現で1文字ず…

書籍 Ruby Cookbook | eRuby

パンくず Ruby Cookbook eRuby 概要 eRuby eRuby eRubyによるテンプレート処理について。 eRubuy=JSPと同じ動きをすると思って差し支えない。 テンプレートとなるテキストにスクリプトレットでRubyのコードを埋め込んで 実行することができる。 サンプル req…