2017年4月9日
やったこと
- パーフェクトPHP | Gihyo Digital Publishing … 技術評論社の電子書籍
- 8章始め ~ 8.4.1
- JUnit実践入門 ── 体系的に学ぶユニットテストの技法 | Gihyo Digital Publishing … 技術評論社の電子書籍
- 4章
- PHPUnitのインストール (Composer)
所感
今日は割とガシガシとコード書いてた。
パーフェクトPHPは、前章で作った自作フレームワークで、Twitter風のアプリを作る話。
自作したフレームワークでアプリを作るというのは、やっぱり勉強になるなあと思った。
ただ、前章では、ひたすらフレームワークを作るだけで、動作確認しなかったので、エラーが出まくった。今は一応直ったはず・・・。
JUnitの方は、昨日の続きやってた。
ただ、JUnit固有っぽいなと思う話が増えてきた感じがするので、このままやっていく意味があるのかなと思い始めた。
そこで、PHPUnitを使って、本に書いてることをやっていくのは意外とありなのでは!?と思い、PHPUnit入れてみた。
なので、明日からは、PHPUnitを使って、本を読んでみることにする。
これもダメそうだったら、また考えよう・・・。
2017年4月8日
筆不精なので、ゆるくその日の出来事でも書くということを目標にしたので、書く。 うーん、なんかブログを書くことに、モチベーションが起きるような何かがあればいいのだろうなー。
やったこと
- JUnit実践入門 ── 体系的に学ぶユニットテストの技法 | Gihyo Digital Publishing … 技術評論社の電子書籍 の2章, 3章
- Webを支える技術 ── HTTP,URI,HTML,そしてREST(WEB+DB PRESS plusシリーズ)|gihyo.jp … 技術評論社 の8章
所感
最近テスト力をつけたいなーとずっと思っていて、Javaはほとんど書けないのにJUnitを書いている。
2章, 3章は、概念的な話が中心だったが、4フェーズテストなど、「ユニットテストでやることって、詰まるところこんな感じ」という話がされていて勉強になった。
Webを支える技術の方は、会社の勉強会に使う資料の作成をした。
CSSをいじれたら、もうちょっといい感じにできるのだろうけど、今のCSS力では無理だった。今後の課題。
HTTPステータスコード 302, 303, 307を整理する
会社で同期と話してる時に、「HTTPステータスコードの302, 303, 307って使い分けがよくわからないよねー」ってなったのですが、たまたまパーフェクトPHPで出てきたので、まとめておきます。
それぞれの定義
- 302: Found
- 303: See Other
- 307: Temporary Redirect
どの定義もユースケースとしては、「一時的に別のURLを見て欲しい場合」に使用する
詳細な違い
- 302, 307は定義上は同じもので、リダイレクト時に使用したものと同じHTTPメソッドでリダイレクトする
- 303は、POSTリクエストでデータを送信した後に、表示用画面へGETでリダイレクトして欲しい場合に利用する
ここまでは、仕様の話なのですが、それを無視した挙動が存在するので、話がややこしいのです・・・
ややこしいところ
ほとんどのブラウザは302でも、303と同じようにGETでリダイレクトする (ほとんどのブラウザは、本来の302の仕様を無視している)
実際に、多くのフレームワーク (Ruby on Railsなど)でも、リダイレクトのデフォルトが302になってますよね
なんでこんなことになったの?
歴史的経緯によるものらしいです。
ざっとした、経緯の箇条書き
- HTTP/1.0には、302 Temporary Redirectしか定義されていなかった
- 303 See Other, 307 Temporary Redirectは、HTTP/1.1で策定された
- HTTP/1.1では、「302はリダイレクト時にリクエストされたメソッドを変更してはならず、303はGETでリダイレクトを行う」という仕様にするつもりだったが、多くのブラウザが302を正しく実装せず、303的な挙動をするようにしていた
- そこで、HTTP/1.1が改定された際に、本来の302の役割を、307 Temporary Redirectとして定義し、302は302 Foundと改定された
まとめ
とりあえず、一時的なリダイレクトを行うときは、302を使っておけば大丈夫みたいです。
なんで同じような定義がいっぱいあるんだろうなあと思ってたのですが、歴史を辿るとなるほどーという感じですね。