Apolloをダウンロード

Self-Driving Fundamentals: Featuring Apollo | Udacityでは、Apolloという自動運転ソフトウェアをお題に話が進んでいくようです。 とりあえず、ソースコードを入手します。

$ git clone https://github.com/ApolloAuto/apollo.git

Ubuntuが推奨環境のようです。 主に使っている環境がMacOSなので、ビルドできるか怪しいです。 一応、ビルドにトライしてみます。

自動運転の学習始めます

自動運転の技術を身につけたく、Self-Driving Fundamentals: Featuring Apollo | Udacityをやってみます。

過去に、Self Driving Car Engineer | Udacityという自動運転のコースを受講し、最後までやれてはいるのですが、間があいたのとプロジェクトをただただ取り組んだだけで、手の内化が足りていないと感じているので、理屈と実践をがっちりやっていきたいところ。

eu.udacity.com

eu.udacity.com

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

CodeRetreat @ 名古屋ギークバーに参加して来ました。

Coderetreat は、プログラマのための練習、学習のためのイベントです。同じ課題をペアプロで実装しながら、プログラミング、設計、テストなどの技術を学びます。

45分1セッションのペアプログラミングを5-6セットくらい行います。

との事で、日中をプログラミング漬けしてきました。同じ課題を実装かつ、各セッションで1から書いて行くのですが、ペアの相手やファシリテーターから提案されるチャレンジの影響で飽きることなく課題に取り組めました。

テストコードが無い状態ではありますが、一応課題を実装できたのが良かったです。

無料で参加できたのですが、スポンサーさまのお蔭で美味しいご飯をいただけるのも嬉しかったです。お腹いっぱいになりました。(中には昼間からビールを飲んでいる方も!)

次は11月に開催予定だそうです。日程が合えば参加しようと思っています。 スポンサーの方、参加した方ありがとうございました!

イベントページ

スポンサーさま

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

BorrowAsRefについて。 サンプルコードを動かしてみた。

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 mut slice = s.as_ref();
    println!("{}", slice);
}

fn main() {
    let mut i = 5;
    foo(&i);
    foo(&mut i);

    let s = "Hello".to_string();
    bar(s);
}
$ cargo run
    Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/5_10_borrow_and_asref`
a is borrowed: 5
a is borrowed: 5
Hello

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);
    println!("{}", x.get());

    let x = RefCell::new(vec![1,2,3,4]);
    {
        println!("{:?}", *x.borrow())
    }

    {
        let mut my_ref = x.borrow_mut();
        my_ref.push(1);
    }
}
$ cargo run
    Finished debug [unoptimized + debuginfo] target(s) in 0.0 secs
     Running `target/debug/5_8_choosing_your_guarantees`
4
[1, 2, 3, 4]