Skip to content

Instantly share code, notes, and snippets.

View alesanabv's full-sized avatar

Alejandro Sanabria alesanabv

  • Bogotá, Colombia
  • 11:19 (UTC -05:00)
View GitHub Profile
@alesanabv
alesanabv / snippets.cson
Created June 28, 2016 15:59
snippet react component
'.source.js':
'React component':
'prefix': 'rc'
'body': """
'use strict';
import React from 'React';
export default React.createClass({
render() {
return (
var fs = require('fs');
var exec = require('child_process').exec;
var Promise = require('promise');
var folder = __dirname + '/admin-react/experiences/';
fs
.readdir(folder, function(err, files) {
files.map(function(file) {
@alesanabv
alesanabv / js-observables-binding.md
Created June 23, 2016 02:24 — forked from austinhyde/js-observables-binding.md
Vanilla JavaScript Data Binding

Observables

You don't really need a framework or fancy cutting-edge JavaScript features to do two-way data binding. Let's start basic - first and foremost, you need a way to tell when data changes. Traditionally, this is done via an Observer pattern, but a full-blown implementation of that is a little clunky for nice, lightweight JavaScript. So, if native getters/setters are out, the only mechanism we have are accessors:

var n = 5;
function getN() { return n; }
function setN(newN) { n = newN; }

console.log(getN()); // 5

setN(10);

function observable(value) {
let listeners = [];
let notify = (newValue) => listeners.forEach((listener) => listener(newValue));
function accessor(newValue) {
if(arguments.length && newValue !== value) {
value = newValue;
notify(newValue);
}
@alesanabv
alesanabv / api.js
Last active July 30, 2016 22:05
quick api with express & mongoose.
'use strict';
import _ from 'lodash';
export default function api(model) {
return {
all(req, res) {
let populate = req.query.populate ? req.query.populate : '';
let find = req.query.find ? JSON.parse(req.query.find) : {};
let sort = req.query.order ? JSON.parse(req.query.order) : {};
'use strict';
var watchify = require('watchify');
var browserify = require('browserify');
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var gutil = require('gulp-util');
var sourcemaps = require('gulp-sourcemaps');
var lodash = require('lodash');
var reactify = require('reactify');

Advices for you reader coder

Simpler is usually better

Don't be clever.

Don't try to write complicated code on purpose to show how smart you are.

SRP (single responsibility principle)

"Clean Code" by Uncle Bob

@alesanabv
alesanabv / iptables.sh
Last active August 29, 2015 14:26 — forked from sandcastle/iptables.sh
Default firewall configuration using iptables for a fresh Ubuntu 14.04 server.
#!/bin/sh -x
# ==================================
# iptables default configuration script
#
# - this locks down our servers port access
# ==================================
# install fail2ban
sudo apt-get update
'use strict';
var mysqlBackup = require('./mysql-backup');
var schedule = require('node-schedule');
schedule.scheduleJob({ hour: 22, minute: 0 }, mysqlBackup);
@alesanabv
alesanabv / nginx_pm2
Created June 2, 2015 23:12
nginx_pm2
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';