タグ

Rubyに関するsokutou-metsuのブックマーク (12)

  • あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい

    3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ

    あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい
  • How to Write Ruby Codes in Non-Ruby Company

    LT at #sprk2012

    How to Write Ruby Codes in Non-Ruby Company
  • A Perl Monger in the Ruby World

    @yapcasia 2012

    A Perl Monger in the Ruby World
  • XMLからHash とかJSONからHashにパースする - 鶏肉がいいよね。

    crackを使うとお手軽。 crackはXMLパーサがMerb,JsonパーサがRailsから拝借してるそう。 gem install crackrequire 'rubygems' require 'crack' # XMLをパース Crack::XML.parse("<tag>This is the contents</tag>") # => {'tag' => 'This is the contents'} # JSONをパース Crack::JSON.parse('{"tag":"This is the contents"}') # => {'tag' => 'This is the contents'} jsonライブラり使ったりしてxml→jsonも簡単

    XMLからHash とかJSONからHashにパースする - 鶏肉がいいよね。
  • 畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket log

    つーか、fold の弱点として、言語によって引数の順番がまちまちで、 正直憶えきれないってのがあるんだよな。誰か対応表とか作ってくれんもんか。 jijixi's diary - fold, map, for-each この中から一つ選ぶとしたらどれ? 確かにいろいろとややこしいのでまとめてみました。 いくつかの言語について大雑把に表にすると次のような感じ。 言語 関数 Haskell, OCaml, Scheme, Erlang foldl* f init items C++ accumulate(begin, end, init, f) Ruby*, JavaScript items.inject(init, f) Python, Perl* reduce(f, items [, init]) 言語 畳み込む二項演算 Scheme(SRFI)*, Erlang f(item, acc)

    畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket log
    sokutou-metsu
    sokutou-metsu 2011/12/19
    foldlとfoldr
  • BlackCity.LABORATORY.Ruby.EXT

    このところ、まったく更新できていません。すみません、すみません。書きかけたからには、ちゃんとやります。ごめんなさい。 まずは、モジュール名 が必要になります。どんな拡張モジュールを作るのか決めたら、それに合った名前を考えます。どれだけ長くても構いませんが、後で require することを考えると、短い方がいいですよ?(笑) 次に、C のソースコード が必要になります。が、この時点ではファイル名だけで十分でしょう。中身はこれから書くのですからね。ソースファイルひとつで済むのならば、モジュール名と同じに、複数使うのならば、同じ名前にならないように命名するのが良いそうです。まあ、あくまで目安ということで。bstream というモジュール名でソースファイルが一つだけならば、bstream.c というソースファイルにするわけです。 ここまで揃ったら、extconf.rb を作りましょう。これはモジュ

  • 第2部 クラスおよびそのメンバー関数 - tuedaの日記

    C++のクラスとメンバー関数をRuby側から使えるようにする。 この辺情報がないので苦労した。同じ苦労を他人がしないように。 hello.hpp Helloクラスを作る。コンストラクタが引数を取るが特に難しい事はない。実装は省略。 class Hello { public: Hello (int n); ~Hello (); void sayHello (); int n; }; Init_XXX Init_XXX関数はこのように作製する。ライブラリ名(モジュール名)はMyLibとした。 rb_define_class でクラスを定義する rb_define_alloc_func でメモリのアロケート関数を定義する rb_define_private_method でinitialize関数を定義する rb_define_method でメンバー関数を定義する C++のnew演算子はメモリ

  • Nothing But Programming

    Ruby C Extensionの作成 for Windows RubyのC Extensionの作成方法について書いています。ただし、正当なやり方であるかどうかは分かりません。あまりWindows用に書かれていた記事がなかったので、書きました。来の(Ruby開発をしている人たちが推奨する)やり方があるのだと思いますが、とりあえずこれで動いたというところまでです。 いろいろ読んでみるとextconf.rbを作れとか、mkmfが何だとかいろいろやり方があるみたいですが、とりあえずそういうことは無視します。RubyからDLLの関数呼び出せればそれでいいっていう人向けです。そのうちextconf.rbとかも書けたら書きます。 RubyのVersionは1.9.1を利用しています。コンパイラはVisual Studio 2008です。とりあえず関数を呼んで戻り値を得るところまでをやります。そこか

  • 第4章 クラスとモジュール

    章ではクラスとモジュールの作りだすデータ構造について詳細を見ていく。 クラスとメソッドの定義 まずはCレベルでRubyのクラスを定義する方法を少しだけ見ておきたいと思う。 この章ではある意味「特殊な」ところばかりを追求するので、圧倒的多数を占 める通常ルートを先に知っておいてほしいのだ。 クラスとメソッドを定義する主要なAPIは以下の六つである。 rb_define_class() rb_define_class_under() rb_define_module() rb_define_module_under() rb_define_method() rb_define_singleton_method() 多少の派生バージョンはあるものの、拡張ライブラリはもちろん、基クラス ライブラリまでのほとんどがこれだけのAPIで定義されている。順番に紹介し ていこう。 クラスの定義 rb_d

  • Rubyのblock、Proc、lambdaを理解する - このブログは証明できない。

    新年おめでとうございます。2009年の最初のネタはプログラミングのネタにすることにしました。 Rubyについてのステキなエントリーがあったので、紹介します。 no title 私は翻訳能力がないばかりか、リーディング能力も貧相です。ぜひ、原文を読んでみてください。 はじめに Rubyblock、Proc、lambdaはパワフルですが、解りにくい。Rubyはクロージャを使う方法が4つあって、それぞれチョットずつ違います。ここでは、そのへんを解説したいと思います。 Block もっとも簡単で、かつRubyっぽいと言えば、Blockですね。 array = [1, 2, 3, 4] array.collect! do |n| n ** 2 end puts array.inspect # => [1, 4, 9, 16] 何が起こっているか? まず、block付きでArrayの"collect

  • 2007-12-30 - はるかさん@はてなダイアリー

    Population38 Revenues5700 € Unemployment0 % Transport100 % Criminality0 % Pollution0 % あれ?きょうはもう日記更新したきになってたけど、未だ更新してなかったよ。多分登録ボタン押し忘れて閉じた系だね。もう何書いてたかおぼえてないし。むー確かに更新したと思ったのに。今日は遅れず更新できたと思ったら残念。画像はアップロードしてたのを使ってますが、数値は3:30現在の数値を利用してるので、若干ずれがありますがご了承ください。 家どんどん大きくなってますね。麦畑一個減ってるんですけど、今の高騰具合からすると増やせるなら増やしておいた方が良いと思います。土地余ってることだし。 そろそろ40人越えですね。そういえば、ちょっと疑問に思ってたんですが、この数値って実は世帯数だったりするんですかね。よくよく考えると一人で移住

    2007-12-30 - はるかさん@はてなダイアリー
    sokutou-metsu
    sokutou-metsu 2011/05/13
    バイナリデータをより早く読み込む方法
  • Rubyによるワンライナーのまとめ - ぬいぐるみライフ?

    Rubyでワンライナーを書く際によく使うコマンドライン引数と具体例をまとめてみた. 基 -e : コマンドラインからスクリプトを指定 コマンドラインからスクリプトを指定する場合に使う.ワンライナーでは必須. $ ruby -e 'puts "Hello, world!"' 行単位の処理 -n : 各行ごとに処理 プログラム全体が以下のwhileで囲まれているように動作する. while gets ... end 標準入力やファイルの各行に対して処理を行いたい場合に便利.getsの結果は$_に格納される. $ ruby -ne 'puts $_ if $_.include?("mickey24")' foo.txt -p : 各行ごとに処理&出力 -nとほぼ同様だが,各ループの最後で print $_ が実行されるようになる.標準入力の各行に対して処理を行いつつ出力していく場合に便利. $

    Rubyによるワンライナーのまとめ - ぬいぐるみライフ?
  • 1