岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

「識別子結合方式」と「Wikipediaの名前空間」(続々・こんなURI設計、どう?)

URI

先日の日記でひねり出した「識別子結合方式」のURIは、現実のWebサービスでは見かけないので、「またいつものように僕だけが突飛なことを考えているんだろう」とひとりごちていたら、ふと、Wikipediaで使われていることに気づきました。 Wikipediaの名前空間…

続・こんなURI 設計、どう?

URI

先日書いた「こんなURI 設計、どう?」の続きです。 例:商品ブックマークサービス URI設計の例として、商品ブックマークサービスを対象に考えてみます。提供するおもなリソースは、以下の5つです。 リソース名 パンくずリストのイメージ トップレベルリソー…

こんなURI設計、どう?

URI

先日書いたように、作りたいWebサービスがあります。当然ながら、まずは設計から始めなければなりません。設計にあたっては『Webを支える技術』の第15章で紹介されているサービス設計手法を用いることに決めたのですが、URI設計のステップで、はたと考え込ん…

Amazonのカートの不便な点

Amazonのカートって不便じゃないですか。僕はいつも、買うかどうか微妙な商品をAmazonのカートに放り込んでいて、そういう使い方をしていると、以下の点に不便を感じます。 複数の商品を選択してのボタン一発処理ができない。カート上の買わない商品をだーっ…

Twitterの中途半端なエスケープにどう対応するか

TwitterのつぶやきをAPIで取得すると、中途半端にエスケープされた文字列が返ってくる id:koseki2さんが「Twitterのエスケープ処理について。 - こせきの技術日記」で指摘されているように、TwitterのつぶやきをAPIで取得すると、中途半端にエスケープされた…

『Webを支える技術』第3部と第4部を読んだ

前回の日記の続きです。『Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)』の第3部と第4部を読みました。以下、特に勉強になった点などのメモです。 第3部 HTTP リソースの作成はPUTよりPOSTが望ましい。PUTはサーバとの結合が密になる…

『Webを支える技術』第1部と第2部を読んだ

昨日の日記の続きです。『Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)』の第1部と第2部を読みました。 第1部 Web概論 「第2章 Webの歴史」が知らないことばかりで面白かった。個人的に興味深かったのは、SOAP対RESTの論争に火を付け…

『Webを支える技術』を買った

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)作者: 山本陽平出版社/メーカー: 技術評論社発売日: 2010/04/08メディア: 単行本(ソフトカバー)購入: 143人 クリック: 4,320回この商品を含むブログ (183件) を見る我慢できない子なので…

「JP ISBN Linker」を更新した

拙作のグリモン「JP ISBN Linker」を更新しました。マウスだけでなく、Shift+MでもAmazonの書籍ページが開くようになっています。*1 役に立ちそうな方 Twitterで @junkudo_ike_pc や @shosen_bt_pc をフォローしている。かつ、LDRizeを使っている livedoor …

TDDについてのメモ

TDD

1. 「TDDはテスト手法ではない」と2004年には言われていた dannさん(2004-02-08) TDDはテスト手法ではないTDDは設計手法です。Jon Trisenさんは、TDD is about Testingだと言っていますが、自分はそうは思いません。TDD isn't about Testingです。極論すれ…

有効にしているGreasemokey一覧を晒してみる

この記事の更新履歴 2010-03-04 この記事を随時アップデートしていくことに決めた。「Gmail Unread Message Count in Favicon」を追加。 本題 Firefox 3.6上で有効にしているGreasemokey一覧を晒してみます。珍しいものもあると思いますので、お役に立てば幸…

「Wassr - Replace Nick to UserID」を公開した

Wassrの各投稿者の表示をニックネームからユーザIDに変更するグリモンです。 http://userscripts.org/scripts/show/69481 id:kazuhookuさんがWassrで書かれていたブックマークレット*1をユーザスクリプト化したものです。使っているGreasemonkeyリストを晒そ…

「LDR - Emphasize Authors」を更新した

「LDR - Emphasize Authors」を更新しました。livedoor Reader上で、指定authorによるエントリのauthor部分を強調表示するグリモンです。 http://userscripts.org/scripts/show/26571 OperaやFastladderでも動作するようコードを改善しています。インストー…

「COOKPAD - Show Report Count」を公開した

クックパッドのサイト上で、レシピへのリンクテキストに「つくれぽ」の件数を追加するグリモン「COOKPAD - Show Report Count」を公開しました。 http://userscripts.org/scripts/show/69403 id:samurai20000さんの「cookpad_tukurepo」がオリジナルです。今…

「JP ISBN Linker」を公開した

ISBN文字列をダブルクリックするとAmazon.co.jpの該当書籍ページが開くグリモン「JP ISBN Linker」を公開しました。 http://userscripts.org/scripts/show/69041 初めは、以前書いたグリモン「bk1 - Add Amazon Link」(bk1の書籍詳細ページにAmazonへのリン…

「LDR - FIFO Pin」を更新した

不定期に訪れるGreasemonkey期。まずは、livedoor Readerのピンの挙動をFIFO(先入れ先出し)に変えるグリモン「LDR - FIFO Pin」のコードを少し書き直しました。 http://userscripts.org/scripts/show/24235 汚い部分(onloadを置き換えるところとか)を整…

「LDR - Clear Deduped Style」を更新した

もういっちょ。超絶便利グリモン「LDR - Dedupe Entries」を拡張する、拙作のグリモン「LDR - Clear Deduped Style」を更新しました。 http://userscripts.org/scripts/show/23739 Shift+Rでエントリのスタイルが切り替わる挙動はそのままですが、Shift+Eで…

AutoPagerize環境でもmixi日記の絵文字パレットが開くGreasemonkey

AutoPagerizeを使っていると、mixiの日記のコメントフォームで絵文字パレットが開かないことに気づきました。そこで、その問題を解消するGreasemonkeyスクリプトを作ってみました。 AutoPagerize filter for mixi diary Emoji お困りの方はどうぞ。日記ペー…

Routerライブラリを書き直すことに決めた

前回の日記で「RouterやDispatcherもプラガブルにしたい」「Rackのような抽象化をRouterレベルでトライしてみたい」と書きましたが、これ、ちょっとおかしいですね。 HTTPD <-> Rack <-> アプリケーション アプリケーション <-> ???? <-> Router抽象化である…

フレームワーク作りの一歩はRouterから

「RubyでオレオレWebアプリケーションフレームワークを作ろう」と思ってからどれほど経ったのか、過去記事をさかのぼれば分かりそうですが、きっと呆れるくらい経っているので、あえて調べないことにした岩本です、こんばんは。フレームワーク作りにこれだけ…

ユーザID≠ログインIDにしよう、そうしよう

この日記が良い例ですが、URLなどでIDが公開されるWebアプリは、悪意のある第三者にパスワードが推測されてしまうと、不正ログインされる可能性があります。考えてみると、ログインに使うIDをわざわざ公開する必要はなさそうです。公開することに意味がある…

ユーザID妥当性チェックのテストケースを考える

前回の記事にて、妥当なユーザIDとパスワードを決めました。そこで、さっそくバリデーション処理をBDDで実装しようとしたのですが、適切なシナリオがなかなか決まりません。たとえば、ユーザID。許可する文字種は英数字および「-」「.」「_」です。妥当な文…

ユーザIDとパスワードの妥当な文字種と文字列長を考える

趣味のWebアプリ製作において、ユーザ登録処理を現在実装中で、バリデーション仕様をどうするか考えてみました。その過程を晒します。何が妥当かなんて人それぞれだとは思いますが、一例ということで。 ユーザID 設計上、一部のURIにユーザIDが含まれる。URI…

どうすればCucumberで例外をテストできるのか

なぜCucumberを選んだのか BDDでユーザ登録処理を実装し始めた。テスティングフレームワークにはCucumberを使っている。Cucumberを選んだのは、前提条件(Given)を明示的に書けるのが気に入ったからだ。以前使っていたRSpecでは書けなかった(RSpec::Story…

スケーラビリティへの執着を断つ

このところ、スケーラビリティについて私が考えても無駄ではないかと思い始めている。私が仕事で作っているのは小規模のWebアプリだし、転職する予定も今はない。趣味のほうはといえば、Webアプリ運営に使える予算などたかが知れていて、安いVPSが1台借りら…

cookpad_tukurepo を fork した

id:samurai20000 さんの書かれた、クックパッドのレシピへのリンクに「つくれぽ」件数を追加するユーザースクリプト「cookpad_tukurepo」が、クックパッドのマークアップが変わって動かなくなっていたので、fork してみました。

これが私の考える「アーキテクチャ」だ

「アーキテクチャ」という言葉を下記のように理解してかまわないのでしょうか。 たとえば Ruby on Rails が、Merb でも Sinatra でもない、現在の Ruby on Rails のような形になるにあたって下されたであろう設計判断の総体、および「現在の Ruby on Rails …

MVCについての私なりのまとめ

MVC

MVC とは「Model と View と Controller を分ける作法」のことである。そのような作法を総称して、一般に「アーキテクチャスタイル」や「アーキテクチャパターン」とよぶ(例:「REST は WWW のアーキテクチャスタイルだ」) Smalltalk というアーキテクチャ…

Webアプリケーションにおけるセッション管理についての私なりのまとめ

認証時にセッションIDを発行し、HTTPリクエストに含まれるセッションIDで認証済み状態を維持する手法を「セッション管理」とよぶ(すなわち、セッション管理は「認証」とは別物である) 認証やセッション管理の不備によるセッションID漏洩に備えることを「セ…

htmlspecialcharsに関する素敵なお知らせ

外出のため確認が遅くなってしまったのですが、「htmlspecialcharsに関する残念なお知らせ」という記事で触れたバグレポートが、reopenされ、fixされました。「改善される見込みは薄い」という私の予測は外れたわけで、申し訳ないと思うと同時に、htmlspecia…