ぼくたちは勉強ができない(12)

12巻でついに真冬先生の過去が明かされたわけだが、思っていたのとちょっと違っていたな。

てっきり、高校時代に一時的にフィギュアスケートを離れた時期があって、そのブランクを取り戻せず、フィギュアスケートの道を断念したことを後悔してるんだと思ってた。

そうではなくて、進路にフィギュアスケートではなく教師の道を選んだけど、なろうとしたスタイルの教師が自分に向いていなかった、憧れた恩師のような教師になる才能はなかった、と。そういう後悔だったのか。

ただ、 そこから方針転換して、生徒の才能を優先させるようになったわけだけど、その方針は決して間違ってるとは思わないな。やり方が不器用だっただけで、教え方も上手みたいだし、ちゃんと教師としての才能はあるでしょ。成幸の影響は受けてるだろうけど。

そんな成幸の活躍もあって、真冬先生もようやく過去の呪縛から解放されてめでたしめでたし。

HTTP.sys でポート共有

Microsoft Docs によると、HTTP.sys はポート共有をサポートしていると書いてある。

docs.microsoft.com

ただ肝心のやり方が載ってない。 見つけられないだけかも? だけど推測はできる。 おそらく、重複しない URL プレフィックスを指定してやればいいんだろう。

HTTP.sys でホストする最小限の ASP.NET Core アプリで試してみることにした。

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Server.HttpSys;

namespace PortSharingSample.Foo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseHttpSys(options =>
                {
                    options.Authentication.Schemes = AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
                    options.Authentication.AllowAnonymous = true;

                    // prefix を登録する
                    // prefix が重複していなければ、ポートが同じでもホストできる
                    options.UrlPrefixes.Add("http://localhost:5000/Foo");
                });
    }

    public class Startup
    {
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello Foo!");
            });
        }
    }
}

名前空間と登録する URL プレフィックスだけが違う ASP.NET Core アプリをもう 1 つ作成。

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Server.HttpSys;

namespace PortSharingSample.Bar
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseHttpSys(options =>
                {
                    options.Authentication.Schemes = AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
                    options.Authentication.AllowAnonymous = true;

                    // prefix を登録する
                    // prefix が重複していなければ、ポートが同じでもホストできる
                    options.UrlPrefixes.Add("http://localhost:5000/Bar");
                });
    }

    public class Startup
    {
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello Bar!");
            });
        }
    }
}

実行すると、5000 番のポートを共有して 2 つの ASP.NET Core アプリを起動することができた。

f:id:griefworker:20190603143341p:plain

HTTP.sys でのポート共有の方法がドキュメントで見つからなかったけど、 予想通り URL プレフィックスを登録することで上手く動いた。 予想通りだったとはいえ、こういうのはちゃんと試しておくのが大事。

三味 大名店

兼虎に行ったら大雨なのに行列ができていて断念。予定変更。こんなときのためにストックしておいた、行ってみたい店の一つ『三味 天神大名店』に向かった。

元祖トマトラーメンの食券を購入。 トマトソースのパスタは旨いことが分かりきっているけど、トマトを使ったスープのラーメンはどんなもんだろうか。恐る恐る口にしてみた。

結論としては、人類にトマトラーメンは早すぎた。トマト鍋のシメのラーメンをいきなり食べるような、予想を裏切ってくれることを期待したが予想通りの味。 女性受けしそうな味でもある。実際、店内には女性客がほとんどだった。自分が極端に酸味に弱いのもあるかもなぁ。

トマトラーメンと辛めん 三味 天神大名店

食べログ トマトラーメンと辛めん 三味 天神大名店

十一 六本松店

ミュージアムウィークで福岡市美術館に行った帰りに、「十一 六本松店」でランチを食べることにした。十一、六本松に進出してたのか。豚ステーキだけでなく、牛タンも始めていたみたいだし。あと、十一六本松って、漢数字が並んでいて、加藤一二三九段みたいだな。

お目当は六本松店限定の「ハーフ&ハーフ」。豚ステーキと牛タンの両方を味わうことができる欲張りなやつ。

注文するとまずサラダが運ばれてくる。パイナップルの甘さが良いアクセントになっていて好み。

サラダを食べ終えて少し経ったころに、豚ステーキと牛タン御一行が到着。ご飯には明太子か梅をのせることができたので、明太子をチョイスした。ただ、こんなにのせる必要はないかなぁ。

コリっとした牛タンを塩レモンで味わうのは、なかなかの美味だけど、自分はやはり豚ステーキだな。熱々の鉄板で好みの焼き加減に仕上げて、辛味噌をのせて食べると美味い。おろしわさびも捨てがたいけど、辛味噌派かな。

豚ステーキはレアというか、表面だけ焼いた状態で出されるけど、無菌豚ではないらしいので、ちゃんと鉄板で焼く必要がある。要注意。以前赤坂店で食べたとき、ちゃんと焼かずに食べたかも…。子供向けには小さくカットしてからしっかり焼いてもらうこともできるので、その点は気が利いていて良かった。

関連ランキング:ステーキ | 六本松駅別府駅

福岡市美術館

福岡市のミュージアムウィーク期間中だったので、家族で福岡市美術館に行ってみた。福岡市博物館やアジア美術館なんかは期間中無料で常設展が観れるのに対し、福岡市美術館は無料じゃなかったのがイケてない。安くはなってたけど。

リニューアルオープン記念展を観たが、展示されていた作品でグッとくるものはなかったなぁ。フランスでルーブルやオルセー、イタリアでウフィッツィに行ったから目が肥えてしまったのかも。なんて。記念展が終わって常設展になったら、展示される作品が変わるだろうから、常設展を見るまで評価は保留。あと、子供に美術館は早かったみたいで、退屈そうだった。来年のミュージアムウィークで子供が付いてきてくれるかどうか、微妙な線だな。

アルスラーン戦記(11)

アルスラーン率いるパルス軍は、ついに王都を奪還するためにペシャワールを出発。表紙がクバードだったから、アルスラーンクバード口説き落とす話があるかと思いきや、クバード全く出てこなかった。残念。

そのかわりと言ってはなんだけど、エトワールが登場。秘密がありそうだとうすうす感じていたら案の定で、やっぱり女だったか、という感じ。ちなみに原作は読んでない。エトワール、じゃなくてエステルとアルスラーンの関係性がこのマンガでどう描写されるか楽しみ。

WEB+DB PRESS Vol.110

GW中に読み終えることができたので、感想などをメモしておく。

特集1:名前付け大全

「適切な名前をつけることができた機能については、その設計の8割が完成したと考えても言い過ぎでない」とまで言われるくらい重要な名前付け。ピッタリの名前が思い付けばいいが、そうでない場合、自分はGitHubで参考になりそうなコードを探したり、開発に使っている言語の標準ライブラリのAPIを参考にしている。名前の良し悪しの判断や名付け方といった、自分たちが経験でやっていることがきっちり文章としてまとめ上げられているので、ぜひとも新人に読ませたいと思った。

特集2:速習gRPC

マイクロサービス間の通信のデファクトスタンダードであり、モバイルアプリとバックエンドの通信だけでなく、Unityで開発したゲームでの採用事例も見られるgRPC。そんなgRPCの基本的な使い方をProtocolBuffersを含め一通り解説していて、gRPCはじめの一歩を踏み出すのに良い教材だと思う。ただ、欲を言えば、認証・認可をどうやるのかまで触れてほしかったな。望みすぎか。

特集3:最新TLS 1.3徹底解剖

TLSの歴史と暗号技術の基礎は、過去に自分が少し勉強したことがあったからか、それとも解説が見事だからか、すんなり頭に入ってきた。Wiresharkを使ってTLSの通信を覗きながら進める解説手法は、手を動かすぶん、文章や図だけの解説と比べて理解しやすいかった。低レイヤーに関する知識を身に付けたいと思っているところなので、TLS周りを勉強する際には導入として読み返すことになりそう。

Rubyのウラガワ【第1回】オブジェクトはどうやって表現するのか?

ポインタとしてあり得ない値を利用した埋め込み表現の工夫は涙なしに読めない(大げさ)。 こういった記事を読むと、オレオレ言語を実装してみたいという思いがフツフツと湧いてきちゃうな。

WEB+DB PRESS Vol.110

WEB+DB PRESS Vol.110