タグ

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

  • 互いにNAT配下のマシンでも簡単にP2P通信でファイル同期できるツールsyncigaを作ってみた

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

    互いにNAT配下のマシンでも簡単にP2P通信でファイル同期できるツールsyncigaを作ってみた
    y_uuki
    y_uuki 2019/02/27
    まつもとりーさん、実はP2Pもやってたっていう話をした
  • 変化点検出エンジン

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ※春に行った京都の玄武岩 さて、久々の研究報告です。 NECさんの開発している変化点検出エンジン「ChangeFinder」を、プログラムで実装してみました。 「ChangeFinder」は、これまでの従来の手法による変化点検出にかかる計算コストを大幅に削減した独自のアルゴリズムによって開発されています。 データマイニングの観点から、外れ値と変化点を区別して、変化点を検出することに成功しています。 このように、変化点と外れ値は同一のアルゴリズム内で扱うのは難しいとされてきた中で、計算量を削減した上で同一に扱えるというのは、かなり画期的な手法です。 それでは、実験的にデータを発生させたりすることで、適当な時系列データを作成し、どの程度の精度と計

    変化点検出エンジン
  • 大規模監視システムの冗長構成を設計するための9つのポイント

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 インターネットにおいて、素晴らしいサービスが沢山生まれてきている一方で、実はそれらを後ろで目立つことなく支えている人達がいます。 はい、それが皆さんご存知の所謂インフラエンジニアと呼ばれる人達です。素晴らしいサービスやアプリケーションがリリースされ、そらを開発したプログラマーが世間からの脚光を浴びている中、インフラエンジニアはその陰に身をひそめ、リリース後からこそ真の地獄が始まる、と言わんばかりに、サーバやネットワークのリソースのグラフを昼夜問わず眺めたり、監視アラートにビクビク怯えながら日々すごしています。 しかし、彼らはシステムを安定稼働させるために、自ら進んで後ろに立ち、常にシステムを最適化するためにはどうしたら良いかを考えてくれている

    大規模監視システムの冗長構成を設計するための9つのポイント
  • ApacheとNginxの性能比較でevent_mpmの本気を見た

    はい、これは僕がいつも良く見るApacheとNginxの性能差に見えます。大体、ApacheはNginxの75%程度の性能に落ち着きます。数十バイトの静的コンテンツに対するリクエスト処理はNginxの得意分野だと思っていたので、大体こんなものです。 そこで、真面目にevent_mpmのチューニングを行ってみました。で、幾度となくベンチを試した結果導き出した、静的コンテンツに対する同時接続数100程度に対して最高のパフォーマンスを示すevent_mpmの設定は以下のようになりました。 [program lang=’apache’ escaped=’true’] StartServers 4 MinSpareThreads 4 MaxSpareThreads 4 ThreadsPerChild 2 MaxRequestWorkers 2 MaxConnectionsPerChild 0 [/p

    ApacheとNginxの性能比較でevent_mpmの本気を見た
  • SPDY対応アプリケーションをC言語で実装する方法

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 昨日、SPDYのCライブラリであるspdylayがめでたく1.0.0としてリリースされたので早速使ってみました。まずはmacOSX10.8.3で試してみました。ビルド方法はメモに書いていますので参考にして下さい。 今回はSPDYで通信できるクライアントをCで書く際に、どのような実装の流れになるかを紹介したいと思います。エントリで実装流れを把握したら、spdylay/spdylay.hを読む事をおすすめします。 SPDYのCライブラリspdylayの概要 spdylayのAPIはコールバックベースで実装されています。ただ、今回はコールバックされる関数の詳細な実装まで説明すると、全体的な流れが見えにくくなるので、コールバック関数の実装の仕方は省

    SPDY対応アプリケーションをC言語で実装する方法
    y_uuki
    y_uuki 2015/01/02
  • 我慢から学んだ事

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 このエントリでは久しぶりに日記のような記事を書こうと思う。なので、いつもの技術エントリはですます調だが今日は日記調に適当な感じでいこうと思う。 自分は、他人への配慮を踏まえた上で思った事は言うべきだと考えている人間だし、それを我慢して空気を読んだり間違っていると思っているのにその意見に迎合するのは好きではない。もちろん、自分の言った事が間違っていたら、それを認め謝らないといけない。僕はそういう間違いを恐れない議論が必要だと考えている人間だ。 しかし、そうやって生きてきてはいるが、「我慢する事」は自分にとって非常に大事だと思っている。いつでもなんでもどんな時でも、言いたい事を言うのも良いのだが、我慢することで得られる事もあるという事を、年末も近

    我慢から学んだ事
    y_uuki
    y_uuki 2015/01/02
  • 人間とウェブの未来 - Linuxエンジニアを辞めて大学院に入学しました

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

    人間とウェブの未来 - Linuxエンジニアを辞めて大学院に入学しました
    y_uuki
    y_uuki 2015/01/02
  • はてなブログに移行します

    続きはこちらのブログでお楽しみ下さい。 最後なので勢いでスターを沢山付けてしまいました…

    はてなブログに移行します
    y_uuki
    y_uuki 2014/09/11
    !!
  • Gitのコミット単位で動的にDockerイメージをデプロイするプロキシサーバpool

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Gitのコミット単位で動的にDockerイメージをデプロイするプロキシサーバpoolというソフトウェアがあります。 poolとは poolは、WebアプリとDockerfileをGitで管理している場合に、コミットidをサブドメインとして( http://<commit-id>.pool.dev/ )poolにアクセスするだけで、そのGitレポジトリのコミット時の状態でWebアプリのDockerイメージをデプロイし、Webアプリのポートへとリバースプロキシして、Webアプリのレスポンスを返します。もちろん、コミットidをキーに複数の状態にどんどんアクセスできます。(mod_mrubyのユースケースを調査していてたまたま見つけました)。 このp

    Gitのコミット単位で動的にDockerイメージをデプロイするプロキシサーバpool
    y_uuki
    y_uuki 2014/08/21
    求めてたやつな気がする
  • 1冊の技術書と青春18切符を持って一人旅してきた

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 (画像が多いので、一旦データを全て読み込んでからブログエントリを読み始めた方が良いかもしれません…) http://instagram.com/p/rgfgD4I7VE/ 「ちょっと明日から1人でLinuxの旅に行ってくる」エントリに書いた通り、先週Linuxプログラミングインタフェースというとっても重たい技術書と青春18切符と最低限の着替えを持って、北海道目指して鈍行や快速を乗り継ぎ、技術書を電車の中でひたすら読む1人旅をしてきました。 オライリーLinuxの三大凶器(自社調べ)を比較してみたらカーネルが一番 "薄い"のだな pic.twitter.com/SM26NKSiqh — hiroya ito (@hiboma) August

    1冊の技術書と青春18切符を持って一人旅してきた
    y_uuki
    y_uuki 2014/08/10
    適当に休みとってこれやりたい
  • ext3ファイルシステムとファイルの削除・復元について

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

    ext3ファイルシステムとファイルの削除・復元について
  • 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で簡単にデプロイ
  • インフラエンジニアの僕がキーボードのすぐ隣に置いておきたい本 | 人間とウェブの未来

    棚は自分の机のすぐ隣にあるのですが、なんとなく安心感とか勉強してる感とかを含め、思い立った時に手元ですぐ開いて調べたり暇つぶしにふと読みたいってありますよね。自分はインターネット、特にWebやインターネット基盤技術に関わる研究・技術者をやっているわけですが、自分の手元に置いておきたいがやはりあります。 もちろん、手元に置くためのスペースは約20から30センチ程度なので、分厚いを置くと数冊程度になってしまいますが、今日は「自分が現段階で持っているのうち、キーボードのすぐ隣に置いておきたい」8冊をなんとなく紹介したいと思います。 自分が手元に置いておきたい8冊 1. Linuxプログラミングインタフェース(6.5センチ) 分厚さ6.5センチと最強に分厚いですが、Linuxに関わるプログラミングをする際の辞書として手元においておく安心感は半端ないです。自分はミドルウェアの実装やそれに

    インフラエンジニアの僕がキーボードのすぐ隣に置いておきたい本 | 人間とウェブの未来
    y_uuki
    y_uuki 2014/05/27
    参考になる
  • 人間とウェブの未来 - 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による動的なリバースプロキシの実装案
    y_uuki
    y_uuki 2014/05/11
    Blue Green Deploymentに使えそう
  • 僕が考える最強の超高集積型Webホスティングシステム!

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでの記事を振り返って、まとめの意味でも、現状僕が考えうる最強の高集積型Webホスティングシステムの設計を忘れないうちに書いておこうと思います。これらは夢のような話ではなく、現実的にAmazonEC2上にプロトタイプとして作ってもいいなぁ、と思っていたりします。 最強の超高集積型Webホスティングシステム!とは ホスティングシステムということで、ホストをかりる側がどういうコンテンツを使うのか分からないので、できるだけ自由度の高いシステムを考えた時は、やはりベースソフトウェアは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サーバの性能を見てみよう
  • 勢いでデバイスI/Oを制御するツールも作った

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 昨日のエントリに続いて、そのまま勢いでcgroupsを使ってデバイスI/Oを制御するツールをPerlで書いてみました。 プロセス単位でCPUコアを割り当てたりもできるけど、そんなニーズあるのかなぁと思ったのでそっちはとりあえずPending。このシリーズで後やるとしたら、プロセス単位でトラフィックの制御とメモリぐらいを考えていますが、cgroupやCFSをもう少し勉強すると、もっとやりたいことが出てくるかもしれません。 昨日公開したCPU制御のレポジトリ名をresources-managed-toolsにリネームして、そこにツールをどんどん入れていくことにしました。引数で色々やれるツールでも良いのですが、この手のツールはツール自体が別の方が運

    勢いでデバイスI/Oを制御するツールも作った
  • 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通信
  • 非同期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の多重化について
  • Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)

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

    Linux系インフラエンジニア3年目のスキルを見抜く50の質問(ホスティングの場合)