Denormalización

Esto es algo de lo cual quería hablar, muchos colegas me han comentado muy interesados acerca del mundo NoSQL y su uso. Lo que he podido comentarles es que deben entender bien lo que significa la Denormalización y que todo lo que aprendieron con base de datos relacionales no funciona de la misma manera.

Vamos a ver un poco de que se trata, según Wikipedia tenemos que:

La denormalización es el proceso de procurar optimizar el desempeño de una base de datos por medio de agregar datos redundantes. A veces es necesaria porque los actuales SGBD implementan el modelo relacional pobremente. Un verdadero SGBD relacional debe permitir una base de datos completamente normalizada a nivel lógico, mientras proporciona el almacenamiento físico de los datos afinado para alto rendimiento…

Ahora, buscando en Internet me encontré con estos excelentes artículos que les ayudará a entender un poco mas de que se trata:

https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html

 

 

http://es.discovermeteor.com/chapters/denormalization/

Como siempre, si te gustó este contenido y lo encontraste útil, ¡compártelo en tus redes sociales!

¡Hasta un próximo post!

La Biblia del Java

BONUS DEL FIN DE SEMANA

Cada fin de semana estaré compartiendo un bonus, generalmente van a ser los libros que he ido consiguiendo como bonus de otras paginas.

En esta ocasión les traigo un viejo libro llamado La biblia del Java. Este libro me recuerda a aquellos años en donde estaba trabajando con Java y la pasaba muy mal porque trabajar Java para web era horrible.

Espero puedan disfrutar este libro y aprovechar el contenido que hoy en día se encuentra vigente.

Enlace: http://adf.ly/1XILPX

Nota: El enlace está acortado con adf.ly, demora 5 segundos para que continúes con la descarga, con esto me apoyas para continuar publicando.

Como siempre, si te gustó este contenido y lo encontraste útil, ¡compártelo en tus redes sociales!

¡Hasta un próximo post!

 

Deploy Meteor.js + Heroku Custom Buildpack + NodeJS

Heroku es un PaaS que te permite fácilmente desplegar aplicaciones web de forma rápida y segura por medio de “Buildpacks”, estos no son mas que scripts que se encargan de realizar el despliegue automatizado de una aplicación que ha sido subida por medio de git a Heroku.

Cada vez que haces un git push a Heroku, Heroku compila, prepara y despliega tu codigo para que sea ejecutado en la plataforma de Heroku. Este despliegue y compilación automatizada está basado en una colección de scripts llamados buildpacks. Heroku actualmente tiene implementado buildpacks para diferentes lenguajes y frameworks como Ruby, Python, Java, Clojure, Node.js, Scala, Go y PHP.

Ruby https://github.com/heroku/heroku-buildpack-ruby
Node.js https://github.com/heroku/heroku-buildpack-nodejs
Clojure https://github.com/heroku/heroku-buildpack-clojure
Python https://github.com/heroku/heroku-buildpack-python
Java https://github.com/heroku/heroku-buildpack-java
Gradle https://github.com/heroku/heroku-buildpack-gradle
Grails https://github.com/heroku/heroku-buildpack-grails
Scala https://github.com/heroku/heroku-buildpack-scala
Play https://github.com/heroku/heroku-buildpack-play
PHP https://github.com/heroku/heroku-buildpack-php
Go https://github.com/heroku/heroku-buildpack-go

También es posible crear o sobreescribir tus propios buildpacks para realizar cambios en el despliegue de tu aplicación en Heroku.

Si has llegado a este punto ya tienes una aplicación desarrollada en Meteor y quieres hacer deploy de tu aplicación sobre Heroku. Para ello debemos aplicar un custom buildpack que permita a Heroku desplegar correctamente tu aplicación.

Para ello debemos indicarle a Heroku que vamos a usar un buildpack particular:

Ahora debemos indicarle donde se encuentra nuestra base de datos, yo particularmente utilizo la cuota gratis de MongoLab

Solo nos queda hacer git push en nuestro proyecto para que se haga el despliegue en Heroku.

¡Hasta un próximo post!

Error leyendo /home/user/.nano_history: Permiso denegado Pulsa intro para continuar iniciando nano

Algunas veces al tratar de editar o crear un archivo de texto utilizando editores de texto como «nano» nos encontramos con un mensaje de error que si bien no es importante, es molesto. Basta con presionar la tecla Enter para que el mensaje desaparezca y entremos en el programa para editar dicho archivo.

Este mensaje de error esta causado por no tener permisos para escribir en el archivo /home/usuario/.nano_history, si se fijan bien, el nombre de archivo comienza con un «.» (punto), lo que en Linux significa que es un archivo oculto.

Para solucionarlo es necesario devolverle los permisos a dicho archivo (ya que fueron cambiados accidentalmente por lo general). Basta con ejecutar el comando chmod 755 como root, o con sudo para distribuciones basadas en debian.

:~$ nano ./archivo.txt

Error leyendo /home/usuario/.nano_history: Permiso denegado

Pulsa intro para continuar iniciando nano

:~$ sudo chmod 775 ./.nano_history
Password: (pon el password correcto)

y listo !

Ya no molestara mas este mensaje la próxima vez que deseemos crear o editar archivos de texto con nano.

Nano es un editor de texto muy potente para la terminal de linux. Carece de interfaz gráfica lo que lo hace una excelente opción para editar archivos de configuración cuando las cosas van mal y no pueden acceder al escritorio o manejador de ventanas.

Chequear una cadena vacia en bash

En Bash muy a menudo debemos comprobar si una variable tiene un valor distinto de una cadena vacía. Esto se puede hacer usando los operadores de comparación de cadenas -n o -z.

El operador -n comprueba si la cadena no es nulo. Efectivamente, esto devolverá True para todos los casos, excepto cuando la cadena no contiene ningún carácter. es decir:

Similar, el operador -z chequea si la cadena es null, ejemplo:

Tenga en cuenta los espacios alrededor de los corchetes. Bash se quejará si los espacios no están allí.

¡Hasta un próximo post!

Configuración esencial de Grunt

Hace algunos años atrás un desarrollo requería añadir en nuestro proyecto de producción muchísimas hojas de estilo, scripts en javascript, e imágenes de diferentes tamaños. Esta cantidad de requests consumen muchísimo tiempo de carga en el servidor y de descarga del lado del browser, además, Google comenzó a penalizar en su Page Rank las páginas no optimizadas.

Luego se comenzó a escribir todo en 1 solo archivo CSS o JS, solucionando la cantidad de requests y obteniendo archivos enormes que hacían sumamente tedioso el mantenimiento de estos archivos.

Al pasar del tiempo y buscando soluciones, se comenzó a minificar los archivos para mantener todo en 1 solo archivo y optimizando el tamaño de los mismos, de igual forma no se lograba solucionar la facilidad de mantenimiento.

Hasta que finalmente comenzaron a salir a la luz los preprocesadores como LESS, SASS, COFFEE SCRIPTS entre otros, estos permiten optimizar los estilos y scripts para luego ser compilados y obtener archivos minificados, optimizados y de fácil mantenimiento en el tiempo.

Pero surge otro problema, hacer esta compilación y minificación constantemente consume muchísimo tiempo y durante el tiempo de desarrollo se convierte en algo tedioso de realizar por ser una tarea repetitiva.

Por ello se buscó optimizar y automatizar estas tareas, llegando asi GRUNT a solucionar esta labor, empleando menos horas de trabajo en tareas repetitivas como minificación, compilación, pruebas unitarias, validaciones, etc. Utilizando NodeJS como motor de compilación, y un archivo de configuración, es capaz de realizar múltiples tareas en paralelo y de forma asíncrona, al igual que añadir nuevas mejoras y plugins de forma facil ya que basicamente es Javascript.

Las configuraciones son variadas y dependen del desarrollo en el cual te encuentres, a continuación te dejo una configuración básica para cualquier proyecto.

Y por supuesto, si le sacaste provecho a este post, ¡no olvides compartirlo en tus redes sociales!

¡Hasta un próximo post!

Try Git

Para aquellos que quieren iniciarse en GIT, siempre les recomiendo este enlace:

Es un excelente acercamiento e iniciación.

¡Hasta un próximo post!

Reset MySQL root password

contar ocurrencias mysql

Perdiste la clave root de tu MySQL en Ubuntu?

Fácil, vamos a recuperarla:

Si quieres probar que ha funcionado:

¡Hasta un próximo post!

Heroku Cookbook

BONUS DEL FIN DE SEMANA

Cada fin de semana estaré compartiendo un bonus, generalmente van a ser los libros que he ido consiguiendo como bonus de otras paginas.

En esta ocasión les traigo un excelente libro Heroku Cookbook.

Espero puedan disfrutar este libro tanto como yo.

Enlace: http://adf.ly/1Wp4is

Nota: El enlace está acortado con adf.ly, demora 5 segundos para que continúes con la descarga, con esto me apoyas para continuar publicando.

Como siempre, si te gustó este contenido y lo encontraste útil, ¡compártelo en tus redes sociales!

¡Hasta un próximo post!

 

 

Usando Google Public DNS en Ubuntu Server

Generalmente prefiero usar los DNS de google y para Ubuntu Server no será la excepcion.

Cambiando el Nameserver

Abrimos /etc/resolv.conf y pegamos las siguientes lineas:

Podemos borrar o comentar las lineas del nameserver anterior, y eso es todo.

¡Hasta un próximo post!