タグ

ブックマーク / lowreal.net (9)

  • Ruby でスコープをはずれたときに自動で何かをする | tech - 氾濫原

    Guard オブジェクト Perl だと Guard オブジェクトとかいうハックがあって、スコープを出るタイミングで必ず呼ばれるファイナライザを使って、あるスコープでだけ有効な処理を書けたりします。 例えば、DB のトランザクションや、あるいは以下のように依存するプロセスをあるスコープでだけ起動して終了するような用途で使われています。 { my $guard = Proc::Guard->new(command => [ "memcached", "-p", "12321" ]); # do something ... }; # memcached has been killed 適当なメソッドにブロック(サブルーチン)を渡せばええやん、という気もしますし、実際 Ruby の transaction の場合そういう感じになります (Perl でももちろん同じようなサブルーチンを書くことはで

  • Ruby でメソッドの一時的な上書き | tech - 氾濫原

    テストとかでやりたくなると思うけど、こんなくだらないことに gem とか使いたくないので、簡単に書ける方法をさがしてる。 class Foo def hello puts "Hello" end end みたいなクラスがあったとして、hello メソッドを一時的に上書きしたい (そして戻したい) とき あるオブジェクトのメソッドだけを上書き これは singleton class を使ったらすぐできるのでかんたん foo = Foo.new orig = foo.method(:hello) # 元のメソッドを呼びたいときだけ必要 foo.define_singleton_method(:hello) do puts "before hello" orig.call puts "after hello" end foo.hello #=> # before hello # Hello #

  • node_modules を別の場所に置く | tech - 氾濫原

    CI とかで、あるディレクトリが毎回削除されて作りなおされ、そのディレクトリに package.json がある場合、毎回 npm install をすると大変非効率なので、別のディレクトリに node_modules ディレクトリを置いてそれを指定して使いたい。 しかし package.json に書かれた依存はそのディレクトリの node_modules ディレクトリにしか置けないようなので、以下のようにした。 任意の場所に node_modules ディレクトリをつくる npm install する前に、package.json があるディレクトリに ln -sf で、上記で作った node_modules ディレクトリへ symlink を貼る npm install する これで、インストール済みモジュールはそのまま使われるようになり、毎回 npm install で何もかもが

  • node.js で Perl における Test::TCP または Ruby における Glint | tech - 氾濫原

    Perl には Test::TCP というのがあって、テスト中、空いてるポートで何かしらのサーバーを起動して使うということができます。Ruby においては Glint というライブラリがあって、同じことができます。 node.js の場合、node-test-tcp というのがあって、node の net.Server で動くサーバに関しては簡単に同じことができます。が、memcached とか外部プロセスを起動させようとするとちょっと困るのと、done() を呼ばないと終了しないので、何かいい方法はないかなと思ったので書いてみました。 https://github.com/cho45/node-glint test-tcp だとカブるので glint のほうの名前を仮りています。 つかいかた glint( function (port) { // ここは外部プロセスで実行される // た

  • AngularJS の ngResource を既存APIの仕様にあわせる | angularjs | tech - 氾濫原

    AngularJS には ngResource という拡張があって、サーバに対する API 経由の CRUD 的操作を JavaScript のオブジェクトとしてラッピングできる。具体的には例えば var Entry = $resource('/entry/:id'); var entry = Entry.get({ id : 0 }, function () { entry.title = "yuno"; entry.$save(); // XHR (async) }); とかできる。ちょっとかっこいいけど、既存APIで使おうとすると、些細なフォーマットの違いで案の定使えなかったりする。どうしても使ってみたいけど、サーバサイドAPIの仕様まで変えたくない場合、若干無理矢理な方法である程度なら対応させることができる。 サーバサイドの仕様 前提として以下のような仕様だとする エントリリスト取

  • 「標準レンズ」について | tech - 氾濫原

    「標準レンズ」の何が標準なのか、ここ数日考えてひとまず自分なりに結論を出したのでまとめてメモ 結論 一般的な鑑賞環境において、パースが自然、すなわち肉眼で見るパースとほぼ同じであること 前提 写真のパースは、一般的に説明するときには、焦点距離によって変化して、広角では遠近感が強調され、望遠では圧縮される、とされているが、厳密にはこれだけだと説明が不十分である。焦点距離の違いは、単に画像をどの大きさで (すなわち画角で) トリミングするかの違いでしかない。これは、無限の解像度を持つカメラと、無限の解像度を持ち収差のない超広角レンズさえあれば、後処理でトリミングすればいいだけなので、それ以上長い焦点距離のレンズなどいらないということを意味する。質的に、レンズはパースを変化させない。 ではどこでパースの変化が起きるかというと、それは鑑賞環境、つまり出力サイズ (プリントサイズ) と、鑑賞者まで

  • そこに誰かがいた #1 - 2011

    後書き この写真集は、2011年にある写真コンテストに応募して落選したものを再編したものである。オリジナルはA3ノビ、40枚、全てランドスケープのものであったが、ウェブで公開するにあたり一部削除している。また、この後書きは作品説明として書いたのを再編したものである 概要 若者たちの孤独のありかたと、入れ物としての写真というのを主題に撮り、「一年」というくくりの元にまとめて作品とした。 賑やかで薄い、無自覚な孤独の中で生きているデジタルネイティブ世代の若者達に、深いポジティブな孤独を感じとって欲しい、という思いと、この写真の集まりを通じて、自分の気持ちのありようを考えて欲しいと考えた。 若者たちの孤独のありかた 「デジタルネイティブ」と呼ばれる若者たちは、インターネットを通じ対面でないコミュニケーションを使いこなし、常にたくさんの誰かと繋っている環境に身を置いている。しかしながら、対面でない

    そこに誰かがいた #1 - 2011
  • ひだまりスケッチ×☆☆☆ (みっつといわずに1000個の☆でゆのっち)

    {"normal"=>820, "green"=>532, "red"=>307} Total: 1659

  • XPath でぐりもんだもん / Shibuya.js Technical Talk #1

    GM でよくあること クラス列挙したい (getElementsByClassName) ある要素を選択したい とか、既存のドキュメントを何かするのが殆ど。 JavaScript での XPath DOM Level 3 の仕様 現在では Gecko のみサポート Opera も 9 からサポート? こんなん: var xpathResult = document.evaluate( expression, context, resolver XPathResult.ANY_TYPE, null );

  • 1