He aqui una lista de plugins que nos podrían brindar mucha ayuda a la hora de comenzar un proyecto web (FrontEnd) o posiblemente cualquier tipo de proyecto, al final del dia es una herramienta muy utilizada por frontend developers pero puede ser adaptada para cualquier otra cosa, solo hay que tener los plugins correctos a mano y saber como utilizarlos claro para sacarles el mayor provecho.
Archivo de la categoría: Utilidad
Iniciando con Gulp
El automatizar procesos siempre ha sido una de las tareas de los ingenieros y en el área de software no es la excepción a la regla. Con el auge hoy día de los super sets de JavaScript (CoffeScript y demás) y preprocesadores de Css (Sass, less y demás) se convierte algo tedioso e inhumano estar procesando esos archivos manualmente cada vez que es realizado un cambio en uno de estos, así que para ese tipo de tareas y/o tareas particulares que nuestros proyectos requieran lo podremos lograr con lo que hoy se conocen como «Task runners» ahi es donde Gulp hace su entrada.
En este tutorial estaremos viendo uno de los mas nuevos en esta área y es Gulp Es relativamente nuevo pero una vez llego a la vista de los desarrolladores muchos han entrando en una relación seria con este producto.
Sigue leyendo
Queue Job AMQP (RabbitMQ) y Api web usando Nodejs (Hapi)
En este tutorial estaremos viendo como crear un job worker Cliente y Servidor del mismo, usando HapiJs (Nodejs Framework) y RabbitMQ como nuestra cola de trabajo.
Esto de las colas de trabajos es muy util a la hora de quitarle carga a nuestras aplicaciones y volverlas asíncronas en torno a cuando se realiza se realiza una petición de realizar cierta acción que podría comprometer el rendimiento de nuestra aplicación, se puede decir que es una forma de comunicar sistemas.
Las colas de trabajos suelen usarse mucho cuando nuestros sistemas tienen que interactuar con sistemas de terceros y los cuales no tenemos el control de disponibilidad / rendimiento cosa que si le agregamos la capacidad de trabajar procesos en background con una cola nuestra aplicación no sufrirá ningún inconveniente si estas aplicaciones de terceros esta dando problemas.
Sigue leyendo
Fabric ( Python command line tool )
Hace unos poco dias mientras subia unos cambios de una aplicación me puse a buscar una herramienta que me pudiera ayudar con la automatización de esto de «subir cambios» y «desplegarlos» claro hecho en python o relacionado y encontre varias pero Fabric fue la que mas me llamo la atención, así que Fabric sera.
Que es Fabric?
Fabric es una libreria hecha en python para darnos facilidad al realizar tareas via «command line» y ssh, es como trabajar con «bash script» pero con python (Super poderes) y a eso agregarle mas Super poderes. En si fabric no es una herramienta para hacer «despliegues» o manejar procesos ni nada por el estilo pero tiene la capacidad para serlo y muchos la usan para ese tipo de cosas en conjunto con «SuperVisord» pueden hacer una buena combinación.
Instalación
pip install fabric
Que Puede hacer fabric
- Ejecutar tareas en servidores remotos
- Ejecutar tareas tanto como un single user o un sudo user
- Puede ser ejecutado sobre varios servidores la misma tarea
- Puede ejecutar tareas tanto en paralelo como en secuencia (Uno de tras de la otra)
- Tiene la capacidad de abortar tareas si algo inesperado sucede
Ejemplos
Hello word
#fabfile.py def hello(): print "Hola mundo"
Para ejecutar esta tarea con fabric es simplemente ir a directorio donde esta dicho archivo y ejecutar fab.
#simplemente fab hello #o espesificar el archivo de esta forma fab hello -f fabfile.py
Todo bien hasta aqui e imprime mi «Hola mundo«, ahora si quiero que este mismo hola mundo se ejecute en diferentes servidores lo que tengo que hacer es lo siguiente.
#simplemente fab hello -h localhost,remotehost.net,remotehost.dev #o espesificar el archivo de esta forma fab hello -f fabfile.py -h localhost,remotehost.net,remotehost.dev
Hecho esto su «script» se ejecutara en los sevidores proporcionados, esto fabric lo hace via ssh por lo que les pedira la clave de cada uno de esos servidores, una opcion para evitar esto es relizar un login ssh sin clave.
Hello Server
Este ejemplo lo que hara sera ejecutar un comando en cada uno de los servidores que ejecutemos nuestro «script».
#fabfile.py def hello_server(): run("uname -a")
El ejecutarlo sera igual que el ejemplo anterior.
#simplemente fab hello_server -h localhost,remotehost.net,remotehost.dev #o espesificar el archivo de esta forma fab hello_server -f fabfile.py -h localhost,remotehost.net,remotehost.dev
Para ejecutar un comando en nuestro servidor remoto|local tenemos 2 opciones:
–run(«comando») Ejecutar un comando.
–sudo(«comando») Ejecuta un comando como super user.
–local(«comando») #Todo ver diferencias.
Ejemplo Completo
Digamos que realizamos algo en una app en desarrollo y queremos que produccion tenga esos cambios.
#fabfile.py from fabric.api import run,env,prompt from fabric.colors import red,green env.hosts = ['localhost'] app_dir = "/var/www/superapp/" env_dir = "/var/www/superapp/env/" def activate_env(): cd(env_dir) local("source bin/activate") print(green("Entorno activado")) def load(): local("git pull origin master") print(green("Pull realizado")) def test(): local("command to test your code") print(green("Aplicación probada")) def reload_app(): local("tumbar la aplicación previa e iniciarla nuevamente") def deploy(message): print(message) cd(app_dir) load() test() result = prompt("Quiere reiniciar la aplicacion?[si/no]") if result == 'si': reload_app()
Para ejecutar esto:
#simplemente fab deploy:"mensaje"
Este ejemplo digamos que activa el entorno virtual (virtualEnv 😀 ), obtiene los cambios de un control de versiones, prueba el código y re inicia la aplicación con los nuevos cambios.
Los comandos utilizados
cd – Este es utilizado como el mismo comando por consola.
red / green – Estos comando retornan texto de dicho color y para ser imprimidos en la consola.
prompt – Detiene la ejecución y le pide al usuario que introduzca algún valor.
La variable env.hosts es utilizada para ya no tener que decir fab -H host1,host2,host3 sino que simplemente coloco ahi los targets a donde quiero ejecutar la tarea.
Referencia
Python VirtualEnv
VirtualEnv es una herramienta usada hoy dia por casi todo el que programa python y si aun no la estas usando buena hora para comenzar, esta herramienta te permite tener entornos python tanto con diferentes versiones del lenguaje como diferentes versiones de librerias/frameworks.
Sabemos que al instalar un paquete easy_install/pip globalmente podemos retener choques entre ellas y demás problemas, bueno con virtualenv podemos tener tantos entornos virtuales como deseemos.
Instalacion
pip install virtualenv
Crear un entorno virtual
virtualenv nombreEntorno
Activar el entorno ya creado
source nombreEntorno/bin/activate
Una vez activado tendremos algo como esto en nuestra consola.
(nombreEntorno)machineName:dir
Una vez activado ya es cuestion de instalar lo que necesitemos.
pip install requests pip install flask
Si se quiere replicar lo instalado en un entorno hay que exportar las dependencias y luego instalarlas en el entorno destino.
#mostrara todos los paquetes instalados pip freeze #guardara los paquetes en un archivo llamado requeriments pip freeze >> requeriments #instalara todos los paquetes que contenga el archivo a procesar pip install -r fileName
Para salir de el entorno solo es ejecutar este comando y esta fuera del entorno
deactivate
Ya para terminar si se quiere instalar una version distinta a la default en nuestro sistema de python es tan simple como
virtualenv envName -p <<apuntar a un bin de python>>
Para mas informacion
Crear host virtual Apache – Nginx
Apache y Nginx los servidores web mas usados en la web de hoy dia, cada uno con sus ventajas y desventajas ( Este no sera un post para nombrarlas ).
Este tutorial es para cuando la necesidad de poder hostear mas de un site en un mismo servidor y necesitamos que cada uno responda a un dominio distinto, el proceso es bien simple y facil.
Apache
Los archivos vhost estan situados en directorios distintos segun el sistema operativo:
Vhost File
- Si estan usando wamp estan en la caperta bin/apache/conf/extras/vhost
- Ubuntu, /etc/apache2/site-avaliable
- centos /etc/httpd/conf.d
Conf file
- Si estan usando wamp estan en la caperta bin/apache/conf/httpd.conf
- Ubuntu, /etc/apache2/httpd.conf
- Centos /etc/httpd/conf/httpd.conf
Una vez localizados estos archivos es necesario comprobar algunas configuraciones
- Asegurar que no este comentado esta opacion Include conf.d/*.conf
- Asegurar que esta opcion no este comentada tampoco NameVirtualHost *:80
Luego de haber configurado nuestro http.conf y localizado donde colocar los vhost files proceder a crearlos.
Ejemplo 1:
Este vhost servira para cuando accedan a dominio.com el projecto a mostrar seria el de la carpeta /carpeta_to_projecto/
Listen 80 <VirtualHost *:80> DocumentRoot /carpeta_to_projecto/ ServerName dominio.com </VirtualHost>
Ejemplo 2:
Con este ejemplo podran hacer lo mismo que en el anterior con la salvedad de que este si identifica los enlaces simbolicos ( FollowSymLinks ) y les permitiras listar los archivos de una carpeta ( Options Indexes ),la opcion de AllowOverride all es muy usada por muchos frameowrks php para crear sus rutas si esta ocion no existe su framework no podra funcionar chevere.
Listen 80 <VirtualHost *:80> DocumentRoot /var/www/test_project/ ServerName projecto.com <Directory /var/www/test_project> AllowOverride all Options Indexes FollowSymLinks </Directory> </VirtualHost>
Luego de crear sus vhost files es cuestion de reiniciar el servicio de apache y todo estara funcionando (Si todo le sale bien).
**Los vhost files deben guardarce con extencion .conf sino apache no sabra que son vhost.conf
Nginx
Los archivos vhost en nginx esta situados en /etc/nginx/conf.d/ a menos que estes en uguntu estaran en /etc/nginx/sites-available/ (Tenia que ser un ubuntu :/ ).
Ejemplo 1:
El atributo location es muy usado para algunos frameworks que necesitan ubicar la direccion de los archivos estaticos (.js/.css/.imgs).
server { listen 80; root /var/www/projecto; index index.html index.htm; server_name 54.196.254.224; location / { try_files $uri $uri/ =404; } }
PM2 – Manejo de procesos Nodejs
Subir procesos y bajar procesos en un sistema linux puede ser suficiente para poner en ejecución un server nodejs y es cool en algunos casos se siente bien ejecutar kill PID para detener procesos pero luego de un tiempo no es tan cool, asi que las personas cool del area crearon PM2 para nuestro uso.
Sigue leyendo