ブックマーク / blog.kyanny.me (6)

  • フレームワークとアプリケーションの境目 - @kyanny's blog

    それでもRailsを選択する3つの理由 - pblog 興味深く読んだ。 ずっと気になっていることがある。フレームワークとアプリケーションの境目について。 アプリケーションとフレームワークははっきり区別されるべきなんだろうか。 Rails は「区別するべきだ」と要請しているように感じられる。アプリケーションはフレームワークが規定する「できること」の範囲内で書くべきであり、その範囲を外れる場合は相応の覚悟をしろ、領分を守る限り難しいが一般的な問題はフレームワークが正しく解決してやるぞ、と。 一方で、フレームワークもアプリケーションの一部である、とする考え方もあると思う。足場を支えるライブラリに過ぎない、という思想。両者の境界は曖昧になり、フレームワークが規定する「できること」だけでは物足りなくなったとき、アプリケーション側を「できること」の枠内に合わせるのではなく、フレームワーク側を拡張して

    フレームワークとアプリケーションの境目 - @kyanny's blog
  • クライアントサイド JavaScript (AltJS) のテストを書くのは本当に難しいのか? - @kyanny's blog

    TL;DR - 最初の一人はつらいけど後続はそうでもないので先駆者は自覚と誇りを持ってオールグリーンを維持しよう このエントリはMarionette.js ベースで3ヶ月開発したアプリのカバレッジ推移をまとめてみた - @kyanny's blogというエントリの続きにあたります。未読の方は先にそちらを一読されることをおすすめします。 Marionette.js ベースで3ヶ月開発したアプリのカバレッジ推移をまとめてみた - @kyanny's blogの結論で触れたように、今回テストを書くことにこだわったのは、「クライアントサイド JavaScript (AltJS) のテストを書くのは当に難しいのか?」という問いに対する自分なりの回答を実践して検証してみたかったという理由があったからだ。 以前から「クライアント JavaScript (CoffeeScript や他の AltJS を

    クライアントサイド JavaScript (AltJS) のテストを書くのは本当に難しいのか? - @kyanny's blog
  • pjax を利用したサイト向けの Chrome Extension の書き方 - @kyanny's blog

    Chrome Extension の Content Scripts を使うと Greasemonkey のようにウェブサイトを加工できて便利だが、 Content Scripts はページのロード後に一度だけ実行されるので、 github.com のように pjax を利用しているサイトではページ遷移後に期待通り実行されないことがある。 pjax は pjax:success などの独自イベントを発火するが、 Content Scripts はサンドボックス環境で実行されるので pjax が発火するイベントを Listen することができない。しかし DOM の変更時に発生するイベントを Listen することはできる。 DOM の変更を検知するためには DOMSubtreeModified が利用できるが、このイベントは DOM Level 3 で deprecated になってしまっ

    pjax を利用したサイト向けの Chrome Extension の書き方 - @kyanny's blog
  • 「RSpec は英語として読みやすいから良い」というお題目はなんだったのか - @kyanny's blog

    rspec-2.11 がリリースされましたね。いくつかの変更点の中に、今後は should ではなく expect を推奨し、デフォルトでは expect のみが有効化されるようになる、というものがありました。 http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax 個人的にこの変更は説得力に欠けるなーと思っていて、 expect 推しにする理由が should は Kernel にはえるので Kernel を include しない BasicObject のインスタンスに対して should を呼ぶとおかしくなる 標準ライブラリ delegate は Kernel のメソッドの一部だけを include するので rspec と delegate のどちらが先にロードされるかによって should の挙動

    「RSpec は英語として読みやすいから良い」というお題目はなんだったのか - @kyanny's blog
  • 「あとで捨てることになるコードのテスト」について - @kyanny's blog

    同僚とこんな話をした。 例えば「キャンペーンサイトとプレゼント応募フォーム」のような、一時的にしか使わないことがわかっているコードに対するテストをどの程度書けば良いのか?納期は迫っていて、他にもっと優先度の高い仕事もあるとする。最低限 200 が返ってくることだけをテストすれば良いのか、 POST したらどのようなリソースが作られるかまで厳密にテストすべきなのか。 そのとき述べた僕の意見を書いてみる。 追記 同僚の名誉のために補足すると、その時は「不安な部分をテストすべき」という当たり前な結論に落ち着いたのだけど、そもそも詳しく聞いてみたら「僕ならここは不安だから書くと思う」と考える部分については、彼はすでに書き終えていて、その上でさらに厳密にテストを追加すべきだろうか?という問題意識を持っていた、という。なので、以下に意識高そうなことをつらつら書いているけど、同僚氏のほうが僕よりよっぽど

    「あとで捨てることになるコードのテスト」について - @kyanny's blog
  • MySQLのインデックスを学ぶ (2) - @kyanny's blog

    Linux-DBシステム構築運用入門をさらに読んでいる。前回は主に Chapter 8 を読んだ内容をメモったが今回は Chapter 9 の内容。 INSERT とインデックス インデックスが多いと INSERT の性能が落ちる、という話題はなんとなく見聞きしていたが、何故性能が落ちるのかについてはわかっていなかった。詳しくは Linux-DBシステム構築運用入門 P210 の図を見てもらうとして*1、ランダム INSERT よりも昇順 INSERT のほうがインデックスのリーフブロックの仕様効率が良い == インデックスのサイズが小さくなる == バッファキャッシュに載りやすくなる == I/O が減る、というのは知らなかったしとても勉強になった。インデックスを更新するために INSERT でもディスクから読み込みが発生する、というのも知らなかった。 クラスタインデックスとランダム I

    MySQLのインデックスを学ぶ (2) - @kyanny's blog
  • 1