「Ruby」カテゴリの記事
CRuby 2.1.0の非互換性-Symbolクラスにモンキーパッチできなくなった件
忘れないうちに[Nendo]をCRuby 2.1.0で動かすのに苦労した話を書いておこう。 多分、SymbolにモンキーパッチしているプログラムはCRuby 2.1.0で動かなくなるので、その時に誰かの役に立つかもしれない。
Ruby 2.0(開発版)に入ったEnumerable::Lazyを試してみた(Nendo編)
「2012-04-01Ruby*Nendo Ruby 2.0(開発版)に入ったEnumerable::Lazyを試してみた」の続き。 Ruby 2.0をビルドする手順は先日の記事を参照してほしい。 今日は、Nendoでも試してみた。 もうひとつLazyな写真
Ruby 2.0(開発版)に入ったEnumerable::Lazyを試してみた
ゆくゆくは Ruby 2.0に入るようだ。 今回、Ruby 2.0の開発版を実際に動かしてみた。 Ruby 2.0 Enumerable::Lazy | Railsware blog (うちの猫がLazyな時の写真)
fuzzy-string-match 0.9.3 リリース
二つの文字列同士を曖昧比較するライブラリ fuzzy-string-match をリリースしました。
nativeとpureの両方に対応したgemを作る方法
[Sekka]の曖昧文字列マッチングを担っているkiyoka/fuzzy-string-matchというgemのpure ruby版を作った話を書く。 JSONのgemがnativeとpureの両方をサポートしていたので参考したのだが、結果的にJSONよりもコンパクトに実現できたのでメモしておこう。
fuzzy-string-match 0.9.2 リリース
二つの文字列同士を曖昧比較するライブラリ fuzzy-string-match をリリースしました。
Rubygems.orgから取得したgemでエラーが出るのはなぜか(追記)
昨日のエントリ「2011-09-29Ruby* Rubygems.orgから取得したgemでエラーが出るのはなぜか」の続き。
Rubygems.orgから取得したgemでエラーが出るのはなぜか
ずっと前から自分が作ったgemが環境によってエラーになる原因が解析できずにいた。 やっと、tenderloveことAaron Patterson氏が書かれたブログエントリでメカニズムが理解できた。
Travis CIを使ってみた
Travis CIはRubyのオープンソースプロジェクトの継続的インテグレーション(CI)を行うプラットフォーム。 Travis CI - Distributed build platform for the Ruby community An open-source, distributed build system for the Ruby community.
関西Ruby会議03でNendoのライトニングトークをした
Rubyで書いたLisp処理系の[Nendo]についてLTさせてもらった。 スライドはこちらでどうぞ。 Nendo At Kansai Ruby Kaigi03(SlideShare) ※ スライドの色合い等が@kakutaniさんのスライドに似ていますが、気にしないでください。@kakutaniさんのプレゼンばっかり見ていたら自然とこうなってしまいました。(笑)
Nendoパフォーマンスチューニングメモ(1)
[Nendo]処理系のパフォーマンスチューニングを実施した際のメモを晒しておく。(こういう記録はブログとかWikiに書いとくのが一番だと思う)
fuzzy-string-match 0.9.0 リリース
二つの文字列同士を曖昧比較するライブラリ(gem)をリリースしました。 lucene-3.0.2からJaro-Winkler distance アルゴリズムだけをポーティングしたものです。 キーワード検索でユーザーのタイプミスをある程度許容したい時なんかに使えると思います。 ちなみに、私は[Sekka]という日本語入力メソッドで使っています。 結果は上々で、ローマ字にタイプミスが混在してもそれなりに合っていれば漢字を探しだしてくれるので重宝しています。 限界速度ぎりぎりまで打鍵スピードを上げてもそれなりに漢字変換ができてしまうので非常に効果を感じています。
Web+DBのRails3特集が良い
WEB+DB PRESS vol.58 はオススメ。 WEB+DB PRESS Vol.58 著者: 編, WEB+DB PRESS編集部: 本 Amazonで見る 自分はRailsで開発したことは無いのだけど、この特集は現在のRailsがどのようなものかを全方位で把握できる素晴しい特集だ。 PHPとか、RubyとかJavaとか別の言語でWebアプリを作っている人も読んどいて損は無いと思う。今迄Railsを横目に見ていたひとは特に。 今後はスーツな人の間でもWebアプリというとRailsが候補に挙がる状況が想像できるので、チラ見しておこう。 Rails2と違ってRails3は相当モジュラリティが上がっているようで、どんな部品を組みあわせてもRailsに収容されてしまう。 自分に関係するところでは、仕事でRails3を使うということもそうだけど、Rails3にNendoを組み込むこともできそうだ。
Rackについて学ぶ
現在、新しい日本語入力メソッド(Sekka)を試作中なのだが、サーバとクライアントの通信はHTTPにしようと考えている。([Sumibi.org]もHTTPであったが) 日本語入力メソッドは[Nendo]で書いているので、WebサーバはRubyで書かれたものが使える。というか使えるようにする。 その中でも、Ruby界ではRackというフレームワークが標準になっているようなので、それを試しに使ってみることにした。 Rackって何? という方はこのyharaさんの良記事を読んで頂ければ即理解できるだろう。 Route 477 - 5分でわかるRack , シュレーディンガーの猫たち
Rubyの呼び出しスタックの深さ制限値を広げることはできるか
Rubyで、再帰呼び出しの回数が深すぎると、スタックオーバーフローになる。 再帰を多様する関数型プログラミングスタイルでコーディングなんかすると頻繁にスタックオーバーフローを目にすることになる。 例 tail_recursion_normal.rb:7: stack level too deep (SystemStackError) [Nendo]の末尾再帰最適化をやろうとして、ふと思った。「Ruby側のstackの深さ制限を緩和すれば、そこそこ深い再帰呼び出しをしても実用レベルでは問題にならないんじゃないだろうか」
Ruby 1.8と Ruby 1.9の違い
[Nendo]の文字リテラルの扱いをどうしようかとRubyを調べてみると、Ruby 1.8とRuby 1.9に違いがあることを知った。 意外と大きな仕様変更なのではないかと思う。 [ 先取り!Ruby 1.9.1 (2/3)](http://www.thinkit.co.jp/cert/article/0709/26/2.htm) この変更に伴い、いくつか文字列まわりに重要な変更が発生します。 例えば、文字の扱いがいろいろと変わります。従来、文字列に対して「 String#*n*」とすると、バイト列のn番目の数値が返ってきました。つま り、"Hello"*0*は72を返す、といった具合です。しかし、今後文字列はエ ンコード情報を保持しますので、"Hello"*0*は"H"という1文字を返すよう になります。
Scheme脳に偏った変なコーディングについて
私はRubyでプログラミングする時、次の様にRubyらしからぬコーディングスタイルを取る。(仕事では同僚とコード共有するのであまりやらないけど)
Rubyのメソッドはファーストクラスオブジェクトだった
Yuguiさんのエントリーより引用 ファーストクラスオブジェクトとしてのメソッド - 世界線航跡蔵 やー、Rubyのメソッドはファーストクラスですよ。返り値にできて、変数に格 納して演算できて、引数にできるという意味では。 確かに、RubyはPythonやJavaScriptやSchemeに比べると高階関数を陽に使うプ ログラミング*1 は不格好になる。Pythonなら簡単なのに、 bound_function = obj.hoge bound_function(arg1, arg2, arg3) Rubyは余計なメソッド呼び出しがくっついて不格好だ。 method = obj.method(:hoge) method.call(arg1, arg2, arg3) 私もこの点が気にくわなくてまつもとさんに「メソッドがファーストクラスだっ たらいいのに」と言ったことがある。でも、まつもとさんの考えではすでに ファーストクラスということだった。
RSpecでraise_errorマッチャの使いかたを勘違いしていた
RSpecのexpectationの書き方で、気を付けないと行けないところ
Rubyのよくわからない挙動(1)
===メソッド(比較演算子)の挙動がよくわからない。 クラス A を定義し、インスタンスを a に代入する。 $ irb >> class A ; end class A ; end => nil >> a = A.new a = A.new => #<A:0x3637ec>
Schemerにとって理想のRubyとは(2)
[kiyoka.2008_02_25]の続き。 Rubyにnamed letみたいなのが欲しい 再起でレキシカルアナライザが自然に書けるよ。 def lexer( f ) tokenList = * * let loop { |ch = f.readchar, prev, token = ""| case ch when f.eof? else # トークンの蓄積 case...
Schemerにとって理想のRubyとは(1)
Schemerはこんなコードを書きたいと思うはず。defとlambdaは同じであるべきだ。
22件の記事があります。