タグ

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

  • 人間とウェブの未来 - フクオカRuby大賞優秀賞と日本OSS奨励賞を頂いて今思う事

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 フクオカRuby大賞優秀賞を頂き、その夜博多のホテルで受賞の余韻に浸っていました。次の日にはセミナーでの発表も控えているので、身体を休めるべく早めにベッドに向かい寝る事にしました。その夜は、めずらしくホテルでぐっすりと眠る事ができ、朝起きていつものようにPCを起動させると、日OSS奨励賞の受賞通知メールが届いていました。 今年は春日大社でおみくじを引くとなんと「凶」だったため、「あー、今年は子供も生まれるし大変な年になるのかな」と思いつつも、「研究は神頼みするものでもなく自分でつかみ取るものだし」と気を引き締めていた直後の出来事でした。 自分は大学時代に経験した悔しさをきっかけに、よりよい研究をするために一旦大学を離れ企業で現場の運用や開発

    人間とウェブの未来 - フクオカRuby大賞優秀賞と日本OSS奨励賞を頂いて今思う事
  • mrubyでSPDYやHTTP2通信

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 年末にSPDYやHTTP2の勉強がてら、mrubyでSPDYやHTTP2通信可能なmrbgemを作りました。 mruby-spdy mruby-http2 これで、mrubyを組み込んだアプリケーションやデバイスからSPDY・HTTP2通信ができるようになって未来が広がりますね。 現状はクライアントのGETのみができます。これで、例えばmod_mrubyやngx_mrubyに組み込んで、あるURLにアクセスした場合はバックエンドでSPDYやHTTP2な通信をすることもできますね。 サンプル SPDYやHTTP2通信をするためにはRubyで以下のように書きます。 SPDY通信 [program lang=’ruby’ escaped=’true

    mrubyでSPDYやHTTP2通信
  • 人間とウェブの未来 - mrubyの拡張モジュールであるmrbgemのテンプレートを自動で生成するmrbgem作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 エントリはmruby advent calendar 2013 18日目の記事になります。 17日目はtsahara@githubさんによる「mruby で C 言語の構造体をラップしたオブジェクトを作る正しい方法」という素晴らしい記事でした。今回の話題はこの話にも少し絡むので、まるで内容を見透かされていた気分です。 はじめに ところで、僕がadvent calendarにmrubyネタを書くなら何が良いかなぁと考えていたのですが、おそらくmrubyに関する細かいネタは多くの人が書くだろうと思い、自分らしいネタを書こうと思っていました。そこでふと、mrubyが公開後、自分は大量にmrbgemとよばれるmrubyの拡張モジュールを書いてきた事

    人間とウェブの未来 - mrubyの拡張モジュールであるmrbgemのテンプレートを自動で生成するmrbgem作った
  • Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)

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

    Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)
  • 人間とウェブの未来 - リクエスト単位で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コードの紹介
  • 「コンテナ型仮想化の情報交換会@東京」で発表してきた

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

    「コンテナ型仮想化の情報交換会@東京」で発表してきた
  • マルチプラットフォームで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ファイルシステムとファイルの削除・復元について
  • mod_mrubyを使ってRaspberry Piを4台でWebサーバクラスタを組んでみた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 そろそろRaspberry Piセットの日経BPムックが皆さんの所に届いていることでしょう。 僕も何台かRaspberry Piは持っていて、以前mod_mrubyをRaspberry Piで動かしてLチカしたりしていたのですが、今回はmod_mrubyとRaspberry Piを4台使ってでクラスターを組んで見ました。 まずはラック作りから まずは、Raspberry Piのラックを作りました。Raspberry Piのラックやケースをググると色々と出てくるのですが、なんとなく今回はそこら辺にあるものを使ってラックを作ってみました。Raspberry Piラックは以下の様になります。 上から見ると、以下のような感じです。適当にニトリのキッチ

    mod_mrubyを使ってRaspberry Piを4台でWebサーバクラスタを組んでみた
  • mrubyによるWebサーバの機能拡張支援機構を一緒に開発しませんか?

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ある人「あなたのやりたいことはなんですか?」 僕「複数あるWebサーバソフトウェアの拡張記述を統一したいです」 ある人「(それはさすがに無理だろ…)」 という感じで始まったmod_mrubyやngx_mrubyの開発ですが、今ではそれも夢では無い所まできています。当時は「mod_mrubyを作ってみようか」という記事からmod_mrubyの開発ははじまりました。 朧げにあったアイデアでは、「どうやって統一するのか?どんな言語にするのか?どうやって組み込むのか?え?そもそもそんな事無理では?」という感じでしたが、1年前に運良くmrubyGitHubで公開されて以来、色々なアイデアのピースがはまっていき、いつの間にかそのアイデアが形になろうとし

    mrubyによるWebサーバの機能拡張支援機構を一緒に開発しませんか?
  • 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作ってみた
  • 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でリアルタイムモニターしてみた
  • mrubyでも使っている擬似乱数Mersenne TwisterがMITライセンスでも提供可能になった

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 擬似乱数Mersenne TwiterがMITライセンスでも提供可能になりました。 というのも、mrubyでランダムクラスをコアにマージする際に、Mersenne Twisterは3項BSDライセンスで提供されており、mrubyはMITライセンスで提供しているため、ライセンスの取り扱いで誤解を招きそうだという話題が上がりました。 一部BSDライセンスだと明記していたとしても、mrubyをMITライセンスとして使っているプロダクトなどにとっては、ライセンスの一部変更はそれなりに手間のかかる問題で、できればライセンスは統一したいという話になりました。もしくは、コアに入れるのはやめようかという話題もでました。 しかし、個人的にはこのような素晴らしい

    mrubyでも使っている擬似乱数Mersenne TwisterがMITライセンスでも提供可能になった
  • 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(マルチスレッドモデル)に対応させた
  • ApacheのSegmentation faultはgdbで簡単に特定(mod_mruby編)

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Apacheのデバッグの方法は多く紹介されていて、例えばgdbを使ってみましょうと紹介されている記事も多いです。しかし、操作の仕方が多岐に渡っていて、なんとなく敷居が高く感じて使わないという人も多いかもしれません。 例えば、Apache周りのエンジニアが一番気になるのは、Segmentation faultだと思います。そこで、今回は自分がSegmentation faultの原因を特定する時の一番手っ取り早い、gdbを使った方法を紹介しようと思います。gdbを使っていない人にとって、gdbって少し敷居が高いんじゃないかなぁ、と思っている人も多いかもしれませんが、今回の方法であればだれでも気軽にできると思います。 まずはバグを作る 今回は、自

    ApacheのSegmentation faultはgdbで簡単に特定(mod_mruby編)
  • mruby-oauthでmrubyからtwitterを操作 | 人間とウェブの未来

    なんとか年末に追い込みをかけて、mruby-uvとmruby-httpベースのmruby-oauthを完成させました。ベースはiij/mrubyの実装を再利用しています。 mruby-uvは名前解決のメソッドが現状用意されていないので実装し、mruby-simplehttpとmruby-httprequestを書き直して、それらを継承しmruby-oauthを作成しました。 インストール build_my_mrubyというレポジトリにインストールスクリプトを容易しているので、そのスクリプトを実行します。 git clone git@github.com:matsumoto-r/build_my_mruby.git cd build_my_mruby sh mymruby_with_mrbgems.sh 上記のスクリプトを実行するとカレントディレクトリにmrubyをダウンロードしてきて、必要

  • mruby-zabbixとmruby-growthforecastでデバイスやアプリケーションの監視並びに情報の可視化を実現

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 僕は実はZABBIX-JPのスタッフでもあるので、mrubyでも優先度高めでZabbixのAPIをつつけるClassを作ってみました。 これで、mruby-grothforecastで簡単に組み込みデバイスやアプリケーションの内部情報を簡単に可視化できたり、Zabbixに対してAPI経由で監視の操作ができたり、かなり夢が広がったのではないでしょうか。 ということで、mrbgemsの使い方も兼ねて、mruby-zabbixの使い方を説明します。 インストール まずはmrubyをダウンロードします。 [program lang=’bash’ escaped=’true’ ] git clone git://github.com/mruby/mru

    mruby-zabbixとmruby-growthforecastでデバイスやアプリケーションの監視並びに情報の可視化を実現