タグ

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

  • eBay: ペトリネットで並列処理をわかりやすく説明する - ワザノバ | wazanova

    http://www.technology-ebay.de/the-teams/ebay/blog/a-concurrent-monday.html 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約16時間前 eBayのエンジニアブログで、並列処理をペトリネットを使ってわかりやすく説明しています。 1) Petri Nets ペトリネットでは、インプット / プレース (円) / トランジション (長方形) / アウトプットを矢印で結ぶ。[図] トークンは、プレースの内側に点状で表され、トランジションを介して次のプレースに移っていくが、その様子は動的に表現される。[図] トークンは実際のプログラムのポインターであり、コードに沿ってIDEのデバッグモードで見ていくようなもの。つまり、トークンが移動していく様は、

    yuiseki
    yuiseki 2014/01/27
  • [その2] Groupon: 単一のRailsアプリから複数のNode.jsアプリへの移行 - ワザノバ | wazanova

    http://nodeup.com/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約6時間前 「[その1] Groupon: 単一のRailsアプリから複数のNode.jsアプリへの移行」で紹介した取組みについて、Grouponの開発チームがその詳細と最新のテクノロジースタックについて語っています。 Grouponのビジネスは店舗での割引のデイリーディールだけでなく、他の形態のサービス提供(物販、コンサートチケット、体験販売など)にも早めに乗り出していて、トラッフィク的にはそれに対応していたので、Railsでスケーラビリティに関しては実現できていた。Railsからの移行は、どちらかと言うとアーキテクチャ的に、単一の大きなアプリであったことが、機能を追加する際にボトルネックとなっていったから。例えば、サイトのビ

    yuiseki
    yuiseki 2014/01/23
  • Groupon: Node.js向け結合テストツールtestiumをオープンソースで提供 - ワザノバ | wazanova

    https://engineering.groupon.com/2014/misc/i-tier-testium/1 comment | 0 pointsGrouponが、Node.js向けの結合テストツールtediumをオープンソースとして提供しました。 What is testium BDD (振舞駆動開発) 構文で書ける。 CoffeeScript/JavaSacriptで書かれている。 同期APIがある。 Seleniumを利用できる。 Why Create a New Tool RailsではCucumberをセットして、実際のブラウザでSeleniumを使ってテストができたが、Node.jsではフィットするものが見つからなかった。 Exploring WebDriver 既存のSeleniumのインフラを利用するために、JavaScriptとMochaで書けて、同期APIのある

  • NTPベースのDDoS攻撃を理解する - ワザノバ | wazanova

    http://blog.cloudflare.com/understanding-and-mitigating-ntp-based-ddos-attacks1 comment | 0 points年初にLeague of Legends、EA.comのサーバがダウンする原因となったNTPベースのDDoS攻撃について、CoudFalreがエンジニアブログでまとめています。 DNS Reflection is so 2013 DNSベースのDDoS攻撃とNTPベースの攻撃は似ている。プロトコルの違いだけ。攻撃者が、被害者となる相手のIPアドレスを偽ってパケットを送付。事情を知らないサーバは、リクエストに応えて、被害者のIPアドレスにデータを返すという仕組み。実際の攻撃者のソースは隠されていて、トレースするのが難しい。もし大量のサーバが利用されると、相当のボリュームのパケットが、世界中から被害者

    yuiseki
    yuiseki 2014/01/13
  • [その1] Rubyプログラマー向けのGo言語の解説 - ワザノバ | wazanova

    http://www.sitepoint.com/go-rubyists-ii/1 comment | 0 pointsGlenn Goodrichが、Rubyプログラマー向けにGo言語のinterfaceとWeb.goを紹介しています。1回目はまずは、interfaceから。 The Fallacy of Inheritance 継承は些細な修正も実装が面倒になり、コードが複雑になる可能性があります。例えば、Horseクラスと二つのサブクラス、GallopingHorseとSadHorseがあったとします。(その二つはステートの違いだけでなく、まったく性格の違うサブクラスかもしれません。)sadな雰囲気で、gallopをしているhorseがいる場合はどうするか?それぞれのクラスである振る舞いがロックアップされることになるかもしれません。また、type間の関係を考慮しなくてはいけなくなるの

  • [その2] Rubyプログラマー向けのGo言語の解説 - ワザノバ | wazanova

    http://www.sitepoint.com/go-rubyists-ii/1 comment | 0 pointsその1はこちら。 2回目は、Web.goを解説します。 前回で、Goにおいてどのように抽象化が機能しているかわかってきたと思うので、ウェブフレームワークであるWeb.goをみてみよう。まずそれを実行するためにはGo環境をセットアップする必要がある。まずは、レポジトリ例をクローンすることをお勧めする。webgo-examples/ディレクトリに入れば、自分のシェルで実行できるようになる。 export GOPATH=`pwd` cd src go get github.com/hoisie/web これでWeb.goフレームワークのコピーが入手できるはず。main/hello-world.goファイルを開けると、 package main import ( "github.

  • RailsのRESTful APIをテストで理解する - ワザノバ | wazanova

    http://www.commandercoriander.net/blog/2014/01/04/test-driving-a-json-api-in-rails1 comment | 0 pointsPivotal LabsのEno ComptonがRailsでJSON APIをテスト形式で理解できるように紹介してくれてます。「Railsアプリをてがけると、いずれ、シングルページアプリ、モバイルクライアントのためにRESTful APIが必要になるだろうから練習用に。」ということで、コードはGithubで公開されています。 GET /movies POST /movies GET /movies/:id PUT /movies/:id DELETE /movies/:id 上記のrouteをサポートするために、Railsアプリ + RSpec + FactoryGirlを用意したら、

    yuiseki
    yuiseki 2014/01/07
  • Ember.jsの無限スクロールの改善 - ワザノバ | wazanova

    http://eviltrout.com/2014/01/04/hiding-offscreen-ember.html1 comment | 0 pointsDiscourseのRobin Wardが、Ember.jsで無限スクロールのパフォーマンスを改善させた取組みについて紹介しています。 Long Lived Applications Discourseは無限スクロールを多用している。投稿数の多いトピックを閲覧している際に、ブラウザのviewportの終わりに近づくと、サーバから非同期に新しい投稿が読込まれる。短いトピックについては、DOMにコンテンツを追加することはパフォーマンスの問題にはならない。最近のブラウザは、モバイルであっても、数百の投稿はレンダリングできる。しかし、数千件の投稿があるトピックを閲覧する時は、ブラウザの動きが不安定になり、クラッシュすることもあった。 Cloa

  • 60fpsのサイトパフォーマンスを目指す - ワザノバ | wazanova

    http://calendar.perfplanet.com/2013/the-runtime-performance-checklist/1 comment | 0 pointsGoogle ChromeチームのPaul Lewisが、ページ読み込み後、つまりユーザが閲覧する際の、UIレスポンス、スクロール、アニメーションなどサイトパフォーマンスについてまとめています。 まずは60fpsのパフォーマンスを達成する。よって、16ms以上かかるフレームは全て問題とみなす。 1. Large invalidations of layout and styles エレメントでのクラスの変更やJavaScript/CSS transition/CSS animationで直接エレメントのスタイルを変更すると、ブラウザはレンダリングツリーの一部もしくは全部を無効にしてしまう。最悪のケースでは、ドキュ

    yuiseki
    yuiseki 2014/01/03
  • Evernote: 会社の規模にあわせてのセキュリティ対策の考え方 - ワザノバ | wazanova

    http://firstround.com/article/Evernotes-CTO-on-Your-Biggest-Security-Worries-From-Three-Employees-to-300 セキュリティ当に大事だけど、会社が小さいうちにものすごいコストをかけた対策はできないので、段階的にやっていくことになるのが典型的なパターンだと思いますが、「では、具体的にどの段階で何をやるのか?」について、EvernoteのCTOであるDave EngbergがFirst Round CTO Summitで自らの考えを紹介しています。 まず、原則として、「導入しようとしてるセキュリティの対策が、守ろうとしていることのリスクよりも低いときだけ、実行する。」こと。会社が小さいときは失うもののリスクも小さいので、対策もおおげさなものでなくということになるが、Tech Crunchに最初

    yuiseki
    yuiseki 2013/12/22
  • Twilio: HAProxyの設定の紹介 - ワザノバ | wazanova.jp

    https://www.twilio.com/engineering/2013/10/16/haproxy/ 音声/テキストコミュニケーションのクラウドサービスを提供するTwilioが、オープンソースのTCP/HTTPロードバランサーHAProxyの設定についてエンジニアブログで紹介しています。 1) 経緯 TwilioのFounder達が、クラスターのホストが他のホストと通信しトラッフィクを渡せるHAProxy Configを音声メッセージ用につくって、Venture Capitalから資金調達。次に、SMS (テキストサービス)サービスのAPIにHAProxy Configをそのまま適用。それがうまくワークしたのでHAProxy Configの内容を理解しないまま、Twilioのサービスに順次コピーされて、問題が感染していってしまった。 目標であるFive nine (99.999%)

  • Twilio: HTTPリクエストを磨く - ワザノバ | wazanova.jp

    https://www.twilio.com/engineering/2013/11/04/http-client スマホアプリ <-> サーバ間や、サーバ <-> 3rd partyツール間でHTTPリクエストを送ることは一般化してますが、その性能をあげるための工夫を、Twilioがエンジニアブログで紹介してます。 サーバの様々なHTTPポートに接続し、エラーパターンをシミュレートして、クライアント側が適切にハンドリングしているかどうか確認するライブラリが、Githubで公開されてます。 1) コネクションエラー サーバが遠隔にあるマシンに接続できない場合、HTTPリクエストが完了しないのでConnectionErrorが返ってくるだけで具体的な理由はわからない。 ここでまずできることは、タイムアウトの設定。connect () は通常即座に完了するか、失敗するかのどちらか。Twilio

    yuiseki
    yuiseki 2013/12/18
  • Node.js: Issac Schlueterの語るオープンソースとリーダーシップ - ワザノバ | wazanova.jp

    [Video] https://www.youtube.com/watch?v=PSv7GIX-XQ0 [Video] http://vimeo.com/77289729 コミュニケーションが大事だというのは月並みな言葉ですが、世界の複数の地域にまたがるオフィスに、事業の方向性 / アクションプランの意味付け / 優先順位 / 担ってもらう役割を、限られた時間の中でいかに簡潔にわかりやすく伝えるのかについて苦労した経験があります。世界中のメンバが参加する大きなオープンソースプロジェクトでは、それにもましてオフィスもないわけですから、メンバをうまく動かしていくには、相当な努力がいるかと。 Node.jsのリーダーであるIssac Schlueterのプレゼンテーション / podcastはいくつか聞いてみましたが、Node.jsが盛り上がってるのは、彼のリーダーシップによるところが大きいんだ

  • 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をレガシーシス

  • iOS7スタイルで角丸長方形を描画する - ワザノバ | wazanova

    http://www.paintcodeapp.com/blogpost/code-for-ios-7-rounded-rectangles PaintCodeがiOS7スタイルで角丸長方形を描画するツールをオープンソースで提供しています。 1) 背景 以前のアイコンは、角丸長方形の弧が直線と交わるところにわずかな膨らみがあったが、iOS7からはその効果がなくなっている。[iOS6とiOS7の違いは原文の画像を参照。マウスオーバーすると差分が表示される。] この変更はアプリのアイコンだけでなく、UIKitで描かれる角丸長方形は全て新しいかたちになっている。つまり、UIBezierPathのbezierPathWithRoundedRect:cornerRadius:メソッドを使って角丸長方形を描くとiOS7の新しいかたちになる。このメソッドはiOS 3.2からあるが、今回から違った効果をだ

    yuiseki
    yuiseki 2013/12/02
  • CloudFlare: Goで書いた安全にデータをやりとりする仕組み - ワザノバ | wazanova

    http://blog.cloudflare.com/red-october-cloudflares-open-source-implementation-of-the-two-man-rule 核ミサイルは、誤って、もしくは担当者が勝手に発射してしまわないように、二人一組で操作する仕組みになっていますが、それと同様に、かなりセンシティブなデータのやり取りも複数人の関与/確認が有効とされてます。CloudFlareがオープンソースで提供したRed Octoberは、それを実現するために、Goで書かれた暗号化 & 解読サーバです。サーバは、一定期間内に、あらかじめ設定された認証ユーザの数だけの証明書を預かると、従前に暗号化されたものを解読するという仕組みです。 1) How to use it Red Octoberサーバのセットアップは簡単。ローカルで読めるパスとSSLキーのペアがあればよ

  • 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としてよく知られるとおり、人間が良

    yuiseki
    yuiseki 2013/11/20
  • Hood.ie: "noBackend & Off-line first" という考え方 - ワザノバ | wazanova.jp

    [Podcast] http://thechangelog.com/111/ [Video] http://vimeo.com/76316466 Hood.ieは、ヨーロッパのメンバが開発しているオープンソースプロジェクトです。プロジェクトとしてはまだデベロッパープレビューの段階ですが、”noBackend & Off-line first” というキャッチコピーが目をひきますし、メンバがかなり積極的に世界各地のカンファレンスをまわっていて、このようにChangelogのPodcaseでも紹介されたされたので、これからもっと耳にすることも増えるのではないかと思います。 noBackendといっても、サーバがなくなるのではなく、事前にパッケージ化されたバックエンドのメニューを利用するので、サーバサイドのコーディングをしなくても開発できることを目指してます。基的なアーキテクチャとしては、フロ

  • Facebook: 永続的key-value型高速データストアRocksDBをオープンソースで提供 - ワザノバ | wazanova.jp

    http://rocksdb.org/ RocksDBは、FlashSSDメモリ/RAMに高速でアクセスできる組込み型の永続的key-valueデータストアです。LevelDBのうえに構築されていてCPUコアがたくさんあるサーバでスケーラブルに実行され、高速のストレージを効率的に利用し、IO-bound / in-memory / write-once な作業をサポートします。 (GoogleのLevelDBは「Hood.ie: “noBackend & Off-line first” という考え方」でもちょっと話題にでてました。) 利用用途としては遅延を避けたいケース、例えば、 ユーザの閲覧履歴やステータスを保持するアプリ 大きなデータにすぐにアクセスしなくてはいけないスパム検知アプリ リアルタイムでデータにアクセスするソーシャルグラフ検索のクエリ Hadoopデータのキャッシュに利用し

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

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

    yuiseki
    yuiseki 2013/11/16