愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

「神聖喜劇」に寄す

大西巨人「神聖喜劇」を読んだ。

神聖喜劇〈第1巻〉 (光文社文庫)

神聖喜劇〈第1巻〉 (光文社文庫)

「神聖喜劇」とは何のことやらと思うかもしれないが、これはダンテの「神曲」(La Divina Commedia) の直訳である。

全五巻に渡り、非常にきびきびとした文章で主人公・東堂太郎の対馬における軍隊生活が綴られる。その文章の生硬さもさることながら、主人公の設定(=超人的な記憶力の持ち主)から来る膨大な引用、出来事および引用それ自体を契機とした数十ページに渡る逸脱、言葉遣いや表現の綾に対する主人公の偏執的とも言えるこだわり等々、ことばそのものへの尋常ならざる執着を楽しむことがほぼ主眼となっているような小説でもある。

「戦争の出てくる小説」といえばついつい反戦的なテーマだとか、あるいは軍隊生活の厳しさ、そこにおける上官の理不尽さなどのありきたりな主題を誰しも想定してしまうだろう。この小説においてもそれらの要素自体は含まれているものも、典型的なそれを期待して読むといずれの場面でも肩透かしを食うことになるだろう。批判的に戦争や軍隊を眺める眼の中にもいわゆる反戦はなく、理不尽な軍隊生活の中にも捩れたロジックがあり、粗暴・質朴な人間の中にも決して単純には断じきれない深淵がある。これはそういう小説なのである。

こういう風に書くとひたすらお堅い文学青年御用達の小説のように思えるかもしれないが、神聖喜劇には読みながら声を出して笑ってしまうような場面が頻発する。「笑ってはいけない◯◯」というシリーズがダウンタウンのガキの使いにあるが、当人たちが大真面目であり、また真面目に振る舞わなくてはいけないとされている場面の僅かな歪みで我々の笑いは噴出する。軍隊こそは、大真面目に滑稽なことが行われ、また真面目の極みを求められるが故にまさに神聖な「喜劇」の場になり得るのだ。

現代のグローバル資本主義のありようを「戦争」、会社を「軍隊」と例えるほど僕はアナクロではないし鈍感でもない。だが神聖喜劇の中で時折爆発する笑いの震源について一度考えてみるならば、我々がその日常において大真面目であることを強いられ、それが故に滑稽さを免れない状況をもたらすところの会社もまた「喜劇」の場の一つであることはどうやら間違いがなさそうである。

そう、神聖喜劇は、軍隊でのみ演じられるのではない。人間の作るあらゆる組織と、その組織が大真面目に行うゲームからそれは生まれるのである。

今調べたら漫画版も出ているようだが、おすすめはしない。先ほどから書いているようにこれは文章そのものをとことん楽しむための小説であり、また一般に優れた文学作品というのはテーマや話の筋を追っただけではその半分も味わえない。文章を読む時間そのものが体験であり、快楽であり、小説である。そうしたものなのだ。

神聖喜劇 第一巻

神聖喜劇 第一巻

万人向けのやさしい小説ではないが、歯ごたえのあるものを食べたい向きにはお勧めする。

TLS Session Ticketの動作をtsharkでなんとなく覗きみる

こういう仕組みですよ、というWeb上の記事を読んだだけでは納得できない!論より証拠だ!ということで論より証拠ツールその2であるtsharkを使ってTLS Session Ticketの動作を「なんとなく」覗いてみる。

ちなみに、クライアントは Google Chrome (49.0.2576.0 canary (64-bit)) 、サーバはh2o (1.6.0-beta1, LibreSSL 2.2.4) である。

まずはざっくり

sudo tshark -i eth0 -f "tcp port 443" -Y ssl

状態をクリアするためにh2oを再起動してからhttpsなリクエストを送ると以下の様なシーケンスになる。

  4   0.013439 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy SSL 583 Client Hello
  6   0.018197 yyy.yyy.yyy.yyy -> xxx.xxx.xxx.xxx TLSv1.2 2842 Server Hello
  7   0.018254 yyy.yyy.yyy.yyy -> xxx.xxx.xxx.xxx TLSv1.2 2842 Certificate
  8   0.018283 yyy.yyy.yyy.yyy -> xxx.xxx.xxx.xxx TLSv1.2 848 Certificate Status
 11   0.032880 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 192 Client Key Exchange, Change Cipher Spec, Hello Request, Hello Request
 12   0.033993 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 119 Application Data
 13   0.034004 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 116 Application Data
 14   0.034008 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 108 Application Data
 15   0.034130 yyy.yyy.yyy.yyy -> xxx.xxx.xxx.xxx TLSv1.2 308 New Session Ticket, Change Cipher Spec, Hello Request, Hello Request
 16   0.034270 yyy.yyy.yyy.yyy -> xxx.xxx.xxx.xxx TLSv1.2 125 Application Data
 17   0.034589 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 425 Application Data
(以下略)

そこから一度タブ閉じて、もう一度リクエストを送ると以下の様なシーケンス。

  3   0.014875 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy SSL 583 Client Hello
  5   0.015423 yyy.yyy.yyy.yyy -> xxx.xxx.xxx.xxx TLSv1.2 216 Server Hello, Change Cipher Spec, Hello Request, Hello Request
  7   0.042222 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 117 Change Cipher Spec, Hello Request, Hello Request
  8   0.042255 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 119 Application Data
  9   0.042262 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 116 Application Data
 10   0.042266 xxx.xxx.xxx.xxx -> yyy.yyy.yyy.yyy TLSv1.2 108 Application Data
(以下略)

Certificate, Certificate Status, Server Key Exchange, Client Key Exchangeなどが省略され、Server Helloから一気にChange Cipher Specまで行っていることが分かる。 (注:tsharkの結果には出力されていないが、Server Key ExchangeはCertificate Statusと同じパケットに入っている)

もうちょっとだけ詳しく

以下のコマンドで見れば、

sudo tshark -i eth0 -f "tcp port 443" -Y ssl -O ssl

再起動後のシーケンスの最後、サーバからのChange Cipher Specと同じパケットにSession Ticketの値が含まれていることが分かる。

Secure Sockets Layer
    TLSv1.2 Record Layer: Handshake Protocol: New Session Ticket
        Content Type: Handshake (22)
        Version: TLS 1.2 (0x0303)
        Length: 186
        Handshake Protocol: New Session Ticket
            Handshake Type: New Session Ticket (4)
            Length: 182
            TLS Session Ticket
                Session Ticket Lifetime Hint: 3600
                Session Ticket Length: 176
                Session Ticket: fcf1faec48a3153aa98072c75e1aae922ebd76da303ea06e...
    TLSv1.2 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
        Content Type: Change Cipher Spec (20)
        Version: TLS 1.2 (0x0303)
        Length: 1
        Change Cipher Spec Message
    TLSv1.2 Record Layer: Handshake Protocol: Multiple Handshake Messages
        Content Type: Handshake (22)
        Version: TLS 1.2 (0x0303)
        Length: 40
        Handshake Protocol: Hello Request
            Handshake Type: Hello Request (0)
            Length: 0
        Handshake Protocol: Hello Request
            Handshake Type: Hello Request (0)
            Length: 0

以降、Client HelloにはSession Ticketが含まれ、それがvalidであった場合はもろもろが省略されてハンドシェイクがすぐ終わる。

            Extension: SessionTicket TLS
                Type: SessionTicket TLS (0x0023)
                Length: 176
                Data (176 bytes)

FT142A (priori2 3G) は安かろう悪かろう

iPhone (もう、いくつだったか忘れた)からNexus5に持ち替えて、Nexus5がぶっ壊れたので、freetelのpriori2に変えていた。

Nexus5を使っていた時は「この端末いいぜ!」みたいなエントリーを書いたり人に勧めたりしていたけど、すまんあれはウソじゃったウソとまでは言わないが、買った当初はよくてもAndroid5.0にしてから極端にバッテリーの持ちが悪くなり、なんだか微妙な端末であった。

で、「もうスマホに金を掛けることが既にダサい。お、10000円で買えるのがあるじゃないか」と思ってpriori2の3Gを買ったのだが、これはこれでケチりすぎた。

スマホとしての機能にそこまで問題があるわけではないが、やはりタッチ感度が悪いのと、LTEが使えないのは流石にやりすぎだ。今は反省している。まあ、スマホが欲しい!と泣く子に買い与える用途なんかにはいいんじゃないでしょうか。え、何?iPhoneがいいって?iPhoneは子供が持つと乳首が伸びるのよ!

しばらくはこのままいくけど、どこかのタイミングで端末を安く買える格安スマホ業者(例えば、楽天とか)にSIMごと引っ越そうかと思っている。

「Javaパフォーマンス」はいい本だった

Javaパフォーマンス

Javaパフォーマンス

とても馬鹿っぽいタイトルになってしまったが、気にしないのである。

だいたいの内容としては、

  • パフォーマンス・チューニングに関する一般論
  • Java付属のモニタリングツール(jstatとかあれとかこれとか)
  • JITコンパイル周りについて
  • GCについて

等々がいい感じに、過不足なく書いてある。

既にJava10年選手で、GCのチューニングもしたことあるし、JVMとは戦友みたいなものだ…みたいな人にはおそらく必要ないだろうが、JVM周りのあれやらこれやらを知らない人(つまり僕のような)がとりあえずJava始めてみたときに、頭の中に見取り図を書くためにはこの本を読むのが適切そうだ。

以前にも同じようなことを書いたけど、ベースとなる知識をまとめて仕入れるにはインターネットで情報の波をかき分けかき分け調べるより書籍の方が効率がよい。もちろん、よい書籍がある場合の話。

公私ともにToDo管理にTrelloを使うようになった

trello.com

これまでToDo管理を色々なツールで行っていたけど、Trelloに落ち着きそうな気配。

Trelloは本来、小規模なチームで使うことを意図したツールだと思うのだけど、お一人様でも十分使える。 何より、めんどくさいこと考えなくていい。色々な操作が直感的なので使うために何も覚えなくていい。という点が気にいっている。

以下、仕事用のToDo管理ツールとして便利な点

  • 優先度の変更や、タスクの終了 (= 僕の場合はどちらもリスト間の移動で表現している) がドラッグ&ドロップで出来てラク
  • 各タスクにコメントが付けられるので、進行中のタスクの付随情報(ticketとか、調べ物をした結果のURLとか)が管理しやすい

ほっとくとChromeのタブがどんどん増えて、小さくなっていく…というのはChromeユーザーのエンジニアなら誰しも経験したことがあると思う。 何かを調べながら作業している時のタブはあくまで「今の調べ物」にフォーカスしたものなので、一々ブックマークするほどでもないし(ブックマークを頑張って管理するのは人生における大いなる無駄の一つだ)、 また閉じてしまうと後から探すが面倒なので、ついつい開きっぱにしてしまう。そうするとゴミがどんどん溜まってタブが小さくなる以下略なのだが、このうざったらしい現象がいささか緩和される。 (それでもやっぱりある程度は開いたままキープしてしまうんだけども。)

微妙に活用しきれていないが、プライベートでは「家の中で切れそうな生活必需品ボード」を奥さんと共有している。「買い置き有り」「買い置きないけどまだ大丈夫」「ピンチ」みたいなリストがあり「米」「塩」「歯磨き粉」などのタスクがそれらのリスト間を移動していくイメージである。またどうやら、奥さんは個人のタスク管理にも使っているようである。

ドラッグ&ドロップが重要な機能に割り当てられている関係上、モバイルアプリが若干使いにくいが、僕はモバイル上ではあれこれ頑張らないことにしているのであまり関係ない。