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.

Avatar for Bruno Cavalcante

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