ZSH Terminal

Este no es un post para tratar el tema de ZSH que por cierto la recomendaría dependiendo si sabes lo que haces. Por mi parte recientemente me dieron un proyecto en el cual trataba con JavaFX y Android utilizando los ports que se han creado, para mi desgracia el primer día fue un infierno ya que lo primero que tenía que hacer era establecer la variable de JAVA_HOME, tengo muchos post hablando de como se debe instalar las variables de entorno en equipos con sistema operativo OSX o Linux, la desgracia comenzó cuando realmente no me imprimía la ruta de un simple echo $JAVA_HOME, me salía en blanco! eso para mi fue un dolor de cabeza todo ese día, investigue por la red horas y horas y muchos con el mismo problema, ese día para no hacerlo muy largo debo admitir que me gano el problema:/.

Después de 2 días me puse analizar de porque antes me funcionaba y ahora no, tenía varias excusas como por ejemplo que antes utilizaba Lios, Mountain, Mavericks y ahora experimento con Yosemite y pues me excusaba con que el S.O. tenía algo malo o que las versiones de Java tenían un error con este nuevo S.O. Por suerte me puse a examinar cada variable de entorno que había creado y saben que? no había ninguna! pues me puse otra vez manos a la obra y recordé que había instalado ZSH ya que había tenido previa experiencia con esta y me había gustado y de hecho anteriormente me funcionaba perfectamente, para evitar ser redundante en este tema me di a la tarea de eliminar o deshabilitar zsh y caí en la página de http://apple.stackexchange.com en el cual había alguien con la misma duda y me di cuenta que no era necesario desinstalarla y me di cuenta de muchas otras cosas interesantes, para ya dar por finalizado el tema dejaré unas capturas primero por si alguien tiene algún problema con la terminal y le pueda servir como lo fue conmigo:

Usando zsh terminal y probando la variable de JAVA_HOME

Usando zsh terminal y probando la variable de JAVA_HOME

Esta es la configuración de arranque por defecto pero debemos cambiarlo

Esta es la configuración de arranque por defecto pero debemos cambiarlo

Cambiamos a /bin/bash

Cambiamos a /bin/bash

Después de haber hecho ese ajuste, deberás cerrar la terminal y volverla a ejecutar para ver los nuevos cambios:

Y cuando volvemos a ejecutar la terminal ya no tendremos a zsh y volverá la terminal a su normalidad, ya con esto podemos hacer un echo $JAVA_HOME y listo

Y cuando volvemos a ejecutar la terminal ya no tendremos a zsh y volverá la terminal a su normalidad, ya con esto podemos hacer un echo $JAVA_HOME y listo!.

En hora buena ahora puedo modificar el archivo .bash_profile sin ningún inconveniente y seguir jugando con la JVM poliglota, saludos.

Aviso: No me hago responsable del mal uso de esta información, la información mostrada en todos estos post es bajo tu responsabilidad y no mía, puede que me equivoque en algunas cosas pero trataré de que no pase muy seguido.

Recomiendo un video de los chicos de Chyld Studios que me aclaro muchas dudas con respecto a las variables locales y globales.

https://www.youtube.com/watch?v=wm0UTTdMzzs

Fuentes: http://apple.stackexchange.com/questions/100468/how-to-uninstall-zsh

Establecer variable JAVA_HOME en Windows

Si tu idea es hacer lo mismo pero para un S.O. diferente como una distribución de Linux ya sea Debian o Ubuntu entre otras y/o instalarlo en Mac OS X, te recomiendo que leas este anterior articulo que trata la manera de como instalarlo en esos S.O.

Para comenzar necesitamos asegurarnos de contar con los requisitos necesarios:

  • JDK + JRE (El JRE por lo general ahora suele instalarse junto con el JDK una vez que lo instales.)

Una vez instalado deberemos realizar lo siguiente, yo utilizaré Windows 8.1 para realizar este proceso, pero tu puedes realizar el procedimiento con versiones anteriores aunque habrán algunas variaciones en el proceso muy leves, será una serie de imagenes para que no se pierda nadie:

Click derecho en el botón de inicio y seleccionar "Sistema"

Click derecho en el botón de inicio y seleccionar “Sistema”

Seleccionar "Configuración avanzada del sistema"

Seleccionar “Configuración avanzada del sistema”

Seleccionar "Variable de entorno..."

Seleccionar “Variable de entorno…”

Seleccionamos "Nueva" variable de usuario

Seleccionamos “Nueva” variable de usuario

Copiar la ruta de instalación del JDK

Copiar la ruta de instalación del JDK

JAVA_HOME es el nombre de la nueva variable de usuario y pegamos la ruta del JDK como "valor de la variable"

JAVA_HOME es el nombre de la nueva variable de usuario y pegamos la ruta del JDK como “valor de la variable”

Buscamos la variable de sistema llamada "Path" y click en editar

Buscamos la variable de sistema llamada “Path” y click en editar

Debemos asegurarnos que antes de colocar la ruta del JDK nos fijemos que tenga el punto y coma y de no tenerlo lo agregamos nostros, con eso separamos valores

Debemos asegurarnos que antes de colocar la ruta del JDK nos fijemos que tenga el punto y coma y de no tenerlo lo agregamos nostros, con eso separamos valores

Aceptar

Aceptar

Aceptar

Aceptar

Cerrar

Cerrar

Ejecutamos la consola como "Administrador" por si las dudas

Ejecutamos la consola como “Administrador” por si las dudas

Corremos el comando java -version

Corremos el comando java -version

Y si vemos un resultado similar a este quiere decir que todo esta ok.

Y si vemos un resultado similar a este quiere decir que todo esta ok.

Listo, eso es todo.

Instalación de MongoDB en Mac OS

Para comenzar decir que todo el contenido publicado en este hilo es totalmente de la página oficial de MongoDB y las imágenes son de mi autoría.

1.Abrimos una ventana de la terminal y escribimos lo siguiente: curl -O http://downloads.mongodb.org/osx/mongodb-osx-x86_64-2.6.4.tgz. Empezará una descarga como la de la siguiente imagen y este se descargará en la carpeta del usuario:

downloading mongodb

2. Ahora debemos extraer el archivo descargado:

compressed

3. Debemos descomprimirlo con la herramienta que utilicemos o usando los comandos de la consola:

tar -zxvf mongodb-osx-x86_64-2.6.4.tgz

tar -zxvf mongodb-osx-x86_64-2.6.4.tgz

Y veremos la carpeta descomprimida

done1

4. Ahora debes mover esa carpeta a un directorio deseado o bien renombralo si lo piensas dejar en la misma carpeta o también déjale el mismo nombre(Ojo no se te ocurra borrarlo después si hay proyectos que dependen de este). Yo crearé un nuevo directorio para ir versionando a mongodb para posteriores proyectos, ejemplo:

Screen Shot 2014-11-03 at 3.08.43 PM

Screen Shot 2014-11-03 at 3.09.00 PM

Como te puedes fijar he utilizado -p por motivos de seguridad, si no sabes que significa te invito a que indagues un poco por el manejo de archivos en la terminal de OS X o Linux, para este caso solo te diré que lo que hará es que en caso de sufrir alguna modificación la carpeta esta te pedirá contraseña y esto es bueno en caso de que por algún motivo la vayamos a eliminar el nos avisará si estas seguro.

Screen Shot 2014-11-03 at 3.12.09 PM

5. Ahora debemos agregar una variable de entorno para asegurarnos de que siempre apunte a los binarios de mongo. Si no haz visto mis tutoriales sobre como agregar una variable de entorno para Java, Groovy, Maven, Apache, Grails entre otros más te invito a que los mires para que no te pierdas ya que en ellos hay bastantes detalles sobre como usar vim editor o mostrar los archivos ocultos y otros más.

Screen Shot 2014-11-03 at 3.18.04 PM

6. Ejecutar Mongo: Antes de correr mongodb debemos crear un directorio en el cual mongo empezará a escribir la data, por defecto el proceso mongod utiliza el directorio /data/db. Si tu creas un directorio distinto a este, deberás especificar ese directorio en la option dbpath cuando el proceso mongod inicia. Yo crearé el que trae por defecto para evitar problemas en este tutorial introductorio:

Screen Shot 2014-11-03 at 3.26.12 PM

Nota: antes de que ejecutemos node siempre verifica si la carpeta acepta lectura y escritura para que mongo no tenga problemas.

7. Ahora si no tenemos ningún problema solo escribimos “mongod” en la terminal y aparecerá el log de conexión indicándonos que está esperando conexiones en el puerto 27017, este puerto es por defecto en node pero se puede cambiar también.

Screen Shot 2014-11-03 at 3.29.36 PM

Podemos hacer un localhost:27017 para despejar dudas:

Screen Shot 2014-11-03 at 3.32.46 PM

Listo! tenemos mongodb instalado y ya podemos empezar con nuestros proyectos.

Fuentes MongoDB official page.

Winston – Node.JS

¿Que es Winston?

Muchas veces en nuestras aplicaciones en Node.JS tendemos a empezar a probar todo un flujo para un determinado fin y nos funciona con el típico console.log y no quiero decir que sea malo pero lo que debes saber es que es una mala práctica si nuestra aplicación esta up and running y nuestro equipo de desarrollo hace estas cosas pueden que las paguen caros de acuerdo a los resultados esperado.

Aunque no es algo de lo que, a priori, tengamos que preocuparnos, cabe destacar que escribir en la consola es un método síncrono por lo que, si abusamos brutalmente de ella, estaremos creando bloqueos en nuestra aplicación.

Hay librerías estupendas para registro de eventos y logging en general para Node, como winston.

Aquí tienes el enlace 

express

Solucionando los problemas de CLI con Express Framework

Esta es una mini guía para recordar como instalar ExpressJS porque tuve un problema para crear el esqueleto de una aplicación así que lo que intentaré es mostrarte como puedes evitar estos problemas:

Antes de continuar debemos tener instalado NodeJS, puedes descargarlo desde aquí.

1. Verificamos que tenemos instalado nodejs:

node -v

node -v

2. Instalamos expressjs:

sudo npm install -g express-generator

sudo npm install -g express-generator

3. Ahora verificamos si express se encuentra bien instalado:

express -h

express -h

 

Listo, con eso tenemos instalado al framework express, no olvides utilizar “-g express-generator ” ya que te lo instalará pero cuando intentes comprobar si esta instalado no podremos aprovechar esa CLI.

Fuentes:

express-generator

stackoverflow

Guía de express oficial

Lo que no se comparte se pierde!.

La observación de los cambios de archivos en Node.JS

Este tema es poco fuera de Express.js, pero me pareció tan importante que vale la pena mencionar. Las aplicaciones Node.js se almacenan en la memoria RAM y si hacemos cambios en el código fuente de estas, tenemos que reiniciar el proceso, es decir, ctrl +c 2 veces en la consola etc.

Existen herramientas brillantes que pueden aprovechar a “watch”, este es un método del módulo del core de Node.js ubicado en “fs” y reiniciar nuestros servidores cuando salvamos los cambios de un editor:

Como apunte relacionado a este asunto y sobre todo al framework Express, es bueno saber que Express.js vuelve a cargar un archivo de plantilla para cada nueva solicitud de forma predeterminada. Por lo tanto, no es necesario reiniciar el servidor. Sin embargo, podemos almacenar en caché las plantillas al permitir la configuración de la cache.

Fuentes:

Express.js Guide – The Comprehensive Book on Express.js by A. Mardan – May 2014

Lo que no se comparte se pierde!.