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 / quinky.rb
Created July 1, 2014 23:05
Quinky (GroupMe haiku bot)
require 'json'
require 'typhoeus'
require 'ansi'
ACCESS_TOKEN = #
GROUP_ID = #
def register_bot(name, avatar_url=nil)
url = "https://api.groupme.com/v3/bots?token=#{ACCESS_TOKEN}"
body = {
@FestivalBobcats
FestivalBobcats / .bash_profile
Created March 14, 2014 16:00
Git branch and changes indicator for bash
__quiet() {
$1 2> /dev/null
}
parse_git_branch() {
__quiet 'git branch' | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
count_git_changes() {
count=$(__quiet 'git status -s' | wc -l)
@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 / 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: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 / 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: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: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: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']
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...