タグ

ブックマーク / tomykaira.hatenablog.com (7)

  • Rails はどのようにして ETag を設定しているか - tomykaira makes love with codes

    2013-07-03 Rails はどのようにして ETag を設定しているか Rack Rails Rails と Rack でのキャッシュ、とくに ETag の動作について調べた。 ネット上にはまともな情報がみつからなかったので、まとめておく。 Rails: 3.2.11 Rack: 1.4.5 クライアント: Firefox 22.0 Rails 4 ではキャッシュの扱いが変わったようだが、より繊細な扱いができるようになったというだけで、たんなる HTTP server として使う時のデフォルト動作は変わらないのかな? ETag のしくみ 事例に学ぶWebシステム開発のワンポイント(12):ブラウザキャッシュでパフォーマンス向上―負荷分散装置の落とし穴に注意- - @IT サーバがレスポンスヘッダに ETag フィールドを混ぜて返す。 値は通常レスポンスの内容をダイジェスト化したもの

  • HATEOAS は API のニーズを勘違いした失敗設計である - tomykaira makes love with codes

    2013-06-29 HATEOAS は API のニーズを勘違いした失敗設計である REST HTTP REST: From GET to HATEOAS from josdirksen これを見て HATEOAS という概念について知ったが、ここで主要な主張となっている、"hypertext-driven" というのは鵜呑みにしていい主張じゃないと思う。 REST APIs must be hypertext-driven » Untangled : もとの論文発表者による記事 HATEOAS(Hypermedia As The Engine Of Application State) の中心となる主張は、 HTML のように、次の操作に対するリンクを、APIレスポンスのなかに埋め込むもうというものだ。 ブログ記事から引用する。 A REST API should be entere

  • git push 前に自動でテストを回そう - tomykaira makes love with codes

    2013-07-14 git push 前に自動でテストを回そう git git push する前にテストを回しわすれ、 pull request が CI にはねられて悲しい思いをすることが多かったので、忘れないように自動化した。 git には pre-push hook が 1.8.2 から導入された。 以前 temporary なコミットが含まれる場合、push をやめるというのを作ってとても重宝した。 git-now したコミットの誤送信をふせぐ - tomykaira makes love with codes テストを回すのはチェックに時間がかかるけど、それで円滑な開発と綺麗なコミットグラフが促進されるなら、30秒ほどまつ価値はあると思う。 .git/hooks/pre-push の内容は次のような感じ。以前のに足したところから、関係なさそうなところを消したので、余計なものが混

  • Rails のモデルはどうあるべきか - tomykaira makes love with codes

    2013-07-05 Rails のモデルはどうあるべきか rails TL;DR: Rails の model が太りやすいのは、生まれつき責務過剰だから。開発者が設計段階で責務を絞り、べる量を減らしてあげよう。 Rails の model というのは、概念も実装も、とても奇妙な使われ方をしている。 いささか不気味だし、実害もある。 fat model はずっと Rails 界で話題になりつづけている。 すでに Rails のプロフェッショナルは抜け出せているのかもしれないが、まだ議論の余地のある話題ではあるようだ。 なぜ model が太るかというと、なんでもかんでも model にべさせるからである。 一日中べてれば元々どんなにスレンダーでも太るに決まってる。 コードのダイエットべる量を減らすか、外に出すしかない。 太ってから外に出すのがリファクタリングである。 後知恵的に

  • 最近の git の使い方について - tomykaira makes love with codes

    先日の #shibuyarb の懇親会ですこし話したら、わりとい付いてもらえたので、 knowledge worth spreading だと感じた。git の設定を中心に共有する。 ワークフロー @kyon_mm さんの Continuous Commit の熱心な信奉者である。 Continuous commit とは continuous integration, continuous delivery とおなじように、開発中のコミットを自動化する試みである。 continuous commit という言葉はなくても、おなじようなことを自分でやっているひとは多そうだ。 continuous commit は大量のコミットログを残すので、これを整理する作業はけっこう負荷が大きくなる。 最近はこのあたりを改善している。似たようなワークフローを採っている人には役にたつと思う。 コミットを

  • JSX を二日間ぐらい使ってみて、あんまりよくないことがわかった - tomykaira makes love with codes

    恒例の言語 dis 記事。無知をさらけだしているのでぜひともつっこみをください。 2日間ぐらい JSX でちょっとしたプログラム(真理値表をいじったり、QM法をおこなったりするもの)を書いてみて、JSX が残念なことがよくわかったのでまとめた。今回やったのはわりとロジックっぽい部分で、表示したりライブラリつかったり外部と連携したりといったことはなかった。 JavaScript / JSX の用途としてはかなり特異なものだとおもうので、そういうのに適当じゃなかった、というのはあるかもしれない。 しかし JSX の場合はべつにウェブ系に強い印象もないので(ライブラリとか)、今回指摘する問題点の一部は、やはり看過できないと思っている。 環境編 エラーが出たときに、どこで出ているのかわかりにくい 変換したスクリプトを node.js で実行しているため、通常の実行時エラーは変換後の js フ

  • 非 Rubyist に送る、失敗しない ruby 実行環境構築方法 - tomykaira makes love with codes

    OS や、動かしたいアプリケーションに依りますが、ruby の実行環境の構築は大変です。 というのも、ruby 体、rubygems、各 gem などのバージョン指定が交錯していて、ruby の ecosystem に慣れていない人にとっては、なにがなんだかわからないからです。 こっちのツールを動かそうとすると、こっちが動かなくなる、みたいなことになります。rubyists は、バージョンの問題を吸収するためのツールを使ってこの問題に対処していますが、ruby に詳しくなくて、ただ ruby 製のツール(たとえば Redmine)を使おうとしている人は分からないでしょう。 そういう人が ruby に挫折しないように、事実無根な中傷をしないように、最近流行のツールで、バージョンミスマッチの問題をおこさない方法を説明します。この説明が対象としているのは UNIX,LINUX 系の環境だ

  • 1