Rubyで動くIRCクライアントを、Ruby1.9で動くようにしてみた

http://d.hatena.ne.jp/curi1119/20080506/1210062892
こちらのまんまコピーですが、変更点などが色々中途半端なことに。ま、動いたからいいやの精神で。ターミナルにIRCの内容が表示され、そこで入力したことが、IRCの発言となります。

ruby1.9では動かないなー、なんでかなーThreadが1.8と1.9で違うからかな?と思ってたら単純にエンコードの問題でした。UTF-8とJISの文字列を結合させようとしていて失敗といいったところです。

iso-2022-jpはダミーエンコーディングだとかなんだかで、色々うまくいかず結局String.encodeを使わずKconvのままだとなんとか動きました。

Thread.abort_on_exception = trueなんてのが残ってたり、motd終了時を検知して、write threadを始めようとしてるけど、結局やってないのが残ってたりするのはご愛嬌ということで。

Thread.stop,Thread.runを使いたく無かったということなんですが、まあまたの機会に。


#coding:utf-8
require 'socket'
require 'kconv'

@server = "hoge"
@port = 6667
@eol = "\r\n"
@nick = "curi_ruby"
@channel = "#hoge"

def send_cmd(cmd)
  print "Sending command..... :#{cmd}\n"
  @irc.write(Kconv.tojis("#{cmd}#{@eol}"))
end

def login_and_join
  #server password
  #send_cmd("PASS YOUR_PASSWORD")
  send_cmd("USER curi_ruby, #{@server}, ignore, Curi")
  send_cmd("NICK #{@nick}")
  send_cmd("JOIN #{@channel}")
end

Thread.abort_on_exception = true

read = Thread.new do
  Thread.stop
  while msg = Kconv.toutf8(@irc.gets).split
    print "#{msg.join(' ')}\n"
    send_cmd("PONG #{msg[1]}") if msg[0] == 'PING'
    if msg[1] == '376' || msg[1] == '422'
      # 376:end of motd, 422:error no motd
      @write_start = true
    end
  end
end

write = Thread.new do
  Thread.stop
  while input = gets.chop
    send_cmd("PRIVMSG #{@channel} #{input}")
  end
end
@irc = TCPSocket.new(@server, @port)
login_and_join
read.run
write.run
read.join
write.join                                

ブロック?の省略記法

プログラミングRuby 1.9 −言語編−
プログラミングRuby1.9言語編を読んでたら、もはや跡形も無いぐらい改変しましたが、大体以下のようなサンプルがあり、

threads = (1..10).map do |i|
  Thread.new do
    print "#{i}\n"
  end
end
threads.each(&:join)

最後の行が、はて何じゃこりゃ?と思いましたが、これの

threads.each(&:join)

ってのは

threads.each { |t| t.join }

と同じなのね。ruby1.8.7でもruby1.9.2でもどちらでも使えたりと、全然知らなかった。

rvm使用時irbで日本語使えないのを修正など

どうもreadlineが関連してるらしい。

$ rvm package install readline

以上でreadlineのパッケージを入れてみました。そしてrvmでrubyをインストールしてコンパイルするときにそのディレクトリを教えてやりました。

$ rvm install ruby-1.9.2 -C --with-readline-dir=$rvm_path/usr

http://rvm.beginrescueend.com/packages/readline/
後でドキュメントみたら-Cっていらないっぽいですが、とりあえず今回はこうしたってことで

$ irb
Welcome to IRB. You are using ruby 1.9.2p136 (2010-12-25 revision 30365)
 [x86_64-darwin10.5.0]. Have fun ;)
>> a = "あいうえお" #=> "あいうえお"
>> a.size #=> 5
>> a[1] #=> "い"
>> 

日本語いけました。

あとインストール時にreadlineのパスを教えてやるのがうっとおしいなーと思ったので、bashでaliasでなんとかできんもんかと思うもうまくいかず

$ vi ~/.bashrc

function rvm_install() {
    rvm install $1 -C --with-readline-dir=$rvm_path/usr:
}

$ rvm_install 1.9.2
$ rvm_install 1.8.7

rvm_installというfunctionをでっち上げてみました。正直.rvmrcになんぞ書いて一瞬で解決しそうな気がするんですが、残念ながらわかりませんでした。

Acrobat8 ProfesssionalでPDFを回転させるAppleScript

以前見かけたのですが、探したら何故か見つからなかったので作ってみました。


奇数ページを左90度に回転する

tell application "Adobe Acrobat Professional"
	activate
end tell

tell application "System Events"
	tell application process "Acrobat"
		click the menu item "ページの回転..." of the menu "文書" of menu bar 1
		try
			click radio button "すべて" of group 1 of window "ページの回転"
			click pop up button 1 of window "ページの回転"
			click menu item 1 of menu 1 of pop up button 1 of window "ページの回転"
			click pop up button 1 of group 1 of window "ページの回転"
			click menu item 3 of menu 1 of pop up button 1 of group 1 of window "ページの回転"
		--		get every UI element of group 1 of window "ページの回転"

			click button "OK" of window "ページの回転"
		end try

		
	end tell
end tell

偶数ページを右90度に回転する

tell application "Adobe Acrobat Professional"
	activate
end tell

tell application "System Events"
	tell application process "Acrobat"
		click the menu item "ページの回転..." of the menu "文書" of menu bar 1
		try
			click radio button "すべて" of group 1 of window "ページの回転"
			click pop up button 1 of window "ページの回転"
			click menu item 2 of menu 1 of pop up button 1 of window "ページの回転"
			click pop up button 1 of group 1 of window "ページの回転"
			click menu item 2 of menu 1 of pop up button 1 of group 1 of window "ページの回転"
			click button "OK" of window "ページの回転"
		end try
	end tell
end tell

変更を保存する

tell application "Adobe Acrobat Professional"
	activate
end tell

tell application "System Events"
	tell application process "Acrobat"
		click the menu item "保存" of the menu "ファイル" of menu bar 1
	end tell
end tell

色々な所からのコピペの山で形成されてるのであまり意味はわかってないけど動いたのでよしとする。-- はコメントで、elementを表示させる。これで使えるelementが分かったりしたのでした。

We are Back!! POLYSICS!!!@名古屋 CLUB QUATTRO参戦

ライブ前に発症した花粉症がえらいことになってまして、ちょっと死んでまして少し回復しました。

POLYSICSのライブを関西以外で見るのは、武道館というのがありましたが、ああいう特別なもの以外で遠征なんてものをするようになるとはライブはもっぱらDVDでという時代から考えると隔世の感があります。

ライブ開始前にハルチさん発見。色々話ししてたらシズカさんもこられて挨拶など。いきなりあえるとは思いませんでしたwその他ハルチさんと一緒にいた方などポリな仲間とお話できるとは、普段ありえないから大変うれしい!でも、大阪からアーバンライナーに乗ってこられた方はお名前すら伺いませんでした。失敗w


以下箇条書きでつらつらと

◯番号は169番といまいちですが、フミさん前3列目と悪くない位置をキープ。周りの人とは比較的共存できたので、体力も消耗せず気持よく見られました。心斎橋とくらべてダイブが多い印象。個人的にダイブは好きじゃないので何とも言えない。

◯ポリブログで書いてたニューアンプだと思うのがあったけど、一切MCで触れなかったので良くわかんなかった。

◯ヤノの髪型がえらいことに。ローディーさんの一人と似た髪型だった。心斎橋もそうだっけ?名古屋からのような気がする。

◯MC。初キャンペーンが名古屋でのミック宮川さん*1のラジオ番組。ラジオ番組に出るためマネージャと二人で名古屋へ。新幹線初心者の二人は適当に乗ったら一番遅いこだまでした。出演時間になってもまだ熱海。マネージャーは携帯の電源を切る。番組ではいつもやらないJPOPランキングなんてのをやっていて、番組終わりかけで第一位は、その前にPOLYSICSのハヤシさんでーすとなった。あとで散々怒られた。

◯心斎橋でも言ってたけどクアトロにはクアトロ独特の匂いがある。この湿気が大好きなんだああああああ。以前のツアーでフミのMacBookが湿気で動かなくなった。「水没ですよ水没」「白いはんぺんになりました」「もっともっと盛り上がって、みんなでフミのMacBook壊そうぜー!」でも確かそれ以降は対策してるので大丈夫なはずw

◯人生の灰ではみんなから受け取ったタオルをツナギに入れて胸揉みという謎なことを心斎橋ではやってましたが、今回は無しでビニール製のおおきなハロウィンかぼちゃをひたすら叩いてました。神戸から続く叩き物シリーズ?

◯MCでハロウィンといえばジャーマンメタルバンド、ハロウィンを聞く日。ハロウィン知ってる人〜?ちなみに私個人はBLIND GUARDIANは好きでした。Somewhere far beyond〜♪

POLYSICSはハロウィン仕様で、フミはバイザーの下は真っ黒です。ヤノはコメカミにネジが刺さってるといったことを言ってたけどうろ覚えでよく覚えてない。

◯Too Much TokyoでのヤノMCはご当地ネタを一ついれてるっぽいのだけど今回は何を言ったのか分からなかったー、残念。地元の人なら分かるのかな?大阪の時は今日のお客さんはあっつあっつのたこ焼きみたいやでーてな事を言ってました。

◯「Absoluteでダークなナンバー」といつものMCからはじまったEye Contact。バシバシキーボードをハヤシが叩くも音がでない。ローディーの人が飛んできて色々やるも全然出ず。最後の方でようやく鳴ったけどあれはなんだったんだろう。ライブ開始前は音鳴ってたと思うんだけどね。湿気?

◯新曲はだんだん覚えてきた。boilはboilといつも言うのかと思ったら言わなかったりして面白い。フミさん歌うHow are you?はハッハッハッハ・ハワユ・ハワユてあたりがいいやな。Mach肝心はあのはじめのてけてけ歩きが可愛くてよいw踊れHEAVENはなぜか記憶にないんですなこれが。

◯今回も演奏したUnitedは人生の灰と並んでベースが大変格好良くフミファンとしてはたまらんのですが、Shout Aloud!/BEAT FLASH両A面の三曲目という不遇の位置にあり、アルバムにも入ってないのに定番曲となってる不思議な曲ですね。

◯アンコールのコールはP・O・L・Y・S・I・C・Sとコールする人が数人最後まで頑張った結果、通常のコールと違う感じになった。武道館の時もそれをやろうとした人は結構いたけど成功しなかったので、ちょっとうれしかった。ハヤシ「彼の声が潰れそうになったので、でてきた」男性「ありがとー」ハヤシ「ああ、キミかw」

◯前回は何故かまったく似てない曲とわたしは間違えたGET BACK TO 8-BIT。今回はばっちりでした。でも結構この曲知らない人が多いっぽいな。途中でギターの弦が切れてローディーの人が新しいのを用意して待ってるんだけど、ハヤシは一向に変えない。変えるタイミングは結構あるのに、はてなんでだろうと思ってたら、長い時間ギターを鳴らさなくて良い場面まで待ってたらしくそこで変えてた。

◯ヤノはスティックが割れたのか分かりませんが、わざと落として新しいスティックに変えるというのをやっていて、おお格好いいなと思ってたら違う曲でスティックを飛ばしてしまい苦笑いしていたwでも慌てずスムーズに新しいスティックを手に持ち演奏してたので逆に格好よかったw


◯Pretty Good終わりでCLUB QUATTRO 名古屋 OR DIE!!!とハヤシ絶叫だったので、え、この曲で終わり?珍しいなーと思ったらそこからSpeed UPに入ってそれでエンディング。これもなかなか珍しい感じの終わり方ですね。しめはいつものトイス!を繰り返して、おやすみ〜!で終わり。今回はじめて最後にハヤシとタッチができました。やりー。ヤノはドラムスティックを投げるでなく、渡しに来るのがなんとも人柄が出ていて良い感じw

◯実際いいライブだったのと、個人的に周りとの関係が平和だったので、大阪よりいいライブと感じましたが、これで年内参戦のポリライブ終了かと思うと寂しさもありでしたw

*1:関西では551の蓬莱CMでの不思議な歌でおなじみかも

We are Back!! POLYSICS!!!@心斎橋 CLUB QUATTRO参戦

追記:大事なこと書き忘れてた。初めっから三人であったみたく素晴らしいステージでした。体制が変わってもそれを感じさせないとは凄い。よっぽど考え、練習もしたのでしょう。頭が下がります。


心斎橋CLUB QUATTRO(以下クアトロ)は行ったことないけれどPARCOの上らしい、ああそれなら分かるわと行ってみたらPARCOだと思っていたのはOPAだった・・・幸いそこから近かったのでさほど問題はなかったけど、OPAと気付い時は・・・かなーり余裕もって出かけて大正解でありました。


クアトロには会場が開いてから使えるロッカーが結構あるけど人数分は無いよとのこと。それとすぐ場所取りにも移りたいので、目の前の地下、クリスタ長堀のロッカーを一つ占拠。土日はすぐ埋まるよとのことであったので、ロッカー代を二回払うつもりで荷物を置いて心斎橋をぶらつくことに。でも実は全然ロッカー埋まってなくて開場ちょっと前でも十分荷物おけました・・・聞いてたのと話しが違うw


さて物販開始。キーホルダーとTシャツ購入。残りは名古屋で買うことにしました。そこではリハの音が結構豪快に漏れてきて、おおポリがいるよーなんて気分も上がり、お、カジャカジャだなこれ、やった!なんて思ったのですが、やはり始まる前に曲知るのはも一つと思い直しました。お、これやってくれるんか、やったー!!!ってのがライブの楽しみの一つですしね。


さて開場ってなことで即座にフミ前ポジションに向かうと、1.5列目ぐらいのなかなか悪くない位置。目の前の女性がなんか見たことあるなー、場所もここで見たようなってことで散々迷いつつ尋ねるとやはりハルチさんでありました。私のことも記憶してくれていたのはびっくりしました。なんばHatch以来ですからね。


えーとこんなにライブより前のことをうだうだ書いているのは、ライブの記憶がだいぶ飛んでいて、楽しかったーびしょ濡れじゃー以外にあまりないからだったり・・・w


そしてついに開演ですよ。新生POLYSICSについてはtwitterで入ってくる情報以外はシャットアウトして今日まで迎えました。初グレイツナギ、初シルバーバイザー、初3人体制、初新曲ですよ。ほぼ最前なのでツナギは単色じゃなくてストライプなのかとか、ハヤシのギターの裏側のDEVOのサインなども結構見れたりと堪能。あと、初参戦した神戸スタークラブと違って、ステージが凄く低くて観やすくていい感じです。


新曲も結構やりました。あまりノリ方がわかりませんでしたが、なかなか燃える感じ。ボイルってのが唯一タイトルを覚えてるやつで、他にはフミが歌いまーす状態の曲があって喜んだりしてました。


ライブ開始後しばらくは耐えられてましたが、その後ふっとばされ少し後退。あれですね、皆さん体の入れ方とか前への出方とかお上手、ちょっと感心してしまいました。その後何度か元の位置に戻ろうとしましたが残念な結果に終わりました。


やっぱ久しぶりってなことで燃えてるのかなんなのか体力のペース配分を間違えたか、結構早々には体力が無くなってしまい少し動けるお地蔵さん状態。店内のあまりの熱気と湿気に体力がなかなか回復せず、アンコール後のGET BACK 8BITで皆が超燃えてる時も、え何だっけこれ、wake up,polysicsか?(注:まったく似てません)としばらくの間分からないぐらいで頭もやられてましたwとりあえず最後のシーラカンスだけはそこまでに何とか貯めていた体力を使い果たすべく全力で暴れて終了。ダブルアンコールなんてあったら死ぬなと思うほどでありました。まじで燃え尽きました。全身もびしょ濡れで体力もゼロに近く、なんとなくハヤシの気分を味わったのでしたw


しかし汗だくは覚悟してたけどあれほどとは思いませんでした。着替は上から下までほぼ全部持って行きましたが、まさかベルトの替えまで必要だったとは・・・いつもそこまで汗だくにならないフミさんまで結構な汗でしたしね。恐るべしクアトロ?POLYSICS?それとも両方かな。


さくらのVPSとベンチ

色々なところで評判のさくらのVPS980についてぐぐり
http://pmakino.jp/tdiary/20100715.html
こういうページを見た
私も同じくやってみた

$ time perl -e '1+1*2/3%4 for 1..100000000'
real	0m4.587s

上記サイトに比べるとだいぶ遅いけどまあこんなものかなと。あと家で使ってる何世代前か分からないぐらい前の自宅サーバでやってみた

$ time perl -e '1+1*2/3%4 for 1..100000000'
real	0m19.173s

さすがPentium3-1GHzと比べるのは色々と問題があったようだ。時代を感じるなー、このサーバからすれば、さくらのVPS980がえらく凄いものに見えるし、ちょっと考えてみようかな。