タグ

rubyに関するtettsyunのブックマーク (58)

  • ネタベタオタの上には - 書評 - メタプログラミングRuby : 404 Blog Not Found

    2010年08月24日23:45 カテゴリ書評/画評/品評Lightweight Languages ネタベタオタの上には - 書評 - メタプログラミングRuby 出版社より献御礼。 メタプログラミングRuby Paolo Perrotta / 角征典 [原著:Metaprogramming Ruby] 「ただの」プログラマーで終わりたくない人、必携。 Rubyistsはもとより、そうでない人も。 むしろRuby以外のプログラミング言語をホームグラウンドにしている人は、Rubyistsよりもさらに得るところが大きいかもしれない。「私の言語ではどうやる?」を考え、実際にやってみることで、Rubyも「母国語」も理解が深まるのだから。 書「メタプログラミングRuby」は、Rubyにおけるメタプログラミングを物語形式で学ぶ一冊。舞台はRubyを使っているある会社。平凡なプログラマー、ボブは、

    ネタベタオタの上には - 書評 - メタプログラミングRuby : 404 Blog Not Found
  • Ruby で MNIST 手書き文字データを扱う - 木曜不足

    PRML Hackathon #1 参加中。 はやくもプチ煮詰まり中(ぉぃ)。 Ruby で書いている人は他にいなさそうだが、気晴らしに Ruby で MNIST データを扱うためのコード片を さらしてみる。 require 'zlib' n_rows = n_cols = nil images = [] labels = [] Zlib::GzipReader.open('train-images-idx3-ubyte.gz') do |f| magic, n_images = f.read(8).unpack('N2') raise 'This is not MNIST image file' if magic != 2051 n_rows, n_cols = f.read(8).unpack('N2') n_images.times do images << f.read(n_row

    Ruby で MNIST 手書き文字データを扱う - 木曜不足
  • メモリ破壊の現場を見つけるTips - I am Cruby!

    RubyAdventJP, GC, Ruby(この記事はRuby Advent Calendar jp: 2009 : ATNDの4日目です。前日はmrknさんでした) 健全なるRubyistであれば、RubyのGCをいじることが週に一度はあるでしょう。そのときに困るのが、GCをいじってしまったことによるバグの修正です。GCをいじるというのは想像以上に難しく、少しでも書き間違えるとメモリ破壊が発生します。そのときに使えるTipsをこの記事で書くことにします。 みなさんご存じの通り、メモリ破壊というのは原因を特定するのが困難です。これは問題が発覚する場所とメモリ破壊が起こった現場が位置的に遠いことに起因しています。偉大なるハッカーのまつもとさんですら、その発見は困難です。 [ruby-dev:38628] Re: [BUG: trunk] called on terminated objec

  • Engineering Rapleaf - BloomFilter

    For engineers by engineersWe recently had a situation where we had to search a big list of 500 million hashes against a list of 40 million hashes. The 500M hashes were stored in flat, unsorted text files on 5 DVDs, so there was no easy way to search that list. The 40M hashes were stored in a MySQL database. Some benchmarking showed that it would take something like 20 days to run every one of thos

  • Route 477(2007-12-01)

    ■ [javascript] JSONをevalするときは括弧で囲まないといけないらしい? eval("{}") これはundefinedだが eval("({})") これは Object のインスタンスを返す。 JSONをevalするときは result = eval("("+json+")"); とするのがセオリーなのかな?(prototype.jsはそうなっている) ■ [ruby][scheme] S式をRubyで手軽に生成する ちょっと気の利いたWebAPIを作ったとき、フォーマットはJSONかXMLが代表的なんだけど、 ことSchemeから使うのならS式の方が使いやすいのは容易に想像できると思われます。 が、JSONは gem install json すれば JSON.generate(obj) で手軽に生成できるのに対し、 S式はRubyから手軽に生成する方法がありません

    Route 477(2007-12-01)
    tettsyun
    tettsyun 2010/05/06
    S式
  • Ruby Best Practices - Full Book Now Available For Free!

    The last few weeks have been a wild ride. Starting in January, I’ve been releasing a chapter at a time here on the RBP blog, and many of those chapters were pretty well commented on. Just for the sake of completeness, here’s a link back to each of those posts: Chapter 1: Driving Code Through Tests Chapter 2: Designing Beautiful APIS / Chapter 3: Mastering the Dynamic Toolkit Chapter 4: Text Proces

  • サディストのための Ruby メトリクス計測入門 - たかみやの日記

    ふぬけたコードをきたえるRuby で書かれたソースコードのまずい部分をメトリクス計測ツール (reek, roodi, flog, flay) を使って機械的に発見しましょうというお話です。それぞれのツールは次のことをチェックしてくれます。 reek: リファクタリングできそうな部分を発見 roodi: (reek とは別の指標で) リファクタリングできそうな部分を発見 flog: 複雑すぎる部分を発見 flay: 重複している部分を発見ポイントは、さまざまなチェックを rake コマンド一発でビシッとできるようにすることです。こうすることによって、その日の気分に左右されることなく一貫した厳しいチェックが繰り返しできるようになります。なおこの日記は、この記事を一部参考に書きました。ありがとうございます。 使い方コマンド一発で計測できます。 % rake quality もしコードにまずい部

  • モックとスタブの違い

    マーティン・ファウラー氏http://martinfowler.com/の以下のページを翻訳したものです。 Mocks Aren't Stubs モックはスタブではない 関連ページ Unit Test More Efficiently with Mock Object Alternatives http://www.devx.com/Java/Article/22599 日語:モック、スタブ、擬似オブジェクトを使った効率的なユニットテスト http://d.hatena.ne.jp/devbankh/201001 "モックオブジェクト"という言葉は、テストのために物のオブジェクトをまねる特殊なオブジェクトを表す言葉として定着した。しかしモックという言葉は元々スタブをキャッチーにしたものでなく、[スタブを使ったのとは別の] ユニットテスト方法を用いるためのものなのだ。この記事では、モック

    モックとスタブの違い
  • Rubyベストプラクティス - 未来のいつか/hyoshiokの日記

    オライリージャパンの高さんより献をいただく。ありがとうございました。 Rubyベストプラクティスをざっと拝見して、コミュニティが持つ価値観を明示的に言葉にする事の価値を再確認した。コミュニティの価値観というのは、通常はどのようなコミュニティであれ、その構成員によって明示的にしろ暗黙的にしろ共有されるもので、外のものからはなかなか伺いしれない。 そのような価値観は一子相伝で奥義を決して外部に漏らさないというものから、広く世間に流通しているものまで様々なものがある。閉じたコミュニティというのは、その奥義がなかなかコミュニティ構成員の外に伝わらないもので、一方で開いたコミュニティというのは、その逆である。 コミュニティというのは、一人一人の人によって構成されるので、その人が移動することによって、少しずつその奥義が伝承することになるのだが、一子相伝のコミュニティでは、人の出入りというのは極めて限

    Rubyベストプラクティス - 未来のいつか/hyoshiokの日記
  • webbyを試してみる - 三次元日誌

    http://webby.rubyforge.org/ テキストファイルから適当にフィルタをかけてHTMLを生成するという ちょうど欲しかったツールが見つかったので実験中。 ruby1.9で使うのに2箇所手を入れた。 マルチバイト文字に関するエラー解消 /usr/local/lib/ruby/gems/1.9.1/gems/webby-0.9.4/lib/webby/core_ext/string.rb 先頭に # -*- encoding:utf-8 -*- を入れる。 http://webby.lighthouseapp.com/projects/17680/tickets/19-multibyte-error-under-ruby-191#ticket-19-1 undef_method object_idのwarning解消 /usr/local/lib/ruby/gems/1.9

    webbyを試してみる - 三次元日誌
    tettsyun
    tettsyun 2010/03/19
    webby
  • 楽天、分散キー・バリュー型データストア「ROMA」のソースコードを公開

    写真1●楽天テクノロジーカンファレンスでソースコード公開を発表するROMAの開発者 西澤無我氏(左)と、Rubyの開発者で楽天技術研究所フェローのまつもとゆきひろ氏(右) 楽天は2009年10月24日、同社が独自開発した分散キー・バリュー型データストア「ROMA」をオープンソース・ソフトウエアとして公開した。ROMAはスケールアウトが容易で、耐障害性の高いデータストア。「楽天市場」と「楽天トラベル」で、ユーザーによる閲覧履歴の保存にROMAを使用している。同日に開催した「楽天テクノロジーカンファレンス」に合わせて、「github」でソースコードを公開した。 ROMAは、楽天技術研究所フェローのまつもとゆきひろ氏(プログラミング言語「Ruby」の開発者)と協力して、2007年から開発してきた分散キー・バリュー型データストアである(写真1)。Rubyを使った大規模システムを実現するための分散処

    楽天、分散キー・バリュー型データストア「ROMA」のソースコードを公開
    tettsyun
    tettsyun 2009/10/24
    roma
  • Introduction to Dynamic Programming

    Dynamic programming is a method for efficiently solving a broad range of search and optimization problems which exhibit the characteristics of overlappling subproblems and optimal substructure. I'll try to illustrate these characteristics through some simple examples and end with an exercise. Happy coding! Contents Overlapping Subproblems Optimal Substructure The Knapsack Problem Everyday Dynamic

    tettsyun
    tettsyun 2009/10/14
    dynamic programming
  • Ruby on Railsの「えせMVC」の弊害

    先日のエントリーでも少し触れたが、Ruby on Railsの最大の問題点は、それが持つ「一見そのフレームワークがMVCの形をとりながら、MVCの最も大切なところを外している『えせMVC』である」点にある。MVC(Model View Controller)がなぜ必要かを根底の部分でちゃんとと意識せずにRailsアプリケーションを作ると、後々ひどい目に会うので注意が必要である。 その意味では「RailsでMVCを学ぶ」などもっての他だし、「JavaにもRailsと同じようなフレームワークを作って業務用アプリの開発を効率化しよう」などという発想もとても危険である。 ということで、今日はまずはMVCの解説から。 MVCの発想の根底には、「モジュール化と情報の隠蔽により、プログラムがスパゲッティ化するの(コード間の相互依存関係が複雑に入り込んでしまってにっちもさっちも行かない状態になること)を避

    tettsyun
    tettsyun 2009/10/12
    mvc
  • Ruby用拡張ライブラリをCで作る

    Ruby用拡張ライブラリをCで作る Rubyは、C(あるいはC++)で書いたコードを動的(あるいは静的)にリンクして利用する事ができる。うまく使えば、Rubyで書くより高速な動作が期待できる。 たとえば、GUIライブラリである「Ruby/GTK」は、描画部分にCで書かれたライブラリを利用する事で、実用的な画面描画速度を確保している。 その、Ruby用拡張ライブラリをCで書く方法である。 ■ 拡張ライブラリ作成の流れ Rubyはオブジェクト指向言語である。オブジェクト指向言語におけるプログラムとは、基的にクラス定義である(と、少なくとも私は思っている)。そこで、ここではクラス定義に話を絞る。 メソッドの実体となる関数を定義する Init関数を作る rb_define_classで、新しいクラスを作る rb_define_methodで、クラスに1で作成したメソッドを追加する Makefil

  • C言語で、ruby用拡張モジュールを作成する方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -

    C言語で、rubyの拡張モジュールを作成する方法について調べてみました。 とりあえず例として Sample という拡張モジュールを作成し Sample::sample() というメソッドをCで実装 してみました。 このSampleモジュールを使うと、以下のrubyのコードは require "sample" puts Sample::sample("test") コンソールに "test" と表示するようになります 拡張モジュールのソースコード Cで次のようなコードを書きます。 #include <ruby.h> static VALUE rb_sample_sample(VALUE obj, VALUE arg) { Check_Type(arg, T_STRING); return rb_str_new2(RSTRING_PTR(arg)); } void Init_sample()

    C言語で、ruby用拡張モジュールを作成する方法 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -
  • Ruby拡張ライブラリ作成チュートリアル

    目次 準備 まずはC言語プログラムを呼び出す 簡単な数値のやりとり NArray配列を渡す Swigを使ってお手軽変換 参考文献 準備 このチュートリアルではRuby 1.8系列の使用を前提にしています。 確認はすべてRuby 1.8.4 [i386-Cygwin]で行いました。 NArrayはVersion 0.5.8を用いています。 またそれ以外に以外に以下のものが必要です。 Cコンパイラ Rubyのコンパイルに用いたものと同じものが必要です。 バイナリパッケージを導入した場合はどのコンパイラでビルドされたものか 知る必要がありますが、UNIX系ではたいていgccです。 ruby.h, mkmf.rb Rubyをソースコードから自分でビルドした場合はインストールされていると 思いますが、バイナリパッケージを導入した場合はruby.hやmkmf.rbがあるか 確認する必要があります。開発

  • DSLでコマンドラインオプションを解析するchoice.rb - http://rubikitch.com/に移転しました

    yasnippet.elについて調べていたら、おもしろいライブラリをみつけたので紹介。 choiceというライブラリは、コマンドラインオプションを解析するDSL、いわばoptparseのDSL版と考えることができる。 使用例はこんな感じ。 明白すぎてコードのコメントは不要だろう。 RubyGemsパッケージが用意されているので、「gem install choice」で簡単インストール。 require 'choice' def parse_options # cited from # http://yasnippet.googlecode.com/svn/trunk/extras/textmate_import.rb Choice.options do header '' header 'Standard Options:' option :snippet_dir do short '-

    DSLでコマンドラインオプションを解析するchoice.rb - http://rubikitch.com/に移転しました
  • コサイン距離ベースのLSHをRubyで - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥

    参考文献:Web+DB press vol.49 レコメンド特集のPart3など。 アルゴリズムの概要 詳細(特に数学的な)はぐぐれ。 モチベーションとしては、高次元における近傍点探索を高速で行いたい。まじめにやるとどう工夫しても計算量がすごいことになるので、近似で。 どうするかというと、「距離が近いと同じような値になるハッシュ関数」を使う。あるベクトルの近傍を求めたい場合、そのベクトルのハッシュと同じ(もしくは近い)値のハッシュを持つベクトルをテーブルから引いてきて返す。計算量がどうなるかはややこしいけど、とりあえず全部探すよりは速い。 で、どういう関数をハッシュとするのか。これは距離の定義によって異なる。ハミング距離、コサイン距離、ユークリッド距離などにはそういった関数の存在が知られている。 コサイン距離の場合、ランダムなベクトルをいくつか用意して、入力されたベクトルがそれらと似ている

    コサイン距離ベースのLSHをRubyで - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥
    tettsyun
    tettsyun 2009/09/16
    cosine similarity
  • Numerical Ruby NArray

    多次元 数値 配列クラスです。 1,2,4 byte 整数、単/倍 精度 実数/複素数、 およびRubyオブジェクトを要素に持つことができます。 これにより Ruby でも 大量の数値を扱う計算が、簡単かつ高速にできるようになります。 NArray 特徴 NArray メソッド一覧 NMatrix & NVector - LU分解により線形方程式を解く NArray デモ: マンデルブロ 画像のリサイズ 画像のスムージング(FFTW使用) ライフゲーム ベンチマーク Future rewrite plan ソース: narray-0.5.9p5.tar.gz (2008-06-10) mswin32バイナリへのリンク: narray-0.5.9-i386-mswin32-1.8.zip Known bugs NArray の拡張 FFTW3 FFTW (高速 DFT (Discrete

    tettsyun
    tettsyun 2009/09/16
    narray
  • 楽天版MapReduce・HadoopはRubyを活用 - @IT

    2008/12/01 楽天は11月29日、東京・品川の社で開催した技術系イベント「楽天テクノロジーカンファレンス2008」において、近い将来に同社のEコマースサービス「楽天市場」を支える計画があるRubyベースの大規模分散処理技術「ROMA」(ローマ)と「fairy」(フェアリー)について、その概要を明らかにした。 レコメンデーションの処理自体はシンプル 楽天市場では現在、2600万点の商品を取り扱い、4200万人の会員に対してサービスを提供している。この規模の会員数・商品点数でレコメンデーション(商品の推薦)を行うのは容易ではない。 ※記事初出時に楽天市場の会員数を4800万人としてありましたが、これは楽天グループのサービス利用者全体の数字でした。楽天市場の会員数は正しくは4200万人とのことです。お詫びして訂正いたします。 レコメンデーションの仕組みとして同社は、一般的でシンプルなア

    tettsyun
    tettsyun 2009/09/15
    MapReduce Hadoop fairy