Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

2022-01-01から1年間の記事一覧

社内ブログあとがき

今年は 2022 年の後半に社内ブログを 9 本書かせてもらった。それについてあとがき的な何か。

AWS Lambda を Rust で動かす(Windows でビルド)

AWS Lambda を Rust で動かすには 公式のページたち。 AWS Lambda のカスタムランタイム - AWS Lambda Rust Runtime for AWS Lambda | AWS Open Source Blog 実装する > rustc --version rustc 1.62.0 (a8314ef7d 2022-06-27)> cargo new hello_rust_lambda …

Rust で変数の宣言と値の束縛は別々にできるらしい

let での変数宣言と値の束縛は、特に mut ではなくても、別でも良いらしい。 const は一緒にやらないとだめらしい。 let x: i32; x = 123; println!("x: {}", x); // Compile Error! // const C: i32; // C = 123; // println!("{}", C); x: 123これはスコー…

最近のメモ

最近やってること Rust(プログラミング言語の方) 社内にも広めていく活動 Unity でエモい光の出し方の研究 十三機兵防衛圏 最近やったこと エアダスターで CPU ファンの埃を飛ばした めちゃくちゃ綺麗になったが、冷えやすくなったかは不明 ゼルダの伝説 B…

Rust で HashSet の要素や HashMap のキーに使う型は Eq と Hash トレイトを実装している必要がある

HashSet in std::collections - Rust HashMap in std::collections - Rust 自前の構造体を HashSet の要素にしたり、HashMap のキーに使用するとコンパイルエラーになる。 use std::collections::HashSet; fn main() { { struct MyFoo { x: i32, } let mut h…

WebAssembly と Rust について社内で LT した

内容をメモ WebAssembly とは WebAssembly とは ネイティブに近いパフォーマンスで動く コンパイルして作るバイナリ 第 4 のブラウザ用言語 W3C 勧告として公開 対応ブラウザ 最近のブラウザはすべて対応している(IE もいなくなったので本当にすべて) 作成…

Rust と WebAssembly で ボタンを getElementById したり click 属性をつけたりするサンプルメモ

Rust の WebAssembly で、ボタンを押すと、div#msgdiv にテキストを入れて、window.alert() を実行するサンプルメモ。trunk を使用している。 index.html <html> <head></head> <body> <div id="msgdiv"></div> <input type="button" value="botan" id="foobtn"> </body> </html> Cargo.toml [package] name = "click-test" version = "0.1.0" editio…

Rust の WebAssembly(wasm) の web-sys を使うときは Cargo.toml で features を指定する必要あり

Rust で WebAssembly しようとやってみたら最初でつまづいたのでメモ。Cargo.toml [dependencies] web-sys = "0.3.57"main.rs (trunk 使ってみてるので) pub func main() { let window = web_sys::window().unwrap(); } error[E0425]: cannot find function …

Rust で { と } を表示する

error: invalid format string: expected `'}'`, found `'{'` { hoge } という文字列を println! しようとしたら、エラーになった。 let s = "hoge"; println!("{ {} }", s); error: invalid format string: expected `'}'`, found `'{'` --> src\main.rs:31…

Rust の to_owned() って何

to_owned() https://doc.rust-lang.org/std/borrow/trait.ToOwned.html#tymethod.to_owned &の参照に対して使う 参照元の値をクローンする クローンした上で所有権も新規にする(参照元の方の所有権はそのまま) 例 fn main() { { let s1: &str = "foo"; le…

Rust でブロック内に定義した関数とか構造体とかはそのスコープで閉じる

メモ。 関数とか構造体とかは外側で定義してるイメージだけど、別にどこでも定義できるらしい。 でもスコープが発生するので見えないところからは使えないらしい。 fn main() { { #[derive(Debug)] struct Foo; let foo = Foo {}; println!("{:?}", foo); } …

Rust で配列の要素そのもので配列にアクセスしようとするとエラー

error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable エラーが出たのでメモ。やりたいこと。 fn main() { let mut v: Vec<usize> = vec![3, 123, 234, 345, 456, 567]; v[v[0]] *= 100; // 要素 3 を 100 倍する println!("{:?}"</usize>…

Rust 参照の分配(destructuring)のパターンのメモ

参照の分配 クロージャの引数のところ https://doc.rust-jp.rs/book-ja/ch18-03-pattern-syntax.html?highlight=Point#%E5%8F%82%E7%85%A7%E3%82%92%E5%88%86%E9%85%8D%E3%81%99%E3%82%8BVS Code が教えてくれる書き方の中に、クロージャの引数部分で、|&x| …

Rust で自動でデリファレンスされるやつのメモ2

https://doc.rust-jp.rs/book-ja/ch05-03-method-syntax.html#-%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%AF%E3%81%A9%E3%81%93%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F%E3%81%AE Rustには->演算子の代わりとなるようなものはありません; その代わり、Rustには、 自…

Rust で Vector の先頭の要素を取り出したり押し込んだりするときは VecDeque を使う

通常の Vector では push() と pop() しかなくて、いずれも配列の最後の要素に対してしか操作できない。先頭の要素を取り出したり、要素を押し込んだりするためには、std::collections::VecDeque を使うのが良いようだ。 (Ruby の Array#shift とか Array#u…

Rust のトレイトとかトレイトオブジェクトとかサブトレイトとかジェネリクスのときのトレイトのやつのメモ

いろいろ試したメモ。なんとかぼんやりと理解できてきた。

Rust で複数の要素をキーとしてソートする

メモ。 配列の配列があり、1個目の要素を第一キー、2個目の要素を第二キーとしてソートする。 Perl だと sort { $a->[0] $b->[0] or $a->[1] $b->[1] } @array のやつ。 Ruby だと array.sort! {|a, b| [a[0], a[1]] [b[0], b[1]] } のやつ。 fn main() { …

Rust で関数から trim した &str を返したかった

以下はコンパイルエラーになる。 fn main() { let foo = foo(); println!("{}", foo); } fn foo() -> &str { let m = String::from("aiueo"); m.trim() } error[E0106]: missing lifetime specifier --> src\main.rs:6:13 | 6 | fn foo() -> &str { | ^ expe…

Rust の構造体の分配(destructuring)などのパターン記法のメモ

その1 変数を構造体のインスタンスから生成することができるとのこと。 https://doc.rust-jp.rs/book-ja/ch18-03-pattern-syntax.html#%E5%88%86%E9%85%8D%E3%81%97%E3%81%A6%E5%80%A4%E3%82%92%E5%88%86%E8%A7%A3%E3%81%99%E3%82%8B ↑これのやつ。 struct …

Rust で println!("{}", x) で参照が自動的にデリファレンスされるやつと std::fmt::Display のやつのメモ

std::fmt::Display のやつ println!("{:?}", x) で表示させるには derive(Debug) をしておけばよいが、println!("{}", x) では std::fmt::Display トレイトを実装している必要があるようだ。 #[derive(Debug)] struct MyStruct(i32); fn main() { let s = My…

Rust で画像のリサイズをやってみたメモ(サムネイルを作るやつ)

Rust で画像のリサイズ(ほとんどの場合縮小だと思うけど)をやってみたメモ。 Cargo.toml [dependencies] image = "0.24.2" main.rs use image::GenericImageView; use image::imageops::FilterType; fn main() { let img = image::open("original.png").un…

Unity で Windows でウィンドウが最前面(TOPMOST)に表示し続けるアプリを作る

C# スクリプト内で Win32 API を操作することで実現できるよというメモ。 using System.Runtime.InteropServices をする DllImport で必要な関数をインポートする(static extern をつける) https://docs.microsoft.com/ja-jp/dotnet/csharp/language-refer…

Unity でカメラを移動追従させるのに Position Constraint を使う

ユニティちゃん神楽で使われていたのを見て知ったのでメモ。 unity-chan.comPosition Constraint コンポーネントをカメラにアタッチした図 カメラに Position Constraint コンポーネントをアタッチして、Sources に追従対象のオブジェクトを追加すると、オブ…

Windows で Rust の SystemTime の interval のやつとかのメモ

Rust のシステム時刻についてメモ fn main() { let now = std::time::SystemTime::now(); println!("now: {:?}", now); // => now: SystemTime { intervals: 132966473691539291 } } Windows で std::time::SystemTime::now() すると、SystemTime インスタン…

2021 年に買ってよかったものは静音マウスです

https://www.buffalo.jp/product/detail/bsmbu100bk.html たまたま買った安いマウスだったけど、あのマウス特有の、カチッカチッ みたいなクリック音がしなくて、なかなか良い感じ。ただ代わりに テコ...テコ...という低い音は鳴る。無音ではない。マイクに拾われなく…

Unity で、オブジェクトが持つアニメーションクリップすべてを C# スクリプトで取得する

選択中のオブジェクトの Animator ウィンドウ内に置いたアニメーションクリップたち全部を C# スクリプト内で一気に取得したい。 void Start() { TryGetComponent<Animator>(out var anim); AnimationClip[] animClips = anim.runtimeAnimatorController.animationClip</animator>…

bvh を fbx に変換する。Blender の Python を使う。Blender の background モードで bat で動かす。

bvh ファイルを fbx に変換したくて、見よう見まねでやってみたメモ。 Windows 10 blender をインストールする blender コマンドが使えることを確認 入力の bvh ファイルたちがあるフォルダは bat ファイル内に記述 出力の fbx たち用のフォルダは python ス…

アニメーション GIF を再生しないようにした

動画なら自分で再生ボタンを押すことで制御できるけど、アニメーション GIF だと再生(と言っていいのかわからないが)が延々と続いていて、ページ内の情報のノイズになっているなと思っていた。ふとググってみたら、設定でアニメーション GIF を再生しない…