2012-01-01から1年間の記事一覧
こんな感じ。 { "Statement": [ { "Action": [ "ec2:Describe*" ], "Effect": "Allow", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "100.100.100.10", "100.100.101.0/24" ] } } } ] }
class Brainfuck options no_result_var rule exp: | exp ope ope: '>' { @ptr += 1 } | '<' { @ptr -= 1 } | '+' { @ary[@ptr] ||= 0 @ary[@ptr] += 1 } | '-' { @ary[@ptr] ||= 0 @ary[@ptr] -= 1 } | '.' { print (@ary[@ptr] || 0).chr } | ',' { @ary[@…
kyowa.y class Kyowa options no_result_var rule exp: | exp ope ope: '(」・ω・)」きょう(/・ω・)/わー' { @ptr += 1 } | '(」・ω・)」きょう!!(/・ω・)/わー!!' { @ptr -= 1 } | '(」・ω・)」きょう!(/・ω・)/わー!' { @ary[@ptr] ||= 0 @ary[@ptr]…
この手のも再帰使うのが定石なのかな。。。 #!/usr/bin/env ocaml open Printf;; let rec input_loop line = printf "%s\n" line; input_loop (read_line ()) ;; input_loop (read_line ());;
#!/usr/bin/env ocaml open Printf;; let conv dollar = let rate = 114.32 in let yen = rate *. dollar in let i_yen = int_of_float yen in (* printf "(%f)\n" yen; *) if (yen -. float_of_int i_yen) < 0.5 then i_yen else i_yen + 1 ;; let rec inpu…
無力だ。 #!/usr/bin/env ocaml let capitalize c = let ic = int_of_char c in if 'a' <= c && c <= 'z' then char_of_int (ic - 32) else c ;; let ch = 'h';; print_char (capitalize ch);;
ruby-binlogを使ったサンプル。mysql2mongo.rbは以下の通り。 #!/usr/bin/env ruby require "rubygems" require "binlog" require "mongo" # カラム情報はMySQLから取得した方がよいかも… TABLE_COLUMNS = { "employees" => %w(id name age), } def insert(e…
%define _libdir /usr/lib Name: mysql-replication-listener Version: 0.0.47 Release: 2%{?dist} Summary: A STL/Boost based C++ library used for connecting to a MySQL server and process the replication stream as a slave. Group: Development/Lib…
少し前に話題に上ったmysql-replication-listener(libreplication)のRubyバインディングを書きました。https://bitbucket.org/winebarrel/ruby-binlog/ require "binlog" client = Binlog::Client.new("mysql://repl:repl@nyarlathotep") client.connect c…
詳細はリンク先を参照のこと。 http://www.thatsgeeky.com/2011/07/installing-heartbeat-on-amazon%E2%80%99s-ec2/ rpmを作ったので添付しておく。 cluster-glue-1.0.9-1.amzn1.x86_64.rpm cluster-glue-debuginfo-1.0.9-1.amzn1.x86_64.rpm cluster-glue-l…
https://bitbucket.org/winebarrel/attach-eni サーバ cthulhu(クライアント): 10.0.0.172 hastur: 10.0.0.171 nyar: 10.0.0.170 ENI: 10.0.0.150 事前準備 haster/nyarにattach-eniをインストールしておく 新規に作成したENIとhuster/nyarのeth0で『Source/…
サーバ構成やHeartbeatのインストールなどについては前のエントリを参照。 attach-eniコマンドを使ったフェイルオーバー Amazon LinuxにHeartbeatをインストールする Hertbeatの設定 /etc/ha.d/ha.cf (hastur) logfile /var/log/ha-log keepalive 2 deadtime…
L7のヘルスチェックを追加してみる。とりあえず、hasterとnyarにmysql-serverをインストール。 以下のヘルスチェック用デーモンを作成。 /usr/local/bin/mysql-pingd #!/bin/bash INTERVAL=5 while true; do /usr/bin/mysqladmin ping --connect_timeout=3 i…
トリガを使ってスレーブで自動的にデータを暗号化してみる。 テーブルはこんな感じ。 CREATE TABLE `hoge` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` text, PRIMARY KEY (`id`) ) スレーブ側でトリガを準備。 DELIMITER // CREATE TRIGGER encrypt_v…
スクリプトは以下の通り。gemは不要。1.8/1.9共通 #!/usr/bin/env ruby require 'cgi' require 'base64' require 'net/https' require 'openssl' require 'optparse' require 'rexml/document' Net::HTTP.version_1_2 class EC2Client API_VERSION = '2012-0…
#!/usr/bin/env ruby require 'cgi' require 'base64' require 'net/https' require 'openssl' require 'time' require 'rexml/document' class IAMClient API_VERSION = '2010-05-08' HOST = 'iam.amazonaws.com' ALGORITHM = :SHA1 #ALGORITHM = :SHA256 d…
とりあえず非VPCだけ。 ec2-describe-group | awk -F'\t' 'BEGIN{print "digraph G {"} /^GROUP/{vpc = $6 ? 1 : 0} $9~/CIDR/{src=$10} $9~/USER/{gsub(/NAME /,"",$11); src=$11} !vpc && /^PERMISSION/{dst=$3; pair=sprintf("\"%s\" -> \"%s\"",src,dst)…
デプロイ時の負荷対策の一解決策になる、、、かも。 JGitのインストール http://eclipse.org/jgit/ 『org.eclipse.jgit.pgm-1.3.0.201202151440-r.sh』はus-east-1しか操作できないバグあり https://git.eclipse.org/r/#/c/5255/ jgitに名前を変えて、ローカ…
基本情報 同じサブネット上に構築 Amazon Linux AMI 2012.03 (64bit / m1.small) × 3台 サーバ構成 source-01 (10.0.10.1) switch-01 (10.0.10.2) 『net.ipv4.ip_forward = 1』 『net.ipv4.conf.default.rp_filter = 0』 Source Dest. Checkはdisabled dest-…
どうもいろいろとよくわかんなかったので、少し追ってみた。 ポイントは POSTで投げる Content-Typeに「; charset=utf-8」をつける SignatureVersionは「2」 right_awsではURLエンコードに独自メソッドと実装してたけど、CGI.escapeで大丈夫、、だと思う。 …
例によってシンプルな情報が少ないので、すこしまとめてみた。 設定の確認とCredentialの作成 Management Consoleの「SES > SMTP Settings」でSMPTの設定の確認と、Credentialを作成。*1 メールアドレスの認証 sandbox状態だと認証された送信者・受信者でし…
昔、コンプティークか電撃王かに「趣味は楽しくない」という話を書いたエッセイが載っていた。大昔のことなのでほとんど覚えていないのだが、話の筋は「登山している友人に楽しいかと聞いてみたところ『きつくて臭くて最悪だよ』という答えが返ってきた。し…
#!/bin/sh SOURCE=ec2-api-tools.zip SPEC=ec2-api-tools.spec DESTDIR=/usr wget -q http://s3.amazonaws.com/ec2-downloads/$SOURCE -O $SOURCE VERSION=`unzip -l ec2-api-tools.zip | awk '/ec2-api-tools-/{print $4; exit}' | sed -r 's|ec2-api-tools…
同期の問題は大変デスネー Hostヘッダ渡さなくてもレスポンス返してくれたのがちょっと意外だった。 hHatena Blogはレスポンス返してくれるのかな? #!/usr/bin/env ruby require 'rubygems'a require 'eventmachine' class Backend < EM::Connection def i…
あ、さっきの嘘だ。 普通にラウンドロビン実装できた。 #!/usr/bin/env ruby require 'rubygems' require 'eventmachine' class Backend < EM::Connection def initialize(proxy) @proxy = proxy end def receive_data(data) @proxy.send_data(data) end end…
重い処理はバックグラウンドに回すのが正解なのかな。 基本的にmutableなオブジェクトの共有はNGな気がするな。 #!/usr/bin/env ruby require 'rubygems' require 'eventmachine' class HTTP < EM::Connection def receive_data(data) operation = lambda do…
Murakumo 0.4.5をリリースしました。 https://rubygems.org/gems/murakumo/versions/0.4.5 今回はKeepalived/Heartbeatのような冗長化機能を追加しました。 Elastic Network Interfaceを使った冗長化の例 ■概要 アクティブなサーバのMySQLが落ちたとき・サー…
#!/usr/bin/env ruby require 'cgi' require 'base64' require 'net/https' require 'openssl' require 'rexml/document' Net::HTTP.version_1_2 class EC2Client API_VERSION = '2011-12-15' SIGNATURE_VERSION = 2 def initialize(accessKeyId, secretAcce…
画面はできましたがテストができません…
テストできちゃったよ…