maeshimaの日記

メモ書きです

ruby

ファイルの最終アクセス時刻と更新時間を変更する

File.utime(atime, mtime[, filename[, ...]]) ファイルの最終アクセス時刻と更新時間を変更する

演算子以外の"&"の使い方

復習復習! メソッド宣言時 & メソッド宣言の中で、最後のメソッド引数の名前の前に付けて、メソッドに渡されたブロックをその引数に代入できるようにする。 メソッド呼び出し時 メソッド呼び出しの中で、メソッドにまるでブロックのようにprocを渡すときに…

演算子以外の"*"の使い方

Ruby使いにはあたりまえすぎる話だけど念のため復習しとく。 メソッド宣言時の可変長引数リスト 引数をまとめて配列に格納する。 def hoge(*args) args end hoge(1,2,3) #=> [1,2,3] 配列やEnumerableオブジェクトの展開 代入やメソッド呼び出しの中の配列に…

pathname

RubyPulse :: RubyPulse Episode 0.40 - pathname - Pathname represents a pathname which locates a file in a filesystem. - RubyDocをみて。pathnameはpathnameを簡単に扱える標準ライブラリ。 require File.join(File.dirname(__FILE__), 'boot') みた…

Classクラスの===

Classクラスの === は、右辺が左辺に指定するクラスのインスタンスになっているかどうかをテストする。なので同じクラス同士を===で比較してもfalseになる class A; end A === A #=> false

ネスト元のクラス or モジュールが定義されていないとエラー

下記の例だとHogeやHoge::Fugaを定義してやる必要があるみたい。 # -*- coding: utf-8 -*- class Hoge::Fuga::Foo def self.hoge puts "hoge" end end Hoge::Fuga::Foo.hoge #=> uninitialized constant Hoge (NameError) これならおk # -*- coding: utf-8 …

"字句的に"囲っていることが定数探索の条件

Hoge::Fuga::Fooで定数Aを探すときに、Hoge::Fuga::Foo, Hoge::Fuga, Hogeの順で探すのかと思ってたけどそうではないみたいね # -*- coding: utf-8 -*- class Fuga def self.hoge puts "hoge" end end module Hoge module Fuga def self.hoge puts "fuga" en…

Nokogiri::Node

http://nokogiri.org/Nokogiri/XML/Node.html気になったメソッドをメモ add_child(node_or_tags) NodeにNodeを挿入できる。同じような感じのメソッドに add_next_sibling(node_or_tags) add_previous_sibling(node_or_tags) after before 等がある remove() …

Regexp.escape

正規表現中で特別な意味を持つ文字の前にバックスラッシュを挿入する。正規表現中で変数展開するようなときにとても使える

正規表現メモ

"hoge".scan(/(.+)hoge(.+)|(.+)/) の三つ目の括弧は$1なのかなと思ったら$3だった。

RVM tips

Ruby Freaks Lounge:第40回 RVM(Ruby Version Manager)による環境構築(2)|gihyo.jp … 技術評論社]を読んだまとめ。 rvmのアップデート rvm update --head rvm reload 複数のrubyでプログラムを実行 rvm ruby hoge でインストール済みの全てのrubyでhog…

継承したメソッドでの定数探索は親から行われる

てっきり子のNAMEが使われると思ってた class Parent NAME = "parent" def name NAME end end class Child < Parent NAME = "child" end child = Child.new puts child.name # => parent

Array#compact

nilを取り除いた配列を返すメソッド。時々しか使わないので「名前なんだっけ?」となる

defined?メソッド

defined?メソッドを使ってるコードを初めて見た。クラス/メソッドの定義 - Rubyリファレンスマニュアル

Proc#arity

引数の数を可変長で受け取れる場合の規則を覚えるのがめんどい Procオブジェクトの引数の数を返します。self が引数の数 を可変長で受け取れる場合 -(最低限必要な数+1)を返します。

Rackの復習

Ruby Freaks Lounge:第23回 Rackとは何か(1)Rackの生まれた背景|gihyo.jp … 技術評論社 Ruby Freaks Lounge:第24回 Rackとは何か(2)Rackの使い方|gihyo.jp … 技術評論社を読み直してのメモ。 Rackアプリケーションに必要なこと 下記を満たすオブジェ…

eventmachine

EventMachine: Get Excited By Scalable Non-Blocking I/Oを読んで。なんか注目されてるっぽいけどどんなライブラリなのかよくわかってないので調べた。eventmachine @ GitHub eventmachineとは Ruby/EventMachineはシングルスレッドで高速に動作するネット…

railsでselectタグを出力するヘルパー

メモ option include_blank trueなら空白のoptionタグが作られる prompt 値が空白のoptionで表示される文字列を指定。include_blankとは共存できないっぽい index 出力結果のindexを指定できる disabled disabled optionを出力する select 利用例 select("po…

FileUtils.cpとFile#writeどっちが速いか

require "benchmark" require "fileutils" file_name = "30M.txt" open(file_name) do |src_file| Benchmark.bm do |x| x.report("cp") do FileUtils.cp(file_name, "30M_cp.txt") end x.report("write") do open("30M_write.txt", "w") do |dst_file| dst_f…

Dir.globとDir[]の違い

受け付ける引数が異なる。Dir.globは 省略可能な第二引数に、File.fnmatchのフラグを付けることが出来る ブロックを撮ることが出来る Dir.[]は 複数個のワイルドカードを受け付ける File.fnmatchのフラグ File.fnmatchはファイル名がワイルドカードにマッチ…

IO#reopen(io)

自身を指定された io に繋ぎ換えます。

Array#max, Array#min

知らなかったのでメモ irb(main):001:0> [1, 100, 2, 1000].max => 1000 irb(main):002:0> [1, 100, 2, 1000].min => 1 irb(main):003:0> [-1, 100, 2, 1000].min => -1

srandメソッド

このメソッドを使うと、毎回同じランダムデータの連続を生成することが出来る。 srand([seed]) rand の乱数の種を設定し、古い初期値を返します (ただし最初だけは0を返します)。初期値が省略された時には現在の時刻やプロセスID、srand を呼び出した回数、…

URI::Generic::find_proxy

open-uriをrequireすると追加されるメソッド。デフォルトのURIになくてちょっとはまったのでメモ

括弧つけないといけないとき

yield :title || "fuga" だと:titleと"fuga"両方ともyieldの引数として判断されるので"fuga"が使われることは決してない。 yield(:title) || "fuga" のように括弧が必要