タグ

ブックマーク / wazanova.jp (77)

  • Node.js: npmのクラウドファンディングとビジネスモデル - ワザノバ | wazanova

    http://thechangelog.com/113/ npmのクリエーターでNode.jsのリーダーを務めるIssac SchlueterとNodejitsuのCEOのCharlie Robbinsがnpmのサービス維持 & 改善のためのクラウドファンディングをはじめた経緯をChangelogpodcastで語っています。 きっかけとしては、11月に何度かnpmの障害が起きたこと。その原因と改善策はNode.jsのブログで詳細説明されていますが、背景としては、ここ1年でトラフィックが、 Request served: 614,680,691 (Oct. 2013) Package Download: 114,626,717 (Oct. 2013) と7〜8倍になっていて、結論としては、下記の対策をとることに。 CouchDBのマスターを複数台に www.npmjs.orgとreg

  • Walmart: 大企業のNode.js利用を成功させるポイント - ワザノバ | wazanova

    http://www.joyent.com/developers/videos/billion-dollar-question-palo-alto 世界最大の小売業としてWalmartの数字はかなり驚くべき規模です。従業員数210万人。雇用主としては、米国国防総省、中国軍に次いで世界3番目。米国における料品販売の40%を占め、毎月1.4億人が店舗を訪問してます。 昨日投稿した「Node.js: npmのクラウドファンディングとビジネスモデル」で少し触れたように、この巨大なWalmartが、番サービスでどのようにNode.jsを利用できるのかを、同社のEran Hammerが紹介しています。 1) レガシーシステムと新しいシステムの統合 モバイルで新しいシステムを導入する場合、レガシーシステムを丸ごと入れ替えようとして失敗する企業も多いが、Walmartでは、Node.jsをレガシーシス

  • Githubの組織が成長する過程で変えたことと変えなかったこと - ワザノバ | wazanova

    GithubのZach Holmanが語るGithubの組織戦略です。まず最初に、 Step #1: ロックスターエンジニアを雇う Step #2: ものすごく透明性のある経営をする Step #3: ブログ/ソーシャルメディアなどでテクノノロジーについて発信する Step #4: カンファレンスで会社について話す Step #5: カネに余裕ができる Step #6: 社員を大勢雇う Step #7: 会社のことを話さなくなる Step #8: コミュニティを無視する Step #9: 創業者が株を売って儲ける Step #10: 別の会社をはじめる という事例を挙げて、Githubは組織が成長する中で、このようなパターンに陥らないように、コミュニケーション及び仕事の進め方をどのように進化させてきたかについて紹介してます。 Dunbar's numberとしてよく知られるとおり、人間が良

  • MailGun: Pythonのメアド/MIMEパーサライブラリをオープンソースで提供 - ワザノバ | wazanova.jp

    http://blog.mailgun.com/post/we-just-open-sourced-flanker-our-python-email-address-and-mime-parsing-library/ MailGunは、2012年にRackspaceが買収したYcombinator出身の会社で、開発者向けにメール送信API & サービスを提供しています。7月にメアドバリデーションAPIであるGuardpostをオープンソース化したのに続いて、今回は、Pythonベースのメアド/MIMEパーサライブラリであるFlankerを発表しています。 1) mime Pythonの標準パーサライブラリは、小さなメッセージには早いが、大きくなると問題になるので、Flankerをつくることにした。一番のポイントはヘッダーのパース。Flankerはメッセージ全体でなく、ヘッダーのみをパースす

  • [その2] RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/30/generational-gc-in-python-and-ruby 前回のエントリーはこちら。 ブタペストで開催されたRUPY2013でのPat Shaughnessyのプレゼンの後半です。RubyPythonのガベージコレクタの違いを、今回は、Pythonの循環データ構造への対応とRuby 2.1の世代別ガベージコレクタの話題に触れながら、紹介しています。 1) Pythonの循環データ構造と参照カウント Pythonは、いくつのポインタがそのオブジェクトを参照しているかを、参照カウントと呼ばれる整数で管理している。変数もしくはオブジェクトが、そのオブジェクトを参照しはじめれば数字が増えて、プログラムがそのオブジェクトを使うのをやめれば数字が減る仕組み。 1960年代以来、コンピュータ科学者が気づいているアルゴ

  • AngularJSで苦労したポイントの事例 - ワザノバ | wazanova.jp

    http://lhorie.blogspot.ca/2013/09/things-that-suck-in-angularjs.html AngularJSの盛り上がりは何回か取り上げてきた(このポストの最後にリンクあります。)ので、今日は、改善すべき点を指摘しているブログとその議論を紹介します。 (New frameworks) are great at getting you to about 80% of what you need REALLY fast. The next 10% takes some investigation but its doable. But that last 10%,……You’re working for the framework rather than it working for you. というコメントがあるように、まだ苦労するところはある

  • AngularJSのサンプルアプリ - ワザノバ | wazanova.jp

    http://weblogs.asp.net/dwahlin/archive/2013/10/25/learning-angularjs-by-example-the-customer-manager-application.aspx Dan Wahlinがブログの一連のポストで、AngularJSについてまとめています。AngularJSがはじめての方は、まずこちらの1時間+のビデオを見てからのほうがわかりやすいと思います。そのビデオの最後にも少しでてくるサンプルアプリについてまとめてみした。 [Customer Managementサンプルアプリの画面] 1) 主要機能 AngularJSの全ての機能を網羅してはいないが、下記のポイントを含んでいる。 factoryと再利用可能なデータservice(app/servicesフォルダ参照) カスタムdirective (app/dire

  • AngularJSの設計思想 [Google I/O 2013] - ワザノバ | wazanova.jp

    [Video] https://www.youtube.com/watch?v=HCR7i5F5L8c AngularJSのHype (盛り上がり感)があるようなので、GoogleのMisko HeveryとBrad GreenがGoogle I/O 2013でAngularJSの設計思想について語っているのを紹介します。 アプリ開発は、雛形構文(ボイラープレート)を利用しながらデータをブラウザとDBの間でやりとりさせるのが中心で、気づいてみると同じ雛形構文を書く作業をかなり繰り返している。コードを書いてる時間よりもコードを読んでいる方に時間がとられることも多い。この雛形構文を使った作業を極力減らして、アプリに付加価値をもたらすコーディング作業だけを抽出したいと思った。 コーディング作業が効率的になる構造が欲しかった。 フレームワークにテストを組み込むが、フレームワーク自身をきっちりテスト

  • AngularJSの始め方 - ワザノバ | wazanova.jp

    https://coderwall.com/p/3qclqg 新しいテクノロジーを使ってみようかなと思ったときに、使うことによるメリットと習得するのにかかる時間コストを天秤にかけて判断できるとうれしいので、「要はこのテクノロジーどうなのよ?」を簡潔に知りたいですよね。そういう意味で、AngularJS (jQueryと比較したHello Worldビデオはこちら) で10ヶ月開発したエンジニアが「AngerJSはすばらしい。けど、はじめるのは易しいけど肝を理解するまではかなり大変」と言ってくれてます。 その覚悟ができた方のために、AngularJSを効率よくマスターするためのリソース集が紹介されてます。 ビデオ: Egghead.io  : The Mastering Web Application Development with AngularJS AngularJS CRUD Ap

  • Twitter: 大きなトラフィックに耐えうるアーキテクチャーへの変更 - ワザノバ | wazanova.jp

    https://blog.twitter.com/2013/new-tweets-per-second-record-and-how 少し前、8月のTwitterエンジニアブログのエントリーですが、アーキテクチャー変更について触れているポストなので、取り上げてみます。 1) 背景 2010年のワールドカップ時点でのトラフィックがさばききれなかった時点での状況は、 200人のエンジニアが、単一のRailsのコードベースで大量のユーザとトラフィックに対応する構造であった。 MySQLのストレージシステムは、一つのマスタと一時的にシャーディングされるスレーブの構成で、読込み/書込みともにスループットの限界にきている箇所がでていた。 フロントエンドRubyマシンは期待通りのトラフィックをさばけていなかったが、技術的な解決ではなく、サーバの追加でしのいでいた。 コードベースは、可読性とパフォーマン

  • AngularJSのチューニング - ワザノバ | wazanova.jp

    http://blog.scalyr.com/2013/10/31/angularjs-1200ms-to-35ms/ モニタリング/ログ分析ツールのScalyrがそのブログで、AngularJSをチューニングしてページの更新時間を短縮した事例を紹介してます。成果は近日中にオープンソースとして提供される予定です。 1) 背景 Scalyr Logsアプリにおいて、DBクエリは数十 msで処理できるが、ページの読み込み時間で数秒かかってしまう状況であった。シングルページアプリを実現するためのフレームワークとしてAngularJSを採用。”fail fast” (失敗するなら早めに)の方針のもと、難易度の高いログビューからつくることにした。 Scalyr Logsのページに表示されたログデータのどの単語をクリックしても、その検索結果を表示。(サンプル画面 / デモ画面)次ページのログデータも事

  • Airbnb: シングルページアプリを実現するハイブリッドアプローチの課題 - ワザノバ | wazanova.jp

    http://nerds.airbnb.com/isomorphic-javascript-future-web-apps/ Airbnbがエンジニアブログで、シングルページアプリを実現するテクノロジーの変遷と、これからの課題を語っています。 1) 背景 シングルページアプリをクライアントサイドMVC [参考図] で実現しようとすると、SEO/パフォーマンス/メンテナンス性(どうしてもサーバ/クライアントでコードの重複がでるようになる。)の問題がでるが、クライアント+サーバMVC [参考図] のハイブリッドアプローチを採用することでそれを解決しようとする動きが続いている。 ハイブリッドアプローチは、2011年にNodejitsuが”Isomorphic JavaScript Architecture”を発表してるので、考え方として新しいものではないが、実際のソリューションが浸透するまでは時

  • Facebook: ペタバイトのデータに対応した分散クエリエンジンをオープンソースで提供 - ワザノバ | wazanova.jp

    https://www.facebook.com/notes/facebook-engineering/presto-interacting-with-petabytes-of-data-at-facebook/10151786197628920 Facebookがエンジニアブログで、ペタバイト級のデータを効率よくクエリするエンジンPrestoを紹介しています。 1) Background Facebookは世界有数の300ペタバイトのデータウェアハウスをもち、そのデータはバッチ処理、ソーシャルグラフ分析、機械学習、リアルタイムインタラクティブ分析など様々な用途に使われている。 そのデータは、いくつかの大きなHadoop/HDFSベースのクラスターにある。Hadoop/MapReduce/Hiveは、大規模で信頼性の高い計算処理、全体システムスループット最適化という特性がある。しかし、ペタ

  • Pinterest: geventでコードベースをマルチスレッドに - ワザノバ | wazanova.jp

    http://engineering.pinterest.com/post/65713073803/how-we-use-gevent-to-go-fast Pinterestエンジニアブログで、Pythonの数十万行のシングルスレッドのコードベースをgeventを利用してマルチスレッドにした経験を紹介しています。 1) Lessons from the early days シングルスレッドのコードベースでサイトの急成長に対処していくうちに、 機能が増えるにつれてサーバが増えた。 バックエンドのサーバが増えたら、障害や遅延のリスクが増した。 コードにロジックが増えたので、network IOなど並列処理をしたかったが、シングルスレッドサーバが足かせになった。 2) Building high performance servers 並列処理サーバを実現するための解がgeventであった

  • PythonプログラマがGo言語を使った感想 - ワザノバ | wazanova.jp

    https://medium.com/p/3228b624c946 PythonプログラマのBrett CannonがプライベートのプロジェクトGo言語を使ってバックエンドを開発してみた感想をシェアしてます。 Go言語のポイントは生産性をあげるためにある程度のコントロールを諦めることにあるが、C++支持派は、そのコントロールを諦めたくないので、Go言語には移らない。しかし、Python/Rubyの開発者は、生産性のためにローレベルのコントロールを諦めることに慣れてるので、ローレベルのスピードを上げるために、ハイレベルのconstructを諦めることは気にしないのではないか。 個人的には、トレードオフというのは好きでないので、Pythonを使う選択肢があるときは、スピードを優先するためにPythonを諦めてその柔軟性に頼れなくなる前に、PyPyとの比較をしたいころ。とはいえ、Go言語にもア

  • Quora: 新しい社員の迎え方について - ワザノバ | wazanova.jp

    http://www.quora.com/Quora-company/What-is-the-on-boarding-process-for-new-engineers-at-Quora スタートアップだと新しい社員を採用したときに、面接までで手一杯で、受け入れ態勢を当日までに用意するのが大変だったりします。「xxさんは今週から入社じゃない?」と気づき、大慌てでPCやソフトの準備をすることもままありました。そして間に合わないという失態もしました。。 数年前の話しですが、Quoraはまだ創業間もないのに、新しい社員を迎え入れる体制がしっかりしていて、エンジニアは、ロゴ入りグッズもらって、hardware/softwareは当然揃っていて、ウェルカムランチをへて、必ず初日に番アップまで経験できるような仕組みになってたと記憶してます。事業の成功を担保するためのせっかくの新戦力なので、優先順位は

  • 関数型プログラミング言語のまとめ - ワザノバ | wazanova.jp

    http://funceng.com/2013/11/03/review-of-functional-languages/ Kevin Buellがブログの一連のエントリーで関数型プログラミング言語の概要をまとめています。 1) Haskell ラテン語がわかる人には親しみやすい。 [Background] 遅延評価の研究成果をとりまとめる委員会が1990年にHaskell 1.0の仕様をつくった。コンパイラはGlasgow Haskell Compiler (GHC)が最も有名。Haskellに関する研究はMicrosoft Researchで盛ん。.NETのための関数型言語であるF#もMicrosoft Researchの成果であるが、別の研究者グループの手により後年世にでてきた。 その他の項目は原文参照ください。 [Comparative Description] [Syntax H

  • ダブルMVCの意味するところ [GoGaRuCo 2013] - ワザノバ | wazanova.jp

    [Video] http://www.youtube.com/watch?v=s1dhXamEAKQ TildのYehuda KatzのGolden Gate Ruby Conference 2013での講演。 Ruby on RailsのクリエーターであるDavid Heinemeier Hanssonが、「JavaScript勢はダブルMVCで苦しんでいる。サーバとクライアント両方にMVCが必要で複雑すぎる。」とTwitterで発言したのに対して、Yehudaは、それでは誤解を与えると危惧し、GUIプログラミングが歴史的にどのようにMVCに発展してきたかを紹介することで、ダブルMVCが当に意味するところを解説しています。 DHHの発言は、盛り上がってきたMeteor / Node.js勢に対する単なる批判っぽいですが、それに対してYehudaはロジカルに話をまとめてます。 スライドを

  • Groupon: 単一のRailsアプリから複数のNode.jsアプリへの移行 - ワザノバ | wazanova.jp

    https://engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/ Grouponのビジネス自体はかつての盛り上がりはないですが、シンプルなRailsアプリが、事業の成長 & グローバル化に従って、アーキテクチャを変えていった過程をエンジニアブログで紹介してるので、参考になればと。 1) まとめ Grouponは、Railsのシングルコードベースを独立した20個のNode.jsアプリにアーキテクチャを変更した。 ページの読み込み時間が概ね50%改善。これはテクノロジーの効果とコードの書き直しでwebページが軽くなったのとの相乗効果。 同じトラッフィクに対してハードウェアが削減できた。 チーム間の依存関係が少なくなったので、新機能リリースのペースが早くなった 同じ機能を複数の国にそれぞれ導入するような冗長さが

  • Rails: Concurrencyで遭遇する問題と解決策 [RMR 2013] - ワザノバ | wazanova.jp

    [Video] http://www.youtube.com/watch?v=TV5LEjN6d1U [Slide] http://203.softover.com/concur/rency/#/ Eugene KalenkovichがRocky Mountain Ruby 2013で、Concurrencyをテーマに講演しています。ユーモアがある楽しいプレゼンなので是非ビデオ(36分)を見てください。英語はなまりがきつくて聞き取りづらいですが、以下のメモ & スライドをざっと確認してから見ると内容はわかりやすいかと。 シングルスレッドでも、トラフィックが少なくても、Concurrencyを正しく理解していないとRailsではシアトルのモノレール事故のようになる可能性はある。 Concurrencyの問題がでるのは、開発中ではなくて、番環境でサービスを開始した後。複数のプロセスが同じデー