タグ

ブックマーク / blog.nomadscafe.jp (27)

  • 株式会社メルカリに入社しました - blog.nomadscafe.jp

    入社なう pic.twitter.com/OSi3NaCAnV — masahiro nagano (@kazeburo) February 2, 2015 1000万ダウンロードと会社の2周年という記念の日に入社しました。 2周年を迎えたメルカリ、ダウンロード数は1000万超に - TechCrunch iOS、Androidアプリのダウンロード数はもちろん、商品の出品数や流通額も大幅に伸びています。また、アメリカでの展開等も進んでいるので、サーバ・フロントのエンジニアを募集しています。ご興味のある方はぜひご連絡くださいませ。 3月には六木ヒルズへのオフィス引越も予定されています。mixi入社前にlivedoorのセミナーでヒルズへ行ってから9年。ここに通うことになるとは思いもしませんでした。 今後の仕事 仕事は変わらずサーバ周りの運用・パフォーマンス改善、スケーラビリティの向上です。

  • Gazelle: new Simple and Fast Plack Handler for Performance Freaks - blog.nomadscafe.jp

    Gazelle という新しいPlack::Handler(Server)をリリースしました https://metacpan.org/release/Gazelle 前のISUCONの結果報告で「Chobi」として紹介していたものを名前を変更しました。 GazelleはnginxやApacheでreverse proxyを行うことを前提に書かれたPlack::Handlerです。nginxの後ろにunix domain socketを利用して配置した場合、”Hello World”のベンチマークで、Starmanの3倍、Starletの1.7倍程度高速に動作します。 一番左はnginxで静的ファイルを配信した場合のQPSです ベンチマークの詳細はこちら↓です https://github.com/kazeburo/Gazelle/wiki/Benchmark 特徴など Gazelleは以下

    hi-rocks
    hi-rocks 2014/11/13
  • ISUCON4 で優勝してきました!!! #isucon - blog.nomadscafe.jp

    去年に引き続き、ISUCONにLINEの選抜チーム「チーム生ハム原木」で出場して優勝することが出来ました!!!! @tagomoris、@sugyan お疲れ様でした!! #isucon 2014で優勝しました - すぎゃーんメモ 最後の最後、残り15分でnginxの設定を行う場所を間違えていたということに気付き、ローカルのベンチマークでしか検証ができず、どの程度のスコアになるのか、またfailするのか分からない状況でしたが、結果的に良いスコアになってほっとしました。 自分でも何度も言いながら「nginxのrewriteはinternal redirect」の大原則を忘れていました。はい。1日100回唱えるようにします。 予選アプリケーションの復習 劇的なスコアは出ていませんが、地道に復習をしていて、 $ ~/benchmarker bench --workload 8 07:26:29

  • 4歳の息子と0歳の娘がいる父親がおすすめの絵本を書いてみた - blog.nomadscafe.jp

    941さんが絵名作100リストというエントリーをあげていたので便乗してうちにあるからオススメを紹介してみる。 うちには4歳の息子と0歳の娘がいますが、(息子から見た)おばあちゃんがらでぃっしゅぼーやの絵くらぶというのに申し込んでくれていて、毎月絵が1冊届きます。親と息子でを選ぶと息子が好きな電車とか乗り物とか電車のに偏ってしまうと思うので、毎月いろんな絵が届くのはかなり良い。息子も新しいが来るのを楽しみにしています。 それに加えて、毎週木曜日に保育園からを借りてくるのと、近所の図書館で借りるがあるので、棚はいつもいっぱいです。 ずいぶん前からひらがなカタカナが読めていた息子なので一人でもを読むけど、毎日寝る前に2冊を読んでいます。寝落ちそうになりながら読んでいる事もあるけど、息子・娘ともにが好きになって、をきっかけに世界を広げていって欲しいと思うところです。

    hi-rocks
    hi-rocks 2013/12/04
    うちに来るのとは別の会社の同じく毎月届くサービス。そして同じくおばあちゃん!
  • YAPC::Asia 2013 Tokyo で Best Talk Awards 第3位いただきました。 - blog.nomadscafe.jp

    トークの内容はひとつ前のエントリにて紹介していますが、なんとBest Talk Awards 第3位をいただきました!ありがとうございます! 牧さん、941さん、JPAの皆様、ボランティアの皆様、参加した全てのPerl Mongersの皆様と、と子供たちに感謝です。 ベストトーク賞第3位の賞品は「国内の技術カンファレンスの参加チケット費用」ということでPerlに限らず、様々なカンファレンスに参加できるようです。せっかくなのでPerl以外で、LT発表ができるところに行ってみたいのでオススメがあれば @kazeburo 宛にメンション頂けると嬉しいです! YAPC::Asia 2013 2日目は、藤原さんの「社内ISUCONの作り方」、弊社の話ですが、牧さんの「当にあったレガシーな話」、myfinderさんの「フルテストも50msで終わらせたい」あたりがよかった。ISUCONの課題はもっと

    hi-rocks
    hi-rocks 2013/09/24
    おめでとうございます!
  • PSGI/Plackアプリケーションの起動方法いろいろと本番環境アレコレ - blog.nomadscafe.jp

    PSGI/Plack/PSGIアプリケーションを動かす時に一番使われているのは plackup でしょう。 $ cat app.psgi use Plack::Builder; use MyApp; my $app = MyApp->psgi_app; builder { enable 'ServerStatus::Lite', => ..; $app; }; $ plackup -E production -s Starlet --max-workers 30 --port 5000 -a app.psgi plackup コマンドの -s にハンドラ名を指定して起動します。番環境では -E や $ENV{PLACK_ENV} を指定してStackTraceやLintといった開発に便利なPlack::Middlewareが追加されないようにする必要がありますね。 Starmanの場合は

    hi-rocks
    hi-rocks 2013/06/07
    はー
  • HTTP/1.1 の Transfer-Encoding: chunked をビジュアライズするツール書いてみた - blog.nomadscafe.jp

    Chunked Transferとは 一般にHTTP KeepAliveを利用するには、レスポンスのボディがどこで終わり、次のレスポンスがどこから始まるかをクライアントが知る必要があります、そのためHTTP/1.0ではKeepAliveを行う為にボディの長さをContent-Lengthをヘッダに入れなければなりませんでしたが、サイズを測るためにデータをすべてメモリに読み込むなどの処理が必要になり、レスポンス開始までの時間もかかります。(一般的なアプリケーションにはあまり影響がありませんが) そこでHTTP/1.1ではChunked Transferという仕組みが入っていて、事前に全体のレスポンスの長さが分からなくても、chunk=固まり毎にサイズを記してレスポンスを返していき、最後に0byteと送信することで、コンテンツの切れ目がわかるようになっています。 HTTP/1.1 200 OK

    hi-rocks
    hi-rocks 2013/05/24
  • Monoceros というPrefork型だけどC10Kの接続を捌くことができるPSGI/Plackサーバ書きました - blog.nomadscafe.jp

    Monoceros というPSGI/Plackサーバ書きました https://metacpan.org/release/Monoceros https://github.com/kazeburo/Monoceros StarmanやStarletのようなPreforkなアプリケーションサーバでは、コネクションの維持イコールプロセスの占有なので、HTTPのKeepAliveは無効にするのが一般的ですが、負荷の高いサービスではTIME_WAIT状態のソケットが溜まったり、SYN-ACKの再送問題などあり、KeepAliveを使いたいという欲求があったりなかったりします。 Monoceros はリクエストを処理するworkerの他に、イベントドリブンで動くコネクション管理プロセスを立てて、クライアントからの接続ソケットをunix domain socketを使いプロセス間でやりとりします。待機

    hi-rocks
    hi-rocks 2013/05/14
    カッコイイ!
  • HRForecast - もうひとつのデータビジュアライズツール - blog.nomadscafe.jp

    ずいぶん前から作って動かしてはいるのですが、GrowthForecastの他にもうひとつのグラフ作成ツールを公開しています。 https://github.com/kazeburo/HRForecast デイリーで更新される数値のビジュアライズに使う事が出来ます。GrowthForecastにはない過去データの登録もできます。 モリスさんのスライドでも少し登場しています。弊社では主にHiveでの集計の書き出し先として使っています http://www.slideshare.net/tagomoris/log-analysis-with-hadoop-in-livedoor-2013 画面はこんな感じ 他のページにembedするHTMLの発行やCSVでダウンロードをサポートしています データの登録APIについて データの登録は、GrowthForecastと同じようにURIに対してPOSTリ

  • チート対策とhttp_loadに仕掛けた罠の話 #isucon - blog.nomadscafe.jp

    完全に文化祭疲れで昼寝3時間ぐらいしてしまいましたが、懇親会で聞かせて頂いた話やblogやtwitterをみる限り好評だったようで、うれしく思っています。ISUCONに参加して頂いた方、社内で協力して頂いた方ありがとうございました いくつか至らぬ点がありますが、明日以降に公式にフォローさせて頂きたいと思っています。 さて、既に公開されているので見た方は多いと思いますが、今回ISUCONで使ったベンチマークツールは大きく分けて次の3つのツールに分かれています。 (1) 1post/secでコメントを投稿し、1秒後にコメントをしたページと、インデックスおよび適当な記事のDOMチェックを行う node.js (2) http_load + patch (3) css/js/imageのMD5値を検証する perl script 最終的な順位はhttp_loadが行ったリクエスト数で決まるのでもし

  • Webアプリケーションエンジニアはノマドであれ(特定のサーバに依存しない方法) - blog.nomadscafe.jp

    弊社では毎週水曜日はノーエンジニアデーなので、最近はMacbook AirとWIMAX持って外で仕事しています。意外と快適ですが、ここで書くのはサーバの使い方の話です。 ときおり、次のような状況に遭遇することがあります。 開発環境して使っているけど、セットアップをどのように行ったか残っていないので、新サーバへ移動できない 番環境だけど、セットアップをどのように行ったかわ(ry デプロイ元/管理ツールサーバとして使っているので古いサーバだけど捨てることができない DBがどこから参照されているか管理できていないので、サーバの入れ替えが困難 コードがどこから参照が把握できていないので、容易にサーバ構成の変更ができない 椅子^H^H 一度設置したサーバの移動なんてなかなかすることないと思う人はいるかもしれないけど、サーバが何の警告もなしに突然壊れて入れ替える必要がでてくるのはもちろん、インフラ技

  • Re: @kazuho: handlersocket plugin や mycached を使えば memcached は不要か、それとも使うべきケースがあるか。考察せよ [10点] - blog.nomadscafe.jp

    handlersocket plugin や mycached を使えば memcached は不要か、それとも使うべきケースがあるか。考察せよ [10点] kazuho (Kazuho Oku) http://twitter.com/kazuho/status/21477219149 考えて答えてみる。 HandlerSocketやmycachedを利用し、MySQLへの接続数が数万単位で行えるようになったり、より多くのクエリ数が発行できるようになっても、memcachedは不要ではないし、使うべきケースもあります。 memcachedは単なるKVSではなく、ExpiresとLRUがついたキャッシュサーバです。キャッシュオブジェクトには期限を付ける事ができ、期限が過ぎたキャッシュは無効にされ、またアクセスがされていない不要になったオブジェクトは削除され、空いたスペースは新しいキャッシュオ

    hi-rocks
    hi-rocks 2010/08/20
    永続性はあればいいってもんじゃない。expiresとLRUがあるからこそのmemcached
  • 株式会社ライブドアに入社しました - blog.nomadscafe.jp

    先月末にミクシィを退職し、6月1日より株式会社ライブドアにて働かせていただくことになりました。 出社日2.0日目的な意味で。 ライブドアには以前からの知り合いのエンジニアも多くいたり、先月にはJPAの代表の牧さんが(再)就職をしていたり、同日入社にはアノPerlエンジニアもいます。それぞれが高い技術をもっている楽しみな職場です。ライブドアでの主な業務内容は前職に引き続きシステム運用を見ることになります。 Blogをはじめとするlivedoorのメディア、サービスを運用やスケーラビリティといった立場から支えて行きたいと思いますので、これからもよろしくお願いします。

  • 株式会社ミクシィを退職しました - blog.nomadscafe.jp

    昨日tweetした通り、株式会社ミクシィを退職しました。正確には今月末までとなり、今は少ない有給消化期間です。次の会社は既に決まっていて、6月1日から新しい会社となります ミクシィにはちょうど4年間在籍しました。その間mixiはPVにして10倍以上という驚異的な成長をし、会社としてのミクシィも上場をするなどさまざまな経験をさせて頂きました。 自分だけでやったことではなく、もちろん他のエンジニアの協力のもとで行ったことですが、4年間の間に自分のミクシィでやっていたことをBlog等ですでに紹介したものを中心にいくつか書くと アプリケーションレベルでのDBのフェイルオーバ Apache modproxybalancerの導入 デプロイツールの作成 サーバ設定のバージョン管理化 Squid COSSの検証導入 プロフィール画像などSquid CARPを利用した分散構成対応 Nginxの検証 Var

    hi-rocks
    hi-rocks 2010/05/28
    お疲れ様でした!!
  • nginxの組み込みperlで非同期に遅延させてレスポンス - blog.nomadscafe.jp

    ひさびさにnginxなどいじっている。 nginxがnon-blockingで動いているので、組み込みのPerlでもblockingする処理をいれることはおすすめされていないのですが、sleepだけは機能が用意されていました。使い道がよくわからないけど、とりあえずレスポンスを遅延させるのだけやってみた。 まず、handlerとなるperlモジュール package delay; use nginx; sub handler { my $r = shift; my $args = $r->args; $args =~ m/sleep=([^&]+)/; my $sleep = $1 || 1; $r->variable("sleep", $sleep); if ( $sleep ne "no" ) { $r->sleep($sleep * 1000, \&next); return; } $

  • RemedieはIPv6でListenしたほうがいいんじゃないかの話 - blog.nomadscafe.jp

    AnyEventとかCoroあたりを知るために、RemedieのMacのbinary版を入れてみたりしているのですが、1つ気になった点がありました。 RemedieはBonjourをサポートしているので、起動すると自動でSafariのブックマークのBojourメニューに現れます。 ただ、ここからアクセスすることは出来ませんでした。 Bonjourに登録されたアドレスは、 http://kazeburomp.local.:10010/ Safariからでは接続ができなかったようです。 そこでtelnetを用いて、接続をできるか、確認すると、 % telnet kazeburomp.local. 10010 Trying fe80::21c:42ff:fe00:0... telnet: connect to address fe80::21c:42ff:fe00:0: Connection r

  • Shell::Perl と pirl を試してみる : blog.nomadscafe.jp

    Shell::Perl と pirl を試してみる id:naoya氏がブクマしてたのを見て入れてみた。 pirlは、perlshのような対話型のperlシェルです。 Shell::Perlをinstallしようとすると、新しいExtUtils::MakeMakerを要求されるので、cpanコマンドでいれずに、Makefile.PLを書き換えた -use ExtUtils::MakeMaker 6.31; +use ExtUtils::MakeMaker; 同時にinstallされるpirlコマンドを実行するとこんな感じ。 $ pirl [~] Welcome to the Perl shell. Type ':help' for more information pirl @> 1+1 2 pirl @> log 10 "2.30258509299405" pirl @> :helpでヘ

  • mod_secutiryを使ってApacheでTrackback Spamを弾く : blog.nomadscafe.jp

    mod_secutiryを使ってApacheでTrackback Spamを弾く MTのTrackback Spam対策にmod_securityを使って英数字のみのTrackbackを弾くようにしてみた。 mt-tb.cgiが動く前にApacheとかProxyとかでSPAMを判定できるとサーバに優しいし、かなり良いんじゃないかと思う。 mod_secutiryを # apxs -cia mod_security.c でインストールして、 <Files "mt-tb.cgi"> SecFilterEngine On SecFilterScanPOST On SecFilterDefaultAction "deny,log,status:406" SecFilterSelective POST_PAYLOAD "^[\x00-\x7F]+$" </Files> と設定。 フィルタリングされて

  • Plagger::Plugin::Publish::Growl : blog.nomadscafe.jp

    Plagger::Plugin::Publish::Growl Publish::MSAgentをみて思いついた。 Mac OS XのGrowlへnotify GrowlはじめてつかったーYo。 package Plagger::Plugin::Publish::Growl; use strict; use base qw( Plagger::Plugin ); use Encode; use Mac::Growl; sub register { my($self, $context) = @_; $context->register_hook( $self, 'publish.init' => \&initialize, 'publish.entry' => \&entry, ); } sub initialize { my ($self, $context) = @_; my @upd

    hi-rocks
    hi-rocks 2006/02/28
    これはいい!
  • メモ&カレンダーWebアプリケーションつくりました。 : blog.nomadscafe.jp

    メモ&カレンダーWebアプリケーションつくりました。 Tagがつけられるメモ帳Webアプリケーションをつくってみました。次のキラーアプリらしいカレンダー機能もついています。 http://femo.nomadscafe.jp/ ↓Helpで使っているスクリーンショット メモのTagとして、2005-12-09と日付をいれるとカレンダーの方に整頓される仕組みです。カレンダーでもTagCloud風にメモ件数の多い日は字が大きく表示されます。 Catalyst + Ajax + TypeKey認証 + Tagging + はてな記法と話題の技術を使い派手に実装しました。TypeKeyのアカウントを持っていればログインだけで使えるのでぜひお試しください。ご意見もくださいませ。

    hi-rocks
    hi-rocks 2005/12/13
    これはいいですね。良くできてる!オレも早速使わせてもらいます。