Procedural Programming w/ C# -アルゴリズムの威力

探索問題 配列 val[] に入っている 2 値の差がある定数 target0 に一致するか、という問題に直面し、まずは愚直にこんなコードを書いてみた。 // C# code long[] val = new long[n]; // val[0 .. n - 1] には単調増加な正値が入っている long target0 = ...;…

C# LINQ ~ 性能評価 (1) : ラムダ式とローカル関数

きっかけ いままで 10 年ほど C# を愛用してきて C# でコードを組むときは可読性や開発効率などアプリ層観点でしかロジックを眺めてこなかったが、競技プログラミングに C# が使えるのだろうかという疑問をふと抱いたため、30 年ぶりに C++ も書いてみたりし…

環境構築メモ ~ Visual Studio Code + WSL2 + Ubuntu + Docker のコンパイル環境構築時の注意

目的 VS Code での C# コンパイル環境を構築するにあたり、Build は Windows から、Run は Docker コンテナから実行するようにしたい。C# と C++ を混在開発するにあたり、C# の Build までの作業のみ Windows で、それ以外の作業はすべて Docker コンテナで…

環境構築メモ ~ Visual Studio Code + WSL2 + Ubuntu + Docker + LaTeX のコンパイル環境

目的 LaTeX コンパイル環境を構築したい。LaTeX はモジュールや文字フォント等で複雑な依存関係がありそう、ということで、構築失敗による環境汚染を避けるために Ubuntu Docker コンテナで実現したい。LaTeX の文書作成 & PDF 閲覧は Windows 上の Visual S…

Visual Studio Code へのエディタ移行

四半世紀の間、使い続けてきた emacs 系エディタから VS Code に移行しようかと思う。 第1の理由 ... Visual Studio の代替 もっさり重くて嫌いだが Nuget 利用や Roslyn 以降の C# コンパイルの場面で使わざるを得ない Visual Studio を代替したい。これが…

C# on Jupyter からの Numpy.NET 利用

Jupyter から C# で Numpy.NET ライブラリを利用できないかと思い、 #r "nuget: Numpy, 3.7.1.25" using Numpy; と記述するも、結論としては NG。このようなランタイムエラーが出る。 System.DllNotFoundException: Unable to load shared library 'python37…

FizzBuzz

学生時代に情報科学科の同級生たちと「FizzBuzz 問題というものがあるらしいが、この程度の基礎ができないプログラマなどいるはずがない」と会話していた。それから四半世紀。小学生にはプログラミングの授業があり、非 IT 企業の一般社員にも「Python 書い…

Training in Commercial Pilotage with FTD/FFS - Constant-Rate-and-Speed Climb / Descent, Lead Design for Level Off

羽田空港内某所で Flight Simulator による F/O 訓練。B737-Max で 2.0H。本日は N 教官。5 ヶ月ぶりの F/O 訓練。ブランクが長い上に、この間イメトレをまったくやっていない。さすがに技量は低下しているだろうと覚悟して訓練に臨む。 Acceleration / Dece…

Functional Programming w/ C# LINQ - with 初期化子の IQueryable<T> 対応版代替簡易記法

C# 9.0 / .NET 5.0 に長らく期待していたことの1つに record の with 初期化子がある。これは record の一部のプロパティを異なる値に置き換えるためのもので y = x with { Value = x.Value * 10 } と書くと x の Value プロパティだけを 10 倍にしたオブジ…

Functional Programming w/ C# LINQ - 左結合 Left Join の簡易記法

C# 9.0, .NET 5.0, .Entity Framework Core 5.0 を使って数ヶ月。当初抱いていた LINQ to Entities の機能向上への期待は打ち砕かれたが、それでも EF 6.0 や EF Core 2.0 に比べたら使いやすくなっているような気がする。本格的に使うにあたり、少し工夫を…

Docker on WSL2 環境構築メモ (6/x) - Jupyter Notebook への .NET Interactive 追加導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 Docker on WSL2 環境…

Docker on WSL2 環境構築メモ (5/x) - Bitnami/Redmine 導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 Bitnami/Redmine + Ma…

Docker on WSL2 環境構築メモ (4/x) - Tensorflow (CPU 版) 導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 Tensorflow (CPU 版) …

Docker on WSL2 環境構築メモ (3/x) - ネットワーク設定

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 ネットワーク設定の目…

Docker on WSL2 環境構築メモ (2/x) - 設計戦略

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 環境構築メモ 3/3 を…

Docker on WSL2 環境構築メモ (1/x) - Docker 基本操作

Docker 基本操作 (チートシート) Docker 操作の状態遷移 Docker の状態遷移がわかりづらい (にも関わらず図示した解説を見かけない) ため、誤っている可能性を恐れず、可視化してみた。(利用は自己責任で。) Docker レポジトリ (イメージ) の操作 レポジトリ…

Ubuntu 20.04 LTS on WSL2 環境構築メモ (4/4) - その他アプリ導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 環境構築メモ 3/4 を…

Ubuntu 20.04 LTS on WSL2 環境構築メモ (3/4) - Docker 導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 環境構築メモ 2/4 を…

Ubuntu 20.04 LTS on WSL2 環境構築メモ (2/4) - GUI 導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 環境構築メモ 1/4 を…

Ubuntu 20.04 LTS on WSL2 環境構築メモ (1/4) - 開発環境導入

前提 導入対象とするマシンは下記の通り。 Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685) 仮想 OS : Ubuntu 20.04 LTS on WSL2 WSL2 と Ubuntu 20.04…

Functional Programming w/ C# LINQ

.NET 5.0 および C# 9.0 リリースによって LINQ 周りの機能が飛躍的に向上するかと思いきやそうではなかった。期待していた record の with 構文は式木にならず *1 IQueryable や LINQ to Entities で利用できないため、生産性向上にいっさい寄与しない *2。…

Training in Commercial Pilotage with FTD/FFS - Constant-Rate-and-Speed Climb / Descent, Lead Design for Level Off

羽田空港内某所で Flight Simulator による F/O 訓練。B737-Max で 2.0H。本日は昨年 12 月の時に指導いただいた K 教官。Yoke の握り方や Elevator Trim Switch の触り方だとかに厳しい。正しく持たないと反応が遅れるし、まねごとではなくプロの方法を教え…

LaTeX Notation in Blog

はてなブログで LaTeX 記法ができることを知ったため、お試し。 どこかで見た記事によると $$ life = \int_{birth}^{death} study\ dt $$ だそうだ。$$ life = \int_{birth}^{death} study\ dt - \int_{birth}^{death} forget\ dt $$ の間違いではないかな。

Training in Commercial Pilotage with FTD/FFS - Constant-Rate-and-Speed Climb / Descent, Lead Design for Level Off

羽田空港内某所で Flight Simulator による F/O 訓練。B737-Max で 2.0H。現役コパイロットである Y 教官からレクチャーを受ける。定期運航路線が減って現役パイロットも副業しなくてはならないのだろうか ...羽田空港は沖留めこそ少なくなったが、ボーディ…

Training in Commercial Pilotage with FTD/FFS - Constant-Rate-and-Speed Climbing / Descending Turn

羽田空港内某所で Flight Simulator による F/O 訓練。B737-Max で 2.0H。 Constant-Rate-and-Speed Climbing / Descending Turn まずは K 教官といつものとおり Take Off from RJTT RWY 34R から 6,000 ft, 240 kts での Straight & Level Flight。ちょっと…

Training in Commercial Pilotage with FTD/FFS - Acceleration/Deceleration, Constant-Rate-and-Speed Climb/Descent

羽田空港内某所で Flight Simulator による F/O 訓練。B737-Max で 2.0H。訓練前にターミナルビル1階の航空神社にお参りしたご利益か、今日は実り多く、また、最初から操縦が非常に滑らかかつ安定的で終始「練度が高い」感を醸し出す、充実の一日となる。 T…

Training in Commercial Pilotage with FTD/FFS - Lead Design for Take Off Climb w/ B737-Max

羽田空港へ移転した某所で Flight Simulator による F/O 訓練。B737-Max で 2.0H。 Take Off Climb w/ B737-Max 3 月に実施予定だったものの移転とコロナ騒動で何度もリスケ・延期してようやくめぐってきた、モーション付き B737-Max 新シミュレータによる初…

Functional Programming w/ C# LINQ - with 初期化子の代替メソッド定義 for C# 8.0 or former

C# の LINQ を使ってデータ変換をしていると、データクラスのインスタンスをコピーして一部のプロパティを別の値に差し替えたいということがよくある。C# 9.0 では Records v2 の with 構文というものが導入されるようで期待できるのだが、現行の C# 8.0 で…

Training in Commercial Pilotage with FTD - Lead Design for Glide Path

都内某所で Flight Simulator による F/O 訓練。B737-800 で 1.5H。このお気に入り機種は、なんとなんと、まもなく退役で ... 詳細未公表のため詳しく書けないが、今後は B7x7-xxx (6 軸モーション!) と A3xx になるらしく、今回が私の B737-800 Last Fligh…

Functional Programming w/ C# LINQ

C# 8 switch 式の威力はすごい。EntityFramework Core 用の Upsert が実質 3 行 *1 で記述できてしまった *2 。 public static void Upsert<T>(this DbSet target, IEnumerable<T> source) where T : class, IDbMappable => source .GroupJoin(target , l => l.Get</t></t>…