タグ

ブックマーク / hb.matsumoto-r.jp (40)

  • 高速にリモートホストのポートがListenしているかを調べる - 人間とウェブの未来

    hb.matsumoto-r.jp 以下のエントリは一部誤認が含まれていたので、上記エントリにその旨をまとめましたので御覧ください。 とある事情でミドルウェア上から高速にリモートホストのポートのListenチェックをしたくなりました。ローカルホストのポートであれば、/procやnetlinkなどを使って素早くチェックする方法がありますが、今回は対象がリモートホストなのでソケットでなんとかする必要があります。 そこで、誰もがまず思いつくのは、connect()システムコールによってリモートホストのポートに接続しにいって、connectできればOK、できなければNGと判定する方法があり得るでしょう。(高負荷時に接続できないパターンはListenしていないと判定してよい) そこで一旦、最低限socket()システムコールとconnect()システムコールで接続する時のパケットをtcpdumpで眺

    高速にリモートホストのポートがListenしているかを調べる - 人間とウェブの未来
    hfmgarden
    hfmgarden 2017/02/14
  • H2Oのmruby拡張が実用的になってきた件 - 人間とウェブの未来

    H2Oにmruby拡張の提案を行いmergeされてから幾つかのPRを経て、少しずつ実用的になってきました。 github.com 今日は簡単にその使い方を紹介しようと思います。 h2o_mrubyを有効化したh2oをビルド h2o_mrubyを有効化してビルドするのは簡単で、OSのライブラリ環境(/usr/lib/以下とか)にlibmruby.a等のmrubyライブラリがある状態で、 cmake -DWITH_MRUBY=ON . make h2o するだけで、h2o_mrubyが有効化されたh2oバイナリがカレントにビルドされます。簡単ですね。 またこの記事も参考にすると良いかもしれません。 qiita.com 使えるメソッド mod_mrubyやngx_mruby程メソッドはまだ充実していませんが、少しずつ使えるものを実装しています。また、mod_mrubyやngx_mrubyとの互換

    H2Oのmruby拡張が実用的になってきた件 - 人間とウェブの未来
  • エンジニア・研究者とはどうあるべきか - 2016年振り返りと新生ペパボ福岡基盤チームの紹介

    今年は2015年4月にペパボに入社して、1年目が終わり、2年目に突入する年でした。 hb.matsumoto-r.jp hb.matsumoto-r.jp その中で、以下のように今年の抱負を書きました。 一方で、技術力の向上について明らかに努力を怠っていた面については反省し、技術力不足を悔しいと思う事に対して真剣に取り組みたいと思います。悔しくてもなんとなく放置してしまう、そうなってしまうと僕のようなエンジニアは絶対にダメになってしまいます。この悔しさこそが、自分自身を変える大きな力になると信じているからです。 去年の2015年は上記の2つのエントリで振り返り、色々あったけど結局技術的成長の努力が足りなかった、と締めくくりました。そして、今年はどうだったかというとやっぱり努力が足りない1年であったと言わざるを得ません。年末になると、必ず後悔と悔しさが湧き上がってきます。 エンジニアリング以

    エンジニア・研究者とはどうあるべきか - 2016年振り返りと新生ペパボ福岡基盤チームの紹介
    hfmgarden
    hfmgarden 2016/12/29
  • 複数のmrubyインタプリタ間でデータを共有して使う方法 - 人間とウェブの未来

    記事は、mruby advent calendar 2016の23日目の記事です。22日は、ore_publicさんのruby製のコマンドラインツールをmrubyに置き換えるでした。 mrubyインタプリタ、mrubyの実装的にはmrb_state構造体なのですが、一つのプロセスの中で複数mrb_stateを作らざるを得ない場合に、複数のmrb_state間でデータを共有して使いたい場合がありませんか?ふむふむなるほど、やはり皆さん共有したいようですね。 これまでは、mrb_state間でデータをコピーする際にドキュメントに書かれていない知識を使って頑張ってやる必要があったのですが、それを簡単にできるように、mrubyのC APIを拡張するmrbgemのmruby-pointerを作りました。 github.com 今回はその使い方を説明します。 典型的な使い方 例えば、とあるmrb_s

    複数のmrubyインタプリタ間でデータを共有して使う方法 - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/12/24
  • Apache httpd 2.4系をバックエンドに置く場合のクライアントIPアドレスの扱いとハマりどころ - 人間とウェブの未来

    nginxやその他のリバースプロキシをフロントにおいて、バックエンドにApache httpdを置くという構成をとることがあります。 その場合に何も対処しないと、アクセスログやアプリが認識するクライアントIPアドレスがリバースプロキシのIPアドレスになってしまうので、モジュールを入れることでそれを対処していると思います。 バックエンドに置くApacheを2.4系でクライアントIPアドレスの変換を試していたのですが、どうもハマりどころが幾つかあったので、今回のエントリではそれを共有しておこうと思います。 クライアントIPアドレス変換モジュール バックエンドのApacheで受け取るクライアントIPアドレスを、リバースプロキシのIPアドレスから実際のクライアントIPアドレスへと適切に変換するモジュールで代表的なものを以下に列挙します。 モジュール名 Apache対応バージョン 特徴 mod_rp

    Apache httpd 2.4系をバックエンドに置く場合のクライアントIPアドレスの扱いとハマりどころ - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/12/03
  • エンジニア個人が自主的に成長するように促す - エンジニア組織の自律的成長 - 人間とウェブの未来

    この記事は、Pepabo Managers Advent Calendar 2016の3日目の記事です。2日目は、弊社チーフエンジニアhsbtさんの「マネージャが仕事の仕組みを作る」でした。 僕自身は、エンジニア専門職の主席研究員兼シニア・プリンシパルエンジニアではありますが、特にペパボ福岡のエンジニア組織を現場でまとめる人間として、エンジニア組織を成長させる中で個々のエンジニアの成長をサポートしているという意味では、マネージメントに関する活動も兼ねております。 しばしば、インターネットサービスの高度化と複雑化の速度が早過ぎるため、グランドデザインができない、人が多過ぎても成立しない、少な過ぎても難しい、とういうような類のサービスを作り上げないといけない状況があります。その際に、厳密過ぎない役割を持たせ、それぞれが横断的にそれぞれのスタイルで、まるで、攻殻機動隊の世界におけるスタンドプレー

    エンジニア個人が自主的に成長するように促す - エンジニア組織の自律的成長 - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/12/03
  • FastContainerアーキテクチャ構想 - 人間とウェブの未来

    追記:この記事へのコメントとして、この記事以上に内容の趣旨を端的かつ完璧に表しているコメントがありましたので、まずはそれを紹介しつつ、引き続き呼んで頂けると幸いです。 FaaS的だけど「アプリ側の構成も基盤側に合わせて変えるべき」路線なFaaSに対し「アプリは従来のままでもちゃんと動くよう基盤側が頑張るべき」という基盤側の矜持を感じる by takahashim FastContainerアーキテクチャ構想 - 人間とウェブの未来 FaaS的だけど「アプリ側の構成も基盤側に合わせて変えるべき」路線なFaaSに対し「アプリは従来のままでもちゃんと動くよう基盤側が頑張るべき」という基盤側の矜持を感じる2016/11/13 18:25 b.hatena.ne.jp 素晴らしいまとめの一言です。それがまさに構想に至った意図でございます。僕もこんな趣旨をかけるようになりたいです。上記の的確なコメン

    FastContainerアーキテクチャ構想 - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/11/12
  • PHPが動くApacheのコンテナ環境をhaconiwaで1万個動かそうとしてみた - 人間とウェブの未来

    RubyKaigiに行くとにサインを求められるすごいエンジニアが書いたhaconiwaというmruby製のコンテナエンジン(コンテナ環境構築の基盤ツール)があるのですが、少し試してみようと思って、とりあえず1サーバ上に1万コンテナぐらい動かそうとしてみました。久々に今回は自分の作ったOSSではなく、OSSの検証レポート的な記事になります。 haconiwaは僕の好きなOSSの一つで、それはなぜかと言うと、 haconiwaでコンテナを作る際に、haconiwa実行環境にはコンテナの要素機能が全て入っている必要はない 必要なコンテナの要素機能を簡単に組み合わせて、自分が実現したいコンテナ、あるいは、それに準ずる環境を作れる haconiwaによるコンテナ定義をRubyのDSLで表現でき、動的な設定や組み合わせの設定を簡単にかける ということができるからです。その特性から、CentOS6のよ

    PHPが動くApacheのコンテナ環境をhaconiwaで1万個動かそうとしてみた - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/11/08
  • Pmilter: Programmable Mail Filter Serverを作った - 人間とウェブの未来

    Pmilterというサーバソフトウェアを作りました。 github.com PmilterはProgrammable Mail Filterの略で、SMTPサーバ(送信や受信)とmilterプロトコルで通信し、SMTPサーバの送受信の振る舞いをRubyでコントロールできるサーバソフトウェアです。 これまでにも、milter managerやRubyのgemを使ってmilterサーバを作るといった素晴らしいソフトウェアがありました。ですが、今回僕がフルスクラッチで作りたかった理由としては、 とにかくインストールや設定がシンプルで運用しやすいサーバソフトウェアにしたい ミドルウェアとして振る舞いを設定する感覚でRubyで制御する事に専念したい 依存ライブラリを減らしワンバイナリでサーバに配置できるようにしたい 設定変更に再起動することなくRubyを変更するだけで振る舞いを変えられるようにしたい

    Pmilter: Programmable Mail Filter Serverを作った - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/11/04
  • インターネットを作りたい - 人間とウェブの未来

    インターネットを作り上げることができる、そんなコミュニティを作りたいとずっと思っている。 インターネットの創成期において、産学両方向の技術と知見を同時に兼ね備え、両方向からのアプローチができるとにかくすごい人達によってインターネットは作り上げられ整備されてきた。それらを新しい世代で引き継ぎ、あの時のように、インターネットの未来に必要な価値を圧倒的速度で作り上げていく若い世代に僕はなりたいと思っているし、そういうコミュニティを作りたいと思っている。 社会活動的観点では、僕が企業だけでなくアカデミアにおいても活動を行い、産学両方向から得られる知識や考え方を学んでいるのはそのためであるし、新規性が重要視される世界での研究開発のアプローチ、実効性が重要視され自らが提供する価値を最大化するためのアプローチ、などなど、各領域における考え方や取り組み方はとても勉強になる。また、昨今では、企業はアカデミア

    インターネットを作りたい - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/10/31
  • nginxでもapacheでも使えるDoS的アクセスを検知して任意の制御をするWebサーバ拡張をmrubyで作った - 人間とウェブの未来

    github.com 会社の運用メンバーと色々議論していた中で、「カジュアルにWebサーバへのDoSみたいなアクセスが来た時に検知して制御したいよねー」という話が上がったので、http-dos-detectorというnginxでもapacheでも使えるWebサーバ拡張をmrubyで書きました。 もちろんmrubyなので、mod_mrubyとngx_mrubyを使っています。ので、Rubyコードはそのまま同じコードをどちらのミドルウェアでも使えます。mod_mrubyとngx_mrubyを使えば、ちょっとしたWebサーバの拡張は両方で同じ実装に落とし込めるので便利ですね。 使い方 例の如く、GitHubのREADME通りにインストールして下さい。Rubyのコードはmod_mrubyでもngx_mrubyでも有効なので、そのコードを読み込む設定をそれぞれ以下のように記述するだけでよいです。 a

    nginxでもapacheでも使えるDoS的アクセスを検知して任意の制御をするWebサーバ拡張をmrubyで作った - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/10/21
  • 博士課程の予備審査にいってきました - 人間とウェブの未来

    僕が博士課程で研究していた「Webサーバの高集積マルチテナントアーキテクチャに関する研究」という内容で、僕が通っている京都大学大学院情報学研究科博士課程の予備審査にいってきました。研究室は岡部研究室になります。 予備審査は、僕が所属する大学院の場合、基的には博士課程の研究で3以上ジャーナルを通す事を条件に、内容的にも指導教員の許可が受けられれば予備審査へと進むことができます。 博士課程においては、博士課程の入学資格審査の面接で情報学研究科のほぼ教員全員(数十人)の前でプレゼンし、博士課程が半分経過した際に受ける中間審査のプレゼン(これまた同様に教員数十人)に続く、大変厳しい審査のうちの一つです。プレゼン時間は1時間、質疑応答は30分です。また、そこに参加される先生方は、各専門分野でも世界トップクラスの研究者であるため、そのような方々の前で学術研究の発表をするのは、とにかくプレッシャーと

    博士課程の予備審査にいってきました - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/09/07
  • CPU使用率100%のWebサーバをOSのチューニングだけでCPU使用率20%まで改善する - 人間とウェブの未来

    こんばんは、 @matsumotoryです。 hb.matsumoto-r.jp 上記エントリにおいて、プロセスの大量メモリ確保に伴うページテーブルサイズとベージテーブルエントリ数の肥大化によるcloneやexecveの性能劣化とCPU使用時間の専有問題、および、それらの解決方法についてシステムコールレベルで確認しました。 そこで今回は、システムコールやそのカーネル内部の処理の性能、というよりは、より実践的な環境であるApache httpdとmod_cgiを用いて、phpinfo()を実行するだけのCGIに対してベンチマークをかけた時にどれぐらいCPUのidleが空くか、システムCPUの使用量が変わるかを、前回示した解決方法の1つであるHugePagesを使うかどうかの観点で比較してみましょう。 特定条件下のWebサーバ環境のシステムCPUに起因する高負荷問題から、システムコールやカーネ

    CPU使用率100%のWebサーバをOSのチューニングだけでCPU使用率20%まで改善する - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/07/26
  • エンジニアが技術力を高めるもう一つの理由 - はてな・ペパボ技術大会を経て - 人間とウェブの未来

    はてなさんと共催で行った「はてな・ペパボ技術大会@京都」と「ペパボ・はてな技術大会@福岡」が無事終わりました。 http://developer.hatenastaff.com/entry/2016/06/21/131302 ペパボ社内では、はてなサービスとその技術力の高さのファンが多く、はてなさんと一緒にこんな技術イベントできるなんて!!と喜んでいる人たちも沢山いましたし、僕自身もご一緒できてとても嬉しかったです。技術大会後の打ち上げも含めて、すごく盛り上がったしとにかく最高でめちゃくちゃ楽しかったです。 id:y_uukiさんをはじめ、はてなさんの若手エンジニアのスキルは圧倒的に高く、id:ichirin2501さん、id:masayoshiさん、id:taketo957さん、そして、技術大会で諸々沢山調整してくださった、id:wtatsuruさんとid:tomomiiさん、座談会をモ

    エンジニアが技術力を高めるもう一つの理由 - はてな・ペパボ技術大会を経て - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/07/11
  • Mac上でCentOS6用のkernel{3,4}系イメージのrpmを一発でビルドするビルドシステム作った - 人間とウェブの未来

    Kernelの新しい機能をフルに使おうとすると、新しいkernelを使う必要があるのですが、例えばCentOS6系でシステムを運用していた場合に、新しいKernelを使うべくCentOS7とかにあげるとsystemd含め運用が大きく変わってしまうため中々踏み出せないという状況があると思います。 そこで、運用も含めた検証がてらCentOS6用(他のバージョンでも動くかも)のKernel4系あるいは3系のイメージのrpmを簡単にビルドするシステムを作りました。 github.com 使い方 Mac上でgit clone https://github.com/matsumoto-r/kernel-4-build-system-for-centos6.gitして、 make するだけです。 すると、デフォルトではbuild/linux-4.1.1以下に以下のように必要なrpmが生成されます。 ls

    Mac上でCentOS6用のkernel{3,4}系イメージのrpmを一発でビルドするビルドシステム作った - 人間とウェブの未来
  • PHPカンファレンス福岡2016に初参加しひとつの確信を得た #phpconfuk - 人間とウェブの未来

    先日PHPカンファレンス福岡2016に参加してきました。 一つ前の記事でここ半年の登壇についてまとめており、その中でPHPカンファレンスにも触れる程度にとどめていたのですが、PHPカンファレンス福岡の振り返り記事やツイートまとめの中で多くの方に僕の発表について言及して頂けており、僕も初参加なのでちゃんと書こうと思って、今出張先のホテルで書いております。 カンファレンスとしてのレベルの高さがすごい 僕はそれなりに登壇もしていますし、技術カンファレンスにも沢山参加しておりますが、今回初参加したPHPカンファレンス福岡はその中でもトップクラスにレベルが高かったように思います。 ここで言うカンファレンスのレベルの高さとは、 登壇者の発表内容の充実度 聴衆としての姿勢の良さ 懇親会などでのコミュニケーションのとりやすさ が挙げられます。では、上記について1つずつ思ったことを書いていきます。 登壇者の

    PHPカンファレンス福岡2016に初参加しひとつの確信を得た #phpconfuk - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/05/27
  • 技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果 - 人間とウェブの未来

    この話については、僕が専門としているWebサービス関連の業界におけるお話だと思って下さい。ただ個人的には、もう少し広範囲でも適用できる話なのではないかなとも思っています。 ということで、早速アウトプットすることのメリットから簡単に今の現状をまとめて今後エンジニアはどういう心構えで取り組んでいけば良いか、その中で、社外発表することのメリット、その社外発表の頻度を高める事の副次的効果についてまとめていきます。 アウトプットすることのメリット アウトプットする事やOSS化する事のメリットは、自分も含めて最近随分と語られるようになってきております。ここではそれについてあまり詳細に語る事は省略して、メリットを箇条書きでまとめると、 自分の技術が整理され、振り返りも容易になる フィードバックが得られる 自分の技術とその他社外のエンジニア技術を足しあわせての技術検討(開発)が可能になる 自社だけでなく

    技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果 - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/05/03
  • mrubyのmrbgemの依存関係とmgem-listの登録について - 人間とウェブの未来

    mrubyの機能拡張には、mrbgem(以下mgem)という所謂CRubyでのgemのような拡張モジュールを使います。mgemを開発していくと、もちろん以前作ったmgemの機能を再利用したい場合や、すでに存在する優れたmgemを使ってさらなる機能を実装したい場合が多くなるはずです。 昔は、mrubybuild_config.rbに粛々と依存するmgemを羅列していって、ビルドして依存関係に関する警告が出たらそのmgemを追加していくというかなり面倒な作りになっていました。 ですが、今は開発したmgemの所謂設定であるmrbgem.rakeファイルに依存関係を書いておくと、自動的にそれをmgem-listと呼ばれるmgemの登録リポジトリから検索してビルドしてくれるようになっており、以前と比べると非常に簡単になっています。 つまり言い換えると、mgem-listに登録していないmgemに関

    mrubyのmrbgemの依存関係とmgem-listの登録について - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/03/24
  • IPSJ-ONE 2016で登壇してきた - 確実に時代は変わってきている #ipsjone - 人間とウェブの未来

    先日、慶応義塾大学で開催された情報処理学会全国大会のトリのビッグイベントであるIPSJ-ONE2016で登壇してきました。 IPSJ-ONEとは、 IPSJ-ONEは、時流に乗る日の若手トップ研究者19名によるライトニングトーク形式の登壇を俯瞰することで、 今後の情報社会に向けての研究動向を広く一般の人々に発信するために企画されました。 今、最先端研究を知ることは、ビジネスや学生の進路決定、メディア戦略などに繋がります。 「IPSJ-ONE」では、そうした最先端研究を一流の研究者による平易な解説で聞くことができます。 情報処理学会では、現在39分野の研究会にて各分野の専門家たちが日々議論を深めています。 今回も昨年に引き続き、各研究会による推薦、IPSJ-ONE企画・実施委員会による審査により、分野を超えたインパクトを有する19名の気鋭の研究者を招待いたしました。 それぞれ約5分の持ち時

    IPSJ-ONE 2016で登壇してきた - 確実に時代は変わってきている #ipsjone - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/03/15
  • ngx_mrubyを使った簡単な画像変換サーバを数分で実装してみた - 人間とウェブの未来

    2日前にmrubyの画像変換mrbgem下さいとつぶやいて、その後2日以内にgdとMagick++のmrbgemが開発されるこのスピード感がmruby。 https://t.co/RzTZJsX9vP https://t.co/4YkJ2PwISQ— MATSUMOTO, Ryosuke (@matsumotory) 2015, 4月 25 というように、mrubyで画像変換してみたいなーと呟くとあっというまに画像変換mrbgemが開発されてしまうmrubyですが、そのままでは呟いた当事者としてなんだか申し訳ないので、ngx_mrubyを使ってサクっと画像変換サーバができないか試してみました。 結論としては、簡単なものはサクっとできてしましました。以降では作り方を簡単に紹介します。 こういうのが数分でできてしまうのがmod_mrubyやngx_mruby、さらにはtrusterdの良さです

    ngx_mrubyを使った簡単な画像変換サーバを数分で実装してみた - 人間とウェブの未来
    hfmgarden
    hfmgarden 2016/03/11