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

REST APIでS3からオブジェクトを取得する

やりたいことがシンプルなわりにサンプルがほとんど見つからなかったので、メモしておきます。 require 'base64' require 'net/http' require 'openssl' require 'time' Net::HTTP.version_1_2 def aws_sign(secret_access_key_id, date, bucket, path) stri…

未整形のmanをnroffで生成する

nroff -mandoc hoge.1 | less

TK-FBP017BKを買った

iPhoneをポメラ代わりに使おうと思ってTK-FBP017BKを買ってみた。 IMEの切り替えの仕方がよく分からない。

MySQL ClusterのAMIを公開しました

※Update! see http://d.hatena.ne.jp/winebarrel/20101023/p1 ap-southeastにMySQL ClusterのAMIを公開しました。 RightScaleのCentOS 5.4のAMIにMySQL Cluster 7.1.5をインストールしたモノです。 管理ノードとSQLノードとデータノードをひとまとめにして、…

MySQL Clusterの性能を検証してみる

あまりいい話を聞いたことがないMySQL ClusterをEC2で真面目に検証してみた。 サーバ構成 初期データ:2000万件 トランザクション:OFF 結果 http://spreadsheets.google.com/ccc?key=0ArOzt7qNZ1fldDVCUlozNlMxTngxUGM0dGRLWWx5YWc&hl=ja まとめ ReadとWrit…

rrdファイルを直接参照する

muninとかでグラフの数値を引っ張ってくる。 ~$ rrdtool fetch XXX.rrd AVERAGE -s 20100701 -e 20100801 | awk -F: '{printf("%s | %f\n",strftime("%x %X", $1),$2)}'

CentOS 5.4(x86_64)にMySQL+Spiderをインストールする

手順がめんどくさかったのでメモしておく。 yum install -y ncurses-devel readline-devel wget http://storehouse.sakura.ne.jp/RPMS/x86_64/m4-1.4.12-2.x86_64.rpm wget http://storehouse.sakura.ne.jp/RPMS/noarch/autoconf-2.63-2.noarch.rpm rpm -Uhv…

CentOS 5.4(x86_64):ついでにInnoDB Pluginを有効にする。

/etc/my.cnfに以下を追加して再起動。 [mysqld] ignore_builtin_innodb plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;…

Spiderで書き込みをスケールさせてみる

メモリに載らなくなったMyISAMをSpiderを使ってスケールさせてみる。 まず、c1.xlargeのMySQLに2000万件ほどデータをつっこむ。 CREATE TABLE `t1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `intcol1` int(32) DEFAULT NULL, `intcol2` int(32)…

EC2で使えるMySQLのL7ロードバランサ

EC2で使えるMySQLのL7ロードバランサを探しているんだけど、オープンソースだとMySQL Proxyくらいしか見つからない。 MySQL Proxyは何回か試したんだけど。。。まだまともに動かせてない(接続は出来るけどバランシングされてないとか、Luaスクリプトが全然…

MyISAM、ext3、writeback

ずいぶん前にこの記事を読んで、MyISAMでベンチマークしてみたいと思ってたんだけど、EC2で試してみることにした。 サーバ m2.4xlarge(4コア / 64GB) CentOS 5.4 MySQL 5.0.77 クライアント c1.xlarge(8コア / 7GB) CentOS 5.4 mysqlslap 1.0 mysqlslap…

EC2でMyISAMを検証してみた

検証環境は以下の通り。 サーバ CentOS 5.4 MySQL 5.0.77 クライアント c1.xlarge(8コア/7GB) CentOS 5.4 mysqlslap 1.0 始めにサーバをm1.large(2コア/7.5GB)にしてconcurrency=8、load-type=updateでmysqlslapを実行してみたら8,000qpsぐらいになった…

tcpdumpでクエリをキャプチャする

どこかのサイトで拾ったもの。いつも探してるのでメモしておく。 tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/; if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER…

海の日だったのか…

素で、誰もいない会社に出社してしまった。 中間テスト前に隕石が落ちたような気分なのでよしとする。

ネット的引き籠もり

まわりのリア充っぷりを見てもんもんとしていてもしょうがないなー、と思ったのでTwitterのアカウントを削除してみた。なんとなく精神衛生上は良いような気がする。 しかし、これは引き籠もりの一形態ではなかろうか?今のところTwitterはオプショナルなコミ…

Twitterのアカウントを削除した

思うところあってTwitterのアカウントを削除しました。

PowerDNSを使ったGeographic Load Balancing

Akamaiみたいに、DNSでクライアントのロケーションごとに異なるIP(またはCNAME)を返せないものかと、いろいろ調査。こーゆーDNSのロードバランシングをGeographic Load Balancingと言うらしい。いくつかのDNSサーバを調べてみたところ、PowerDNSのGeo back…

真・AUTO_INCREMENTでIDを1000ずつ増やす

わざわざトリガを使うまでもなかったですよ。。。orzauto_increment_incrementとauto_increment_offsetというひどい名前のシステム変数があって、AUTO_INCREMENTの増分を制御できた。 http://dev.mysql.com/doc/refman/5.1/ja/server-system-variables.html…

IDを1000ずつ増やす(ndbcluster)

ndbclusterでも試してみた。 CREATE TABLE `sequence` ( `id` int(10) unsigned NOT NULL ) ENGINE=ndbcluster [root@ip-XXX-XXX-XXX-XXX ~]# time ruby test.rb real 5m12.842s user 0m0.028s sys 0m0.016s5分か…1666qps、まあ許容範囲かな。 [root@ip-XXX-…

IDを1000ずつ増やす

see http://d.hatena.ne.jp/spiritloose/20080327、http://blog.livedoor.jp/sasata299/archives/51280681.html CREATE TABLE sequence (id INT UNSIGNED NOT NULL) ENGINE=InnoDB; INSERT INTO sequence VALUES (100); CREATE TABLE hoge ( id INT UNSIGNED…

しつこくラムダ式を使う

C++

↓のようなことしようとした。 function make_counter(n) { f = function() { return n++; }; g = function() { return n++; } } make_counter(100); print(f()); // 100 print(g()); // 101 ローカル変数を参照でキャプチャするのはさすがに不味そうなので、…

ラムダ式を使う

C++

autoも普通に使えるし、C++を書いている感じじゃなかった。 #include <iostream> #include <functional> using namespace std; int main() { auto make_counter = [](int n) -> std::function<int ()> { return [=]() -> int { // コピーによるキャプチャだとconstになるらしい int &i = co</int></functional></iostream>…

ラムダ式を使う: フィボナッチ数

C++

fibがautoはさすがにダメだった。当たり前のような気もする。 あと参照によるキャプチャじゃないとSEGV。 #include <iostream> #include <functional> using namespace std; int main() { function<int (int)> fib = [&](int n) -> int { if (n < 2) { return n; } else { return fib(n - 2) +</int></functional></iostream>…

暗黒面の開発力

不便さに対する怒りとか現実逃避とか仕事のストレス解消とか、負の感情をモチベーションとしたほうが、生産性が高いのではないかと思ったり思わなかったり。

bayon/Ruby 0.1.4

http://bayon.rubyforge.org/ リリースしました。 クラスタリングツールbayonのRubyバインディングです。g++じゃないとビルド出来ない。。。と思います。たぶん。

g++ 4.1.3でbayonがビルド出来なかった件

C++

結論としてはg++ 4.2.4にアップデートしたらビルドできた。どうもgoogle sparsehashのhash関数が、__gnu_cxx::hashだとダメっぽい(std::stringをハンドルするテンプレートがないみたいだった) g++ 4.2.4でstd::tr1::hashを使うようになったらビルドが通っ…

それでbayon/Rubyは…

以下のエラーを吐いているわけですが。 ~# ruby test.rb ruby: /usr/local/include/google/sparsehash/densehashtable.h:464: bool oogle::dense_hashtable::test_empty(const google::dense_hashtable_const_iterator&) const [with Value = std::pair, Key…

右辺値参照が分からない

C++

「一時オブジェクトを渡したときに移動できるようにするのね」と理解したつもりでコードを書いてみたけど、よく分からないところが… #include <string> using namespace std; class Foo { string s; public: Foo(const char* cs) { cout << "constructor" << endl; }</string>…

<%= で自動エスケープ

これを読んで何となく思いついた。 ERBのメソッドを書き換えればどうとでもできるなあ。やりたくないけど。 require 'erb' class ERB class Compiler # :nodoc: def compile(s) out = Buffer.new(self) content = '' scanner = make_scanner(s) scanner.scan…

Kirisame: とりあえず結果の取得まで

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/kirisame/ext/?root=svn require 'kirisame' client = Kirisame::Client.tcp('127.0.0.1', 3306, 'root', nil, 'mysql') qs = client.query('show tables', 'show databases') qs.run_all qs.each_with_in…