Bitácora de desarrollo
viernes, 3 de octubre de 2014
REDIS
Redis básicamente es una "BD" key/value, donde lo mas normal es guardar mensajes que puedan desecharse, que no sean muy importantes, y la ventaja sobre otra BD es que es super rapida pues esta en memoria.
Suscribirse a un canal y publicar
Esto es muy útil para "escuchar" cuando ciertas llaves (canal) cambie. El código en Node sería, para escuchar:
const redis = require('redis');
const client = redis.createClient();
//el canal que queramos, puede ser por usuario, general, etc
client.subscribe('pubsub');
//escuchamos el canal, cuando algo se reciba, lo procesamos
client.on('message', function(channel, message){
console.log('Recibiendo mensaje');
console.log(message);
});
console.log('Trabajando');
Y para probar, en el mismo redis console (redis-cli) lanzamos un mensaje al canal:
PUBLISH pubsub "mensaje"
Y el node lo recibe sin hacer más!
Fuente: http://stackoverflow.com/questions/4441798/how-to-use-redis-publish-subscribe-with-nodejs-to-notify-clients-when-data-value
Desde PHP: http://xmeng.wordpress.com/2011/11/14/pubsub-in-redis-using-php/
Múltiples BD
Redis puede tener muchas BD, por default 16, y esto sirve para no mezclar llaves de diferentes temas, o hasta para cuando se quiere hacer un flush, solo se hace sobre la BD que se quiere.
No hay manera de identificarla por nombre aun :( pero podemos llevar un registro en Node (o donde sea) que diga que la BD 1 es de, sesiones por ejemplo.
Para cambiarse de BD default (0) hacemos: SELECT <x>
viernes, 19 de septiembre de 2014
UBUNTU - MySQL - AWS - Conexión remota
En un servidor AWS le di salida al puerto de mysql pero no me podía conectar desde afuera (si ya se, no debería porque no es seguro :P ), entonces modifique el /etc/mysql/my.cnf y comente la línea de bind-address, reinicie el servicio y voilá!
jueves, 18 de septiembre de 2014
GRUNT - Handlebars
https://github.com/gruntjs/grunt-contrib-handlebars
'use strict';
module.exports = function(grunt) {
grunt.registerTask('default', ['watch']);
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
handlebars: {
compile: {
options: {
namespace: 'handlebars'
},
files: {
'./js/templates/templates.js' : ['./hbs/*.hbs']
}
}
},
watch: {
handlebars: {
files: [
'./hbs/*.hbs'
],
tasks: 'handlebars'
}
}
});
grunt.loadNpmTasks('grunt-contrib-handlebars');
grunt.loadNpmTasks('grunt-contrib-watch');
};
GRUNT - Iniciando
Grunt es un script runner, su funcionalidad mayor es ahorrarnos el estar ejecutando diferentes comandos para generar nuestra aplicación.
En el Grunt, metemos toda la compilación, revisión de errores y hasta pruebas del sistema. Desde la compilación de JADE, Handlebars, uglify, concatenación hasta las pruebas en Mocha/Jasmine, pasando por deploy en directorios de producción o desarrollo (se recomienda un Grunt de desarrollo y un Grunt para producción)
http://gruntjs.com/
El que siempre vamos a incluir es el watch, que lo que hace es monitorear ciertos directorios y ejecutar tareas cuando haya un cambio en el o los directorios que se están monitoreando.
https://github.com/gruntjs/grunt-contrib-watch
miércoles, 10 de septiembre de 2014
BOOTBOX - Alertas y modales, dependiente de jQuery
Bootbox es un buen plug-in para mostrar alertas y modales, dependiente de jQuery.
Hace realmente lo mismo que se puede hacer con el plug-in modal (el normalito de siempre), pero la ventaja es que ya esta hecho, y solo se llama con javascript simple.
Fuente:
http://bootboxjs.com
Ejemplo:
var mensaje = {
message : "¿Desea eliminar el registro?",
buttons :{
cancel:{
className:"btn-danger",
label:"Cancelar",
callback:function(){
console.log("cancel");
}
},
confirm:{
className:"btn-success",
label:"Confirmar",
callback:function(){
console.log("success");
}
}
}
}
bootbox.dialog(mensaje);
martes, 9 de septiembre de 2014
JQUERY - Tips & Tricks
Escuchar cuando se envía una forma
.submit()
Obtener todos los campos de una forma
$('#formAdd input[type!="submit"], #formAdd select').each()
Para este caso, buscamos de la forma con id (#) y luego le decimos que todos los inputs, EXCEPTO los de tipo submit, y por último también le decimos que los select.
http://api.jquery.com/submit/
Para formatear numeros
Encontre un buen plugin: https://github.com/teamdf/jquery-number/
Muy fácil el uso:
$.(valor,num decimals)
$.(1234,2) -> 1,234.00
Emular dobleclick
.dblclick()
Obtener el contenido HTML de un elemento, o cambiarlo
.html()
.html('valor a poner')
Buscar elementos
.find()
Permite buscar elementos por su id, su nombre de tag, su class o alguna otra propiedad, y se pueden combinar elementos de búsqueda.
http://api.jquery.com/find/
$('.dataTables_scrollFootInner').find('#totalDebe').html('$ '+ $.number(totalDebe,2));
Busca primero por el class dataTables_scrollFootInner despues en lo que encontró, busca el elemento con el id totalDebe y por último asigna su valor HTML.
Ejercicios de jQuery
http://jqexercise.droppages.com/
Limpiar campos de forma
.trigger('reset')
Detener el envio de un form, cuando se cacha el submit
$('#formEncabezado').submit(function(event){
event.preventDefault();
});
Cambiar de tabs
$('#polizaTabs a[href="#detalles"]').tab('show');
JAVASCRIPT - Validación de Formas con Parsley
Excelente librería para la validación de formas HTML:
http://parsleyjs.org/
Algunos ejemplos:
Suscribirse a:
Entradas (Atom)