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

MogLog

メモというか日記というか備忘録というか

【Ruby】Hash#delete(key)、Hash#delete_if

Hash#delete(key) keyに対応する要素を削除する 取り除かれた要素の値を返す。マッチしないkeyを指定した場合はnilを返す。 ブロックを渡すことも可能で、このブロックは与えられたkeyにマッチする要素が無いときに評価される。 hash = { one: 1, two: 2, th…

【Ruby】Hash#assoc、Hash#store、Hash#clear

ただのリファレンスの写経です。 class Hash Hash#assoc(key) ハッシュがkeyをキーとして持つとき、キーと値のペアを配列として返す。 hash = { one: 'a', two: 'b', three: 'c' } p hash.assoc(:one) # => [:one, 'a'] p hash.assoc(:two) # => [:two, 'b']…

RSpec + Guardで自動テスト実行環境を作る

タイトル通り。 TDDのお試し環境として自動でテストが実行される環境を作りたかったので、構築した。 1.作業ディレクトリを作る $ mkdir fizzbuzz $ cd fizzbuzz 2.Gemfileを作る $ bundle init 3.Gemfileを編集する # A sample Gemfile source "https…

【Ruby】requireメソッドの使い方メモ

環境:ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin11.4.2] sinatraとかnokogiriのような外部ライブラリを読み込みたい時と、同じプロジェクト内にある自身が作ったファイル等を読み込みたい時の2パターンがあって、その時にrequireをどう使…

『アルゴリズムとデータ構造』学習ノート:バイナリサーチ

javaのバイナリサーチ。これは書籍のほぼ丸写し。 import java.util.*; import java.io.BufferedReader; class BinarySearch { private static int binarySearch (int target, int[] numbers) { int left = 0; int right = numbers.length - 1; int center; …

『アルゴリズムとデータ構造』学習ノート:リニアサーチ

javaのリニアサーチ。これは書籍のほぼ丸写し。 import java.util.*; import java.io.BufferedReader; public class LinearSearch { private static int linearSearch(int x, int[] a) { int n = 0; while (n < a.length) { if (a[n] == x) { return n; } n+…

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

Railsで「mysql2」を利用する際、bundle installをするとタイトルのようなエラーが出力された。 かなりの時間これに悩まされた。具体的には以下のようなエラー。 Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users…

『アルゴリズムとデータ構造』学習ノート:バブルソート

■ バブルソート 隣り合う2つのデータを比較して、前の要素の方が大きかった場合、後ろの要素と交換する。 このアクションを先頭から順に繰り返すことで、要素を整列させるソート方法。 小さい要素が泡のように上がってくることから、こう名付けられた。 バ…

【Ruby】多重代入

多重代入 多重代入とは、左辺か右辺またはその両方が複数個ある代入式のこと。(1) 左辺と右辺が同数 最も単純な多重代入。 このケースの場合、最初の左辺が最初の右辺、2番めの左辺が2番めの右辺、といったように順に代入される。 ただし、これらの代入は逐…

【Ruby】代入

「代入」の概要 代入式は、1つ以上の左辺値の値のために1つ以上の値を与える。 左辺値:代入演算子の左側にかけるものを指す。Rubyで左辺値にあたるのは、変数、定数、属性、配列要素である。 右辺値:代入演算子の右側にかけるものを指すRubyには代入式の…

【Ruby】メソッド呼び出し

メソッド呼び出し メソッド呼び出し式は4つの部分から構成される。(1) メソッドの呼び出し元のオブジェクト評価される任意の式。この式の後ろには、メソッド名とオブジェクト名を区切るための「.」または「::」が続く。 (2) 呼び出されるメソッドの名前。呼…

【Ruby】変数参照と定数参照

変数参照 変数とは「単純に値につけられた名前」のこと。 変数を作成するのは、代入式であり、このときに値も代入される。 代入式の左辺以外の場所で変数名が現れた際は、式を参照しており、変数の値に評価される。 one = 1.0 # これは代入式 one # この変数…

【Ruby】オブジェクト

『プログラミング言語 Ruby』 オブジェクト・Rubyにおいて、全ての値はオブジェクト ・全てのオブジェクトは、Objectという名前のクラスを継承しており、このクラスで定義されているメソッドを共有する 1.オブジェクト参照 Rubyではオブジェクトを操作する…

【Ruby】数値クラスの階層構造

Rubyの数値クラスの階層構造は以下のようになっている。(『プログラミング言語 Ruby』第3章から) Numeric -Integer -Fixnum -Bignum -Float -Complex -BigDecimal -Rationalまた、NumericクラスはObjectクラスを継承している(Objectクラスのサブクラス)…

『Rubyによるデザインパターン』学習ノート:Composite

Compositeパターン 全体から部分を組立てるオブジェクト指向でソフトウェアを作ることは、シンプルなオブジェクトを組み合わせて、より複雑なオブジェクトを作るプロセスにほかならない。そうしてできたオブジェクトはより高度なオブジェクトを構築するため…

『Rubyによるデザインパターン』学習ノート:Observer

Observerパターンとは、何らかのオブジェクトが変化したというニュースの発信者と受信者の間に綺麗なインタフェースを作るパターンのこと。 ニュースを持っているクラスをサブジェクトクラスと呼び、ニュースの受信者をオブザーバーと呼ぶ。システムを構築す…

『Rubyによるデザインパターン』学習ノート:Strategy

template methodには欠点があり、そのほとんどが、「継承」の上に成り立つ手法であるということ。それについては、前回のエントリで簡単にまとめた前々回のエントリで書いたコードの場合を考えてみよう。Reportというクラスを基底に、HTMLReportやPlainTextR…

『Rubyによるデザインパターン』学習ノート:「継承より集約」「委譲、委譲、委譲」

■継承より集約 # 継承のごく簡単なサンプル class Vehicle # 乗り物に関するたくさんのコード... def start_engine # エンジンスタート end def stop_engine # エンジンストップ end end class Car < Vehicle def sunday_drive start_engine # 地方に出かけ…

『Rubyによるデザインパターン』学習ノート:Template Method

Template Method アルゴリズムに多様性を持たせたい場合に役に立つ。 基底クラスには、不変の部分を記述し、変わる部分はサブラクスに定義するメソッドにカプセル化する。 基底クラスは、メソッドを未定義にしておくことができる。ただしその場合は、サブク…

Nokogiriのインストールに失敗した時のメモ

以下のサイトに載っていた通りの対処法で解決した。 http://mukaer.com/archives/2012/04/17/rubynokogirihtm/※ちなみにさくらのVPS(CentOS)環境でのはなし。$ yum -y install libxml2-devel libxslt-devel $ gem install nokogiri -- --with-xml2-lib=/us…