タグ

ブックマーク / naoya-2.hatenadiary.org (32)

  • Webはインターネットになった - naoyaのはてなダイアリー

    先週金曜日にエンジニアサポートCROSS2013に行ってきた。目当ては @Jxck_ さんホストによる次世代Webセッション。セッション自体は前後半に分かれていて 前半はプロトコル編。SPDY (wikipedia) や HTTP/2.0 の動向やその課題点など 後半はアーキテクチャ編。プロトコルが変わった上で、その上で動くソフトウェアのアーキテクチャが云々 という内容でした。前半がより技術寄り、後半はテーマ的にもより広範の話題を扱うという感じでどちらも面白かった。 CROSS 2013レポート(2) - mad-pの日記 こちらに細かいログがあります。 話の前提になる SPDY や HTTP/2.0 周りの昨今については 【HTTP 2.0の最新動向】 第1回:HTTP/2.0の策定、ついに始まる - INTERNET Watch Watch 【HTTP 2.0の最新動向】 第2回:HT

    Webはインターネットになった - naoyaのはてなダイアリー
  • 退職 - naoyaのはてなダイアリー

    グリー株式会社を退職しました。昨日が最終出社日でした。 最終日の昨日はちょうど四半期の〆の日ということもあって、開発部全体での納会 (飲み会) の中で盛大に送り出していただきました。いただいた花束が自分の身長の半分もあろうかというくらい大きさで、徒歩で帰宅途中、通行人にまじまじと見られるという、なかなか得難い経験をさせていただきました。 在職期間は一年半とちょっとと短かったのですが、その中でもたくさんのことを経験することができました。iOS / Android のスマートフォン版の立ち上げに始まり、SNSの開発、直近では US に出張したりしつつグローバル化の推進ですとか。何より、入社当時3名だったチームを一年半で 50人強まで拡大させる中、その人事権をまるごと任せてもらえたのは大きかったです。一緒にやっているメンバーには、自分の試行錯誤で振り回してたくさん迷惑をかけました、ごめんなさい

    退職 - naoyaのはてなダイアリー
  • エンジニアの不安と壁 - naoyaのはてなダイアリー

    このところ、KLab×はてな エンジニア応援ブログコンテストというのを開催していまして、エンジニア人生に関するちょっとした小話をブログに書いていただくと、内容によっては、シリコンバレーに行けたり、iPad が貰えるかもしれない。という企画です。「え、ブログ書くだけでシリコンバレー? 」 なかなか太っ腹な企画です。 よい機会なので、宣伝がてら、自分もちょっと、昔話をしてみたいと思います。 振り返ってみると、自分がエンジニアとして経験を積むなかで、「ここが壁だったな」と思うところがぼちぼちありました。それが何で壁に感じたのかといま改めて考えると、いずれも体系的な知識がなかったために、それを乗り越えるための指針がなかったというのが大きかったように思います。 きれいなコードを書くにはどうしたらいいんだろう? 負荷分散って、どうやるんだろう? 溜め込んだデータをうまく活用するには、どうしたらいいんだ

    エンジニアの不安と壁 - naoyaのはてなダイアリー
  • B木 - naoyaのはてなダイアリー

    昨年から続いているアルゴリズムイントロダクション輪講も、早いもので次は18章です。18章のテーマはB木(B Tree, Bツリー) です。B木はマルチウェイ平衡木(多分木による平衡木)で、データベースやファイルシステムなどでも良く使われる重要なデータ構造です。B木は一つの木の頂点にぶら下がる枝の数の下限と上限を設けた上、常に平衡木であることを制約としたデータ構造になります。 輪講の予習がてら、B木を Python で実装してみました。ソースコードを最後に掲載します。以下は B木に関する考察です。 B木がなぜ重要なのか B木が重要なのは、B木(の変種であるB+木*1など)が二次記憶装置上で効率良く操作できるように設計されたデータ構造だからです。データベースを利用するウェブアプリケーションなど、二次記憶(ハードディスク)上の大量のデータを扱うソフトウェアを運用した経験がある方なら、いかにディ

    B木 - naoyaのはてなダイアリー
  • Wavelet Tree - naoyaのはてなダイアリー

    圧縮全文索引の実装などでしばしば利用される Rank/Select 辞書と呼ばれるデータ構造があります。詳しくは参考文献を参照していただくとして、今回は一般の文字列に対して効率的に Rank/Select を可能とするデータ構造である Wavelet Tree (ウェーブレット木) のライブラリを作りました。 http://github.com/naoya/perl-algorithm-wavelettree/tree/master my $wt = Algorithm::WaveletTree->new("abccbbabca"); is $wt->rank(6, 'a'), 2; is $wt->rank(6, 'b'), 3; is $wt->rank(9, 'b'), 4; is $wt->select(0, 'a'), 0; is $wt->select(1, 'a'), 6;

    Wavelet Tree - naoyaのはてなダイアリー
  • WEB+DB PRESS Vol.49 はてなブックマーク構築ノウハウ大公開 - naoyaのはてなダイアリー

    WEB+DB PRESS Vol.49 にて「はてなブックマーク構築ノウハウ大公開」という特集記事を執筆しました。 WEB+DB PRESS Vol.49 作者: arton,桑田誠,角田直行,和田卓人,伊藤直也,西田圭介,岡野原大輔,縣俊貴,大塚知洋,nanto_vi,徳永拓之,山陽平,田中洋一郎,下岡秀幸,ミック,武者晶紀,高林哲,小飼弾,はまちや2,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2009/02/23メディア: 大型購入: 10人 クリック: 373回この商品を含むブログ (45件) を見る 現在サービス中の新しいバージョンのはてなブックマークの開発には9ヶ月の期間を要しました。システムは一から作り直しを行っています。なぜシステムの作り直しを行う必要があったのか、どのような方法/設計でシステム再構築を行ったのか、新システムで利用しているソフト

    WEB+DB PRESS Vol.49 はてなブックマーク構築ノウハウ大公開 - naoyaのはてなダイアリー
  • KOF 2008 の発表資料 - naoyaのはてなダイアリー

    KOF 2008 での発表資料「はてな流大規模データ処理」を以下にアップロードしました。 http://bloghackers.net/~naoya/ppt/081108huge_data.ppt 一部参考文献からの引用 (Introduction to Information Retrieval から Vector space model の図、たつをの ChangeLog から転置インデックスの図) があります。この場を借りて感謝。 環境によってはおそらくフォントの表示がいまいちだと思いますが、ご了承ください。 追記 SlideShare にアップロードしました。 081108huge_data.pptView SlideShare presentation or Upload your own. (tags: linux mysql) 追記: メモリはディスクの 150 倍について

    KOF 2008 の発表資料 - naoyaのはてなダイアリー
  • はてなブックマークの関連エントリー機能開発、PFI さんとの合宿 - naoyaのはてなダイアリー

    はてなブックマークに関連エントリーを配信する機能を追加しました。詳しくは 告知日記で。 この関連エントリーは、株式会社プリファードインフラストラクチャー (以下 PFI) の技術者のみなさんと一緒に開発しました。週末に2泊3日で京都で合宿をしてコア部分を作り、その後京都と東京に分かれてオンラインで連絡を取りながら2週間ほど作り込みをして、今日リリースです。 この合宿では何チームかに分かれて、今回の関連エントリーの機能以外の開発も行っています。その辺の成果はまた後日にリリースできるのではないかと思います。 はてなブックマークの一つの問題として、昔のエントリーがデータベースに埋もれてしまうという点がありました。その問題の解決策としての類似記事抽出、それから検索機能の強化を以前から考えていました。PFI のメンバーのみなさんは情報検索技術のスペシャリストです。アカデミックな研究の成果を製品化を通

    はてなブックマークの関連エントリー機能開発、PFI さんとの合宿 - naoyaのはてなダイアリー
    hamasta
    hamasta 2008/07/15
    中学数学からやり直すか、、、
  • MapReduce - naoyaのはてなダイアリー

    "MapReduce" は Google のバックエンドで利用されている並列計算システムです。検索エンジンのインデックス作成をはじめとする、大規模な入力データに対するバッチ処理を想定して作られたシステムです。 MapReduce の面白いところは、map() と reduce() という二つの関数の組み合わせを定義するだけで、大規模データに対する様々な計算問題を解決することができる点です。 MapReduce の計算モデル map() にはその計算問題のデータとしての key-value ペアが次々に渡ってきます。map() では key-value 値のペアを異なる複数の key-value ペアに変換します。reduce() には、map() で作った key-value ペアを同一の key で束ねたものが順番に渡ってきます。その key-values ペアを任意の形式に変換すること

    MapReduce - naoyaのはてなダイアリー
  • 取締役を退任しました - naoyaのはてなダイアリー

    3月7日を持って、はてなの取締役を退任し、執行役員となりました。正式な肩書きは「執行役員 最高技術責任者 (CTO)」となります。 京都に社を移転するにあたり、数ヶ月前から今後の自分の役割について検討してきました。自分としてはやはり現場で開発の仕事を続けていきたい、また京都まで来たからにはよりそれに集中したいという思いが強くありました。会社全体の指揮を取りながら現場でサービスを作っていくというのを両立するのは、自分の能力では難しいと思い、取締役を退任することとしました。 経営の仕事というのは、自らの働きかけにより会社の中にある個々の力を結集させて、より大きな力へと増幅させることです。自分は、それが取締役に課せられる役割のうち最も重要なものだと思いました。会社全体を見渡しながら個々の力のベクトルがうまく同じ方向を向くように働きかけたり、各チームではカバーされていない隙間があったらそこを支え

    取締役を退任しました - naoyaのはてなダイアリー
    hamasta
    hamasta 2008/03/20
    はてブはもう一段、突き抜けてきそうだなー
  • さくらインターネット移行記#6 移転完了 - naoyaのはてなダイアリー

    さくらインターネットのデータセンターへのシステム引越し作業が、今日完了しました。最初にこの移行記を書いたのが 昨年の1月 でしたので、約 1 年です。今日は恒例の TGIF (Thank God It's Friday の略だそうです。金曜日の夕方はビールを飲みながらスタッフ全員で一週間を振り返ります。) で、1年間おつかれさまと労いの言葉をもらいました。とても嬉しかったです。 よい機会なので、旧サーバールームの写真を撮ってきました。まず一枚目の写真は移転前のものです。(もう少し引いた写真が欲しかったのですが、見つかりませんでした。) このような具合で各ラックにサーバーが詰まっており、また一時期はサーバーがラックに入りきらないため外に棚を作って、そこに固定したりということを行ってなんとか凌いでいました。 これが移転後、ちょうど 30 分ほど前に撮って来た写真です。サーバーはなくなり、残すと

    さくらインターネット移行記#6 移転完了 - naoyaのはてなダイアリー
  • Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー

    UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行

    Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー
  • さくらインターネット移行記#5 久しぶりの移転作業

    だいぶ間が空いてしまいましたが、久しぶりのデータセンター移行記です。 アンテナ、カウンター、検索を移転 完全移行もぼちぼちゴールが見えて来た今日この頃ですが、先日もサーバーの移行作業を行いました。はてなアンテナの巡回システム周り一式、はてなカウンター、はてな検索などをまとめて移行しました。今回の移行も深夜作業。夜の 2:00 に集合して作業開始です。上の写真は僕のメンテナンス時の作業着です。 サーバールームからサーバーを運び出します。台車が大活躍です。 ぎっしりサーバーが詰まっていた旧サーバールームも、だいぶ閑散としてきました。まだ 70 台近くのサーバーが残っていますが、開発機などを除くと残り 40 台程度になりました。年内には全部移行できるのではないかと思います。 アンテナやカウンターともなるとはてなの中では古いサービスなので、使っているハードも古い。移転にあたって古いサーバーはハード

    さくらインターネット移行記#5 久しぶりの移転作業
    hamasta
    hamasta 2007/11/21
    ありそうで無いレポ 参考になる
  • inetd の仕組みを見てみる - naoyaのはてなダイアリー

    inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。 inetd のひとつ面白いところは、inetd でサービス化したいプログラムの標準入力/標準出力がクライアントソケットの入出力に接続されるところです。例えば daytime 相当のサービスを自分で作ろうと思った場合 #!/usr/local/bin/perl # daytime.pl use strict; use warnings; use DateTime; use IO::Handle; STDOUT->autoflush(1); STDOUT->printf( "%s\n", DateTime->now(time_zone => 'Asia/Tokyo') ); と標

    inetd の仕組みを見てみる - naoyaのはてなダイアリー
  • さくらインターネット移行記#4 はてなダイアリー移転 - naoyaのはてなダイアリー

    いきなり失礼しました。はてなのインフラチームの打ち上げは渋谷で焼肉と相場が決まっています。これは前回の打ち上げで行った焼肉屋での一枚。明後日にははてなダイアリーデータセンター移転打ち上げを開く予定です。 ...ということで、昨日ようやく、はてなダイアリーをさくらインターネットのデータセンターへ移転しました。恒例の写真で振り返る移転レポート、はてなダイアリー移転編です。 今回の移転は深夜に行いました。0:00 に会社に集合。移転にあたって一ヶ月くらいかけて準備をしてきたので慌てることもなく、サービス停止時間の 2:00 までわりとマターリ進行でした。僕は id:hideoki と PSP でモンハンしてました。 これは ENERMAX LIBERTY 電源。最近はてなの自作サーバーで愛用している電源です。はてなダイアリーの移転にあたり動いているサーバーを止められるチャンスだったので、これを期

    さくらインターネット移行記#4 はてなダイアリー移転 - naoyaのはてなダイアリー
    hamasta
    hamasta 2007/06/27
    こういうレポは貴重
  • はてなブックマークのコミュニティについて - naoyaのはてなダイアリー

    はてなブックマークからは毎日のようにいままでは知りようがなかったすばらしい記事やニュースを得ています。こうして日記を書いた後にたくさんのフィードバックをいただいています。コメントのないブックマークでも、その一つ一つがとても嬉しい。そこに人がいる、という感じがします。はてなブックマークを作って良かった、と思います。 一方、はてなブックマークでの厳しい一言で人が傷ついたりしているのを見かけます。誰かがちょっと間違ったということを指摘するのに、バカとかアホとか、そんなことを書く必要は当にあるんだろうか、自分の思う正しい回答を丁寧に示すだけでよいのではないか、と思います。 人間の感情なので、色々思うことは止めようがない、とも思います。また一方で、それを外にストレートに出さないよう理性を働かせるのもまた、人間のあり方だと思います。 コメントを見て「身から出た錆だ」と思ったこともあるし、僕自身も自覚

    はてなブックマークのコミュニティについて - naoyaのはてなダイアリー
  • Linux I/O のお話 write 編 - naoyaのはてなダイアリー

    write はページに dirty フラグを立てるだけなので決してユーザープロセスを待たせない って、当にそうなんでしょうか?(否定しているわけではなく、純粋な疑問です。) と質問をもらったので、最近追ったことをここでまとめます。かなり長文です、すいません。また、まだまだ不勉強なので間違っているところもあるかもしれません。ツッコミ大歓迎です。 まず、オライリーのカーネルの 15章 ページキャッシュ 15.3 汚れたページのディスクへの書き込み から引用。 ご存知のように、カーネルは、ブロック型デバイスのデータを含むページをページキャッシュに蓄えています。プロセスが何らかのデータを更新した場合は、必ず対応するページに汚れている印をつけます。すなわち、PG_dirty フラグを設定します。 UNIX システムでは、汚れたページのブロック型デバイスへの書き込みを遅延することができます。この方

    Linux I/O のお話 write 編 - naoyaのはてなダイアリー
    hamasta
    hamasta 2007/05/24
    あとで読む
  • naoyaのはてなダイアリー - Linuxのページキャッシュ

    世間では PHP が、Perl が、と盛り上がっているようですが空気を読まずまたカーネルの話です。今回はページキャッシュについて。 /dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど) - drk7jp で、ディスク上にあったファイルを /dev/shm (tmpfs) に移したら I/O 待ちがなくなって負荷がさがった、ということなんですがおそらくこれは tmpfs に置く必要はないかなと思います。Linux (に限らず他の OS もそうですが) にはディスクの内容を一度読んだらそれはカーネルがキャッシュして、二度目以降はメモリから読む機構 = ページキャッシュがあります。tmpfs にデータを載せることができた、ということは物理メモリの容量に収まるだけのデータサイズかと思うので、放っておけば該当のファイルの内容すべてがメモリ上にキャッシュされて io

    naoyaのはてなダイアリー - Linuxのページキャッシュ
  • 3年前の自分は別人、を他のひとにも当てはめてみる。 - naoyaのはてなダイアリー

    自分の3年前を思い出すとまさに別人であり、5年後のことなんてわかるはずもない、なんてことを以前にもちょっと書きました。 はてなに入社して一年半ぐらいが経ちましたが、技術はもちろんそれ以外にもその間に得た物もの相当大きくてやっぱりその時と比較して今の自分は別人だなあと思います。 これは自分だけじゃなく、周囲を取り巻く人という人すべてがそうであって、そういう風に考えるといろんなものが見えてくる。 僕は近頃「初心者」という言葉の使い方に気をつけるようにしています。 特にウェブアプリケーションを作るなんて話で議論になると「初心者」という単語が良く出てきます。「初心者にもやさしい」とか「初心者でも扱えるように」とか。でも、初心者っていうのは3年後は初心者じゃない。上級者は3年後も上級者だろうけど。そして当に初心者である期間はほんとに短い。だから「初心者にわかりやすい」みたいなところを中心に議論を進

    3年前の自分は別人、を他のひとにも当てはめてみる。 - naoyaのはてなダイアリー
    hamasta
    hamasta 2007/05/20
    人間の細胞が入れ替わるのにどのくらいだたったか、、、
  • マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー

    ちょっと煽り気味のタイトルですが、CPU がマルチコアになり 2個、4個と増えていく中 Linux の負荷の指針になるロードアベレージをどう読むべきか、という話です。気になったところを少し調べたのでそのまとめを。 http://d.hatena.ne.jp/naoya/20070222/1172116665 でも書いたとおり、Linux のロードアベレージは「ロードアベレージは過去1分、5分、15分の間の実行待ちプロセス数の平均数 = 実行したくても他のプロセスが実行中で実行できないプロセスが平均で何個ぐらい存在してるか」を示す値です。ボトルネックが CPU、メモリ、ディスク等々どこにあるかは関係なく、仕事の実行までにどれぐらい待たされているかを示す値なので、システムのスループットを計測する指標の入り口になる値です。 このロードアベレージですが、実装を見るとランキュー(待ち行列)に溜まった

    マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー
    hamasta
    hamasta 2007/05/19
    あとで読む