ruby

ブロックによるRuby内DSLの起源

時代とともにRubyの使われ方は変わってきましたが、いつの頃からか発生したDSLのホスト言語としての役割にはずっとお世話になってます。人に優しく、故にプログラマ以外にも優しく、これがとてもRubyらしくて好きな点です。 #ruby25th— Yuki Yugui Sonoda (@…

APIデザインケーススタディ —— Rubyライブラリを移植する前に読む本

『APIデザインケーススタディ』という本を頂戴したので読んでみた。この本はRuby標準ライブラリを題材にして、分かりやすく、多様な機能をサポートして、互換性を保つAPIの設計をする...

Ruby-Jsonnet

最近Jsonnetを触っていて、とりあえず公式のC++ライブラリをラップしたRuby拡張ライブラリを書いてみた。 合わせて、QiitaにJsonnetの解説記事も書いてみた。

Managed VMsに移行

今までこのblogはVPS上で動作させてきたが、この度Managed VMsに移行した。 Wikiと全文検索は一時的に利用不能になっているが、他はそのまま動作しているはずだ。主な動機はいまどき個人blo...

言語処理100本ノックを敢えてRubyで (3)

20. JSONデータの読み込みrequire 'json' uk = File.foreach("jawiki-country.json"). map(&JSON.method(:parse)). find {|article| article['title'] == 'イギリス' } raise "no article about イギリス" unless uk puts uk['text'] 感覚的なものだけど、こ…

言語処理100本ノックを敢えてRubyで (2)

10. 行数のカウントp $<.count !sh wc hightemp.txt $<の仕様はまさにこういう処理を書くために考えられている。 が、今回に関しては普通ならわざわざ書かずにwcを使う。11. タブをスペースに置換$<.each_line do |line| puts line.gsub(/\t/, ' ') end !sh …

言語処理100本ノックを敢えてRubyで (1)

言語処理100本ノックを(飽きるまで)やってみるにあたり、敢えてRubyで書いてみる。基本的にはPythonを想定しているらしいし、そもそもNLPライブラリの充実度から言ってもPythonを使うのが極めて妥当な選択といえるだろう。そこを敢えてRubyで。00. 文字列の…

アンダースタンディング・コンピュテーション

『アンダースタンディング・コンピュテーション』を監訳者の笹田さんから頂戴したので、読んだ感想をまとめてみる。この本はRubyを用いて計算理論を紹介しようというものだ。具体的には次のようなトピックを扱っている。 形式的意味論 操作的意味論 表示的意…

環境に優しい難読コード

ぼちぼち忘年会やクリスマス会のシーズンとなってきた。そんなパーティーの1つに出欠の連絡をしなければならない場面があったのだけど、どうやらネタ回答を期待されているらしかったので次のように回答した。puts [[->(&f){->(n){f[f[f[f[f[f[f[f[f[f[f[f[f…

ぐんまRuby会議01で発表した

ぐんまRuby会議01で発表してきた。講演依頼では、「Rubyを通じて見てきた世界、ソフトウェア開発者としての世界観を語ってほしい」とのことであった。そうすると、私がRubyに関わっている理由は2つだ。 個人的にRubyが好きで手に馴染んでいて、これからも継…

指定バイト数ぐらいの長さの文字列を読み込む方法

IOから指定したバイト数以内の長さを読み込みたいが、多バイト文字の途中で切れてしまうのは嬉しくないのでそういうときはもう少し読む、というような処理を書きたいことがよくある。 これ、というメソッドは見当たらないので仕方がないから自前でバッファリ…

rubykaigi.orgの歴史

whoisしてみると分かるようにrubykaigi.orgドメインは現在私が所有している。元々RubyKaigiは独自のドメインというのは持っていなかった。その頃、確か高橋か角谷さんにだったと思う、rubyconfみたいにドメイン取らないのかと聞いてみた。取るつもりはないと…

Localizing irb messages

Do you know rubyists in Japan use Irb in Japanese?% irb --help Usage: irb.rb [options] [programfile] [arguments] -f ~/.irbrc を読み込まない. -m bcモード(分数, 行列の計算ができる) -d $DEBUG をtrueにする(ruby -d と同じ) -r load-module ruby .…

システムをRuby 1.9に移行

このブログシステムはこれまでRuby 1.8で動いていた。これをRuby 1.9に移行するのは長い間の夢だったのだけれども、なかなか実現できなかった。まず1.9.1が出た初めの頃にはライブラリの対応がまるで駄目であった。そこで手始めにpostgresqlドライバを移植し…

Pulling Strings with Puppet

著者 James Turnbull 表題 Pulling Strings with Puppet: Configuration Management Made Easy 出版者 Apress ASIN 1590599780 価格 ¥ 1,763 『Pulling Strings with Puppet』を...

松江行

RubyWorld Conference 2010で発表を依頼されて松江に行ってきた。基本的には先の記事に書いたとおり、Ruby会議2010同じような内容の発表である。RubyWorld Conferenceのほうはgeekばっかりじゃなくもっ...

Ruby 1.9.2のリリースと、イベントでの発表と

去る8月18日、Ruby 1.9.2-p0をリリースした。これは、Rubyの最新安定ブランチとなるRuby 1.9.2の初のリリースである。先日のRuby会議2010でもこのリリースについて報告してきた。Ruby 1.9.2 is released...

How many Ruby hackers does it take to change a lightbulb?

Fifty: One to post an issue to the redmine about the lights being out. One to write a patch for the issue. One to oppose the patch because the new lightbulb does not have a good name. Three to propose better names. Five to discuss the name…

Don't use String#force_encoding

I can find many Ruby codes which use String#force_encoding. But most of them are wrong. You should not use the method.Ruby 1.9 EraIn this year, the first release of Ruby 1.9 series was shipped. And I will soon release Ruby 1.9.1-p376. 2009…

Three implicit contexts in Ruby

Yehuda Katz wrote an article about self and metaclass. In the article he said that Person.instance_eval assigns Person's metaclass to self for a class Person. But this is obviously wrong.class Person; end Person.instance_eval{ p self } #=>…

インタビューを受けました

@IT自分戦略研究所の連載企画「今週のリーダー」の第33回ととして、私がインタビューを受けました。 Rubyを支えるYuguiの自信 「最後にはわたしがいる」というタイトルで公開されてい...

I will speak at RubyConf 2009

I'll speak at RubyConf 2009. My presentation is "Making Ruby a Bazaar Project".I think Ruby must be more bazaar. But Ruby is not. There must be many reasons. A large reason is the language barrier between English and Japanese. So I will ta…

Ruby 1.9.1発掘メモ

なんか、ハードディスクから古いメモファイルが出てきたので削除する前にこっちに転載しておく。 Ruby 1.9.1リリース前の2008年7月頃のメモじゃないかと思われる。 ABI fixの前にstruct RArray...

How to port your gem to Ruby 1.9

This article shows you how to multilingualize your gem with Ruby 1.9.6 months ago, Ruby 1.9.1 was released. Some gems support Ruby 1.9, others do not. At RubyKaigi2009, I said that you should port your library to Ruby 1.9 now.Well, what is…

Ruby会議で発表した

日本Ruby会議2009で発表した。Ruby 1.9.2へ向けた案内をしたのだけど、Ruby 1.9.2はひたすら地味である。地味に改善はされているけど、地味に仕様変更もあるし、総じて存在が地味だ。ただ、...

ブランチメンテナンスの戦略

Ruby 1.9.1のメンテナンスを引き受けた当初、メンテナンスの指針として参考にできるものは多くはなかった。Ruby 1.8系のやり方を参考にしたくて、いくつか卜部さんに教えを乞うたりはした...

Rubyコミッタ一覧

Rubyのコミッタ一覧を作りました。3種類のフォーマットがあります。 OPML (フィードリーダー用) RDF (FOAF) YAML (元データ) YAML版は手で書きました。その他の版は整形器で生成しました。HTML版...

The List of Ruby Committers

I made a list of the Ruby committers. The list is available in three formats. OPML (for feed readers) RDF (FOAF) YAML (original data) The YAML version is written by hand. Other versions are generated by this generator. And you can also gen…

Multilingualized ruby-pg

ruby-pg 0.8.0は一応Ruby 1.9に対応しているものの、エンコーディング周りをきちんとサポートしていなかった。つまり、PGconnが折角エンコーディング情報を持っているのに、クエリの結果セッ...

Ruby 1.9.1-p129リリース

Ruby 1.9.1-p129をリリースしました。これは脆弱性の修正を含みますので、Ruby 1.9.1をご利用の方にはアップグレードをおすすめします。ソースコードは次のURLからダウンロードできます。win32...