会社で借りて読んだ。 普段Ruby使ってるから知っておこうと思って。
主にコンパイラとかVMあたりの話。 低レイヤー領域なので、普段のコード書くのにはすぐに役立つことは少なそうだけど、 あまり聞いたことのない話が多くて面白い。
1-3章は字句解析とかそのへんだけど、 ちょっとこの本だけでは分かりにくいかも。 詳しく知りたいならあらかじめ他の本で勉強したほうがいいかも。
amazonのリンク貼ってるけどクリックして購入しても僕の懐には1円も入りませんよ・・
let x: int = 5; println!("x: {}", x); // 5
letで変数に即値を代入してみる。 変数の後ろに型を指定して代入するパターン。
let x = 5i; println!("x: {}", x); // 5
値を5iみたいにすると変数側は型を省略してもintと解釈される。
let x = 5i; x = 10i; // compile error
letで宣言した変数には再代入できない。 letでの宣言した変数はimmutable。
let x = 5i; println!("x: {}", x); // 5 let x = 10i; println!("x: {}", x); // 10
でも再度宣言するとコンパイル通ってしまった(これってどうなんだろ)。
let mut x = 5i; x = 10i;
let mutで宣言された値はmutable(変更可能)になる。
0.12時点のもの
・関数はfnで定義する。 ・関数名の後ろの『{』から『}』までが関数の本体。 ・C言語などと同じく実行時はmain関数から実行される。
fn main() { println!("hello?"); }
・関数名の後ろの()はArity(引数の個数)が0でも省略できない。
// これはエラー fn main { println!("hello?"); }
・各行はセミコロン『;』で終わるが関数の最後の行はセミコロンを省略できる。
// 最後のセミコロンは省略できる fn main() { println!("hello?") }
// 単行コメント /* 複数行コメント */ fn main() { println!("hello?") ; }
fn main() { println!("☃") }
・UTF-8使える
・単行コメントは//
・複数行コメントは 『/』から『/』の間。
先日Rust始めたばかりですが、 Rustについての勉強会のRust Samurai 4に行ってきました。 (半年に1度くらい開催?)
Mozilla Japanさんにお邪魔するとのことなのでFirefox Tシャツ着て行きました。
全員が軽く。 C/C++erが多かった。
@Dubheadさんのセッション。
http://blog.rust-lang.org/2014/09/15/Rust-1.0.html について。
年内に1.0が出るっていう話。
・後方互換性が保たれるようになる ・GCとかのライブラリが標準から外れる
@saneyuki_sさんのセッション。
メモリと変数は1:1で対応していてメモリの所有者の変数は1人。 他の変数の値を読み書きするにはBorrowしないといけない。 とかそのへんのメモリの安全性の仕組みの話。
@chikoskiさんのセッション
クロージャー駆使したプログラム書こうとするとライフタイムの仕組みに苦しめられる。 関数合成とかカリー化とか部分適用とかないから関数型言語っていうより C++に関数型のエッセンスがふりかけられた言語(?) 1.0出るまでにクロージャの実装が変わるとのことなのでそれに期待。
@rail44さんのセッション。
Fluentdで使うようにMessagePackのシリアライザ実装したとか。 本番環境で動かそうとするとライブラリのバージョンが古くて動かなかった。
なぜかRustの勉強会なのに放出されるgolangグッズ達 !? gopher Tシャツいただきました。 ありがとうございます!
Rustと言うプログラミング言語をはじめました。
Mozzilaが開発している言語で、文法はC++ライク、 レイヤーとしてもC++くらいの感じ。
比較的低レイヤーな言語でありながら、 関数型言語からの機能を色々導入していたり、 並列実行に関する機能に関してはErlangを思い起こしたりする、 ってのが勝手な第一印象。
新しい言語で、言語仕様が結構変わったりするので、 実用目的に使うにはまだまだ怖いかな。
・型クラス
・パターンマッチ
・代数的データ構造
・型推論
バージョンとか考えずにインストールするだけなら
curl -s https://static.rust-lang.org/rustup.sh | sudo sh
で一発。 rustc -v
で、この記事書いている時点ではバージョン0.12.0-nightlyがインストールされた。
Ubuntu 14.04 でデータバックアップ用HDDを増設してバックアップまで行った記録です。
当たり前ですね。 これがなければ始まりません。
パーティション管理ソフトのgpartedをインストールします。
sudo apt-get install gparted
メニューの デバイス -> 新規パーティションの作成 を選択。
画面下部のリストの未割り当てを選択して全領域を
・基本パーティション
に。
マウントしたい場所にディレクトリ作成します。
sudo mkdir /mnt/backup
Launcerの『コンピューターとオンラインリソースを検索』を起動。 Diskと入力すると検索される『ディスク』を起動。 表示されるデバイスから設定したいHDDを選択。 歯車2つのアイコンで設定。
自動マウントオプションはオフにします。 デフォルトではマウントオプションは /mnt/%長ったらしいUUID% になっているので自分で変えます(/mnt/backupみたいに)。 識別名はUUID=... となっているのを選択します。
OKを押すと/etc/fstabに反映されます。
sudo gedit /etc/fstab で編集。
UUID=xxxxxxxxxxx /mnt/backup auto nosuid,nodev,nofail 0 0 みたいなのを追記して保存。
sudo mount -a
でマウントされるのを確認。
バックアップの方法は色々ありますが今回はrsyncにしました。
参考: UNIXの部屋 コマンド検索:rsync (*BSD/Linux)
/home以下をrsyncバックアップするなら
sudo rsync -av --delete /home/ /mnt/backup
手動で2回実行して2度目はすぐ終わることを確認します。
定期的に実行するならこのあとcronなどお好みで。
MacEmacs JP プロジェクト日本語トップページ - SourceForge.JP
リンク先から Emacs-24.3-with-inline-patch-R1 MacOSX みたいな名前のを選んでダウンロードしてインストール
yum install emacs
はい。コマンド一発です。 でもこれで入れるとバージョンがちょっと古いのです・・
この記事書いている時点だと最新版が24.3に対してインストールされるのは23.1.1
最新版が欲しい場合はソースからインストールします。 既にemacsが入っている場合は先に削除しておきます。
yum remove emacs
ビルドに必要なものをあらかじめ入れておきます。
yum install wget gcc make ncurses-devel
↓からソースをダウンロードしてインストールします http://core.ring.gr.jp/pub/GNU/emacs/
wget http://core.ring.gr.jp/pub/GNU/emacs/emacs-24.3.tar.gz tar zxvf emacs-24.3.tar.gz cd emacs-24.3 ./configure --without-x --with-x-toolkit=no --with-xpm=no --with-jpeg=no --with-gif=no --with-tiff=no --with-png=no --without-selinux make make install