実践Rustプログラミング入門
マクロの節を読んだ。
結構ボリュームがあった。
実行速度を上げるには実行時の関数呼び出しよりコンパイル時に展開したほうが良いのはわかる。
そこまで速度を気にしないといけないものを作る機会がないというのもあるけど、使いどころが今一つイメージできなかった。
他人の書いたコードを読み解く必要があるときに知っているとよい感じかなぁ。
Read morePOSTS
マクロの節を読んだ。
結構ボリュームがあった。
実行速度を上げるには実行時の関数呼び出しよりコンパイル時に展開したほうが良いのはわかる。
そこまで速度を気にしないといけないものを作る機会がないというのもあるけど、使いどころが今一つイメージできなかった。
他人の書いたコードを読み解く必要があるときに知っているとよい感じかなぁ。
Read moreバイナリの最適化などの章を読んだ。
この辺はまだ成熟していない印象。
組み込みの章を読んだ。
あまり直接関係なさそうだったのでさらっと。
開発ツールの章を読んだ。
Goとそう変わらない感じ?
GUIの章を読んだ。
ColumnとRowをコンテナに配置して、ってFlutterっぽい(昔のHTMLテーブルレイアウトっぽいともいう)感じで配置していくのはわかりやすいと思った。
ファイルを読んでバイト配列に入れるinclude_bytes!
マクロはほかでも使えそう。
Webサーバーを立てる章とWASMの章を読んだ。
これはRustに限ったことではないけれど、まだ若い言語ということもあって、Webフレームワークとかどれを選んだらよいか迷いそう。
あと、sambaだけではなく、NFSでどうなるかも確認したい。
NFSならWindowsサーバー用意しなくても良いから少しは簡単かな?
昨日はAWSでEC2使って試したけど、ローカルでもdocker使ってsambaサーバー立てたら同じことできたのではないか?
昨日のCパターンを実際にAWSで試してみた。Docker関係なかった。
Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
とMicrosoft Windows Server 2019 Base
のインスタンスをt2.micro
でそれぞれ作成$ sudo yum install cifs-utils
$ sudo mkdir /mnt/shared
$ sudo mount -t cifs //<WindowsのIP>/Users/shared /mnt/shared -o user=Administrator
$ ls /mnt/shared/
$ sudo mkdir /mnt/shared/test
$ sudo vi /mnt/shared/test/test.txt
$ sudo su
# rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz
# exit
$ export PATH=$PATH:/usr/local/go/bin
$ go version
go version go1.18 linux/amd64
$ sudo yum install git
$ git clone https://github.com/umemak/open_file_delete_test.git
$ cd open_file_delete_test
$ sudo /usr/local/go/bin/go run main.go /mnt/shared/test/test.txt
$ sudo lsof | grep test.txt
main 3916 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt
main 3916 3917 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt
main 3916 3918 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt
main 3916 3919 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt
$ ls -l /mnt/shared/test/
total 1
-rwxr-xr-x 1 root root 7 Mar 31 04:51 test.txt
$ sudo rm /mnt/shared/test/test.txt
$ sudo lsof | grep test.txt
main 3916 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt (deleted)
main 3916 3917 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt (deleted)
main 3916 3918 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt (deleted)
main 3916 3919 root 3r REG 0,40 7 1688849860265148 /mnt/shared/test/test.txt (deleted)
$ ls -l /mnt/shared/test/
total 1
-rwxr-xr-x 0 root root 7 Mar 31 04:51 test.txt
$ cat /mnt/shared/test/test.txt
cat: /mnt/shared/test/test.txt: No such file or directory
$ ls -l /mnt/shared/test/
total 0
ホストがマウントしたディレクトリをマウントしたコンテナでプロセス1で開いてクローズせずにプロセス2で削除したあとその他のプロセスからファイルはどう見えるか。
A. ファイルは削除されディレクトリにもリストされない
B. ファイルは削除できない
C. ファイルは削除されアクセスできないがディレクトリにリストされたまま
プロセス1がつかんだままなので削除できないかと思いきや、削除できてしまう。
Read more