ソモサン

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

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

いやー、すごい。
わかったらすぐできました。

例として AWS の使用料を見える化します。
まず、AWS 側で計測をはじめるため、請求ダッシュボード -> 設定 -> 請求アラートを受け取る にチェックをつけます。

f:id:rohki:20171109215247p:plain

で、Grafana を公式サービスおひとり様用で作成します。

grafana.com

Grafana のデータソースまで遷移して、プルダウンメニューから Cloud Watch を選びます。

f:id:rohki:20171109215854p:plain

一度、AWS にもどり IAM で以下のポリシーを付けた測定用のユーザーを作成、アクセスキー ID とシークレットキーを発行します。

  • CloudWatchLogsReadOnlyAccess
  • CloudWatchReadOnlyAccess

で、Grafana に戻り作成したアカウント情報を入れて、保存します。 ここでエラーが出る場合はポリシーの確認とかをするとよいかもです。

で、ダッシュボードのインポートで 139 を入れて、先ほど追加したデータソースを選び、ロードすると!

f:id:rohki:20171111090333p:plain

でたー!!

いやー、共有はつよいですねー。 先ほどの 139 も Grafana の公式サイトで公開されているやつです。

grafana.com

Grafana はローカル環境の性能計測で 3.x とかを使っていたので、ここまで進んでるとは思ってなかったです。いやすごい。
使用料だけでなく Lambda やら EC2 やら ElastiCache やらまで…
インフラはさっぱりなので、知見の塊っす。ありがたや。

誰か3か月前の僕にこの情報を届いてほしい…

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

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

そして、ある要素をキーにまとめていくんですが、その配下が複数になりえる設定でした。というか、大体複数でした。
ということは、Vector から Map にしつつその中に Vector があって、ということになります。

で、こんな感じ。

use std::collections::HashMap;

#[derive(Debug)]
struct Hoge {
    a: String,
    b: u32,
}

fn main() {
    let xs = vec![
        Hoge {a: "a".to_owned(), b: 1},
        Hoge {a: "aaa".to_owned(), b: 2},
        Hoge {a: "a".to_owned(), b: 3},
        Hoge {a: "aaa".to_owned(), b: 4},
        Hoge {a: "aa".to_owned(), b: 5},
    ];

    let h = xs.into_iter().fold(HashMap::<String, Vec<u32>>::new(), |mut acc, x| {
        acc.entry(x.a).or_insert(Vec::new()).push(x.b);
        acc 
    });

    println!("{:?}", h);
}

https://play.rust-lang.org/?gist=75d175041fcd5577b2c9ea0d7fb95594&version=stable

一番の発見は or_insert で、こいつのおかげで大分まとまりました。
mut とかの話、はいいや。どっかで誰かが書いてそうです。

*1:本質的な解決になってなかったので動かしてないですが…

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

今日オブジェクトのシリアライズ形式を切り替える方法考えなきゃで、ぼんやりと思いついた方法。

trait DataFormat {
  type Format
  type Formatter[T]

  def ser[Data: Formatter](input: Data): Format
  def de[Data: Formatter](input: Format): Data
}

trait Spray extends DataFormat {
  import spray.json._
  override type Format = JsValue
  override type Formatter[T] = JsonFormat[T]

  override def ser[Data: Formatter](input: Data): Format = input.toJson
  override def de[Data: Formatter](input: Format): Data = input.convertTo[Data]
}

で、コンパイルしたところ

Warning:(40, 8) higher-kinded type should be enabled
by making the implicit value scala.language.higherKinds visible.
This can be achieved by adding the import clause 'import scala.language.higherKinds'
or by setting the compiler option -language:higherKinds.
See the Scala docs for value scala.language.higherKinds for a discussion
why the feature should be explicitly enabled.
  type Formatter[T]

そーですか、警告スカ…
こんなコードばっか書いてるから IDE が不調になったりするのだ。意味は調べるけど。

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

なんか、あとどれだけ jsonリアライザを書けばいいんだ…ってぐらい書いて知見がまとまったのでメモ。
といっても大体 本家のReadme 書いてあります。

サンプルコードは割と雰囲気で書いているのでコンパイルはすぐできないかも。

続きを読む

MX ERGO 雑感

土曜日にヨドバシカメラで買って今日会社にもっていっての感想

www.logicool.co.jp

角度

買った一番の理由です。普通のマウスで角度が付いたやつがあるので、トラックボールもあるかなーと探してみてもなかったんですよね。前。
んで、今回でてきたので飛びつきました。
一度付けた後で真っ平にすると違和感がでてきます。ん、つらい。的な。

一方で、手の重さの預けどころがまだちょっとわかってない感じです。かぶせるのに角度が付いていて、そこに手を預けたらいいのかを探り中。 探っていたせいか、前腕の筋に違和感がちょっとあったりもしました。
1日目ですしそのうちわかるでしょう。

ボール

接続せずに転がして引っかかてるかなーと思ったんですが、操作したらとくに遅延もないので大丈夫そう。

大きさ

結構大きいです。かぶせるという印象がかなり強め。
この大きさはどうなんでしょう。野郎で手が大きめの僕にはよかったですけど。

Bluetooth 接続

思ったより良かったです。
というのも、前に買った Bamboo タッチパッドBluetooth 接続でこの機種がいまいちだったんです。一番困ったのがスリープからの復帰で、10秒弱はかかっていた印象。
Bluetooth のせいかなーとおもっていたところ、それが今回1秒ぐらいで復帰してくれました。この辺りはバッテリーのもちとの兼ね合いはあるかもです。
この辺りはあれですかね。Logicool がすごいのか。

あとはレシーバーがなくなるのもありがたいです。ほら Type-C って、あるじゃあないですか…

表面の感触

表面がゴムぽくてでざらっとしてて、違和感というよりも不快感がちょっと先に出ました。慣れましたけども。

お値段

チョットタカイ

その他

Logicool Options を入れるまでは戻る進むのボタンが効かなかったです。入れればすぐに行けました。

builderscon tokyo 2017 で知らないものを見てきた #builderscon

短く

やー、やっぱり面白い。
2年連続で参加して良かった。

f:id:rohki:20170805224338j:plain

続きを読む

builderscon tokyo 2017 でツライだけではない話を聞いた #builderscon

大人のビルコンめっちゃよかったです!
口外無用なので何も書けないんですけどw

タイムテーブル

builderscon.io

概要のブログ

blog.builderscon.io

非常に泥臭く、人間臭く、でもツライだけで終わってない感じがよかったなぁ。
TL で流れてた某銀行の話は確かに同じように聞きたい!

明日に続く

スピーカーの方やスタッフの方に本当に感謝です。 ツライ記憶を掘り起こして発表いただいたりとか、JIT の椅子デプロイとか。

明日からの本編が楽しみ!

蛇足

個人スポンサーのしゃもじガチャの結果ですが

グローバル変数…!