みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

換気扇のスイッチを入れるとUSB接続が切断される

部屋の換気扇のスイッチを入れるとUSB接続のハードディスクが切断されるという現象に困っていました. 電源ケーブルとUSB3の干渉を考えて配線を遠ざけたり,換気扇の電源を別のコンセントに接続しなおしたり,工夫をしてみましたが効果がありませんでした. …

2023年現在の機械学習フレームワークの選択

TensorFlow, PyTorch が有名ですが,最近は JAX をよく見かけるようになりました. 論文で使用されているフレームワークのシェアを確認すると,PyTorchが圧勝です.TensorFlowが使われる頻度はかなり減っているようです.JAXやMindSporeは徐々に増えているよ…

npm で依存関係のライセンスを確認する

NPM License Checker というそのものずばりの名前のツールを使って,依存関係のライセンスを確認してみます. 例 package.json { "private": true, "dependencies": { "vue": "^3.3.4" }, "devDependencies": { "license-checker": "^25.0.1" } } license-ch…

JavaScriptで無限ループの原因を見つける

ブラウザーで実行する JavaScript において,無限ループで処理が進まなくなってしまう不具合が発生した場合に,修正する方法を検討します. Python など実行を強制終了 (Control+C) できる言語ならば,終了時のスタックトレースを確認することで無限ループの…

Django TestCase で tearDownClass のエラー

Django で単体テストを作成しているときに,Python の unittest を継承している*1からと思って,クラスの初期化を setUpClass() 関数に記載してました. class DummyTest(TestCase): @classmethod def setUpClass(cls): ... setUpTestData()関数を使う ある…

JavaScript で排他処理

Node.js はシングルスレッドで実行されるので,排他処理は原則不要ですが,非同期関数が含まれるとその限りではないと思ったので,排他処理ができるライブラリを探したのですが,自分で作った方が簡単だと思ったので,実験してみました. 以下のソースコード…

JavaScript で stream を扱う

JavaScript で大きなサイズのデータを扱いたかったので, stream の使い方をまとめます. 以下のソースコードは全て TypeScript の Vitest 用単体テストです. ReadableStream まずは ReadableStream を扱ってみます. ReadableStream - Web API | MDN impor…

Cloudflare Page の Node.js バージョンを指定

Cloudflare のビルドシステムに含まれるライブラリのバージョンは古い状態になっていました. Node.js 12.18.0 *1 これは3年前のバージョンです*2. しかし,V2 Build System が導入されたことにより,改善されました. Language support and tools · Cloudf…

プログラマーのためのCPU入門 を読了した

CPUは高速に処理するためにどのようなしくみで動作しているのか? いまいちよく分からなかったので,本で勉強することにしました.専門的なCPUの本はおそらく理解できないだろうと思ったので,読みやすそうな本を探したところ,以下の本を見つけました. プ…

エクセルのセル番号は変則的

エクセルのN番目のセル番号を取得する関数は,少し変則的な表記であることを知りましたので,メモしておきます. エクセルのセル番号は以下のように増えていきます. 1,2,...,26 → A,B,...Z 27,28,29,...,701,702 → AA,AB,AC,..ZY,ZZ 703,704,705,...,18277,…

正規表現で Non-capturing group を書き間違えた

正規表現の Non-capturing group は (?:) と表記しますが*1,これを間違えて (:?) と書いてしまったため,コロンが0文字か1文字という意味になり,意図した動作にならないという経験をしました. ? は直前の文字が0文字か1文字存在することを示すので,( の…

ヘルスプラネットのデータをエクスポートする

www.healthplanet.jp タニタの体組成計が,ヘルスプラネットに対応しているため使用し始めましたが,データをサーバーに記録してくれるものの,データを活用しにくいことが分かりました.エクスポートする公式の方法もなさそうで*1,APIがあるものの一部のデ…

devcontainer でタイムゾーンをJSTに設定する

devcontainer でタイムゾーンをJSTに設定するには,以下の設定を追加します. devcontainer.json { "containerEnv": { "TZ": "Asia/Tokyo" } } この設定がない場合は, $ date Sat 15 Jul 2023 02:07:46 PM UTC となりましたが,上記設定をすれば, $ date S…

正規表現のメタ文字の覚え方

\d Matches a digit character. \D Matches a non-digit character. \s Matches any white space including spaces, tabs, form-feed characters, and so on. \S Matches any non-white space character. \w Matches any word character including underscor…

Fosi Audio BT30D を購入した

パッシブサブウーファーとステレオスピーカーを2.1チャンネルで駆動可能なアンプ Fosi Audio BT30D を購入しました. BT30D 2.1 Channel Power Amplifier Bluetooth 5.0 with Bass and Treble Control – Fosi Audio Fosi Audio BT30D Bluetooth5.0アンプ パ…

JavaScript の Number.isFinite() と isFinite() の違い

JavaScript で isFinite(null) が true と評価されることに気づいて軽く絶望しました.以下のようにユニットテストを作成して確認しました. package.json { "name": "isfinite", "version": "1.0.0", "scripts": { "test": "vitest" }, "devDependencies": …

code-viewerを公開しました.

code-viewer 文字列関係のオンラインツールです.

IEEE802.1Q でタグ VLAN を使用する

IEEE802.1Q を用いたタグ VLAN をネットワークで活用しようと思ったのですが,タグ非対応の機器が共存したり,思った通りの VLAN が構成できるか不安だったので,とりあえずタグ VLAN に対応しているスイッチを 2 台購入して動作を確認することにしました. …

Mac でバッテリーの充電が保留される

Macbook Air M1 を使っています.ほとんどは電源コードを繋いだ状態なのですが,最近バッテリーの充電が保留されていることに気づきました. macOS Big Sur 以降では、「バッテリー充電の最適化」という機能がバッテリーの寿命を延ばし、Mac がフル充電され…

Rust で queue を作ってみる

pub fn pop(&mut self) -> Option<T> Removes the last element from a vector and returns it, or None if it is empty. If you’d like to pop the first element, consider using VecDeque::pop_front instead. Vec in std::vec - Rust vectorから最後の要素</t>…

docker は ufw の設定に関係なくポートを開けるので devcontainer を使う

Ubuntu で以下のように ufw を設定しました. $ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) 一見完璧に見えますが,この設定のまま,docker はポートを開けることが可能です. $…

rusqlite を windows でコンパイルする

rusqlite を利用して Rust で作成したソフトウェアが,Ubuntu と macOS でコンパイルできるのに,Windows 11 だと以下のエラーでコンパイルできない問題に遭遇しました. note: LINK : fatal error LNK1181: cannot open input file 'sqlite3.lib' 公式ドキ…

devcontainer に巨大なファイルをコピーする

Visual Studio Code で devcontainer を利用した開発環境はとても便利です.しかし,vscode にサイズが 30 GB のファイルをドラッグ・アンド・ドロップしてコピーしようとしたら,転送速度が 10 MB/s 程度しか出ませんでした.この速度では,完了するまでに …

Ubuntu で SSD の寿命を確認する

smartctl コマンドを使用します. Ubuntu Manpage: smartctl - Control and Monitor Utility for SMART Disks $ sudo apt install smartmontools ディスクを検索する $ smartctl --scan /dev/nvme0 -d nvme # /dev/nvme0, NVMe device 環境によって結果は異…

Rust と Python で文字数を数える

環境 検証に使用した環境は,以下の通りです. Python 3.11.3 (main, Apr 11 2023, 16:14:10) [GCC 10.2.1 20210110] on linux rustc 1.68.2 (9eb3afe9e 2023-03-27) on linux 文字列を数える Python ならば len() 関数を使うだけです. >>> len("りんご") 3…

Rust で気軽に並列処理をする

Rust の rayon の紹介です.驚くほど簡単かつ安全に並列処理を行えます. Cargo.toml [package] name = "thread-pool-sample" version = "0.1.0" edition = "2021" [dependencies] chrono = "0.4.24" rayon = "1.7.0" rustc 1.68.2 main.rs use chrono::prel…

並行処理 (concurrent) と 並列処理 (pararell) を確実に覚える

英語ならば, concurrent と pararell ですぐに分かります. 日本語は「並行」と「並列」という単語が非常に似ていてややこしいです.ただでさえ「行」と「列」は間違いやすいのに,並ぶという字が前に付くと,別の類似する概念を表します. 行は横方向,列…

Ubuntu で電源ボタンの動作を変更する

Ubuntu で電源ボタンの動作を変更するには, /etc/systemd/logind.conf を編集します. 電源ボタンを無効にする 電源ボタンを押しても何もしてほしくない場合は ignore を設定します. HandlePowerKey=ignore 電源ボタンで電源を切る HandlePowerKey=powerof…

Dev Container で Tauri を用いた GUI 開発

Docker 環境で GUI の開発ができないだろうか,と思ったので調べてみたところ, fluxbox というウインドウマネージャーを使用した,ブラウザーで接続可能なデスクトップ環境があるそうで,これは Dev Container Features の Light-weight Desktop を使用すれ…

Dev Container Features で全部入り開発環境を作成する

Dev Container を利用して Docker 環境で開発をすると,それぞれのプロジェクトについて自由に依存関係を構成することが可能になり,大変便利です.しかし,開発に必要なライブラリを1個のコンテナに準備する必要があり,準備が大変でした.それでも一度全部…