Apolloのビルド 4

昨日の続き。 $ bash apollo.sh build_cpu --local_resources 2048,1.0,1.0 でビルドしていたのですが、以下のようなエラーで終了。 System check passed. Build continue ... [WARNING] System memory [1.95G] is lower than minimum required memory size …

Apolloのビルド 3

昨日の続き。 以下コマンドを再度実施。 $ bash docker/scripts/dev_start.sh すると、以下メッセージ。 [\e[34m\e[1mINFO\e[0m] Start pulling docker image apolloauto/apollo:dev-x86_64-20181210_1500 ... Warning: failed to get default registry endp…

Apolloのビルド 2

昨日に続いて、Apolloのビルドにトライしていきます。 Git LFSインストール前は上手くいかなかった、以下コマンドを試す。 $ bash docker/scripts/dev_start.sh すると、以下メッセージが。 You need to install and run git-lfs when working with apollo. …

Apolloのビルド

ビルド方法のページがあったので、順に従って進めていきます。 dockerが必要となるみたいです。インストール済みか確認する。 $ docker --version Docker version 18.03.1-ce, build 9ee9f40 以前インストールした事があったよう。 続いて、以下コマンドを動…

Apolloをダウンロード

Self-Driving Fundamentals: Featuring Apollo | Udacityでは、Apolloという自動運転ソフトウェアをお題に話が進んでいくようです。 とりあえず、ソースコードを入手します。 $ git clone https://github.com/ApolloAuto/apollo.git Ubuntuが推奨環境のよう…

自動運転の学習始めます

自動運転の技術を身につけたく、Self-Driving Fundamentals: Featuring Apollo | Udacityをやってみます。 過去に、Self Driving Car Engineer | Udacityという自動運転のコースを受講し、最後までやれてはいるのですが、間があいたのとプロジェクトをただた…

CodeRetreat @ 名古屋ギークバーに参加

CodeRetreat @ 名古屋ギークバーに参加して来ました。 Coderetreat は、プログラマのための練習、学習のためのイベントです。同じ課題をペアプロで実装しながら、プログラミング、設計、テストなどの技術を学びます。 45分1セッションのペアプログラミングを…

Release Channels

https://doc.rust-lang.org/book/release-channels.html Rustは Nightly Beta Stable の3種類がある。 Betaは6週間間隔でバージョンが上がるプロセスが出来上がっているみたい。リリースマネジメント(?)が着実に行われている。

Borrow and AsRef

https://doc.rust-lang.org/book/borrow-and-asref.html BorrowとAsRefについて。 サンプルコードを動かしてみた。 use std::borrow::Borrow; use std::fmt::Display; fn foo<T: Borrow<i32> + Display>(a: T) { println!("a is borrowed: {}", a); } fn bar<T: AsRef<str>>(s: T) { let m</t:></t:>…

FFI

https://doc.rust-lang.org/book/ffi.html 他言語で記載されたライブラリをRustから使うための方法。ライブラリのパスをさくっと通せなかったので、動かしてみるのをあきらめた。

Choosing your Guarantees

https://doc.rust-lang.org/book/choosing-your-guarantees.html Guaranteesは保証という意味の単語らしい。 use std::cell::Cell; use std::cell::RefCell; fn main() { let x = Cell::new(1); let y = &x; let z = &x; x.set(2); y.set(3); z.set(4); prin…

Error Handling #10

https://doc.rust-lang.org/book/error-handling.html サンプルの'‘city-pop’‘を最後まで。 extern crate getopts; extern crate rustc_serialize; extern crate csv; use getopts::Options; use std::env; use std::fs::File; use std::path::Path; use std…

Error Handling #9

https://doc.rust-lang.org/book/error-handling.html 今日は、Error handling with a custom typeの手前まで。

Error Handling #8

https://doc.rust-lang.org/book/error-handling.html Reading from stdinの手前まででビルド通った。 extern crate getopts; extern crate rustc_serialize; extern crate csv; use getopts::Options; use std::env; use std::fs::File; use std::path::Pat…

BLUE GIANT 10巻

コンビニにおいてあるのをみかけて、つい立ち読みしちゃいました。 セリフがないからこそ感じられる躍動感があります。 電子書籍化するあたりでちゃんと購入しよう。 BLUE GIANT 10 (ビッグコミックススペシャル)作者: 石塚真一出版社/メーカー: 小学館発売…

Error Handling #7

https://doc.rust-lang.org/book/error-handling.html Errorというtraitが存在する。

Error Handling #6

https://doc.rust-lang.org/book/error-handling.html エラーの定義。 use std::io; use std::num; // We derive `Debug` because all types should probably derive `Debug`. // This gives us a reasonable human readable description of `CliError` valu…

Error Handling #5

https://doc.rust-lang.org/book/error-handling.html ファイル処理の異常処理の続き。エラーの時の処理が明示的になってきたように思う。 use std::fs::File; use std::io::Read; use std::path::Path; fn file_double<P: AsRef<Path>>(file_path: P) -> Result<i32, String> { let mut </i32,></p:>…

Error Handling #4

https://doc.rust-lang.org/book/error-handling.html use std::fs::File; use std::io::Read; use std::path::Path; fn file_double<P: AsRef<Path>>(file_path: P) -> i32 { let mut file = File::open(file_path).unwrap(); // error 1 let mut contents = String::new()</p:>…

Error Handling #3

https://doc.rust-lang.org/book/error-handling.html use std::env;すると、argv.nthで引数をとれる。 引数の有無でエラー判定するための方法。 use std::env; fn ok_or<T, E>(option: Option<T>, err: E) -> Result<T, E> { match option { Some(val) => Ok(val), None =></t,></t></t,>…

Error Handling #2

https://doc.rust-lang.org/book/error-handling.html 文字列を整数にパースするときのエラーハンドリング。 use std::num::ParseIntError; fn double_number(number_str: &str) -> Result<i32, ParseIntError> { number_str.parse::<i32>().map(|n| 2 * n) } fn main() { match doubl</i32></i32,>…

Error Handling

https://doc.rust-lang.org/book/error-handling.html とても長い。基本はpanic!マクロを使ってエラーを発生させるということらしい。

Concurrency #2

https://doc.rust-lang.org/book/concurrency.html 並行処理続き。channelについて。rxからtxにデータが渡るまで、tx側は処理を待つ。 use std::thread; use std::sync::mpsc; fn main() { let (tx, rx) = mpsc::channel(); for i in 0..10 { let tx = tx.cl…

Concurrency

https://doc.rust-lang.org/book/concurrency.html 並列処理について。 use std::sync::{Arc, Mutex}; use std::thread; use std::time::Duration; fn main() { let data = Arc::new(Mutex::new(vec![1, 2, 3])); for i in 0..3 { let data = data.clone(); …

Iterators

https://doc.rust-lang.org/book/iterators.html fn main() { let num = (1..) .filter(|&x| x % 2 == 0) .filter(|&x| x % 3 == 0) .take(5) .collect::<Vec<i32>>(); for n in num.iter() { println!("{}", n); } } $ cargo run Finished debug [unoptimized + debu</vec<i32>…

Documentation

https://doc.rust-lang.org/book/documentation.html ソースコードに特殊なコメントを記載しておくと、ツールでドキュメント生成出来る。Javaのjavadocや、Python等々サポートしている言語は多々ある有りますね。出自はクヌース先生の文芸的プログラミングで…

Conditional Compilation

https://doc.rust-lang.org/book/conditional-compilation.html #[cfg]にて色々設定できる。C言語でいう#if、#ifdefみたいなもののようです。

Testing

https://doc.rust-lang.org/book/testing.html テストの実施環境について。言語に標準でテストの仕組みが含んでいたり、ドキュメントに記載されている。これだけでも今どきの言語だという感じがします。 テストの実施方法はドキュメントを読んだ限りではシン…

The Stack and the Heap

https://doc.rust-lang.org/book/the-stack-and-the-heap.html スタックとヒープについて。 変数宣言でスタックが積み上がっていくなど、目新しいところはなさそう。

Unsafe

[https://doc.rust-lang.org/book/unsafe.html 危ない操作をどうしても行いたい時はunsafeを使う。unsafeを使わざるを得ない事は少ないようだ。