タグ

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

  • Erlang: WhatsAppを支える技術 (その1) - ワザノバ | wazanova.jp

    [Video] http://vimeo.com/44312354#at=0 [Slide] http://www.erlang-factory.com/upload/presentations/558/efsf2012-whatsapp-scaling.pdf WhatsAppは日でいうところのLineにあたるサービスでしょうか。このニュースによると、WhatsApp: 月間UU3億、WeChat: 月間UU2.3億、Skype: 月間UU2.8億、Line: 登録2億 (UUは発表しないんですね。。) ということですから、相当でかいですね。 昨年になりますが、Rick Reed (WhatsApp <- Yahoo! <- SGI)が、同サービスを支える、数百万ユーザの同時接続システムについて、SanFranciscoのErlangのカンファレンスで語ってます。 メッセージのトラフィ

  • React Nativeがスマホアプリのフロント開発を変えるのか - ワザノバ | wazanova

    Reactは当初、「Huge step backwards(これではメンテできなくて、かえって大きく後退してしまっている。)」「Rethink established best practives(皆が積み上げてきたベストプラクティスを変えようとしている。)」と揶揄されたりもしましたが、最近は他のJavaScriptフレームワークにもその思想の一部が反映されるようになって、メインストリームに近づきつつあるようです。 さて今回Facebookが、React Nativeを発表 & オープンソースとして公開して話題になっていますが、Tom Occhinoは React.js Conf 2015のキーノートスピーチで、「一度書けば、どのプラットフォームでもうまく動作する。」ではなく、「一度覚えれば、どのプラットフォーム向けにも書けるようになる。」ものであることを強調しています。 同社の開発メンバ

  • Java: 本番環境でのデバッグスキルを磨く - ワザノバ | wazanova

    https://www.youtube.com/watch?v=7KS4L-mA_-c 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 Takipi のFounderであるTalWeissのSan Francisco Java User Groupミートアップでの講演。番環境で役に立つデバッグテクニックの紹介です。 1. スレッド名の活用 スレッド名はmutable(EJB除く)である。コードのコンテキストにあわせて、Thread.currentThread().setName(Context, TID, Params, Time,...);のようにすれば、トランザクションID、Serveletパラメータ、キューメッセージID、起動時間など、スタックトレースに役に立つ情報を表示できるようになる。 J

  • Ember.jsのサーバサイドレンダリングと強運の話 - ワザノバ | wazanova

    Ember.jsを率いて、積極的な発言もあり、今やJavaScriptフレームワークの世界では主要人物となったTom Daleですが、成功する人は、それを掴める強運の持ち主でもあります。 自分は当にラッキーだった。だから人にアドバイス頼まれても再現が難しい話なんだけど。大学ではコンピュータサイエンスの学位は取ろうとしたんだけど、純粋数学は難しすぎて単位が取れなくて。その後はApple Storeのジーニアスバーで働いていたんだ。友人Appleのリテールチームにいて、彼は自分がシェルスクリプトをちょっと書けることを知っていて、「プログラマーを必要とするプロジェクトがあって、公式には会社からサポートされてないんだけど、やってみる?Apple Storeで働いてることにしてバイト代払うよ。」と言ってくれたのがSprouteCoreアプリの開発案件。そのアプリがAPIを介してRailsとやりと

  • Goと大規模分散システムの相性 - ワザノバ | wazanova

    Googleで分散システムの開発をてがけ、現在はソーシャルメディア mttr.toを立上げ中のBen Sigelmanが、Goを分散システムの開発に利用する場合の、メリットおよびチャレンジについて講演しています。 分散システムのあるべき姿 分散システムの勘所は、最上位ビットをパフォーマンス的にも構造的にもうまく扱うことができるかというのがポイント。その効果が一番大きい。スループットの改善のような詳細は、自分もGoogleでそれに取組んだけれども、9ヶ月くらいたつとハードウェアの性能で解決される可能性が高い。また、構造的にというのは、なるべく小さなコンポーネントを組み合わせたシステムにできるかという意味。 Goのよいところは、 両方、とくに後者によい。Railsだとアプリを複数個用意して並列処理するのは大変だったけど、Goだとシンプルにできて、標準ライブラリも読みやすいとかなどなど。パフォー

  • Square OrderのUI - ワザノバ | wazanova

    http://blog.brianlovin.com/design-details-square-order-for-ios/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約5時間前 Squareの提供するハードウェア(カードリーダー & レジ端末)のデザインも美しいと思ったのですが、アプリも負けず劣らずクオリティが高いですね。Brian Lovinが紹介しているテイクアウト注文アプリ「Square Order」の中から、気に入ったUIをピックアップしてみました。 (下記で紹介しているリンク先のビデオは、PCChrome/Safariでないとうまく再生できないようです。お手数ですが、一見の価値はあるので是非。) 2) Walkthrough ビデオ 数枚のスライド形式のチュートリアルはもう定番ですが、三枚目

  • 生まれ変わるAngularJS - ワザノバ | wazanova

    シングルページアプリ向けの各フレームワークをGoogle Trendで比較したグラフがLars Eidnesのブログに掲載されてますが、AngularJSの伸びが他を圧倒しています。一方で、アーキテクチャ上の課題は、コミュニティの声もあり、かつ当事者である開発チームも認識していたところ。そして、それに対する答えとしては、バージョン2.0で大幅に書き直すという流れになっています。 AngularJS 2.0については、「野心的だが険しい道のり」というタイトルの記事がGuardianに掲載されてますが、 ES6の採用 Web Componentsとの親和性のアップ (双方向バインディングをどうするかまだ決まってないが)Reactの考え方に近づいてきている (1.3のサポートはしばらく平行して続くと発表されたが)当にスムーズな移行を提供できるのか? がポイントだとSeb Ceveyはまとめてい

  • Go言語のMapの仕組みをマクロ視点で見てみる - ワザノバ | wazanova

    http://www.goinggo.net/2013/12/macro-view-of-map-internals-in-go.html1 comment | 0 pointsWilliam KennedyがGo言語のMapの仕組みについて、なぜデータ順がランダムになり、かつ効率的で処理が早いのかを、図解しています。 Creating and Using Maps まずmapをつくりvalueを保存するところから見てみよう。 // Create an empty map with a key and value of type string colors := map[string]string{} // Add a few keys/value pairs to the map colors["AliceBlue"] = "#F0F8FF" colors["Coral"] = "#FF

  • npmとクライアント側でのパッケージ管理の議論 - ワザノバ | wazanova

    npmに登録されているパッケージ数は10万、月間ダウンロード数も5億を超えました。7月の段階で月間3億程度ですから、こちらのグラフで見てもわかるように、かなり成長が加速してきていますね。 EdgeConf4において、パッケージ管理をテーマにしたディスカッションに、npmのCTOであるLaurie Vossと、npmのpeer dependencyをつくったGoogle Chrome TeamのDomenic Denicola(ES6のPromiseの取組みでも知られた人ですね。)が参加しています。この二人と、BowerのJosh Peekを中心に議論が進んでいます。ちなみにJoshはGitHubの社員で、最近では、左右に並べてdiffを比較できる便利な機能をつくった人でもあります。 「サーバサイドのパッケージマネジャとしては、CPANやRubygem、npmのように開発言語ごとにプレーヤー

  • Rustを学びシステムレベル言語を理解すること - ワザノバ | wazanova

    https://www.youtube.com/watch?v=ySW6Yk_DerY Rustについては「Rustのあれこれ」で少し触れましたが、Yehuda Katzが、Skylightの一連のブログとGoGaRuCo2014の講演で、「ハイレベル言語のプログラマーがシステムレベルの言語を学ぶチャンス」という観点で紹介しています。 主なポイントとしては、 プログラミング言語の特性は変わることがないとか、プログラミング言語のパフォーマンスと生産性は常にトレードオフであるという考え方は、JavaScriptにおいて、生産性が少し改善されつつ同時にパフォーマンスが大きく向上してきたという事実から、必ずしも正しくはない。 Rustは、セグメンテーション違反が起きないという意味での安全性と、どこにメモリを置くか直接コントロールできる仕様を両方兼ね備える。 Rustを学ぶということは、ハイレベル言

    emonkak
    emonkak 2014/10/19
  • Reactを実際に使ってみた話が増えてきた - ワザノバ | wazanova

    http://youtu.be/uwnjDXtJufs 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 44分前 コンポーネントベースのviewレイヤのライブラリであるReactを、実際に使ってみた感想についての発信が増えてきているので、まとめてみました。(4)はFluxの話も入ってます。) 1) Reactとは? E4E Developer Conf 2014の講演でFacebookのBen Andersonは、Reactを採用しているサービスを挙げています。 Facebook / Instagram / GitHub (Atom) / Khan Academy (with Backbone.js) / Mozilla Firefox (for Paneis) / NY Times / Reddit (stor

  • CSSパフォーマンスツールを使いこなす - ワザノバ | wazanova

    https://www.youtube.com/watch?v=FEs2jgZBaQA 1 comment | 1 point | by WazanovaNews ■ comment by Jshiike | 約1時間前 CSSconf EU 2014におけるGoogleのAddy Osmaniの講演です。CSSのパフォーマンス向上に役立つツールを40個+ 紹介してくれてます。 背景 パフォーマンスの最適化において、 ベースラインとしてやること 最小化(minification) 結合(concatenation) 画像の最適化 圧縮(GZip, Zopfli) 非同期スクリプト キャッシュの利用 WOFF2フォント CSSスプライトを使う リダイレクトをしないこと スピードアップ パフォーマンス向上に重要なCSSのインライン化 レンダリングをブロックしないように、急ぎでないアセットの取

    emonkak
    emonkak 2014/10/19
  • Twitterのキャッシュを支えるRedis - ワザノバ | wazanova

    https://www.youtube.com/watch?v=rP9EKvWt0zo 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 TwitterのYao Yuが、大規模サービスのキャッシュにおいてRedisを活用する取組みについて紹介しています。 1) Redisを採用している理由 キャッシュだけで、ストレージとしては利用していない。 主なところでは、Twitterのタイムラインで利用している。ホーム画面であれ、ユーザ画面であれ、タイムラインはTweetのインデックスなので、key/valueストア型のRedisを利用するケースとして最適。 以前はmemcachedを使っていたが、問題になったのは、タイムラインでおきるread/writeは、(ユーザが閲覧している範囲に追加反映するということなの

  • シングルページアプリの初速を上げる取組み - ワザノバ | wazanova

    https://www.youtube.com/watch?v=VkTCL6Nqm6Y 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 OSCON 2014におけるInstagramのWebチーム責任者であるPete Huntの講演。PeteはInstagramに異動する前は、FacebookのPhoto/Video/Product Infraチームに在籍。 今回は、InstagramのwebサイトInstagram.comにおいて、シングルページアプリの課題である最初の読込みスピードを上げるために、どのような工夫をしたかについて紹介してくれてます。 Instagram.comのJavaScriptファイルは、縮小化後で9.5MB & gzip圧縮後で2.5MB。そのサイズだと、一つのファイルにまとめ

  • Facebook: iOSアプリのアーキテクチャ - ワザノバ | wazanova

    https://www.youtube.com/watch?v=XhXC4SKOGfQ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 39分前 FacebookのiOSチーム、Adam ErnstとAri Grantによる@Sacle 2014での講演。データモデルとビューレイヤの改善の取組みについて紹介してくれてます。 1) データモデル 背景 2年前からHTML5からネイティブに切り替えて一旦大きく改善したが、その後機能を追加するたびにアプリのパフォーマンスが悪化。 ネイティブに移行後、オブジェクトのキャッシュレイヤとしてiOSのCore Dataを使ったのが失敗であった。 Core Dataの役割は「整合性を含むオブジェクトグラフ管理」 Facebook iOSアプリの場合、サーバ側を正のデータとするが、

  • デザインアセットをiPhone6に対応するワークフロー - ワザノバ | wazanova

    http://aten.co/2014/09/12/designing-from-iphone-5-to-iphone-6-iphone-6-more-than-i-bargained-for/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約7時間前 発表されたiPhone6のサイズからして、予想はしてましたが、MerchbarのEdward Atenがまとめてくれたブログを読むと、改めて対応の工数を認識させられます。 iPhoneのレイアウト/解像度がどう変更されてきたか iPhone3 -> iPhone4: キャンバスのサイズは 320x480 pointsと同じなのでレイアウトは変更なし。解像度が 640x960 pixelesに倍増するので、アセットをアップグレードする対応。 iPhone4 ->

  • Instagram: Android/Java向けのJSONパース - ワザノバ | wazanova

    http://instagram-engineering.tumblr.com/post/97147584853/json-parsing 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約8時間前 Instagramが、ig-json-parserをオープンソースで提供しています。 背景 Androidにおける、JSONのエンコーディング/デコーディングは、dalvik特有の問題やメモリ消費が課題となる。 Jackson ObjectMapperで上記の問題は概ね解決できるが、 シリアライズ/デシリアライズしたことのないオブジェクトを処理する際のペナルティが大きい。モバイルの起動時間に影響するケースもあるので、頭が痛い。メモリが大きく割り当てられるので、ガベージコレクタとの絡みを考慮する必要がある。作業が完了し

    emonkak
    emonkak 2014/09/13
  • 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ページが軽くなったのとの相乗効果。 同じトラッフィクに対してハードウェアが削減できた。 チーム間の依存関係が少なくなったので、新機能リリースのペースが早くなった 同じ機能を複数の国にそれぞれ導入するような冗長さが

  • Gilt: iOSのネットワーク接続表示の管理 - ワザノバ | wazanova

    http://tech.gilt.com/post/95741287114/modularity-and-the-ios-status-bar-network-indicator 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約2時間前 GiltがiPhone/iPad開発向けに用意したmockingbird-toolboxをオープンソースとして公開しています。 Focused - it tries to do one main thing.(一つのことだけを提供するシンプルなソリューション) というコンセプトでの便利なモジュール群が、今後順次追加されるようです。 今回紹介されているのは、ステータスバーに表示されるネットワーク接続のスピナーの管理。UIApplicationのnetworkActivityInd

    emonkak
    emonkak 2014/08/31
  • 長期かつ修正頻度の高いPJでのCSSメンテ - ワザノバ | wazanova

    http://benfrain.com/enduring-css-writing-style-sheets-rapidly-changing-long-lived-projects/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約2時間前 長期的な大規模プロジェクト、かつ修正頻度が高い場合は、DRYよりはメンテ性を最優先にしたCSSを書くべきという、Ben Frainの方法論です。長文ですが、よくまとまってると思います。 1) テクノロジーとツール プレプロセッサ 長期のプロジェクトにおいて重要なのは、テクノロジーではなく、何ができて、どう進めるかというアプローチ。 Sass / LESS / Stylus / Myth などどれでも、しっかり書かれていれば、必要なときにいつでも統合はできる。プレプロセッサは

    emonkak
    emonkak 2014/08/17