タグ

ブックマーク / blog.yuyat.jp (6)

  • Ruby/Rails 用 DI コンテナ Dee をつくった、あるいは Ruby のカルチャーについて | Born Too Late

    あけましておめでとうございます。 大晦日は実家でプログレ聞きながらコード書いてました。 今さらながら Heldon の Stand by とか聞いてたんですが、Tangerine Dream を思わせるミニマルなシンセサイザーの反復と、リシャール・ピナスによるロバート・フリップばりの暴力的なギターソロが絡みあっており、大変良いですね。 作ったもの また説明長くなりそうなので、はじめに作ったものの紹介です。 dee dee-rails この Dee というのが DI コンテナの体です。 名前は Ozzy Osbourne ソロ 1st Blizzard of Ozz におけるランディ・ローズのギター曲からです。 50 秒と短く、メタルアルバムの中にあってクラシック風の静かなギター曲ですが、同時にアルバムから欠かせない存在感を放つ名曲です。 何が言いたいかというと、Dee はコンパクトな実装

  • Born Too Late » Ruby でマルコフ連鎖やってみた

    何となく動いてるっぽいので、ざっと公開してみる。 以下は、Ruby 1.8.7 のみにて動作確認してます。 markov.rb class Markov NONWORD = "\n" attr_reader :markov_chain def initialize(file, chain_length = 2) @file = file @state = [] @chain_length = chain_length make_chain end def make_chain @markov_chain = {} init_state @file.each do |line| line.each_char do |c| next if c =~ /\r|\n/ push_chain(c) next_state(c) end end push_chain(NONWORD) end def p

    Born Too Late » Ruby でマルコフ連鎖やってみた
  • PHP でも retry-handler を実装した | Born Too Late

    Peercastでどんな配信してるか可視化してくれるサイト作った。 kimoto/retry-handler Ruby の retry-handler が激しく便利そうなので Java で実装してみた yoshiori/retry-handler 便利そうだったので PHP でも実装しました. Packagist に公開したので Composer でインストールできます. yuya-takeyama/retry-handler-php retry-handler/retry-handler 何をするものかというと, 例えば HTTP リクエストなど, 失敗する可能性のある処理をリトライしよう, というときの処理を抽象化するためのものです. インストール Composer を使用するので, 適当なディレクトリに composer.json を用意します. そして以下のコマンドを実行すると C

    PHP でも retry-handler を実装した | Born Too Late
  • メタプログラミングで PHP をもっとオブジェクト指向に | Born Too Late

    PHP はブジェクト指向言語です。ですが、RubyJavaScript のような、より純度の高いオブジェクト指向言語とは違って、以下のようなことはできません。 puts ['foo', 'bar', 'baz'].join(',').upcase # => FOO,BAR,BAZ print(['foo', 'bar', 'baz'].join(',').toUpperCase()); // => FOO,BAR,BAZ これは、RubyJavaScript において、配列や文字列がオブジェクトとして扱われ、メソッドを持つことができるからこそできる書き方です。 同じようなことを PHP でやろうとすると、以下のようなおぞましいことになってしまいます。 echo strtoupper(join(array('foo', 'bar', 'baz'), ',')); // => FO

    メタプログラミングで PHP をもっとオブジェクト指向に | Born Too Late
  • PHP 用ベンチマーキングフレームワーク Joshimane というのを作った | Born Too Late

    あくまでもプロトタイプですが. gist: 813246 - Joshimane: A Tiny PHP Benchmarking Framework... But it's just a prototype yet.- GitHub プロトタイプなので, API は大幅に変わると思います. 使用イメージ 以下のようにして使用します. これを実行すると, 以下のような結果が得られます. $ php example.php Job A: 0.52975106 Job B: 0.26065207 一応補足すると, Job A ではループ時に毎回 (つまり 100 回) count($range) が実行されるのに対して, Job B ではループの開始前に一度だけしか count($range) が実行されないので, これだけの差が出ます. 名前について 女子マネです. なんかこう... 陸上部

  • CUI な Git ブラウザ tig を入れてみた - Born Too Late

    Git をなかなか使いこなせずにいる私ですが、これはいい ! コンソールから使える git ブラウザ、tig が超便利 Vim に近い操作感で使えるのが Vim 使いには非常に嬉しいところです。以下で、インストール方法と基操作について紹介します。 インストール インストールは、まずソースコードからやってみたのですが、パッケージが存在することに気づいたので、 aptitude で入れ直しました。 sudo aptitude install tig はい、簡単ですね。 起動する カレントディレクトリを Git のワークツリーに移動して、 tig コマンドを実行します。 $ cd /path/to/work-tree $ tig ヘルプを表示する: h 何はともあれ、わからないことがあればとりあえず h を押してヘルプを調べましょう。 カーソルの移動: j, k Vim ユーザなら、何の問題も

    CUI な Git ブラウザ tig を入れてみた - Born Too Late
  • 1