Skip to content

Instantly share code, notes, and snippets.

View plcstevens's full-sized avatar

Philip Stevens plcstevens

View GitHub Profile
@plcstevens
plcstevens / postgres_queries_and_commands.sql
Created January 17, 2019 11:45 — forked from rgreenjr/postgres_queries_and_commands.sql
Useful PostgreSQL Queries and Commands
-- show running queries (pre 9.2)
SELECT procpid, age(clock_timestamp(), query_start), usename, current_query
FROM pg_stat_activity
WHERE current_query != '<IDLE>' AND current_query NOT ILIKE '%pg_stat_activity%'
ORDER BY query_start desc;
-- show running queries (9.2)
SELECT pid, age(clock_timestamp(), query_start), usename, query
FROM pg_stat_activity
WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%'
@plcstevens
plcstevens / Schema.elm
Created August 20, 2018 15:40
A basic example of trying to create a schema ignorant JSON decoder in ELM
import Dict exposing (Dict)
import Json.Decode as Decode
type SchemaData
= SchemaObject (Dict String SchemaData)
| SchemaList (List SchemaData)
| SchemaString String
| SchemaInt Int
| SchemaBool Bool
| SchemaNull
@plcstevens
plcstevens / reevoomark_observing.js
Last active April 6, 2016 10:44
This is how a client can implement their own callbacks onto our badge actions.
(function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://cdn.mark.reevoo.com/assets/reevoo_mark.js';
var s = document.getElementById('reevoomark-loader');
s.parentNode.insertBefore(script, s);
})();
afterReevooMarkLoaded = [function(){
ReevooApi.load('YOUR_TRKREF', function(retailer){
@plcstevens
plcstevens / gist:8238561
Last active January 2, 2016 02:39 — forked from lamp/gist:7769533
(function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://cdn.mark.reevoo.com/assets/reevoo_mark.js';
var s = document.getElementById('reevoomark-loader');
s.parentNode.insertBefore(script, s);
})();
afterReevooMarkLoaded = [function(){
ReevooApi.load('YOUR_TRKREF_HERE', function(retailer){
@plcstevens
plcstevens / gist:7560657
Last active December 28, 2015 20:49 — forked from lamp/gist:7543563
<script id="reevoomark-loader" type="text/javascript" charset="utf-8">
(function() {
var trkref = 'TRKREF';
var myscript = document.createElement('script');
myscript.type = 'text/javascript';
var protocol = (window.location.protocol == 'https:')? window.location.protocol : 'http:';
myscript.src=(protocol + '//mark.reevoo.com/reevoomark/'+trkref+'.js?async=true');
var s = document.getElementById('reevoomark-loader');
s.parentNode.insertBefore(myscript, s);
})();

Comufy is an add-on for providing a programmer friendly API for connecting Heroku applications with the Comufy Social Suite.

The Comufy Social Suite delivers direct, personalised notifications at scale, with relevant content, targeted by user profile and behaviour, with complete attribution of results.

By adding Comufy to your application you will have the Comufy Service Suite available and functional at almost no development costs. The Comufy addon provides the tools to push your collected data to Comufy's Service Suite, providing you with their excellent data analysis and targeted messaging to get the most out of your Facebook applications and users.

require 'comufy'
connect = Comufy.connect(access_token: ENV["COMUFY_ACCESS_TOKEN"], expiry_token: Time.now.to_i + 1000000)
# or use a yaml file
# connect = Comufy.connect(yaml: "path/to/yaml/file")
# lets add a user to our facebook application!
# http://graph.facebook.com/THEIR_NAME will get you back their id
# tags are the data fields to enter for this user.
app_name = "NAME_OF_YOUR_APPLICATION"

Comufyrails

This gem allows Ruby on Rails projects to connect with the Comufy service. It uses asynchronous calls and separate rake tasks to communicate with the Comufy API, allowing you to create, update your list of users as well as registering new tags and send messages to your users.

Installation

Add any of the lines to your application's Gemfile:

es_alias = ENV.fetch('ALIAS')
hosts = ENV.fetch('HOSTS')
old_index = ENV.fetch('OLD_INDEX')
old_type = ENV.fetch('OLD_TYPE')
new_index = ENV.fetch('NEW_INDEX')
new_type = ENV.fetch('NEW_TYPE')
size = ENV.fetch('SCAN_SIZE', 100)
client = Elasticsearch::Client.new(hosts: hosts)
unless client.indices.exists(index: new_index)
@plcstevens
plcstevens / controller_example.rb
Last active August 29, 2015 14:26
Include this in controllers and render with your JSON to get pagination URLs matching http://jsonapi.org/format/#fetching-pagination specification. Requires that you use https://github.com/amatsuda/kaminari
class ExamplesController < ApplicationController
def index
@examples = Example.order(id: :desc)
render json: { pagination: paginate(@examples), examples: @examples }
end
private
def paginate(active_relation)
Pagination.for(self, active_relation)