ソモサン

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

Programming

オブジェクト指向入門した(つもり)

ほんまにたつんかーいしかし流し読みでもツラカッタ pic.twitter.com/eXVlp5QddN— rohki (@r_ohki) 2020年5月16日 モチベーション 買った時は オブジェクト指向 #とは を源流を知りたくてかった、はずでした。 実際に届いたら厚さにビビったり、仕事でコード…

rusoto が async/.await 対応したのをきっかけにさわってみた雑感

タイムラインに ↓ が流れてきたのでこれはやらねば async/.await 対応 してみての雑感です。 rusoto 0.43.0-beta.1 is available now with async/.await support, please help test! here's a blog post about the near-term future of rusoto https://t.co/…

Rust.tokyo に参加した

rust.tokyo 遅ればせながら感想を。*1 まずは、スタッフや登壇者のみなさん、本当にありがとうございました。 セッションや Networking Time で非常によい刺激を受けられました。 セッション一覧で Servo や TiKV by PingCAP が見られたので、努めてそちらを…

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…

OpenCensus meetup vol.1 に参加してきました!! #opencensusjp

参加してきました https://opencensus.connpass.com/event/123885/ いやー面白かった。 自分が気になって見積もりに時間かけてるところがやっぱりネックになっていて、みんな気にしてるという同じ認識を持てたのもよかったです。 京都からきてよかった。 資…

(追記あり) 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/…

PC 新調した

A485 Thinkpad(OS: Linux Mint) ひさしぶりの Linux 環境である。 Wi-Fi につまったり、日本語入力の設定につまったりしたけども、まぁ動きました。この記事も新しい端末から書いてます。 やったこと Wi-Fi ドライバが認識されなかったので、ドライバを追加…

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

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

builderscon.io 2018 に行ってきた #builderscon

はじめに builderscon.io いやー、最高でした! rohki.hatenablog.com rohki.hatenablog.com rohki.hatenablog.com 2016年からなんだかんだ 3 年連続参加してました。 以下で特に気になったところの書きます。 IoT の闇 / id:kazuph1986 さん やばいしか言え…

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 サブコ…

OpenCensus について調べて試した

OpenCensus Google 発案の分散トレース/メトリクス収集の仕様および実装、のはず。 opentracing.io とは似て非なるもの。 分散トレーシングについての仕様がいくつかあるようなのだけれども、部分的なものや似たようなものがあるので、それを整理して一括り…

OpenAPI Generator で Gatling Client を生成してみた

OpenAPI Generator 3.0.0 リリース!! やったぜ。2.0 はとか野暮なことはなしです。*1 ということでリリースノートを見ていると、New Generators ところに Gatling の文字があるではないですか。 試すしかない、ってことでやってみました。 やってみた コマ…

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 より合致するものを…

Elasticsearch のクエリを知るのに elastic4s がよかった

Elasticsearch はややこしい ややこしいというか難しいというか、面倒くさいというか… で考えたところ、そも JSON を組み立てるのがそこそこ以上にしんどいんですよね。末尾の , とか。 Kibana も補完はあるのですが、そのあたりが面倒くさくて、なんか学ぶ…

Scala で Array 等を制限に合わせて分割する

短く grouped(size) を使いましょう 背景 Scala で AWS Kinesis へ PutRecords しようとしたときに、上限に引っ掛かりました。 で今回抵触した上限というのが、PutRecords 1 回あたりに含められるレコード数で、500 までとのこと。*1 なので 500 毎に分割し…

Prometheus + Grafana + Elasticsearch + Kibana を Docker でいじり中

prometheus.io いじってます。 進捗 docker-compose.yml はこんな感じ version: '3' services: prometheus: image: prom/prometheus container_name: prometheus volumes: - .\prometheus.yml:/var/app/prometheus/prometheus.yml command: - '--config.file…

elastic4s の json ライブラリ切り替えの実装にちょっと感動してる話

いつかの続き GitHub - sksamuel/elastic4s: Elasticsearch Scala Client - Non Blocking, Type Safe, HTTP, REST API, TCP リポジトリは上記。 elastic4s/package.scala at master · sksamuel/elastic4s · GitHub で、件のコードがこの辺り。ひっじょうに薄…

Kinesis Firehose のデータ変換 Lambda を Golang で作って計測してみた

概要 前回 やるといってたやつです。 AWS Lambda が Golang を公式サポートしたので、これまでやってきたのと同じような Lambda を作って計測してみました。 先に結果だけ書くと、 Rust: 55.8 k レコードを 23.4 秒で処理 => 1 秒あたり約 2384.6 レコードを…

CodeStar で AWS Lambda + Golang の雛形をサクッと作成してみた

前回 Golang サポートしたらやってみるといってたので、まずは雛形作成と調査だけ。Golang しっかり書いたことないですし。 CodeStar で雛形作成 AWS Lambda Supports Go をよむと CodeStar に対応しているぜー とかいてあったので、そちらで作りました。 gi…

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

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

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

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

Q. 2017/12/9 の AWS Lambda の OpenSSL のバージョンは?

import ssl def lambda_handler(event, context): return ssl.OPENSSL_VERSION チェック! 結果: "OpenSSL 1.0.0-fips 29 Mar 2010" おし、めんどくさくなってきた。 情報元: OpenSSL 1.0.2 Shared Library missing · Issue #855 · Miserlou/Zappa · GitHub

AWS Lambda の Traffic Shifting Using Aliases で無理やり Chaos Engineering

できんじゃねと思ったらできました。無理やり。 この間発表された AWS Lambda の更新で、エイリアスに対して割合で別バージョンを割り振ることができるようになりました。 ユースケースとしては Canary や Blue/Green が上がってたんですが、Chaos もいけん…

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…

Swagger を使って ChatWork といろんなサービスをつなげてる (条件付き)

ChatWork とほかのサービスを連携させようとする場合、選択肢は Zapier か自前実装かと思ってます。 で、そこでタイトルにある第3の選択。Swagger があればどうにかなる。MS Flow のカスタムコネクタで。

Grafana で AWS の見える化がすぐできた

いやー、すごい。 わかったらすぐできました。 例として AWS の使用料を見える化します。 まず、AWS 側で計測をはじめるため、請求ダッシュボード -> 設定 -> 請求アラートを受け取る にチェックをつけます。 で、Grafana を公式サービスおひとり様用で作成…