ReflectionClassでメソッドを動的に呼ぶ&ベンチマーク

php

以前に変数を使って、クラスに対して動的にプロパティを追加してみた。 Objectに動的にプロパティを追加する - うっかりプログラミング日誌今度は動的にメソッドを呼んでみる。*1 $method(); //=> 2 簡単! ReflectionClassを使う とはいえ、この方法だと引…

array_mapでstaticメソッドを呼び出す時に、selfが使えない

php

ここのところPHPばかりやっているので、小ネタ。 PHP 5.2.8 for Windows での話。array_mapで関数名を指定する時、通常は文字列で指定する。

PythonのDecorator

きっかけはwycatsのこの記事Python Decorators in Ruby « Katz Got Your Tongue?「RubyでPythonのDecoratorを実装してみたよー」ってことらしいが、Pythonなんてprintしか知らない僕にはDecoratorがなんだかわからない。 元が何者だかわかっていないので、Ru…

Python3.0で変わった事2つ

Decoratorのサンプルを書いている時に、Python2.6と 3.1 の両方でやってみた。 その時にはまった変更点を2つメモ。 print が構文から関数に変更されている #python 3.1 print 'hoge' #=> Error! print('hoge') #=> hoge func_X の関数が __X__に変更されてい…

複数のRubyを切り替えられるようにする

Ruby1.9をメインで使いつつ、1.8系も準備しておきたかったので併存させられる環境を作ってみた。 OS: Ubuntu 9.04 Server Edition Rubyのソースを用意する Subversionで落としてくる。当然trunk。安定とか知りません。 $ svn co http://svn.ruby-lang.org/re…

Mitaka.rb #3 & Tokyu.rb #9 に行ってきた

連日だったので、まとめて。 小田急線沿いというどっちつかずの中途半端な位置に生息しているため、 両方に参加してきました。以下、飲み食いしすぎで記憶がうつろですが覚えている限り。 Mitaka.rb #3 会場: 三鷹のリトルスターレストラン 30人以上でざわざ…

日本Ruby会議2009に行ってきた

今年初参加です。 3日分の感想等まとめてアップ。それなりに長いけど中身は大してありません。 1日目 Scott Chacon from Github 英語が早くてほとんど聴き取れず。スライドがわかりやすかった gitの使い方や概念、git の運用パターンなど 特にgitの運用パタ…

Shibuya.lisp テクニカルトーク #3 に行ってきた

letの使い方を先月知ったようなLisp童貞ですが、勇気出して行ってきました。 発表はニコ動にアップされるらしいので、内容は割愛。 色々感じるところが多かったので、感想をダイジェストでお送りします。Shibuya.lisp » Blog Archive » 2009/07/04 Shibuya.l…

MongoDB,Tokyo Tyrant, CouchDBのベンチマーク記事

maihaさんの日記を見て、MongoDBのことを思い出したので関連しそうな記事の紹介だけでも。 ヽ( ・∀・)ノくまくまー(2009-07-02) 以下の記事で、3種のkey-valueストレージの性能比較を行っている。 Evaluating key-value and document stores for short read …

create_functionはクロージャにはなれない

php

Rubyだとこんな感じで書ける def counter i = 0 lambda{|n| i += n} end count = counter puts count.call(1) #=> 1 puts count.call(2) #=> 3 puts count.call(3) #=> 6 PHPの場合も同じ結果を期待したけど、クロージャとしては動いてくれないらしい。

Sinatra勉強会@万葉に行って来ました

Sinatraという軽量フレームワークについての勉強会に参加してきました。 Sinatraの印象 フレームワーク全体の印象としては、簡単にURLディスパッチャーを利用するためのものという印象。 haml&sassやerbなどのテンプレートエンジンや、sequal, DataMapperと…

WanderlustでGmailを読めるようにする

最近Emacsいじってばかり。 Emacsでメールも扱えるようにしておく。 メールは全てGmailに集中させているので、Gmailに接続できればよい。 apel, FLIM, SEMIのインストール 前提となるものを入れる。APELは先日入れたので割愛。 FLIM http://www.kanji.zinbun…

diredの罠

emacsでdiredを立ち上げて、 !mv DIRNAME とかやったら、rm -rf された。 消えたのはコードスニペットフォルダ。 幸いGithubにある程度残ってたので、そこから70%程度復旧。 '!' なんてもう使いません。 2009/06/07 23:50 追記 diredで上記のコマンドを実行…

elscreenを使う

emacs 上でGNU screenみたいな動作ができるらしい。Meadowのパッケージに含まれていた。 Macでも使いたいので入れてみる。apelが必要なのでそれも入れる。 apel http://cvs.m17n.org/elisp/APEL/index.html.ja.iso-2022-jp $ make $ make install LISPDIR=~/…

magit.el を試してみた

egg.elいまいちーと書いたところ、 @gom egg.elが嫌ならmagit.elでどう?俺的にはそっちのが使いやすいけど。 http://twitter.com/rubikitch/statuses/1901340067と id:rubikitch さんに教えてもらいました。ありがとうございます。 というわけで、早速試し…

久々にEmacsをいじくってみる

Textmateも便利でいいのだけど、補完機能とか考えるとやっぱりEmacsだなーと思い始めた今日この頃。 行番号 行番号ジャンプってないのかなーと思ってた。 \M-g\M-g または \M-g g でGoto-lineが出てくる linum.el で左側に行番号を表示できるようにした rcod…

Git 勉強会@万葉 #3 に行ってきた

最近勉強会レポートしか書いてないけど気にしない。 iwamatsu さんによるコンフリクト大会に参加してきました。以下メモ晒し。 テーマ あなたとコンフリクトしたい! 分散リポジトリとコンフリクトとバージョン管理 チームを組んでコンフリクト大会 git pull…

Git 勉強会@万葉 #2 に行ってきた

5/8 に万葉さんで開催された Git 勉強会に参加してきました。 軽く遅刻しましたが、なんとか参加。 今回は全編 jugyo さんによるライブ git いじり。 前回は reset や stash の使い方など、実際に使う場面で困っている部分を掘り下げていく感じでした。 今回…

Google App Engine で Rails を動かしてみる

Google App Engine (以下 GAE) で Java が使えるようになったため、 JRuby が動作するようになりました。 JRuby on GAE で Rails を動かせる!ということで、あちこちで試みがなされています。ってことで、先達の記事はいっぱいあるけど、手を動かさないとわ…

Git 勉強会@万葉 #1 にいってきた

万葉さんにお邪魔してきました。 http://atnd.org/events/537前半戦は id:koichiro さんによる Git についてのいろいろ。 後半戦は id:jugyo さんを中心にみんなで Git を使ってみるという感じでした。以下、内容メモ晒し。 後半戦のは話題に上ったコマンド…

PHPのオーバーロードで動的にメソッドやメンバーを作成する

php

宣言していないメンバーやメソッドにアクセスしようとすると、マジックメソッドが呼ばれる。 そのマジックメソッドの中でごにょごにょしてあげれば良い。 それを使うと、メソッドチェインみたいなこともできる。 values[$name]) === false) { $this->values[…

Mitaka.rb に行ってきた

4/15 に吉祥寺で開かれた、Mitaka.rb設立総会に行ってきました。 一次会 会場がヴィレッジバンガードダイナーだったこともあり、外国ビールが飲み放題!!Poken共同購入の受け渡しをしてもらったのもあり、Poken充してました。はいふぉーはいふぉー。 その後…

ifもcaseも使わずに条件分岐

再び、λ楽しいよラムダの時間がやってまいりました。 true=λx.λy.x false=λx.λy.yそうすると、変数bがtrueかfalseをとるとしてb(0)(1)とすると、bがtrueのとき0、falseのとき1を返します。λで条件分岐ができた! 2009-04-09 - きしだのはてな というわけで、…

やってしまったことをなかったことにしたい

git

人生はresetやrevertできないけど、gitなら1行でできるよ! 色々方法があるようなのでメモ。ごちゃごちゃとやってみたけどダメでしたー!戻したい!でも手動じゃ無理!みたいな時に使いましょう。 ファイルはそのままに、コミット記録だけ消す hash のコミッ…

MacでVimを使ってみる

春なのでemacsからvimに乗り換えてみました - ふぃふmemo に刺激されて、Vim を用意してみた。 インストールメモ。 Macports でインストール sudo port install vim-app +cscope +ruby +python +gdb +cocoa/Applicaation/MacPorts/Vim.app で起動できる。 メ…

リテラルの %(percent) 記法

よく忘れる上にググりにくいのでメモっておく。 文字列や正規表現、リテラルを簡潔に記述できる。 %(hoge #{foo} bar) # => "hoge Foo bar" %Q(hoge #{foo} bar) # => "hoge Foo bar" %q(hoge #{foo} bar) # => "hoge \#{foo} bar" %x(echo hoge #{foo} bar)…

define_method ってなんぞや

railsのプラグインを覗いてたら、eval系メソッドがもっさり出てきてわけのわからないことになったので、色々復習。まずはdefine_method。 インスタンスメソッド name を定義します。ブロックを与えた場合、定義したメソッドの実行時にブロックがレシーバクラ…

Struct

Rubyにもstruct があるということを教えてもらったので、早速使ってみる。 Struct って? いわゆる構造体。語弊はあるけれど、メソッドの無いクラスのようなものと理解している。 Rubyの場合、Struct.new でstruct型のサブクラスを作り、それをさらにnewする…

Objectに動的にプロパティを追加する

php

object 生成後に、宣言とか関数とか使わずにプロパティを追加できるらしい。 by PHP 5.2.6 (Mac OSX) foo = 'bar'; // add property print_r(get_class_vars('Test')); print_r(get_object_vars($test)); // 実行結果 Array ( [a] => default ) Array ( [a] …

Passenger をアップデート

Redmine を svn up してアップデートしてみたが、 504 エラーが出た。 なにかと思ったら、先日Passengerのバージョンが上がったのを放置していたせいらしい。Passenger をアップデートすると、apache module を再インストールする必要がある。 $ sudo passen…