砂漠の旅人(たびと)|新天地:たびとの旅路

電脳砂漠を旅する、ある旅人の日記。フロッピーを頼りに歩いた日から、クラウドの地平を見つめる今日まで。見つけたオアシスも、迷い込んだ砂の迷宮も、全てこの羊皮紙に。

プログラミング

羊皮紙に、魂を刻む ~POCOフレームワークとロギング機能の戦いの記録~

C++でPOCOフレームワークを使う際のロギング機能(Poco::Logger)の実装方法を、具体的なコードと設定ファイルのサンプル付きで徹底解説します。`Poco::Util::Application`を継承したクラスでの初期化方法、`printf`形式のフォーマット指定で陥りがちな罠、そ…

古のゴーレムに、再び命を ~PythonからC++へ、魂の移植秘儀~

Python(FastAPI)で作成したRedfishシミュレータを、C++とPOCOフレームワークで再実装する過程を解説。VS Codeを中心としたモダンな開発環境なら、C++でも手軽にWebサーバーを構築できることを示します。POCOの基本構造、CMakeを使ったビルド、スマートポイン…

失われし暗号秘儀の再構築 ~C#でOpenSSLの魔法を詠唱する~

OpenSSLの`enc`コマンドで生成した暗号文を、C#/.NET 8で複合化、またその逆を行いたい開発者向けの技術ガイドです。本記事では、AES-256-CBC方式において、PBKDF2+SHA256(現行)とMD5(旧式)の両方の鍵導出方法に対応したC#コードを詳細に解説。OpenSSLコ…

幻影のゴーレムを錬成せよ ~PythonとFastAPIで創る、Redfishシミュレータ~

Redfish APIのテストや開発に使える、精巧なシミュレータ(モックサーバー)をPythonとFastAPIで簡単に構築する方法を解説します。WSL2/Ubuntu環境でFastAPIをセットアップし、Redfishの各エンドポイントに対応するAPIを定義する手順を紹介。さらに、C#の再…

古の魔法を、現代に蘇らせよ ~.NETとWin32APIで、世界の解像度を操る~

.NET 6のコンソールアプリからWin32 APIを呼び出し、プログラムでディスプレイの解像度を変更する方法を解説します。`DllImport`属性を使ったAPI関数の定義、`StructLayout`での構造体マーシャリング、そしてコンソールアプリでWinFormsライブラリを参照して…

古の魔法を、現代に蘇らせよ ~.NETとWin32APIで、世界の境界線を操る~

.NET 6環境のC#からWin32 APIを呼び出す方法を、Windowsタスクバーの表示/非表示を切り替えるサンプルを通じて解説します。`DllImport`属性を使ったAPI関数の定義、`StructLayout`での構造体マーシャリング、そして`SHAppBarMessage`関数で実際にタスクバー…

遺跡の魂を直接読み解け ~RestSharpで、Redfishの深淵を覗く~

Redfish APIの複雑な入れ子構造を、C#とRestSharpを使って効率的に全件取得・マージする方法を解説します。前回のファイルベースの実装を改良し、`@odata.id`を再帰的に辿ってREST APIをクロールする実践的なコードを紹介。自己署名証明書を扱う際の注意点も…

JSONの迷宮を解き明かせ ~Redfishの入れ子構造をマージする、再帰の魔法~

Redfish APIなどで見られる、`@odata.id`によってリンクされた複雑な入れ子構造のJSONを、一枚の巨大なJSONにマージする方法を解説します。C#とNewtonsoft.Jsonを使い、再帰呼び出しによってリンクを自動的に辿り、全ての情報を統合するアルゴリズムを具体的…

幻影を呼び出す錬金術 ~json-serverで創る、お手軽REST APIのゴーレム~

REST APIのモックを手軽に作成したい開発者向けに、`json-server`を使った簡単セットアップ術を解説します。WSL2/Ubuntu環境でNode.jsのインストールから始め、`json-server`の導入、データ定義用のJSONファイル作成、そしてサーバー起動までの全手順を網羅…

異世界に、魂を宿せ ~Linuxと.NETで創る、gRPCのゴーレム~

.NET 6を使い、WSL2/Ubuntu上にgRPCサーバーを構築し、Windows上のクライアントから接続する手順を解説します。`dotnet new grpc`コマンドでのプロジェクト作成から、外部アクセスを許可するための`launchSettings.json`の手動設定、そしてWSL2のIPアドレス…

古の魔法は死んだ。王の帰還だ。 ~WCFからgRPCへ、魂の継承儀式~

.NET 6でWCFの後継となるgRPCを始めるための実践ガイドです。Visual Studioのテンプレートを使い、gRPCサーバーとクライアントを作成。最も重要なポイントである、サーバーをlocalhost以外(0.0.0.0)で待ち受けるための`launchSettings.json`の設定変更や、…

失われし窓を開く秘儀 ~JavaScript、ポップアップの罠と真実~

JavaScriptの`window.open()`でポップアップから更に別のポップアップを開こうとすると、元のウィンドウが上書きされてしまう問題に悩んでいませんか?この記事では、その原因が第三引数(options)の指定漏れにあることを解説し、`menubar=no`などを加える…

古の神殿に、現代の魂を ~Edge IEモードとShift-JISの呪いを解く~

EdgeのIEモードで動作するレガシーシステムで、Unicode入力の文字化けに悩んでいませんか?この記事では、JavaScriptライブラリ「encoding.js」を使い、サロゲートペア(𠮷など)を含むUnicode文字列がShift-JISに変換可能か事前にチェックする方法を解説し…

WPFの魂を解き放て ~MVVMの旅路で、どの魔導書を手に取るべきか~

.NET 6のWPF開発でMVVMパターンを導入する際、どのフレームワークを選ぶべきか?本記事では、MVCとMVVMの違いを解説しつつ、主要なMVVMフレームワークである「Prism」と「Livet」を比較検討します。歴史、情報量、他ライブラリとの連携性から、なぜ「Prism」…

古の魔法、現代に蘇る ~C#自己参照クラスをJSONという水晶玉に映す~

C#の自己参照クラス(連結リストなど)をJSONにシリアライズするとどうなるか、実験を通して解説します。片方向の参照は美しい入れ子構造になりますが、双方向の参照は「循環参照エラー」を引き起こします。この記事では、エラーが発生する理由と、`[JsonIgn…

神々の神殿を巡る旅路・後編 ~SQL ServerとOracle、二柱の古き神々との契約~

EF Coreを使ったデータベース比較の後編。本記事では、.NET 6環境でSQL ServerとOracleという2大データベースに接続する方法を解説します。Dockerを使った複雑な環境構築手順から、`IDENTITY_INSERT`エラーといった各DB特有の注意点、EF Coreで生成されるDDL…

神々の神殿を巡る旅路・前編 ~Entity Framework Coreで、三柱の神々と契約する~

ntity Framework Coreは様々なデータベースに対応しますが、実際にどのような違いがあるのでしょうか?この記事では、.NET 6環境でSQLite, PostgreSQL, MySQLの3つのデータベースにEF Coreを使って接続し、`EnsureCreatedAsync`で生成されるDDL(テーブル定…

新世界の夜明け ~.NET 6の荒野に、古の仲間たちを召喚する~

.NET 6のMinimal APIへの移行で、`Startup.cs`や`Main()`メソッドが廃止されたことに戸惑っている開発者向けに、NLog、JSNLog、PostgreSQL (EF Core) といった既存のライブラリを、新しい`Program.cs`にどのように設定・統合するかをステップバイステップで…

魂は、大地を選ばず ~Windowsで創りし.NETの魂を、Linuxで呼び覚ます~

.NETの真価であるクロスプラットフォーム開発を手軽に体験しませんか?この記事では、Windowsで開発したNLogを含む.NETコンソールアプリを、WSL2/Ubuntu環境へコピー&ペーストし、`dotnet run`コマンドだけで実行する簡単な手順を解説します。さらに、Linux…

そのWriteLineは、呪いの言葉 ~なぜNLogという聖剣を選ぶのか~

C#開発で多用される`Console.WriteLine`でのデバッグに限界を感じていませんか?本記事では、なぜ熟練開発者がロギングライブラリ「NLog」を選ぶのか、その理由を解説します。Visual Studioでの導入から、設定ファイル(NLog.config)によるファイル・コンソー…

その文字化けに、終止符を ~Log2Console、日本語の呪いを解く戦記~

NLogやLog4Netのログをリアルタイムで表示できる便利ツール「Log2Console」ですが、日本語が文字化けする致命的な問題がありました。本記事では、この文字化けを解決した修正版の導入方法と、その効果を解説します。修正済みの実行ファイルはGitHubで公開中…