ソモサン

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

Programming

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 を公式サービスおひとり様用で作成…

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

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

なんとなく思いついた Scala でのライブラリ切り替え

今日オブジェクトのシリアライズ形式を切り替える方法考えなきゃで、ぼんやりと思いついた方法。 trait DataFormat { type Format type Formatter[T] def ser[Data: Formatter](input: Data): Format def de[Data: Formatter](input: Format): Data } trait …

Scala spray-json の書き分けパターンのメモ

なんか、あとどれだけ json シリアライザを書けばいいんだ…ってぐらい書いて知見がまとまったのでメモ。 といっても大体 本家のReadme 書いてあります。 サンプルコードは割と雰囲気で書いているのでコンパイルはすぐできないかも。