ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Ruby

Ruby 2.1.2のインストール

RaspberryPi(Debian)でのインストール方法最新Ruby2.1.2をFTPよりダウンロードする # cd /usr/local/src # wget ftp://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz解凍と再コンパイルごインストールする # tar zxvf ruby-2.1.2.tar.gz # cd ruby-2.1.…

Enumerableモジュール

map, collectメソッド ブロックの結果を新しい配列で返す [1,2,3,4,5].map{|i| i **2 } => [1, 4, 9, 16, 25] each_with_index 要素とインデックスをブロックに渡し繰り返す [:a, :b, :c, :d, :e].each_with_index{|v, i| puts "#{v} => #{i}"} a => 0 b => …

Regexpクラス

オプション i / Regexp:IGNORECASE : 大文字小文字を無視 m / Regexp::MULTILINE : 「.」で改行とマッチ x / Regexp::EXTENDED : 空白や#から始まるコマンドを無視例 a = /abcdefg/i a = Regexp.new("abcdefg", Regexp::MULTILINE | Regexp::IGNORECASE) => …

Timeクラス

時刻は世界標準時の1970/1/1からの経過秒数で保持されている Time.new Time.now Time.at Time.mktime Time.local Time.gm Timeオブジェクトの属性を取得 year mon / month day / mday hour min usec / tv_usec wday : 曜日を0から6までの数字で返す(日=…

IOクラス

IOクラスオブジェクト STDOUT : 標準出力 STDIN : 標準入力 STDERR : 標準エラー ファイルを開く io = open('README.md') => #<File:README.me> ファイルオブジェクト返す ファイル名の代わりに|に続いてコマンドを実行することも可能 io = open('| ls -la') => #<IO:0x100d42af0> puts io.re</io:0x100d42af0></file:readme.me>…

Fileクラス

ファイルオープン file = File.open('README.md') => #<File:README.md> ile.read => "This is Readmi file\n\n" file.close => nil File.open('README.md') {|file| file.read} openメソッドの2番目の引数 "r" : 読み込みモード "w" : 書き込みモード,既にあればファイルサ</file:readme.md>…

Dirクラス

ディレクトリ dir = Dir.open("/home") => #<Dir:/home> dir.each{|file| puts file} pi backups ... dir.path => "/home" クラスメソッド Dir.pwd, Dir.getwd : 現在の作業ディレクトリを返す Dir.chdir : CurrentDirを変更する。ブロックが有る場合、ブロック内部では</dir:/home>…

Hashクラス

初期化 a = "a"=>"b", "c"=>"d"} Hash["a", "b", "c", "d"] #{"a"=>"b", "c"=>"d"} a = Hash.new("DD") a["first"] #="DD" a.default #="DD" a.default = "EE" a["first"] #="EE" a = Hash.new{|hash, key| hash[key] = nil} a.["a"] #=nil Hashのキーや値を…

組み込みモジュール

Comparableモジュール 比較(,=>,>)が出来るようにするモジュール インクルードとの実装が必要 class Foo include Comparable attr_accessor :num def initialize(num) @num = num end def <=>(other) return @num <=> other.num end end foo = Foo.new(10) b…

配列Arrayクラス

配列の生成 Array [1,2,3] Array.new(3, "str") #["str","str","str"] Array.new(3) {|i| i * 3} #[0, 3, 6] 要素の追加 以下のメソッドでは+以外は破壊的メソッド 破壊的メソッド << , push : 最後に1要素を追加 concat : 最後に配列を追加 insert : 引数…

Stringクラス

casecmp 「」演算子と同じ動きをする。但し、大文字・小文字を区別しない "a" <=> "A" #=1 "a".casecmp "A" #=0 slice 文字列の一部を切り出す "abcdef".slice(2,2) #"cd" "abcdef"[2,2] #"cd" "abcdef".slice(2..4) #"cde" "abcdef".slice("bc") #"bc" "abc…

Fixnumクラス、Bignumクラス

基本的に同じメソッドと機能をもつ modulom, % 「%」と同じ 10.modulo(3) #10 % 3 10 % 3 ビット演算 「|」: or 「&」: and 「^」 : xor 「 ~」: not 「 「>>」: right shift 10 | 3 # 1010 | 0011 11 #1011 10 & 3 # 1010 | 0011 2 #0010 to_f Floatクラス…

Integerクラス

累乗(ベキ乗) 「**」は累乗を表す 3**2 # 3^2 chr 整数に対する文字を求める 65.chr #"A" next, succ 次の整数、+1した整数を返す pred 前の整数、−1した整数を返す times 整数分繰り返す upto 整数から引数まで増やして繰り返す 結果は整数部を返す。 …

Numericクラス

ceil 自身と同じかそれ自身より大きいな整数で最初の物を返す 2.9.ceil #=3 -2.9.ceil #=-2 floor それ自身より小さな整数の内最大を返す 2.9.floor #=2 -2.9.floor #=-3 round 最も近い整数を返す 2.9.round #=3 2.1.round #=2 -2.9.round #=-3 -2.1.round …

Objectクラス

object_id class equal? eql? methods private_methods protected_methods problic_methods singleton_methods clone, dup : インスタンスをコピーする。参照先の値まではコピーされない instance_variable_get : インスタンス変数の取得 instance_variable_…

Kernelモジュール

クラス外で使われるメソッドはほとんどkernelの命令 クラスがいでの実行はObjectクラスのメソッドを実行することになる KernelモジュールはObjectが継承しているため、Kernelモジュールのprivateメソッドである「p」「puts」「proc」等はKernelに定義されて…

特異クラス

インスタンス化したクラスに追加メソッドを適用 def <クラス名>.<新たなメソッド> end例 class Foo def methodA 1 end end foo1 = Foo.new foo2 = Foo.new def foo1.methodB 2 end foo1.methodB #2 foo2.methodB # NoMethodError クラスFooは変わらないまま…

Mix-in

モジュールをクラスに挿入する方法 モジュールの特色 ・単独ではインスタンス化出来ない ・継承できない ・クラスや他のモジュールに取り込み事が出来る module Bar def medhodA end endp Bar.ancestors # [Bar] p Bar.instance_methods #["methodA"] includ…

オブジェクト指向

1.指定されたクラス名で定数を作成する 2.定数に定義されたクラスを格納する class <クラス名> end initialize 初期化メソッド 継承 def Foo initialize(a) @a = a end end def FooExt < Foo initialize(a,b) @b = b super a end end ancestorsメソッド …

実行オプション

-h : ヘルプを表示する -v : バージョンを表示する -c : 指定ファイルの文法的に検証する、実行はしない -e : ワンライナー実行 -w : 冗長モードで実行、ワーニングを全て表示 -W0, -W1,-W2, -W : 出力範囲を指定して冗長表示、W,W2は全て表示 -l : $LOAD_PA…

特殊変数

「$」と数字や記号で構成された変数 $LOAD_PATHは$: と同じ $_ 最後にgetsかreadlineで読み込んだ文字列 $& 最後にマッチした文字列 $~ 最後に成功したマッチ対する結果 $` マッチした部分より前の文字列 $' マッチした部分より後の文字列 $+ マッチした中で…

組み込み変数

STDIN : 標準入力 STDOUT : 標準出力 STDERR : 標準エラー出力 ENV : 環境変数 ARGF : 仮想ファイル ARGV : Rubyスクリプトに与えられた引数, $* と同様 DATA : __END__移行をアクセスするFileオブジェクト

Thread

t = Thread.new do p "start" sleep 5 p "end" end p "wait" t.join newで生成され”start"を印刷し5秒感スリープする その間"wait"を印刷し joinでスレッドの処理が終了するまで待つ 脱出構文 break ループを中断する next ループの次へ移動 redo 現在のル…

times

n回繰り返す 4.times do |i| p i end

downto

5.downto(1) do |i| p i end

文法

変数の種類 ローカル変数:英数字と_ グローバル変数: $で始まる クラス変数: @@で始まる インスタンス変数: @で始まる 定数: 大文字で始まる Rubyのリテラル 数値、論理値、文字列、シンボル、ハッシュ、配列、範囲、正規表現、コマンド出力 数字表現 2…

RubyとRVMのインストール

RVM(Ruby Version Manager)のインストール Rubyの複数バージョン管理に必要な機能 sudo apt-get install gem sudo gem install rvm インストールは成功するが、何故かrvmは動作しない 直接インストールする curl -L https://get.rvm.io | bash -s stable --r…

RubyGemsのアップデート

RubyGems自身のアップデートを行う $ sudo gem update --system RubyGemsでインストールしたパッケージのアップデート $ sudo gem update 既にインストールされたパッケージのアップデートを行う

Sinatraフレームワークを利用してHello,worldを表示してみる

Sinatraのインストール $ sudo gem install sinatra WARNING: Improper use of the sudo command could lead to data loss or the deletion of important system files. Please double-check your typing when using sudo. Type "man sudo" for more informa…