「ここまで出来るmruby」 builderscon Tokyo 2017
mruby v1.3 がリリースされましたね。 趣味mrubyウォッチャーとしてv1.2からv1.3で何が変わったのかを、個人的にまとめてみたいと思います。 注目すべきは、やはりmatzのcommit数。 もちろんmerge commitも含みますが、約半数のcommitがmatzのcommitになっています。 なぜmatzがここまでmrubyに力を入れるのか聞いてみたいところですね。 それではmruby v1.2 からv1.3への変更で何が変わったのか、ザックリ見ていこうと思います。 リリースノート http://mruby.org/releases/2017/07/04/mruby-1.3.0-released.html 1年以上あった割には、表向きにはそこまで変化はない感じ? わりと最新のCRubyの文法やメソッドも入っていたりしますね。 Contributions https://
matsumoto-rさんのngx_mrubyで最初のHTTPSアクセス時に自動で証明書を設定可能にするFastCertificateの提案とPoCを参考に、Let's EncryptからSSL証明書を自動取得する仕組みを内包した nginx-fastcertificate を実現するDockerコンテナとdocker-compose設定例を作ってみました。 全体像 使い方 以下のような yaml ファイルを用意します。 version: '3' services: nginx: image: quay.io/akiray03/nginx-fastcertificate ports: - '80:80' - '443:443' volumes: - ./logs:/usr/local/nginx/logs links: - redis:redis environment: NGINX_WO
mruby/cの安定版1.0リリースに先立ち、Rubyおよびmrubyの開発者で、ITOCの顧問でもあるまつもとゆきひろさんに、mruby/cプロジェクトへの期待、今後の方向性などについて東専門研究員とともにお話いただきました。 (インタビュー日:2016年12月12日) ― 本日はよろしくお願いいたします。 ITOCではmruby/cや SciRubyなどRubyに関連した研究開発に取り組んでいます。Rubyを利用されることの多い県内企業の皆さんからはRubyやITOCの研究開発に多くの期待が寄せられています。 まつもとさんは国内外で多数講演され、多くの方とお話される機会をお持ちだと思いますが、国内外でのRuby、mrubyの拡がりについてどのように感じていらっしゃいますか? まつもと:Rubyは、すでに多くのユーザーに利用されており、今更、新たに拡がりを感じるレベルではないですね。 m
今回も長め。 メモツールの移行を思い立ったので、今までのデータを移すべくテキトーなツールをつくって見ました。 移行ツールと言いながらまだ 単一のMarkdownとBoostnote の相互変換くらいにしか対応していませんが、、、 github.com 前回のネタに続いてせっかくなのでGolangでなく、mruby-cli で作ってみました。 今回はその過程でやったことや作ってみて思ったこととかをつれつれなるままに書いてみようと思います。 dojineko.hateblo.jp やったこと mruby-cliでひな型を作る ガシガシ実装する 開発環境向けにコンパイルして、トライ&エラー 目的の機能が完成するまで 2 と 3 を繰り返す 出来上がったら docker でクロスコンパイル Githubにreleaseを登録しておしまい TDDとかなにそれ美味しいのみたいな感じですが、まぁそれは置
Roppongi.rb #2 で「mitamae」について話してきた Roppongi.rb #2が "Infrastructure x Ruby" をテーマに開催され、そこで RubyなしでItamaeレシピを実行できる「itamae-go」を作った - k0kubun's blog 話と pure mrubyで実装されたItamae「itamae-mruby」を作った - k0kubun's blog 話をしてきた。 いいたかったことはスライドの通りだけど、枠が15分でいろいろ漏れた話を書いておく。 mitamaeの現状について なんでitamae-mrubyからMItamaeに変えたの というか一昨日までmitamaeはitamae-mrubyという名前だった。エエー。変えた理由は真面目な奴がいくつかあるんだけど、あえて不真面目な奴だけ書くと、名前が微妙なソフトウェアは流行らない気が
はじめまして、技術基盤部の相原(kaihar4)です! 今回は、アプリケーションのクラウドサービスへの移行の一環で、 Amazon S3から取得した画像URLを含むファイルを元に、そのURLの外部画像を取得して返す機能 をmrubyで書き直してAWSに移行した話をしていきたいと思います。 この機能は元々モノリシックなアプリケーションの一機能として動いていたもので、これを切り出してAWSに移行するというのが今回私に与えられたミッションでした。 このアプリケーションは歴史が長く、その間ほとんどメンテナンスされていませんでした。 ディストリビューションは古くPHPのバージョンも4系、したがってそのまま持っていくという選択肢はなく、AWS上に新規にインスタンスを構築することになります。 弊社にはAPI部分をPHPからRubyに移行する方針があるということもあり、Amazon Linux上にRuby
「Rubyの良さを組み込みに」を合言葉とする開発言語「mruby」は公開以来、着実な進歩を遂げ、さまざまな場面での利用も進んでいます。ここでは「Web界から組み込みに向けられた刺客」(まつもとゆきひろ氏)たる、mrubyの採用事例を紹介します。 mruby(軽量Ruby)は経済産業省「地域イノベーション創出研究開発事業」として2010年に始まり、2012年4月にオープンソース(MITライセンス)として公開された組み込み向け開発言語です。「Rubyの良さを組み込みに」を合言葉に開発されたmrubyは発表よりはや3年、たくさんの人々の協力でさまざまな形の改良がくわえられ、現在ではライブラリは170を超え、デバッガー対応の安定版「mruby V1.2.0」が発表(2015年11月)されるなど着実に進化しています。 Rubyは開発しやすい、生産性の高い言語としてWeb開発などに広く使われている言語
この記事は、mruby advent calendar 2015の16日目の記事です。 画像やstaticコンテンツ配信系はHTTP/2が有利な状況が幾つかあるので、ついでにHTTP/2を喋る画像変換サーバのプロトタイプをmrubyで作ってみました。ベースはもちろんtrusterdです。なんていったってmrubyのHTTP/2サーバですからね!! 最近また開発を再開しておりまして、昔はh2oやnghttp2のベンチマークに一緒に比較対象として入れてもらったりしていたのですが、しばらく離れているうちに皆さん先へ先へと行ってしまわれたので、また追いつけるようにセッセと勉強しながら実装しだしております。 github.com その他、trusterdについてはこの辺とか、 qiita.com この辺を見ていただくと良いかと思います。 hb.matsumoto-r.jp trusterdのビルド
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
昨日、ngx_mrubyのTCPロードバランシング機能に対応した記事を書きました。 hb.matsumoto-r.jp というのも、実は以下に説明するようなFluetnd+Norika+GrowthForecastを利用したスケールアウト型のシステムを簡単に作りたかったからです。 ということで、まずはプロトタイプ設計みたいなものをフワっと考えてみました。 実現したい事 まずやりたいこととして、 1000台以上のサーバ群からのFluentdによるTCPデータをそれぞれの転送元サーバに紐づく任意のバックエンドサーバに振り分けたい 転送元サーバ群はそれほど増減しない バックエンドサーバをスケールアウト型に増やす場合に、転送元サーバの設定は変更したくない 転送されたログは転送先サーバ内でグラフ化されるので、任意のHTTPクライアントによって取得したい転送元サーバのグラフ画像を適切なバックエンド(F
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に対する知識が必要ではあるものの、そのあたりをクリアしさえす
FluentdからNorikraにサーバの各種ログを流し込んで解析する、というのは、 割とよくあるNorikraのユースケースかと思います。 Norikra+FluentdでDoS攻撃をブロックする仕組みを作ってみた | Developers.IO Fluentd + Elasticsearch + Kibana + Norikra+ Zabbixを使ってOpenStackのログ解析してみた | テクノロジーコラム | コラム・ブログ | NTTソフトウェア株式会社 ログ解析にNorikraを使ってみた - hase log FluentdとNorikraで異常アクセス検知を行う | ピコもん開発ブログ これらは、テキストとして出力されているログファイルをFluentdで取り込んで送信となりますが、 ApacheやNginxのアクセスログをNorikraに溜め込むのなら、 以下のmrbge
福岡の博多で開催されたHacker Tackleという技術イベントで、「HTTP/1.xとHTTP/2が混在する時代のウェブサイト設計とmruby in HTTP serverの可能性」というタイトルでお話をしてきました。 hackertackle.github.io HTTP/2に関しては既に素晴らしい発表が幾つかされており、特に今年のYAPC::Asia 2015で id:kazuhooku さんと id:Jxck さんが発表されたHTTP/2の内容は素晴らしいです。今回の僕の発表で同じような所を喋ってもどうしても二番煎じになってしまうため、よりサーバ実装についてや実際に使う時にHTTP/2のどういう特徴がチューニングに関わってくるかという話を、mruby組込みをまじえてお話しました。特に、サーバプッシュや優先度制御、それを制御するための方法について言及しています。また、現在公開できる
最近、h2o で mruby がサポートされたので、まずはコンパイルしてみた。 https://github.com/h2o/h2o h2o は、@kazuho さんが作成されている HTTP/2 & HTTP/1.x 対応の高速な WEBサーバです。 環境いつものごとく vagrant で。 CentOS 7.1 (3.10.0-229.el7.x86_64) h2o 1.4.2 mruby 1.1.0 手順現状 h2o で mruby を利用する場合は、h2o と mruby のコンパイルを、別々に行わなければいけない(mod_mruby とかだとそのなかで mruby をビルドしてくれる)。 流れとしてはまず、libmruby.a を作成し、h2o コンパイル時にそれをリンクする感じ。 作業ディレクトリの作成 1 2 mkdir work cd $_ vagrant の共有フォルダ
今日は第68回Ruby関西勉強会にお誘い頂き、ミドルウェアへのmruby組込みの考え方であるMiddleware Configuration as Codeについて、事例を中心にお話しました。 rubykansai.doorkeeper.jp 会場がファーストサーバさんということで、何やら母校にいくような、地元に帰るような不思議な気持ちになり、いつもとは違う新鮮な気分で発表に取り組む事ができた気がします。 内容としては、まさにMiddleware Configuration as Codeであり、 Middleware Configuration as Codeに至る背景 Middleware Configuration as Codeの定義 Middleware Configuration as Codeの実装やメリット ngx_mrubyの簡単なチュートリアル 弊社(ペパボ)における事
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との互換
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く