Computer

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 書い…

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。…

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

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

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>…

Functional Programming w/ C# LINQ

Python は好きになれない。Python の長所と言われているものは、プログラミング初心者相手のごまかしであるか、あるいは C などの古い言語に対するアドバンテージであり、ライバルとなる他のモダン言語に対するものではない。オフサイドルールも弊害が大きく…

Functional Programming w/ C# LINQ

業務ユーザが既存 DB を読み取り専用で利用するための LINQ to Entities (Code First) コーディング・メモ 半月の間かなり苦労して Entity Framework 6 (EF6) と Entity Framework Core (EF Core) にてデータベースアクセスできるようになった。業務ユーザと…

Functional Programming w/ C# LINQ

ここ 9 ヶ月ほど C# LINQ プログラミングをしてきて、関数型・集合論的演算はやはり素晴らしいと思ってきたが、コーディングの目的が調査・研究から運用目的のシステム構築に移りつつあるためか、LINQ の限界が見えてきた。C# は unsafe で書けば C / C++ …

Functional Programming w/ C# LINQ

ここ 8 ヵ月ほど C# の LINQ でちょっとばかりデータサイエンティスト的なことを やっている。大量データ処理は C# LINQ が群を抜いて優秀である。LINQ はクエリ式より複雑な取り回しをできるメソッド式で記述する方が便利であることが多いが、ここにきてク…

コンピュータ将棋とデリバティブ・モデル

IS将棋・東大将棋・棚瀬将棋の開発者であり、コンピュータ将棋選手権 の準優勝者である 棚瀬寧 氏は、私の大学学部学科の同期である。在学中に彼からIS将棋の開発に誘われたが、当時、別プロジェクトに参加していたことと、将棋が強くないことを理由に断…

プログラミングの進化 〜 2007年問題

父がシステム開発の資料を見ている。覗いてみると「オーバーレイ計画」と書かれている。「オーバーレイ Overlay *1 *2 !?」四半世紀前のプログラミング技法である。その隣には「再入可能 Reentrant *3 」「再利用可能 Reusable」「ゼロクリア Zero-Clear」…

気になるグッズ

わが師、坂村健教授の強力なライバル (?) となる存在がこのごろ頻繁に出現する。ウェアラブル・コンピュータを研究テーマにする神戸大学工学部の塚本昌彦教授である。マウスやらなんやらをゴテゴテ身にまとうスタイルで、イケてるルックスを台無ししているデ…