タグ

gemとプログラミングに関するsh-2のブックマーク (5)

  • いちばんやさしいCでつくるgem - yamshing's diary

    C言語でシンプルなgemを作ってみましょう。 まずはフォルダーを用意します。 my_c_gemが今回のgemの名前です。 my_c_gem/ └── ext └── my_c_gem ├── extconf.rb └── my_c_gem.c こんな感じです。 extconf.rbにはMakefileを自動生成するためのコードを書きます。 extconf.rb require "mkmf" create_makefile "my_c_gem/my_c_gem" my_c_gem.cには最初にrubyから呼ばれる初期化関数を書きます。まずは何もせずに MyCGemクラスを作るだけのコードをいれておきましょう。 my_c_gem.c #include <ruby.h> void Init_my_c_gem(void) { rb_define_class("MyCGem",rb_cObject)

    いちばんやさしいCでつくるgem - yamshing's diary
  • Ruby STUDIO | Rubyリファレンス

    多くのGemは、Cで書かれたライブラリをラップするためにRubyラッパーによる拡張機能を使用しています。 例えばnokogiriは、 libxml2とlibxsltをラップし、 pgは、 PostgreSQLデータベースへのインターフェースであり、 mysql2のGemは、 MySQLへのインターフェースです。 拡張を使用したGemを作成するには、幾つかの手順を踏む必要があります。 このガイドでは、Gemを作りやすくするために仕様をどのようにするか、またメンテナンスし易いようにどうすればいいかに主眼を置いて説明します。 このガイドでの拡張は、C標準ライブラリからmalloc()とfree()をラップします。 Gemレイアウト extconf.rb C拡張 rake-compiler Gem Specification 拡張名 更に詳しく知るために Gemレイアウト 各Gemの作成は、開発者

  • Faradayを触ってみた - 成らぬは人の為さぬなりけり

    実はこれが、2014年最初のエントリー。サボりすぎ。 WebAPIを呼ぶスクリプト書くのにFaradayを使ってみたので、使い方などをメモっておこうと思います。 Faraday自体は前から知ってたんですが、リダイレクトとかめんどくさい事考えなくて良い場合に、 特にHTTPクライアントのライブラリ入れて使うより、Net::HTTPで十分じゃない?と思って使った事ありませんでした。 なんとなーく、Ruby書きたくなって、使ったことないgemを使ってみたかったので、使ってみた次第です。 ちなみに、読み方は ふぁらでい なんでしょうかね? 環境 OS : Mac OS X 10.9.2 Ruby : ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0] 使用するライブラリのバージョン gem 'faraday', '~> 0.9

    Faradayを触ってみた - 成らぬは人の為さぬなりけり
  • Rubyでバイナリデータを格好良く扱うgem「BinData」が素晴らしすぎて膝から崩れ落ちた - Bye Bye Moore

    0x1234567890abcdef とてな感じのバイナリデータがあったとします。*1 これを適正に振り分ける場合、どうしてますか? これまでの私だと、文字列のまんま val_a = "1234567890abcdef"[10].chr とやるなり、unpackで配列化して val_a = "ab".unpack("CC")[0].chr とやるなりしてました。 ただ、これだと32bitの時の扱いが面倒ですよね。 その上、可変長の場合は専用のロジックを組む必要がある。 しかも途中でセンサの仕様が変わって入り組んだメソッドチェインを解す過程で発狂しそうになったりした事も……。 そんな貴方や私の悩みを解決してくれるのが、今回紹介するGem「BinData」です。 導入 $ gem install bindata 使い方 require 'bindata' class Sample < BinD

    Rubyでバイナリデータを格好良く扱うgem「BinData」が素晴らしすぎて膝から崩れ落ちた - Bye Bye Moore
  • 複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい

    最近のRubyのクローラーは、EventMachineを使って並列化するのが流行のようです。EventMachineは、非同期処理をお手軽に実装できるフレームワークです。Rubyのスレッド機能との違いは、Reactorパターンを使いシングルスレッドで実装している点です。こちらのブログが詳しいので参考になります。 「見えないチカラ: 【翻訳】EventMachine入門」 EventMachineを使うと、イベント・ドリブンの処理を簡単に実装出来ます。使い方は簡単ですが、通常の同期処理やスレッドをつかった処理に比べると、どうしてもコードの記述量は多くなります。今回の例である並列化してクローラーを走らせるという用途であれば、短時間で多くのサイトにアクセスするのが目的です。イベント・ドリブンで並列化処理を実装するのが目的ではないはずです。その辺りの面倒くさい処理を実装したライブラリがcosmic

    複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた - プログラマでありたい
  • 1