とあるライブラリを使おうとします。当然ライセンスを見て。。問題ないことを確認します。が、このライブラリというのは、依存パッケージが山のようにあって、それらも呼び出して、勝手にリンクしちゃうんですね。こういうときに、依存先のパッケージも、一個ずつ、ライセンスを確認するのは、骨が折れるし、時間の無駄です。自動化できるはずと思っていました。

 

【Rust】cargo-denyとは何なのか?使い方は? #Rust - Qiita

 

 

Rust でコンパイルエラー

このプログラムを、ビルドすると所有権がらみのエラーになります。
エラーメッセージにある通りに、一旦、ローカル変数を経由して、2行に分けるだけで、解決してしまいます。。汗

なぜ?

fn main() {
    let mut h = Hoge { hoge2 : 0 }; 
    h.hoge3();
}

struct Hoge {
    hoge2:usize,
}

impl Hoge {
    fn get_byte(&mut self)->u8 { 0
    }
    fn format_byte(&mut self , address:u8 ) ->String {
        let s = format!("{:02X}H",address);
        s
    }
    
    fn hoge3(&mut self) {
        println!( "{}",format!("OR    {}",self.format_byte(self.get_byte() )));  // A

        //let a = self.get_byte();                                          // B
        //println!( "{}",format!("OR    {}",self.format_byte( a )));        // B
    }
    
}

⣿
Standard Error

   Compiling playground v0.0.1 (/playground)
error[E0499]: cannot borrow `*self` as mutable more than once at a time
  --> src/main.rs:19:60
   |
19 |         println!( "{}",format!("OR    {}",self.format_byte(self.get_byte() )));  // A
   |                                           -----------------^^^^^^^^^^^^^^^--
   |                                           |    |           |
   |                                           |    |           second mutable borrow occurs here
   |                                           |    first borrow later used by call
   |                                           first mutable borrow occurs here
   |
help: try adding a local storing this argument...
  --> src/main.rs:19:60
   |
19 |         println!( "{}",format!("OR    {}",self.format_byte(self.get_byte() )));  // A
   |                                                            ^^^^^^^^^^^^^^^
help: ...and then using that local as the argument to this call
  --> src/main.rs:19:43
   |
19 |         println!( "{}",format!("OR    {}",self.format_byte(self.get_byte() )));  // A
   |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

For more information about this error, try `rustc --explain E0499`.
error: could not compile `playground` due to previous error

Standard Output

github がSSH鍵を交換したので、push できなくなった

GitHub.comがSSH鍵を交換、接続できなくなった場合には確認を | TECH+(テックプラス)

上記のことが起こり、git push などが実行できなくなってしまいました。

SSH鍵を作り直す必要性がありそうです。

 

基本的には、下記の通りにやるのですが、ed25519 というやつの作り方を説明してくれています。(以前はRSAだったようで、ググったときに、古いページによっては、RSAの説明がなされています。)どっちでも動くと思うのですが、githubが推奨している方法でやる方がいいと思います。

 

新しい SSH キーを生成して ssh-agent に追加する - GitHub Docs

GitHub アカウントへの新しい SSH キーの追加 - GitHub Docs

 

 

調べてみたら、下記のページを見つけました。今のところ、最強らしいです。

SSH認証に最強の「Ed25519鍵」を使おう

https://linuxfan.info/ssh-ed25519

 

 

ちなみに、github.com に、公開キーを登録するときに、

 を、Authentication Key のままにする必要があるようです。なぜか、Sining Key にしていて、うまくいきませんでした。

 

 

パスフレーズを毎回聞かれるのが辛い場合は、下記のようにするといいらしい。。

GitでSSHのパスフレーズ入力を省略する方法 - Qiita

WebAssembly で動作する FM 音源ライブラリー libymfm.wasm |

新しいFM音源エミュレータだそうです。(元々、MAMEのやつらしい)

iPhoneSafariでも動いていますね。。サンプル曲として、パッヘルベル のカノンが聞けます。。

 

でも、WebAssemblyの使い方はすぐには分かりません。。。勉強しないと。。ymfm 自体はC++で書かれていますが、このライブラリは、Rustがたくさん使われているようです。

WebAssemblyの利点としては、いちいち移植しなくても、いろんな環境で動くことでしょうか。。

 

もとになっている、このFM音源ライブラリのいいところは、ライセンスが、3条項BSDで、オープンソースなことと、緩いことらしいです。

 

WebAssembly で動作する FM 音源ライブラリー libymfm.wasm | hiromasa.another :o)