docker run -v `pwd`:/home/jovyan/work -p 18888:8888 --name jpserver jupyter/scipy-notebookこの後にブラウザから localhost:18888 にアクセスすると、接続される。
Host のカレントディレクトリを docker container 内の (デフォルトの) ワーキングディレクトリにマウントしているので、 作成したノートブックはカレントに保存される。嬉しいね o(^▽^)o
| use std::fs::File; | |
| // Err を扱いやすくする anyhow と thiserror | |
| use anyhow::{Context, Result}; | |
| use thiserror::Error; | |
| /// `thiserror::Error` を derive して enum のそれぞれの要素に対して `#[error("message")]` とすることで | |
| /// `impl fmt::Display for ApiError` に変わってエラーメッセージの振る舞いを追加することができる | |
| #[derive(Debug, Error)] | |
| enum ApiError { |
| fn add(a: i32, b: i32) -> i32 { | |
| a + b | |
| } | |
| #[derive(Debug, PartialEq, Eq)] | |
| struct Book { | |
| name: String | |
| } | |
| /// `cfg()` マクロ ... 環境に応じてコンパイルを切り替える属性風マクロ |
| fn main() { | |
| let input: Result<&str, &str> = Ok("test"); | |
| let input = input.unwrap(); // 回復可能なエラーも回復不可能なエラーにしてしまうので注意 | |
| println!("{:?}", input); | |
| // let hoge: Option<&str> = Some("hoge"); | |
| let hoge: Option<&str> = None; | |
| let hoge = hoge.expect("error!"); // エラー時に定めた文字列を出力してから panic する | |
| println!("{:?}", hoge) |
| /// Rust では回復可能なエラーを Result 型で扱う | |
| /// ``` | |
| /// enum Result<T, E> { | |
| /// Ok<T>, | |
| /// Err<E>, | |
| /// } | |
| /// ``` | |
| /// https://doc.rust-jp.rs/rust-by-example-ja/error/result.html | |
| /// エラー発生時に即時 return したいとき、Rust では | |
| /// Err<E> であるとき即時 return する糖衣構文 `?` が用意されている |
| # convert | |
| iconv -f sjis -t utf8 {targetfile-path} | |
| # save | |
| iconv -f sjis -t utf8 {targetfile-path} > tmp.txt | |
| mv tmp.txt {targetfile-path} |
| #!/bin/bash | |
| # please set $VM_NAME | |
| virt-install \ | |
| --name ${VM_NAME} \ | |
| --ram 8192 \ | |
| --disk path=/var/kvm/images/${VM_NAME}.img,size=100 \ | |
| --vcpus 4 \ | |
| --os-type linux \ | |
| --os-variant ubuntu18.04 \ |
| # This file is generated from information provided by | |
| # the datasource. Changes to it will not persist across an instance. | |
| # To disable cloud-init's network configuration capabilities, write a file | |
| # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: | |
| # network: {config: disabled} | |
| network: | |
| ethernets: | |
| enp0s25: | |
| dhcp4: false | |
| bridges: |
| #!/bin/bash | |
| guestmount -d ${VM_NAME} -i /mnt | |
| ln -s /mnt/lib/systemd/system/[email protected] /mnt/etc/systemd/system/getty.target.wants/[email protected] | |
| umount /mnt |
| #!/bin/bash | |
| virt-install \ | |
| --name ${VM_NAME} \ | |
| --ram 4096 \ | |
| --disk path=/var/kvm/images/${VM_NAME}.img,size=30 \ | |
| --vcpus 2 \ | |
| --os-type linux \ | |
| --os-variant ubuntu18.04 \ | |
| --network bridge=br0 \ |