タグ

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

  • 非同期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の多重化について
    riywo
    riywo 2013/11/13
  • Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)

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

    Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)
    riywo
    riywo 2013/11/13
  • 「コンテナ型仮想化の情報交換会@東京」で発表してきた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ということで、先日「コンテナ型仮想化の情報交換会@東京」に参加して発表もしてきました。元々、主催者の加藤さんは僕が尊敬するエンジニアの1人でもあり、何かお手伝いできると良いなと思っていて、発表のお誘いを受けた時はとてもうれしく思いました。また、今回はTwitter上ではそれなりにお話している人達にも沢山あえるということで、バーチャルな世界から初めて東京に出ていくという意味で恥ずかしくもワクワクするような勉強会でした。発表個々の感想はこれから続くであろう参加者の皆様の参加エントリに期待して、このエントリには勉強会全体の感想を書き綴ろうと思います。 @matsumotory さんの周囲をペパボの面々 がぐるっと取り囲んでいる — ito hiro

    「コンテナ型仮想化の情報交換会@東京」で発表してきた
    riywo
    riywo 2013/10/09
  • ApacheのVirtualHostによる高集積Webホスティングでsymlink問題を根本解決する方法について考えた

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

    ApacheのVirtualHostによる高集積Webホスティングでsymlink問題を根本解決する方法について考えた
    riywo
    riywo 2013/09/05
  • 大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善について書いた論文公開

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 @jj1bdxさんに「このような運用論文を誰でも読める形で」「情報処理学会や信学会の論文誌掲載論文は、論文誌に掲載された後であれば、著者がWeb上で公開するのに制限はない」という情報を頂き、別に公開しない理由もないので、大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善という内容で書いた論文を公開したいと思います。 僕が会社にいた時、ApacheのVirtualHost環境でレンサバを構築するというのは既にセキュリティ・運用性・パフォーマンスにおいて色々と問題がある事は10年以上前から分かっており、別の方法で共有環境を構築していました。 ある時、VirtualHostで共有環境を真面目に組むとどうなるか、という議論を元

    大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善について書いた論文公開
    riywo
    riywo 2013/09/03
  • mod_process_security – Apache上でスレッド単位で権限分離を行うファイルのアクセス制御アーキテクチャ(後半編)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_process_security – Apache上でスレッド単位で権限分離を行うファイルのアクセス制御アーキテクチャ(前半編)の続き。 ソース 前半編では、Apacheにおける従来のファイルのアクセス制御の問題をパフォーマンスやセキュリティの観点から説明した。簡単にまとめておくと、 従来はCGI実行方式やDSO実行方式毎にアクセス制御が存在していた煩雑 CGIはそもそもアクセス制御有無に関わらず性能が低いしプロセスの生成も大規模に適していない FastCGIはプロセスを複数起動させておかなければならないので、大規模に適していない DSOのアクセス制御は性能を優先した場合はセキュリティが弱い DSOのアクセス制御はセキュリティを優先し

    mod_process_security – Apache上でスレッド単位で権限分離を行うファイルのアクセス制御アーキテクチャ(後半編)
    riywo
    riywo 2013/09/03
  • 人間とウェブの未来 - ngx_mrubyの紹介 ならびに nginx+mruby+Redisによる動的なリバースプロキシの実装案

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ようやくngx_mrubyでもmod_mrubyのように動的なリバースプロキシ設定ができるようになりました。タイトルは完全に@hibomaさんによる「lua-nginx-module の紹介 ならびに Nginx+Lua+Redisによる動的なリバースプロキシの実装案」をパク … inspireしたものになっています。 今回の工夫点としては、 ngxin内部の変数をうまく使う redisとのセッションはnginx起動時に一度だけ行なって、そのオブジェクトを使いまわす proxy_passを使って汎用的な設定にする の3点です。 1に関しては、前回の「ngx_mrubynginxの内部変数を操作する」で紹介しました。 2に関しては、リクエスト

    人間とウェブの未来 - ngx_mrubyの紹介 ならびに nginx+mruby+Redisによる動的なリバースプロキシの実装案
    riywo
    riywo 2013/08/01
  • マルチプラットフォームでmrubyを使ってHTTP通信する方法

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

    マルチプラットフォームでmrubyを使ってHTTP通信する方法
    riywo
    riywo 2013/08/01
  • nginxをmrubyで制御するモジュールngx_mruby 0.0.1をリリースしました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 といっても、nginx固有のメソッドはクライアントに任意の文字列を返す事しかできませんが、とりあえず動くものを実装する事ができました。ということで、mod_mrubyの時と同様ngx_mruby 0.0.1としてGithubでリリースしたいと思います。もちろんmrubyに最初から含まれているメソッドは動きます。 ngx_mrubyとは ここで一旦ngx_mrubyの簡単なおさらいをしておきます。ngx_mrubyはその名の通り、Apacheをmrubyで制御するためのモジュールmod_mrubyに対して、nginxをmrubyで制御するためのモジュールです。このモジュールによって、nginxを再起動することなく、Rubyスクリプトによってng

    nginxをmrubyで制御するモジュールngx_mruby 0.0.1をリリースしました
    riywo
    riywo 2013/08/01
  • 互いにNAT配下のマシンでも簡単にP2P通信でファイル同期できるツールsyncigaを作ってみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 P2PやNAT Traversal、その周辺要素や、実はそれらに多く絡んでいるXMPPの勉強がてら、色々読んでいてもいまいちイメージがつかめないということで、とりあえずXMPPの拡張仕様であるjingleの仕組みを使って、互いにNAT配下のサーバでも簡単にP2Pでファイル同期できるツールを作ってみました。現状はFedoraやCentOSの64bitLinuxでのみ動作確認しています。 synciga(しんきーが)という名前で呼ぶことにします。 syncigaにできる事 syncigaによってできることは、サーバマシンやクライアントがNAT配下に位置していても、そのマシン上でsyncigaを立ち上げておけば、別の場所にいるNAT配下のマシンか

    互いにNAT配下のマシンでも簡単にP2P通信でファイル同期できるツールsyncigaを作ってみた
    riywo
    riywo 2013/04/23
    おもしろい
  • 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でリアルタイムモニターしてみた
    riywo
    riywo 2013/04/13
    これはおもしろい
  • 今日から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をはじめる人へ
    riywo
    riywo 2013/03/03
  • 僕が考える最強の超高集積型Webホスティングシステム!

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでの記事を振り返って、まとめの意味でも、現状僕が考えうる最強の高集積型Webホスティングシステムの設計を忘れないうちに書いておこうと思います。これらは夢のような話ではなく、現実的にAmazonEC2上にプロトタイプとして作ってもいいなぁ、と思っていたりします。 最強の超高集積型Webホスティングシステム!とは ホスティングシステムということで、ホストをかりる側がどういうコンテンツを使うのか分からないので、できるだけ自由度の高いシステムを考えた時は、やはりベースソフトウェアはApacheが良いのではと思います。また、超高集積にする事でハードウェアのコストを下げ、超低価格を実現し、かつ、セキュアで運用性が高く高機能なシステムを目指します。

    riywo
    riywo 2012/09/27
    今後需要がどのくらいあるのか気になる
  • GNU GLOBALとvimで巨大なコードでも快適にコードリーディング

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

    riywo
    riywo 2012/04/18
    gtags便利ですよね
  • 人間とウェブの未来 - Linuxエンジニアを辞めて大学院に入学しました

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 昨日の記事が1日で多くの方に見て頂けているようでとてもうれしいです。 今回は元々、今日このタイミングで記事にしたいと思っていた内容があったのでそれを書きたいと思います。僕は去年の9月に会社をやめて、今年の4月から大学院に入学しました。「Linuxエンジニアを目指して入社1年目で役に立ったと思う事を書いた人が、実はLinuxエンジニアをやめていた事を知ると、昨日のはなんだったの?」と思う人もいるかもし れません。なので、少しタイミングが悪いかもしれませんが、とりあえず書こうと思います。話は小学校までさかのぼるので長くなるかもしれません。暇つぶしに読んでやろうか、ぐらいで読んで頂ければと思います。 大学までの自分 僕は、小学校3年ぐらいから中学

    人間とウェブの未来 - Linuxエンジニアを辞めて大学院に入学しました
    riywo
    riywo 2012/04/06
    すばらしい
  • Linuxエンジニアを目指して入社一年目にやって役にたったと思う事

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

    Linuxエンジニアを目指して入社一年目にやって役にたったと思う事
    riywo
    riywo 2012/04/04
  • Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 といいつつも、そこまで大したことはしていない。 luaという高速に動作する組み込み系のスクリプト言語で遊んでみたかったのと、それだったmod_luaで遊んでみればいいなと思っただけである。で、実際にmod_luaをコンパイルして遊んでみた。コンパイルオプションは以下。 ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --enable-modules=all --enable-mods-shared=all --enable-mpms-shared='prefork worker event' -

    Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?)
    riywo
    riywo 2012/03/27
  • 1