理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

protocol

REST API における同時並行制御

以前「API で同時に更新要求があったとき、どうするのが定石なんだろう」というのを調べたのですが、きちんとまとめていませんでした。 それからちょっと時間がかかってしまいましたが、簡単にここでまとめてみます。 取り組む問題 勧告 概要 実現 Etag Prec…

ConsulやSerfのGosippingにより情報はどれだけ速く伝わるのか

Consul や Serf でも、Gossiping と呼ばれる通信方式が良く使われます。 Gossiping というのはなにかというのは wikipedia:en:Gossip_protocol にもまとめられています。 オフィスにおいては、情報を持っている人がウォータークーラーの前で会った人にランダ…

コンセンサスアルゴリズムであるRaftの概要

コンセンサスアルゴリズムというのをざっくり言うと、故障の発生し得るノードの集合が、整合性を持ったグループとして 1 つの値を決定する仕組みを指します。 wikipedia:en: Consensus (computer science) このアルゴリズムの具体的な例として、Paxos と Raf…

RFCを調べるときは IETF の Datatracker がすごく有用なことに今更ながら気がついた

新卒で入社した会社の新人研修で心に残っているのは、 "一次情報源にあたれ" という話でした。 要するに Blog 記事とか Qiita とかでノウハウを吸収するのは効率良いんだけど、そうする理由は何?とか、仕様として正しいの?と言われたときに、 このエントリ…

WebSocketプロトコルの中身

WebSocket についてはぜんぜん調べたことなくて、HTTP の上に構築された双方向通信プロトコルやろ、とか思ってました。 Golang で WebSocket サーバを作ったのがきっかけで、きちんと WebSocket の仕様を調べてみたところ、その理解が根底から覆されました。…

はてなBlogをHTTPS化したので HSTS、upgrade-insecure-requests あたりをまとめる

先日、はてなブログが HTTPS に対応したということで、このブログも HTTPS 化を実施しました。 このエントリを見ているとき、ブラウザのロケーションバーを見ると HTTPS になっていることが確認できると思います。 今日は、この HTTPS 化にからめて、混在コ…

最近目にする$HOME/.configというディレクトリ

最近、$HOME/.config に設定ファイルを配置するツールが多くて、これは一体どういうことなんだということを思っていました。git とか peco とかですかね。 たぶん、ls -al ~ とかするとファイル数おおくて収拾つかなくなることに対する問題意識からそういう…

Cookieのpath属性に対するブラウザ毎の挙動の違い

ブラウザ毎の Cookie の path に対する挙動の違いによって、検証しているアプリに色々とバグっぽい挙動が出てきたので、あらためて Cookie における挙動をまとめてみます。 検証内容 セットするCookie の path 属性に /path、あるいは /path/ を指定した Web…

Google Public NTP の Leap Smear

ずっとエントリ書こうと思っていたんですが、Google Public NTP で使われている Leap Smear についてです。 Leap Smear について書き始めたは良いものの、思っていたよりコンテキストが厚くて、閏秒から話をしないといけませんでした。 そうすると、Leap Sme…

Varyヘッダとキャッシュについて

さっき Cache-Control ヘッダの話を書いたんですが、もちろんキャッシュ制御に関しては Cache-Control ヘッダだけで収まる話ではなく、他にも多々のヘッダが影響を与えます。 その一つに、Vary ヘッダがあるので、今日はその話でも。 Vary ヘッダ Vary ヘッ…

セキュリティ対策としての Cache-Control ヘッダについて

今日はブラウザのキャッシュ制御の話。キャッシュについては主に性能面で語られて、情報漏洩に繋がる重要な制御であることは見逃されがちです。 CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog 情報漏…

HTMLから画像をアップロードするためのinput type="file"とHTML Media Capture

HTML を使って、スマートフォンから画像をアップロードをするケースがあります。 このような場合、エンドユーザに対して カメラを使ってアップロードさせる フォトライブラリや iCloud Drive からアップロードさせる などができると便利です。 このあたりを…

tabindexで消耗していた話

tabindex には苦しまされることが多いです。 ぼくは以前に tabindex でタブオーダーが明示的に指定されているシステムのテストを行うことになったんですが、タブオーダーが設計上で明示的に指定されている以上タブオーダーがテスト観点に挙がり、打鍵でタブ…

複雑に関係しあうJWTまわりの仕様を見る: JWS (JSON Web Signature)

最近、JWT JWT 言っているような気がしますが、ぼくはこの単語を OAuth 2.0 の文脈ではじめて知りまして、それから JWT まわりの RFC に目を通し、Auth0 が無料で出している JWT Handbook を読みました。 このエントリは、JWT に関連する仕様について、ぼく…

LINE ビジネスコネクトについて

LINE のビジネスコネクトについて勉強しなくちゃいけなくなったので調べてみました。 平成26年情報通信メディアの利用時間と情報行動に関する調査報告書 によると、LINE の利用率というのは SNS の中で相当数を占めていて、もはやライフラインと言っても良い…

ファイルを直接開くのを禁止してセキュリティ向上 (X-Download-Options)

MIME-sniffing IE には、セキュリティを劣化させるとして悪名高い MIME-sniffing という機能があって、サーバがどんなにこのファイルはテキストファイルだよ!! (content-type: text/plain) とブラウザに教えても、そのテキストファイルに HTML の要素がある…

自動折り返しにまつわるCSS word-break と overflow-wrap

とにもかくにもレスポンシブウェブデザイン(RWD)とやらで HTML やら CSS やらと格闘を続けております。 なんかさー! ブラウザ依存でさー!! 変なレイアウトになったりするしさー!!!! ブラウザだけじゃなくさー!!!!! OS でもレイアウトが変になっちゃったりす…

RWDにおける基本知識(pixel、viewport)

最近はレスポンシブデザインというものと日々戦いを繰り返し、ジャングルの密林で銃撃され続け、疲弊し、厭戦気分が高まりつづけた結果としてヒッピー化している今日このごろなのですが、フロントエンド開発というかレスポンシブデザインというか、そういう…

HTTPヘッダで大文字小文字は区別すべきか問題

HTTP ヘッダを使った処理を書いていて、これは case-sensitive に処理すべきか case-insensitive に処理すべきかが不明ということがあった。例えば API サーバの処理がその HTTP ヘッダの内容に依存する場合において、HTTP ヘッダの大文字小文字を区別すべき…

ブロック暗号化モード

ぼくの中で、暗号化、復号化がわりとホットな話題になってきたのですが、DES や DESede、AES とかの文脈で出てくる ECB だの CBC だのというブロック暗号化モードなるものが理解できなかったので勉強してみた。学び大事。 ** ブロック暗号化モードとは そも…

Websphere MQ における MQMD.version について

WebSphere MQ を勉強しているのですが謎が多い。Websphere MQ 経由でシステム間連携を行う際にどうすれば良いのかについては、かなりややこしい話題がたくさんなので、気付きをまとめていきたいと思います。今日は MQMD の Version について。 ** MQMD とは …

ASCII Armoredとはどんなエンコーディングであるのか

バイナリのデータを ASCII として転送する方法には、みんな大好き Base64 以外にもいろいろな方法があります。この方法の一つとして、PGP の ASCII Armor という方法があるようなのですが、全然知らなかったので調べてみました。 PGP ASCII Armor とは 調べ…

Layer2 over Layer3 たる VXLAN

VXLAN というのは、その名前 Virtual eXtensible Local Area Network が指す通り、VLAN (Virtual Local Area Network) を拡張する技術です。この VXLAN について、RFC7348 をはじめとする資料を読み漁ったので、その内容をまとめてみました。 ** VXLAN の必…

Serfの基盤 SWIM プロトコル概要

Serf 今週、暇なときわりかし Serf を調べてました。 Serf はみんな大好き HashiCorp 社が出しているソフトウェアなわけですが、Introduction - Serf by HashiCorp に書いてあるとおり、大きく分けて 3 つの機能を持っています。 クラスタのメンバ管理機能 …

UUID (version 4) における衝突確率を計算する

UUID というのは、全世界・全時間において一意性を持った識別子とされています。RFC 4122 の言葉を借りると、 A UUID is 128 bits long, and can guarantee uniqueness across space and time とされています。 ですが、128 bit という有限長なんだから 回試…

iSCSI における WWN

iSCSI の WWN(World Wide Name) についてかなり混乱していたので、調べた結果をまとめる。 混乱していたのは以下の点。 + iSCSI における WWN は何を示す識別子なのか ** まずは iSCSI iSCSI の説明の前に、まずは SCSI というのは何かという説明が必要なの…

POST をリダイレクトすると GET になる件について調べた

とある事情により、POST リクエストをリダイレクトさせる必要が生じました。単純にリダイレクトさせてみたところ、リダイレクトはされるものの、POST リクエストに付与していた HTTP_BODY が取得できません。どうも、リダイレクト時に GET に変更されている…

Firefox 11 に搭載された SPDY

3/13 に Firefox 11 がリリースされ、ようやくぼくも Firefox 11 にアップデートしましたが、どうやらこの ver. では SPDY 対応が謳われているようです。 さて、SPDY というと 2010 年にちょっとだけ騒がれたプロトコルですが、みなさん覚えておいででしょう…

Transfer-Encoding: chunked について

Tomcat をコンテナとした Servlet のコード上で Content-Length ヘッダを設定していたのですが、なぜか HTTP レスポンスのヘッダには Content-Length が出力されないという事象が確認されました。 これは一体なぜなのだろうと調べていると、当該レスポンスの…

Read It Later の API

Read It Later に対する Perl からのインタフェースを WebService::Simple を使って作る過程で学んだことをまとめます。 とはいえ、非常にシンプルなので、公式のリファレンスを読んだ方が分かりやすいとは思います。 **API Read It Later の API は以下のよ…