Skip to content

Instantly share code, notes, and snippets.

@dncrht
dncrht / gist:8771881
Created February 2, 2014 17:35
List of pub/sub gems

Pub/sub pattern gems to simplify your models and avoid callbacks:

@dncrht
dncrht / linter.rb
Last active August 29, 2015 13:56
A simple CSS linter
# inspired by twitter's RECESS
# http://twitter.github.io/recess/
# usage: git diff | ruby ~/linter.rb
class Linter
def process
@result = {}
STDIN.each_line do |line|
@line = line[2..-1]

20. Use Full Text Search in PostgreSQL

$ rails g resource article subject body:text
class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
@dncrht
dncrht / open_struct.rb
Created August 2, 2013 10:35
Lightweight OpenStruct implementation (it preserves method cache)
class OpenStruct
def initialize(args)
args.each_pair do |k,v|
instance_variable_set "@#{k}", v
end
end
def method_missing(name, *args)
instance_variable_get "@#{name}"
/**
* QUÉ ES ESTO
* Una manera muy simple de organizar los eventos de una página de tal modo que no están
* esparcidos por el código javascript. Inspirado en las vistas de backbone.js
*
* POR QUÉ
* De este modo los eventos que escucha tu página están declarados en un lugar evidente.
*
* CÓMO USARLO
* Crea una clase View que herede de AbstractView. Esta clase debe definir:
@dncrht
dncrht / abstract_view.js.coffee
Created December 28, 2013 11:42
WHAT IS THIS A very simple way to organize page events so they are not scattered through the javascript code. Inspired by backbone.js views. WHY This way all the events your page listens are declared in one obvious place. HOW TO USE IT Create a View class that inherits from AbstractView. This class should define: - an ''event'' property, with al…
class @AbstractView
constructor: ->
console.log "I'm not meant to be instantitated"
render: ->
for event_selector of @events
event_selector_array = event_selector.split(' ')
event = event_selector_array.reverse().pop()
selector = event_selector_array.reverse().join(' ')
if selector == 'document'
/**
* Clase de ejemplo o referencia para usarse con AbstractView.
*/
View = (function(_super) {
__extends(View, _super);
function View() {
return View.__super__.constructor.apply(this, arguments);
}
@dncrht
dncrht / map_omit.js
Created January 29, 2016 07:34
JS map and omit
_ = {
map: function(hash, lambda) {
return Object.keys(hash).map(function(key) {
var value = hash[key];
return lambda(value, key);
});
},
omit: function(hash, unwanted) {
var tmp = {};
@dncrht
dncrht / rxjs_bacon.md
Last active February 6, 2016 09:40
RxJS and Bacon.js equivalences

RxJS and Bacon.js equivalences:

Bacon.js RxJS
Create stream for keyup events from an element var inputText$ = $([data-js=my-input]).asEventStream('keyup').map('.target.value'); var inputText$ = Rx.Observable.fromEvent($('[data-js=my-input]'), 'keyup').pluck('target', 'value')
Create stream for keyup events from a live element var inputText$ = $(document).asEventStream('keyup', '[data-js=my-input]').map('.target.value'); var inputText$ = Rx.Observable.create(function(observer) {$(document).on('keyup', '[data-js=my-input]', function(e) {observer.onNext(e.target.value);});});
Subscribe to a stream inputText$.onValue(function(props) {…}); inputText$.subscribe(function(props) {…});
Create stream from promises Bacon.fromPromise($.get(url, {text: text})); Rx.Observable.fromPromise($.get(url, {text: text}));
@dncrht
dncrht / fizzbuzz.rb
Created March 28, 2016 12:20
my fizzbuzz implementation
100.times do |i|
out = ''
out << 'fizz' if (i%3).zero?
out << 'buzz' if (i%5).zero?
out << i.to_s if out.empty?
puts out
end