C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

`yarn licenses list --json` ではしんどい気配の場合に `npx license-checker --json` すると嬉しいメモ、とおまけで `Cargo.toml` で rust の場合のメモ

package.json -> licenses.json おまけ: Cargo.toml -> licenses.json package.json -> licenses.json package.json と npm|yarn を使っているプロジェクトでお世話になっている依存ライブラリーのライセンス表示を自動生成したい時、とりあえず yarn で yar…

Rust の trait で Option<Self> や Result<Self, E> を return する関数を定義しようとして [E0277] で怒られた時に思い出すメモ

問題 // ↓これは問題ありません trait Trait { fn function() -> Self; } // ↓これは E0277: the size for values of type `Self` cannot be known at compilation time trait TraitOptional { fn function() -> Option<Self>; } // -> Result<Self, E> とかする場合も同様</self,></self>…

Rust のメモリーコンテナー的な何かをわかりやすく整理したチートシートのメモ; T, Cell, RefCell, AtomicT, Mutex, RwLock, Rc, Arc

Repos: https://github.com/usagi/rust-memory-container-cs 作ったので GitHub ↑ しつつ、なんとなくすごい久しぶりに Qiita に初心者さんに優しそうな雰囲気を装った解説↓ https://qiita.com/usagi/items/fc329895cebd3466910e も書いてみました。ちなみに…

Rust で実行中にバッファーの次元解釈を変更できる DimensionShiftableBuffer と翻訳時に任意の次元解釈をVec<T>に追加する vec-dimension-shift を公開しました。のメモ

dimension_shift_buffer https://crates.io/crates/dimension_shiftable_buffer https://github.com/usagi/dimension_shiftable_buffer https://docs.rs/dimension_shiftable_buffer/1.0.0/dimension_shiftable_buffer/ vec-dimension-shift https://crates.…

Rust のダウンキャストめんどくさいでござる問題を mopa crate ですっきりするメモ

trait T を実装した struct S について、 S から &dyn T へアップキャストした後、 &dyn T から &S へダウンキャストでき…ません。Rustでtrait継承のdynなオブジェクトを扱おうとすると悲しむポイントです。 trait T { fn hello(&self); } struct S {} impl …

Rust の tia crate で accessor とか interface 的な trait 群の impl を楽できるようになりました。のメモ

publishedhttps://t.co/hJD0s7Leoh: tiahttps://t.co/Rpx0g9zfdpgithub: usagi/tiahttps://t.co/IrrhxsH58Rtia; trait, impl accessors | automaticThis is a syntax sugar proc-macro crate for trait, impl accessors patterns.#Rust #rustlang— Usagi Ito…

Rust の impl で pub る fn の第1引数の定義の方法と効果のメモ

主題 Rust の impl な fn の第1引数、つまり: struct S { } impl S { fn f(❤ここ❤) { } } ❤ここ❤ の部分の書き方と、書き方に応じてどのような効果、意図として扱われうるかを整理します。 fn f() fn f(self) fn f(mut self) fn f(&self) fn f(&mut self) す…

Adobe Acrobat Reader DC 20.009.20074 のホイールによるページの上下方向のスクロール量が体感0.1行単位くらいの遅さでつらい時に思い出したいメモ

default 状態でホイールのスクロール量が体感0.1行くらいでつらすぎる場合にスクロール量を数行単位程度へ改善する設定手順: Menu bar: Edit -> Preferences (CTRL+K) -> Page Display -> Default Layout and Zoom -> Page Layout Single Page Continuous へ…

逆引き風 roxmltree の基礎的な使い方のメモ; rust のたぶん今の所いちばん速くて安全な XML ぱーさー

https://crates.io/crates/roxmltree/ https://github.com/RazrFalcon/roxmltree/ https://docs.rs/roxmltree/0.13.0/roxmltree/ note: このメモは roxmltree-0.13.0 の時代に書きました。 はじめに知っておくとよいこと 与えられた XML ≈ Document を Node …

小さな XML のパース速度で比べる rust の XML crate たち; roxmltree vs. minidom ≈ quick-xml vs. sxd-document vs. sxd-xpath vs. amxml

結果 test benches::amxml_root ... bench: 40,783 ns/iter (+/- 6,365) test benches::amxml_sec ... bench: 28,487 ns/iter (+/- 1,295) test benches::minidom_root ... bench: 1,942 ns/iter (+/- 73) test benches::minidom_sec ... bench: 2,127 ns/it…

rust で XPath できる crate たちのメモ; (1) amxml, (2) sxd-xpath

XPath 使いたい需要に対応できる XML パーサーを crates.io で探すと有用そうな crate が2つ見つかりました。簡単な XPath で使い勝手を確認したメモです。 amxml sxd-xpath ( + sxd-document ) 1. amxml cargo add amxml #[cfg(test)] mod tests { /// 共通…

WSL で有効なコマンドの alias を巧く張る方法のメモ

↓こんな感じで alias を仕込むと WSL 環境でのみ alias を張れます: if [[ $(grep -i Microsoft /proc/version) ]]; then alias code="/mnt/c/Users/usagi/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code" alias display.blank="/mnt/c/Windows/Syste…

Rust で XML パーサー使いたいならどの crate を使うと嬉しいかもしれないか、のメモ

状況 crates.io には執筆時点では複数の XML お取り扱いらしい crate が存在しています: xml-rs 4,013kDL quick-xml 681 kDL xml5ever 183kDL xmlparser 232kDL sxd-document 63kDL strong-xml 0.7kDL trashy-xml 0.7kDL などなど。他にもいくつも登録されて…

VSCode via WSL2 で rust-analyzer が OUTPUT に Assertion failed: We don't expect to receive commands in CodeActions エラーを盛り盛り上げてきたら思い出すメモ

症状 WSL2 経由で動作する VSCode の rust-analyzer が一見動作しているように見えて OUTPUT に大量のエラーメッセージ: Assertion failed: We don't expect to receive commands in CodeActions を吐く。発症するとエラーが吐かれる度、作業中やログ監視な…

Rust で cdylib/wasm を吐く crate を分割したら依存先の機能を呼べなくなり、なんとなく extern crate を明示してみたら can't find されて5分くらい悩んだメモ

だいじな事: crate を分割したら、お呼ばれされる側の Cargo.toml で [lib] の crate-type が明示的に rlib を吐かない定義になっていないか確認しよう! 期待動作する例 # crate aaa に依存される側の crate bbb の Cargo.toml # ☆ ↓ src/lib.rs ありの cra…

React で TypeScript な Component 内の一部のメソッドから他の定義済みのはずのプロパティーや state へのアクセスが undefined になった時に思い出したいメモ

期待動作する例 ↓は button をポチると hidden で置いてあるファイルアップロード用の input の click を発火するコンポーネント的な例です。 import React, { Component } from "react"; interface IProps { } interface IState { } export default class F…

wasm-bindgen で fetch する rustwasm 公式の example の async で JsFuture な run が実行時に失敗した場合にも安全に対応できるようにする方法のメモ

問題 https://rustwasm.github.io/wasm-bindgen/examples/fetch.html ↑ この example の run に rustwasm/wasm-bindgen のような、実装上GitHub APIで取得可能なポジトリーが実在する場合は問題ありません。 リポジトリーが存在しないパターンを run に与え…

諸事情により React で TypeScript な web アプリの中から window に global な変数を write access する方法のメモ

Window をオレオレ派生した interface をでっちあげてキャストすれば window の任意のプロパティーに write access できる。後は野となれ山となれ。 ↓例、React の state 持ちの Component な App のインスタンスを window.app な global 変数として登録: Ap…

React プロジェクトの src 内のコンポーネントから諸事情によりウェブサイト外部の SCRIPT を読む方法のメモ

諸事情の例 コンポーネントの render 時に CDN やどこかしらから <script src="https://example.com/hogehoge.js" crossorigin></script> とかしたい コンポーネントの render 時に .jsx/.tsx の翻訳時には有効ではない ECMAScript コードをちょろまかしたい 4つの方法 もっとあるというのはさておき。 1. react-script-tag https…

React なプロジェクトを TypeScript に移行したら3つの困りが発生したけど解決できたメモ

こまったこと: 1. カスタムソースディレクトリー ./src.react を tsc が認識できなかった 諸事情により ./src ではなく ./src.react に react 用のソースを配置していたが、 tsconfig.json の include では "." 文字の入ったディレクトリーは認識しない仕様…

Web 向けの3D の GPU 描画コンテキストお取り扱いライブラリーの2020-07時点のメモ: ES 系, Unity, Unreal Engine, Rust 系

note: 2D 系(eg. phaser, ggez, etc. )は今回のメモでは含めていません。 Lang Library License WebGPU WebGL native ES & wasm ES babylon.js Apache-2.0 Ready 2 %a n/a pure ES ES three.js (+A-Frame) MIT(+MIT) (unknown†1) 1 + (2) n/a pure ES ES pla…

Arch Linux 環境で cargo が言うことを聞かなくなったメモ

症状 数日ぶり程度に使用した Arch Linux 環境の rust 処理系で cargo が +nightly を受け付けてくれなくなって困った ( -Z したかった ) rustup toolchain では stable, nightly が installed 状態 原因 rust は rustup を per user で導入して使っていた"…

MDN の wasm-bindgen の入門用チュートリアル "Hello, WebAssembly" の補足的なメモ

"Hello, WebAssembly" https://developer.mozilla.org/ja/docs/WebAssembly/Rust_to_wasm; MDN / WebAssembly / Rust から WebAssembly にコンパイルする 補足的なメモ 1. npm のアカウントとパッケージの公開は必要? MDNの記事そのものではそこも含めたや…

WebGPU 実装状況のメモ; Firefox-80.0a1(nightly), Chrome-86.0.4191.0(canary) なう

[OK‍♀️] Firefox-80.0a1(nightly) + gfx.webrender.all=True + dom.webgpu.enabled=True / Windows 10 [NG‍♀️] Firefox-78.0.1(stable) + gfx.webrender.all=True + dom.webgpu.enabled=True / Windows 10 [OK‍♀️] Chrome-86.0.4191.0(canary) + Unsafe WebG…

CRA=create-react-app が WSL で start できない理由と回避方法のメモ

問題 WSLでCRAしてyarn startするとcmd.exeを実行できずにウェブブラウザーの起動どころかサーバーも起動せず死んでしまいます。 再現方法: WSLで npx create-react-app hoge して cd hoge; yarn start します Starting the development server... events.js…

UE-4.23以降でHTML5ターゲット(wasm+webgl1)をWindowsの開発機から使うメモ; UE-4.24, Emscripten-1.39.0

↑一応、できました。ただし、実用上は UE4.23 以降で HTML5 ターゲットの採用はおすすめしません。…UE5時代にはWebGPU/wasmのポータブルターゲットよゆうでしたの世界が来ると楽しいですね… 理由: エンジンソースレベルからのビルド、Emscriptenによるサード…

.asar ファイルをファイルエクスプローラーで探索するように確認したい機会がしばしば発生するようになった場合に便利な 7-zip プラグインのメモ

electron-pack で扱われてる .asar のナカミをファイル単位でぱぱっと確認できるようにしたくなったとき用のメモです。npx asar l something.asar にパイプしてにゃんにゃんCLIで叩けば手っ取り早いタイプの用途とは別に、GUIのファイルエクスプローラーでに…

electron と node_modules と client-side library と electron-builder と symlink と .asar についての Windows での挙動についてのメモ

状況 Electron アプリを作っています。 yarn/npm で client-side 向けの library X (仮) を追加しています。 X は開発環境では yarn/npm により node_modules/X ディレクトリーに取り込まれています。 Electron アプリの client-side の static なファイル資…

winget へ choco または他の何かから可能な範囲で移行するメモ

https://github.com/microsoft/winget-cli ; winget https://github.com/microsoft/winget-pkgs ; Community repo https://github.com/microsoft/winget-pkgs/tree/master/manifests ; この辺りを眺めると winget を入れなくても対応パッケージが視えます wi…

Electron アプリに electron-store で設定ファイル機能を追加する場合の example & tips 的なメモ

GitHub - sindresorhus/electron-store: Simple data persistence for your Electron app or module - Save and load user preferences, app state, cache, etc を使うメモです。 yarn add electron-store electron-store = 旧 electron-conf public/conf.js…