人間とウェブの未来

「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。

研究

h2o_mruby v0.0.1をリリースしてみた

そういえば今から3年前に、 人間とウェブの未来 - mod_mruby 0.0.1をリリースしてみたblog.matsumoto-r.jp 人間とウェブの未来 - nginxをmrubyで制御するモジュールngx_mruby 0.0.1をリリースしましたblog.matsumoto-r.jp などなどの実装を開始しました。色…

nginxでもapacheでも使用可能なDoS的アクセスを検知して任意の制御をするWebサーバ拡張をmrubyで作った

matsumoto-r/http-dos-detectorgithub.com 会社の運用メンバーと色々議論していた中で、「カジュアルにWebサーバへのDoSみたいなアクセスが来た時に検知して制御したいよねー」という話が上がったので、http-dos-detectorというnginxでもapacheでも使えるWeb…

virtualingを使ってプロセスのメモリ使用量上限値をOoM-Killerのタイミングで自動拡張してみた

virtualingとは、わりとセキュアでCPUやメモリ・IOといったリソースの制御が可能なプロセス実行環境上で、設定や構成を変える事なくミドルウェアのようなプロセスを動作させることができるツールです。実装はmrubyです。 matsumoto-r/mruby-virtualinggithub…

virtualingでchroot配下のプロセスを簡単にリソース制御してみよう

virtualingとはkazuhoさんの低コストでchrootするためのjailingと、mruby-virtualingによるリソース制御や必要であればIPアドレスの付与する機能を組み合わせたツールです。virtualingを使うと、Rubyコードによって、リソース制御可能なchroot環境でミドルウ…

ngx_mrubyを使った簡単な画像変換サーバを数分で実装してみた

2日前にmrubyの画像変換mrbgem下さいとつぶやいて、その後2日以内にgdとMagick++のmrbgemが開発されるこのスピード感がmruby。 https://t.co/RzTZJsX9vP https://t.co/4YkJ2PwISQ— MATSUMOTO, Ryosuke (@matsumotory) 2015, 4月 25 というように、mrubyで画…

MacOSX上でLinuxとWindowsとOSXで動くmrubyバイナリを簡単にクロスコンパイルできるmrbgem作った

ペパボ社内では、mrubyを使う機運が高まってきています。 誰よりも早い学習速度であっというまにmrubyを理解してしまったあんちぽさんや、CRubyだけでなくmrubyもマスターしてまさに真のRubyistになられたしばたさんと共に色々とmrubyの今後について議論して…

mrubyのモジュールmrbgemを開発した際に簡単にTravis CIを設定する方法

mrubyのモジュールであるmrbgemを開発した際に、どうせならtravisの設定をして、自動でビルドやテストのCIを実施したいと思います。ですが、なんとなく後まわしにして、結果設定をしないまま放置しているmrbgemがあります。 そこで今回は、大抵のmrbgem上で…

独自でngx_mrubyのDockerイメージを作る方法

随分前にngx_mrubyをDocker対応していたのですが、最近になってより使いやすくなったので、ngx_mrubyをDockerで使う方法を簡単に紹介します。

trusterdのHTTP/2クライアント機能をCアプリに組み込んでみよう

前回の記事では、trusterdのHTTP/2サーバ機能をCアプリに組み込む方法を紹介しました。 C言語のアプリにmruby経由でtrusterdのHTTP/2サーバ機能を5分で組み込む方法 - 人間とウェブの未来 C言語のアプリにmruby経由でtrusterdのHTTP/2サーバ機能を5分で組み…

C言語のアプリにmruby経由でtrusterdのHTTP/2サーバ機能を5分で組み込む方法

今日は僕が開発しているTrusterd HTTP/2 Webサーバの一つの特徴である、「HTTP/2機能のアプリ組込み」の方法を紹介したいと思います。 Cをちょっと書けるレベルの人でも5分でCアプリにHTTP/2機能を組み込んで、自分のHTTP/2サーバを実装できます。

ngx_mruby経由でtrusterdをnginxに組み込んでnginxの情報をHTTP/2で裏から取得してみた

trusterdはHTTP/2クライアントとサーバ両方の機能を持っており、それらの機能は全てモジュールとして取り外し可能な設計にしています。 そのため、HTTP/2クライアント・サーバ機能をmrubyモジュールとして取り外して、他のアプリケーションにmruby経由で組み…

オライリー・ジャパン Serverspec書評 - Serverspec及びSpecinfraの究極の目標とは

mizzyさんの執筆されたオライリー・ジャパンのServerspec本を頂きました。ありがとうございます。そして、執筆お疲れ様でした。 実際の発売日は2015年1月17日です。素晴らしい本ですので、是非ともご購入されてみてはと思います。 O'Reilly Japan - Serversp…

2014年振り返り

今年は3月に子供が生まれたので、学問や研究・開発においてはほとんどやりたい事ができなかった一年でした。 でも、子供が0歳の間、父として世界で一番近くで長く接する事できたのは本当に良い経験で、この経験はきっと今後にもいきてくると思えます。 とい…

mod_mrubyとngx_mrubyの次の一手となる新しいソフトウェア

この記事は、mod_mruby ngx_mruby advent calendar 2014の最終日25日の記事になります。

ngx_mruby vs lua-nginx-module memo

Configuration, Environment Machine Ubuntu14.04 on VMWare Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz 4core Memory 8GB

ngx_mrubyインストール後入門 - ngx_mrubyによるnginx変数の扱い

本記事はmod_mruby ngx_mruby advent calendar 2014 21日目の記事です。

mrubyのサーバアプリケーション組込みにおいて複数スクリプトでインタプリタを共有することのデメリットとその対策

本記事はmod_mruby ngx_mruby advent calendar 2014 20日目の記事です。 昨日は、 @inokappa さんによる「ngx_mruby で Nginx への接続数等の内部情報を取得して InfluxDB と Tasseo で可視化してみる」でした。

mod_mrubyとngx_mrubyの設計思想とスクリプト間でオブジェクトを共有するためのアーキテクチャ概論

本記事はmod_mruby ngx_mruby advent calendar 2014 17日目の記事です。 昨日は、 @hkusu さんによる「静的リソースをリバースプロキシで配信する《mod_mruby ngx_mruby Advent Calendar 2014》」でした。

地理情報を使ってmod_mrubyとngx_mrubyでプログラマブルにアクセス制御

mod_mruby ngx_mruby advent calendar 2014 13日目の記事になります。 12日目は @ainoya さんの「mod_mrubyでJWTベースの認証proxyを作る」でした。 Apacheでもnginxでも、GeoIPの地理情報を使ってアクセス制御をすることができます。ですが、mod_mrubyやngx…

mod_mrubyインストール後入門

thanks to @bamchoh https://github.com/bamchoh/mod_mruby_logo ngx_mrubyのロゴも募集中です!(このロゴを緑ベースでngx_mrubyとするだけでも良いかも...) おはようございます。@matsumotory でございます。 この記事は、mod_mruby ngx_mruby advent cal…

nginxのworkerプロセス初期化・exit時にRubyスクリプトを実行できる機能をngx_mrubyに追加

タイトルそのままなのですが、nginxのworkerプロセスの初期化・exit時にRubyスクリプトを実行出来る機能をngx_mrubyに追加しました。 matsumoto-r/ngx_mruby matsumoto-r/ngx_mruby · GitHub

研究者と技術者の狭間で感じた事 - 情熱が自分を変える

吉報は突然届くもので、本日、情報処理学会の山下記念研究賞の受賞が決定しました。

ApacheでCGIを使う場合にpreforkを使った方が良い状況とそのチューニングについて

かなり今更感の漂う内容ではありますが、意外と情報が分散していたり、Apache2.4系を考慮した場合に足りていない内容があったのでこのエントリで一度まとめてみようと思います。 CGIを使うようなシステムでそれなりにアクセスが集中するサーバ、例えば日々の…

Apache httpd 2.4系をバックエンドに置く場合のクライアントIPアドレスの扱いとハマりどころ

nginxやその他のリバースプロキシをフロントにおいて、バックエンドにApache httpdを置くという構成をとることがあります。 その場合に何も対処しないと、アクセスログやアプリが認識するクライアントIPアドレスがリバースプロキシのIPアドレスになってしま…

RubyKaigi 2014でmod_mrubyを作った経緯やその後の応用について発表します #rubykaigi

RubyKaigi2014に出してみたCFPが無事採択されたので、スピーカーとして30分程喋る予定です。是非聞いて頂けるとうれしいです。RubyKaigi2014のスケジュールも既に公開されており、僕は9月19日のCoffee Break後の15:30からホールAで発表します。

ハッカーの労働倫理と技術者教育

今から6年程前に「The Hacker Ethic」という本を読みました。それを今振り返って思う事を書き綴ってみようと思います。 最初にことわっておきますが、このエントリで言及する問題提起は最後まで読んでも解決しない上に、理想はこうだけど現実は?とか、あっ…

ApacheやnginxのMarkdownファイル変換モジュールをmrubyで簡単に書いてみよう

今回は、.mdファイルにMarkdown形式で文章を書いておき、それをApache httpdやnginxでホストし、ブラウザからアクセスするとHTMLに変換されて表示されるMarkdownコンバータモジュールをmrubyで書く方法を紹介したいと思います。

VirtualHostを用いた共有レンタルサーバは静的コンテンツも権限分離しなければならない

共有レンタルサーバのWeb機能提供において、単一のApache httpdでVirtualHost機能により複数のホストを仮想的に処理する場合が多く、その際に重要になってくるのがCGI等の動的コンテンツを適切に権限分離しセキュリティを担保する事です。