先日の関西Ruby会議の帰りの飛行機の中、着陸5分前ぐらいの出来事。

harasou: 「松本さん、mrbgems の作り方教えてくださいよ」 matusmotory:「じゃあ、まづ mrblib ってディレクトリ作って…」

おもむろに二人並んで PC を取り出し、mrbgems を作り始めた(着陸直前だったので、PC出して良かったのかよくわからないが…) というわけで、その時のことを簡単にご紹介。

続きを読む

ブログ書くまでがペパボテックカンファレンス!というプレシャーをうけたので、一昨日(7/4)、福岡天神で開催された「第2回ペパボテックカンファレンス」について記録。

5時間超におよぶカンファレンスに参加してくださったみなさま、本当にお疲れ様でした。

@takesi_yosimura さんが、twitter をまとめてくださっていました。ありがとうございます!また、@kimroi さんは発表スライドをまとめてくれていました。ありがとうございます!

続きを読む

先日会社で「mysql のテーブルと、プロセス上の共有メモリを連携させたい」って話が出たとき、トリガで外部プログラムが実行できればいけるのでは?と思ったので、調べてみた。

MySQL で外部コマンドを実行するには

mysql で外部コマンドを実行するには system が使える。

mysql> system uname -a
Linux cent6 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

ただ、これはターミナル上からとかでないと使えない。

調べてみると、mysql には UDF(User Defined Function) という仕組みがあって、自作関数を作成することができるらしい。これは、C や C++ で書いて共有ライブラリ(.so)を作成し、mysql の plugindir に放り込めば使えるようになる。

続きを読む

mruby-cgroup は、mruby から cgroup を利用するためのモジュールで、いわゆる libcgroup のバインディング。現在、mruby-cgroup 9cad17343 で対応しているサブシテムは以下のとおり。

  • cpu
  • cpu_set
  • cpu_acct
  • blkio

他に、cgroup のサブシステムには以下のようなものがある(CentOS 6.4)

# cat /proc/cgroups
#subsys_name    hierarchy   num_cgroups enabled
cpuset  10  1   1
ns  0   1   1
cpu 11  1   1
cpuacct 12  1   1
memory  13  1   1
devices 14  1   1
freezer 15  1   1
net_cls 16  1   1
blkio   17  1   1
perf_event  0   1   1
net_prio    0   1   1

この中から、簡単に使えそうな memory サブシステムを追加してみた。

続きを読む

mruby-cgroup とは

mruby-cgroup は、@matsumotory が開発している mruby から cgroup を利用するためのライブラリ。

https://github.com/matsumoto-r/mruby-cgroup

cgroup は linux カーネルの機能で、タスク(プロセス)のリソース(CPU, メモリ, IO, etc)を制御するための仕組み。 これを利用すると「特定のプロセスが CPU100% 使うような処理を行っても 50% しか利用させない」といった制御ができるようになる。

続きを読む

mruby の動作 mruby の実行基盤であるRiteVMは、Rubyスクリプトを逐次解釈して実行するのではなくコンパイル結果のバイナリコード(Rite中間表現)を直接実行する。 Rite中間表現をバイナリ出力したものがmrbファイル(Riteバイナリファイル)。 mrbgem とは mruby にライブラリを追加するための仕組み。mruby は require などで動的にライブラリを読み込めないので、mruby ビルド時に組み込む必要がある。 追加する際は、build_config.rb に追記してビルドする。 なお、mrbgem の実装には、以下3パターンがある。 C拡張 Ruby拡張 C & Ruby 拡張 作り方については、この辺りが参考になりそう。 mrubyの拡張モジュールであるmrbgemのテンプレートを自動で生成するmrbgem作った mrbgemsの作り方メモ(勉強中) ireq とは まだ全然わかってないが、この辺り。 https://github.com/mruby/mruby/issues/944#issuecomment-14556703 ライブラリ構成 以下の4つが定義されているが、現在提供されているのはミニマルのみ? ミニマル: 実行に必要な最低限の機能 スタンダード: JIS X 3017 規格相当 フル: MRI(CRuby) のフル機能相当 ドメイン別: 製品ドメイン別の拡張ライブラリ 参考リンク オフィシャルページ ソース Github 軽量 Ruby のご紹介と 軽量 Ruby フォーラムのご案内 IIJ 軽量Rubyへの取り組み mruby Advent Calendar 2013 mruby のビルド方法 mrubyのバイトコードフォーマット解説

続きを読む

mruby とは

組込み向けに軽量化されたRuby。mruby 単体で実行するというよりは、組み込み機器や Cなどで書いたアプリのなかに、まるごとmrubyアプリケーション+実行環境を組み込んで利用する感じ。 mruby

続きを読む

プロフィール画像

harasou

めくじらを立てない

Infra Engineer

Fukuoka Japan