タグ

cとrubyに関するjjzakのブックマーク (13)

  • Ruby 遊び / 拡張 C ライブラリを作ってみる

    Mon, 25 Nov 2002 11:36:06 +0900 , 初稿 って? Ruby は、比較的簡単に C による拡張ライブラリが作れるらしいです。 拡張ライブラリというのは、要するに、Ruby から呼べる機械語のメソッド郡と考えていいんじゃないかと思います。つまり、Ruby だと処理速度がどうしても気になってしまう一部のクリティカルセクションを、これにより機械語で書き換える、ということができます。 というわけで、どれくらい簡単か、やってみましょう。 例 Ruby に従って、次の C プログラムを書きました。 #include "ruby.h" VALUE test(int n){ volatile int i; for(i=0;i<(FIX2INT(n));i++){ } return Qnil; } Init_test(){ rb_define_global_function(

  • Ruby用拡張ライブラリをCで作る

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

  • 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があるか 確認する必要があります。開発

  • 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とかプログラミングの覚え書き -
  • Phidgets RFID開発キット インストールガイド on MacOSX

    最近ではコンピューター、ウェブ、モバイルでゲームを楽しめるようになりました。これらのゲームプログラミングについて学びましょう。 ゲームプログラミングの特徴 ゲームプログラミングは比較的新しいジャンルです。 ゲーム開発に使用される言語は、C#、C++JavaScriptSwiftRubyです。ゲームでは通常のアプリケーションと異なり複雑なビジュアルを操作するパフォーマンスと速度が要求されますので、プログラム言語もそれに特化している言語がおすすめです。 ゲームプログラミングは今後も人気の職種です。習得してステップアップを目指しましょう。 Oracle PLのプログラミング言語について学びましょう。 Oracle PLの特徴 SQL、T-SQLと同様にOracle PLもデータベースを処理するための言語です。違いとしてはOracle PLは世界最大のデータベースのひとつであるOracle

  • Ruby の Mix-in を C++ 風に解説 - Faith and Brave - C++で遊ぼう

    ※ これはイメージです こういうモジュール(機能の集まり)を定義して module action { void disp_name() { cout << "Akira" << endl; } }; それをインクルードすることでそのモジュールの機能が使えるようになる int main() { #include action; disp_name(); return 0; } モジュールをクラスの中でインクルードすると class person { public: #include action; void disp_age() { cout << "23" << endl; } }; インクルードしたモジュールはそのクラスのメンバとして使用できる person akira; akira.disp_age(); akira.disp_name(); ※ これはイメージでした これがプログラミ

    Ruby の Mix-in を C++ 風に解説 - Faith and Brave - C++で遊ぼう
    jjzak
    jjzak 2008/08/21
    [][][programming]
  • Rubyのソースコード(C言語)解析支援ツール list-call-seq.rb - http://rubikitch.com/に移転しました

    RubyのソースコードはC言語であってもきちんとRDoc形式のドキュメントが書いている。そこでは、「call-seq:」の後の行に深くインデントを取ってメソッドの使い方が書いてある。つまり、call-seqの後の行を拾っていけば、そのソースコードはどんなメソッドを定義しているかがわかる。たとえば、prec.cに対して実行してみるとこんな感じだ。「-n」、「-H」オプションをつけるとgccの出力のようになる。 $ list-call-seq.rb -nH prec.c prec.c:22: num.prec(klass) => a_klass prec.c:43: num.prec_i => Integer prec.c:60: num.prec_f => Float prec.c:77: Mod.induced_from(number) => a_mod prec.c:99: includ

    Rubyのソースコード(C言語)解析支援ツール list-call-seq.rb - http://rubikitch.com/に移転しました
  • netswitch! | RubyInlineがすごい

    Posted by nanki Mon, 12 Mar 2007 05:14:00 GMT Rubyコード中にCのコードを埋め込めるRubyInlineを使って、 ボトルネックとなっているメソッドを置き換える。 # rubyinline.rb def benchmark s = "a" * 10000 test = Test.new t = Time.now 1000.times{test.string_xor(s, s)} Time.now - t end class Test def string_xor(str1, str2) result = str1.clone str1.length.times do |i| result[i] ^= str2[i] end result end end b1 = benchmark begin require 'inline' class T

    jjzak
    jjzak 2007/03/16
    Rubyコード中にCのコードを埋め込めるRubyInlineを使って、ボトルネックとなっているメソッドを置き換える。
  • How to create a Ruby extension in C in 43 seconds

    Ruby Weekly is a weekly newsletter covering the latest Ruby and Rails news. Two months ago, I wrote How to Create a Ruby Extension in C in under 5 minutes. But times have changed! 2012 update: Just tested and this all works in Ruby 1.9.3 almost six years later! Zenspider, master of all things "Ruby + C", picked up the gauntlet and used RubyInline (previously covered here) to hand my proverbial ass

    jjzak
    jjzak 2007/03/16
    RubyInlineのsample
  • [pdf]Swing実習マニュアル 大黒学

    大阪にはキャバクラが多い街として「キタ」と「ミナミ」があるんです。 この2つの街にはいろんなキャバクラがあるし、競合店が多いことから他のエリアより時給相場が高い上、新規のお客さんも来店しやすい。 だから、関西のキャバクラで働く上で、キタ、もしくはミナミのキャバクラを選ぶことがすごくおすすめ! けど、そうは言っても「じゃあキタとミナミだったらどっちの方が良いの?」って思う方もいるかもしれませんよね(笑) なのでここでは、大阪のキタとミナミのキャバ嬢目線から見た違いについて解説していきます! 大阪のキャバクラ「キタ」と「ミナミ」の違い では大阪のキタとミナミには、キャバクラにどんな違いがあるのか、各項目に分けて紹介していきます! 大阪のキャバクラで頑張って働いていこうと思ってる方は、自分の目的やキャバ嬢としてのキャリアに合ったお店を選んでくださいね! お給料 まずはお給料について。お給料は、大

    jjzak
    jjzak 2006/11/06
    [][][prolog][functional][ml]
  • OBB vs AABB - Radium Software Development

    iPhoneの一般修理店は予約なしでも来店できる? 基的には飛び込みで修理に行ってもOK iPhoneを置いていたソファにうっかりと腰かけてしまい、パネルを割ってしまった、こんな時はスマホの一般修理店へ行きましょう。画面割れは、スマホやタブレットの故障原因として非常に多いものです。予約なしで突然お店に行っても平気かしらと、不安に思う方々もいらっしゃるかもしれません。結論としては特に問題はなく、予約なしで訪問しても画面割れの修理はお願いできます。 ただし他のサービス業のお店同様、予約なしの場合、お店が混雑していると順番待ちをしなければいけないです。特に繁盛しているスマホ修理のお店だと、行列が店内で出来ており、予約なしだと、自分の順番が巡ってくるまで長時間待たされる可能性があります。平日の朝、昼なら利用客が少ない場合が多く、飛び込みでも比較スムーズに修理が頼めます。 予約は入れた方が時短に、

  • LoveRubyNet Wiki: RubyExtensionProgrammingGuide

    2008-01-09 15:51:08 +0900 (275d); rev 19 これは草稿です。 いずれ正式なところに移す予定。 対象とする読者 稿は以下のような読者を対象にしています。 Ruby の拡張ライブラリを書いたことがない C プログラミングがそれなりにできる Ruby プログラミングがそれなりにできる 2 に関して。 「ポインタって何?」レベルの人は不可です。 構造体とポインタをちゃんと使ってプログラミングのできる人を対象とします。 3 に関して。 以下のプログラムの結果がどうなるか、 考えるだけでわかるようにしておいてください。 class C p self # 何が表示される? def C.m puts '1' p self end def m puts '2' p self end end C.m # 何が表示される? C.new.m # 何が表示される? このマニュ

  • http://www.math.kobe-u.ac.jp/~kodama/mathprograming.html

  • 1