Skip to content

Instantly share code, notes, and snippets.

View seejohnrun's full-sized avatar
🤗
Writing codes

John Crepezzi seejohnrun

🤗
Writing codes
View GitHub Profile
# split into groups of maximum size BATCH_SIZE
groups = []; grp = nil
items.each_with_index do |item, idx|
groups << (grp = []) if idx % BATCH_SIZE == 0
grp << item
end
@seejohnrun
seejohnrun / Coming soon
Created February 9, 2011 02:52
Twitter Streaming Search Growl Notifications
#!/usr/bin/env ruby
require 'rubygems'
require 'twitterstream'
module MassStream
CREDS = [
{:username => 'xxx', :password => 'xxx'},
]
@seejohnrun
seejohnrun / gist:824374
Created February 13, 2011 02:44
Local short urls to avoid a short_urls table
class ShortId
# We cut out vowels to avoid shortened strings from mistakenly
# forming words
Alphabet = 'bcdfghjklmnpqrstvwxyz0123456789BCDFGHJKLMNPQRSTVWXYZ'
AlphabetLength = Alphabet.length
# Encode a numeric ID
def self.encode(id)
alpha = ''
@seejohnrun
seejohnrun / extra_indices.rb
Created February 24, 2011 16:49
Detect unnecessary indices in your database
require 'rubygems'
require 'active_record'
# Look through each table and look for indexes that are subsets
# of each other.
ActiveRecord::Base.establish_connection(:database => 'elfcast_development', :adapter => 'mysql')
ActiveRecord::Base.connection.tables.each do |table|
# go through each index
indexes = ActiveRecord::Base.connection.indexes(table)
@seejohnrun
seejohnrun / 9_to_5.rb
Created May 24, 2011 20:36
ice_cube 9-5
s = IceCube::Schedule.new(Time.now, :duration => 3600 * 7)
s.add_recurrence_rule IceCube::Rule.daily.day(:monday, :tuesday, :wednesday, :thursday, :friday).hour_of_day(9)
s.occurring_at?(Time.new(2011, 5, 30, 10, 0, 0)) # true, monday at 10am
s.occurring_at?(Time.new(2011, 5, 29, 10, 0, 0)) # false, sunday at 10am
s.occurring_at?(Time.new(2011, 5, 30, 8, 0, 0)) # false, monday at 8am
@seejohnrun
seejohnrun / gist:3188573
Created July 27, 2012 15:10
MessagePack & JSON
require 'yajl'
require 'rest-client'
require 'zlib'
require 'msgpack'
require 'benchmark'
require 'colorize'
def compressed(d)
output = StringIO.new
gz = Zlib::GzipWriter.new(output)
@seejohnrun
seejohnrun / settings.js
Created November 13, 2012 21:12
reverting defaults
var settings = Object.create({
_defaults: {},
_values: {},
setDefault: function (key, value) {
this._values[key] = this[key]
this._defaults[key] = value
Object.defineProperty(this, key, {
get: function () {
var undef = typeof this._values[key] === 'undefined'
return undef ? this._defaults[key] : this._values[key]
@seejohnrun
seejohnrun / at_once.rb
Created November 14, 2012 00:29
Enumeration functions that run async (would people want to see this in a library?)
module AtOnce
extend self
def map(objects, &block)
results = Array.new(objects.count)
threads = objects.map.with_index do |object, idx|
Thread.new do
results[idx] = block.call(object)
end
@seejohnrun
seejohnrun / array_partition.php
Created March 13, 2013 15:57
This should really just be part of PHP
<?php
// implementation
function array_partition($arr, $callable) {
$r = array(array(), array());
foreach ($arr as $e) {
$r[$callable($e) ? 0 : 1][] = $e;
}
return $r;
@seejohnrun
seejohnrun / random_k.js
Last active October 9, 2018 22:40
Select (n) random elements from a weighted set randomly
// ported from:
http://stackoverflow.com/questions/2140787/select-random-k-elements-from-a-list-whose-elements-have-weights
// each node in the heap has a value, weight, and totalWeight
// the totalWeight is the weight of the node plus any children
var Node = {};
var newNode = function (value, weight, totalWeight) {
var node = Object.create(Node);
node.value = value;
node.weight = weight;