diary

I like Hatena Star with a text selection.

2021-06-09

ピアノレッスンだった。愛の挨拶、まずは左手を重点的に練習しよう、ということで左手をずっと練習してたらちょっと弾けるような気がしてきた。


Railsとetagについて調べていたのを軽く社内ブログにまとめたのを雑にアウトプットしておく。

etagとは

うちのRails appではetagを付与はしているけど、HTMLを返すときは意味がなくなっている。

多分etagを付与しているのはRack::ETagさん。 https://github.com/rack/rack/blob/d0c6efc666ede26768f33935f00530629690369a/lib/rack/etag.rb

これはresponse bodyのSHA256をetagとしている。

Rails appのCSRFトークンはリクエストのたびにランダム。これはBREACH攻撃によってCSRFトークンを盗み出されないようにするため。

BREACH攻撃については https://blog.ohgaki.net/breach-attack-explained-why-and-how を読んだ。 雑に説明すると、暗号化の圧縮効率を利用した攻撃。任意のテキストをレスポンスに含めることができて、そのレスポンス(暗号化されている)を入手できれば攻撃が成立する。盗み取りたいデータ(ここではCSRFトークン)が毎回固定ならば、テキストをランダムに付与してレスポンスを得て、そのレスポンスの圧縮後のサイズが一番小さいテキストがCSRFトークンに一致するらしい。

CSRFがどうランダムになっているのかは https://techracho.bpsinc.jp/hachi8833/2017_10_23/46891 を読んだ。Base64(nonce + (token XOR nonce))CSRFトークンとして渡す、という話っぽい。

脱線した。 CSRFトークンがランダムなので、response bodyのSHA256は当然毎回異なる。そのため、CSRFトークンが埋め込まれたHTMLは絶対にetagがマッチすることはない。

あとKibelaではHypernovaのIDもランダムに生成されていたのでそれも障害になっていた。

Railsはcontrollerからetagを渡すようなメソッドも用意しているのだけど、どう考えてもアクション1つが依存するキャッシュキーをすべて正確に抜き出すのはだるい。そしてそのだるさを頑張ったとしても、スキップできるのはresponse body分の通信帯域とviewを組み立てるコストぐらいで、割に合わなさそうな感じがしている。

# application_record.rb
class ApplicationRecord < ActiveRecord::Base
  after_commit -> { Rails.cache.write 'global-etag', Time.zone.now.to_f }
end

# application_controller.rb
class ApplicationController < ActionController::Base
  before_action -> {
    etag = Rails.cache.fetch('global-etag') { Time.zone.now.to_f }
    fresh_when etag: etag
  }
end

キャッシュキーを考えるのは大変すぎるので、DBのレコードが1つでも更新されたらパージされるキャッシュキーを作る、というのも思いついた。 まあこれも色々考えると大変そうだから、実際にproductionに入れるのはつらいかなあ。Rails.cacheの更新頻度が大丈夫なのかとか、まあ色々ある。

2021-06-07

しばらく微熱が続いていたので、病院で検査を受けた。 血液検査とPCR検査。

血液検査では多少炎症が見られて、ウイルス性のなにかにかかっていた可能性はあるものの、大きな問題はないとのこと。

PCR検査は明日の17時までに結果が出るらしい。陽性なら連絡が来て、陰性なら連絡が来ない。 唾液を出すのが大変だった。


電話の保留音で自分がピアノで習っている曲が流れてちょっと楽しかった。

2021-06-01

こみっくがーるず7巻読んだ。めっちゃ良い。1巻から読み返していたのだけどうるっときてしまう。

今は恋アスを読んでいるのだけど、そっちもうるっときてしまう。


興亡の世界史 大清帝国と中華の混迷、読み終わった。

アジア、特に中国の歴史に苦手意識があって読んでても全然頭に入ってこないのだけど、この本は結構面白かった。


日本語

  • 復辟(ふくへき)
  • 無間地獄(むけんじごく)
  • 管見(かんけん)
  • 模様眺め(もようながめ)

ピアノにアプリをつなげるとDropboxに録音を保存できるので、保存して自分の成長を楽しむことにした。今はまだ下手でつらい。

これは数日前に弾いたカノン。 https://www.dropbox.com/s/q8svoenpblffau1/2021-05-27%2018_35_21-canon.m4a?dl=0

レッスン受け始めて3ヶ月経った。

2021-05-30

またぞろ。1巻読んだ。きららって感じで良い。高専1年で留年したのを思い出して懐かしさに浸っている。

留年について思い出してもつらくなったりしなくなって、年を取ったと言うか面の皮が厚くなったというか。


はなまるスキップ、1巻読んだ。最初は「微妙だなー」と思って読んでたけど、読み進めていくと「???????」になってた。

ちょっとノリがきついところもあるけど面白い……のかなあ。なんとも言えない


月は東に日は西に、久しぶりに読んだ。やっぱりよいなー。


ピアノのレッスンを受け始めたときに最初に練習していたメヌエットを久しぶりに弾いてみたら全然弾けなくなっていてびっくりした。ちょっと練習したら、楽譜見つつ詰まりつつ弾けるようにはなった。練習しないとだめだなー。


今期こそ単位をちゃんと取って卒業に近づくぞという思いで、オンラインで受ける授業を受けてた。

2021-05-27

ピアノにiPadをつないで専用のアプリで録音ができるのだけど、録音したデータを外に出すにはDropboxを経由する必要がありそうで、Dropboxのアカウントを持っていないので諦めた。不便…。


久しぶりにSo What?読んでた。Kindle版が出ているのに気がついたのでKindleで買って読んだ。物理本も持っているけど。Kindle版だと解説とか色々省略されていてちょっと悲しい。

わかつきめぐみさんの原画展やるみたいだけど、東京だし行けないの悲しいなあ。