死ぬ直前みたいになってた

ちょうど切らしてるもの多い。シャンプー、洗顔、キッチンペーパー、味噌、バター、砂糖、三角コーナーの袋、他。

米とパスタも直になくなる。鏡を落として割ってしまった。

正月に帰省する際、冷蔵庫の卵を使い切るよう計算していて、ああ、死ぬ直前もこんな感じなのかなと思った。

死んだときに冷蔵庫に卵が余っていたら、すごく嫌な感じがする。

もうすぐ死ぬとわかっていたら、なんだか買い物するのが億劫になって、どんどんいろんなものが無くなっていく。


実家から大量の野菜ジュースが届く。飲みきるのに時間がかかりそうなので、シャンプー、味噌、バターなど、いろいろと買いに走る。

 

飲み会の盛り上げ役にボードゲーム、ボードゲームならドミニオン

なにをいまさら。

ドミニオンはドイツ史上初のゲーム大賞3冠を達成したボードゲーム。

遊んでみたいなと思っていたが、残念ながらAmazonではプレミア価格がついて手が出せなかった。(現在は再販されている)

そんなわけで「ドミニオン、ドミニオン」と呟いていたところ、大学でRPG同好会に所属している友人が持っているという。じゃあやろうじゃないか。1年間お疲れ(ちょうど春休みに入ったところだ)の飲み会という名目で人を集める。2人から4人までとのことだが、拡張すれば6人まで遊べる。

プレイヤーは領主だ。最終的に領地(屋敷・公領・属州)を最も多く手に入れたプレイヤーが勝ちとなる。ターン制で、1ターンに5枚の手札でできることは以下のABC。Action, Buy, Cleanup の3つだ。

Aで王国カードをプレイ。魔女が他プレイヤーに呪いをかけたり、役人が銀貨を持ってきたりと、面白い。

Bでは新たな王国カードや領地(勝ち点)を購入できる。

Cはそのターンで使ったカードと余った手札をすべて捨て札とする。山札が足りないとき、この捨て札が再び山札となる。

捨てたカードも輪廻転生よろしく戻ってくる。加えて購入したカードも山札になる。つまりは、自分の考えた最強のデッキを構築するゲームだ。

使用する王国カードは10種類。基本パックには25種類もの王国カードがあるので、ゲームは毎回異なるものになる。飽きない。

勝ち点である領地はゲームの進行においてまったく役に立たない。あまりに早くから領地を拡大し始めると、手札のうち4枚が勝ち点だったりして、がっかりする。

面白いのは、10種類の王国カードを見て戦略を決めた後、あとはひたすら理想のデッキを追い求める、といった内職プレイにならないところだ。

誰かが民兵を雇えば堀を掘って対抗する(民兵も役人もみんな堀に落ちる)。相手の戦略を予想する必要がある。ゲームが終盤なのか考える必要もある。あいつが属州を買い始めた。自分も買おう。

慣れてしまえばそれほど難しくない。酒を飲みながらわいわいプレイできる。気が付けば深夜12時から翌朝10時までぶっ通しで遊んでいた。朝日が目に刺さる。痛い。

テレビがなく、テレビゲームもできない。ちらほらと漫画を読み始めるやつがいる。ドミニオンはそんな飲み会の救世主だと思う。

自分も欲しいが、基本パックで4000円、拡張1つで4000円。木こりを雇って銀貨がほしい。

 

Tumblr bot つくりました。

はじめてbotつくりました。

EMPP Tumblr
EMPP Tumblr Japan

各ユーザの『posted』かつ『最もnoteされた』ものを集めるだけのbotです。
reblogしたものは含まれない。postedしたものだけです。

プログラミング系のお話は、本当ははてなブログに書きたい。
しかしおれは友人が少ないから誰も招待してくれないわけです。はてなidは goonew ですけど、まあどうでもいいですね。


なぜつくったか?

tumblrの難しいところの一つに、自分のお気に入りのユーザを見つけるのがだるいというのがあると思います。

ぼくは、お気に入りの写真やら文章やらがダッシュボードに流れてきたとき、それを最初に投稿した人のブログを見に行きます。
なんでかというと、やっぱり最初に投稿した人ってのは、同じようなものを他にもたくさん投稿している可能性がある。その人をフォローすればもっとダッシュボードがすばらしくなると思うからです。

そんなわけで、みなさんのオリジナルpostsをみたいなー、という感じでしたので、そこはもう勉強もかねて、さっそく作ってみた訳です。


botをつくってみて感じたこと

つくってみて一番驚いたことは、なんといっても非常に簡単だったことです。
rubyにはtumblife for ruby というすばらしいライブラリがありまして、なんとなーくで書けてしまう。
そんでもって、翻訳されたAPIドキュメントもあるわけです。
あと、OAuthのaccess token の取得とかも、twitterと比べるとめんどい感じですけど、ちゃんと解説してくれている人もいる。
すごい! みなさんありがとうございます!!

さらには、ぼくみたいな技術力の低い人とっては、楽しく勉強できたりする。
とくに楽だったのは、表示の部分を作らなくてよかったことです。そういうのはそこらへんのテーマを拾ってくれば良い。

デザインやらUIやらはとりあえずおいといて、サーバやらの勉強するのに、bot制作は向いているのではないかしらん? あんま偉そうに言うと怒られるのでやめます。


改善したいところ

「最初に投稿した人をフォローしたい」という目標があったのにもかかわらず、「これを投稿した人はこの人です!!」ってちゃんとアピールできてない。そういうとこをなおしたいです。

あー、奇跡的に「tumblr bot 制作」で検索書けた人がおれをはてなブログに招待してくれないかなー。
idは goonew なんですけど、ほんとうにどうでもいいですね。

 

mysql 拡張をロードできません。PHP の設定を確認してください

さくらでVPS借りてphpmyadmin設定してたら嵌った。

症状:mysql 拡張をロードできません。PHP の設定を確認してください といわれる。

環境
CentOS 5.5 x86_64
PHP 5.2.17
mysql Ver 14.14 Distrib 5.1.58,

ネット上でよくみる解決法
.yum install php-mysqlする
・php.iniにmysql.soとかく
などなど、これらをやっても解決しなかった。

そこで、ここを試す
mysql 拡張をロードできません。PHP の設定を確認してください(´・ω・)ス

早速再度リポジトリを有効にして、
# vi /etc/yum.repos.d/utterramblings.repo
記述内容
————————————————————-
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
————————————————————-

# yum install php-mysql
# yum -y install php-mbstring
# yum -y install php-mcrypt

# service httpd restart

これで解決した。ありがとうございます。

 

バックトラック→BFS→結局ダイクストラだった

ただのメモ。

Problem C: Pollock’s conjecture

これを解こうとした。

バックトラックだと思ったら違った。

そもそも、最適解を1つみつける時はBFSでよい。

BFSでも時間が足りない。

動的計画法でできた。

計算量を見積もるとき、再帰の回数で考えるのだめ。ちゃんとオーダーで考える。

ほかの結果から自分がわかる→動的計画法

今回だと、整数iをつくるために必要な正四面体数は
num_tetra = n(n+1)(n+2)/6
min(いまのところの最小 , 整数i-num_tetraをつくるために必要な数 + 1(i-num_tetraにnum_tetra(1個でつくれる)足せばいいので) )
d[i] = min(d[i],d[i - num_tetra] + 1)
をすべてのnに対してやれば求まる。

奇数限定も、num_tetraが奇数のときだけ
d_odd[i] = min(d_odd[i],d_odd[i - num_tetra] + 1)
やればいいだけ

動的計画だと、普通は初期値にINFとかあたえたりする。
今回は、1をi回繰り返せばつくれるので
d[i] = i として初期化した。

0~10^6までわかったら、最後に結果[入力]で一気に表示。

 

windows7の管理者権限でCygwinを実行するとエラーが出る。(らしい)

Cygwin起動したら以下のようなエラーが、ずらーっとでた。

8151359 [main] bash 3232 fork: child -1 – died waiting for longjmp before initialization, retry 0, exit code 0×600, errno 11
bash: fork: retry: Resource temporarily unavailable
9173585 [main] bash 316 exception::handle: Exception: STATUS_ACCESS_VIOLATION
9175569 [main] bash 316 open_stackdumpfile: Dumping stack trace to bash.exe.stackdump

bash.exe.stackdumpの中はこんな感じ。

Exception: STATUS_ACCESS_VIOLATION at eip=6102048B
eax=00991208 ebx=6124364C ecx=7580789F edx=004CA2F0 esi=00000000 edi=0022FA14
ebp=61020C00 esp=0022C7E4 program=C:\cygwin\bin\bash.exe, pid 3068, thread main
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame Function Args
End of stack trace

なんなんだろうなーと思ってググったら、このページに書いてあった。

Can’t run Cygwin/X as administrator on windows 7

なんだけど、べつに管理者権限で実行しているわけではない。
とりあえず互換モードで起動して、元に戻したら治った。よくわからなかったというお話。

 

バックトラックで嵌ったから悔しい

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1161
をバックトラックで解こうとしたら嵌ったのでメモ。

・とりあえず制約条件をちゃんと考える。

・解を決定する順番=影響が大きいとこから
 係数が大きいとこから埋めていく。早く枝刈りできるから。

・再帰の回数=入力の個数
 アルファベット分だけ。入力回もぐったら判定させる。

・計算できるとこはやっとく
 今のところの合計など、計算できるとこは計算しておく。別の関数に渡して最初からはだるい。

・枝刈り関数は、既知の値+予想される最大・最小 = 解の条件内に入るかどうか
 上の通り、計算できる値を最初から計算しておく。

・係数が負の場合だと、最大と最小が逆になる
 これを見落として、できなかった。

さいしょぼくは、最大の左辺<最小の右辺ならリターンみたいな感じでやっていたのだけど、それだとうまくいかなかった。

既知+最大 < 0 とかだと上手くいった。

 

cygwin環境にrcairoインストールできました


結論

$ gem install cairo -- --with-opt-include=/usr/include/cairo
とコマンドを打つ。
-x86-mingw32のrcairoをインストールしているなら、アンインストールする。



rubyでcairoを使うための拡張ライブラリrcairoを、なんとかインストールすることができました。
自分の失敗例だとかを書くのは初めてなので、あまり上手く書けないかもしれない。
そもそも、エラー文を全然メモっていなかったので役に立たないかもしれない。

環境は
windows 7
cygwin
ruby 1.8.7
gem 1.8.10
です。


流れとしては
1.cairoインストール
2.rcairoインストール

1.cairoインストール

公式サイトによると、どうやらGTK+をインストールするだけでcairoもインストールされるらしい。


が、それにすら気づかないぼくは、こちらのブログを参考にしてインストールした。
cygwinのパッケージをちゃんとインストールしていないので、pixman以外にもいろいろ足りないといわれた(libpngなど)
そのたびに、cygwinのsetup.exeを実行してパッケージを入れた。それでも./configureで同じエラーが出たら、素直にtar.gzをダウンロードして展開、


$ ./configure
$ make
$ make install



でインストールしていった。

2.rcairoのインストール



ここ

For Windows user:
  % gem install cairo –platform x86-mingw32

とあるので、その通りに実行
特にエラーもなく終了したが、requireできない。(cairo.soがないといわれる)


そもそもcygwinなのだから-mingw32はおかしい気がした。
なので
% gem install cairo
と普通に実行。


以下のエラーが出る。
$ gem install cairo
Fetching: cairo-1.10.1.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing cairo:
ERROR: Failed to build gem native extension.

/usr/bin/ruby.exe extconf.rb
checking for GCC... yes
checking for Win32 OS... yes
checking for Mac OS X... no
checking for cairo version (>= 1.2.0)... yes
checking for HAVE_RUBY_ST_H in ruby.h... no
checking for ruby/st.h... no
checking for HAVE_RUBY_IO_H in ruby.h... no
checking for ruby/io.h... no
checking for rb_errinfo() in ruby.h... no
checking for enum ruby_value_type in ruby.h... no
creating Makefile

make
gcc -I. -I. -I/usr/lib/ruby/1.8/i386-cygwin -I. -DRUBY_CAIRO_PLATFORM_WIN32 -DRB
_CAIRO_COMPILATION -g -O2 -Wall -I../../vendor/local/include -I../../vendor
/local/include/cairo -I../../vendor/local/include/pixman-1 -I../../vendor/local/
include/libpng15 -c rb_cairo.c
In file included from rb_cairo.c:17:
rb_cairo.h:20:19: cairo.h: No such file or directory
In file included from rb_cairo.c:17:
rb_cairo.h:209: error: parse error before '*' token
rb_cairo.h:209: 警告: type defaults to `int' in declaration of `rb_cairo_context
_from_ruby_object'
rb_cairo.h:209: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:210: error: parse error before '*' token
rb_cairo.h:212: error: parse error before '*' token
rb_cairo.h:212: 警告: type defaults to `int' in declaration of `rb_cairo_path_fr
om_ruby_object'
rb_cairo.h:212: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:213: error: parse error before '*' token
rb_cairo.h:215: error: parse error before '*' token
rb_cairo.h:215: 警告: type defaults to `int' in declaration of `rb_cairo_matrix_
from_ruby_object'
rb_cairo.h:215: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:216: error: parse error before '*' token
rb_cairo.h:223: error: parse error before '*' token
rb_cairo.h:223: 警告: type defaults to `int' in declaration of `rb_cairo_pattern
_from_ruby_object'
rb_cairo.h:223: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:224: error: parse error before '*' token
rb_cairo.h:226: error: parse error before '*' token
rb_cairo.h:226: 警告: type defaults to `int' in declaration of `rb_cairo_font_fa
ce_from_ruby_object'
rb_cairo.h:226: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:227: error: parse error before '*' token
rb_cairo.h:229: error: parse error before '*' token
rb_cairo.h:229: 警告: type defaults to `int' in declaration of `rb_cairo_font_ex
tents_from_ruby_object'
rb_cairo.h:229: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:230: error: parse error before '*' token
rb_cairo.h:232: error: parse error before '*' token
rb_cairo.h:232: 警告: type defaults to `int' in declaration of `rb_cairo_font_op
tions_from_ruby_object'
rb_cairo.h:232: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:233: error: parse error before '*' token
rb_cairo.h:235: error: parse error before '*' token
rb_cairo.h:235: 警告: type defaults to `int' in declaration of `rb_cairo_scaled_
font_from_ruby_object'
rb_cairo.h:235: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:236: error: parse error before '*' token
rb_cairo.h:238: error: parse error before '*' token
rb_cairo.h:238: 警告: type defaults to `int' in declaration of `rb_cairo_text_ex
tents_from_ruby_object'
rb_cairo.h:238: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:239: error: parse error before '*' token
rb_cairo.h:241: error: parse error before '*' token
rb_cairo.h:241: 警告: type defaults to `int' in declaration of `rb_cairo_glyph_f
rom_ruby_object'
rb_cairo.h:241: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:242: error: parse error before '*' token
rb_cairo.h:249: error: parse error before '*' token
rb_cairo.h:249: 警告: type defaults to `int' in declaration of `rb_cairo_surface
_from_ruby_object'
rb_cairo.h:249: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:250: error: parse error before '*' token
rb_cairo.h:252: error: parse error before '*' token
rb_cairo.h:297: error: parse error before "rb_cairo_operator_from_ruby_object"
rb_cairo.h:297: 警告: type defaults to `int' in declaration of `rb_cairo_operato
r_from_ruby_object'
rb_cairo.h:297: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:298: error: parse error before "rb_cairo_antialias_from_ruby_object"
rb_cairo.h:298: 警告: type defaults to `int' in declaration of `rb_cairo_antiali
as_from_ruby_object'
rb_cairo.h:298: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:299: error: parse error before "rb_cairo_fill_rule_from_ruby_object"
rb_cairo.h:299: 警告: type defaults to `int' in declaration of `rb_cairo_fill_ru
le_from_ruby_object'
rb_cairo.h:299: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:300: error: parse error before "rb_cairo_line_cap_from_ruby_object"
rb_cairo.h:300: 警告: type defaults to `int' in declaration of `rb_cairo_line_ca
p_from_ruby_object'
rb_cairo.h:300: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:301: error: parse error before "rb_cairo_line_join_from_ruby_object"
rb_cairo.h:301: 警告: type defaults to `int' in declaration of `rb_cairo_line_jo
in_from_ruby_object'
rb_cairo.h:301: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:302: error: parse error before "rb_cairo_font_slant_from_ruby_object"

rb_cairo.h:302: 警告: type defaults to `int' in declaration of `rb_cairo_font_sl
ant_from_ruby_object'
rb_cairo.h:302: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:303: error: parse error before "rb_cairo_font_weight_from_ruby_object
"
rb_cairo.h:303: 警告: type defaults to `int' in declaration of `rb_cairo_font_we
ight_from_ruby_object'
rb_cairo.h:303: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:304: error: parse error before "rb_cairo_subpixel_order_from_ruby_obj
ect"
rb_cairo.h:304: 警告: type defaults to `int' in declaration of `rb_cairo_subpixe
l_order_from_ruby_object'
rb_cairo.h:304: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:305: error: parse error before "rb_cairo_hint_style_from_ruby_object"

rb_cairo.h:305: 警告: type defaults to `int' in declaration of `rb_cairo_hint_st
yle_from_ruby_object'
rb_cairo.h:305: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:306: error: parse error before "rb_cairo_hint_metrics_from_ruby_objec
t"
rb_cairo.h:306: 警告: type defaults to `int' in declaration of `rb_cairo_hint_me
trics_from_ruby_object'
rb_cairo.h:306: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:307: error: parse error before "rb_cairo_path_data_type_from_ruby_obj
ect"
rb_cairo.h:307: 警告: type defaults to `int' in declaration of `rb_cairo_path_da
ta_type_from_ruby_object'
rb_cairo.h:307: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:308: error: parse error before "rb_cairo_content_from_ruby_object"
rb_cairo.h:308: 警告: type defaults to `int' in declaration of `rb_cairo_content
_from_ruby_object'
rb_cairo.h:308: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:309: error: parse error before "rb_cairo_format_from_ruby_object"
rb_cairo.h:309: 警告: type defaults to `int' in declaration of `rb_cairo_format_
from_ruby_object'
rb_cairo.h:309: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:310: error: parse error before "rb_cairo_extend_from_ruby_object"
rb_cairo.h:310: 警告: type defaults to `int' in declaration of `rb_cairo_extend_
from_ruby_object'
rb_cairo.h:310: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:311: error: parse error before "rb_cairo_filter_from_ruby_object"
rb_cairo.h:311: 警告: type defaults to `int' in declaration of `rb_cairo_filter_
from_ruby_object'
rb_cairo.h:311: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.h:335: error: parse error before "status"
In file included from rb_cairo.c:18:
rb_cairo_private.h:81: error: parse error before "cairo_glyph_t"
rb_cairo_private.h:84: error: parse error before "rb_cairo__is_kind_of"
rb_cairo_private.h:84: 警告: type defaults to `int' in declaration of `rb_cairo_
_is_kind_of'
rb_cairo_private.h:84: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo_private.h:112: error: parse error before "rb_cairo__exception_to_status
"
rb_cairo_private.h:112: 警告: type defaults to `int' in declaration of `rb_cairo
__exception_to_status'
rb_cairo_private.h:112: 警告: データ定義が型や記憶クラスを持っていません
rb_cairo.c: In function `rb_cairo_satisfied_version':
rb_cairo.c:40: error: `CAIRO_VERSION_MAJOR' undeclared (first use in this functi
on)
rb_cairo.c:40: error: (Each undeclared identifier is reported only once
rb_cairo.c:40: error: for each function it appears in.)
rb_cairo.c:40: error: `CAIRO_VERSION_MINOR' undeclared (first use in this functi
on)
rb_cairo.c:40: error: `CAIRO_VERSION_MICRO' undeclared (first use in this functi
on)
rb_cairo.c: In function `Init_cairo':
rb_cairo.c:59: error: `CAIRO_VERSION_MAJOR' undeclared (first use in this functi
on)
rb_cairo.c:60: error: `CAIRO_VERSION_MINOR' undeclared (first use in this functi
on)
rb_cairo.c:61: error: `CAIRO_VERSION_MICRO' undeclared (first use in this functi
on)
rb_cairo.c:63: 警告: implicit declaration of function `cairo_version'
make: *** [rb_cairo.o] エラー 1

Gem files will remain installed in /usr/include/cairo/th-opt-include=/usr/includ
e/cairo/gems/cairo-1.10.1 for inspection.
Results logged to /usr/include/cairo/th-opt-include=/usr/include/cairo/gems/cair
o-1.10.1/ext/cairo/gem_make.out



どうやら
rb_cairo.h:20:19: cairo.h: No such file or directory
cairo.hの場所が分かってないらしい


こちらに解決策が書いてありました。

gem install のオプションとして、–with-opt-include=/usr/include/cairo を指定した。



なので
$ gem install cairo -- --with-opt-include=/usr/include/cairo
として実行。


無事インストールされる。


テスト
$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'cairo'
LoadError: no such file to load -- cairo.so
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `gem_o
riginal_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `requi
re'
from /usr/lib/ruby/gems/1.8/gems/cairo-1.10.1-x86-mingw32/lib/cairo.rb:4
6
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `gem_o
riginal_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `requi
re'
from (irb):2
from (null):0
irb(main):003:0> require 'cairo'
LoadError: no such file to load -- cairo.so
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `gem_o
riginal_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `requi
re'
from /usr/lib/ruby/gems/1.8/gems/cairo-1.10.1-x86-mingw32/lib/cairo.rb:4
6
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_o
riginal_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `requi
re'
from (irb):3
from (null):0
irb(main):004:0> exit



まだcairo.soが見つからないといわれる。


なんでかなーって思っていたけど、最初にインストールしたx86-mingw32のrcairoが邪魔なのだと思ったので
x86-mingw32のほうだけアンインストール。
$ gem uninstall cairo

Select gem to uninstall:
1. cairo-1.10.1
2. cairo-1.10.1-x86-mingw32
3. All versions
> 2
Successfully uninstalled cairo-1.10.1-x86-mingw32



再度テスト


$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'cairo'
=> true
irb(main):003:0> exit



成功した。