タグ

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

  • APIの後方互換性を保つ工夫 - ワザノバ | wazanova

    Stripeの決済サービスの成長は、APIが使いやすいというエンジニアの間での評判がかなり寄与したと記憶しています。 同社のAPIは現在、 エンドポイント: 106 バージョン: 65 APIクライアント: 6 ユーザ企業を煩わせることなく後方互換性をしっかり担保したいという方針を守るための工夫を、Amber Fengが紹介してくれています。 1) ユーザが利用するバージョン情報の把握 ユーザ企業が最初にAPIコールをしたときのバージョン情報をStripe側で保管している。それ以降、ユーザ企業はバージョンのことを意識することなく、最初のバージョンのAPIを利用し続けることができるようにしている。ユーザ企業側でバージョンの変更をしたい場合は、ダッシュボードでの設定や、リクエストヘッダーに情報を付加することで可能。 2) バージョンと機能の整合性 YAMLファイルでバージョンとその振舞いの情報

    oinume
    oinume 2015/08/11
    "最後にレスポンス互換性のフィルターが適用され、ユーザの該当するバージョンの最新のかたちにレスポンスを変換している。" すごい
  • Rustを学びシステムレベル言語を理解すること - ワザノバ | wazanova

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

    oinume
    oinume 2015/07/13
  • 気づかぬうちに増える仕事を減らす取組み - ワザノバ | wazanova

    https://codeascraft.com/2014/12/22/engineering-rotation/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約2時間前 「このタスク、思ったより時間がかかったな。」となるのはよくあることですが、仲間と仕事をするということは皆で大きなことを成し遂げているということなのだというそもそものメリットは空気のように忘れがちで、ある程度の非効率は避け難く生じるし、それが目につくのでストレスの元。どう解消するか? 元Quoraのリードエンジニアで、現在Quipに勤務するEdmond Lauは、"Hidden costs that engineers ignore”"と題したブログのエントリーにおいて、 コードの修正だけでなく、別のメンバへの説明の時間はかかる。 単純に分量で

    oinume
    oinume 2014/12/24
  • 努力とセンスの関係と優秀なプログラマー - ワザノバ | wazanova

    http://www.quora.com/What-are-the-best-kept-secrets-of-great-programmers/answer/Jeff-Darcy? 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約5時間前 スポーツにしろ、勉強にしろ、仕事にしろ、何をやるにもその特定の分野でトップ1%人は尊敬するほどすごいのですが、人が長く続けつつ努力をしてきたことが垣間見えるので、なぜ優秀なのかというのが理解できる範囲。ただし、そのさらにトップ10%、いわゆる世の中でその分野のトップ0.1%の人というのは、すごすぎて、どうしてそうなれるのかが分からないと実感することがあります。議論している時に、数歩先の真理を理路整然と突然読み取って指摘されるような、驚くようなセンスを見せつけられる経験を数

    oinume
    oinume 2014/09/23
  • 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で上記の問題は概ね解決できるが、 シリアライズ/デシリアライズしたことのないオブジェクトを処理する際のペナルティが大きい。モバイルの起動時間に影響するケースもあるので、頭が痛い。メモリが大きく割り当てられるので、ガベージコレクタとの絡みを考慮する必要がある。作業が完了し

  • YouTube & Go言語: MySQLをパワーアップするVitess - ワザノバ | wazanova

    http://www.youtube.com/watch?v=qATTTSg6zXk 1 comment | 1 point | by WazanovaNews ■ comment by Jshiike | 約3時間前 YouTubeのシステムアーキテクトであるSugu SououmaraneのFOSDEM 2014での講演です。スライドはこちらからダウンロードできます。 1) Vitessとは Vitessは大規模な番環境でMySQL DBを効率的に利用するためのオープンソースプロジェクトです。概要はプロジェクトゴールのページ にまとまってます。 MySQLは機能が豊富だがスケールさせるときは苦労する。一方、NoSQLはスケーラビリティには問題がないが、アプリケーションが複雑になるとできることに限界があるのがネックになる。セカンダリインデックス、joinsなどがサポートされていない。

  • Etsy: レスポンシブなHTMLメールをつくる - ワザノバ | wazanova

    http://codeascraft.com/2014/03/13/responsive-emails-that-really-work/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約4時間前 HTMLメールは、 AndroidのGmailはインラインCSSしかサポートしてない。<style>タグは効かず、media queryは使えず、外部のスタイルシートに頼れない。 Gmail.comはHTMLのサポートが限定されている。HTML5のものを含めてサポートされてないタグが多く、classやIDなどの属性が使えない。インラインCSSのみ使え、<style>タグもかなり制限されている。 iOS / Mac OS Xのメールアプリは、media queryや多くのCSSが利用できる。 という状況なので、レスポン

  • Viewfinder: フォトシェアリングアプリのソース25万行を公開 - ワザノバ | wazanova

    http://corner.squareup.com/2014/05/open-sourcing-viewfinder.html 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 Viewfinderは、プライベートソーシャルネットワークでの写真共有サービス。実際に利用したことはなかったですが、1年ほど前のTechCrunchの記事によると、Google出身者が立ち上げたサービスで、写真のタイムライン表示のUIなどに面白い工夫がされてて、当時はそれなりに注目されていたスタートアップだったようです。 同社は昨年末にSquareに買収されています。いわゆるAcqui-hiringと呼ばれる人材確保目的のディールだったようで、Viewfinderのサービスは現在休止され、チームはSquareの開発チームに入っ

    Viewfinder: フォトシェアリングアプリのソース25万行を公開 - ワザノバ | wazanova
  • エンジニアのベストプラクティスを非エンジニアチームで活かす - ワザノバ | wazanova

    http://www.developingsales.com/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約6時間前 Jeff SzczepanskiはStack Overflowのマネタイゼーションの責任者。エンジニア転じて、営業の組織の長になった人物。 「営業というのは科学というよりは芸術。コンピュータ相手じゃなくて、人間を相手にしているからね。」 「営業が結果を重視するのは、計測しやすく公平な指標だから。どうなるか予想したりプロセスをうまく管理するのは難しいんだよ。」 という話しに違和感を抱き、「誰かが決めた営業戦略に従って営業マンは盲目的に数字の達成だけを求めてひたすら実行する。」という従来の営業手法は、 自分で手を汚してコーディングしない「アーキテクト」と呼ばれる人が仕様書をまとめ、下々のエンジニ

    oinume
    oinume 2014/04/11
    おもしろい
  • Trelloのパフォーマンス改善 - ワザノバ | wazanova

    http://blog.fogcreek.com/we-spent-a-week-making-trello-boards-load-extremely-fast-heres-how-we-did-it/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 Fog Creekがエンジニアブログで、カードを載せたボード画面の読み込み時間を改善させた取組みを紹介しています。1000件程度のカードを読み込もうとすると、レンダリング完了に7秒〜8秒かかって、画面がロックすることがあったのを、サイトのデザイン変更に合わせて、906件のカードを1400x1000 pixel windowで毎日10%レンダリング時間を短縮させる目標に1週間挑戦した記録です。 1) Monday (7.2 seconds down to

  • LinkedIn: Promiseでデータフローコントロールを改善 - ワザノバ | wazanova

    LinkedInが同社のエンジニアブログで、Node.jsのフローコントロールの取組みについて紹介しています。 (原文には一連の説明用のコードが掲載されているのでそちらも参照ください。) LinkedInのiPadアプリでは、node.jsサーバで、複数のバックエンドサービスからのデータをまとめています。これまでは、そのデータフローをコントロールするのにAsync.jsとStepを使っていたが、新しい機能の追加に際してはJavaScriptのPromiseを利用してQでの実装にトライしてます。Promiseが複雑なI/O依存パターンを扱うのに適しているのと、Promise/A+の仕様が特にエラーをハンドリングするのが得意なことが採用の理由。 Why do we need flow control patterns in Node.js? 非同期のコールバックベースのコードは重層構造になる傾

    oinume
    oinume 2014/01/08
    [Promise/A+]
  • 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としてよく知られるとおり、人間が良

  • 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であった

  • 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の間でやりとりさせるのが中心で、気づいてみると同じ雛形構文を書く作業をかなり繰り返している。コードを書いてる時間よりもコードを読んでいる方に時間がとられることも多い。この雛形構文を使った作業を極力減らして、アプリに付加価値をもたらすコーディング作業だけを抽出したいと思った。 コーディング作業が効率的になる構造が欲しかった。 フレームワークにテストを組み込むが、フレームワーク自身をきっちりテスト

  • 1