ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

Rust

AWS Kinesis ひたすら読みにいく k-iter の複数 shard 対応(と、Rust の Future/Stream/Tokio 話)

github.com AWS Kinesis Stream Subscriber USAGE: k-iter [FLAGS] [OPTIONS] --region <NAME> --stream-name <NAME> FLAGS: -h, --help Prints help information -V, --version Prints version information --verbose Enable verbose mode. OPTIONS: --data-format <TYPE> Set</type></name></name>…

Rust での Iterator 返し + from_fn + Self

自分が作りたいもののためにメモ。きっと忘れて見返す。 こんな書き方できるんですねー。 ちょっと前までコンパイルエラーで落ちてた記憶がうっすらとあります。 #[derive(Debug)] struct SpanIdentity { trace_id: String, span_id: String, } #[derive(Deb…

(追記あり) AWS Lambda が正式に Rust 対応したので KinesisFirehose にくっつけて性能計測した #rustlang #rust_jp

これは Rustその2 Advent Calendar 2018 の 2 日目の記事ということにしました。 結果(2018/12/3 更新) github.com ありがたい PR のおかげで更新できました! tatsuya6502 さんありがとうございます! 246k record を 57.6 秒で処理したので、4,270 record/…

Rust で書いた HTTP サーバーを Github 経由で Zeit へデプロイした

成果物 github.com でけたー。面白い。 Zeit zeit.co クラウドベンダーの模様。 CDN やら DNS やらがある。 今回はインスタンスを作るタイプ。 Docker でデプロイ zeit.co Docker image でデプロイできるすごいやつです。 僕にとっては、デプロイ先のサーバ…

Kinesis Stream の中身を追いかけて出力する k-iter に verbose mode を付けた

github.com 0.3.0 でございます。 呼び出し方と形式 --verbose を付ける。以上! k-iter --verbose -n sample-stream -r ap-northeast-1 形式 JSON で出してます。 既定ではデータを UTF8 の文字列としてだします。 {"ApproximateArrivalTimestamp":15337044…

Rust のお試しコードを実行する: cargo run --example

タイトル落ち その通り。自分メモです。 背景 新しい Web フレームワーク warp が出ました。 それで試してみよう、となった時に "この examples ってどう実行するんだろう" となった感じです。 方法 cargo run --example hello 先に書いた通り、cargo サブコ…

Rust の CLI ツールで引数の値が特定のものであれば別の引数を必須にしたい

短く crap.rs の requires_if/requires_ifs を使おう。 .arg( Arg::with_name("iterator-type") .short("t") .long("iterator-type") .possible_values(&IteratorType::variants()) .requires_ifs(&[ ("AT_SEQUENCE_NUMBER", "sequence-number"), ("AFTER_SE…

Rust でクロスプラットフォーム対応するときに便利だった Cargo Plugin: cross

これ github.com 使い方 cargo install cross cross build --target i686-unknown-linux-gnu 実際に Travis で動かしている k-iter/.travis.yml at master · ROki1988/k-iter とかを見るとよいかも。 発端 rohki.hatenablog.com 前回 AWS Kinesis Stream を…

CLI で AWS Kinesis Stream の中身をひたすら追ってくれる k-iter をつくってる

作ったもの github.com インストール方法 rustup.rs - The Rust toolchain installer rustup を設定したうえで、下記コマンドを実行。 cargo install --git https://github.com/ROki1988/k-iter.git もしくは Releases · ROki1988/k-iter より合致するものを…

Rust で Scala の continually ぽいもの

こんな感じ? extern crate rand; use rand::{Rng, thread_rng}; use std::usize; pub struct Iterate<A> { func: A } impl<B, A> Iterator for Iterate<A> where A: FnMut() -> B { type Item = B; #[inline] fn next(&mut self) -> Option<B> { Some((self.func)()) } #[in</b></a></b,></a>…

Kinesis Firehose のデータ変換を Rust でやってみて速度向上が見込めた話

概要 Rust コードを Lambda 上で動かせたーと喜んだんですが、活用どころあるんだろうかと考えてみて検証してみました。 結果として Python 比較で1秒当たりで 15 倍ほど多く処理できました。 以下でつらつらと書いていってます。

AWS Lambda 上で Rust のコードを実行しようとして結構頑張った話

短く OpenSSL はやはり鬼門 というわけでできたー。下が成果物。 github.com

Rust の ライブラリ Rusoto を使って AWS サービスにアクセスする

表題にあるとおり、Rust から AWS にアクセスするための SDK を大分前にメモしていたので試した、という話。 extern crate rusoto_core; extern crate rusoto_s3; use rusoto_s3::{S3, S3Client}; use rusoto_core::{DefaultCredentialsProvider, Region}; u…

Rust で Vector データを Map + Vector にいれる

どんな状況だったかというと、JSON で設定ファイルを書く必要があってそれが複数人にいじられるという感じで、マージで地獄を見たのでまずは TSV でどうにかしてみよう、となったときに書いたやつです。*1 ほんと JSON はマージしづらくてかなわん。 そして…

Rust で素朴に HTTP リクエストを投げる

以前、Windows でHTTP リクエストするために、1時間ほど格闘した rohki です。 ツラカッタ… で、格闘する原因となった HTTP ライブラリ hyper の OpenSSL への依存が v0.10 でなくなったとのこと。 Release v0.10.0 · hyperium/hyper Remove SSL feature (and ope…

Rust でネストが深くなったけど未解決

前に行った into_iter() は無事動きました。何だったんだ。 今はこんな感じです。 perf_client/pdh_wrapper.rs at master · ROki1988/perf_client · GitHub impl PdhController { pub fn new(path: Vec<PdhCounterPathElement>) -> Option<PdhController> { pdh_open_query() .map(|q| { let cs = p</pdhcontroller></pdhcounterpathelement>…

Rust + Windows でウィンドウタイトルとかとってみる

なにしてんねん 社会人生活4年目で、Windows に染まりきってしまいました・・・ ShellScript で GCC ビルドをしていたあの頃にはもう・・・ さて Rust をこのごろ触ってます。 で、Windows でも API がちょろっとあったので、試しにやってみました。 ROki1988/acti…

Rust のサンプルコードに違和感を憶えたところ

Hackathon の間に Rust をもくもくと勉強してました。 で、無意識に書いたコードとサンプルコードに差分があったので、 その辺を書いてきます。