タグ

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

  • プログラミングにおける不安と学びのプロセス - 人間とウェブの未来

    僕の場合、実現したいことをコードで書けない時には、ひたすら似たコードを読んで理解して写して…を繰り返す。そのうちに手元に大量の自分のサンプルが溜まっていく。その繰り返しがパターンの細分化を促し、書けるコードの幅を広げていく。書けるコードを気持ちよく書き続けてるだけでは新しいコードは書けないからだ....と、向き合えるようになるには時間がかかった。 書き慣れたコードの延長で書いていると、自分でコードを書けている実感があって、リファレンスなど何も見ずに自分の力でプログラミングできている感があるのだが、ある時これはただ「慣れ」の感覚を高めているように思えた。素早く書けること自体は、それはそれで一種のスキルで素晴らしいのだけど、実現したいことをコードで書けるようになる、という観点で振り返ったときに、どうしても成長を感じなかったのだ。それ以来、まずいと思い、実現したいことを思い描き、それを実現するた

    プログラミングにおける不安と学びのプロセス - 人間とウェブの未来
  • 自分だけの行動原理を作り上げていく - 人間とウェブの未来

    ちくうぇいと君 @chikuwa_IT とインターンで出会ってから、その後彼が中心になって色々と調整頂き、公立はこだて未来大学のITアーキテクチャ特論という授業で講義をする機会を頂きました。担当の松原先生はとても学生思いで優しい素晴らしい先生で、沢山お話させて頂きとても楽しい時間を過ごせました。ありがとうございます。ちくうぇいと君に至っては、学部2年生ながら圧倒的実行力によって、学問と両立しながらも軽々と多くの調整ごとを行なっていく姿は感嘆するばかりでした。ありがとうございました。 講義では、自分のキャリアを俯瞰しながら、エンジニア兼研究者としてどういう生き方をしてきたか、それがどういう研究につながっているか、そして、これからどういう道へ進んでいくのか、という点について自分の考えをお話ししました。その講義の中で気をつけたのは、とにかくこの経験や考えはひとつの例に過ぎず、真似する必要も、そ

    自分だけの行動原理を作り上げていく - 人間とウェブの未来
    motchang
    motchang 2017/11/23
  • 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%まで改善する - 人間とウェブの未来
  • 特定条件下のclone(2)を4倍速くする - 人間とウェブの未来

    とあるサーバで妙にシステムCPUの使用率が高い現象が置きておりました。 そこで、まずはざっくりとperf topでプロファイルをとってみると、以下のようになっていました。 22.38% [kernel] [k] copy_pte_range 18.44% [kernel] [k] zap_pte_range 11.13% [kernel] [k] change_pte_range 3.58% [kernel] [k] page_fault 3.32% [kernel] [k] page_remove_rmap また、各プロセスのstraceを眺めていると、cloneで0.05秒とかなり時間がかかっているようです。これだと単純計算で1コアで秒間20回のcloneでコア100%占有してしまう程度の非常に低速な処理しかできないことになります。 sudo strace -T -o/dev/stdo

    特定条件下のclone(2)を4倍速くする - 人間とウェブの未来
    motchang
    motchang 2016/07/16
    素晴らしい記事だ。LD_PRELOADをおぼえた。
  • 技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果 - 人間とウェブの未来

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

    技術的アウトプットが必要な時代に求められる心構えと社外発表の頻度を増やす事の副次的効果 - 人間とウェブの未来
  • ngx_mrubyがnginxのTCPロードバランシング機能に対応しました - 人間とウェブの未来

    nginxのv1.9あたりからOSS版でも使えるTCPロードバランシング機能をmrubyでプログラマブルに制御できるようにngx_mrubyでもサポートしました。 github.com これで、HTTPやHTTP/2だけでなくTCPのロードバランシングでもmrubyによって通信をプログラマブルに制御できるようになったわけです。 nginxのTCPロードバランシング機能は、nginx内部ではstreamモジュールとして、httpモジュールとは別で実装しているため、ngx_mrubyでも一から実装し直す必要がありました。 ということで少し面倒だなぁと思っていたのですが、ちょうど、僕の最近やりたい事としてTCPのロードバランサをもう少しプログラマブルに書きたいというのがあって、色々とTCPロードバランサを探したり、既存のソフトウェアで設定を試行錯誤するよりも、自分でnginxのTCPロードバラン

    ngx_mrubyがnginxのTCPロードバランシング機能に対応しました - 人間とウェブの未来
  • 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拡張が実用的になってきた件 - 人間とウェブの未来
  • 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で作った - 人間とウェブの未来
  • Rubyでabコマンドをプログラマブルに操作できるab-mrubyを業務で使ってみたけどまぁまぁ良かった - 人間とウェブの未来

    1年前ぐらいにab-mrubyという、Rubyでabコマンドをプログラマブルに操作・拡張できるツールを作っていたのですが、それを業務のとある環境で使ってみたところまぁまぁ良かったのでその使い方を紹介しようと思います。 github.com というのも、特定の条件でベンチマークで負荷をかけていくとプロセスがハングするという状況があって、その状況を再現するためにabコマンドでベンチマークをかけていたのですが、abコマンドのオプションがパッと見わかりずらかったり、どのホストのどのパスにベンチマークをかけているかなどをドキュメントで書いていて、 あれ、これRubyのDSLで表現した方がわかりやすくない? と思って、ab-mrubyを作っていたことを思い出し、Rubyで書いてみました。 target_hosts = ["test001.example.jp", "test002.example.jp

    Rubyでabコマンドをプログラマブルに操作できるab-mrubyを業務で使ってみたけどまぁまぁ良かった - 人間とウェブの未来
  • Webオペレーションエンジニアのアウトプットと開発力 - 人間とウェブの未来

    という話を、社内のインフラチーム向けにしました。 Webオペレーションエンジニアの大体のイメージについてはこちらを御覧ください。書評なのですが、とてもイメージしやすいエントリになっていると思います。 blog.riywo.com スライドの中でも一応定義していて、3行にまとめると Webサービスの運用 OS・ミドルウェアの運用 運用技術の調査・開発 を主な業務として行っているエンジニアを指すことにします。 入社して間もないので、僕の人格の好き嫌いや人間関係みたいなものがまだできていない頃の発表ということで、素直に内容を聞くことができる、という意味でいい機会だったと思います。 この内容は、社内だけでなく社外のWebオペレーションエンジニアや、所謂、インフラエンジニアと呼ばれている人でも同じような悩みを抱えている人がいるかもしれないと思っていて、内容的にも公開しても良い話なので公開しようと思い

    Webオペレーションエンジニアのアウトプットと開発力 - 人間とウェブの未来
  • RubyKaigi2014でmod_mrubyやngx_mrubyとその応用について発表して、就職も決まりました - 人間とウェブの未来

    RubyKaigi 2014でmod_mrubyやngx_mrubyとその応用について話してきました。 この写真はhsbtさんに撮っていただいた写真で、その他RubyKaigi中のグレートな写真を沢山撮影されていました。 hsbtさんに感謝します。 RubyKaigi 2014, 18-20 september RubyKaigiは、オブジェクト指向スクリプト言語Rubyの準国際カンファレンスです。 世界中からRubyのコミッターや技術者がRuby発祥の地である日にて一堂に会するイベントです。 2006年からほぼ毎年開催されており、前回のRubyKaigi 2013では公用語に英語を追加するなど、国際カンファレンスとしての場を整え、3日間でのべ1,500名以上の来場者を迎えました。 発表で使用したスライドは以下です。 スライドよく見ると、時間の関係上省いた最後の

    RubyKaigi2014でmod_mrubyやngx_mrubyとその応用について発表して、就職も決まりました - 人間とウェブの未来
  • 1