Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

2013-02-01から1ヶ月間の記事一覧

Ruby | method_missingでゴーストメソッドを定義

概要 method_missingでゴーストメソッドを定義 詳細 Rubyではメソッドが見つからなかった場合にmethod_missingが呼び出されます。 その際の動作をオーバーライドしておくことで、本来存在しないメソッド=ゴーストメソッドを 呼び出すことができます。 サン…

書籍 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 | 演算子

概要 演算子 詳細 Rubyの主な演算子は以下です。 演算子 意味 == 等価性の確認 === case文のwhenで利用されている。例えばcase文でRange 1..3が2と一致するのはこのため 汎用比較演算子。レシーバーが引数より小さければ-1等しければ0大きければ+1 =,> 未満,…

書籍 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…

bash | 履歴の展開

概要 書籍 入門bashに関するメモ。 網羅はせず任意の箇所のみ抜粋する。 各章 章1. bashの基礎 No Sub 内容 詳細 01 00 シェルとは何か ユーザーのコマンドラインをOSの命令に変換するためのもの 02 00 本書の適用範囲 略 03 00 UNIXシェルの歴史 略 03 01 b…

bash | viモード | テキスト補完

パンくず 入門bash テキスト補完 概要 テキスト補完 内容 コマンド 説明 \ テキスト補完を行う * 複数の補完を行う = 補完対象の一覧を標準出力する サンプルコード カレントディレクトリの状態 $ls 0.txt 00.txt cat 0まで入力後、制御モードに変更して\を…

bash | viモード | 文字検索コマンド

パンくず 入門bash 文字検索コマンド 概要 文字検索コマンド 内容 コマンド 説明 fx 次のxの右へ移動する Fx 前のxの右へ移動する tx 次のxの右へ移動し、1つ戻る Tx 前のxの右へ移動し、1つ進む ; 最後の文字検索コマンドを繰り返す , 最後の文字検索コマン…

bash | viモード | 履歴ファイル内での移動

パンくず 入門bash 履歴ファイル内での移動 概要 履歴ファイル内での移動 内容 履歴を移動するための制御コマンドは以下です。 コマンド 説明 k 後方に1行移動 j 前方に1行移動 G 指定された回数だけ行を移動 /string 後方検索 ?string 前方検索 n 前と同じ…

bash | コントロールによる編集機能

パンくず 入門bash コントロールによる編集機能 概要 コントロールによる編集機能 内容 viモードの編集コマンドは以下 コマンド 説明 BACKSPACE 前の文字を削除 CTRL+W 前のワードを削除 CTRL+V 次の文字をクォーティングする ESC(CTRL+[) 制御モードに移る

UNIX | cut 入力から特定の文字範囲、列を取り出す

概要 cut 入力から特定の文字範囲、列を取り出す コマンド cut [オプション] オプション -b, --bytes=LIST バイトで数えた LIST を選択する -c, --characters=LIST 文字で数えた LIST を選択する -d, --delimiter=DELIM フィールドの区切り文字として TAB の…

書籍 Effective Java | 詳細メッセージにエラー記録情報を含める

パンくず Effective Java 詳細メッセージにエラー記録情報を含める 概要 詳細メッセージにエラー記録情報を含める 内容 例外の詳細メッセージは実際に問題が起こった場合の解析が容易になるように エラーの原因と関わるパラメータのすべてを出力するべきです…

bash | コマンドラインの継続

パンくず 入門bash コマンドラインの継続 概要 コマンドラインの継続 内容 長いコマンドを改行したい場合は改行文字をクォーティングする。 バックスラッシュでクォーティング可能です。 サンプルコード 長いコマンドをワンライナーで書いた場合 $echo {2..1…

書籍 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…

bash | ブレース展開

パンくず 入門bash ブレース展開 概要 ブレース展開 内容 ブレース展開は所定の書式に基づいて任意の文字列を展開する。 サンプルコード $ ls 0.txt 6_3.txt createNumberTxt.rb test.js $ ls *.{txt,js} 0.txt 6_3.txt test.js $ echo {1..5} 1 2 3 4 5 $ e…

bash | 入門bash

概要 書籍 入門bashに関するメモ。 網羅はせず任意の箇所のみ抜粋する。 各章 章1. bashの基礎 No Sub 内容 詳細 01 00 シェルとは何か ユーザーのコマンドラインをOSの命令に変換するためのもの 02 00 本書の適用範囲 略 03 00 UNIXシェルの歴史 略 03 01 b…

Javaプログラマーが学ぶRuby基礎/Rubyの文字列/行単位の処理

概要 文字列の行単位処理について 内容 文字列の行単位処理時はeach_lineメソッドとブロックで行います。 サンプルコード # encoding: Windows-31J dragon_quest_subtitle =<

Javaプログラマーが学ぶRuby基礎/Rubyのクラス継承元一覧の取得

概要 Rubyのクラス継承元一覧の取得について 内容 Classのancestorsメソッドにより、継承元のリストを取得可能です。 サンプルコード # encoding: Shift_JIS require "pp" module Hogeable def hoge puts "hoge" end end class BaseHige def hige "hige" end…

書籍 Ruby Cookbook | Automatically Loading Libraries as Needed

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

書籍 Effective Java | 標準例外を使用する

パンくず Effective Java 標準例外を使用する 概要 標準例外を使用する 標準例外を使用する利点 ・APIの利用が用意になる ・見慣れた例外で統一されるため可読性が上がる ・例外のクラス数が少なくなるためメモリ量が節約される 頻出例外 例外 使用する機会 …

TeraTermPro | 入力コマンドの削除

Ctrl+Uで入力内容を削除

Ruby | メソッド | クラスメソッド

パンくず Ruby クラスメソッド 概要 Rubyのクラスメソッドについて 内容 クラス名+メソッド名でクラスメソッドを定義できます。 def ClassName.method_name # logic end サンプルコード # encoding: Windows-31J class Hoge def Hoge.print_hoge puts "Hoge…

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

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