まえがき WindowsでWSL(Windwos Subsystem for Linux)にLinux環境をインストールして、Visual Studio/Visual Studio CodeでC/C++開発を行うための環境構築やTipsを記録として残しておきます。 今回はWSLのインストールおよび初期設定、起動・終了について記…
まえがき C++で任意のデータをシリアライズするためのクラスの実装方法を紹介します。 今回は前回に引き続き任意のデータ型(クラス/構造体)に対してシリアライズできるようにする方法について説明します。 ソース一式はGitHubで公開しています。 前提条件 今…
まえがき C++で任意のデータをシリアライズするためのクラスの実装方法を紹介します。 今回は前回に引き続きテキスト形式でのシリアライズ処理の実装について説明します。 ソース一式はGitHubで公開しています。 前提条件 今回実装したソースは以下の環境で…
まえがき C++で任意のデータをシリアライズするためのクラスの実装方法を紹介します。 今回は前回に引き続きバイナリ形式でのシリアライズ処理の実装について説明します。 ソース一式はGitHubで公開しています。 前提条件 今回実装したソースは以下の環境で…
まえがき C++で任意のデータをシリアライズするためのクラスの実装方法を紹介します。 プログラムで扱っているデータをネットワーク経由で送受信する場合や、ファイルに保存する場合にはシリアライズ(直列化)してバイナリ配列や文字列などに変換する必要があ…
まえがき 今回は、以下のような機能を持ったログ出力クラス(Logger)を実装します。 Infomation / Warning / Errorのログを使い分けられる 各ログは分かりやすいように色付きで表示 文字列フォーマッティング対応 マルチスレッド時の排他処理 同時にファイル…
まえがき 今回は、前回に引き続き、C++で例外発生箇所と状況を特定するために、スタックトレースを取得する方法を実装します。 前提条件 今回実装したソースは以下の環境でビルド、動作確認しています。 OS Ver Compiler Remarks Windows 10 Visual Studio 2…
まえがき 今回は、C++で例外発生箇所を特定する方法についてです。 C++やC#といったオブジェクト指向言語では、エラー処理は例外(Exception)という機構を使うことが一般的です。 C++では、例外をthrowするときにエラー情報を文字列として渡すことで、例外をc…
まえがき C++でprintfライクな文字列フォーマッティングの実現方法です。 C++で文字列フォーマットをする方法はいくつかあります。 標準では、std::coutなどのiostreamを使った方法ですが、個人的にはちょっと使いづらいです。 C++20では、formatライブラリ…
まえがき ソケットを使ったEthernet通信の実装方法メモです。 今回は、前回に引き続きC++でUDPマルチキャスト/ブロードキャスト通信を行うための機能を実装します。 ソケット通信は、OSによって実装方法が異なるので、Windows / Mac / Linuxそれぞれの実装を…
まえがき ソケットを使ったEthernet通信の実装方法メモです。 今回は、C++でUDPユニキャスト通信を行うための機能を実装します。 ソケット通信は、OSによって実装方法が異なるので、Windows / Mac / Linuxそれぞれの実装を行い、環境によって自動的に切り替…
まえがき 今回はClangNet(libclangの.NET(C#) Binding)を使った実用的な構文解析のサンプルを作成してみます。 今回作成するサンプルでは、以下の2つの情報を出力する機能を実装します。 関数コールツリー 関数クロスリファレンス(宣言/定義/コール)情報 Cla…
リリースノート ClangNetのVer1.1.0をリリースしました。 変更点: 1. LLVM/Clang Ver.9.0.0に対応 2. いくつかの不具合を修正 ダウンロード先&インストール方法 libclang.dllやClangNetは以下からダウンロードしてください。 LLVM/Clang Ver.9.0.0 : Link Gi…
まえがき LLVM/Clangに同梱されているlibclangの.NET(C#) Bindingライブラリ(ClangNet)を作成しました。 libclangはC/C++/Objective-Cソースコードの解析や自動補完機能を提供する高レベルのAPIで、オリジナルはC言語ベースのAPIが提供されています。 C言語…
まえがき 最近、Python を勉強し始めたので、その学習メモです。 今回はディクショナリ(Dictionary)についてです。 ディクショナリ(Dictionary) ディクショナリはユニーク(一意)なキーとそれに対応する値を格納するコレクションです。 例えば、IDとそれに対…
まえがき 最近、Python を勉強し始めたので、その学習メモです。 今回はセット(Set)についてです。 セット(Set) セットはタプルやリストと同様、複数のデータをまとめて扱う場合に使用しますが、ユニーク(一意)な値を格納する順序なしのコレクションです。 …
まえがき 最近、Python を勉強し始めたので、その学習メモです。 今回はリスト(List)についてです。 リスト(List) リストは前回説明したタプルと同様、複数のデータをまとめて扱う場合に使用しますが、タプルとの違いは要素の追加や挿入、削除などが可能なこ…
まえがき 最近、Python を勉強し始めたので、その学習メモです。 今回はタプル(Tuple)についてです。 タプル(Tuple) プログラミングをしていると、複数のデータをまとめて扱いたいときがあります。 例えば、座標などがそうです。 座標は、x軸とy軸(3次元の場…
まえがき 最近、Python を勉強し始めたので、その学習メモです。 今回はビット演算、比較演算、論理演算についてです。 ビット演算 ビット演算はC言語などとほぼ変わらないので、特別異なる点のみ説明します。 シフト演算 print(2 << 3) print(4 >> 2) 実行…
まえがき 最近、Python を勉強し始めたので、その学習メモです。 今回は基数についてです。 基数 基数は、各桁を構成する数値や記号の数を表し、簡単に言うと桁が繰り上がる数です。 この基数を使った数の表現方法を記数法と言います。 例えば、普段生活で使…
まえがき 最近、Pythonを勉強し始めたので、その学習メモです。 今回は数値演算、数学関数についてです。 数値演算 まずは、数値演算です。 Pythonでは、標準で整数、浮動小数点数、複素数を取り扱うことができます。 整数や浮動小数点は、C / C++ / C#など…
まえがき 最近、Pythonを勉強し始めたので、その学習メモです。 Hello, World まずは、おなじみの「Hello, World」から。 print('Hello, World') 実行結果 Hello, World 余計なものは何もいらない。そうPythonならね。 文字列処理 続いてはよく使う文字列処…
まえがき Excelの列名(A, B, ..., AA, AB)と列番号(1, 2, ...)を相互変換する方法のメモです。 ついでに、相互変換するWindows用アプリケーションも作成しました。 列名 <--> 列番号相互変換 共通定数 まずは、共通で使用する定数を定義します。 // アルファ…
まとめ 「UMLのステートマシン図を実装する for C#」のまとめ記事です。 次のようなステートマシンをC#で実装する方法について紹介しています。 エアコンステートマシン No. 内容 Link 備考 その1 ステートマシンベースクラス実装 Link その2 ステートマシン…
まえがき ステートマシンをGUI(WPF)で動作させるアプリケーションを実装していきます。 エアコンステートマシン 事前準備 今回は、WPF + MVVM + リアクティブプログラミングでGUIアプリケーションを実装しようと思います。 MVVMのフレームワークにはLivet…
まえがき ステートマシンをCUI(コマンドライン)で動作させるアプリケーションを実装していきます。 エアコンステートマシン Messenger クラス 状態遷移など、ステートマシンの内部状態を把握しやすくするために、任意の文字列(ログなど)をアプリケーションに…
まえがき 今回は、エアコンモデル(AirConditionerクラス)を実装していきます。 エアコンモデルは、今回のテーマである「ステートマシン図の実装」からは離れてしまうので、それっぽく動作するものに留めておきます。 エアコンステートマシン StainLevel 列挙…
まえがき 今回は、前回に引き続きサンプルのエアコンステートマシンを実装していきます。 エアコンステートマシン State クラス State クラスを継承した各状態を実装します。 エアコンステートマシンでは、4 つのメイン状態と、6つのサブ状態を実装する必…
まえがき 今回は、前回説明したサンプルのエアコンステートマシンを実装していきます。 エアコンステートマシン StateMachine クラス StateMachine クラスを継承したステートマシンを実装します。 エアコンステートマシンでは、3 つのステートマシンを実装す…
まえがき 今回は、前回作成したベースクラスを使って実装するステートマシンのサンプルについて説明します。 エアコンステートマシン 上記ステートマシンは、エアコンの状態遷移を表したものになります。 なお、今回作成するステートマシンはサンプルのため…