タグ

mrubyに関するyogasaのブックマーク (22)

  • mrubyを小さくしたり大きくしたりした話 - スペクトラム

    最近mrubyにコミットしているので自分の活動をまとめます。 mrubyを小さくした話 mrubyでは、文字列の扱いはシンプルにchar*を構造体でラップしていました。 struct RString { MRB_OBJECT_HEADER; mrb_int len; union { mrb_int capa; struct mrb_shared_string *shared; } aux; char *ptr; }; そのため1つの文字列毎に、構造体分と文字列分の2回のmalloc/freeが発生していました。 ここでCRubyのRStringを見てみます。 #define RSTRING_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(char)-1)) struct RString { struct RBasic basic; union {

    mrubyを小さくしたり大きくしたりした話 - スペクトラム
    yogasa
    yogasa 2014/05/03
  • mrubyのVMざっくり解説 - mirichiの日記

    なんとなく、mrubyのVMの基的なところを書いておこうと思ったので。誰かの参考になれば。 大きな仕様的なところは、 ・32bit固定長のバイトコードを解釈して動作する。 ・レジスタをスタックに確保するタイプのレジスタマシンである。従って、スタックの任意の位置をレジスタ番号で指定して直接読み書き可能。 ・メソッドやブロックなどの単位でバイトコードがirep構造体にまとめられている。 みたいな感じ。 スタックの使い方 スタックトップがレジスタのR0となり、以下、R1、R2・・・と名前が付けられる。スタックの型はmrb_valueの配列であり、つまりmrubyオブジェクトが詰まっている。irepのコードを呼び出すとき、スタックの上から順に以下のような情報を積んでから呼ばれる。 (引数が2個あった場合の例) R0 |self | R1 |argument1| R2 |argument2| R3

    mrubyのVMざっくり解説 - mirichiの日記
    yogasa
    yogasa 2014/04/29
  • mrubyでSPDYやHTTP2通信

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 年末にSPDYやHTTP2の勉強がてら、mrubyでSPDYやHTTP2通信可能なmrbgemを作りました。 mruby-spdy mruby-http2 これで、mrubyを組み込んだアプリケーションやデバイスからSPDY・HTTP2通信ができるようになって未来が広がりますね。 現状はクライアントのGETのみができます。これで、例えばmod_mrubyやngx_mrubyに組み込んで、あるURLにアクセスした場合はバックエンドでSPDYやHTTP2な通信をすることもできますね。 サンプル SPDYやHTTP2通信をするためにはRubyで以下のように書きます。 SPDY通信 [program lang=’ruby’ escaped=’true

    mrubyでSPDYやHTTP2通信
    yogasa
    yogasa 2014/01/03
  • 24時間一人mrubyハッカソン - Qiita

    mrubyが対象(のひとつ)にしているデバイス系環境では、プログラムを格納するROMには余裕があっても、実行時メモリであるRAMには余裕がないという話をよく聞きます。ROMはフラッシュでメガ単位の容量があっても、RAMは数十KBとかいうケースも珍しくありません。 そこで、12/24から25にかけての24時間で、どれだけメモリ削減できるか一人ハッカソンを開催しました。ぼっち上等。 基戦略 今回のメモリ削減ハックの基となるのは、Cの文字列定数領域はfreeの対象にならないので、mallocした領域にコピーする必要はない、という戦略です。今回は3件の改善を行いますが、いずれもこの戦略を用いています。 static symbol まずは、symbolテーブルのmalloc量を削減しましょう。symbolの登録には mrb_intern(mrb_state *mrb, const char *s

    24時間一人mrubyハッカソン - Qiita
    yogasa
    yogasa 2013/12/26
  • PR:伊藤直也×まつもとゆきひろ。ポストPC時代のモバイル開発を語る

    エンタープライズとコンシューマが逆転した、ポストPCの時代 伊藤 僕はいまBtoBの開発のコンサルをすることがあって、そこで何を期待されているかというと、BtoCで成功している方法論や開発プロセスなどをBtoBでもやりたいと。 以前はサーバOSやデータベースなどの面で先進的な技術が使われていたBtoB、エンタープライズ系の開発は、いまや先進性ではクラウドやモバイルデバイスを使ったコンシューマに逆転されてしまっています。 まつもと 最近、スマートフォンとかタブレットとか、PCじゃないところが主戦場になってきて、PCより小さなデバイス、少し前なら「組み込み」と言われていたものの重要性が高まってくるのではないかなと思っています。いまホットなデバイスはスマートフォンだったりしますが、もっと先に進むとコンピュータは環境に組み込まれてどんどん見えなくなっていくのではないかと思います。 でも、例えば多く

    PR:伊藤直也×まつもとゆきひろ。ポストPC時代のモバイル開発を語る
  • mrubyでRedis使うのはオーバースペックな人のためにmruby-vedis作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 以前mruby-redisを作ったのですが、mrubyでRedis使う場合に、inetとかunix domain socketで使えなくても良いし、サーバー機能無しでIn-Memoryにアプリケーションと同一プロセス上で動いたり、必要だったらOn-Diskぐらいで共有できる程度の軽量なKVSを使いたいなぁ、でもなんだかんだちょっとした事にRedis使いやすいしまぁRedis使うか、なんて思っている人はいると思います。 そんな人のために、「サーバー機能無しでIn-Memoryにアプリケーションと同一プロセス上で動いたり、必要だったらOn-Diskぐらいで共有できる程度の軽量なKVS」であるVedisをmrubyから簡単に使えるmruby-ved

    mrubyでRedis使うのはオーバースペックな人のためにmruby-vedis作った
    yogasa
    yogasa 2013/11/10
  • まつもとゆきひろ直伝 組込Ruby「mruby」のすべて 総集編

    販売終了 「組込向け」との触れ込みで登場したmrubyRuby設計者であり、mrubyの主要開発者である、まつもとゆきひろ氏が自らそのすべてを解説します(日経Linux2012年10月号から2013年3月号までの連載を最新情報に修正して掲載)。 関連サイト出版社による関連ページが公開されています。 日経Linux内容紹介日発のオブジェクト指向言語「Ruby」。近年、Webアプリケーションを開発する言語として広く利用されています。 これまでのRuby は「アプリケーションはRubyで開発する。不足する機能はCなどで拡張ライブラリを開発して、Rubyに追加する」というアーキテクチャーを仮定しています。しかし、それでは組込ソフトウエアによくある「アプリケーションはC/C++で開発する。柔軟性・生産性が必要な部分だけをRubyに任せたい」というアーキテクチャーとは相いれません。アプリケーション

    まつもとゆきひろ直伝 組込Ruby「mruby」のすべて 総集編
  • Mac OS Xで、自作プログラムにmrubyを組み込み、C言語からrubyスクリプトを実行させ、rubyからC言語の関数を呼び出す - Qiita

    Mac OS Xで、自作プログラムにmrubyを組み込み、C言語からrubyスクリプトを実行させ、rubyからC言語の関数を呼び出すMacOSXmruby 組み込みrubyです。自作プログラムにmrubyを組み込みます。mrubyからCの関数を呼び出せるようにしておけば、自作プログラムをrubyで拡張できるようになります♪ 「Mac OS Xでmrubyをビルドしてみる」でインストールしたmrubyを使います。ビルド時のパスに気を付けてください。 1. rubyから呼び出されるメソッドを用意する まずは、rubyから呼び出されるメソッドを用意しましょう。今回はサンプルなので、パラメータ無し、戻り値無し、文字を表示するだけのメソッドです。 // この関数を、Okaモジュールに追加し、ruby側から呼び出される関数 static mrb_value oka_func(mrb_state *mr

    Mac OS Xで、自作プログラムにmrubyを組み込み、C言語からrubyスクリプトを実行させ、rubyからC言語の関数を呼び出す - Qiita
  • mrubyとWebサーバ // Speaker Deck

    mrubyをWebサーバソフトウェアに組み込む

    mrubyとWebサーバ // Speaker Deck
    yogasa
    yogasa 2013/06/23
  • すごい!mrubyをJavaScriptに変換してWebブラウザ上で実行·webruby MOONGIFT

    webrubyはWebブラウザ上で動作するmrubyです。 mrubyは組み込み用として開発されたミニマムなRuby実行環境ですが、ミニマム故に使いどころが色々とありそうです。今回はなんとWebブラウザ上で動作するmruby、webrubyを紹介します。 WebGLを使うデモ。 結構ぐりぐりと動きます。 FPSも53とあって滑らかです。 こちらはirbです。コードを書いてその場で実行して結果を得られます。 確かにちゃんと記述できます。 普通にmrubyです。 以前に紹介したJsMrubyの場合は機能拡張としてインストールされるものでしたが、webrubyの場合はemscriptenを使ってmrubyのソースコードをJavaScriptに変換しているのが特徴です。まだまだおもちゃレベルとのことですが、今後発展すると面白いプロジェクトになりそうです。 webrubyJavaScript製のオ

    すごい!mrubyをJavaScriptに変換してWebブラウザ上で実行·webruby MOONGIFT
  • Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。

    mruby と言えば組み込み用途のイメージが高いですが、Windows で何度も ruby 拡張のビルドエラーを潜り抜けて来て、ある程度 ruby 拡張の仕組みも知っている僕としては mruby の方がソースが綺麗し精神衛生上良いと言いたいが、言ってしまうとどこかしらからかオノが飛んで来そうな昨今でございます。 最近はmrubyでウォシュレットの噴出を監視するシステムも登場し、「TOTO さん、そろそろ気で mruby 組み込みウォシュレット 考えてみませんか」と言いたくなる状況です。 さて、そろそろ mruby にも GUI が欲しくなってきたので fltk3 を組み込んでみました。 mattn/mruby-fltk3 - GitHub https://github.com/mattn/mruby-fltk3 mrbgems 化してあります。 まぁまぁ忠実に fltk3 を移植してあり

    Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。
    yogasa
    yogasa 2013/02/18
  • PS Vitaでmrubyが動いた! - @masuidrive blog

    布団でふと思いついたので、PS Vitaでmrubyを動かしてみました! やり方は簡単!Vitaのブラウザでhttp://bit.ly/vitamrubyを開くだけ! ごめんなさい・・・・ このサイトはC言語で書かれているmruby体を、EmscriptenでJavascriptに変換してブラウザで動かしています。なのでPS Vita上でmrubyは動きましたが、残念ながらコレでゲームなどは動かせません。いつかネイティブで動くといいなぁ。 現在のmrubyだと不正なバイトコードへの対策などがされていないので、Vitaにmrubyが載ってユーザに開放!的な使い方は厳しそう。その辺の対策をするとコードサイズが大きくなってしまってメモリの少ないデバイスで動かなくなってしまうので難しい所。実装が落ちついてくれば、設定によってチェックするけどバイナリサイズは大きくなるか、チェックしないでバイナリサ

    PS Vitaでmrubyが動いた! - @masuidrive blog
    yogasa
    yogasa 2013/02/17
  • mrubyの夕べ - PARTAKE

    Decrease quantity for Halobet 🎀 Situs Slot Online Terpercaya Gacor 2024 Increase quantity for Halobet 🎀 Situs Slot Online Terpercaya Gacor 2024 Fasilitas Lengkap untuk Pemain Baru Bagi para pemain baru, Halobet menyediakan fasilitas lengkap untuk memastikan Anda merasa nyaman dan terhibur selama bermain di situs kami. Dari berbagai pilihan permainan slot hingga layanan pelanggan yang responsif,

    mrubyの夕べ - PARTAKE
    yogasa
    yogasa 2013/01/09
  • mrubyでLEDを点滅させる - kyabの日記

    2014/2/20追記 下記はRSTRING_PTR()を誤った使い方をしています。mrb_valueにRSTRING_PTR()マクロを使った場合に取り出した文字列は終端がNULLとは限りませんのでご注意 Arduino互換機 chipKIT Max32でmrubyを動かす - kyabの日記でchipKIT Max32でのmruby動作に成功したわけですが、次にLEDを光らせてみました。 コードは以下のとおりです。 mruby_led(C側)。前のコードとほぼ同じですが、ruby側から呼び出せるdigitalWrite()とdelay()を実装して、mrubyに登録してます。 #define CHANGE_HEAP_SIZE(size) __asm__ volatile ("\t.globl _min_heap_size\n\t.equ _min_heap_size, " #size

    mrubyでLEDを点滅させる - kyabの日記
    yogasa
    yogasa 2013/01/09
  • mrubyのGC解説まとめ - GC Advent Calendar - I am Cruby!

    Garbage Collection Advent Calendarの25日目の記事です。 ついに、か、完走したぞ!!うぉぉー。はあ、つかれた。もう来年はいいです。 ということで今日の分のスライドもあわせて、まとめてこの記事にはりつけておきます。 (あーあ、はてなダイアリーにslideboom埋め込めないのか…) mrubyのTri-color incremental mark & sweep GC 解説 その1 mrubyのTri-color incremental mark & sweep GC その2 mrubyのTri-color incremental mark & sweep GC その3 しかし、スライドのアニメーションとGCの解説って相性いいですねえ。 Impressでpptを吐いているのですが、それなりにslideboom上でも動いてびっくりしています。ツイートする

  • 組み込みC言語プログラマのためのmruby入門(後編) ―― mrubyの組み込み方とJavaとの違い

    連載では,主にC言語で開発している組み込みプログラマを対象に,Rubyおよびmrubyについて解説している.今回は,mrubyをアプリケーションに組み込む方法について概要を説明する.また,組み込みJavaなどの類似技術との違いについても述べる.(編集部) 技術解説・連載「組み込みC言語プログラマのためのmruby入門」 バック・ナンバ 前編 Rubyとmruby,何が違う? どう違う? 中編 mrubyをお手軽に体験する! 3.mrubyの組み込み方 mrubyのコアはバイトコード処理系です.前回は,対話的にmrubyのプログラミングができるアプリケーションmirb.exeを使いましたが,mirbは文を入力するたびに内部でバイトコード・コンパイラが実行され,バイトコード・インタプリタにより実行されています.mruby.exeも同様の機能を持っていますが,同時に事前コンパイルされたバイトコ

  • 組み込みC言語プログラマのためのmruby入門(前編) ―― Rubyとmruby,何が違う? どう違う?

    組み込みC言語プログラマのためのmruby入門(前編) ―― Rubyとmruby,何が違う? どう違う? 邑中 雅樹 Rubyは,まつもと ゆきひろ氏(通称Matz)が開発したプログラミング言語です.Rubyは2004年に発表されたWebアプリケーションのためのフレームワーク「Ruby On Rails」の爆発的ヒットによって,広く知られるようになりました.Rubyは,日で開発された言語としては初めてISO規格となり,最近では経済紙でもRubyへの言及を見かけるようになりました. Rubyは,「純粋オブジェクト指向」注1というパラダイムを取りつつも,プログラマのストレスを軽減することを第一として設計されています.そのため,ワン・ライナ(コマンド・ライン1行で済ませる作業)から,twitter.comのような大規模なWebアプリケーションまで,幅広い分野で活用されています. 注1:純粋オ

    yogasa
    yogasa 2012/10/28
  • 第1回 mruby誕生の経緯を明かそう

    Webサービスの分野などで人気を博してきたオブジェクト指向のプログラミング言語「Ruby」に2012年4月、組み込み向けの軽量版「mruby」が登場した。 Ruby(CRuby)の生みの親である、まつもとゆきひろ氏が、組み込み分野に強みを持つ福岡県の企業や大学などと共同で経済産業省の「地域イノベーション創出研究開発事業」として開発したものである(Tech-On!関連記事01、同02)。 mrubyの最大の特徴は、実行環境(仮想マシン:VM)の大きさが最小構成で550kバイトと小さく、他のアプリケーションにVMごと組み込みやすいことだ。C言語などで記述した体のアプリケーションの中で、ネットワーク処理やテキスト処理などC言語の苦手な処理やRubyの得意な処理をmruby側にオフロードさせる、といった使い方ができる。 ネットワーク側とのやり取りが増えつつあるデジタル家電など組み込み機器での

    第1回 mruby誕生の経緯を明かそう
  • Apache2.4で mod_mruby vs mod_lua ベンチマーク対決

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 さてさて、ついにこの日がやってきました。 mod_mrubyGithub mrubyが出てから、はや5日がたとうとしています。様子を見ていると、名前がmatsumotoという人達がmrubyを弄る確率が高いようです。僕も名前がmatsumotoなので、当然弄っています。こちら(Getting Started With Mruby)に関連する情報がまとまっています。 もともと、mod_mrubyを作る事になったモチベーションとしては、mod_mrubyを作ってみようかで書いていますが、様々な分野でLuaと呼ばれる軽量スクリプトの人気が高まってきており、それに対抗するべく、組み込みにあった軽量rubyとしてmrubyがリリースされました。そ

    Apache2.4で mod_mruby vs mod_lua ベンチマーク対決
  • Big Sky :: mruby でWebサーバ動いた

    ここ数日、mrubyの拡張を書いてた訳ですが。 mattn/mruby-uv - GitHub interface to libuv for mruby(experimental) https://github.com/mattn/mruby-uv mattn/mruby-http - GitHub interface to http for mruby(experimental) https://github.com/mattn/mruby-http これを使って #include <mruby/proc.h> #include <mruby/data.h> #include <compile.h> #include <mrb_uv.h> #include <mrb_http.h> #define _(...) #__VA_ARGS__ "\n" int main() { int n;

    Big Sky :: mruby でWebサーバ動いた
    yogasa
    yogasa 2012/04/27