感謝のプログラミング 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で基礎的なマルチスレッドプログラミングをするためのサンプル

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

RubyでExcelシートの値を読み込んでみるサンプルなど。

Rubyを便利に使えるようになるために、とりあえず色々と試してみた。 Rubyでssh接続して、とりあえずコマンド実行してみる。 require 'rubygems' require 'net/ssh' Net::SSH.start("192.168.17.XXX", "user", :password => "pass") do |ssh| result = ssh.e…

Rubyの哲学と歴史。そしてまつもとさん。

Rubyの哲学 まつもとゆきひろさんが監訳ではなく、著者として執筆している本。 1章にRubyの哲学が載っている。 楽しいプログラミング Rubyは「楽しさ」を第一の目標にした世界初(?)のプログラミング言語です。 たしかに、その通り。 Rubyがオブジェクト指向…

CentOSにRubyをインストールする

基本的には以下のサイトを参考にさせていただきました。 http://ref.xaio.jp/ruby/install/linux 若干ではありますが、本家と違う部分もあるのでメモします。 OpenSSL、zlib、readlineのインストール Rubyのコンパイルには、OpenSSL、zlib、readlineのライブ…

RubyGemsの使い方のまとめ。

RubyGemsって何? RubyGemsは、Rubyのライブラリやアプリケーションを統一した方法でインストール・管理するためのツールのこと。 RubyGemsでは、個別のライブラリを「gem」と呼ぶ。 RubyGemsを使って、それぞれのgemを探したり、インストールしたりアンイン…

Rubyのクラスとメソッド、命名規則。

Rubyの標準的な命名規約 ・述語メソッド(真偽を戻すメソッド) Rubyでは・・・ 末尾に?をつける String#empty?Javaでは・・・ isEmptyとはhasError。・破壊的メソッド(オブジェクトの内容を入れ替えてしまうようなメソッド)の末尾には!をつける String#upcase…

RubyでHTTPリクエストを飛ばしたり。

Rubyの基礎をしつこくしつこく色んな本でやる。 今日はJava Ruby本。 Rubyの繰り返し ブロック付きメソッドという、forと似たような処理を行うメソッドがある。 uptoというのは、引数に指定した分だけ、ブロック変数に渡す。 なんかうまく説明できないのが歯…

JavaとRubyの違い。

DRY原則とは Don't Repeat Yourself. 重複を排除してすべてのシステム上の知識を一点に集約せよ。このDRYは開発対象のプログラムだけを指すわけではない。 たとえば、Excelシートでテーブルのスキーマを定義している場合、テーブル生成のためのSQLスクリプト…

Strategyパターンについて

Rubyの例外 begin quotient = 1/0 rescue puts('bad thing occured') end 継承 継承はいくつかの深刻な不利益をもたらす。 というのは、どんなに注意深くコードを設計しても、サブクラスはスーパークラスに依存してしまうことだ。 そのため、継承を多用する…

Rubyでデザインパターン

Rubyによるデザインパターンという本を読み始めた。 読んでみて思ったのは、「色んな言語からデザインパターンを見ることは、新たな発見につながる」ということだ。 結城浩先生のJavaのデザインパターン本はひと通り読んだりもしたんだけれど、あえてRubyやP…

Rubyの基礎の復習。Rubyデザパタ本のはじめの章。

デザインパターンはプログラマの必須教養だけれど、別にJavaだけで勉強するものではなく、RubyとかPHPも使いながら学んでいきたいと思った。 同じものでも見方を変えることで深く見ることができる。 深く知ることができる。 彼女と一緒ですよ。 ことば You A…

【プログラミング 112.5時間】Rubyでハッシュを使う。

今日のRubyの教科書にさせてもらったのは「作りながら学ぶRuby」 作りながら学ぶRuby入門 第2版作者: 久保秋真出版社/メーカー: ソフトバンククリエイティブ発売日: 2012/11/26メディア: 単行本 クリック: 4回この商品を含むブログ (6件) を見る 「たのしいR…

FTPする。

RubyでFTPを実行するサンプルコード require 'net/ftp' ftp = Net::FTP.open('ftp.ibiblio.org') do |ftp| #サーバーにログインするためのメソッド ftp.login #FTPサーバのディレクトリを変更する ftp.chdir('pub/linux') #lsと同じ ftp.list('*Linux*') { |…

RubyでSSH,telnet,バッチ実行、メッセージ出力など。

Rubyでポップアップを表示する require 'win32ole' def popup(msg, title) wsh = WIN32OLE.new('WScript.Shell') wsh.Popup(msg, 0, title, 0 + 64 + 0x40000) end popup("ポップアップです", "注意") ・Rubyからバッチファイルを実行する test.bat echo "te…

クラスの作り方。アクセサメソッドについて。

会社で1からLinuxサーバを作る必要があったんだけど、社内からはインターネットにはつながらず。 インストールイメージも社内のPCだとDVDに焼くこともできず、八方塞がりだったんだけど、このCentOSの本にものすごく救われた。詳細な設定手順も書いてあり、…

Ruby 配列の作り方

■Rubyの配列の作り方a = Array.new a = Array.new(5) a = Array.new(5,0)要素が文字列で、空白を含まない場合は%wを使って配列を作れる。 names = %w(Mizky Takaki Toshi Tenshin) p names #→["Mizky", "Takaki", "Toshi", "Tenshin"] カンマや空白で区切ら…

【プログラミング 62時間目】Rubyの基礎の振り返り

プログラムを実行する時は、人が読めるように書いたプログラムをコンピュータが理解できる形式に変換する必要があります。コンパイラ型言語は、プログラムを実行する前にあらかじめ変換を済ませておく言語です。 インタプリタ型言語は、実行が指示されたあと…

【プログラミング 55時間目】Rubyの数値型と配列

たのしいRuby 第3版作者: 高橋征義,後藤裕蔵,まつもとゆきひろ出版社/メーカー: ソフトバンククリエイティブ発売日: 2010/03/31メディア: 単行本購入: 15人 クリック: 394回この商品を含むブログ (81件) を見る たのしいRubyを使って勉強したので、そのまと…

【プログラミング 49.5時間目】Rubyのgemコマンド

たのしいRuby 第3版作者: 高橋征義,後藤裕蔵,まつもとゆきひろ出版社/メーカー: ソフトバンククリエイティブ発売日: 2010/03/31メディア: 単行本購入: 15人 クリック: 394回この商品を含むブログ (81件) を見る■RubyGems RubyGemsはRubyライブラリやアプリケ…

【プログラミング 46時間目】Rubyの例外処理

たのしいRuby 第3版作者: 高橋征義,後藤裕蔵,まつもとゆきひろ出版社/メーカー: ソフトバンククリエイティブ発売日: 2010/03/31メディア: 単行本購入: 15人 クリック: 394回この商品を含むブログ (81件) を見るたのしいRubyでたのしくRubyを勉強。この本も素…

【プログラミング 42時間目】Rubyのモジュールの概念とオブジェクト指向について

たのしいRuby 第3版作者: 高橋征義,後藤裕蔵,まつもとゆきひろ出版社/メーカー: ソフトバンククリエイティブ発売日: 2010/03/31メディア: 単行本購入: 15人 クリック: 394回この商品を含むブログ (81件) を見るモジュールとは、クラスとは違い、処理だけをま…