2013-01-01から1年間の記事一覧

siege便利ですよ、siege

Webアプリの負荷テストツールにsiegeというのがありまして、個人的にはずいぶん前から使っていたのですが、会社ではあんまり知られていなかったのでエントリ書きます。 http://www.joedog.org/ これは何? 簡単に言うと高機能なabです。JMeterほどの機能は必…

fluent-plugin-kinesis-alt というのを作りました

勉強もかねてfluent-plugin-kinesis-altという、fluentdのプラグインを書いてみました。 ちょうあるふぁばんです。 2013/12/24 追記 fluent-plugin-kinesisにマージできないかお伺いを立ててます https://github.com/imaifactory/fluent-plugin-kinesis/issu…

RubyでKinesisを使ってみた

AWS SDK for RubyがKinesisに対応したので、ちょっと触ってみました。 なにはさておき… aws-sdkを1.31.3以上にしましょう。 1.30.0はバグがあってまともに動かないです。 Kinesisについて コンセプトとかについてはドキュメントを読めばだいたい分かると思い…

AWS SDK for Rubyに無理矢理メソッドを追加する

AWS Advent Calendar 2013の2日目のエントリです。 RubyからAWSのAPIをたたくときはAWS SDK for Rubyを使うことが多いと思いますが、公式のSDKでも新しい機能のAPIに未対応な場合があります。(例: aws-sdk 1.24.0 での describe_load_balancer_attributes …

drone.io+VagrantでRuby 2.0.0のrpmを自動作成するようにしてみた

Amazon Linuxを起動したら、だいたい一番最初にRuby 2.0.0のビルドを始めるのだけれど、まいどまいど同じことをやっているのでrpmを自動作成するようにしてみた。 https://github.com/winebarrel/ruby-2.0.0-rpm Ruby 2.0.0のspecファイルを公開している人が…

ruby-jq 0.1.0

libjqが簡単に使えたので、NokogiriっぽいRubyのバインディングを作りました。 https://bitbucket.org/winebarrel/ruby-jqJSONはHTMLほど複雑ではないですが、ネストの深いデータを一発でとってこれるのは便利…かも知れないです。以下はGitHub APIでファイル…

Cからjqを使う

jqのheadでlibjqが切り出されていたので、main.cを参考にしてCから呼び出してみた。 #include <stdio.h> #include <string.h> #include <jq.h> static void process(jq_state *jq, jv value, int flags) { jq_start(jq, value, flags); jv result; while (jv_is_valid(result = jq_nex</jq.h></string.h></stdio.h>…

Piculet/Kelbimというツールを作りました

Piculet https://bitbucket.org/winebarrel/piculetKelbim https://bitbucket.org/winebarrel/kelbim 以前作成したRoadworkerと同様に、AWSの設定をRubyのDSLで管理します。Piculetはセキュリティグループを、KelbimはELBを対象としています。 Piculetのほう…

ddbcliをDynamoDB Localに対応させましした

対話型DynamoDBクライアントのddbcliをDynamoDB Localに対応させました。(>= 0.2.2) 使い方は以下の通り。 shell> ddbcli --uri localhost:8000 localhost:8000> select all * from foo; employeesを入れてみる MySQLのEmployees Sample Databaseからemploye…

echod

GO

package main import ( "fmt" "net" "os" "bufio" "strings" ) func handleConnection(conn net.Conn) { reader := bufio.NewReader(conn) for { line, err := reader.ReadBytes('\n') if err != nil { fmt.Println("error:", err.Error()) break } fmt.Prin…

MessagePack-RPCでドメインソケットを使う

サーバ require 'msgpack/rpc' require 'msgpack/rpc/transport/unix' class MyHandler def add(x,y) return x+y end end listener = MessagePack::RPC::UNIXServerTransport.new('/var/tmp/hoge.sock') server = MessagePack::RPC::Server.new server.liste…

cloudpack Night #7で発表しました / Roadworkerというツールを作りました

cloudpack Nightの発表資料 Gitを使ったRoute53の管理 from Sugawara Genki Roadworkerについて Chef/Puppet的にRoute53を管理するツールです。 Git使ってRoute53を管理できるようになります。 https://bitbucket.org/winebarrel/roadworker http://rubygems…

Hash Table Sizeの変更

2013年の話題としては今更感がありますが、LVSのHash Table Sizeを変更するために、EC2上のCentOS 6.3でカーネルを再構築したのでメモしておきます。 ちなみにAmazon Linux AMIだとカーネルのバージョンが新しいので、/etc/modprobe.d/ipvs.conf とかに opti…

unicast版keepalivedのrpm

どうもGoogle Driveの使い勝手が悪いので(直リンさせてー) こっちに置いておきます。 keepalived-1.2.7-1uc.amzn1.src.rpm keepalived-1.2.7-1uc.amzn1.x86_64.rpm keepalived-1.2.7-1uc.el6.src.rpm keepalived-1.2.7-1uc.el6.x86_64.rpm keepalived-debu…

cloudpack Night #6で発表しました

Puppet on AWS from Sugawara Genki EC2でkeepalived+LVS(DSR) from Sugawara Genki

ddbcli - 対話型のDynamoDBクライアント

https://bitbucket.org/winebarrel/ddbcli DynamoDBのmysqlコマンド的なクライアントを作りました。ほんとはAWS Tools Hackathonでこのネタをやろうとしていたのですが、DynamoDBのAPIにさわり始めたらあれよあれよと実装が進んでしまいまして。本番どうする…

SimpleDBで手軽に集計処理を行う

あまりがっつりとSimpleDBを使い込んでいる訳ではないですが、ちょっとしたデータをつっこんでおくにはなかなか便利です。特にログを残しておきたいときは特別なミドルウェアを用意する必要がないので、サーバやミドルウェアの検証をやるときにはよく使って…

スポットインスタンスの強制終了前に割り込み処理を入れる

EC2

EC2のスポットインスタンスは安くて大変お買い得ですが、価格が上がると強制ターミネートされるのがにんともかんとも。きちんとサービスアウトできる余裕が必要なので以下のようなスクリプトを書いて終了時にsleepするようにしてみたのですが、二通目のメー…

Ruby版ec2-describe-spot-price-history

#!/usr/bin/env ruby require 'cgi' require 'base64' require 'net/https' require 'openssl' require 'optparse' require 'rexml/parsers/pullparser' require 'time' require 'yaml' Net::HTTP.version_1_2 class EC2Client API_VERSION = '2012-12-01' S…