20170117日記
20170117
## twitchの配信環境セットアップ
- 作業中の画面を垂れ流すことで強引に集中力を獲得したい
- Stream InformationのNot Playing欄に今プレイしてるゲーム/作業を入れるとPlayingになるっぽい
- Programmingとか入れると、自動でPlayingがCreativeになる
- 入力したprogrammingとかはタイトルに入る
Rust開発環境作る
### Rustインストール * rustはrustup.rsで入れるのが良いらしく、brewで入れたから標準ライブラリが入ってないらしい * brew uninstallしてrustup.rsで入れ直す
$ brew uninstall rust
$ curl https://sh.rustup.rs -sSf | sh
$ vim localhost.yml # ansibleのplaybookからrust消す
- やったけどrustcが見えない
- PATHに何も追加されてない気がする
- なぜか
curl https://sh.rustup.rs -sSf | less
するとpecoが起動する。。。
$ which less
less () {
peco | while read LINE
do
$@ $LINE
done
}
- 記憶にない謎のlessを作り出していた
- とりあえずmoreを使ってお茶を濁す
- 思考停止してもっかい動かすと何かよくわからない力でrustcとcargoが動いた
IntellijでRust開発環境作る
- IntellijにRust Pluginがあるらしいのでやっていく
- brewで入れてた時は以下のような警告が出ていた
No standard library sources found, some code insight will not work
- rustup.rsで入れ直すと代わりに以下のエラー
invalid toolchain /usr/local/bin/cargo
- プロジェクト作り直したら消えた
- rustupで入れろっていうから入れたのに
Download via rustup
とかでてくる- Intellij経由でrustup実行すると
rustc src/main.rs
が実行できるようになった - 実行はIntellijからはできないのでターミナルでやる
$ rustc src/main.rs $ ./main Hello, world!
- Intellij経由でrustup実行すると
cargoの使い方調べる
- Cargo.tomlで管理
- 「Tomの理解しやすい、極小な言語」らしい
cargo build
でビルド- 生成したバイナリは./target/debugに置かれる
cargo run
でビルド&実行を一度にできる- golangの
go run
と同じっぽい
- golangの
- 実行ファイル名はCargo.tomlの[package] -> nameで決めるっぽい
jsonを受け取って表示するだけのプログラム作ってみる
- 任意のjsonをパースできるライブラリ探す
- serde-rs/json
- あらかじめ型が決まってないといけないっぽい
- rustless/jsonway
- serializeのみ?
- rust-lang-nursery/rustc-serialize
- 今一番アツいらしい
- nacika-ins/json_flex
- JSON.parseみたいな感じでとってこれるっぽい
- 任意のjsonを受け取れるようにしたい場合はjsonFlexしかなさそう
- serde-rs/json
- cargoに依存を追加するのどうやるのか
- cargo installでできる気がする
cargo install json_flex
とかやると以下のエラーerror: specified package has no binaries
- 普通にCargo.tomlに依存かいてbuildすれば良いのかな
- Cargo.tomlに以下を追加
toml [dependencies] json_flex = "0.3.2"
- json_flexのサンプル動かすとエラー
```rust extern crate json_flex; #[warn(unused_imports)] use json_flex; use json_flex::{JFObject, Unwrap};
fn main() { let array = json_flex::decode(r#”[1,2,3,4]”#.to_owned()); println!(“”, array); println!(“”, array.to_json());
let array = json_flex::decode(r#"["1","2","3","4"]"#.to_owned()); println!("{:?}", array[0].into_string()); println!("{:?}", array.to_json()); } ```
- extern crateでimportしてるのにuse json_flexでもう一回importするのやめろって言われている気がする
extern crate
とuse
の意味調べないとダメそう
TODO
- 配信する前にmacの解像度変えておく
extern crate
とuse
の意味調べる