ruby
色々未完成なのですが、放置気味だったのでとりあえず現状を公開することにしました。Yuyakeブラウザ上でRubyでWebアプリを開発してそのまま実行できる、というものです。フレームワークはSinatraのみをサポートしてます。利用にはGoogleアカウント*1が必要…
EventMachineの関数(em-http-requestとか)を多用すると、コールバックだらけになって訳が分からなくなるのが欠点です。Ruby 1.9のFiberを使うと、em-http-requestみたいな非同期関数を同期的に呼ぶことができます。em-synchronyというライブラリがそのような…
jruby-jars-*.gem をビルドする方法のメモ。 $ git clone git://jruby.org/jruby.git jruby $ cd jruby $ ant $ ./bin/jruby bin/gem install rake rspec $ ant gem $ ls dist jruby-complete-1.6.1.jar jruby-jars-1.6.1.gem jruby-complete-1.6.1.jar.md5 …
HpricotからNokogiriに移行しようとしていくつか罠にはまったのでメモしておきます。基本的には require "hpricot" → require "nokogiri" Hpricot(html) → Nokogiri::HTML(html) Hpricot::XML(xml) → Nokogiri::XML(xml) と書き換えるだけで、運が良ければそ…
を作ったので公開しました。Google Spreadsheet Rubyインストール方法: $ sudo gem install google-spreadsheet-ruby使用例: require "rubygems" require "google_spreadsheet" # ログイン。 session = GoogleSpreadsheet.login("[email protected]", "mypa…
JavaScriptが速くて、Rubyが遅い理由というエントリがあったのですが、コメントやトラックバック、追記などを読むと 実用上HotRubyがC Rubyより速いというわけではまったくない プリミティブ型の有無が原因という話はどうやら間違い のようです。とはいえ「↓…
HotRubyというJavaScript上で実装されたRuby VMを発見して、 これを使えばWebアプリのサーバ側もクライアント側もRubyで書く、とかできるのか つまりGoogle Web ToolkitのRuby版 そのためにはまずRPCかな ということでDRb風のRPCを実装してみました。その過…
手元のアプリのRailsのバージョンを1系から2.0.2にあげたら undefined method `<=' for :db:Symbol (NoMethodError) from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/connection_adapters/abstract/quoting.rb:61:in `quoted_…
open-uriはとても便利なのですが、BASIC認証とかPOSTとかができないので、そういうときだけはめんどくさになぁと思いながらnet/httpを使ってたのですが、WWW::Mechanizeを使うのが楽だということを最近知りました。BASIC認証、ダイジェスト認証: require "ru…
まずmingw版Rubyバイナリをダウンロードして、てきとうな場所に解凍します。ちょっとバージョンが古いですが、まあ問題ないでしょう。ここでは c:\ruby-mingw32\ bin\ruby.exe doc\ :という感じで置いたとします。次に、Cygwinのシェルを起動し、コンパイル…
2009/2/8追記: 今はもう↓の公式ドキュメントやid:macksさんのドキュメントなどいろんな情報が出ているので、このメモの存在意義は微妙ですが、一応1.9.1に合わせて修正しておきました。 多言語化 class String class IO この辺のドキュメントが見つからず(…
Rubyのリファレンスマニュアルの新しいやつができていたので、それをクラス名とかメソッド名で簡単に検索できるものを作りました。Rubyリファレンスマニュアル + 索引検索新しいマニュアルはBitClustというツールを使ってプログラムからも簡単にアクセスでき…
# gem install -r rails ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) OpenURI::HTTPError: 404 Not Found reading http://gems.rubyforge.org/gems/actionmailer-2.0.1.gemとか言われる。 # sudo gem update --systemしてみたらちゃん…
Trieというデータ構造を構築するTxというライブラリがあるんですが、これのRuby bindingを作ってみました。tx-rubyTrieははてなキーワードの付与みたいに、大量の単語をいっぺんに検索する場合に便利なデータ構造です。Txはインデックスがコンパクトになるの…
hoge "foo \"bar\" boke" mogeみたいなのをどうやってトークン分割すればいいかみたいな話になったので、Rubyでテキトーに書いてみました。 s.split(/([^ "]+|"(?:[^\\"]|\\.)*")/). enum_cons(2).map(){ |a| a[1] }
RubyForge : Universal Encoding Detector多言語対応の文字コード判別ライブラリ。Mozillaの文字コード判別ライブラリをRubyに移植したものらしいです。インストール: $ gem install chardet使い方: require "rubygems" require "UniversalDetector" require…
Rubyで半角カナ入りのテキストを、(NKFとかKconvで)JIS(ISO-2022-JP)からほかの文字コードに変換すると、文字化ける場合があったので、調べてみました。まずISO-2022-JPで半角カナを表す正式な方法はないようです。非公式な方法として ESC ( Jを使って8…
NKFでUTF-16に変換してunpackして〜とかやってもできるんですが、めんどくさいのでUnicodeライブラリを使ってみました。 "ほ".to_u[0] #=> U+307B HIRAGANA LETTER HO "ほ".to_u[0].to_i #=> 12411 0x307b.uchr.to_s #=> "ほ" $KCODE=="EUC"だとちゃんとEUC…
配列を作るならmapが使える場面で、Hashだといちいち result= {} for v in [1, 2, 3, 4, 5] result[v]= 2*v end とか書くのが面倒だったので、僕は module Enumerable def map_to_hash(h= {}, &block) for a in self (k, v)= block ? yield(a) : a h[k]= v e…
PythonでRubyのブロック付きメソッド呼び出しみたいなのをやる方法メモ。Ruby: def foo() yield(1) yield(2) yield(3) end foo() do |i| puts(i) end Python: def foo(): yield(1) yield(2) yield(3) for i in foo(): print i Rubyの方はputs(i)の部分がオブ…
ハマったのでメモ。printfで$KCODEと一致しないマルチバイト文字列を出力しようとすると文字化けます(この場合だと最後の1バイトが消えるみたい)。 require "kconv" s= "日本語".toeuc() $KCODE= "e" puts(s) #=> 日本語 printf("%s\n", s) #=> 日本語 $KC…
secondlifeさんの記事を読んで、とあるWebページから情報を抽出する*1ためにREXMLでごにょごにょしてたやつをscrapiで書き直してみました。ソースも簡潔になったんですが、なんかむちゃくちゃ速くなりました。具体的には、1MB程度のHTMLファイルを解析するの…
なんかRubyのリリースのことで盛り上がってるのをぼーっと読んでたんですけど、 政治的パフォーマンスとか社会的信用とかいうほどに、Rubyのリリース予定日って周知されてましたっけ。 僕はruby-devにそういう話が流れてるのしか見なかった気が…。 それともR…
RailsでActiveRecord::StatementInvalidとかいうエラーが出たので何かと思ったら、テーブル名を間違って単数形にしてただけでした。分かりにくいエラーだな…。*1 *1:SQLでエラーになると全部これになるのかな。
まずCaboCha本体。*1 $ tar xvzf cabocha-0.53.tar.gz $ cd cabocha-0.53 $ make # make installそしてRubyのライブラリ(SWIGをインストールしておく必要あり)。 $ cd swig $ make ruby $ cd ../ruby $ ruby extconf.rb --with-opt-include=/usr/local/inc…
夏休みの宿題 - ポーランド記法 - Rubyist Magazine 15号jumius氏のにインスパイアされて正規表現だけで頑張ってみました。 a= "- + 1 / 2 2 + 3 * 4 5" 0 while a.sub!(/([^ \w]) (\d\S*) (\d\S*)/, '\2_\3_\1') p a.gsub(/_/, " ") # ==> "1 2 2 / + 3 4 5…
なんでrubyには - 'hceT'.sub(/\Z/,'bus').reverse Enumerable#shuffle - 満足せる豚。眠たげなポチ。 確かにあると便利ですよねぇ。僕も勝手に定義して使ってます。うちのはこんな感じです。 module Enumerable def shuffle() return self.to_a().dup().shu…
というわけでちょろっとロイディの発表をしてきました。スライドはこちら。5分間ということで、紹介程度の軽い話ですが。DHHさんの発表が面白かったです。内容の細かいところは他の誰かに譲るとして、大雑把に言うと アクションはできるだけCRUDにしよう。 …
に、行ってきました。これから明日の発表のスライドの修正とかしないといけないので、今日の内容についてはこちらを参照ってことで省略。学会なんかと違って、すごくフランクな雰囲気で面白いです。
各言語での未定義メソッドの呼び出し&メソッド動的定義。ふむふむ。ちょうどこの前「method_missingってPerlでどうやるんだろ?」と思って調べたところでした。メソッド名自動生成&メソッド動的定義(Ruby)の「オブジェクトごとにメソッドを定義する」の…