Skip to content

Instantly share code, notes, and snippets.

View brandur's full-sized avatar

Brandur Leach brandur

View GitHub Profile
@brandur
brandur / README.md
Last active August 29, 2015 14:01
gojsonschema issue #14 reproduction

gojsonschema issue #14 repro

Clone into $GOPATH and run:

git clone https://gist.github.com/fb3eb8e804cfbf9e1b7d.git repro
cd repro
go build
./repro
@brandur
brandur / heroku-hyper-schema.json
Last active August 29, 2015 14:01
Heroku Heroku-schema
{
"$schema": "http://json-schema.org/draft-04/heroku-hyper-schema#",
"id": "http://json-schema.org/draft-04/heroku-hyper-schema#",
"title": "Heroku JSON Hyper-Schema",
"allOf": [
{
"$ref": "http://json-schema.org/draft-04/hyper-schema#"
}
],
"definitions": {
@brandur
brandur / results.md
Last active August 29, 2015 14:01
Heroku schema validation

Validation Results

prmd verify

$ prmd verify docs/v3/schema.json
docs/v3/schema.json: Missing `#/id`
docs/v3/schema.json: Missing `schemata/build-result#/definitions/identity`
docs/v3/schema.json: Missing `schemata/config-var#/properties`
docs/v3/schema.json: Missing `schemata/config-var#/definitions/identity`
@brandur
brandur / request-trees.md
Last active August 29, 2015 14:05
Request Trees

But why gen a new id if someone passes you an id? Just use the supplied id in the called srvc.

This is certainly disputable territory, but the main motivation is that depending on service architecture, a single incoming request can balloon out into a full tree of backend requests because requests can map 1:N between any two components. Assigning every request in every component a unique ID allows any particular request to be isolated, while still allowing the any subsection of the tree to be viewed all at once.

Visually, this might look something like this:

      Component 1            Component 2            Component 3
+----------------------+----------------------+----------------------+
@brandur
brandur / reflect-request-ids.diff
Created September 2, 2014 02:33
Reflect Input Request IDs
diff --git a/lib/api/middleware/request_id.rb b/lib/api/middleware/request_id.rb
index 9367bf7..255f4e4 100644
--- a/lib/api/middleware/request_id.rb
+++ b/lib/api/middleware/request_id.rb
@@ -8,7 +8,8 @@ def initialize(app)
end
def call(env)
- request_ids = [SecureRandom.uuid] + extract_request_ids(env)
+ extracted_request_ids = extract_request_ids(env)
@brandur
brandur / keybase.md
Created September 19, 2014 03:25
keybase.md

Keybase proof

I hereby claim:

  • I am brandur on github.
  • I am brandur (https://keybase.io/brandur) on keybase.
  • I have a public key whose fingerprint is FC35 6F94 2F12 2F7D 5B87 EB64 E906 76B1 78CC 90AA

To claim this, I am signing this object:

> u = User.first
=> #<User id: 23, email: "brandur+t003@heroku.com", created_at: "2012-03-13 14:38:11", invited_by_id: nil, last_
login: "2012-03-13 14:39:46", reset_password_hash: nil, salt: nil, password_hash: nil, heroku_garden: nil, last_
git: nil, deleted_at: nil, payment_session_key: nil, confirmed_billing_info: nil, beta: nil, zendesk_created_at:
nil, verified_at: nil, billing_name: nil, billing_address: nil, billing_card: nil, invited_on: "2012-03-13 14:3
8:07", invite_converted_on: nil, pending_payment_session_key: nil, cached_usage_total: nil, confirmed_billing_at
: nil, max_apps: nil, api_key: "ca0ff390071bf08e038752154dd2c05533a810a9", signup_source_id: 6, rate_limit: nil,
first_name: nil, last_name: nil, invitation_secret: nil, password_hash_v2: "$2a$10$5PKpvQaDF2Lp0iGFl9KxKuoLO76s
4lMTFdizjxpgGqY4...", pref_site_version: nil, full_name: nil, accepted_tos_at: "2012-03-13 14:38:11", receive_ne
wsletter: false, suspended_at: nil, suspicious_since: nil>
@brandur
brandur / ajax_setup.coffee
Created September 1, 2012 22:10
Ajax Setup
$.ajaxSetup
headers:
Authorization: "Basic #{toBase64(":supersecretpassword")}"
@brandur
brandur / index.html.haml
Created October 30, 2012 04:15
iscorein.heroku.com / welcome#index
%h1 No
@brandur
brandur / activerecord-2
Created June 5, 2013 05:49
Moving a non-trivial app from ActiveRecord 2.3.17 to ActiveRecord 3.2.13
# ab -n 1000 -c 10 -A :xxx https://api.brandur.herokudev.com/apps
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking api.brandur.herokudev.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests