Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Arquitetura da Alvanista

A Arquitetura da Alvanista

Apresentação comentando as tecnologias sobre as quais a Alvanista, rede social para amantes de jogos eletrônicos, foi construída.

Bruno Cavalcante

October 24, 2013
Tweet

More Decks by Bruno Cavalcante

Other Decks in Programming

Transcript

  1. Tráfego #3: Alvanista ♥ #58.610 Mundo (#2565 Brasil) 9.60 Pageviews

    por visitante 10:20 Tempo diário no site #1: Raptr #11.738 Mundo 3.31 Pageviews/visitante 03:03 Tempo diário #2: Playfire #42.554 Mundo 2.80 Pageviews/visitante 03:01 Tempo diário
  2. Banco de Dados Ruby def sync_redis_following return true unless $redis

    ids = UserFollow.where(follower_id: id).select(:leader_id).map(&:leader_id) if $redis && ids.size > 0 $redis.pipelined do $redis.del "#{id}:following" ids.each { |i| $redis.sadd "#{id}:following", i } $redis.expire "#{id}:following", 3600 end end end
  3. Frontend: Javascript # Assignment: number = 42 opposite = true

    # Conditions: number = -42 if opposite # Functions: square = (x) -> x * x // Assignment: var number = 42; var opposite = true; // Conditions if (opposite) { number = -42; } // Functions square = function(x) { return x * x; }; Coffeescript Javascript
  4. Frontend: Markup %section.container %h1= post.title %h2= post.subtitle .content = post.content

    <section class=”container”> <h1><%= post.title %></h1> <h2><%= post.subtitle %></h2> <div class=”content”> <%= post.content %> </div> </section> Haml ERB
  5. Frontend: Estilo $blue: #3bbfce; /* Variáveis */ $margin: 16px; .content-navigation

    { border-color: $blue; color: darken($blue, 9%); } .border { padding: $margin / 2; /* Matemática */ border-color: $blue; } .content-navigation { border-color: #3bbfce; color: #2b9eab; } .border { padding: 8px; margin: 8px; border-color: #3bbfce; } Sass CSS
  6. Engine de Busca def self.full_search s, options = {} query_string

    = "title:#{s}" query_string += " AND genres:#{options[:genre].name}" if options[:genre] query_string += " AND platform.id:#{options[:platform].id}" if options[:platform] search(page: (options[:page].to_i || 1), per_page: 20) do query { string query_string , default_operator: "AND" } sort { by :user_games_count, 'desc' } end end Ruby