Skip to content

Instantly share code, notes, and snippets.

View FestivalBobcats's full-sized avatar

Ben Hundley FestivalBobcats

  • Mission Cloud
  • Fayetteville, AR
View GitHub Profile
@FestivalBobcats
FestivalBobcats / gist:1319903
Created October 27, 2011 15:33
Multi image uploader in Backbone.js
(function($){
//
//-------------------------------------- Model : Image
//
Image = Backbone.Model.extend({
defaults: {
'delete' : false
}
});
require 'acceptance/admin/admin_spec'
feature 'Channel management', :js => true, :admin => true do
let!(:channel) { Fabricate(:channel) }
# TODO: make helper for doing something like
# on_page admin_channels_path do
# scenario...
@FestivalBobcats
FestivalBobcats / gist:1378576
Created November 19, 2011 07:02
1,679,616 unique 4-character ID possibilities. Each generated in < 2ms
module Arbiter
class Identity
@@data = Arbiter.db.collection('data')
@@coll = Arbiter.db.collection('page_ids')
def initialize
@length = identity_matrix['length']
@last = identity_matrix['last']
@idx = identity_matrix['idx']
@FestivalBobcats
FestivalBobcats / gist:1387748
Created November 23, 2011 02:31
beginning of a DSL for me to abuse embedding and linking in MongoDB
# Facets are little bits of info about visitors
# Each facet has it's own Mongo collection; however,
# Essential attributes of the facet are imbedded in an Impression.
# This greatly improves performance by avoiding extraneous lookups,
# but also links Facets to their respectful impressions, much like
# facet :has_many => :impressions
# The containing module serves to provide "facet definitions" --
@FestivalBobcats
FestivalBobcats / gist:2898588
Created June 8, 2012 23:09
Produce one big image from a folder of images
# requires ImageMagick. very simple to install
# quick and simple image montaging
collage() {
# convert all images to png
# squash them into one grid-based .png
# cleanup
convert ./* MON%02d.png && montage ./MON*.png -geometry +0+0 __montage.png && rm ./MON*
}
@FestivalBobcats
FestivalBobcats / gist:5623373
Created May 21, 2013 21:24
setting up auto-complete in ElasticSearch with test documents
require 'tire'
Tire.configure do
url "http://api.qbox.io/xxxxxxxx"
end
CONFIGURATION = {
mappings: {
product: {
properties: {
@FestivalBobcats
FestivalBobcats / gist:6689477
Created September 24, 2013 18:52
importing stuff into qbox with tire
Tire.configure do
url QBOX_ENDPOINT
end
Tire.index(INDEX_NAME) do
delete_if_exists
create
end
json_filepaths.each do |filepath|
@FestivalBobcats
FestivalBobcats / TransportTest.java
Last active December 30, 2015 20:39
Connecting to Qbox.io Elasticsearch cluster with the Java TransportClient.
import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilders;
@FestivalBobcats
FestivalBobcats / gist:7913652
Last active December 31, 2015 01:19
Migrating Elasticsearch index from one cluster to another.
require 'json'
require 'tempfile'
OLD_CLUSTER_ENDPOINT = '' # root endpoint
NEW_CLUSTER_ENDPOINT = '' # root endpoint
PER_PAGE = 3_000
def get_json(url)
JSON.parse(`curl -s '#{url}'`)
@FestivalBobcats
FestivalBobcats / gist:1323387
Created October 28, 2011 19:57
Underscore.js implementation of Cartesian Product
function cartesianProductOf(){
return _.reduce(arguments, function(mtrx, vals){
return _.reduce(vals, function(array, val){
return array.concat(
_.map(mtrx, function(row){ return row.concat(val); })
);
}, []);
}, [[]]);
}