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

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

逆引き風 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…

Electron アプリに electron-localshortcut で非グローバルでMenuのアクセラレーターも使わないキーバインドを追加するメモ

準備: yarn add electron-localshortcut; https://www.npmjs.com/package/electron-localshortcut 実装例(public/electron.js): const electron = require("electron"); const app = electron.app; const browser_window = electron.BrowserWindow; const lo…

Electron アプリに i18next を追加して i18n/l10n 対応するメモ

基本的な使用の流れ yarn add i18next i18next-node-fs-backend public/i18n.js など適当に作り l10n 文字列を取り出したいソースで const i18n = require('./i18n.js') して 必要なら await i18n.changeLanguage('ja-JP') のように l10n 先を実行時に設定す…

Inkscape-1.0: 新規作成されるSVGドキュメントの背景色のデフォルト値を変える方法; ダークモードのテーミング&defaultドキュメント背景の設定方法のメモ

Inkscape-1.0 では Theme 機能が実装されたので、 Edit -> Preferences -> Interface -> Theme を設定するとダークモードに優しいテーミングができるようになりました。嬉しいです。しかし、闇の世界に住む私たちの目にInkscapeの画面で最も眩しくて困る部分…

Blender: 正規表現でがさっと Vertex Group(s) をタゲって統合しつつ元は削除して置き換えられる Scripting: usagi/blender-merge-vertex-groups.py のメモ

前回のメモで使用した p2or/blender-merge-vertex-groups.py を元に: 正規表現 regex 設定で Vertex Group(s) をまとめてタゲれて 統合元になった Vertex Group(s) は削除する replace モードを True/False 設定できて 統合先を明示的な名付け to またはそれ…

Blender: Armature の削除や変更で Vertex Group との整合性が狂ってしまったときの修正方法、のメモ

状況 「Armature を節約しなきゃ→簡単に Merge できるところは Merge!→ Merge が難しいところは Delete / Disolve ! 」 とかした後に、 「 Armature を Delete / Disolve した部分に対応していた Vertex Group と残した Armature との対応が壊れてしまった……

Blender Scripting: head と tail の座標と適当なフィルター条件でボーンの親子関係を自動構築する `connect-bones` の作り方と Add-on 化の方法

こんにちは、Python初心者∧Blender初心者です。フィーリングやマウスぽちぽちよりパキッとコードで処理する方が得意なので、 un-h002; Atropos の cluster 対応で私自身に追加実装された Blener Scripting を入門講座を兼ねて整理します Note: 読者の想定=Py…

3D-Avatar: VRM を作って → detune して → cluster へアップロード成功するメモ; 2020-04-10版

経緯などはさておき、件について少し複雑ですので整理するメモです。時間がないけど結論だけ気になる人は最後のまとめだけどうぞ。 目次 (1) VRoid Studio や セシル変身アプリ でVRM を作って (2) cluster へアップロード -> 「アップロードに失敗しました…

Node.js & native code: NEON vs. node-ffi-napi vs. pure Node.js

Node.js と Rust による native code のマーシャリング手法は NEON と node-ffi-napi の2種類が現時点で有力です。マーシャリング部分のコストの特徴を大雑把に掴むため雑なベンチマーキングをしました。 Note: 理論的にはもう1つ N-API を直接リンクして cd…