タグ

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

  • 非同期I/OやノンブロッキングI/O及びI/Oの多重化について

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 2017年5月20日追記 エントリはI/OのOperationとCompletionおよびデータ整合性を混ぜてまとめた一部誤った定義になっているので、正確な定義を日語で知りたい方は下記にリンクしたエントリを読むことをおすすめします。 非同期とノンブロッキングとあと何か Apache2.4.1のevent_mpmnginx及びnodde.jsのアーキテクチャを考える上で、非同期I/OやノンブロッキングI/O、I/Oの多重化に関してある程度正確な理解が必要だと思ったのでまとめておく。 ここで「ある程度」といったのは、非同期を表すAsynchronousとノンブロッキングのnon-blockingは曖昧に使われる場合が多いからだ。まず、英語

    非同期I/OやノンブロッキングI/O及びI/Oの多重化について
  • Rubyで設定が書けるTrusterd HTTP/2 WebサーバのDockerイメージ公開

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mrubyを組み込む事によりRubyで設定を書く事ができるTrusterd HTTP/2 Web ServerのDockerイメージを作成・公開しました。 Docker環境のある方は、以下のコマンドで簡単にHTTP/2を喋るWebサーバTrusterdを動かす事ができます。 [program lang=”bash” escaped=”true”] sudo docker run -d -p 8080:8080 matsumotory/trusterd [/program] その後、HTTP/2クライアントであるnghttp(これはnghttp2をビルドして準備してください)コマンドで以下のようにアクセスすると、 [program lang=”

    Rubyで設定が書けるTrusterd HTTP/2 WebサーバのDockerイメージ公開
  • apache bench(ab)コマンドをRubyで拡張できるab-mrubyのDockerイメージを公開

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ab-mrubyとはapache bench(abコマンド)のパラメータ設定や、ベンチマーク結果のテストをRubyで書けるベンチマークツールです。今回はそのab-mrubyコマンドのDockerイメージを作りました。 僕みたいにabコマンドを毎日のように使うエンジニアにとっては、ab-mrubyはそれなりに有用だと思っていたのですが、mrubyをビルドしたりaprを使ってabをビルドしたりいまいち使いにくいなぁと思っていました。しかしそれがDockerの登場によって面倒な所はほとんどラッパーできるようになり、ab-mrubyDockerイメージを作る事によって必要な部分だけを弄ってすぐにab-mrubyを使えるようにしました。 自身のクライ

    apache bench(ab)コマンドをRubyで拡張できるab-mrubyのDockerイメージを公開
  • Dockerとmrubyで迅速かつ容易にnginxとapacheの柔軟なリバースプロキシ構成を構築する

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Docker Hubがアナウンスされて以来、焦ってDockerを触っている@matsumotoryです。 今日は早速mod_mrubyとngx_mrubydocker buildに対応させました。これによって、Docker環境においてmod_mrubyを組み込んだApache httpdやngx_mrubyを組み込んだnginxを迅速かつ容易に連携させる事ができるようになります。 今日はその一例を紹介したいと思います。 リバースプロキシのnginxの挙動をmrubyで制御する ngx_mrubyGitHubレポジトリにはすでにDockerに対応させています。ですので、ngx_mrubyをcloneするとDockerfileとdocker/

    Dockerとmrubyで迅速かつ容易にnginxとapacheの柔軟なリバースプロキシ構成を構築する
  • 人間とウェブの未来 - 軽量な静的コンテンツ配信におけるHTTP/2とSPDYのWebサーバの性能を見てみよう

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 既存のHTTPやWebサーバの技術を見ているものとして、新しい技術も調査しておかないといけないなということで、今日はHTTP/2とSPDYでおしゃべり可能なWebサーバの性能を見てみたいと思います。 HTTP/2の実装としては、tatsuhiro-tさんのC言語実装ライブラリであるnghttp2に注目しており、今日はそのライブラリを使って実装されているWebサーバnghttpdを動かし、SPDY/3.1で動作しているnginxとの性能比較をしました。HTTP/2やSPDY/3.1はもちろんクライアント側も既存のベンチマークツールではおしゃべりできないので、nghttp2で実装されているh2loadを使用しました。weighttpと使い方が似て

    人間とウェブの未来 - 軽量な静的コンテンツ配信におけるHTTP/2とSPDYのWebサーバの性能を見てみよう
  • 人間とウェブの未来 - リクエスト単位でApacheのリソースを制御するためのmrubyを使った制御DSLコードの紹介

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 IOT研究会やコンテナ勉強会で発表した内容を制御コード例を交えて具体的なリソース制御の書き方を紹介したいと思います。 詳しい内容は上の行のエントリへのリンクを見て頂くとして、簡単にまとめると、Apacheへのリクエスト単位でCPUやDISK I/O等のコンピュータリソースを制御しようという話になります。今回はその仕組(mod_mrubycgroupを制御)の導入から具体的な制御DSLコードのサンプルを紹介します。 導入 導入はこれまでに何度も紹介していた内容とかぶるのですが、mod_mrubyのインストールと同様です。まずはgithubからmod_mrubyをcloneして、mod_mrubyディレクトリにあるbuild_config.rb

    人間とウェブの未来 - リクエスト単位でApacheのリソースを制御するためのmrubyを使った制御DSLコードの紹介
  • ApacheのVirtualHostによる高集積Webホスティングでsymlink問題を根本解決する方法について考えた

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

    ApacheのVirtualHostによる高集積Webホスティングでsymlink問題を根本解決する方法について考えた
  • マルチプラットフォームでmrubyを使ってHTTP通信する方法

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mrubyも少しずつ知られてきていて、WindowsLinuxMacOSX等マルチプラットフォームで色々遊んでいる人が多いことでしょう。そうなってくると、しばらく弄ってみた後はやっぱりマルチプラットフォームで同じようにHTTPで通信してみたいと思いませんか? 例えば、 mrubyでHTTPのGETとかPOSTとかしてみたり mrubyを組み込んだデバイスからTwitterに呟いてみたり 各種デバイスからZabbixをつついてみたり エアコンを監視してるRaspberry PiからGrowthForecastにデータを送ってグラフ化してみたり 組み込みデバイスや低レイヤーなソフトウェアからfluentdにデータを送って解析してみたり という

    マルチプラットフォームでmrubyを使ってHTTP通信する方法
  • ext3ファイルシステムとファイルの削除・復元について

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

    ext3ファイルシステムとファイルの削除・復元について
  • abコマンドのベンチマークパターンを書けるab-mrubyを作った

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

    abコマンドのベンチマークパターンを書けるab-mrubyを作った
  • Apache 2.4系でのモダンなアクセス制御の書き方

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

    Apache 2.4系でのモダンなアクセス制御の書き方
  • 今日から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をはじめる人へ
  • csshXが素晴らしすぎる件

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 複数のホストに対して、同時にコマンドを実行するツールはpssh等いくつかあると思うのですが、もっと自由度高く、viで編集したり、さらにはsshでログインしている状態でやれるような作業を全部同時にやりたいと思っていました。 そんな都合の良いツールはなかなかなくて、会社の人がLinuxでCluster SSHを使っていて、Linux限定かぁと諦めていたところ、なんとMacで使えるcluster SSHのcsshXがあるようだと教えてもらいました。これがあまりに素晴らし過ぎるので簡単に紹介します。 インストール brew環境を入れている人は以下のコマンド一発で使えるようになります。 [program lang=’bash’ escaped=’tru

  • mod_mrubyとApache(Nginx)の関係を図示してみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 今回は、言葉だけだと非常に分かり難いmod_mrubyの役割を図示してみました。 このエントリを読んだ後にでも、「なぜApacheにmrubyを組み込もうと思ったか」を読むと色々理解が深まるかもしれません。 ApacheとApacheモジュールの関係を図示 まずは、ApacheとApacheモジュールの関係は以下のようになります。 皆さんご存知の通り、ApacheコアにApache APIがかぶさっていて,Apacheモジュールを組み込んでいく仕組みです。 では、mod_mrubyだとどういう図になるのでしょうか。 ApacheもApacheモジュールとmod_mrubyの関係を図示 このように、mod_mrubyでmrubyスクリプトの実装

    mod_mrubyとApache(Nginx)の関係を図示してみた
  • 第2回 松本勉強会を行いました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 僕が大学に行って学んだり研究したりしていることや、最新の技術調査を説明する会として、社内で松勉強会という任意参加の勉強会が発足しました。 僕自身も、研究者と技術者がもっと協力すれば、相乗効果でどんどん新しい技術が生まれるのじゃないかと思っているので、こういう機会は非常に大事だと思っています。立ち位置としては、大学生として発表していますので、発表内容のスライドは随時オープンにフィードバックしていきたいと思っています。(社内でなくもっとオープンな場でできるといいですね) また、今日はスペシャルなゲストとして、HiganWorks LLCのCEOである澤登さん( @sawanoboly )が5分程度のLTを行ってくれました。それも合わせて公開しま

    第2回 松本勉強会を行いました
  • なぜApacheにmrubyを組み込もうと思ったか

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 なぜWebサーバソフトウェアであるApacheやNginx等にmrubyを組み込もうと思ったのかを整理しておきたいと思いました。 目的はWebサーバの開発支援 Webサーバの開発支援をしたい という壮大な目的が以前からありました。 それがどういうことかは後述するとして、ここでいうWebサーバの開発とは、Webサーバの内部機能拡張を指しています。それを行うにはどうしたら良いかをまず簡単に説明したいと思います。(スクラッチでWebサーバを1から実装するのもよいですが、ここではスコープ外とします) 例えば、Apacheを例にあげると、Webサーバの内部機能拡張はモジュール単位で組み込むという方法が取られています。ApacheやNginxはWebサー

    なぜApacheにmrubyを組み込もうと思ったか
  • GNU GLOBALとvimで巨大なコードでも快適にコードリーディング

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでも、多くの記事にされていて、恐らくKernelや巨大なコードを読んでいる人にとっては当たり前なのかもしれませんが、あまりに快適だったのとこれをきちんとやれてなかった事に自戒をこめて記事にしようと思います。grepとかscreenを駆使していた時間を返してほしい! 対象者 僕がLinux大好きなので、Linux上での動作を前提にしています。対象者はLinux KernelやApache HTTP Server等、数万から数十万、さらには数百万行のコードをじっくり読んでいきたいと考えている人におすすめしたいと思います。巨大なコードを何のツールも使わずに読むのはかなりきついはずです。しかし、今回はGNU GLOBALと呼ばれるソースコードタ

  • Linuxエンジニアを目指して入社一年目にやって役にたったと思う事

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 自分がLinuxエンジニアになりたくて、入社一年目にやってよかった事をまとめておこうと思う。一年目にどれだけやるかが、勝負の別れめといっても過言ではない。それは技術を学ぶだけではない。いっぱいあるんだけど、最低限やって良かったなと思う項目を列挙する。 それがぼくには楽しかったからを読む Amazonとかで買う。出来れば原著がいいけど無理しなくて良い。 Just for Fun. Linuxがどうやってできたか、なぜそれをしようと思ったのかが分かり、今後自分がLinuxエンジニアとしてどういう動機で仕事をしていきたいかを考えさせてくれる。このを読めば、自分が仕事でオープンソースを扱っていることに自信を持てると思う。 「なんでその仕事してる

    Linuxエンジニアを目指して入社一年目にやって役にたったと思う事
  • 1