ruby

CentOSにEmacs23をソースから入れる。

普通に

# ./configure

ってすると、libpngがないとか何とか散々言われる。ので、そこで言われた通りに、

#./configure  –with-xpm=no –with-jpeg=no –with-png=no –with-gif=no –with-tiff=no

ってやると、今度はallocaが無いだなんだとぐだぐだ言われる。

configure: error: a system implementation of alloca is required

とかなんとか。仕方ないのでこれも入れてやろうと、yum search alloca で出てきた適当なパッケージを入れてみるも効果無し。

で、結局

./configure –without-x

ってやったら全て解決した。あとはmakeからのmake install。これでRubyソースに色がついた。

ちゃんとインストールしたはずのruby gemsが使えない

twitterのbotをRubyで書いてた。

require ‘twitter’

require ‘oauth’

~~~

で、OAuthのためのトークンを取得しようと。

で、実行するとどーしてもoauthのところでエラー吐いて死ぬ。おかしいだろ。

ちゃんとgem install oauthしたし。

などと思って散々頭を悩ませていたが、ぐぐってみたら解決した。

プログラムがoauth.rbだったからいけなかったのだ。

requireとすると最初にカレントディレクトリを読み込むので、自分を読んで終わっていたらしい。

ありえない。ちゃんと一意な名前を付けましょうね・・・

Net::TwitterでIncorrect signatureが止まらない

Net::Twitterを使って日本語をつぶやきたいが、OAuthを使うと日本語がつぶやけないという話。

普通にBASIC認証でIDとパスワードを渡すと英語・日本語(UTF-8)どっちでもツイートできるのに、OAuthを使うと日本語の時だけIncorrect signatureなどと意味不明な供述をしやがる。ちなみにPerlは5.10.1。

my $nt = Net::Twitter->new(
    traits          => ['API::REST', 'OAuth'],
    consumer_key    => 'コンシューマキー',
    consumer_secret => 'しーくれっと'
);
$nt->access_token('トークン');
$nt->access_token_secret('しーくれっととーくん');

こうして、あとは $nt->update(‘hoge’); でつぶやける。但し英語のみ。

ぐぐってみると、同じ問題がNet::Twitter 3.13003+Net::OAuthで発生するという話がたくさん引っかかるのだが、どれもこれらを最新版にアップデートしたら直ったと書いてある。とっくに3.13006まで上げてるが、まったく直る気配がない。どうしてこうなった。現在は3.13007になっているが、変わらなかった。

英語ならツイートできるわけで、OAuth自体に問題があるとはどうしても思えない。ので、きっとどっかで何かがUTF-8あたりと喧嘩か何かしてるか何かなんだろうなぁ。なんもわからん。ソースを読みにいくという選択肢が無いへっぽこ学生。

一番安直な解決法としては、既にgem twitterをインストールし、OAuthでのあれやこれやの方法を確認できているRubyに移植することなんだが、今ひとつ踏み切れないところ。大したBOTでもないから1日あれば全部移植できるとは思うんだけど、んー。

てことで劇的なNet::TwitterのアップデートがtwitterのBasic認証廃止までにくることを夢見て、今日も寝て待つ俺なのであった。

→つづき:http://blog.naotaco.com/archives/101