タグ

ブックマーク / blog.matsumoto-r.jp (28)

  • Docker HubとGitHubを連携させてmod_mruby実行環境をDockerで簡単にデプロイ

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Docker Hub公開のアナウンスがあったので、早速Docker HubとGitHubを連携させてmod_mrubyの実行環境をDockerイメージとして作った上で、それをMac上のVagrantで動くCoreOS内のDocker環境にデプロイしてみました。 エントリではmod_mrubyとしていますがここは重要ではなく、自身が開発しているGitHubのアプリケーションに置き換えて読んで頂けると、便利さが見えてくるかと思います。 試してみると、非常に簡単にDockerイメージを作成できた上に、迅速にmod_mrubyの軽量な実行環境をデプロイできたので、その流れを簡単に紹介したいと思います。 Docker Hubにアカウントを作ってGit

    Docker HubとGitHubを連携させてmod_mruby実行環境をDockerで簡単にデプロイ
    pycol
    pycol 2014/06/13
  • 最新(2013/12/26)のmod_mrubyとngx_mrubyのパフォーマンス

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 論文の執筆や発表の準備で最新のmrubyに追随できていなかったのですが、ようやくmod_mrubyとngx_mrubyを最新版のmrubyに対応させました。対応した項目は以下となります。これでmrubyの最新版でも動くようになりました。 mrb_stateが持っていたirepテーブルの削除に対応(バイトコードのGC化) symbol関連のAPI変更に対応 ARENAの持ち方を修正 パフォーマンス比較をするには良いタイミングなので、最新版のmod_mrubyとngx_mrubyのパフォーマンスを計測しました。 最新のパフォーマンス比較 計測方法はいつも通りシンプルなものなので、「この条件だと大体こういう差がでる」という意味での参考情報として見て

    最新(2013/12/26)のmod_mrubyとngx_mrubyのパフォーマンス
    pycol
    pycol 2013/12/26
  • 人間とウェブの未来 - 2013年に取り組んだ研究まとめ

    2013年ももうすぐ終わってしまいますね。今日も非常に寒く、年の終わりを肌で感じております。 とりあえずの区切りということで、2013年に取り組んできた研究を簡単にまとめておこうと思います。 はじめに まずは、今年取り組んだ研究の各内容の最終成果の論文を紹介します。全てPDFで読めるようにしています。 [IPSJ 論文誌]大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善 [IEICE 論文誌]スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ mod_mruby: スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡張支援機構 リクエスト単位でコンピュータリソースを分離可能なWebサーバのリソース制御アーキテクチャ これらの内容に関しては他にも幾つか論文は書いたのですが、最終的な成果としては各内容が上記の論文としてまとまりました。 で

    人間とウェブの未来 - 2013年に取り組んだ研究まとめ
    pycol
    pycol 2013/12/20
  • Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)

    数年前になんとなく面白がって書いてた「Linuxインフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)」というのが、昔の資料をあさってると出てきて、意外と面白かったので少しだけ手を加えて(古い情報とかあったので)公開しようと思います。 意外とリアルなものがあって懐かしい気分になりました。過去に書いた以下の記事もどうぞ参考にして下さい。 「Linuxエンジニアを目指して入社一年目にやって役にたったと思う事」 「Linuxエンジニアを辞めて大学院に入学しました」 追記: 設問1があまりによくないので、@tagomorisさんのアドバイスを頂きつつ変更しました。1を消して3を追加しています。ありがとうございます! 2000台以上のサーバー運用経験はありますか? サーバやネットワーク機器のキッティング経験はありますか? サーバやネットワーク機器の交換を現地のデータセンター職員に

    Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)
    pycol
    pycol 2013/11/12
  • ApacheのVirtualHostによる高集積Webホスティングでsymlink問題を根本解決する方法について考えた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 最近、各所でApacheのVirtualHostを利用した高集積ホスティングのセキュリティに関するインシデントが起きています。僕自身、自分の専門の一つがWebサーバのセキュリティなので、他人事には思えず、毎日各所の経過情報を眺めています。また、数社からApacheのセキュリティに関してもいくつか質問を受けたりしており、公に話せるような内容はこのブログでも公開していきたいと思います。 ということで、ApacheのVirtualHostによる高集積Webホスティングにおけるsymlink問題を根解決するにはどうしたら良いのかを考えました。まずは、静的コンテンツも動的コンテンツのようにファイルのユーザ権限で処理する方法から紹介します。その後、ホス

    ApacheのVirtualHostによる高集積Webホスティングでsymlink問題を根本解決する方法について考えた
    pycol
    pycol 2013/09/05
  • P2Pファイル共有ネットワークを利用したフラッシュクラウド耐性のある協調型負荷分散手法

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 「P2Pファイル共有ネットワークを利用したフラッシュクラウド耐性のある協調型負荷分散手法」という内容で、COMPSACという国際会議で代理で発表してきました。(去年の国際会議では僕が色々あって、代理で先生に発表してもらったような形ですね) 今回は、著者の方が色々あって発表できないので、共著者の僕が代理で発表してきました。著者や先生と相談した結果、面白い内容なので公開しようということになり、僕のブログが一番手っ取り早いので、ここで紹介します。 研究の概要 研究の概要としては以下になります。 世界のインターネット人口は年々増加を続けており,現在約22億人に達して いる.また新興国の発展に伴い,今後その数はさらに増加することが見込まれ る.このよう

    P2Pファイル共有ネットワークを利用したフラッシュクラウド耐性のある協調型負荷分散手法
    pycol
    pycol 2013/07/24
  • ext3ファイルシステムとファイルの削除・復元について

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 研究の一環でext3ファイルシステムのファイル管理方法や、ファイルを削除した時の復元について色々調べたので、それを忘れないように記事にしておこうと思います。 はじめに 今回はext3ファイルシステムについて調査してみました。僕はLinuxでファイルを扱う前提の研究をしているし、大規模環境でのファイルの処理はとても重要だと思っています。 また、ファイルシステムについて理解を深めておく事で、今後新たなネタにならないか等も考えています。現在はext4やBtrfs等の調査が進んでいますが、改めて基に戻ってext3について調査しました。 まずは、分かりやすいようにext3ファイルシステムでファイルを削除した場合に、どのようにファイル復元ができるのかを

    ext3ファイルシステムとファイルの削除・復元について
    pycol
    pycol 2013/07/09
  • ab-mrubyを使って自分のサイトを継続的にテストしてみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 最近良く聞く継続的なんとかを僕も試してみたくて、早速最近作ったabコマンドベースのベンチマークで、自由にRubyでベンチマークパターンやテストケースを書けるab-mrubyを使ってWebサーバの継続的なテストをしてみました。 ab-mrubyだとどのように書けるか書いてみたので紹介します。 まずはベンチマークパターン 自分のblogとmoblogとregisterunderflowに対するベンチマークパターンを以下のように記述しました。 [program lang=’ruby’ escaped=’true’] $ cat ab-mruby.conf.rb print <<EOS ================================

    ab-mrubyを使って自分のサイトを継続的にテストしてみた
  • abコマンドのベンチマークパターンを書けるab-mrubyを作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Web屋さんはみんな大好きabコマンドは便利ですが、オプションは複雑で数も多く、複数のホストにそれぞれに対応するオプションを指定してテストしたりすると結構カオスになりがちです。 最近では、httperfやweighttp等のabに変わる次のHTTPベンチマークツールが出てきていますが、やっぱりまだまだ現役で良く使うのはabコマンドだと思います。 そこで、今回はabコマンドの複数のベンチマークオプションのパターンを1つのRubyスクリプトに定義しておいて、それをabコマンドで読み込む事で動的に任意のパターンでベンチマークを行うab-mrubyを作りました。外出しで書いたRubyスクリプトとabコマンドの連携は、ab-mrubyと見てわかるように

    abコマンドのベンチマークパターンを書けるab-mrubyを作った
  • 人間とウェブの未来 - mrubyで簡単にCアプリの設定ファイルが作れるmruby-config作ってみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 C言語でサーバアプリやクライアントアプリを作っていると、じょじょに規模が大きくなり、アプリの設定を外出ししたいなぁ、なんて思いはじめるのはよくある事だと思います。 でも、なんとなくその設定ファイルのParser書いたり参照のインターフェイスを書くのも面倒だし引数で渡すようにするかぁ、なんて思いはじめたりもします。 でも結局引数が大量に増えだして、そのusage表示もカオスになって面倒になり(更新が止まり)、結局もう一度、「設定ファイル作るかー」なんてことになるのはよくある事だと思います。 そこで、そういう人のために,mrubyを使って簡単に設定ファイル(Rubyで書く)を外出しできるmruby-configというmrbgemを作ってみました。

    人間とウェブの未来 - mrubyで簡単にCアプリの設定ファイルが作れるmruby-config作ってみた
  • Apache 2.4系でのモダンなアクセス制御の書き方

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでのApache2.2系以前でのアクセス制御の書き方は賛否両論でした。僕はあまり好きじゃありませんでした。 過去のアクセス制御に関しては、以下の記事がとてもわかりやすくまとめられていると思います。 こせきの技術日記 – Apacheのアクセス制御をちゃんと理解する。 ここで、以下のように言及されています。 こんなバッドノウハウ、当はどうでもいいと思う。Apache 3.0では、かっこいいDSL(VCL)で書けるようにする構想があるらしいのでがんばってほしい。 ということで、2.4系ではDSLとはいかないまでも、Require*というディレクティブを使ったモダンな書き方ができるようになったので、それを2.2系以前のアクセス制御の記述と比

    Apache 2.4系でのモダンなアクセス制御の書き方
  • Register UnderflowというWebサービスを作ってみました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 GW明けにリリースしようと思っていたのですが、ぼちぼちtwitterで情報が流れだしているので、隠していても意味ないということでリリースしました。SNSやコミュニティとはなんぞや、という事について勉強がてら作ってみました。 Register Underflow どういうコンセプトのサイトかというと、大体ここに書いた通りなのですが、再度エントリでも書いておきます。 Register Underflowについて このサイトは、SNSの普及で日でのコンピュータやインターネット技術情報が分散してしまっている事を危惧し、かつての掲示板のように簡単かつ気軽に一つの場所で技術情報をある程度まとめた方が効率良いと思って気まぐれにたてた技術情報共有サイトで

    Register UnderflowというWebサービスを作ってみました
  • mod_spdyから学ぶSPDYとストリーム並列処理の実装

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 HTTP関連の研究をしているので、そろそろ古い技術を詰めるばかりではなく(これはこれでとても大事な事なのですが)、新しい技術についても調べておきたいところです。 ということで、僕のSPDYに関する現状の理解を、mod_spdyに関する情報を元にまとめておきたいと思います。 SPDY概要 SPDYの概要を表す図としては、下記が良く用いられます。 TLS上にのせたSPDYストリーム上でHTTPやWebSocketを扱うプロトコルで、特徴としては、以下の4つがあげられます。 ストリームの並列化 フレームレイヤーやヘッダーの圧縮 リクエストの優先処理 サーバからのリソースプッシュ HTTP/2.0についても、SPDYを元に仕様が検討されています。では

    mod_spdyから学ぶSPDYとストリーム並列処理の実装
  • mod_mrubyとnode.jsを使ってblogをWebSocketでリアルタイムモニターしてみた

    これを作ったのは、ApacheCon2013に参加したときのハッカソンなのですが、ブログをVPSに移行したので、運用を試しがてら当ブログに実装してみました。 ソースはすでにmod_mrubyのwebif以下に上げているので、簡単に試す事ができます。 やっていることは大体こんな感じです。 これは、東京Rubyプレゼンテーションでも紹介したデモなんですが、 Apacheの内部情報をmod_mrubyで外だししてAPI化 node.jsからAPI経由で情報を取得しグラフ化してWebSocketで表示 ということをやっています。 実際にこのブログをモニターしているページは以下になります。参考までに公開しておきます。ログはかなり色々とっているのでいたずらはやめてくださいね。 https://blog.matsumoto-r.jp:9999/ 一応、上記ページをアクセスできないようにしたときのために、

    mod_mrubyとnode.jsを使ってblogをWebSocketでリアルタイムモニターしてみた
  • 人間とウェブの未来 - 自分で作ったApacheモジュールで使えそうなモジュールまとめ

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 「Apacheおもしれー!!」とか言いながら、一時期毎日のようにApacheモジュールを書いたりしていましたが、その度に他のモジュールが淘汰されていきました。 今日はそのような流れの中で生き残った、割と使えそうな自分の作ったモジュールを紹介したいと思います。どこにこだわったかを簡単に説明できれば良いなと思います。今回紹介するモジュールは、新しいApache Module RegistryでGruno氏(Apache httpd コミッタ兼mod_luaの中の人)のチェックを通っています。 mod_mruby コード: https://github.com/matsumoto-r/mod_mruby 最近作っているApacheモジュールです。こ

    人間とウェブの未来 - 自分で作ったApacheモジュールで使えそうなモジュールまとめ
  • 今日からmrubyをはじめる人へ

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ApacheCon NA 2013に参加し、早めにポートランド国際空港に到着しました。時間があるので、今日(2013年3月2日)からmrubyを始める人へ簡単なチュートリアルをしようと思います。 mrubyというプロジェクト mrubyとは、組み込み機器やアプリ組み込みに最適化された軽量スクリプト言語です。記述方法は既存のRubyのように書くことができます。C言語で書かれたホストアプリにmrubyを組み込むことで、ホストアプリをRubyの記述でコントロールすることができます。例えばmod_mrubyは、RubyでApache APIをつつけるようにmrubyをApacheに組み込むためのモジュールで、ApacheモジュールをRubyで記述する

    今日からmrubyをはじめる人へ
  • mod_mrubyでモジュール型PHPもsuEXEC

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyでsuEXECのようなアクセス制御を実装できるようにしました。 しかも、CGIだけでなくモジュール型のPHPやmod_perl等、所謂DSOも簡単にsuEXECのようにサーバプロセスと権限を分離して実行することができます。 以下に、実装例を紹介します。 mod_mrubyで実装してみる mod_mrubyのビルドで、組み込んでおいた方が良いmrbgemを自動で組み込んでビルドしてくれるbuildスクリプトを作りました。mod_mrubyを簡単に試したいという方は是非使ってみてください。 [program lang=’bash’ escaped=’true’] git clone git://github.com/matsum

    mod_mrubyでモジュール型PHPもsuEXEC
  • mod_mrubyをevent及びworker MPM(マルチスレッドモデル)に対応させた

    やはり、event MPMは早いですねー。mod_mrubyでの相性も抜群そうです。 一応、参考までにApacheのconfを貼っておきます。 httpd.conf [program lang=’apache’ escaped=’true’] # mod_mrubyの設定 LoadModule mruby_module modules/mod_mruby.so Addhandler mruby-script .mrb <Location /mruby> sethandler mruby-native-script mrubyHandlerCode "Apache.rputs 'hello mod_mruby world'" </Location> # MPMの設定、ほとんどデフォルト #LoadModule mpm_prefork_module modules/mod_mpm_prefor

    mod_mrubyをevent及びworker MPM(マルチスレッドモデル)に対応させた
  • Raspberry PiのGPIOをmod_mrubyで操作してブラウザからLEDを光らせてみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 前回の記事では、Raspberry Pi上でmod_mrubyを動作させることに成功しました。やはり次はマイコンボードらしく、GPIOを操作してLEDを光らせてみましょう。 しかし、普通に光らせても面白くないので、mod_mrubyを使ってブラウザからLEDを光らせてみました。 ちなみに、無線LAN化も試してみました。以下はその時の写真です。 準備 まずは、mrubyでGPIOを操作するために、mruby-WiringPiとmruby-sleepをmrbgemとしてmrubyに組み込みます。 以下のようなbuild_config.rbになります。 [program lang=’ruby’ escaped=’true’] MRuby::Buil

    Raspberry PiのGPIOをmod_mrubyで操作してブラウザからLEDを光らせてみた
  • mruby-cgroupを書いてみたがかなり便利な件

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Linux KernelのControl Group機能によって、プロセスの様々なリソース管理を行うcgroupをmrubyから呼び出せるようにしました。 それをmruby-cgroupと呼ぶことにします。 これがなかなか素晴らしくて、C言語で書いたプログラムにmrubyを組み込むことで、そのC言語で書かれたホストプログラムをとても簡単にリソース管理できてしまいます。 使い方 mrbgemsとして作っているので、mruby-cgroupのREADMEに従ってbuild_config.rbにgitのURLを書くと簡単にrakeでlibmruby.aに組み込めます。 現状は、CPUとIOリソースの管理の機能のみですが、cgroupのコンテキストの

    mruby-cgroupを書いてみたがかなり便利な件