You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Goとmrubyを使ってitamae-goを作った github.com Pokemon Goが流行っていたので流行に乗じてItamae Goを作った。 というのは冗談で、手元の開発環境のセットアップにitamaeを使っているのだけど、まっさらな環境でitamaeを実行したい時にRubyやitamaeをどういれるかについて考えるのが面倒なので、Rubyなしで実行できるitamaeを作った。Goで実装し、mrubyでレシピを読むことによりRubyなしでの実行を実現した。 インストール方法 Releasesにバイナリを置いてあるのでこれをダウンロードする。基本的には環境セットアップ用のシェルスクリプトからこれをcurlなりwgetなりでダウンロードして使うことを想定している。 なんか動かなかったらgit cloneしてmakeすればその環境用のバイナリが作れるはず。 *1 使い方 普通にita
今年の3月くらいからずっと悶々としていて、なかなか手が出せなかったアイデアがやっと実現できました。 mod_mrubyでやりたいことできたー!— k1LoW (@k1LoW) June 16, 2016 (試行錯誤して書いてみたら、結果たった数行という。。。) Auto ScalingではなくてAuto Cachingという考え方 AWSではAuto Scalingという、サーバの負荷の変化などによってEC2インスタンスをスケールする便利な機能があります。 が、大抵はクラウド環境でないと容易には実現できません。 例えば、クラウドではなく サーバリソースは増やせない。 普段はキャッシュはしてほしくないコンテンツ。 ただ、アクセスが多くなるとかで何かしら負荷が高くなった時には「仕方なく」キャッシュを使っても良い。落ちるよりはマシ。 負荷が戻ったらキャッシュを使わないようにして欲しい。 という状
This document provides an overview and examples of using ngx_mruby, which allows embedding the mruby scripting language in the nginx web server. It introduces ngx_mruby and how it works, provides instructions for building and installing ngx_mruby, and gives several code examples for common tasks like content handling, logging, redirection, and authorization using ngx_mruby. Key features covered in
Many projects rely on command-line tools to provide an efficient and powerful interface to work. Building tools for everyone can be difficult, because of conflicting environment or OS. How can we build command-line apps that work for everyone and still write Ruby? This talk will discuss how to use mruby-cli to build cross-platform apps in Ruby. Our goal will be to build a CLI app using mruby and p
This document discusses how to create Mackerel plugins using mruby. It explains what Mackerel plugins are, the required format, and how to write command line tools and classes in mruby. It then provides an example of implementing Redis commands like SCARD and SMEMBERS in mruby-redis by reading the C source and making additions. This allows monitoring Redis set data with Mackerel. Finally, it shows
nginxのv1.9あたりからOSS版でも使えるTCPロードバランシング機能をmrubyでプログラマブルに制御できるようにngx_mrubyでもサポートしました。 github.com これで、HTTPやHTTP/2だけでなくTCPのロードバランシングでもmrubyによって通信をプログラマブルに制御できるようになったわけです。 nginxのTCPロードバランシング機能は、nginx内部ではstreamモジュールとして、httpモジュールとは別で実装しているため、ngx_mrubyでも一から実装し直す必要がありました。 ということで少し面倒だなぁと思っていたのですが、ちょうど、僕の最近やりたい事としてTCPのロードバランサをもう少しプログラマブルに書きたいというのがあって、色々とTCPロードバランサを探したり、既存のソフトウェアで設定を試行錯誤するよりも、自分でnginxのTCPロードバラン
昨今、Goのような言語が注目されているのにはいろんな理由があるかとは存じますが、こと運用の面に関していうと、バイナリをビルドしてポン置きすればマルチプラットフォームで動くということが簡単にできることも大きい。Goは、個人的には好きな言語だが、Rubyで書けると楽な場面も多々ある(Concurrencyが問題でないツールなどは特に)。そんな時に有用なのが、mruby-cliだ。 github.com 具体的な利用例としては、「mruby-cliを使ってプロセスのfdをリソース使用率を元に解析するワンバイナリなツールpfdsを作った - 人間とウェブの未来」に詳しい。ローカル(Mac OS Xなど)でさっとビルドして、本番環境(x86_64上のLinuxなど)にポン置きしたら動く。便利。 mruby-cli特有のお作法と、mrbgemに対する知識が必要ではあるものの、そのあたりをクリアしさえす
H2Oにmruby拡張の提案を行いmergeされてから幾つかのPRを経て、少しずつ実用的になってきました。 github.com 今日は簡単にその使い方を紹介しようと思います。 h2o_mrubyを有効化したh2oをビルド h2o_mrubyを有効化してビルドするのは簡単で、OSのライブラリ環境(/usr/lib/以下とか)にlibmruby.a等のmrubyライブラリがある状態で、 cmake -DWITH_MRUBY=ON . make h2o するだけで、h2o_mrubyが有効化されたh2oバイナリがカレントにビルドされます。簡単ですね。 またこの記事も参考にすると良いかもしれません。 qiita.com 使えるメソッド mod_mrubyやngx_mruby程メソッドはまだ充実していませんが、少しずつ使えるものを実装しています。また、mod_mrubyやngx_mrubyとの互換
200万以上のWebサイトを支えるインフラで、リソース制御として使われている mod_mruby の採用事例を紹介します。
github.com 会社の運用メンバーと色々議論していた中で、「カジュアルにWebサーバへのDoSみたいなアクセスが来た時に検知して制御したいよねー」という話が上がったので、http-dos-detectorというnginxでもapacheでも使えるWebサーバ拡張をmrubyで書きました。 もちろんmrubyなので、mod_mrubyとngx_mrubyを使っています。ので、Rubyコードはそのまま同じコードをどちらのミドルウェアでも使えます。mod_mrubyとngx_mrubyを使えば、ちょっとしたWebサーバの拡張は両方で同じ実装に落とし込めるので便利ですね。 使い方 例の如く、GitHubのREADME通りにインストールして下さい。Rubyのコードはmod_mrubyでもngx_mrubyでも有効なので、そのコードを読み込む設定をそれぞれ以下のように記述するだけでよいです。 a
1年前ぐらいにab-mrubyという、Rubyでabコマンドをプログラマブルに操作・拡張できるツールを作っていたのですが、それを業務のとある環境で使ってみたところまぁまぁ良かったのでその使い方を紹介しようと思います。 github.com というのも、特定の条件でベンチマークで負荷をかけていくとプロセスがハングするという状況があって、その状況を再現するためにabコマンドでベンチマークをかけていたのですが、abコマンドのオプションがパッと見わかりずらかったり、どのホストのどのパスにベンチマークをかけているかなどをドキュメントで書いていて、 あれ、これRubyのDSLで表現した方がわかりやすくない? と思って、ab-mrubyを作っていたことを思い出し、Rubyで書いてみました。 target_hosts = ["test001.example.jp", "test002.example.jp
この記事は、mod_mruby ngx_mruby Advent Calendar 2日目の記事になります。 「分かったこととか、ちょっとしたノウハウ(レベル低いやつですw)とか、感想とか」とエントリーしましたが、全部まとめて書くとエライ長くなりそうなのと、情報がまぜこぜになって読みづらくなりそうなので、幸いアドカレの枠にまだそれなりに空きがあるようですので分割させていただきますm(__)m ここではまず、やってみて「分かったこと(というかやってて気づいたこと)」と「感想」の辺りを書きたいと思います。 ノウハウについては5日目に書こうと思います。 きっかけ まず、常々出たいとは思っていたものの、相棒が居ないので出れなかったISUCONの予選問題が公開され、それを普段使っていた(現在はPythonの会社に転職したので過去形)PHPでやってみたりしてました。 isucon4予選AMIが公開され
RubyKaigi 2014でmod_mrubyやngx_mrubyとその応用について話してきました。 この写真はhsbtさんに撮っていただいた写真で、その他RubyKaigi中のグレートな写真を沢山撮影されていました。 hsbtさんに感謝します。 RubyKaigi 2014, 18-20 september RubyKaigiは、オブジェクト指向スクリプト言語Rubyの準国際カンファレンスです。 世界中からRubyのコミッターや技術者がRuby発祥の地である日本にて一堂に会するイベントです。 2006年からほぼ毎年開催されており、前回のRubyKaigi 2013では公用語に英語を追加するなど、国際カンファレンスとしての場を整え、3日間でのべ1,500名以上の来場者を迎えました。 発表で使用したスライドは以下です。 スライドよく見ると、時間の関係上省いた最後の
mruby-fluent-logger (別名 fluent-logger-mruby) のv0.0.2をリリースしました。 今回の目玉は、シリアライズエンジンの変更です。 これまでのJSONから、suzukazeさんにより移植されたmruby-msgpackへ切り替えることで、パフォーマンスが向上しています。 https://github.com/y-ken/fluent-logger-mruby https://github.com/y-ken/fluent-logger-mruby/releases/tag/v0.0.2 ログ収集エンジンFluentdをmrubyから利用するためのロガーパッケージ「mruby-fluent-logger」のmsgpack対応版をリリースしました。jsonに比べて著しい性能向上を果たしています。 https://t.co/kzi9YPBRFI #mru
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ある人「あなたのやりたいことはなんですか?」 僕「複数あるWebサーバソフトウェアの拡張記述を統一したいです」 ある人「(それはさすがに無理だろ…)」 という感じで始まったmod_mrubyやngx_mrubyの開発ですが、今ではそれも夢では無い所まできています。当時は「mod_mrubyを作ってみようか」という記事からmod_mrubyの開発ははじまりました。 朧げにあったアイデアでは、「どうやって統一するのか?どんな言語にするのか?どうやって組み込むのか?え?そもそもそんな事無理では?」という感じでしたが、1年前に運良くmrubyがGitHubで公開されて以来、色々なアイデアのピースがはまっていき、いつの間にかそのアイデアが形になろうとし
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 さてさて、これまでの研究の論文化や研究会発表等が落ち着いたので、mod_mruby触ってます。 mod_mruby – Github 前回、mod_luaにパフォーマンス面で完敗したわけですが、ついにやりました。mod_luaを超えてやりましたよ! 工夫した所 何を変えたかいうと、前回の実装ではmrubyスクリプト実行毎に、 mrb_open()実行 mrb_define_module()やmrb_define_class_method()を実行 mrb_parse_file()実行 mrb_generate_code()実行 mrb_run()実行 していました。しかし、Apacheの特性上プロセスやスレッドをプールさせて使いまわすため、少
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く