感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Ruby

Rubyのnilガードとは

ユーザーからの入力などで、名前や電話番号などが入っていた場合があるとする。 これらをたとえばDBに入れようとしても、nilだとエラーになってしまうかもしれない。そんなときに、nilを防ぐための書き方がある。 これをnilガードという。実際に例を見てみよ…

モジュールの使い方入門

・目次 インスタンス変数 インスタンスの初期化 キーワード引数 モジュールの使い方 Mix-in インスタンス変数インスタンス変数は頭に@をつけて記述します。 クラスのスコープになるので、インスタンス変数はメソッドの中に定義します。 インスタンスの初期化…

Rubyで配列の末尾から要素を探す

Rubyの配列が持っているのはオブジェクトの"参照"である。 参照先の値が変われば、配列の持っているオブジェクトも変わる。 なぜなら、それは"参照"だから。 str = "hoge" p array = [str,str] #["hoge", "hoge"] str[1] = "a" #["hage", "hage"] p array 配…

例外を処理する

RubyではKernel#raiseメソッドを呼び出してエラーの説明を渡すことにより、例外を送出することができます。 raiseメソッドを呼び出すと、実行フローはそこで中断します。最も簡単な例外のサンプルを示します。 def raise_exception puts 'before raise' rais…

「:?」演算子

■ifを修飾子として使う code if expression 以下の例では、 puts hoge if hoge のように書いているが、これはhogeが定義されているときだけ、puts hogeが実行される。if文は後に書いてあるが、先に評価される。 # coding: utf-8 hoge = "fuga" bar = nil put…

ファイル名が指定したパターンと一致するか調べる

Rubyでファイル名が指定したパターンと一致するか調べるためには、File.fnmatch?というメソッドを使う。パターンで使用できるワイルドカードは以下の通り。 *:任意の0文字以上にマッチ ?:任意の1文字にマッチ [ ]:[]で囲んだ文字のどれかにマッチ puts "*…

ファイルを作成したり、最後にデータを追加する

Rubyで新しいファイルを作成するには、File.open("ファイル名","w")とする。 すでに存在している場合はそのファイルを開く。 で、"w"というのは、ファイルの内容をいったん空にする。 で、もしファイルがなければ新しいファイルを作る。wのオプションについ…

カレントディレクトリを変更する。chdirでカレントディレクトリからの相対パス指定

Rubyでカレントディレクトリを変更するのは、Dir.chdirを使う。 まずは普通に使ってみよう。 Dir.chdir("hoge") p Dir.pwd ## Dir.chdirをブロックに渡すと、 ## ブロック内の処理だけを移動先のディレクトリで行い、 ## 元のディレクトリに帰ってくる Dir.c…

Nokogiriを使って、alexaのHTMLを解析してみた

ponako10さんが、はてなブログランキングとかを作ってくれるのに、alexaというサービスを使っている。 alexaはそんなに詳しくないんだけれど、そのドメインにどれだけの割合の流入があるのか?的なのを調べて出してくれるみたい。いつか自動で収集したら楽だ…

未初期化変数とは

●クラス変数 クラス変数は使う前に必ず値を代入する必要がある。 値が代入されていないクラス変数が参照されると、RubyはNameErrorを起こす。 見てみよう。 class Sample @@class_val def hoge_method puts @@class_val end end sample = Sample.new sample.…

REXMLを使ってRubyでXMLを読み込んだり、走査して要素を取り出す

XMLファイルを読み込んで、特定のタグの特定の値(text)を取り出したかった。 RubyでXMLを解析するにはrexmlライブラリを使う。このライブラリは標準ライブラリで、デフォルトで使うことができる。今回読み込みたいXMLはこのようなものだ。・pom.xml

Rubyでログ出力を扱うloggerライブラリ

とりあえず、基本的な部分を抜粋したあとに、まとめたサンプルを作る。・ログをコンソールに表示する log = Logger.new(STDOUT) ・ログをファイルに出力する log = Logger.new("sample.log") ・特定のレベル以上のログだけを出力する log.level = Logger::WA…

YMLファイルを読み込んで、特定の値を取り出す

YAML(YAML Ain't Markup Language) とは、構造化されたデータを表現するためのフォーマットのこと。 XMLに比べて、 ・読みやすい ・書きやすい ・わかりやすいなどの特徴を持つ。 YAMLについて詳しくは以下を参照してほしい。 http://magazine.rubyist.net/?…

配列とシンボル

配列 ■配列とは 配列は、値の列で、列の中の位置によって値にアクセスできるようになっているもの。 Rubyの配列の先頭の値の添字は0である。これはJavaと同じ。 Rubyで配列の要素数を返すのは、size,lengthメソッド。 ■末尾に追加 Rubyの配列の末尾に新しい…

文字列の末尾や最初の文字など、一部分を取り出す。

■文字列演算子 RubyのStringクラスは、文字列を操作する演算子を持つ。 演算子は、2つの文字列を結合して、新しいStringオブジェクトとして返す。 one = "Hello" two = "World" three = one + two puts three num = 55 puts three + " " + num.to_s tenkai …

文字列を扱う。OSコマンドを実行する。

Rubyで長い文字列を複数行に分けて連結して、1つにする。 途中に改行を埋め込まずに、長いシングルクォート文字列を複数行に区切りたい場合には、複数の隣り合った文字列リテラルにすればいい。 # coding: utf-8 long_string = 'これは3個のリテラルを'\ '…

Rubyで指数や平方根、立方根の計算

■Rubyで指数の計算 Rubyで指数などを計算するときは、**演算子を使う。 ・2の10乗 hoge = 2**10 puts hoge #1024 ・-1乗の計算 hoge = 2**-3 puts hoge #1/8 ・立方根の計算 ルート2とかの計算 hoge = 2**(1/2.0) #ルート2 puts hoge #1.4142135623730951 fu…

命令をクラスにするCommandパターン

■Commandパターンとは 要求をオブジェクトとしてカプセル化する。 要求を表すオブジェクトや、要求をつっこんだキューやログによって、要求をパラメータとして扱う。 また、取り消し可能なオペレーションをサポートする。Commandパターンを使うことによって…

Rubyの配列のメソッド

1.基礎 Rubyの配列で、以下のことを確認したい。 ・配列が空かどうか調べる →empty?メソッドを使う・配列の要素の数だけ繰り返す →arry.each do |item|~を使う・オブジェクトが配列に含まれていないか確認する →include?・すべての要素が条件を満たすかどう…

Rubyのエスケープシーケンス。二重引用符(")や一重引用符(')を表示する

Rubyのエスケープシーケンスは以下のとおり。 エスケープシーケンス 意味 \n 改行 \r 復帰 \t タブ \"" 二重引用符 \' 一重引用符 \\ \マーク 実際にサンプルを見てみる。 # coding: utf-8 puts "I\'m Rupan" #I'm Rupan puts "俺は\'章一郎\'って言うんだ" …

Rubyでデータベースを操作してみる。まずはテーブルを作って値を取り出してみるところから。

CRUD操作とは データベースが提供するテーブルの基本操作は主に4種類ある。 Create テーブルにデータを作成する。 SQLではinsert文に相当する Update テーブルのデータを更新する。 SQLではupdateに相当する。 Read,Retrieve テーブルのデータを読む。SQLで…

LinuxでRubyをソースからコンパイルしてインストールする

まず、以下のURLをブラウザから見て、インストールしたいRubyを探す。 ftp://ftp.ruby-lang.org/pub/ruby/ で、ターミナルを開く。以下のコマンドを実行する。 $ curl -O ftp://ftp.ruby-lang.org/pub/ruby/ruby-2.0.0-p247.tar.gzすると、ruby-2.0.0-p247.t…

ちょっとしたメモ

メソッド系の書き方 ・Rubyのメソッドは括弧をつけてもつけなくてもいい。 ・引数なしの場合は括弧をつけないと自然に見える ・戻り値を使わないときは括弧をつけないと自然に見える ・結局どっちでもいいけど、必要ないことはしない、という方針で良さそう …

基礎の復習

Rubyでマルチバイトを含んだコードを書くとき Rubyはコードの先頭にエンコーディング情報を指定することができる。 Rubyスクリプトのエンコードをスクリプトエンコーディングという。 # coding: utf-8 Rubyの変数 ローカル変数 Rubyのローカル変数は先頭が小…

Rubyのクラス変数とインスタンス変数

クラス変数 クラス変数はクラスのインスタンスにではなく、クラスに結び付けられた変数である。 Rubyだとインスタンス変数名にもう1つのアットマーク(@)を付け加えると、クラス変数を宣言できる。 これはJavaでいうstatic変数である。 以下は、インスタンス…

Rubyの超基礎的な例外処理のメモ

Rubyの例外処理 例外が発生すると、後続の処理は中断されてしまう。 発生した例外が補足されない限り、プログラムは例外メッセージを出力して終了してしまう。 begin 1 /0 rescue ZeroDivisionError puts '例外が発生しました!' end puts '例外は補足したの…

About the method of Ruby

まだ全然書けないけれど、3年くらい毎日続ければきっと・・・!! About Ruby Ruby is object-oriented language. primitive type doesn't exist. Everything is object. The naming rule of Ruby The class name and module name begin with big letter. Fo…

RubyでSocketプログラミング超入門編

Rubyでソケットプログラミング Rubyのソケットライブラリ TCPServerやTCPSocketというのは、その名の通り、TCPソケットを作成し、利用するためのクラス。 TCPSocketはクライアント側、TCPServerはサーバ側のアプリケーションを作成する。Socket.openというの…

Rubyでマルチスレッド。スレッドの終了や停止の方法のサンプル

Rubyで指定したスレッドを強制的に終了させる Thread::killは引数にスレッドを取り、指定されたスレッドを強制的に終了させる。 t = Thread.start { loop { puts "hello world!" sleep(1) } } sleep (3) puts "tスレッドを終了します" Thread.kill(t) puts t…

Rubyで基礎的なマルチスレッドプログラミングをするためのサンプル

スレッドとは スレッドとは、プログラムの処理の流れのことである。 複数の処理の流れを持つプログラムを「マルチスレッドのプログラム」と呼ぶ。 これは特段特別な概念ではなく、日常生活でもよくあることである。 本命の彼女と付き合いながら、もう一人別…