タグ

cとrubyに関するiga_kのブックマーク (8)

  • RubyInline gem で C 拡張を手軽に作ってみた - エムスリーテックブログ

    こんにちは、サーバーサイドエンジニアといいつつも最近は React をいじっていることが多い矢崎(id:Saiya)です。 去年あたりに自宅用に作っている Rails のアプリケーションから、libgd *1 の提供する C 言語向けの API を呼び出すコードを導入していたのですが、その際に使った RubyInline gem が便利だったので、(主に自分への備忘録を兼ねて)使う上での留意点や tips などを書いておきます *2。公式のサンプルにあるような簡単な利用例ではあまり迷うことはないのですが、多少凝った用途で使う上でハマった点もありましたため、備忘とご共有までに。 なお、この記事は エムスリーアドベントカレンダー 7 日目の記事です、他の記事もぜひご覧くださいませ。 RubyInline gem とは C 言語のソースの文字列を inline メソッドに渡すとコンパイルされ、R

    RubyInline gem で C 拡張を手軽に作ってみた - エムスリーテックブログ
    iga_k
    iga_k 2022/04/05
    “C 言語のソースの文字列を inline メソッドに渡すとコンパイルされ、Ruby のメソッドとして呼び出せるという便利な gem です。”
  • 『Webで使えるmrubyシステムプログラミング入門』は、現場で経験値の高い先輩から指導を受けている錯覚を起こさせる一冊だった!! - Magnolia Tech

    Webで使えるmrubyシステムプログラミング入門 作者:近藤宇智朗発売日: 2020/11/25メディア: Kindle版 この手のミドルウェア・プログラミング言語の入門・解説書、ひたすら語り口を優しくしているだけだったり、単にリファレンスをなぞっているかのどちらかで、教科書的な硬さとかが鼻につくんだけど、この『Webで使えるmrubyシステムプログラミング入門』は全然違う。次元が違う。 明らかに、”現場で経験値の高い先輩から指導を受けている”ような錯覚を感じさせる内容、流れになっている。 今後、この手の入門書は全部こんな感じでお願いします(あとは公式リファレンス読むんで!)と言いたくなるくらいの良書。マジで良い。 環境がmacOSを使いつつ実際のプロセスはVirtualBox上のLinuxで進む(ちゃんと両方使う前提になっている) 冒頭でmrubyのビルドの解説をする際に、さらっと「デ

    『Webで使えるmrubyシステムプログラミング入門』は、現場で経験値の高い先輩から指導を受けている錯覚を起こさせる一冊だった!! - Magnolia Tech
  • Rubyで構造体を扱う(ただし、Cの)。あとELFの話。 - ローファイ日記

    飛び入りです。Rubyアドベントカレンダーその2 17日目の記事です。昨日はなんとなく似たような(?)、 Rubyの8進数と2進数の構文エラー文の違い の話です。 qiita.com 今日はRubyで構造体、と言うか、バイナリパックされた構造体を扱う話の触りをします。class Structの話はしない。 さてみなさんは String#unpack/Array#pack を使ってますか? docs.ruby-lang.org すこく正直な話をすると、おそらく多くの方は使っていなくて、使っている方も大半はbase64文字列を生成する m フォーマットぐらいしか使っていないのではないかと推測しています。 ["Hello World"].pack('m') #=> "SGVsbG8gV29ybGQ=\n" ぼくも今まではそうだったのですが、最近は他のフォーマットも急に使うようになりました。という

    Rubyで構造体を扱う(ただし、Cの)。あとELFの話。 - ローファイ日記
    iga_k
    iga_k 2020/12/17
    Rubyのpackの使い方。知見。
  • Cでわかるオブジェクト指向一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Cでわかるオブジェクト指向一覧
    iga_k
    iga_k 2020/09/05
    島田さんのオブジェクト指向入門
  • Ruby(とC)でRubyを実装してみた(builtinで遊んでみた) - Qiita

    はじめに タイトルにもあるようにRubyのbuiltin(正式名称を知らないので呼び出し方法から拝借)というものを使ってRuby自体をRuby(とC)で実装してみた話です。 内容としてはRuby自体の実装に興味のある方向けの話になります。 builtinって? builtinとはRuby(とC)でRuby自体を実装するというものです(正式な名前は今のところないみたい?)。以下のように__builtin_<Cで定義した関数名>をRubyのコードから呼び出すことでRubyとCを使い、より簡単にRubyの実装を行うことができます。 たとえば、Hash#deleteはCで以下のように実装されています。 static VALUE rb_hash_delete_m(VALUE hash, VALUE key) { VALUE val; rb_hash_modify_check(hash); val =

    Ruby(とC)でRubyを実装してみた(builtinで遊んでみた) - Qiita
    iga_k
    iga_k 2020/02/27
  • Xcode を使って Ruby C 拡張ライブラリをデバッグ - @watson1978 の日記

    RMagick のテストが通らないものを調べる際にどのようにデバッグしようかと思ったのですが、Debugging Ruby C Extensions in XCode - Emil Soman's blog に有益なことが書かれておりました。元の記事では Xcode 5.1 が使われていたので最新の Xcode のスクリーンショットを交えつつ手順を書いてみます。 この記事では Ruby C 拡張ライブラリの C 言語で書かれたコードをデバッグする手法を記述します。 デバッグ対象のコードを入手 $ git clone https://github.com/rmagick/rmagick.git Makefile を作成 Ruby C 拡張ライブラリの C 言語のコードは ext ディレクトリ配下にあります。RMagick では ext/RMagick となります。そこへ移動し Makefil

    Xcode を使って Ruby C 拡張ライブラリをデバッグ - @watson1978 の日記
    iga_k
    iga_k 2019/05/03
    c extention
  • The Ruby C API

    Before You Start For the greatest chance of success with this guide, I recommend being fairly comfortable with C and very comfortable with Ruby. Using Ruby’s C API does not require any advanced C concepts, however the API is huge and largely undocumented. After you start using it, you will likely find yourself delving through the Ruby source code at some point to figure out the behavior of some ob

    iga_k
    iga_k 2019/01/22
    よくまとまってそうなので後で読みたい
  • Ruby 拡張モジュール入門 / SlideShare

    2. おしながき おしながき 拡張モジュールとは なにもしない拡張モジュール hello.so 拡張モジュールを作る前に まとめ 2007-11-17 Ruby 勉強会@札幌 #6 1 4. 拡張モジュールって何? 拡張モジュールって何? 拡張モジュールとは・・・ Ruby では実現不可能だけど,C ⾔語なら実現可 能な事柄を,C ⾔語で実装して Ruby から使えるよ うにするための共有ライブラリ Ruby で実装すると遅いけど,C ⾔語なら実⽤的な 実⾏速度を実現できるようなアルゴリズムなどを,C ⾔語で実装して Ruby から使えるようにするための 共有ライブラリ アセンブリ⾔語も使えるよ\(^o^)/ 2007-11-17 Ruby 勉強会@札幌 #6 3 5. 拡張モジュールの例 拡張モジュールの例 標準添付 独⽴配布 Ruby/OpenSSL Ruby/GNOME2 Ruby/

    Ruby 拡張モジュール入門 / SlideShare
    iga_k
    iga_k 2007/12/10
    開発ツールの作成はRuby+Cの組み合わせが有力なんじゃないかと考えている。
  • 1