@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Logical Awesome

今日偶然知ったこと。

❯ curl -v http://logicalawesome.com/
*   Trying 192.30.252.154:80...
* Connected to logicalawesome.com (192.30.252.154) port 80 (#0)
> GET / HTTP/1.1
> Host: logicalawesome.com
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: GitHub.com
< Date: Fri, 15 Sep 2023 04:41:04 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 1268
< Vary: Accept-Encoding
< Last-Modified: Thu, 11 Jun 2009 05:25:27 GMT
< Vary: Accept-Encoding
< Access-Control-Allow-Origin: *
< ETag: "4a309547-4f4"
< expires: Fri, 15 Sep 2023 04:51:04 GMT
< Cache-Control: max-age=600
< Accept-Ranges: bytes
< x-proxy-cache: MISS
< X-GitHub-Request-Id: D51A:23F9:5CD3BA:88482E:6503E060
<

椅子の汚れ

おれの椅子は三毛猫のお気に入りの寝床の一つになり、夏場は見向きもしなかったが季節が変わってきて数日前からおれがしばらく席を外しているタイミングでいつの間にか寝てる、ということが増えてきた。時折、夕食時などに元気よく爪を研ぐ音が聞こえてくる。それはもうほぼほぼ諦めていたが、今日はついに恐れていたことが起こったかとドキッとした。三毛猫はたまにウンチのキレが悪くて床に落としてることがある。さっきおれの仕事部屋に入ってすぐの床に落ちてて、片付けたあとで椅子を見たら茶色い汚れが。。

てっきりウンチで汚れたおしりを擦り付けて座って汚れたのかと思ったが、ペット起因の汚れ用のクリーナーをスプレーしてからティッシュで拭いたら汚れの落ち方が予想と違って、どうもドライフードを吐いて、すぐ自分で?(あるいはもう一匹のほうが?)食べ直した跡のようだ。最悪な事態は避けられたのかなとホッとしたが、しかし見えてないだけでもうとっくにそういう汚れもこびりついてはいるだろうなあ。

写真は犯人、いや現場を押さえたわけではないので容疑者の様子。

その後別の部屋の畳の上にもウンチを見つけ、その周囲にウンチのついたお尻を擦ったであろう跡があり、それも拭いたら椅子を拭いたときと似たような汚れの落ち方だった。……。

一年半くらい溜め込んでいた血液検査のデータをスプレッドシートに記入した。金沢に引っ越す前の分から溜めていた。ずっと全ての項目をせっせと記入していたけど、引っ越しで病院が変わり検査結果の項目も変わったタイミングで全件記入を諦めて主要な項目だけ入力するようにした。

だいぶシート数が増えたなあと思って数えたらグラフの元にしてるデータのシートだけで 58 個あった。つまり 58 回エンタイビオを打ったってこと?

そうではない - 2021-04-01 は花粉症からの扁桃炎で CRP がものすごく高かったので念のため翌週 2021-04-08 にも来院して血液検査した。そういうのが他にもあったかもしれない、ないと思うけど。

どうでもいいけど 18 年で 5000 以上のエントリを書いてきたブログなのに 扁桃 で検索したらリンクした 3 エントリしかヒットしないってすごくない?

まあそれを差っ引いても、隔月間隔でエンタイビオを打ってて 2018 年から五年間で 6 * 5 = 30 回かそこらなはずなのになんでこんなに多いのか、と思ったけど発熱性好中球減少症で二週間入院したときに毎日のように採血してたデータも入力したからだった。

このようにブログでも日記でもいいけど日々の出来事を記録しておくとこういうときに「あれなんだっけ」を思い出せるので便利。

一点、今の病院でもらってる血液検査の結果シートには「好中球数」という項目名がなく、しかしググったら好中球を Neutrophil というらしく、「Neutrophil 数」という項目があったが単位が不明で値が前の病院の結果と全然違う(前の病院では数千のオーダーだったのに今のは 10 以下の実数)。おそらく単位が違う(1/1000)のだろうと思って一応 * 1000 した数字を入れておいた。

それにしてもこのスプレッドシート、ゴリゴリに VLOOKUP で数字を集めてグラフ化してるけど、もし壊れたら直せる気がしない。もっと管理しやすい方式に乗り換えたいけど、いいアイデアもないしリサーチする気も起きないので惰性で使っている。

CRP のグラフ
CRP のグラフ

Assist Lesson

たしかビズメイ太郎さんシリーズではない、適当に予約リストで見つけてお気に入りに入れてた女性トレーナーとの初回。看護の仕事の経験ありというプロフィールなので当たりを期待して。よく喋り、人当たりは良かった。チャットボックスの指摘もなかなか。しかし雑談で終わってしまったのでレッスンの腕は不明。

こんばんは「こんばんは!Kris って呼んでね。あなたは(なんて呼べばいい)?」Ken と呼んでください、実名は Kensuke だけど Ken の方が短いので「ええ、その通りね、私も同じよ、私の名前はややこしいからね」そうでもないけど、と思いつつ、「今日はどうだった?」忙しかったですね、仕事いっぱい、明日もいっぱい「週末の予定は?」日曜にサッカーの試合を観に行きます、地元のチームの試合、まあそのチームは J リーグの二番目のレベルのリーグのすごく下の順位で来年は降格すると思うけどね、などと言ったら「BBC か何かのニュースで見た覚えがあるけど、サッカーの国際試合で日本のサポーターは他国のスタジアムなのに試合後に掃除して帰るのね。discipline があってすごいと思うわ」ああそれね、日本で J リーグっていうのができたとき、浦和レッズっていうチームがあって、ものすごく弱かった。けどサポーターがアウェイの試合で負けても負けても相手のホームスタジアムを掃除して帰った。みんな笑ってたけど、だんだん見方が変わってきて、偉いねっていう感じになった。日本サポーターの海外での掃除も、それに影響を受けてるんじゃないかな。あと、そのニュース見たとき日本のソーシャルメディアでは、主に西洋文化の影響を受けてる人たちから、自分たちで掃除しちゃうと掃除の仕事で食べてる人たちから仕事を奪うことにつながるのでやるべきではない、なんて主張もあったよ。

その後「ちょっと質問があるんだけど聞いていい?日本では小学校で生徒が教室を掃除させられるって聞いたけど、大人になっても掃除するの?」的な質問だったと思うが、ええと小中高と掃除はした・・はず・・だけど、大人になったらオフィスの掃除は自分たちではしないかな。たいてい、オフィスのビルのオーナーが掃除人を雇っていて、早朝とか深夜に床とかトイレとかを掃除してくれる。でも机の上は触らない。机を綺麗に保つのは従業員の責任。日本企業のお偉いさんたちは従業員に机を綺麗にしておくことを要求する、それが discipline の印にもなるからね。

この辺までで残り五分を切ったのかな、そろそろレッスンへ・・というそぶりを感じたが、そんなちょっとだけやってもなあというのとまだ話すネタがあったので「えーと、このまま雑談続けていいですよ」、その後何かの話を二分くらい続き流れでして、ああれだ「チャットボックスに minor な訂正を書いたからね」からの、in とか the がないみたいなやつの説明。で残り二分ちょっと「他に何か聞きたいことある?」あります、あなたの背景に写ってるその・・猫の手みたいな模様、猫好きなんですか!?「あーこれね笑ここ私の家じゃなくてカフェなのよ、私はビズメイツトレーナー以外にカフェのオーナーで、あと犬のブリーダーもやってて、猫も飼ってるけどね四匹、犬は二十匹、でこの模様は犬の手ね」へー!じゃあ仕事忙しいでしょう?「ええ忙しいわね、でも家族を養うために働かなくちゃだし、雇ってるスタッフのお給料も払わないとだし、ブリーダーの方は二人、カフェは六人いるの」仕事を楽しんでいることが伝わってきます「まあねー、でもすごく競争が激しくなってきてて云々」と、自分の店より後にオープンしたカフェが先に閉店したとか色々話してたが早口でだいぶ聞き漏らした。

ここでレッスン終了、意外にもバリキャリ経営者だった。それなりにパワフルにも見えなくもなかったけど、そんなに手広くやってるようなやり手って感じでもなかったのだが、人は見かけによらないな。時間なくて場所どこでやってんのと聞きそびれたけどまあマニラっぽい気がするなあ。次やる時があったら聞いてみよう。この人はなかなかの早口で繋がる英語という感じで割とリスニングを鍛えられる感じだった。

  • sportsmanship
  • You said: the team was had
  • Better: The team had
  • you said: the bottom team ranking
  • better: The bottom team in the ranking
  • you said: even their not home stadium
  • better: even if it's not their home stadium/court

RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3

datatracker.ietf.org

SMTP サーバー・クライアントが両方とも複数の TLS バージョンをサポートしていて、使う TLS バージョンを指定してないとき、STARTTLS で使われる TLS バージョンはどのように決まるのか、というニッチな疑問の解答が欲しいの続き。RFC 8446 を読んで解決した。

TL;DR クライアントとサーバー両方が対応している最も新しいバージョンが使われる。

  • TLS 1.3 で追加された(?) supported_versions という拡張メッセージが肝
  • クライアントは対応している TLS バージョンを、好ましい順にすべて ClientHello.supported_versions に含める
    • TLS 1.3 と 1.2 をサポートしてるクライアントがどっちを優先したいと主張するのかは、おそらく実装依存だろうが、まあ大抵はより新しいバージョンを優先的に選ぶのだろう
  • クライアントは ClientHello.legacy_version にも対応している TLS バージョンを含める
    • これも、TLS 1.2 と 1.1 をサポートしてるクライアントがどっちを選ぶかはおそらく実装依存で、まあ新しいほう(1.2)を選ぶのだろう
  • サーバーは supported_versions があればそのバージョンを、なければ ClientHello.legacy_version を採用し、サーバーがそのバージョンの TLS に対応してればそのバージョンで TLS handshake を進め、対応してなければアボートする

TLS 1.3 ClientHello messages always contain extensions (minimally "supported_versions", otherwise, they will be interpreted as TLS 1.2 ClientHello messages)

4.2.1. Supported Versions

The "supported_versions" extension is used by the client to indicate which versions of TLS it supports and by the server to indicate which version it is using. The extension contains a list of supported versions in preference order, with the most preferred version first. Implementations of this specification MUST send this extension in the ClientHello containing all versions of TLS which they are prepared to negotiate (for this specification, that means minimally 0x0304, but if previous versions of TLS are allowed to be negotiated, they MUST be present as well).

If this extension is not present, servers which are compliant with this specification and which also support TLS 1.2 MUST negotiate TLS 1.2 or prior as specified in [RFC5246], even if ClientHello.legacy_version is 0x0304 or later. Servers MAY abort the handshake upon receiving a ClientHello with legacy_version 0x0304 or later.

If this extension is present in the ClientHello, servers MUST NOT use the ClientHello.legacy_version value for version negotiation and MUST use only the "supported_versions" extension to determine client preferences. Servers MUST only select a version of TLS present in that extension and MUST ignore any unknown versions that are present in that extension. Note that this mechanism makes it possible to negotiate a version prior to TLS 1.2 if one side supports a sparse range. Implementations of TLS 1.3 which choose to support prior versions of TLS SHOULD support TLS 1.2. Servers MUST be prepared to receive ClientHellos that include this extension but do not include 0x0304 in the list of versions.

A server which negotiates a version of TLS prior to TLS 1.3 MUST set ServerHello.version and MUST NOT send the "supported_versions" extension. A server which negotiates TLS 1.3 MUST respond by sending a "supported_versions" extension containing the selected version value (0x0304). It MUST set the ServerHello.legacy_version field to 0x0303 (TLS 1.2). *Clients MUST check for this extension prior to processing the rest of the ServerHello (although they will have to parse the ServerHello in order to read the extension). If this extension is present, clients MUST ignore the ServerHello.legacy_version value and MUST use only the "supported_versions" extension to determine the selected version. If the "supported_versions" extension in the ServerHello contains a version not offered by the client or contains a version prior to TLS 1.3, the client MUST abort the handshake with an "illegal_parameter" alert.

Appendix D. Backward Compatibility

The TLS protocol provides a built-in mechanism for version negotiation between endpoints potentially supporting different versions of TLS.

TLS 1.x and SSL 3.0 use compatible ClientHello messages. Servers can also handle clients trying to use future versions of TLS as long as the ClientHello format remains compatible and there is at least one protocol version supported by both the client and the server.

Version negotiation is performed using only the handshake versions (ClientHello.legacy_version and ServerHello.legacy_version, as well as the ClientHello, HelloRetryRequest, and ServerHello "supported_versions" extensions).

↑これは TLS 1.3 の話。

D.1. Negotiating with an Older Server

A TLS 1.3 client who wishes to negotiate with servers that do not support TLS 1.3 will send a normal TLS 1.3 ClientHello containing 0x0303 (TLS 1.2) in ClientHello.legacy_version but with the correct version(s) in the "supported_versions" extension. If the server does not support TLS 1.3, it will respond with a ServerHello containing an older version number. If the client agrees to use this version, the negotiation will proceed as appropriate for the negotiated protocol.

If the version chosen by the server is not supported by the client (or is not acceptable), the client MUST abort the handshake with a "protocol_version" alert.

D.2. Negotiating with an Older Client

A TLS server can also receive a ClientHello indicating a version number smaller than its highest supported version. If the "supported_versions" extension is present, the server MUST negotiate using that extension as described in Section 4.2.1. If the "supported_versions" extension is not present, the server MUST negotiate the minimum of ClientHello.legacy_version and TLS 1.2. For example, if the server supports TLS 1.0, 1.1, and 1.2, and legacy_version is TLS 1.0, the server will proceed with a TLS 1.0 ServerHello. If the "supported_versions" extension is absent and the server only supports versions greater than ClientHello.legacy_version, the server MUST abort the handshake with a "protocol_version" alert.