タグ

ブックマーク / mixiengineer.hatenablog.com (28)

  • いろいろと思ったことなど。 - mixi engineer blog

    こんにちは、仕事するのは好きだけど出勤が大嫌いな森@たんぽぽグループです。 今年の5月頃に社内ブログに書いた文章をまとめなおしてみました。 社歴とか年齢とか経験年数とか 社歴とか年齢とか経験年数とかは飾りで大した意味はありません。 よくわからない仕様があったときに、尋ねると歴史的な経緯を教えてくれるとかあるかもしれません。 聞いたらどんどんドキュメント化しておくといいです。 遠慮しないでね 変だって思ったときに、先輩だから年上だからと遠慮する必要はまったくありません。 というよりも、遠慮することは悪です。 目的はよりよいサービスを作ること。 遠慮することで目的を達成できるのならば遠慮すべきですが、逆に達成を妨げる方向しか働きません。 間違いを認めよう アイデア・プログラム・設計などなどに対する指摘は、個人に対する攻撃と取る人が時々います。 指摘されて間違いを認めることは最初は恥ずかしいで

    いろいろと思ったことなど。 - mixi engineer blog
    takatoshiono
    takatoshiono 2012/10/10
    いろいろと思ったことなど。 - mixi Engineers' Blog http://t.co/fK4s6eC4
  • ミクシィの総合職向け技術研修について - mixi engineer blog

    こんにちは。梅雨ということで達を洗ってさっぱりした技術技術支援グループの高井です。 ちなみに、洗った直後のからは恨みがこもった目で睨まれておりましたが、乾いたらフワフワになりまんざらでもなさそうです。 今回はミクシィで12年度新卒の総合職向けに実施した技術研修についてご紹介します。新卒のエンジニア職向け技術研修については前回書いた記事にてご紹介していますのでそちらをご参照下さい。 大事なこと 総合職向け技術研修のコンセプトは Web業界で働くための基礎教育 です。 このコンセプトを考えるに至るまでに以下3点の課題がありました。 職種の幅が広い Webサービスの基礎が漠然としている 「ミクシィでしか使えないこと」の教育は最小限に抑える 各課題を細かく見ていきます。 職種の幅が広い ミクシィで言うところの総合職とはミクシィのサービス企画や広告企画を考えたり、広告商品周りのセールスプランナ

    ミクシィの総合職向け技術研修について - mixi engineer blog
  • mixiのコードレビューについてご紹介 - mixi engineer blog

    こんにちは技術部たんぽぽグループのmasartzです。でも今日はコードレビューアのmasartzとしてお送りします。 mixiの開発フローにはコードレビューという工程が含まれています。 今回はこの工程を行うコードレビューアな人々と、その業務内容、今後(の予定)などをお話しようと思います。 コードレビュー業務 mixiのサービスがスタートしたのは2004年2月の事ですが、コードレビュー業務が始まった正確な日時は残念ながらわかりません。 レビューツールもemailのやりとり->Tracのチケット->JIRAチケットと変遷があるため、最古のものをトラッキングできないのですが、おそらく5年以上前から様々な変遷を経て、今に至ります。 開発者が増えると、開発されるコード量も増えます。つまりレビューする量が増えるため、コードレビューアも増加します。 そんなこんなで現在ではアプリ開発者に対して、コードレビ

    mixiのコードレビューについてご紹介 - mixi engineer blog
  • mixi の年末年始対策 2009-2010 - mixi engineer blog

    こんにちは。パートナーサービス部の加藤和良です。 2008年末に、mixi の年末年始対策について紹介しました。今回は、ここ数年の年末年始対策の歩みと、今年の対策について紹介したいと思います。実をいうと、設計も実装も自分じゃなかったりするのですが、このまま歴史に埋もれていくのも悲しいので、関係各所に取材してみました。 2008年末をふりかえる まずは、2008年末をふりかえってみましょう。 あのころはまだ mixi の機能も少なく、年末年始の負荷は主に日記に集中していました。そこで当時は ID Generator の改善 - mod_perl をあいだにはさんで MySQL への接続数を減らす 最新情報DBへの書き込みを非同期に - Q4M をつかって負荷を時間軸で分散する という2つを日記に実装したのでした。 しかし、2008年末から2009年のお正月にかけて、mixi はまたも日記に

    mixi の年末年始対策 2009-2010 - mixi engineer blog
  • YAPC::Asia Tokyo 2010 - mixi engineer blog

    実はJapan Perl Association略してJPAの理事だったりするmilanoです。 こんにちは。 さて、Perlと言えば、10/15,16に年に1度の祭典YAPC::Asia Tokyo 2010が行われました。 改めて紹介させていただきますと、YAPC::Asiaというのはmixiでも使われているプログラム言語Perlのカンファレンスです。 Perlを使っている、Perlを愛している人たちが一堂に会し、発表したい人が自由に発表する、そんなイベントです。 今年はミクシィから4人がスピーカーとして発表しました。 そして2名がボランティアとして運営に関わっていました。 イベント終了後時間が経ってしまいましたが、それぞれの発表について、発表者自らの紹介とともに、ブログエントリや発表資料をまとめていきたいと思います。 Inside Mixi by hiroki システム技術部たん

    YAPC::Asia Tokyo 2010 - mixi engineer blog
  • mixi大規模障害について 解明編 - mixi engineer blog

    こんにちは、システム技術部たんぽぽGの森です。 先日のmixi大規模障害の原因となったmemcachedの不具合の詳細な解明ができました。 再来週まで発表を見合わせようと思ったのですが、早くお伝えしたほうがいいと思いましたので公開発表致します。 memcachedとlibevent memcachedはlibeventというライブラリを使用してクライアントからの要求(接続、コマンド送信)を処理しています。 libeventを使用するにはevent_baseという構造体を用います。 main threadはmain_baseを使用します。 static struct event_base *main_base; ... int main (int argc, char **argv) { ... main_base = event_init(); ... /* enter the ev

    mixi大規模障害について 解明編 - mixi engineer blog
  • mixi大規模障害について その2 - mixi engineer blog

    こんにちは。システム技術部たんぽぽGの森です 補足を追記しました (2010/08/20 15時) 先日のmixi大規模障害についての続報です 今回は小ネタはありません はじめに まず初めにtwitter/blogなどを通じて今回の問題の解析を行っていただいたみなさんに感謝の言葉を捧げたいと思います kzk_moverさん stanakaさん mala(bulkneets)さん llameradaさん (順不同) ありがとうございました 書き漏らした人ごめんなさい memcachedはすごい 今回の件でmemcachedに対して不安感を持たれた方もおられるとお聞きしました 説明不足だったせいで誤解を与えてしまい申し訳ありません きちんと設定および監視を行っていれば通常の使用にはまったく問題はありません 弊社にて -c 30万で起動したmemcachedに対して、先のテストスクリプトに

    mixi大規模障害について その2 - mixi engineer blog
  • mixi大規模障害について - mixi engineer blog

    こんにちは。システム技術部たんぽぽGの森です 先日のmixi大規模障害についてのブログです。 はじめにお断りしておきますが、弊社CTOがtwitterで公開した以上の情報はまだ得られておりません。 twitterでは書ききれなかった細部を補足してみたいと思います 現状判明しているのは以下の点です memcachedに大量の接続・切断を行うとmemcachedプロセスが突然終了することがある memcachedには異常時に終了するフローもあるが、同時に出力されるはずのエラーログは出ていなかった coreも出力されていなかった テスト環境にて追試を行ったところ、なんどか再現させることができましたが、確実に発生する条件は未だ不明です。 障害時の memcachedのバージョンは1.4.4, libeventのバージョンは1.3bです memcached の起動オプションは以下のとおり ./

    mixi大規模障害について - mixi engineer blog
  • いまからでも間に合う開発者テスト - mixi engineer blog

    はじめまして。開発部じゃない加藤和良です。 最近、mixi では Buildbot をつかった継続的インテグレーションをはじめています。安定版の mixi のソースコードにコミットすると Buildbot がそれを検知し、自動的にテストが走るようになりました。 ここでの「テスト」は Test::Simple や prove(1) をつかった、Perl でかかれた開発者テストを指しています。mixi の開発者テストをとりまく環境は、ここ数年でかなり改善されました。今回はその歩みをふりかえりながら、テストの無いコードベースをどこからどうやって変えていったかという話をしたいと思います。 開発環境 はじめに、前提となる mixi の開発環境について説明します。mixi では複数人の開発者がひとつのマシンで作業を行います。それぞれの開発者は、あらかじめ割り当てられたポートで Apache を起動し、

    いまからでも間に合う開発者テスト - mixi engineer blog
  • mixi Engineers’ Blog » OpenSSLの暗号文をJava/Perl/Rubyで開く

    秘密鍵やプライベートな情報などを秘匿するためにパスワードでデータを暗号化・復号したい場合があります。このとき、暗号化と復号するアプリケーションが同じであれば簡単ですが、例えばCで暗号化してJavaPerlRubyで復号するといった風に異なるプラットフォームで暗号データをやりとりする場合には、いくつか気 をつけなければいけないポイントがあります。 OpenSSLによる暗号化 OpenSSLはWebサーバのSSL/TLSサポートに利用されますが、その他にも付属しているopensslコマンドから基的な暗号アルゴリズムを利用できます。次のような簡単なコマンドで、パスワードを使ってデータを暗号化したり復号したりすることができます: $ echo 'Hello World!' | openssl enc -e -aes-128-cbc > cipher.txt enter aes-128-cbc

    mixi Engineers’ Blog » OpenSSLの暗号文をJava/Perl/Rubyで開く
  • YAPC::Asia 2009で大規模画像配信とPerlについて発表しました - mixi engineer blog

    開発部・システム運用グループの長野です。9月10日・11日に東工大大岡山キャンパスで開催されたPerlのカンファレンス、YAPC::Asia 2009に参加してきました。 昨年は2つのセッションをやらせて頂きましたが、今年は1つだけ発表をしましたので、資料を公開します 大規模画像配信とPerl SlideShareで公開しています。 大規模画像配信とPerl View more documents from kazeburo. 一部アニメーションを利用していますので、PowerPointもあわせて参照してください。 mixiの画像配信については、このブログや技術評論社様の雑誌等を通して何度か紹介していますが、今回は携帯向けの画像配信、特に画像の動的変換について取り上げました。 画像を扱うライブラリはいくつも種類があり、変換速度や変換後の画像に違いがあります、今回の発表ではその比較もしていま

    YAPC::Asia 2009で大規模画像配信とPerlについて発表しました - mixi engineer blog
  • PerlとRubyで省メモリなハッシュを使おう - mixi engineer blog

    サボっていた早朝ジョギング@駒沢公園を再開して2週間たち、やっと抜かれる数より抜く数の方が増えてきたmikioです。今回は、PerlRubyのハッシュの代用としてTokyo Cabinetを使うことでメモリ使用量を激減させられることを説明します。 抽象データベースAPI Tokyo Cabinetには抽象データベースという機構があり、先日、そのPerlRubyのバインディングをリリースしました。それを使うと、各種言語のハッシュとほぼ同じような共通したインターフェイスで、以下のデータ構造を利用することができます。 オンメモリハッシュ:各種言語に標準のハッシュと同じく、メモリ上でkey/valueの関係を表現する。 オンメモリツリー:メモリ上の二分探索木としてkey/valueの関係を表現する。 ファイルハッシュ:いわゆるDBMとして、ファイル上でkey/valueの関係を表現する。 ファ

    PerlとRubyで省メモリなハッシュを使おう - mixi engineer blog
  • Pure JavaScript Template Engine - mixi engineer blog

    はじめましてhirokiです。こんにちは。新卒で弊社に入って一年が経過しようとしているので、そろそろエンジニアブロガーの仲間入りをしてみようかと思っています。 今回はJavaScriptのお話です。ハードボイルドなバックエンド側技術のご紹介が多い当ブログですが、スイーツ(笑)なフロントエンド技術おもしろいんだよ!ということをアピってやろうという魂胆です><。 HTML.Template(JavaScript) 弊社では、サーバサイドによるHTMLの出力テンプレートエンジンにCPANモジュールであるHTML::Template::Proを使用しています。今回はそのJavaScript実装をオープンソースとして開発しましたので、紹介をさせていただきます。 HTML::Templateは貧弱で、冗長で、洗練されていないシンタックスでお馴染みのテンプレートエンジンですが、高速で必要以上のロジック

    Pure JavaScript Template Engine - mixi engineer blog
  • MySQLに対するDrizzleの答え #1 スレッド管理編 - mixi engineer blog

    先日、Drizzleのスレッド管理を担うコアの一部分がモジュール化され、勉強がてらMySQLのスレッド管理の設計を調べてみました。その時のメモ(だから文が少し固いかも)と、Drizzleでの戦略を今回のエントリーで公開します。 最後のDrizzleでは?セクションまではプログラミングの教科書に載っている様な典型的なセオリを述べているだけなので、MySQLのインターナルに詳しい方は最後まで飛ばした方が良いかもしれません。 ちなみにソースはMySQL 5.1とMySQL 6.0のドキュメントです http://dev.mysql.com/doc/refman/6.0/en/connection-threads.html http://dev.mysql.com/doc/refman/5.1/en/connection-threads.html 現在の仕組みと制限 現在のMySQLでは新たなクラ

    MySQLに対するDrizzleの答え #1 スレッド管理編 - mixi engineer blog
  • ロングテールな画像配信 その2 - 3,000万の画像を配信するシステム - mixi engineer blog

    Squidを検索する度に最初に表示される画像検索の結果に吹き出しそうになる開発部・システム運用グループの長野です。前回のロングテールな画像配信のその2ということで、実際の画像配信システムについて書かせて頂きます。 ■プロフィール画像の配信について 前回紹介しましたが、mixiにおいてプロフィール写真を設定を設定しているユーザ数は全体の約70%、1,000万人の方が設定をされています。現在配信をしているプロフィール画像のサイズは180x180、76x76、40x40と3サイズあり、合計3,000万以上のファイル数になっています。また、もっともよく使われる76x76のサイズ1,000万件において、1日にアクセスされる画像の数は800万ファイル以上、うち97%が30回以下と非常に広範囲に渡ってアクセスされています。そのため大量の画像を配信できる仕組みが必要になります。 ■配信システムの全体像 プ

    ロングテールな画像配信 その2 - 3,000万の画像を配信するシステム - mixi engineer blog
  • mixi Engineers’ Blog » かんたん友人検索 その壱

    朝7時30分に起きて駒沢公園をジョギングすること10日目のmikioです。だいぶ体が軽くなってきて、そろそろ体型にも変化が出てくるかなと期待する毎日です。さて、以前の記事で予告した通り、Tokyo Dystopiaを使ったmixi内の検索機能をインディーズ機能としてリリースしました。「かんたん友人検索」という名のとおり、mixiの登録ユーザを対象として友人や知人を簡単に検索する機能です。操作を簡潔にしながらも、マイミクシィのつながりなどを使って検索精度を高めているのが特徴です。 シンプルにした 見た目として最も大きな特徴は、従来の友人検索よりも入力フィールドの数を減らしたことです。従来では「姓」「名」「ニックネーム」「性別」「年齢(下限)」「年齢(上限)」「血液型」「現住所(都道府県)」「現住所(市区町村)」「出身地(都道府県)」「出身地(市区町村)」「趣味」「職業」「キーワード」「写真」

    mixi Engineers’ Blog » かんたん友人検索 その壱
  • mixi Engineers’ Blog » 期間限定の新機能「エコー」登場

    こんにちは。mixi開発部のyouheiです。 今回は先日8月4日にリリースした「エコー」について書きたいと思います。 エコーとは まずはエコーとはどういう機能かのご紹介ですが、プロモーションページがございますのでそちらをご覧いただければ幸いでございます。 http://mixi.jp/guide_echo.pl いくつか抜粋しますと、 あなたの"今"を一言にしてみませんか?誰かに伝えたいこと、ひとりごと等、何でもOK! 気軽な新コミュニケーション機能です。 たとえば、「今日はいい天気だな〜」という、ひとりごとから、「お腹すいたー!誰かランチにいこうよ!」というメッセージ的な使い方まで、「エコー」の楽しみ方はあなた次第! マイミクシィ同士で「エコー」を使うとホームにお互いの書きこみが表示されます。 気になった書きこみには、返信することもできちゃいます。あなたがふと書きこんだ一言に、思わぬ返

    mixi Engineers’ Blog » 期間限定の新機能「エコー」登場
  • Tokyo Dystopiaの設計思想 - mixi engineer blog

    番に向けて海に行ける体作りに励まないといかんなーと思いつつも、ついついDSのスターフォックスで遊んでしまうmikioです。さて今回は、人知れずリリースされている検索エンジンTokyo Dystopiaの概要と設計思想について述べます。 Hyper Estraierとの違い Tokyo Dystopia(以下、TDと呼びます)は、新しい検索エンジンです。しかし、私が作ったもう一つの検索エンジンHyper Estraier(以下、HEと呼びます)の後継としては位置付けていません。 Hyper Estraierの製品コンセプトは、「検索システムの需要が生じる様々なシーンで手軽に導入できる」ことです。言い換えれば、「いわゆるシロウトの人でも、お高い商用システムを買えない個人や小組織でも、ちょっとの努力で自分の要求を満たすシステムを構築できる」ことです。そのために、様々なファイル形式に対応したテ

    Tokyo Dystopiaの設計思想 - mixi engineer blog
  • memcached Users Group :: Japanを立ち上げました。 - mixi engineer blog

    memcachedの生みの親であるBradから了解を得た上で先日、memcached Users Group :: Japanというコミュニティを立ち上げました。 http://memcached.jp コミュニティに関して 目的は国内におけるmemcachedの普及と技術界隈の人たちが集まり、スケールに関する様々な情報が集まる場を形成する事です。ウェブパフォーマンスの向上に関わっている人たちに限らず、初心者の人たちも大歓迎です。 それと英語メーリングリストでは聞きにくい質問を気楽にしていただけたらな、と思います。 コミュニティの運営は運用面やその他もろもろを考えた結果、Google Groupsを使って行なう事にしました。ですから、memcached.jp自体はウェブページを一枚しか配信していません。 グループへの参加は以下のURLで行なえます: http://groups.google

    memcached Users Group :: Japanを立ち上げました。 - mixi engineer blog
  • DBMによるデータベースサーバ - mixi engineer blog

    DSのスターフォックスというゲームにはまりまくりのmikioです。最近社内外で「俺ストレージサーバ」を作るのが流行っているようなので私も参戦してみました。今回はDBMのネットワーク層をほぼスクラッチで作った話をします。 Tokyo Tyrant Tokyo Tyrant(以下TT)はTokyo Cabinet(以下TC)をラップしてネットワーク越しに操作できるようにするツールです。キャビネット(内閣)を傀儡にするタイラント(僭主)ということで名付けました。ダウンロードはこちら。 TCは高性能なDBMで、マルチスレッドモデルで高い並列性を実現していますが、逆にマルチプロセスモデルだとファイルロックがかかるので並列性が低くなってしまいます。つまり、書き込みモードでデータベースにアクセスしているプロセスがいると、その間は他のプロセスがデータベースに接続しようとするとブロックされることになります。

    DBMによるデータベースサーバ - mixi engineer blog