More Related Content
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky SPAセキュリティ入門~PHP Conference Japan 2021 OAuth 2.0のResource Serverの作り方 What's hot (20)
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能 DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】 CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy 法人認証基盤GビズIDと今後の法人KYC - OpenID BizDay #14 BuildKitによる高速でセキュアなイメージビルド スマホゲームのチート手法とその対策 [DeNA TechCon 2019] Viewers also liked (20)
Notafilia moedas comunitárias de portugal Hrd recruitment track report no3_book1(1) Harsh Climate for Human Rights Defenders in China:2014 in Photos 中国大陆人权捍卫者面临严... what it means for PKP to offer Article Level Metrics 08级第七批警务援助队绵竹教学实践活动自我鉴定报告 Redmine 260 300_new_feature CHRD’s image gallery of the year in human rights defense in China Final slideshow hrd 2013 report China, Law and the Foreigner: Mutual Engagements on a Global Stage Recruitment -hrd 2 report (1) Enterprise grade firewall and ssl termination to ac by will stevens Similar to URLで遊ぼう (20)
OSC2008 Tokyo/Spring REST勉強夜会 CakePHPで開発する時に統一しておきたいコーディング内容(080316) デザイナー向け 初めてのPhp ~サイト制作に役立つtips~ RESTful #とは RailsスタイルからRESTを学ぼう Mojoliciousをウェブ制作現場で使ってみてる お前は PHP の歴史的な理由の数を覚えているのか Web programming introduction Beginning Java EE 6 勉強会(7) #bje_study More from Hiraku Nakano (9)
composerの遅さをまじめに考える #phpstudy Scrutinizer CIでPHPも静的解析 #phpstudy PSR-3 Logger Interfaceの紹介 URLで遊ぼう
- 2. @Hiraku (中野 拓)
◦ PHP歴5年ぐらい
◦ Zend Framework, Yaf
◦ http://blog.tojiru.net/
◦ https://github.com/hirak
- 4. http://example.com/index.php?action=hoge
とかだとダサい
短くてCoolなURLにしたい
http://twitter.com/Hiraku
しかし短すぎると
将来の拡張性が…
SEO対策がどうとか
- 6. 他にもURLに関するRFC
があるけど、これが最新
RFC3986
http://www.ietf.org/rfc/rfc3986.txt
http://www.studyinghttp.net/rfc_ja/rfc3986
(橋本英彦氏による日本語訳)
- 9. path = path-abempty ; "/" で始まるか、空
/ path-absolute ; "/" で始まるが、"//" では始まらない
/ path-noscheme ; コロンの無い segment で始まる
/ path-rootless ; segment で始まる
/ path-empty ; 文字が無い
path-abempty = *( "/" segment )
path-absolute = "/" [ segment-nz *( "/" segment ) ]
path-noscheme = segment-nz-nc *( "/" segment )
path-rootless = segment-nz *( "/" segment )
path-empty = 0<pchar>
segment = *pchar
segment-nz = 1*pchar
segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
; non-zero-length segment without any colon ":"
pchar = unreserved / pct-encoded / sub-delims / ":" / "@
- 10. 使ってよい文字
◦ 非予約文字(unreserved-character)
[0-9A-Za-z._~-]
◦ %エンコードされた文字
◦ 予約文字のうちのsub-delims
[!$&'()*+,;=]
◦ 予約文字のうちのgen-delimsの一部
[@/:]
- 11. 0 1 2 3 4 5 6 7 8 9
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
. _ ~ -
! $ & ' ( ) * + , ; =
@ / :
- 14. 0 1 2 3 4 5 6 7 8 9
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
. _ ~ -
! $ & ' ( ) * + , ; =
@ / :
四則演算
できるよね
- 15. http://calc.tojiru.net/1+2
http://calc.tojiru.net/2-1
http://calc.tojiru.net/(1+2)*10/2
URLとして妥当
リクエストすると計算結果がtext/plainで返って
くる
- 16. 0 1 2 3 4 5 6 7 8 9
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
. _ ~ -
! $ & ' ( ) * + , ; =
@ / :
PHP!?
- 17. /$a=1;$b=2;echo($a+$b);
/$a=array(1,2,3);echo(implode(':',$a));
<?php
$code = ltrim($_SERVER['REQUEST_URI'], '/');
eval($code);
$ php -S localhost:8080 index.php
ローカルで実験しましょうね
- 18. スペースが書けないのでclassやfunctionが無理
echoは()が必要になる
[]が書けないので添え字アクセスも無理
"も書けない
できないところも多い
- 20. 縛りプレイ
◦ 使っている文字が少なすぎる
◦ /と[0-9A-Za-z._-]だけでURL作るとか厳しい
◦ /は「階層」の意味合いを感じてしまう
- 21. /map/lat/50/long/20/scale/32000
こういうURL設計を強要するフレームワーク、
よくあるよね
◦ lat(経度)とlong(緯度)は階層じゃない
◦ lat/50とlong/20を入れ替えても動作する方がいい
/map?lat=50&long=20&scale=32000
◦ 入れ替え可能だし階層っぽさは消えた
- 22. Tim Berners-Leeによる提案
http://www.w3.org/DesignIssues/MatrixURIs.html
/map;lat=50;long=20;scale=32000
◦ セミコロンによるqueryと同等の記述
◦ queryを使っていないところに意味がある
- 23. /user;id=123/friends
◦ 後ろに階層を続けることができる
◦ クエリはURL中一度しか使えないので、
Matrix URIの方が拡張性高い
◦ パスの途中にパラメータを仕込む構文が可能
→覚えておくと何かと便利
- 25. URLの記述力はすごい
"/" 以外のsub-delimsを使えば世界が広がる
みんなもっとURLで遊べばいい
- 26. 別に「URL設計はこうあるべき」とか論じる気は
ない
◦ そんなのサービスによって変わるし
その前に選択肢を知るべきだ
自分で制限して自分で苦しむなんて、バカみたい
じゃないか