タグ

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

  • 検索エンジンLuceneの歴史とこれから - ワザノバ | wazanova

    http://www.youtube.com/watch?v=5444z-L2V2A 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 Luceneのオリジナルの開発者であるDoug Cutting(ClouderaのChief Architectと Apache Software FoundationのDirectorを兼務)が、Luceneの歴史と今後の展開を紹介しています。 検索サイトExciteに勤務していた1997年に開発開始。当時新しくでてきたJavaを使ってみたかった & ネットバブルが弾けるのが不安で何かかたちに残るものをつくっておきたかった。2000年にオープンソースとして提供。Solrは2006年、Solr Cloudが2012年。昨年にはHadoopプラットフォームの検索エンジンに

    ryshinoz
    ryshinoz 2014/03/01
  • Railsのテストを高速にする - ワザノバ | wazanova

    http://www.youtube.com/watch?v=bNn6M2vqxHE 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約2時間前 「Airbnbのテスト:巻き込み力のある人がポジティブな変化をもたらす」でLou Kosakが、依存関係のないユニットテストを実現するのに参考にしたというCorey HainesのGoGaRuCo 2011での講演です。 一番読込みに時間のかかる3rd partyエンジン = Railsとの関係を切り離す。 1 class ShoppingCart < ActiveRecord::Base 2 has_many :shopping_cart_products, dependent: :destroy 3 has_many :products, :through => :

  • Evernote: データを同期する仕組みの改善 - ワザノバ | wazanova

    http://blog.evernote.com/tech/2014/01/28/synchronization-speedupification/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 Evernoteエンジニアブログで、データを同期する仕組みの改善について紹介しています。 Memory Lane 2007年にデータの同期プロトコルを設計した際は、ネットワークリクエストの回数を一番少なくして、前回同期した以降変化のあったデータのみを取得するかたちにしたいと考えていた。「多種かつ相互関係もありうるデータモデルのオブジェクトに対して、ユーザごとの更新データ番号(USN)に基づいた、non-blockingでobject-state-basedなレプリケーションスキーム」を選択した。クライアン

    ryshinoz
    ryshinoz 2014/02/04
  • 仕事で新しいプログラミング言語、または新技術を採用するとき、どういう基準で導入していますか? - ワザノバ | wazanova

    1 comment | 0 points | by noto プロジェクト単位で人員を外部から調達することが多い日の受託開発業界では、開発者を集めやすいという理由で開発者人口の多い言語 (例: Java, PHP) を採用することが多いと思います。中途採用の世界でも圧倒的に経験者が多いのはこの 2 言語と言われています。 一方、開発者人口が減ったとしても、自分たちが使っていてわくわくするもの、生産性が高いと感じるものを選ぶ組織も、自社サービス企業を中心に増えています。優秀なエンジニアに人気がある言語を選ぶほうが優秀なエンジニアを集めやすいですし、優秀なエンジニアほどプログラミング言語をスイッチするのは苦にならないということも経験的にわかってきています。 他にも、性能が要求される場面 (高トラフィックを低コスト、低リソースでさばく必要があるなど) では実行効率やリソース使用量の特性も考慮す

    ryshinoz
    ryshinoz 2014/01/30
  • AngularJSとRails4を組み合わせる - ワザノバ | wazanova

    https://shellycloud.com/blog/2013/10/how-to-integrate-angularjs-with-rails-4 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約4時間前 Railsアプリのホスティングサービスを提供しているShelly Cloudがブログで、フロントでAngularJS、バックエンドでRails 4を採用するときの留意点について、まとめています。使用しているコードサンプルはこちらになります。 1) Building a JSON API in Rails RailsAPIをいちから作ってみる。angularjs-rails-resourceのようなライブラリを使うときは詳細が違ってくるが、考え方は概ね同じ。 Routing namespace :api

    ryshinoz
    ryshinoz 2014/01/29
  • Trelloのアーキテクチャ - ワザノバ | wazanova

    http://nodeup.com/fiftyfour 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約3時間前 Trelloのアーキテクチャについてのアップデートです。2012年1月にブログで紹介されたものと、昨年11月の最新状況をまとめてみます。 まずは、当初のアーキテクチャ: UIをクライアントサイドで生成し、プッシュでの更新を受け入れるシングルページアプリ。Client/ServerともにJavaScript、2011年5月以降はCoffeeScriptで書いている。 1) The Client TrelloのサーバはHTML、クライアント側のコードをほぼ扱っていない。Trelloのページは2Kのシェルで、一つの圧縮されたJavaScriptファイル(サードパーティのライブラリと圧縮したCoffeeSc

    ryshinoz
    ryshinoz 2014/01/28
  • Dropwizardでオペレーション駆動型のサービスを開発する - ワザノバ | wazanova

    http://www.youtube.com/watch?v=cDBdzxwQh6k1 comment | 0 pointsRent the RunwayのHead of EngineeringのCamille Fournierが、Dropwizardを利用して、オペレーション駆動型のサービスづくりをしている取組みを紹介しています。 ドレス服レンタルサービスのRent the Runwayは、Founder二人がnon-technicalだったこともあり、最初のサイトはDrupalでつくられたシンプルなもので、複雑なサービスを扱うにはメンテもままならず、サービスが成長するとパフォーマンス的にも対応できなくなった。そこで全てを一度に書き直すのではなく、機能を順次切り出し、Javaでつくるアプローチをとった。Javaにした理由は、自分がよく理解していて、信頼して使えるものだったから。そもそも他

    ryshinoz
    ryshinoz 2014/01/17
  • RailsアプリをDockerにデプロイするときにGemfileを変更してなければBundle Installをスキップする方法 - ワザノバ | wazanova

    http://ilikestuffblog.com/2014/01/06/how-to-skip-bundle-install-when-deploying-a-rails-app-to-docker/1 comment | 0 pointsBrian Moreartyがタイトルの内容についてまとめています。 Dockerでは、Railsアプリを、依存関係(正しいRubyのバージョン、利用するgemなど)を組み込んだまま、コンテナにデプロイできる。アプリをそのコンテナでテストし、番環境のホストにアップできる。事前にメモリを確保する必要がないので、かなり軽い感じのVMのようである。このポストではコンテナ作成の詳細には触れないが、簡単に説明すると、コンテナをセットアップするスクリプトであるDockerfileをつくって、docker buildで実行するというステップ。 Dockerは、最初

    ryshinoz
    ryshinoz 2014/01/14
  • Stack Overflowのアーキテクチャ - ワザノバ | wazanova

    http://www.youtube.com/watch?v=OGi8FT2j8hE1 comment | 0 pointsドイツのハンブルグで開催されたDeveloper Conference 2013で、Stack Overflowのアーキテクチャが紹介されてます。 Stack Overflowのネットワークは、110 Q&Aサイト、430万ユーザ、質問760万件、回答1360万件、月間5億6千万ページビュー サーバ25台: ウェブサーバ11台(内9台でほぼトラフィックさばく)、ロードバランサ1台 (+ 予備1台)、DBノード4台、アプリサーバ3台、検索サーバ3台(Elasticsearch)、Redisサーバ2台(キャッシュ、メッセージング) 毎秒質問が投稿されているので、トップページには都度最新の質問を掲載するように更新はできないが、ユーザの回答パターン、質問閲覧パターン、好みのタ

    ryshinoz
    ryshinoz 2014/01/13
  • 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アドレスにデータを返すという仕組み。実際の攻撃者のソースは隠されていて、トレースするのが難しい。もし大量のサーバが利用されると、相当のボリュームのパケットが、世界中から被害者

    ryshinoz
    ryshinoz 2014/01/13
  • GiltのエンジニアチームのTrustカルチャーと自主的に動くスタイル - ワザノバ | wazanova

    GiltのCo-founder & CTOのMichael Bryzekが、同社のエンジニアチームについてインタビューに答えています。 まずは、Ruby -> Java -> Scalaと開発言語が変わっていった経緯について質問を受けて。(Ruby -> Javaは、昼の12時にAmazon並みの大量のトラフィックが集中する同社のフラッシュセールスというビジネスモデルに対応するシステムにするために決めたということだった思います。) RubyからJavaへの転換はやや大変な作業だったが、どうにかできた。Scalaへの移行のきっかけは採用。ものすごくできるエンジニアを2009年 or 2010年はじめあたりに採用できたとき、彼が「自分はScalaを2年やっていて、すごくいいので是非JavaでなくてScalaで。」と言ってきたので、試しにつくらせたのがはじまり。それから、関数型言語としてできるこ

    ryshinoz
    ryshinoz 2014/01/13
  • 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のある

    ryshinoz
    ryshinoz 2014/01/13
  • Forward Secrecyの落とし穴 - ワザノバ | wazanova

    「Forward Secrecyの普及」でご紹介したとおり、Forward Secrecyの採用を発表したGitHubが、その設定における注意点についてブログで紹介してます。 Forward Secrecyのセキュリティ効果を期待通りだせなくなる落とし穴について解説するにあたり、まずはセッションリサンプションを説明しておく必要がある。セッションリサンプションは、新しい接続をするときのハンドシェイクを大幅に短縮する仕組みである。これは、クライアントが同じサーバに接続した際には、安全な接続を短い時間で確立できるということである。セッションリサンプションの実装には、セッションIDを使う方式とセッションチケットを使う方式がある。 SSL SESSION IDs セッションIDを使うということは、サーバはステートを保持し、クライアントがサーバから受取ったセッションIDで再度接続してきた際には、そのス

    ryshinoz
    ryshinoz 2014/01/09
  • 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を用意したら、

    ryshinoz
    ryshinoz 2014/01/07
  • 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に最初

    ryshinoz
    ryshinoz 2013/12/11
  • エンジニアが起業する環境が整っていくこと - ワザノバ | wazanova

    http://blog.ycombinator.com/announcing-the-safe-a-replacement-for-convertible-notes 「Web/スマホエンジニアのためにクオリティの高い開発ノウハウがたまる場」をつくりたくてワザノバを始めたという経緯があったので、サイトの趣旨とちょっと違うかなと思い、ワザノバで起業の話しは今まであまり取り上げてきませんでした。しかし、今日は休日なのでちょっと違った話題をということと、Ycombinatorの発表した"Safe"が、手法としてはけっして目新しいものではないですが、エンジニア起業する環境を整えるという視点から意義のあるものだと思ったのであえて書きます。 起業して一番やらなくてはいけないのは、サービスを磨くこと。当たり前のことですが、現実はそれ以外にやらねばいけないことがあるので、なかなか100%の時間を使えない

    ryshinoz
    ryshinoz 2013/12/07
  • Discourse: 大規模オープンソースRailsプロジェクトの進捗 - ワザノバ | wazanova

    http://rubyrogues.com/117-rr-discourse-part-2-with-sam-saffron-and-robin-ward/ 以前、「Discourse : パフォーマンス向上に注力したRubyアプリづくり [GoGaRuCo 2013] 」でも紹介したDiscourseのSam SaffronとRobin Wardが、Ruby RoguesのPodcastで、オープンソースになっているRailsアプリとしては最大級になってきた同プロジェクトの開発の状況をアップデートしています。 最初から、APIで100%カバーするつもりでサイトづくりをしている。パスワードリセットなど一部サーバサイドでレンダリングしているものはあるけど。 Ember.jsを採用した背景は、以前のプロジェクトで、 jQueryで相当リッチなサイトをつくったがコードをまとめるのが大変になった経

    ryshinoz
    ryshinoz 2013/12/05
  • Facebookの継続的デプロイメント - ワザノバ | wazanova

    https://www.facebook.com/publications/514128035341603/ 1日500件、3,000ファイルに及ぶ番アップ フロントエンドのコードは1050万行、内850万行がPHP 開発エンジニア1,000名とリリースエンジニア3名 QAやテスターは存在しない 自分でプロジェクトを選ぶ & 自己責任のカルチャーが強い。 1/3のファイルが一人のエンジニア、1/4が二人のエンジニアでメンテされている。 フロントエンド番コードベースは一つのものを共有 日常業務ではローカルのgitを利用。番アップ可能になれば、中央のレポジトリにマージして、それからSubversion(過去の経緯で使っている。)にコミットする 同じエンジニアがコードをコミットする間隔は中央値で10時間 番にプッシュする前に、担当エンジニア自身でのユニットテストを終え、同僚によるコード

    ryshinoz
    ryshinoz 2013/12/04
  • Zillow: モバイルアプリの自動化テストフレームワーク - ワザノバ | wazanova

    http://engineering.zillow.com/the-search-for-mobile-app-test-automation/不動産価格サイトのZillowが、エンジニアブログで、モバイルアプリのテスト自動化のソリューションを比較検討した経緯を紹介してます。 1) 背景 モバイル向けのテストツールを2年半探したが、Robotiumフレームワーク(Android)は1ヶ月ももたずに使えなくなったので、テストケースを定期的に実行するチャンスがなかった。次にKIF (iOS) は、アプリと直接つながったObjective-Cのコードを書かなくてはいけなかったので断念。XcodeのInstrumentsは、ワークしたものの、メンテしきれなくなった。 2) Robotium Drawbacks テストケースごとにコンパイルする必要があった。ANt, pomファイルのメンテナンス。J

    ryshinoz
    ryshinoz 2013/11/28
  • [その3] Netflix: APIの改善と継続的デリバリー - ワザノバ | wazanova

    http://techblog.netflix.com/2013/08/deploying-netflix-api.html その1はこちら。 その2はこちら。 このシリーズの3回目は、Netflixのサービスが急成長する中で、APIの改善と平行して継続的デリバリーを実現した経緯を紹介してます。同社の継続的デリバリーの仕組みのキーワードは、"Automation and Insight"(自動化と見える化)。 1) 開発から番アップまでのフロー 開発からAWSインフラへの番アップまでの概念図がこちら。段階的に、開発している機能の精度があがりシステムの安定性が増すのを確認していくプロセス。 具体的な作業フロー図はこちら。ほとんどプロセスは自動化され、各ステップでコードのステータスを確認できるような見える化の工夫がなされている。 2) ブランチ 現状では下記の3つのブランチがあるが、中期的

    ryshinoz
    ryshinoz 2013/11/21