Rust で引数処理

Rust でコマンドライン引数を処理してみる。 std::env の動きを探ってみる。 use std::env; fn main() { // for を使ってみる for arg in env::args() { println!("{}", arg); } // vec にしてみる let args: Vec<String> = env::args().collect(); println!("count: {}", args.len()); for i in 0..args.len() { println!("args[{}] = {}", i, args[i]); } // iterator を使ってみる。3文字より長い文字列の引数をカウントする let n = env::args().filter(|arg| arg.len() > 3).count(); println!("match: {:?}", n); } 以下が実行結果。 $ cargo run aaaaa bbb c dddd Compiling env_args v0.1.0 (file:///home/tk3/devel/g/dojo/rust/sample/env_args) Finished dev [unoptimized + debuginfo] target(s) in 1.

Read More

コマンド一発で WSL のファイルをエクスプローラーで開く

WSL の画像ファイルや PDF ファイルを GUI で確認したいとき、Windows のアプリケーションからコマンド一発で開けないかと思い、ファイルパスを変換する関数を書いた。 Windows のアプリケーションのコマンドに渡す前に、ファイルのパスを変換して渡してあげれば、一発になる。一応。 以下の関数を定義し function to_winpath() { wsl_path=`powershell.exe -Command 'echo ($env:LOCALAPPDATA + "\lxss")' | tr -d '\r'` abs_path=`readlink -f $1` internal_path=${abs_path//\//\\} echo "${wsl_path}${internal_path}" } 次のように、コマンドに渡してあげればいい。このコマンドではエクスプローラーで PDF ファイルを開いている。 $ explorer.exe `to_winpath sample.pdf` しかし、タイプが増えるので面倒。

Read More

Kotlin の REPL Kotlinc を使ってみる

環境 $ kotlin -version Kotlin version 1.2.10 (JRE 1.8.0_152-b16) $ java -version openjdk version "1.8.0_152" OpenJDK Runtime Environment (Zulu 8.25.0.1-linux64) (build 1.8.0_152-b16) OpenJDK 64-Bit Server VM (Zulu 8.25.0.1-linux64) (build 25.152-b16, mixed mode) それではさっそく使ってみる Java で書かれたコードをコンパイルして jar にまとめ、それを Kotlin から操作しています。 kotlinc は class ファイルを読み込むことはできないので、jar にしてから試しています。 $ cat Foo.java public class Foo { public static void main(String[] args) { System.out.println(new Foo().getGreeting()); } public String getGreeting() { return "Hello"; } } $ javac Foo.

Read More

Rust の migration ツールを探して(diesel_cli 編)

これはRust Advent Calendar 2017 16日目の記事です。 Rust でサーバーを動かしてみたく、探してみたところrustful を見つけたので、使ってみました。 API サーバーでデータベースを扱う上で良さそうなマイグレーションツールはないかと探してみたら、diesel を利用した diesel_cli を見つけたので紹介します。 diesel_cli は diesel を利用しており、同じ人たちが開発しているようです。現在(diesel 1.0.0-beta1)は PostgreSQL や MySQL、SQLite に対応しています。 以下の環境で動作確認をしています rustc 1.22.1 (05e2e1c41 2017-11-22) Ubuntu 16.04.3 LTS(Windows Subsystem for Linux) まずは diesel_cli をインストール cargo から diesel_cli インストールします。 次のコマンドを実行し、コマンドをインストールします。 $ cargo install diesel_cli この場合、PostgreSQL・MySQL・SQLite それぞれの開発パッケージが必要になります。PostgreSQL は libpq-dev , MySQL は libmysqlclient-dev, SQLite は libsqlite3-dev が必要になります。 もし、それらのどれかで十分なら、引数で必要なデータベースを指定することができます。 $ cargo install diesel_cli --no-default-features --features "mysql" diesel_cli を使う、プロジェクトを作成する diesel_cli は Cargo 配下のプロジェクトで実行します。そのため、cargo でプロジェクトを作成します。

Read More

Rust str Sample

Rustの練習で、文字列周りの動作を確認。 マニュアルがあるし、サンプルコードもあるので、その場の理解は難しくない。

Read More