/ 最近 .rdf 追記 編集 設定 本棚

脳log[20110524] 同カテゴリのセクションへのリンクを表示するプラグイン(sections_of_a_category.rb)。 | www.junkudo.co.jpのショッピングカートが腐ってる。(Firefox4.0で見た場合。念のため)



2011年05月24日 (火) パンストの続編見たいな。

最終更新: 2017-09-15T10:23+0900

[tDiary] 同カテゴリのセクションへのリンクを表示するプラグイン(sections_of_a_category.rb)。

なんというか……ばっちい(だから非公開(書き直すつもりがないので観念した))。だらだら書き下すとこうなるのね、っていう。申し訳のように抜き出したカスタマイズポイントもうまく分離できなかった記憶がある。たんに切り取って別の場所に貼り付けただけだろう、と。svn logを見てみたら 2009年3月に書いたものらしい。最初はセクションごとに表示する仕様で、それだと日記を分断して邪魔なので一日の最後に表示するオプションを付けたとか。……logによれば。とりあえずこの日記(tDiary-2.3.3.20091124, Ruby-1.8.7-p248)では動いてるみたい。

「カテゴリ[……]の他の日記」リンクの URLはこの日記に特有の、最新表示とカテゴリ表示をくっつけたもののだから他の日記では使えないね(それも非公開の理由)。

2007年や 2009年の日記のタイトルが 2011年のこの日記から参照できてるのは「プラグインが自由に日記データを取得できる手段を提供した」恩恵を my-exプラグインが受けているからじゃないかと推測してる。

 @2017-09 書き直した(リンクはそのまま)。

最終更新: 2011-05-30T23:46+0900

www.junkudo.co.jpのショッピングカートが腐ってる。(Firefox4.0で見た場合。念のため)

「カートに入れる」の結果と「カートを確認」の結果、それらと注文処理に進んだときに表示される注文内容が一致しない。カートに入れたはずの本が入ってなかったり、注文に進むとカートに入ってなかった本が表示される。

何となくつかんだからくりはこう。「カートに入れる」ボタンを表示してる商品ページは状態を持ってる。その「状態」に依拠してカートに商品を追加したりカートの内容を表示したりするのだけど、そんな、ページを表示したときのカートの中身やログイン状況に依存した処理が正しいわけがない。こっちは(Amazon以外ではよくある)忘れっぽいショッピングカート対策として、買いたい商品のページを一個一個タブに開いていって、ゲストのカートに追加されないようにログインして、最後にまとめてカートに入れてるんだから。


  1. ログインしてない状態で商品ページを表示して、
  2. 他のページでログインしてから、
  3. (ログインしてない状態で表示した商品ページから)カートに入れた

のが原因ぽい。偉大なる通販サイト Amazon様の解は、ログイン状態をキープし続ける(※)、だ。その上で、個人情報やお金に関する操作の前にパスワードを求める。アマゾンのログイン状態っていうのは OpenIDでも代替できるような、あるユーザーとあるユーザーを見分けるだけのもので特定の個人とは結びついていない(あるいは Windowsの UAC。普段の権限は低くしておいて必要に応じて昇格する)。ねぇ、なんで勝手にログインセッションを切ったりカートをすぐに空にしたりしたがるの?>有象無象のオンラインショップ。www.junkudo.co.jpは、ブラウザを閉じるまで有効って期限を明示してるだけマシだけど。不都合ばっかりじゃない。

※アマゾンのヘルプに

カートに入れたはずの商品がカートに入っていない

2.アカウントにサインインせずに、商品をカートに入れた

この場合は、サインイン後にあらためて商品をカートに入れてください。

ってあるけど、ログイン状態ログアウト状態を取り混ぜてカートを操作してもカートの中身は一貫性を保ってた(おかしくなったのは「カートを見る」ボタンに表示された商品数だけ)。アマゾンはほぼ常にログイン状態であることに頼ってるわけではなさそう。たぶんこういうことだ。

  • ログイン状態でのカート(IN)とログアウト状態でのカート(OUT)が別々に存在する。
  • カートINはアカウントにひもつけて永続化される。
  • カートOUTはブラウザにひもつけて永続化される。(つまりブラウザの数だけ存在する)
  • カートOUTの中身は可能なかぎり速やかにカートINに移される。(つまりサインインしたときにってこと)
  • サインアウトするとカートINの中身は見えなくなる。(カートOUTの中身は移動済みなのでカートは空になったように見える。サインインすると中身は戻ってくる)

丸善&ジュンク堂書店も同じような仕組み(ブラウザカートとアカウントカートとその間の商品移動)は持ってる。想定外だったのは、アカウントカートに商品を入れる(cart-account.png)でも、ブラウザカートに商品を入れる(cart-browser.png)でもない変な状態(cart-hatena.png)になるルートが存在したこと(でもそんなんタブでもマルチウィンドウでも当たり前にありうる操作だ)。想像するに、

  1. ブラウザカートに商品を入れてみたけど、
  2. どういうわけだか(嗤)もうログインしている。(アカウントカートに商品を追加すべきだった)
  3. もうログインしているからブラウザカートの中身をアカウントカートに移す機会はない。
  4. ログアウトするとブラウザカートの中身は消えてしまう。(ブラウザカートの中身は移動済みで空のはずだった)
  5. おまけに、ブラウザカートに商品があるとログインしていてもアカウントカートの中身は見られない。(不適切な依存関係、誤った論理あるいは優先順位の錯誤)

ってところではないかと。