Skip to content

Instantly share code, notes, and snippets.

diff --git a/app/models/trophy.rb b/app/models/trophy.rb
index 059ccca..b9bf3ee 100644
--- a/app/models/trophy.rb
+++ b/app/models/trophy.rb
@@ -201,12 +201,12 @@ class Trophy
trophies = trophies_list
- user_values = Statistics::UserActivity::Query.new.for_user(user_id) do
- trophies.map { |trophy| metric_promise(trophy.dimension, trophy.metric) }
@jeremyvdw
jeremyvdw / apubnub.rb
Created March 5, 2012 18:27
apublish & asubscribe PubNub methods (wrapped in Fibers)
require 'eventmachine'
require 'em-http-request'
require 'yajl'
module PubSub
class Pubnub
#**
#* Pubnub
#*
#* Init the Pubnub Client API
@jeremyvdw
jeremyvdw / async_upload.rb
Created January 18, 2012 00:17 — forked from elucid/async_upload.rb
Running multiple Goliath apps
require 'goliath'
require 'yajl'
# adapted from goliath/examples/async_upload.rb
class AsyncUpload < Goliath::API
use Goliath::Rack::Params # parse & merge query and body parameters
use Goliath::Rack::DefaultMimeType # cleanup accepted media types
use Goliath::Rack::Render, 'json' # auto-negotiate response format
def on_headers(env, headers)
@jeremyvdw
jeremyvdw / Gemfile
Created August 27, 2011 13:16 — forked from igrigorik/Gemfile
HTML5 SSE / EventSource demo with Goliath
source :gemcutter
gem 'goliath', :git => 'git://github.com/postrank-labs/goliath.git'
gem 'em-synchrony', :git => 'git://github.com/igrigorik/em-synchrony.git'
<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\" />
<title>Action Controller: Exception caught</title>
<style>
body { background-color: #fff; color: #333; }
body, p, ol, ul, td {
font-family: helvetica, verdana, arial, sans-serif;
2015-03-12T16:11:27.042875+00:00 app[outlet.1]: source=coliseum_integration ns=Outlet fn=event_received num=548 type=HailUpdated id=977207ee-c61c-844d-8dd6-c4f9408b0051 received=152
2015-03-12T16:11:27.177147+00:00 app[outlet.1]: #<NoMethodError: undefined method `bytesize' for nil:NilClass>
2015-03-12T16:11:27.197090+00:00 app[outlet.1]:
2015-03-12T16:11:27.197092+00:00 app[outlet.1]:
2015-03-12T16:11:27.197213+00:00 app[outlet.1]: /app/vendor/bundle/ruby/2.2.0/gems/beefcake-1.1.0.pre1/lib/beefcake/buffer/base.rb:86:in `length'
2015-03-12T16:11:27.197271+00:00 app[outlet.1]: /app/vendor/bundle/ruby/2.2.0/gems/beefcake-1.1.0.pre1/lib/beefcake.rb:174:in `decode'
2015-03-12T16:11:27.197307+00:00 app[outlet.1]: /app/vendor/bundle/ruby/2.2.0/gems/beefcake-1.1.0.pre1/lib/beefcake/buffer/base.rb:97:in `read'
2015-03-12T16:11:27.197355+00:00 app[outlet.1]: /app/vendor/bundle/ruby/2.2.0/gems/beefcake-1.1.0.pre1/lib/beefcake.rb:203:in `decode'
2015-03-12T16:11:27.197391+00:00 app[outlet.1]: /app/vendor/bundle/ruby/2.2
@jeremyvdw
jeremyvdw / gist:7583eec5c5a3ed3b1505
Created January 16, 2015 13:11
Axe 4: Promises/Futures

Promises/Futures

background

La ludification a introduit une pression globalement plus forte à de multiples endroits de la plateforme. Durant les opérations de scoring, étape essentielle du jeu, de nombreuses informations doivent être écrites pour mettre à jours les scores des joueurs, leurs statistiques, les statistiques internes à la plateforme, ainsi que d’autres données concernant l’état du joueur dans le jeu en cours.
Il s’agit d’une matrice importante d’informations: pour chaque joueur, chaque opération de scoring provoque au minimum 97 opération d’écritures en base de données, jusqu’à 120 dans certains cas, et au moins 3 opérations de lecture.
En moyenne, chaque match compte 180 opportunités de prédiction (GuessOpportunity), chacune de celle ci comporte au minimum 100 prédictions (Guess).

La figure suivante représente une partie des opérations de lecture/écriture lors du scoring d'une prédiction d'un joueur.

# Holds the current point at any given moment
# set: the set we're in
# game: the game we're in
# point: the point we're in (aggregated)
#
# Ex:
# +----------+---+---+---+----+
# | Nadal* | 6 | 4 | 5 | 30 |
# +----------+---+---+---+----+ ==> Nadal is serving for: Point.new(3,8,4)
# | Djokovic | 4 | 6 | 2 | 15 |
An exception occurred running /usta_recorder/vendor/bundle/rbx/2.1/bin/rackup:
stream closed (EOFError)
Backtrace:
IO(TCPSocket)#read_nonblock at kernel/common/io.rb:1891
Net::BufferedIO#rbuf_fill at /opt/rubies/rbx-2.2.7/gems/gems/rubysl-net-protocol-2.0.1/lib/rubysl/net/protocol/protocol.rb:153
Net::BufferedIO#readuntil at /opt/rubies/rbx-2.2.7/gems/gems/rubysl-net-protocol-2.0.1/lib/rubysl/net/protocol/protocol.rb:134
Net::BufferedIO#readline at /opt/rubies/rbx-2.2.7/gems/gems/rubysl-net-protocol-2.0.1/lib/rubysl/net/protocol/protocol.rb:144
Net::HTTPResponse.read_status_line at /opt/rubies/rbx-2.2.7/gems/gems/rubysl-net-http-2.0.4/lib/net/http/response.rb:39
Net::HTTPResponse.read_new at /opt/rubies/rbx-2.2.7/gems/gems/rubysl-net-http-2.0.4/lib/net/http/response.rb:28
{ } in Net::HTTP#transport_request at /opt/rubies/rbx-2.2.7/gems/gems/rubysl-net-http-2.0.4/lib/rubysl/net/http/http.rb:1407
# List of environments and their heroku git remotes (id: 'remote_name')
HEROKU_ENVIRONMENTS = {
staging: 'staging-remote-name',
production: 'production-remote-name'
}
namespace :deploy do
# Create rake tasks to deploy on Heroku environments
# $ rake -T deploy
# rake deploy:production # Deploy to production