メモ:フルスの音域について

Maker Faire Kyoto 2024のときに偶然お会いしたフルス奏者の方から教わったこと。 忘れないようにメモしておく。 左手の穴を全て押さえたときの音が「ド」 全ての穴を押さえたときの音が「低いソ」 右のドローン管の音は「低いラ」 左のドローン管の音は「ミ…

メモ:ハーディーガーディー

M5Stackを使った電子ハーディーガーディー製作のためのメモ マイナーな楽器で資料が少ないので誤解があるかも ハーディーガーディーとは? 弦と音域と鍵盤 旋律弦とドローン弦がある 音域や鍵盤の数はものによっていろいろ ここでは比較的一般的と思われるフ…

メモ:Excelのチェックシートでよくやるやつ

何回やってもなぜかよく忘れるのでメモっておく。 セルの値をドロップダウンリストから選べるようにする セルを範囲選択 「データ」→「データツール」→「データの入力規則 (✔とのアイコン)」→「設定」タブ 「入力値の種類」を「リスト」に 「元の値」にコン…

XT30コネクタ

XT30コネクタとは? ドローンやラジコン、電動ガンなどでよく使われる電源コネクタ (2極) 小型で抜き差ししやすい 定格電流:20A 適合電線:AWG18 オリジナルのメーカーはAmmas(中国)だが、互換品が多く出回っている オスとメス 外形がまぎらわしいが、金属…

メモ:Wordで段落に枠線と背景色をつける。

何回やってもなぜかよく忘れるのでメモっておく。 やりたいこと 下図のように、Wordで段落に枠線と背景色をつけたい。 やりかた マウスで段落を選択した状態で、「ホーム」→「段落」→「罫線(四角のアイコン)」→「線種とページ罫線と網かけの設定」 「罫線…

M5Stack Basic の Pinout

チートシート作った。 PDFはこちら → M5StackBasic_Pinout.pdf 出典 参考

メモ:M5StackのGroveコネクタ

接続 ピン Port.A (Grove I2C) Port.B (Grove GPIO) Port.C (Grove UART) 1 SCL (GPIO22) GPIO36 RXD (GPIO16) 2 SDA (GPIO21) GPIO26 TXD (GPIO17) 3 5V 5V 5V 4 GND GND GND M5Stack BASICでPort.B や Port.C を使用したい場合は、ボトムユニットを「M5GO/…

メモ:Chromeの表示を旧デザインに戻す

【追記】 Chrome 126 (2024年6月ごろ) 戻せなくなりました。 Chrome 125 (2024年5月ごろ) Chromeのショートカットのプロパティにて、「リンク先」の末尾に「 --disable-features=CustomizeChromeSidePanel」を追加する。先頭スペース1つ入れること。 "C:\Pro…

LinuxでCAN通信 (CAN FD対応)

要点 LinuxカーネルはCAN通信をサポートしている。 Ubuntuではカーネルコンフィグをいじらなくてもデフォで使える。 ネットワークインターフェースとして扱われ、ソケットAPIで叩ける。 CAN / CAN FDについて はじめてのCAN / CAN FD - Vector Japan:まずこ…

CMakeLists.txtの書き方

基本の書き方 cmake_minimum_required(VERSION 3.13) project(hoge_project CXX) add_executable(hoge hoge.cpp piyo.cpp) cmake_minimum_required : CMakeの最小要求バージョンを指定 project : プロジェクト名と使用言語を指定 (CXXはC++) add_executable …

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系がある。 【表中の略…

備忘録:正規表現

これは、たまに正規表現を使うけどすぐ忘れてしまう人のメモです。 正規表現の基本については下記の記事を参照。 忘れがちなメタ文字6つ 他言語からの類推が働かず、どれがどれか忘れがちなメタ文字は以下の6つ。 無理やり語呂合わせでおぼえることにする。 …

Haskellのモナドいろいろ (まとめ)

記事一覧 Haskellのモナドいろいろ (1) - 滴了庵日録 Haskellのモナドいろいろ (2) - 滴了庵日録 Haskellのモナドいろいろ (3) - 滴了庵日録 Haskellのモナドいろいろ (4) - 滴了庵日録 分類 上記の記事で述べた8つのモナドは、2種類に分類できる。 失敗系:…

Haskellのモナドいろいろ (4)

Readerモナド Writerモナド Readerモナド Readerモナドは、読み取り専用のStateモナドのようなものである。 Stateモナドはグローバル変数のようなものとして利用できたが、 Readerモナドはグローバル定数のようなものとして利用できる。 Stateモナドでは状態…

Haskellのモナドいろいろ (3)

Stateモナド Stateモナド STモナドは runST で値のみを取り出せたが、Stateモナドは状態も取り出せる。値と状態を取り出すには runState を、値のみを取り出すには evalState を、状態のみを取り出すには execState を用いる。前の記事でSTモナドで実装した …

Haskellのモナドいろいろ (2)

IOモナド STモナド IOモナド IOはもちろんモナドである。 入出力という副作用を扱うために用いられる。 main も IO () という型の変数である。 (関数ではない)モナドだから return で値を中に入れることができる。 hoge::Int -> IO Int hoge x = return x ma…

Haskellのモナドいろいろ (1)

Listモナド Maybeモナド Eitherモナド Listモナド リストもモナドである。意外なことにリストもモナドである。 リストには要素数が0個の空リストがありうる。 これは後述するMaybe や Either における失敗の表現のようなものとも言える。モナドだから return…

InnoSetupでQtアプリのインストーラ作成

やりたいこと Qtで作成したWindowsアプリのインストーラをInnoSetupで作成する。 InnoSetupのインストール 下記コマンドを実行してInnoSetupをインストールする。 (本稿執筆時点でバージョン6.2.2) winget install JRSoftware.InnoSetupWindowsのノートPCで…

メモ:Qtのプロジェクトについて

ディレクトリ構成について プロジェクト作成時に例えば上記のように設定すると、ディレクトリ構成は下記のようになる。 ソースディレクトリと同じ階層にビルドディレクトリができることに注意。 hoge ├─ piyo : ソースディレクトリ (プロジェクトファイルや…

PAGEでPython/TkのGUIデザイン

やりたいこと Pythonで簡単なGUIアプリを作りたい。 PythonのGUIツールキットとしては、Tkinterが標準で付属している。 Tkinterは、TkをPythonから使えるようにしたもの。 Tkは古めかしいGUIツールキットだが、簡単なGUIで見た目を気にしないならじゅうぶん…

多角形に関する計算

ソース全文はこちら → 多角形に関する計算 · GitHub 凸多角形か判定 # 凸多角形か判定 def isConvex(polygon): # n角形 n = len(polygon) # 時計回りまたは反時計回りで、隣接する辺のベクトルのクロス積がすべて同符号なら凸多角形 cp0 = 0 for i in range(…