Ruby

開発者向けリアルタイムチャットアプリケーション『AsakusaSatellite』 0.7をリリースしました

前回のバージョンアップからだいぶ時間が空いてしまいましたが、AsakusaSatelliteの新バージョンのリリースを行ないました。前回まではSkypeで相談しながら開発するというスタイルでした。しかし、今回のバージョンアップで機能が多数追加されたことによりAs…

RubyのMochaはメタボ気味だった件について

id:suerさんとRubyのスタブ/モックフレームワークのMochaを追いかけてみたら、わりとメタボ(メタプログラミング)気味だった件について。 まとめ Mochaはテストフレームワークのメソッドを書き換えて、魔術的なことを実現してるよ! 挙動 Mochaを使うとこんな…

TwitterのDM送信プログラムを書いてみた

グリーンバンドが届きました! ほいで、賛同者の方々に住所を聞くDMをがんがん投げたくなったので、自動送信プログラムを書いてみました。もちろんTDDです。 テスト #! /opt/local/bin/ruby -w # -*- mode:ruby; coding:utf-8 -*- require 'dmsender' $sleep …

RubyでHaskell風のリスト操作

30分プログラム、その622。RubyにHaskell風のリスト操作を移植しました。 Rubyでコードを書いてるときに、take_whileとかが欲しくなることが何度かあったので、実装してみました。 メソッド内部で副作用を使っているのが何個かありますが、外から見たらちゃ…

bit.lyの展開

30分プログラム、その578。新しくTwitterが採用した、URL短縮サービスbit.lyを展開してみよう。APIを使うのはAPIキーが必要になったりして面倒だなー、と思いながらtinyurlの展開をしてるtig.rbのコードを読んでみた。そしたら、実に賢いことしてた。 def un…

いろんなアーカイブを展開できるコマンド

30分プログラム、その567。いろんなアーカイブを展開できるコマンド。 ターミナルでアーカイブを展開するには、それぞれコマンドを変えないといけない。例えばば、hoge.tar.gzなら、"tar xvzf hoge.tar.gz"、hoge.zipなら"unzip hoge.zip"みたいな感じに。で…

バッテリーの残量表示

30分プログラム、その426。HP2133に入れているUbunutuのウインドウマネージャをRatpoisonにしたら、バッテリー表示が消えてしまった。 でも、バッテリー表示のためにGNOMEにはもどれない体になってしまったので、簡単なバッテリー残量表示プログラムを書いて…

せっかくなのでRubyでも

>> (0..1000).to_a.to_s.scan(/0/).size => 193

prototypeパターン

30分プログラム、その377。Rubyでprototypeパターンをやってみる。 そもそもprototypeパターンは、インスタンスをクラス的に扱うテクニックでしかない。でも、Rubyではクラスを値として扱えるから、prototypeパターンなぞ不要だ、ということが言いたかった。…

Rubyでデザインパターン

30分プログラム、その368。Rubyでデザインパターンの一部を書いてみた。 前にRubyで学ぶデザインパターンを見たときに、Rubyでデザインパターンをやるときは、Javaのをそのまま移植する必要はないなぁ、と感じたのでやってみた。 Rubyだとinterfaceやらabstr…

Branfuckインタプリタ

30分プログラム、その361。ネタ言語とし有名なBrainfuckのインタプリタを書いてみた。 ちなみに、サンプルコードはこのへんからもらってきた。 使い方 $ ruby brainfuck.rb HELLOBF.BF Hello World! ソースコード #! /opt/local/bin/ruby -w # -*- mode:ruby…

Problem48

30分プログラム、その322。Problem48 - Project Euler。 次の式は、11 + 22 + 33 + ... + 1010 = 10405071317 である。 では、11 + 22 + 33 + ... + 10001000 の最後の10桁を求めよ。 正直にやったらどうなるんだろう、とRubyでワンライナーを書いたら解けて…

ホワイの(感動的)Rubyガイド

ホワイの(感動的)Rubyガイド BEST SOFTWARE WRITINGに要約が載っていて、なかなかしっかりしているように感じたので。 RailsやってるけどRubyが分からん、と嘆いていたhmxは読むといいんじゃないかな。 アメリカのティーンエイジャーはこれを読むと笑いころ…

Rails本再読

ここ2日ほど仕事でRailsを使っているのでRailsによるアジャイルWebアプリケーション開発の前半部分を再読。たいぶ色々忘れているなぁ。でも読めば思いだせるのは幸い。 後半の各モジュールの詳細は、使っているActiveRecordとActiveView、ActiveControllerの…

http://fastladder.com/reader/をはてブしたい

30分プログラム、その263。http://fastladder.com/reader/をはてブしたい。 Fastladderにログインしないで、http://fastladder.com/reader/にアクセスするとログインページにリダイレクトされてしまうため、はてブに登録できない。参考: はてなブックマーク…

TMailで添付ファイル付きメールの送信

30分プログラム、その258。TMailを使って添付ファイル付きのメールを送信してみる。 実際のメールの送信はsendmailに任せるので、メールの内容を標準出力に出すだけ。 使い方 $ ruby attach-mail.rb | sendmail -t ソースコード #! /opt/local/bin/ruby -w #…

2chのBBS MenuをYAMLに

30分プログラム、その256。2chのBBS MenuをYAMLに変換してみる。 BBS一覧はBBS Menuから取得すればいい。ただ、日本語をto_yamlに出力するとバイナリと見なされてしまう。解決法はあるらしいけれど面倒なので、直接putsでYAMLを出力するようにした。 使い方 …

caseの書き方

Rubyコーディング規約 caseを使用できる場合は、caseを使用する。 やっぱりどう考えても、このcaseの使い方は変だろう。 case path.basename.exist? when true name = alt_name(Pathname.new("."),path.basename(".*"),path.extname) FileUtils.mv(path,name…

ディレクトリの平坦化

30分プログラム、その249。ディレクトリの平坦化。 あるディレクトリとその子孫に含まれるファイルをひとつのディレクトリに集めるスクリプト。 特に意味はないんだけれども、思いついたので。ただ単に書くだけではつまらないので、Rubyコーディング規約に従…

ping

id:mallowlabsに教えてもらった。Rubyでpingは2行で書ける。 require 'ping' puts Ping.pingecho('localhsot') http://www.ruby-lang.org/ja/man/html/ping.htmlすげー。

Proxy CGI

30分プログラム、その238。Proxy CGI。リクエストを肩代りするやつ。 昔(id:mzp:20060521)、似たやつを作ったけど、今回は画像ファイルなどにも対応した。画像ファイルへのアクセス時に、Refererを殺したかったので作ってみた。 使い方 http://howdyworld.or…

LeopardでのRubyGems

LeopardでRubyGemsを使おうとすると、sourcesがロードできないと怒られる。 $ sudo gem install mysql /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- sources (LoadError) from /…

アスキーアートの画像化

http://howdyworld.org/junk/aa.html30分プログラム、その237。AAの画像化。 とりあえずCGI化した。一部ブラウザでは使えない予感。 ソースコード #! /usr/bin/env ruby # -*- mode:ruby; coding:utf-8 -*- # # aa.rb - # # Copyright(C) 2008 by mzp # Auth…

MSNボット - ログインログ

30分プログラム、その235。MSNメッセンジャーで、誰が何時にログインしたかを記録するボット。 本当は、Ruburpleを改造して、表示名を変更できるようにしてやるぜー、と思ってたけれどPidgin API リファレンスが落ちているので断念。で、手軽にできそうなボ…

MSN ボット

30分プログラム、その234。Ruburpleを使ってMSNボットを作ってみる。 RuburpleはPhidgin(マルチプロトコルIM)のライブラリlibpurpleのRubyバインディング。ざっと使ってみたところ、全てのAPIが使えるわけではないっぽい。MSN以外にもIRCとかSkypeとかにも対…

Ruby勉強会でS6を使ってみた

今日のRuby勉強会で、S6を試してみた。印刷がもっと楽にできるようになるといいなぁ。資料はこちらです。http://howdyworld.org/slide/ruby-slide.html

ID3Tagの文字コード変換

30分プログラム、その207。iTunesでの文字化けを解消するために、ID3Tagの文字コード変換プログラムを作ってみた。 結局はこれでは解決せずに、http://ipod-life.org/archives/2004/12/itunes_aaaaeaa_1.phpに書いてある方法で解決した。もしかして文字コー…

派閥ジェネレータ

派閥ジェネレータなるものを作ってみた。twitter派閥やカラスはなんで感電しないのか?にあるようなアスキーアートを生成するやつ。例えば、こんなやつが簡単に作れる。 変数名派閥 ├─簡単なやつは略語でいいよ派 │ ├─x,y,z派 │ ├─foo,bar派 │ └─hoge,hage派 …

携帯メールで散財.com

予告通り、散財.comにメールで投稿できるようにした。 ただ、来年の2月のアップデータで携帯に対応されるらしいので、適当に作ってある。 どう適当かと言うと、品名と値段しか登録できない。添付画像ができたり、ジャンル・カテゴリが選べたりしたら楽しいと…

散財.com

30分プログラム、その199。散財.comにプログラムから投稿する。 最近、散財.comを始めたんだけど、携帯から投稿できないのが面倒。そこで、メールを送るだけで投稿できるプログラムを作ろうと思う。 で、それの下準備としてWWW::Mechanizeを使って投稿してみ…