空白空行を無視するrspec-match_fuzzyを作った

なんだかんだで必要になるので、空白空行を無視するrspecのmatcher、rspec-match_fuzzyを作った。 github.com 以下の例は空白空行を無視してマッチする。 it '...' do str1 = <<-EOS London Bridge Is Broken down, Dance over my Lady Lee. London Bridge I…

Ridgepole v0.6.4

業務でも使ってみて問題なさそうな感じなので v0.6.4 をリリースしました。 github.com 主な変更点は以下の通りです。 Add --use-external-script option Add --mysql-use-alter option Add --alter-extra option Add --dump-with-default-fk-name option Su…

miam 0.2.3.beta: カスタムManagedPolicyサポート

某カンファレンスの裏側で、ひっそりとIAM管理ツールmiamのv0.2.3.betaをリリースしました。 github.com 「対応しないと」と思いつつ対応できていなかったカスタムManagedPolicyをサポートしました。 managed_policy "my-policy", :path=>"/" do {"Version"=…

Hexにライブラリを登録してみた

Elixirの勉強の一環としてHexにライブラリを登録してみた。 banner | Hex github.com Ubuntuのsysvbannerをポートした小さいライブラリ。 iex(2)> IO.puts Banner.banner("hello") # # ###### # # #### # # # # # # # ###### ##### # # # # # # # # # # # # …

メールアドレスをマスクしてpostfixのログをfluentdに流す

前回の記事のfluent-plugin-filter-parse-postfixはデフォルトでメールアドレスをマスクするようにしている。 <source> @type tail path /var/log/maillog pos_file /var/log/td-agent/postfix-maillog.pos tag postfix.maillog format none </source> <filter postfix.maillog> @type grep regexp1 me</filter>…

postfixのログをfluentdに入れる a.k.a. ぅゎrubyっょぃ

Postfixのログの「status=...」の行をfluentdに流そうと思ったんですよ。 要件としては メアドはマスクしたい メアドからドメインとりたい statusは値と詳細に分けたい 大量にメールが流れるので早くしたい それで何も考えずにCの拡張ライブラリを作って、そ…

ridgepole+alter .. , lock=none

Ridgepole v0.6.4で、ALTER文にLOCK=NONEとか付けられるようにしました。 $ ridgepole -a -c '{adapter: mysql2, database: employees}' --alter-extra="LOCK=NONE" --dry-run Apply `Schemafile` (dry-run) add_column("dept_manager", "to_date2", :date, …

ridgepole+pt-osc

Ridgepoleに--external-scriptというオプションを付けました。 更新SQLの実行を外部スクリプトで行うオプションです。 これで、一応pt-oscを使って、DDLを実行できるようにはなりました。あとは、MySQLのALTER文で末尾にLOCK=NONEを付けるとか。 ただ、MySQL…

CloudWatch Logsを見るやつ作った

LogsFlowというCloudWtach LogsのビューアWebアプリ作りました。 github.com 検索とかは全然なくて、だた見れるだけ。 URLが/groups/my-group/streams/my-streamsのようにREST的なので、適当なツールからぱっとログを見るのにはいいかも。 あと、/groups/my-…

Barkdog v0.1.3

DatadogのアラートDSL管理ツール Barkdog v0.1.3をリリースしました。 github.com Libratoで監視まわりを全部まかなおうとしてたとき、アラート管理にはテンプレート必須だなー、と思ったのでつけました。 以下のように、いろんな箇所でテンプレートつかえま…

Miam v0.2.2.beta3

Miam v0.2.2.beta3をリリースしました。 github.com 主な変更点は以下の通り。 Improve update (show diff) Support Template Add --ignore-login-profile option Sort policy array Improve update (show diff) いままでdry-runではアップデート後の値しか…

Roadworker v0.5.6.beta2

Roadworker v0.5.6.beta2をリリースしました。 github.com Calculated Health Checks/Latency Checksのサポート Calculated Health ChecksとLatency Checksをサポートしました。 Calculated Health Checksはこんな感じ。 rrset "zzz.info.winebarrel.jp", "A…

fluent-plugin-munin-nodeを作った

先日に引き続いて、fluent-plugin-munin-nodeを作りました。 github.com これは何? munin-nodeからmetricsを取得するためのfluentdのプラグインです。 実はすでに同様のプラグインがあったりするんですが、いくつか不満があって改修量が多そうだったので、…

fluent-plugin-zabbix-agentを作った

fluent-plugin-zabbix-agentというfluentdのプラグインを作りました。 github.com zabbixのpassive checkを使って、zabbix-agentから、各種メトリクスをfluentdに流すInputプラグインです。 使い方 以下のような設定ファイルを書くと、指定したitemをzabbix-…

続Libratoコード化: Space・Alertでテンプレートを使う

先日の記事で紹介したLibrato管理ツール「lbrt」にテンプレート機能を付けました。 winebarrel/lbrtgithub.com 基本的な使い方は以下の通り。 template "dstat" do chart "load_avg" do type "line" stream do metric "dstat.#{context.space_name}.load_avg…

Libratoをコード化しました

最近、業務案件でLibratoを使っています。 Libratoはメトリクス収集のSaaSで、メトリクスの収集とアラートの設定・通知ができます。 たぶんDatadogとかが競合になるんじゃないでしょうか。 Datadogほど多機能ではないですが、「グラフを書く」「グラフを並べ…

GitHub+Amazon SNS+Lambda+CloudFormationで簡易CI

先ほどの記事に引き続き。 GitHubからAmazon SNSでLambdaにイベント飛ばせば簡易CIができそうだだったので作ってみた。 処理の概要 GitHubにpush→Amazon SNS→Lambdaにイベント Lambdaがイベントをフック→cfnスタックを作成 cfnスタックがEC2インスタンスを起…

S3+Lambda+CloudFormationでサーバレスyumリポジトリ

先日の記事で、大きめの処理をLambda+CloudFormationで実行するめどがついたので、S3+Lambda+CloudFormationでサーバレスyumリポジトリを作ってみた。 処理の概要 S3にrpmを追加・更新・削除 Lambdaがイベントをフック→cfnスタックを作成 cfnスタックがEC2イ…

Lambdaと自殺するCloudFormation

rpmがS3に追加されたらLambdaでインデックス更新するやつを作ろうと思ったんですが、awscli-bundle.zipをダウンロードして /tmpに解凍して いろいろオプション付けてインストールして … 時間的に無理!という結論になりました。 でまあ、いろいろ考えてみて…

lambchopとGuard

lambchopでLambdaの開発をちまちまとやっているんですが、「js更新」→「lambdaアップロード」→「イベント投げる」の流れがめんどくさいので、Guard使ってみました。 https://github.com/winebarrel/my-lambda index.jsはこんな感じ。 #!/usr/bin/env lambcho…

Lambchop v0.1.0

世間様はLamb段階になったらしいので、AWS Lambda便利実行ツール Lambchop のv0.1.0をリリースしました。 https://github.com/winebarrel/lambchop lambchop (0.1.0): It is a tool that invoke AWS Lambda function from the local machine as a normally s…

AR/MySQLでの"default"の変更について

MySQLで以下のようなカラムがあったとして t.integer "foo", limit: 4, default: 0, null: false #`foo` int(11) NOT NULL DEFAULT '0', 以下のようなマイグレーションを実行したとすると change_column("articles", "foo", :integer, null: false) 実行され…

階乗

#!/usr/bin/env elixir defmodule Foo do def fact(n) do fact(n, 1) end defp fact(0, acc) do acc end defp fact(n, acc) do fact(n - 1, acc * n) end end IO.puts Foo.fact(65535) real 0m13.120s user 0m12.577s sys 0m0.201s

階乗

#!/usr/bin/env escript fact(0) -> 1; fact(N) -> N * fact(N - 1). main(_) -> N = fact(65535), io:format("~p~n", [N]). real 0m11.969s user 0m11.742s sys 0m0.175s #!/usr/bin/env escript fact(N) -> fact(N, 1). fact(0, Acc) -> Acc; fact(N, Acc)…

クイックソート

#!/usr/bin/env elixir defmodule QuickSort do def quick_sort([]) do [] end def quick_sort([pivot|rest]) do {smaller, larger} = partition(pivot, rest, [], []) quick_sort(smaller) ++ [pivot] ++ quick_sort(larger) end defp partition(_, [], sma…

クイックソート、リバース

#!/usr/bin/env escript print_list(List) -> io:format("len: ~p~n", [length(List)]), lists:foreach(fun(X) -> io:format("~p, ",[X]) end, List), io:format("~n"). quick_sort([]) -> []; quick_sort([Pivot|Rest]) -> {Smaller, Larger} = partition(P…

fluent-plugin-elb-access-logを作った

ELBのアクセスログのfluentdプラグイン、fluent-plugin-elb-access-logを作りました。 https://github.com/winebarrel/fluent-plugin-elb-access-log 既存の同様のプラグイン、fluent-plugin-elb-logとの違いは aws sdk v2を使っている タグを変更できる プ…

Raven+fluentd+Elasticsearch/KibanaでRailsの例外を集約する

SentryというPythonやRubyなど様々な言語の例外を集約して閲覧するWebサービス/OSSがあります。個々のログを検知・閲覧するにはいいんですが、全体を俯瞰して分析するならKibanaの方が良さそうだったので、Sentryに集めているログをKibanaに流してみました。…

Arproxy 0.2.0でプラグインが使えるようになった

以下のプルリクがマージされてArproxy 0.2.0がリリースされ、Arproxyでプラグインが使えるようになった。 https://github.com/cookpad/arproxy/pull/6 arproxy-plugin-stdout とりあえずサンプルプラグインを作ってみた。 https://github.com/winebarrel/arp…

miam 0.2.1.beta2 / piculet 0.2.8.beta2: JSONサポートなど

miam v0.2.1.beta2とpiculet v0.2.8.beta2をリリースしました。 miam v0.2.1.beta2 Managed Policyのattach/detachのサポート Managed Policyそのものの編集はまだサポートしていませんが、attach/detachをできるようにしました。 user "bob", :path => "/de…