Home > アーカイブ > 2013-07

2013-07

ngx_mrubyの紹介 ならびに nginx+mruby+Redisによる動的なリバースプロキシの実装案


ようやくngx_mrubyでもmod_mrubyのように動的なリバースプロキシ設定ができるようになりました。タイトルは完全に@hibomaさんによる「lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案」をパク … inspireしたものになっています。

今回の工夫点としては、

  1. ngxin内部の変数をうまく使う
  2. redisとのセッションはnginx起動時に一度だけ行なって、そのオブジェクトを使いまわす
  3. proxy_passを使って汎用的な設定にする

の3点です。

全文を読む

mrb_stateを共有しているRubyコード間でuserdataを読み書きできるmruby-userdata作った


mrubyにおいて、mrb_stateを共有しているRubyコード間で、userdataを自由に読み書きできるmruby-userdataというmrbgemを作りました。

これは、mrubyの状態遷移情報を格納しているmrb_stateを共有している限り、あるタイミングでコードAが呼ばれて、次に別のタイミングでコードBが呼ばれた場合、コードAでuserdataオブジェクトを保存しておけば、コードBからそのオブジェクトを取り出せる仕組みです。

グローバル変数を使えばコード間でやり取りができますが、なんとなくグローバル変数を使うのは実装上バグを生みそうなので、C側にuserdataを保存しておくハッシュテーブルオブジェクトを作っておいて、そこにRuby側から保存したい時に保存しておき、取り出したい時に取り出すためのRubyメソッドによるインターフェイスを実装しました。

比較的安全にuserdataを保存しておけると思います。

全文を読む

ngx_mrubyでnginxの内部変数を操作する


最近はコード書きに時間をとれていませんが、昨日は久々にngx_mrubyを少し触る事ができたので、その際にできるようになったタイトルのような処理を紹介したいと思います。

全文を読む

マルチプラットフォームでmrubyを使ってHTTP通信する方法


mrubyも少しずつ知られてきていて、WindowsやLinux、MacOSX等マルチプラットフォームで色々遊んでいる人が多いことでしょう。そうなってくると、しばらく弄ってみた後はやっぱりマルチプラットフォームで同じようにHTTPで通信してみたいと思いませんか?

例えば、

  • mrubyでHTTPのGETとかPOSTとかしてみたり
  • mrubyを組み込んだデバイスからTwitterに呟いてみたり
  • 各種デバイスからZabbixをつついてみたり
  • エアコンを監視してるRaspberry PiからGrowthForecastにデータを送ってグラフ化してみたり
  • 組み込みデバイスや低レイヤーなソフトウェアからfluentdにデータを送って解析してみたり

ということで、今回はそういうことをするためにはmruby側でどういう準備をして、どう実装すればいいかの導入部分を説明したいと思います。

全文を読む

P2Pファイル共有ネットワークを利用したフラッシュクラウド耐性のある協調型負荷分散手法


「P2Pファイル共有ネットワークを利用したフラッシュクラウド耐性のある協調型負荷分散手法」という内容で、COMPSACという国際会議で代理で発表してきました。(去年の国際会議では僕が色々あって、代理で先生に発表してもらったような形ですね)

今回は、著者の方が色々あって発表できないので、共著者の僕が代理で発表してきました。著者や先生と相談した結果、面白い内容なので公開しようということになり、僕のブログが一番手っ取り早いので、ここで紹介します。

全文を読む

Home > アーカイブ > 2013-07

検索
フィード
メタ情報

Return to page top