Skip to content

Instantly share code, notes, and snippets.

@acook
acook / ubuntu_server_setup.bash
Last active December 20, 2015 20:48
Ubuntu server setup for Ruby, Nginx, and Node.js.
#!/usr/bin/env/bash
# run this like: `curl https://gist.github.com/acook/6192391/raw/ubuntu_server_setup.bash | bash`
echo "Enter the email address for this server's SSH key: "
read email
mkdir ~/.ssh
ssh-keygen -t rsa -C $email
echo "Enter password to install packages: "
module PubSub
class << self
def create type, channel, object
channel = channel.to_sym
case type
when :listener
listeners[channel] ||= Array.new
listeners[channel] << object
channels[channel] ||= Array.new

This is a proof-of-concept of a couple of concurrent data structures written in Ruby.

The implementations are heavily commented for those interested. There are benchmarks (with results) included below. The results are interesting, but, as always, take with a grain of salt.

Data structures

AtomicLinkedQueue is a lock-free queue, built on atomic CAS operations.

@doitian
doitian / unblocking-fifo.zsh
Last active September 21, 2020 11:06
Open unblocking FIFO on specified fd in zsh
#!/usr/bin/env zsh
set -e
[ -e /tmp/test.fifo ] || mkfifo /tmp/test.fifo
# open the FIFO on fd 3 without blocking
exec 3<> /tmp/test.fifo
zmodload zsh/zselect
@TylerRick
TylerRick / delegate_to_all.rb
Last active March 29, 2020 06:01
DelegateToAll. Like delegate.rb from Ruby's std lib but lets you have multiple target/delegate objects.
# DelegateToAll. Like delegate.rb from Ruby's std lib but lets you have multiple target/delegate objects.
require 'delegate'
class DelegatorToAll < Delegator
# Pass in the _obj_ to delegate method calls to. All methods supported by
# _obj_ will be delegated to.
#
def initialize(*targets)
__setobj__(targets)
@sj26
sj26 / assets.rake
Last active May 13, 2023 04:42
Don't discard cache during asset precompile. Full explanation and caveats: http://sj26.com/2013/02/09/the-asset-pipeline-isnt-actually-slow
# Stick this in lib/tasks/assets.rake or similar
#
# A bug was introduced in rails in 7f1a666d causing the whole application cache
# to be cleared everytime a precompile is run, but it is not neccesary and just
# slows down precompiling.
#
# Secondary consequences are the clearing of the whole cache, which if using
# the default file cache could cause an application level performance hit.
#
# This is already fixed in sprockets-rails for rails 4, but we patch here for
@mburst
mburst / bloomfilter.py
Created February 3, 2013 05:26
Code for creating and testing a simple bloom filter - http://maxburstein.com/blog/creating-a-simple-bloom-filter/
from bitarray import bitarray
import mmh3
class BloomFilter:
def __init__(self, size, hash_count):
self.size = size
self.hash_count = hash_count
self.bit_array = bitarray(size)
self.bit_array.setall(0)
@agnoster
agnoster / README.md
Last active March 10, 2025 15:41
My ZSH Theme

agnoster.zsh-theme

A ZSH theme optimized for people who use:

  • Solarized
  • Git
  • Unicode-compatible fonts and terminals (I use iTerm2 + Menlo)

For Mac users, I highly recommend iTerm 2 + Solarized Dark

@nhance
nhance / method_logger.rb
Created September 6, 2012 12:58
Rails compatible method logging. Use this to log all calls to instance methods of a class to the log.
Model.new.foo
@renato-zannon
renato-zannon / module.rb
Created September 4, 2012 04:07
Subclass module + use module_eval to define methods
class AttributeAccessor < Module
def initialize(name)
@name = name
module_eval { define_accessors }
end
private
def define_accessors
ivar = "@#{@name}"