Skip to content

Instantly share code, notes, and snippets.

View stefanoc's full-sized avatar

Stefano Cobianchi stefanoc

View GitHub Profile
require "thread"
module Synchronization
class Proxy
instance_methods.each { |m| undef_method m unless m =~ /^__|extend/ }
def initialize(target)
@__target__ = target
end
@stefanoc
stefanoc / query.sql
Last active June 21, 2016 11:37
Window function example
truncate table events;
CREATE TABLE events(ref_id integer, event_type text, ts integer);
INSERT INTO events (ref_id, event_type, ts) VALUES (1, 'foo', 1), (1, 'bar', 1), (2, 'foo', 0), (3, 'foo', 0), (1, 'foo', 4), (3, 'foo', 7), (2, 'bar', 10);
select
ref_id,
event_type,
ts,
first_value(ts) over (
partition by ref_id, event_type order by ts asc rows between 1 following and unbounded following
class Option
private def initialize(value)
@value = value
end
def self.Some(value)
new(value)
end
None = new(nil)
@stefanoc
stefanoc / list.rb
Created December 21, 2015 15:39
List
class List
attr_accessor :head, :tail
def initialize(head, tail)
self.head = head
self.tail = tail
freeze
end
def prepend(elem)
@stefanoc
stefanoc / choose.rb
Created July 19, 2011 12:42
Compact if/else expression
class TrueClass
def choose(if_true, if_false)
if_true
end
end
class FalseClass
def choose(if_true, if_false)
if_false
end
@stefanoc
stefanoc / calendar.js
Created June 6, 2011 15:07
Simple Calendar
Calendar = Class.create({
MONTHS : ["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"],
DAYS : ["dom", "lun", "mar", "mer", "gio", "ven", "sab"],
MONTH_DAYS : [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
year : null,
month : null,
specialDates : null,
initialize : function(_special) {
@stefanoc
stefanoc / ffexport.rb
Last active September 24, 2015 12:28
A simple script to export your FF data, based on http://bit.ly/fQ8Ocv
require "json"
require "open-uri"
require "optparse"
require "fileutils"
require "cgi"
class FriendfeedExporter
attr_reader :all_entries
def initialize(options)
class ActiveSupport::TestCase
class << self
def context(name, &block)
_context_stack_.unshift name.gsub(/\s+/,'_')
define_callbacks :"setup_#{_current_context_}", :"teardown_#{_current_context_}"
class_eval(&block)
_context_stack_.pop
end
def test_with_context(name, &block)
module Decorating
def decorate(meth_id, *modules)
alias_method("__#{meth_id}__", meth_id)
define_method(meth_id) do |*args|
result = send("__#{meth_id}__", *args)
modules.each { |m| result.extend(m) }
return result
end
end
require "digest/sha1"
module AuthenticationModel
def self.included(base)
base.send(:include, InstanceMethods)
base.send(:extend, ClassMethods)
base.send(:validates_presence_of, :email, :message => "L'indirizzo email &egrave; richiesto.")
base.send(:validates_presence_of, :password, :if => :password_required?, :message => "La password &egrave; richiesta.")
base.send(:validates_uniqueness_of, :email, :case_sensitive => false, :message => "Questo indirizzo email &egrave; gi&agrave; presente.")