15 min/d

ぼうずやのにっき

プライベートブラウジングの判定 / ベヨネッタをクリアした

プライベートブラウジングの判定について調べてみた。

プライベートブラウジングにはさまざまな呼び名がある。 Firefox だとプライベートブラウジングChrome だとシークレット モード。 Safari だとプライベートブラウズ。 Internet Explorer (IE) だと InPrivate ブラウズ、 Edge も同じかな……。

プライベートブラウジングは Web ブラウザに履歴や Cookie などを残さずにブラウジングするものだ。

ちなみに、ぼくが愛用している Firefox Focus はこれを前提にしている。 blog.bouzuya.net に書いた気がしていたのだけど、書いていなかったのでメモしておく。ツイートによると 2017-06-26 時点で使っているっぽい。

で、プライベートブラウジングの判定が必要な理由。

Cookie などで情報を保持している場合に、それをプライベートブラウジングによって毎回消されることで問題になることがある。基本は「サーバーサイドで永続化しろ」という話ではあるんだけど、要件的に実現できないこともある。たとえばプライベートブラウジングを意識せず使っているお客さんから「毎回ログインしなきゃいけないんだけど!」みたいな苦情が来ていると思ってほしい。個人的には「いや、あんたプライベートブラウジングしてるやん」とつっこみたいところだけど、客層次第でそんなつっこみは通用しないわけで……。それを「システムとしてうまく誘導してほしい」という要件が降ってきたら、プライベートブラウジングの判定が必要になるわけだ。

標準化されている機能ではないし、セキュリティ上の都合もあるだろうけど、これを判定する推奨される方法は提供されていない (はず) 。いくつか URL を挙げる。

結論から言うと、ひとつめの記事を見れば良い。プライベートブラウジングは履歴やストレージに記録を残さない。その関連の API の挙動に違いが出やすい。

Safari が localStorage への書き込みで Error を投げるのは、普通に使っていて遭遇するレベルなので良いとして、その他ブラウザが問題だ。

Chrome / Opera ( v15 Blink 以降) は Stack Overflow にもあるように webkitRequestFileSystem で失敗する。

IE は indexedDB が undefined で、 Firefox は indexedDB の open で失敗する。

IEOpera は試していないが、ほかはこの記事を書いている時点の最新のバージョンでも判定できている。

推奨された方法ではないので将来的に変わる可能性もあり、ためらわれるのだけど、 npm パッケージにしても良いかもしれない。ちなみに is-private-browser というパッケージがあるのだけど、 Safari しか判定できなくて大変アレ。


ベヨネッタをクリアした。難易度ノーマルで 11 時間 30 分かかった。

一番ゲームオーバーになったのはどこだろう……。 CHAPTER X の VERSE 7 かな。触手の橋を抜けた後で石像から出てくる Grace & Glory 。なぜか、ここでたくさんミスした記憶がある。ほかにもいろいろありそうだけど、印象に残った。アルフヘイムはまったくクリアできていないな。何回かやって、諦める感じ。

『型システム入門』を 14 章まで読んだ

『型システム入門』を 14 章まで読んだ。 13 章では参照が、 14 章では例外が出てきた。参照によって破壊的代入ができ、ストアを扱う必要が出てくる。難しさが増す……。既に雰囲気で読んでいる (理解していない) 。

今日からルミナリエか。今年も行くだろう。明日からガールズ&パンツァー最終章か。そちらも。

雑記 -- 『スターウォーズ エピソード 5 帝国の逆襲』を観た

『型システム入門』を 11 章まで読んだ。 11 章は長かった。 Unit 型・型指定・ let 束縛・組・レコード・列挙型・単一フィールドのバリアント・直和など、馴染みのあるものがたくさん出てきた。

スターウォーズ エピソード 5 帝国の逆襲』を観た。 2017-12-15 公開のエピソード 8 最後のジェダイに合わせた地上波。録画しておいたものを観る。だいたい覚えているので新鮮味はない。冒頭の雪山のあのくだりが要るのか、よく分からない。

日記 -- 髪を切った・太った

髪を切った。先々週は切らなかったので 4 週間ぶりだ。さすがに髪の毛が長くて、気になる状態だった。 2 週間だと早いような気がしたけれど 4 週間だと遅いような気がする。 3 週間ごとに切るとちょうどいいのかもしれない。 2018 からは 3 週おきにするかな。

太った。じわじわと体重・体脂肪率が増えている。おそらく半年で 2kg くらいかな。運動は例の腹筋と通勤時の 15 分程度の歩行くらいだ。食事は変えているつもりはないのだけど、朝食にフルグラを食べている。意識して減らすと減らしすぎそうな増加ではある。冬場は増えるような気がするので、しばらく様子見かな。

『型システム入門』を 10 章まで読んだ。期待通りには進めないな。

ぜんぜん関係ないけど、会社で『どうぶつタワーバトル』の名前を出したら妙な流行が来た。

日記

『型システム入門』を 9 章まで読んだ。

妻とふたりでテレビを観た。調子が悪いというので横に居て。

雑記

ある作業をしたいのだけど、それに必要な準備作業が大変という状況がいくつかあって、はじめるのに覚悟が要る。


coverage gutters を使って、 VS Code にテストカバレッジを表示しようとしたのだけど、うまくできなかった。原因は source maps が多段になっており、それらがマージされていないこと。 ts -> js -> js' のような変換で、 js を開いたときにカバレッジを表示できるのだけど、 ts までは対応できていない。面倒だな。


『型システム入門』を 8 章まで読んだ。型が登場したところだ。とにかく進めよう。

2017-W48 ふりかえり

2017-W48 をふりかえる。

2017-12 の目標

  • 『型システム入門』を読む

2017-W48 の目標 とその記事

目標。

  • [ ] 『純粋関数型データ構造』を進める
  • [ ] rally-cli-hs の 0.1.0.0 をつくる
  • [x] ベヨネッタを続ける

記事。

ゲーム。ベヨネッタを妻の居ないタイミングでもやって進めている。そこはすこし進んでいる。あとすこしで終わるはず……。

純粋関数型データ構造はほとんど進んでいない。 rally-cli-hs も。

図書館から次の本を借りられていない。代わりに年の目標を達成すべく、型システム入門を読みはじめた。いまはまだ 5 章だ。

つくったもの

2017-11-27/2017-12-03

なし。

なかった。 2017-12-01 のようなことを書きたくなるわけだ……。

その他

体重が増えている。腹筋は続けている。股関節はたまに痛む。

2017-W49 の目標

  • 『型システム入門』を 13 章まで読む