viernes, 8 de agosto de 2014

Curso Ruby - 12 - Símbolos

En este video tutorial hablaremos sobre los símbolos en ruby.

El video



Algunos enlaces


Todos los videos del curso: http://furycode.com/curso-ruby/

Todos los videos del curso (lista de reproducción en youtube): http://goo.gl/t6D5TV

Ejemplos en Github: https://github.com/Writkas/Curso-de-Ruby

miércoles, 6 de agosto de 2014

Auto-deploy con github y NodeJS

nodejs

Hace unos días estaba creando una aplicación en Velneo para actualizar otras aplicaciones utilizando GitHub como repositorio para mi fuente y me comentaron acerca de los auto-deploy con GitHub como una funcionalidad para mi aplicación así que me di a la tarea de investigar un poco cuales eran las mejores opciones para hacer funcional esta idea.


Luego de leer mucho, probar y demás... utilizando php, ruby, python, me decidí por NodeJS, ya que tiene una facilidad increible para crear "webserver's" sencillos, asi que es sumamente fácil poner en práctica un auto-deploy con github y sus webhooks utilizando alguna librería. Comenzaré entonces explicando paso a paso como lograr esto.


Debes tener en cuenta que para lograr esto, la máquina o servidor donde deseas hacer el auto-deploy debe tener una ip pública o algún dns para que por medio de los webhooks reciba la petición.


Cual es el funcionamiento de los webhooks? Bueno, cuando hacemos un push a un repositorio en github, este enviará una petición POST a la URL que hayamos configurado. Esta URL se especifica en la configuración del repositorio. Esta petición POST incluira una variable "payload" con información del ultimo commit del repositorio.


Luego de esto entonces nosotros nos encargaremos de ejecutar cualquier acción que deseemos al recibir esta petición, ya sea utilizando NodeJS directamente o algún script .sh


Bueno, comenzaremos con cumplir los requerimientos básicos, aquí probaremos con un servidor Centos, así que comenzaremos con instalar NodeJS y NPM



yum install nodejs npm -y

Con esto instalamos directamente los dos paquetes, y con "-y" aceptamos directamente y así no nos pide confirmación.


Luego tenemos que movernos a la carpeta donde crearemos nuestro script, en este caso la crearemos y nos moveremos dentro para instalar gith, que usaremos para escuchar y recibir el payload.



# Creamos la carpeta
mkdir nodeapp
# Nos movemos a la carpeta creada
cd nodeapp
# Instalamos gith en esta carpeta
npm install gith
# Abrimos un archivo para el contenido de nuestro script
nano script.js

ya que tenemos instalado gith, procedemos a crear nuestro script JS



// Escuchamos en el puerto que deseemos
var gith = require('gith').create( 9001 );
// Importamos execFile, para correr nuestro script de bash
var execFile = require('child_process').execFile;
// Usamos gith
gith({
// Repositorio
repo: 'xploshioOn/autodeploy'
// Le decimos que se ejecute esto cuando se agreguen, eliminen o modifiquen archivos
}).on( 'file:all', function( payload ) {
// Si la rama es la master
if( payload.branch === 'master' )
{
// Ejecutamos nuestro script
execFile('/nodeapp/script.sh', function(error, stdout, stderr) {
// Finalizó sin problemas
console.log( 'script completado' );
});
}
});

Comento la mayoría de las lineas para un mejor entendimiento de este.


Igualmente dejo un enlace a Gith para que puedan tener información completa de la librería.


Luego procedemos a jugar con nuestro script shell



nano /nodeapp/script.sh

#!/bin/bash
# Inicializamos git
git init
# Hacemos pull del repositorio
git pull

Esto teniendo en cuenta que nuestro repositorio haya sido clonado directamente y ya tenga el remote.origin.url bien...


Teniendo esta estructura, podemos agregar mas lineas a nuestro script JS o sh para ejecutar las acciones que creamos convenientes cada vez que se actualice nuestro repositorio en github o se haga un push.


Ahora luego de configurar el webhook en nuestro repositorio a http://nuestroservidor.com:9001, ya tenemos nuestro script que escucha, github que nos enviará una petición y al recibir ejecutará nuestro sh, solo nos queda una cosa por hacer, necesitamos que el script js se ejecute automatcamente y esté escuchando siempre. para eso utilizamos forever.



# Instalar forever globalmente 
sudo npm install -g forever
# Inicializamos nuestro script
forever start /nodeapp/script.js

puedes detenerlo con stop apuntando a la misma ruta o ver todos los scripts levantados con list.


En mi aplicación envío correos, para lo cual utilicé nodemailer en mi script node, e igualmente agregué un par de cosillas mas a mi script sh...


Espero les sirva y pues cualquier duda, o algún funcionamiento mas que necesiten, no duden en comentar.


Saludos.

martes, 5 de agosto de 2014

Curso Ruby - 11 - Más sobre rangos y métodos iteradores

Video tutorial del curso de Ruby en el cuál veremos algunas cosas más sobre los rangos y también sobre métodos iteradores como times, upto, downto, each y each_line.

El video



Algunos enlaces


Todos los videos del curso: http://furycode.com/curso-ruby/

Todos los videos del curso (lista de reproducción en youtube): http://goo.gl/t6D5TV

Ejemplos en Github: https://github.com/Writkas/Curso-de-Ruby

 

viernes, 20 de junio de 2014

Curso Ruby - 10 - Bucle For

En este video tutorial de Ruby veremos más sobre el bucle for, y además corregir un error del video anterior sobre la palabra reservada redo.

El Video



Ejercicios en Ruby


MenoresA0.rb
=begin
Programa que lea una cantidad dada de numeros y
que luego diga cual de esos numeros son menores
a 0
=end

 PerteneceAlRango.rb
=begin
Escribir un programa que lea 5 números por el
teclado y diga, cuál de esos números pertenece
al rango de 3..7
=end

 

Algunos enlaces


Todos los videos del curso: http://furycode.com/curso-ruby/

Todos los videos del curso (lista de reproducción en youtube): http://goo.gl/t6D5TV

Ejemplos en Github: https://github.com/Writkas/Curso-de-Ruby

jueves, 19 de junio de 2014

Curso Ruby - 9 - Bucle While y Until

En este Videotutorial del curso de ruby hablaré sobre el bucle While (mientras) y el bucle Until (hasta).

El video



Ejercicios en Ruby


ArreglosYWhile.rb
=begin
Pedir un numero al usuario y a partir de ese numero, crear un
array con n elementos (dependiendo del numero que ingreso el
usuario). Luego leer todos los numeros por medio de un bucle
while o until. Y al final mostrarlos en pantalla en una sola
linea.
=end

SoloPares.rb
=begin
Pedir un numero al usuario y a partir de ese numero, crear un
array con n elementos (dependiendo del numero que ingreso el
usuario). Luego almacenar sólo los números pares en un array,
y luego mostrarlos.
=end

RevertirArreglo.rb
=begin
Pedir un numero al usuario y a partir de ese numero, crear un
array con n elementos (dependiendo del numero que ingreso el
usuario). Luego revertir y mostrar el arreglo pero sin utilizar
el método reverse.
=end

 

Algunos enlaces


Todos los videos del curso: http://furycode.com/curso-ruby/

Todos los videos del curso (lista de reproducción en youtube): http://goo.gl/t6D5TV

Ejemplos en Github: https://github.com/Writkas/Curso-de-Ruby

lunes, 16 de junio de 2014

Curso Ruby - 8 - Arrays

En este video tutorial de ruby hablaremos sobre los arrays y sobre algunos métodos que tenemos a nuestra disposición, también en el artículo del video dejaré un ejercicio.

El video



Ejercicios en Ruby


 MenuYArrays.rb
=begin
Cree un array con los siguientes elementos:
6, 5, -4, 8

Cree un programa que que tenga un menú de opciones
como el siguiente:
1) Mostrar el primer elemento del arreglo
2) Mostrar el último elemento del arreglo
3) Mostrar si el arreglo esta vacio o no
4) Mostrar la cantidad de elementos del arreglo
5) Ordenar arreglo de forma accendente
6) Ordenar arreglo de forma decendente
7) Remover el último elemento del arreglo
8) Ingresar elemento al final del arreglo
9) Borrar arreglo

Use case y muestre un resultado después de ejecutar
cada opción.
=end

 

Algunos enlaces


Todos los videos del curso: http://furycode.com/curso-ruby/

Todos los videos del curso (lista de reproducción en youtube): http://goo.gl/t6D5TV

Ejemplos en Github: https://github.com/Writkas/Curso-de-Ruby

jueves, 12 de junio de 2014

Curso Ruby - 7 - Estructura de control case y rangos

En este video tutorial de ruby veremos las estructura de control case y además un poco sobre los rangos.

También lamento que el video haya quedado así, con esos movimientos, sin querer le di a que siguiera el cursor del mouse.

El Video



Ejercicio en Ruby


Edad.rb
=begin
Pedir al usuario la edad y que el programa
le diga si es: "un bebe", "un niño", "un adulto",
"un adulto mayor". Utilice rangos y case.
=end

Algunos enlaces


Todos los videos del curso: http://furycode.com/curso-ruby/

Todos los videos del curso (lista de reproducción en youtube): http://goo.gl/t6D5TV

Ejemplos en Github: https://github.com/Writkas/Curso-de-Ruby