2007-01-01から1年間の記事一覧

例外を整形する

すでに別の関数が用意されていそうな気もする。 def format_exception(e) backtrace = e.backtrace head = "#{backtrace.first}: #{e.message} (#{e.class})" rest = backtrace.slice(1..-1).map {|i| "\tfrom #{i}" } ([head] + rest).join($/) end def foo…

レシーバを変える

f = lambda do p self end f.call String.new.instance_eval(&f) String.module_eval(&f) main "" String追記 レシーバにかかわらず、コンテキストは憶えている…と。 def make_f a = 100 lambda do p self p a end end f = make_f f.call String.new.instanc…

tag cloud

ぱっと見で「なにが流行っているのか?」を知るにはいいとも思うけど、インデックス的なインターフェースとしては使いやすいのかなぁ?

yahoo_jp_transit 0.1.1

http://rubyforge.org/projects/yahoojptransit/ 駅名検索をできるようにした。 しばらくしたら、0.1.1がgemでインストールできるようになるはず。 yahoo_jp_transit (0.1.0) Scraping library for Yahoo! route information.(http://transit.yahoo.co.jp/) …

link:不在の証明、ミニクジラ

WEB

http://selfkleptomaniac.org/archives/359 よくわかる。

gemにjruby

もうこんなところまで。。。と感心してしまった。 ~/work$ gem install hpricot Need to update 5 gems from http://gems.rubyforge.org ..... complete Select which gem to install for your platform (i386-mswin32) 1. hpricot 0.6 (mswin32) 2. hpricot…

rails_async_callback: データベースに触る

以下のような感じで、データベースに触ることは出来た。 Bookをクロージャ内で評価するとワケワカなことに。。。 class FooController < ApplicationController def index AsyncCallback.invoke(Book) do |book_class| book_class.find(:all).each do |book|…

Yahoo!路線情報ライブラリ

http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/yahoo_jp_transit/lib/yahoo_jp_transit.rb?root=svn&view=markup 訳あって作成。しばらくしたらRubyForgeに登録する予定。 サンプル require 'yahoo_jp_transit' searcher = YahooJpTransit::Searcher.ne…

yahoo_jp_transit

http://rubyforge.org/projects/yahoojptransit/ とりあえず、リリース。 ~$ gem search -r yahoo_jp_transit *** REMOTE GEMS *** yahoo_jp_transit (0.1.0) Scraping library for Yahoo! route information.(http://transit.yahoo.co.jp/)

plugin: rails_async_callback

http://www.railsify.com/plugins/88-rails_async_callback とりあえず、こっちもリリース。追記 DBアクセスがうまくいってないっぽい、、、直さないと。 インストール ~/foo$ ruby script/plugin install http://railsasynccallb.rubyforge.org/svn/trunk/r…

死んだスレッドのコンテキスト

死んだスレッドのコンテキストって、記憶されてるのかなぁ。。。と思ったので、すこし実験。 fib = nil th = Thread.fork do a, b = 1, 1 fib = lambda { t = a a, b = b, a + b return t } end th.join 10.times { puts fib.call } 一応、動いてはいる。 ス…

シンプルに処理を非同期にする

この程度で事足りる処理も多いと思う。 AsyncCallbackはenvironment.rbとかてきとーなトコで生成。 controller class BarController < ApplicationController def index ASYNC_CALLBACK.invoke('あれあれ', 'しょりが', 'おくれて', 'はしるよ?') {|*args| …

シンプルに処理を非同期にする その2

Railsっぽく、スレッドセーフじゃない感じにしてみる。 async_callback.rbはLoadingModuleが勝手に読んでくれるとこに置いとく。 developmentモードだと何度も読み込まれるのが微妙な感じ… async_callback.rb class AsyncCallback @@queue = Queue.new Threa…

textwrap

http://rubyforge.org/projects/textwrap/ textwrapモジュールのへなちょこRuby版。 ~$ gem search -r textwrap *** REMOTE GEMS *** textwrap (0.1.0) Text wrapping and filling library like Python textwrap module. 使い方 require 'rubygems' require …

Railsify!のCAPTCHA

画像はランダムで選択されるっぽい。 登録しようとして、しばらく頭をひねってしまった。。。

最近の戦果

走ることについて語るときに僕の語ること作者: 村上春樹出版社/メーカー: 文藝春秋発売日: 2007/10/12メディア: 単行本購入: 22人 クリック: 459回この商品を含むブログ (499件) を見る村上春樹は「なにはともあれとりあえず新刊は買う」作家だ。特にエッセ…

svn: 差分があるファイルだけexportする

svnだけでできそうな気がするんだけどなー。 #!/bin/bash N=${1} M=${2} TARGET=${3} ENTRIES=`svn diff -r ${N}:${M} ${TARGET} | grep ^Index | sed -r "s|^Index: ||"` for i in ${ENTRIES} do DIRNAME=`dirname ${i}` FILENAME=`basename ${i}` svn expo…

Ruby Masuda Library 0.5.0

http://rubyforge.org/projects/masuda/ インストール gem install masuda 使い方 require 'rubygems' require 'masuda' diary = Masuda::Diary.new diary.entries.each {|entry| puts entry.content } entry = diary.entry('20070712231804') puts <

pythonポーティングメモ

とりあえずendを書く 4タブから2タブに変換してると、制御構文を間違えてしまいそう(^^; 関係ないけど、2タブだとPythonは読みにくいということが分かった。あと、self._xxxxxをいちいち@_xxxxxにしてるけど、アクセッサ作っちゃったほうが楽かも。。。

self、self、self、self、self…

レシーバを明確することは、可読性を向上させる良い方法だと思う。 Rubyでコードを書いていると、ごくたまにローカル変数なのかメソッドなのか分かりづらくなって、selfを書きまくることがある。 それはさておき、メソッドにselfを明示的に渡すことはできる…

textwrap for Ruby

textwrapがRubyにないので実装してみた。 「すぐ終わるだろ」とか思っていたら、あっという間に深夜…とほほん。 dedentとfix_sentence_endingsは未実装。間違えたトコはない思うけど、正直微妙。 もっと効率のいい書き方があったら、どなたか教えてください…

精度を引数で渡す

知らなかった。 '%*s' % [5, 'xxx'] #=> " xxx"

JavaScriptのArray#sliceっぽく

endを指定しない方法ってなかったっけ? [1, 2, 3, 4, 5].slice(2..-1) # js: [1, 2, 3, 4, 5].slice(2)

Pythonの"xxxxx"[-1]っぽく

どっちがRubyらしいかなー。 "12345".split(//).last #=> "5" "12345".slice(-1..-1) #=> "5"

join

レシーバと引数が逆。なんでか気になる ",".join(["1", "2", "3"]) [1, 2, 3].join("\n")

やることメモ

optparse(optik)のポーティング 今週中ぐらいがメドかな。。。

テーブルの一覧を取得する

ActiveRecord::Base.connection.tables ActiveRecord::SchemaDumperを読んで。

更新系のSQLを直接実行する

ActiveRecord::Base.connection.execute('DROP ...')

データベースを切り替える

MySQLで同インスタンス限定。 ActiveRecord::Base.connection.execute("use #{dbname}")

Navicat欲しいなぁ

DB

Navicat for MySQLとToad for MySQLとCSEを使っていて、今のところNavicatが一番便利だけど、やっぱ高い。一桁違えば絶対買うのに… AoRに入賞して賞金で買えると良いなー。