2008-10-01から1ヶ月間の記事一覧

複数のキーでソート

メモ class User attr_reader :id, :name def initialize(id, name) @id, @name = id, name end end class Array def custom_sort(orders) self.sort do |a, b| Array.compare(a, b, orders) end end def self.compare(a, b, orders) orders.each_with_index…

インスタンスメソッド・定数・クラスプロパティ・クラスメソッド・プライベート変数の書き分け

メモインスタンスメソッドとクラスで使用する定数はprototypeオブジェクトに設定する。 このようにすることで内部的な効率がよくなるため。 var Person = function(name, gender){ this.name = name; this.gender = gender; } Person.prototype.getName = fu…

カリー化

メモ function bindArguments(f){ var boundArgs = arguments; return function(){ var args = []; for(var i = 1; i < boundArgs.length; i++) args.push(boundArgs[i]); for(var i = 0; i < arguments.length; i++) args.push(arguments[i]); return f.app…

call()とapply()の違い

メモ関数オブジェクトのcall()メソッドとapply()メソッドの違いは、後者は第二引数を配列形式で指定する点だけが違うのかと思っていたが引数を受け取った側の引数の扱いも違うようだ。 var f = function(){ return arguments.length; }; f.call(this, [1,2])…

アップロードファイル.readは1回だけ有効。

ファイルのアップロードではまったのでメモ。 file = params[:attachment] file.read # => ファイルの中身 file.read # => "" 空の文字列 とするとアップロードしたファイルの中身を取得できるが、このreadは1回しか有効じゃないみたい。 同じファイルに対し…

!!って何?

prototype.jsを少しずつ読み解く。自分用メモ。 var Prototype = { Version: '1.6.0.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.us…