Ruby

いろんな画像をAA Quine化するよ!

この辺の流れを見て楽しそうだなぁと思ったので真似してみました。 RubyでうどんげQuine(とAA型Quineの作り方講座) - ぬいぐるみライフ(仮) 404 Blog Not Found:perl - Quine.pm で(ほぼ)あらゆるPerl Scriptをquineに うどんげQuineに対抗して遊んでみた - …

SequelのTipsのようなもの

Rubyにおける軽量なデータベースツールキットとして、なかなかお手軽なSequelですが、実際に使うにあたっていくつか悩んだポイントがあったので、備忘録としてその解決法をメモしておきます。なお、この記事はRuby 1.9.1p378とSequel 3.8.0の組み合わせを対…

Twitterにおけるニコニコ動画の人気度をランキングするサービスを作ってみた

まだα版ですが、とりあえず見られるレベルにはなったので公開してみます。 ニコラン on Twitter (仮) - Twitterにおけるニコニコ動画の「今」の流行をお届けします Twitterの公開ツイートの中から、ニコニコ動画のURLを含むものを探し出し、ツイート数が多い…

Google App Engine/JRubyでTwitterの自動フォロー返し

先日Google App EngineのSDKが1.2.6にバージョンアップし、アプリケーションがメールを受信できるようになりました。 Google App Engine Blog: App Engine SDK 1.2.6 Released with Incoming Email, App Deletion, and more! Twitterの自動フォロー返しを実…

HTTP通信を伴うライブラリのRSpecを書く

伴う、というかそれがメインの機能だったりもするわけですが。少し前、以下の記事でごく単純なOAuthコンシューマの実装を行いました。 OAuthコンシューマの仕組みと実装 〜 Ruby編 - しばそんノート この小さなライブラリの使い方は以下の通りです。 require…

MySQL/Rubyにおける正しいエンコーディング変更方法

MySQLの文字化けを直したい! 発端はSequelを使ってMySQLのデータを操作するRubyスクリプトを書いていたときでした。UTF-8で保存したはずの文字列が、妙に文字化けしています。mysqlコマンドでエンコーディングの確認をしてみると、 $ mysql -h host -u user…

appengine-jrubyで簡単GAE/JRuby開発

少し前のエントリで、GAE/JRuby上でRackアプリを動かす手順を書きました。 Google App Engine上でRubyアプリを動かす手順 - しばそんノート このときの手順は、Java SDKをインストールして、GAE SDKをダウンロードして、jruby-complete.jarをコンパイルして……

Twitter Streaming APIをRubyで試してみる

Streaming APIとは TwitterのStreaming APIをご存知でしょうか。 Twitter API Wiki / Streaming API Documentation 2009年4月頃から試験的に公開されているAPIなので、ご存知な方も多いと思います。2009年8月現在でまだαテスト中ですが、これを利用すると、p…

GAE/JRubyで開発サーバを使わずに単体テストする方法

前置き Google App Engine for JRuby(以下GAE/JRuby)*1で開発をするにあたって不便に感じるものの一つに、単体テストのし難さがありました。開発サーバ(dev_appserver)って起動するまでに結構時間がかかるので*2、少し修正を加えるたびに開発サーバを立…

OAuthコンシューマの仕組みと実装 〜 Ruby編

前置き 前回の記事でOAuthを使ってTwitter APIにアクセスすることができるようになりましたが、ruby-oauthは内部でNet::HTTPを呼び出しているため、そのままではGoogle App Engine for Java上のJRuby(以下JRuby for GAE/J)で利用できません。「JRuby for GAE…

TwitterのbotをOAuthに対応させる

Twitterの認証方式について Twitterの認証方式にはOAuthとBasic認証の二通りの仕組みがあります。 Twitter API Wiki / Authentication Basic認証はお手軽なので、世に存在するTwitter APIを利用する一般的なクライアントは、大抵がこちらの方法を使っている…

JRuby on Google App Engineでのログ出力

前置き Google App Engine for Java(以下GAEJ)でJRubyスクリプトを書くにあたって、ログ出力をどうしたらいいのか、少し迷ってしまいませんか?標準出力や標準エラー出力に書き出したデータは単に無視されるだけですし、書き込みモードでファイルを開けま…

Google App EngineデータストアをRubyから簡単に使う

前置き 前回、前々回あたりでとりあえずGoogle App Engine for Java(以下GAEJ*1)上でRubyスクリプトを動作させることができるようになりました。が、どうしてもいつものRubyスクリプトとは勝手が違って、いまいちやりにくい気がします。例えばデータの記録…

Google App Engineで作るTwitter bot 〜 JRuby編

前置き 続きです。前回、Google App Engine(以下GAE)上でRubyスクリプトを動作させるところまでできました。次のサンプルとして、簡単なTwitterのbotを作成してみようと思います。…どうして普通のWebアプリケーションじゃないのかって?それはまぁ…色々あ…

Google App Engine上でRubyアプリを動かす手順

前置き Google App Engine(以下GAE)では、公式には現在のところPythonとJavaしかサポートされていませんが、JRubyという素晴らしいプロダクトのおかげでJava VM上でRubyスクリプトを実行できるため、考えようによってはRubyも既にサポート対象になっていると…

ソケットプログラミング - TCP/IPサーバの例

RubyなどのLLでソケット通信のプログラムを書いていると、あまりにも簡単に書けすぎて、ついついC言語でのソケット通信の書き方を忘れてしまいます。ということで、おさらいのためにシンプルなechoサーバをCで書いてみました。おおまかな説明はソース中にコ…

Rubyのcase式と===演算子について

前フリ 奥様、知ってらした?Rubyのcase式ってすっごくパワフルなんですって!単なる同値判定で振り分けるだけじゃなくて、例えばこんなこともできちゃうらしいんですのよ! case gets.chomp when /おはよう/ puts 'おはようございます、お目覚めはいかがで…

Rubyのメソッド呼び出し順

※以下の記述は ruby 1.9.1-p129 を前提としています。Ruby逆引きハンドブックの「SECTION-40 呼び出されるメソッドの決定方法」(p.145)が大変参考になったので、復習を兼ねて実際に試してみました。基本的にクラスの継承ツリーを辿っていくわけですが、Ruby…