2024-05-01から1ヶ月間の記事一覧

C++でJSON

C++でJSONを扱いたいとき、以前は picojson を使っていた。 近ごろは nlohmann-json が良いらしい。(しらんけど) (ファイルサイズはpicojsonのほうが圧倒的に小さい。というか、nlohmann-jsonはクソデカい。) ヘッダオンリー picojson もそうだが、nlohmann-…

Linuxカーネルのドキュメント

Linuxカーネルドキュメント (公式) Linuxカーネルの公式のドキュメントである。 Quick searchで検索するか、Contentsから項目を探す。例えば、CANインターフェースについては、 Subsystems → Network Interfaces → Networking → SocketCAN - Controller Area…

ググるなカス

「Google検索が劣化した」とか「ChatGPT使え」とかいう話ではなく。 manコマンド UNIX系OSのコマンドやシステムコール、C言語の標準関数などについては、man コマンドでマニュアルを読むことができる。(例) atan2関数のマニュアル $ man atan2 ただし、print…

C言語:標準入力と矢印キー

C言語のプログラムで矢印キーの入力を受けるにはどうすればよいか? Windowsの場合 _getch() でキー入力を受け取ると、矢印キーなどは以下のような値になる。 キー 値 キー 値 ↑ 0xE0, 0x48(H) Home 0xE0, 0x47(G) ↓ 0xE0, 0x50(P) End 0xE0, 0x4F(O) → 0xE0…

C言語でログ出力のレベル分け

下記のようなマクロを使用してログ出力のレベルを制御する。 さらに細かく、FATAL(致命的なエラー)、ERROR(エラー)、WARN(警告)、INFO(情報)、DEBUG(デバッグ情報)、TRACE(トレース情報)のように分けてもよい。 // デバッグ出力 #define DEBUG_LOG_LEVEL 2 #…

Linuxで kbhit() と getch()

やりたいこと WindowsのC言語では kbhit() と getch() を使ってキーボード入力を即時に取得できる。 LinuxのC言語ではこれらの関数は用意されておらず、キーボード入力は1行ごとにバッファされ、Enterキーが入力されるまで取得できない。 Linuxでも kbhit() …

VirtualBoxのUbuntuのC言語でゲームパッド

VirtualBoxのUbuntuのC/C++で、USB接続のゲームパッド/ジョイスティックを扱いたい。 ホストOS: Windows 10 ゲストOS: Ubuntu 20.04LTS まずWindowsで動作確認 「コントロールパネル」→「デバイスとプリンター」でゲームパッドを選択し、右クリックで「ゲー…

エスケープシーケンスまとめ

エスケープシーケンスとは? コンソールに、\033 または \x1b から始まる文字を出力することでコンソールの表示を制御する。 8進数 033 は、16進数で 0x1b、10進数で27であり、ESCを表す。 画面消去 文字列 説明 \033[0J カーソル位置から画面右下まで消去 \…

VirtualBoxの共有フォルダの設定 (ゲストOS=Ubuntu)

VirtualBoxの共有フォルダの機能を利用し、ホストOS側のフォルダをゲストOSと共有する。 VirtualBox側の設定 仮想マシンの「設定」→「共有フォルダ」で共有フォルダを追加する。 「フォルダのパス」にホストOS側のフォルダを指定する。 「フォルダ名」にゲス…

ヤマハのFM音源チップいろいろ

ヤマハのFM音源チップは製品群の系統が複雑なので簡単にまとめる。 ここでは主要な型番のみを挙げるが、派生製品も多いことに注意。 OPL系、OPN系、OPM系の3つが有名。 その他に、OPX系、OPS系などがある。 これらとは別に着メロ用のMA系がある。 【表中の略…