The slide is a short introduction of mruby and Webruby script example.

このドメインは お名前.com から取得されました。 お名前.com は GMOインターネット(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日本のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2024年5月時点の調査。
最近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が対象(のひとつ)にしているデバイス系環境では、プログラムを格納する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
mrubyにはmrb_gc_arena_save()/mrb_gc_arena_restore()という関数があって、これを使わずにCでオブジェクトを作りまくるとエラーでコケる。この件について作者のMatzが直々に日記を書いておられる。(http://www.rubyist.net/~matz/20130731.html#p01) mrubyとC言語とGCの問題点とその解決策を説明してくれているのだが、これを読んでもなんとなく微妙にわからない。という人は多いのではないかと思う。mrubyのGCを読んだことある人ならわかるんだろうけども。 で、俺も何か書いてみようと思ったわけだ。余計わからなくなるかもしれないが。しかしmrubyのarenaまわりのAPIはかなり内臓が飛び出したような設計だと思うので、使う人がGCとかオブジェクト管理を少し知らないといけないんじゃないかと。 ■さわり まず前提
イベントログ収集ツールFluentdに、mrubyからも構造化ログデータを送りたい。 その情熱に勢いを任せて、"mruby-fluent-logger" を作りましたので公開します。 これを使えば、C/C++アプリに組み込んだmruby等からFluentdを容易に扱えますね。 そんな"mruby-fluent-logger"はこれらの用途に最適です。 アプリケーションログ・デバッグログを送る 組み込み機器のセンサー情報などを送る 夢が広がりますね! mruby-fluent-loggerとは mrubyから呼び出せるロガークラスで、Fluentdへ構造化データを送れます。 GitHubリポジトリにてソースを公開しております。 https://github.com/y-ken/fluent-logger-mruby mrubyからの呼び出し方法 アルファリリースとも言うべき段階のため、必要最
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ある人「あなたのやりたいことはなんですか?」 僕「複数あるWebサーバソフトウェアの拡張記述を統一したいです」 ある人「(それはさすがに無理だろ…)」 という感じで始まったmod_mrubyやngx_mrubyの開発ですが、今ではそれも夢では無い所まできています。当時は「mod_mrubyを作ってみようか」という記事からmod_mrubyの開発ははじまりました。 朧げにあったアイデアでは、「どうやって統一するのか?どんな言語にするのか?どうやって組み込むのか?え?そもそもそんな事無理では?」という感じでしたが、1年前に運良くmrubyがGitHubで公開されて以来、色々なアイデアのピースがはまっていき、いつの間にかそのアイデアが形になろうとし
思ったことをつらつらと支離滅裂な個人的メモ。 1.シンプルマルチスレッドGC このあいだからいじってるやつだが、とりあえず世代別GCがあるのとないので3倍も違うというのはおかしいのでまだどこかバグっているんじゃないかと思う。効率面での話なのでヒープスロットの取得・解放戦略のへんが怪しい。 単純な再帰型マーク関数を2つのスレッドで同時に動かすというのは、まあそれなりに短時間で終わるのだろうが、それはあくまでも遊んでるCPUがあるという前提であって、システム全体のスループットとしてはたぶんあまり嬉しい話ではないだろう。作るのは楽だが無駄が多い。 このシンプルな手法が通用するのは関数を再帰呼び出しするというマシンスタックを使った探索の場合のみであり、たとえばmrubyやrubyのようにリストを繋いだりたどったりする方法ではリストのアクセスに排他制御が必要になって思ったような性能は出ないと思われる
2013年4月18日木曜日 mrubyのGCの仕組みを調べた 時刻: 0:09 動機 LuaのAPIは、Lua内部で扱われる値に関してスタック上であれこれ操作出来るだけで、値自体を直接取得したり作成することはできない。値を取り出したいときはスタック上のある場所にある値の型を調べて、その型の値を取り出すAPIを呼び出す、という具合になっている。この場合、処理系で扱う値はすべて処理系側で管理されているので、ガベージコレクト(GC)できるのもわからんでもない。 しかしmrubyのAPIではスクリプト内部で扱う値をmrb_valueとしてC言語側に直接取り出せる。この場合処理系の管理を逃れてしまうことはないのか。またCの関数でmrubyのオブジェクトを作成した瞬間にGCが走った場合に、まだmrubyで管理している変数からの参照がなくて、解放されてしまったりしないのか。 大昔の事しか知らないけど
クリス・アンダーソン著の書籍「Makers 21世紀の産業革命が始まる」の影響もあり、一気に高まる ハードウェア への関心。 3Dプリンターを象徴として、この10年でハードウェア生産のコストは激減しているのは事実。そんな中、ITxハードウェアによるイノベーション創出の契機も高まっている。そのムーブメントの核心は「組み込み」、つまりハードウェアに組み込むことを前提としたソフトウェアである。 しかしながら、組み込みの世界は敷居が高い。ハード x ITというとArduinoといった比較的手軽なキットなどもあるが、enchant.jsのように数十行のコードを書くだけで作品が完成というレベル感はなかった。 そういう意味で、冒頭の画面のキット「 液晶マイコンボード付きmruby学習キット EAPL-Trainer mruby」は衝撃的だ。Rubyの軽量版「mRuby」に対応したハードウェアである。 R
組み込みC言語プログラマのためのmruby入門(中編) ―― mrubyをお手軽に体験する! 邑中 雅樹 mruby(eMbeddable Ruby)は,まつもと ゆきひろ氏が開発したプログラミング言語Rubyの処理系の一つであり,組み込み分野への適用をねらっている.まだ発展途上の部分もあるが,組み込みシステムへの適用やアプリケーションに組み込むソフトウェア部品の開発手法として,今後,急速に広まる可能性がある.本連載では,主にC言語で開発している組み込みプログラマを対象に,Rubyおよびmrubyについて解説する.今回は,実際にWindows環境でmrubyを動作させながら,mrubyによるプログラミングを体験していただこう.(編集部) 技術解説・連載「組み込みC言語プログラマのためのmruby入門」 バック・ナンバ 前編 Rubyとmruby,何が違う? どう違う? 2.Windows環
本連載では,主にC言語で開発している組み込みプログラマを対象に,Rubyおよびmrubyについて解説している.今回は,mrubyをアプリケーションに組み込む方法について概要を説明する.また,組み込みJavaなどの類似技術との違いについても述べる.(編集部) 技術解説・連載「組み込みC言語プログラマのためのmruby入門」 バック・ナンバ 前編 Rubyとmruby,何が違う? どう違う? 中編 mrubyをお手軽に体験する! 3.mrubyの組み込み方 mrubyのコアはバイトコード処理系です.前回は,対話的にmrubyのプログラミングができるアプリケーションmirb.exeを使いましたが,mirbは文を入力するたびに内部でバイトコード・コンパイラが実行され,バイトコード・インタプリタにより実行されています.mruby.exeも同様の機能を持っていますが,同時に事前コンパイルされたバイトコ
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mrubyでRedisを操作できるようにしました。ソースはGitHubに上げています。driverにはhiredisを使っているので結構高速だと思います。 元々のモチベーションはmod_mrubyでredisを操ることでしたが、mrubyのような軽量・高速な言語とRedisの連携は実に相性が良いと思ったので、mrubyの拡張ライブラリとして書き直しました。 色々と考えがあってmrbgems化はもう少ししてからにしようと思っています。 インストール 非常に簡単です。以下の通りです。自動で最新のmrubyも取得します。 [program lang=’bash’ escaped=’true’] git clone git://github.com/
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直
最近ちょとmrubyのコードを見たりしていた。ついでにGCCの使い方を勉強しつつ、吐き出すアセンブラを眺めてみたり、そんな感じ。 勉強がてらVMまわりを少しいじってみたので自分用メモを残しておく。 眺めてたのはVMのコードで、mrubyのVMはGCCではダイレクトスレッデッドコードになるので、ラベルの配列を作ってgotoすることで命令を実行していく。 gotoするときはNEXTというマクロを使う。 #define NEXT mrb->arena_idx = ai; i=*++pc; goto *optable[GET_OPCODE(i)]ここで疑問なのはmrb->arena_idxで、こいつは何に使うのかというと、ここに説明が書いてある。 http://www.dzeta.jp/~junjis/code_reading/index.php?mruby%2FGC%BD%E8%CD%FD%A4
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く