Archivo de la etiqueta: Fedora

Pyramid framework en OpenShift

Pyramid es un framework de python para desarrollar aplicaciones web. Sus fuertes son la velocidad, flexibilidad y escalabilidad que ofreces a los desarrolladores. No es un full-stack framework (Full-Stack: el objetivo principal de los full-stack es proveer un conjunto de componentes que abarque todo lo que necesitas para construir una aplicación web, asegurandose que todos esos componentes funcionen bien entre si.) como Django y no es un microframework como Flask o Bottle. Y a su vez OpenShift es una plataforma deployar aplicaciones en la “nube” (algo así como heroku, cloudcontrol, phpfog, Amazon, etc.) bajo la infraestructura de Red Hat. Openshift permite integrar (sin necesidad de otro servicio) base de datos en MySQL, MongoBD, PostgreSQL, etc.

Requisitos para esta guía:

– Linux Fedora (es un requisito por los repositorios, pero si utilizan otra distribución no hay problema).
– Cuenta en Open Shift.
– Habilitar base de datos MySQL en consola de aplicaciones en Open Shift

Lo primero es registrarnos en Open Shift http://openshift.redhat.com.
Luego creamos nuestra aplicación en la administración de aplicaciones y en el momento de seleccionar el lenguaje a utilizar, seleccionamos Python (obvio o no? xD ).

La configuración de la aplicación en OpenShift no es parte de esta guía, asi que lo saltaremos. Si no saben como utilizar Open Shift les recomiendo utilizar la documentación disponible en el mismo sitio, y las guías de instalación en diferentes sistema operativos.

Ahora los pasos que realmente nos interensan.

Instalamos git como controlador de versiones (Requisito para modificar el código de nuestra aplicación).

[sourcecode language=”bash”]yum install git[/sourcecode]

Recuerden agregar su llave pública en la consola de administración de aplicaciones en el sitio de Open Shift.

Instalamos las herramientas de clientes de Open Shift. Con esta herramienta se pueden administrar el estado de las base de datos de nuestras aplicaciones, crear nuevas aplicaciones, etc.
Según la distribución de linux que tengamos, el nombre del paquete puede cambiar.

[sourcecode language=”bash”]yum install rubygem-rhc[/sourcecode]

Descargamos nuestro código fuente (reemplazar por su repositorio).

[sourcecode language=”bash”]git ssh://xxXXxxXXxXXxXXXxxx@xxxxx-xxxx.rhcloud.com/~/git/xxxxxx.git/[/sourcecode]

Si no hemos instalado la base de datos mysql, lo hacemos ahora. (Esta tarea también se puede realizar a través del administrador de aplicaciones de Open Shift). Es importante reemplazar el nombre del proyecto y el email por el mismo que utilizaron al crear su cuenta de Open Shift.

[sourcecode language=”bash”]rhc-ctl-app -a nombreproyecto -e add-mysql-5.1 -l your@email.com[/sourcecode]

Tenemos diversas opciones para administrar nuestra base de datos:

[sourcecode language=”bash”]rhc app cartridge start -a nombreproyecto -c mysql-5.1
rhc app cartridge stop -a nombreproyecto -c mysql-5.1
rhc app cartridge restart -a nombreproyecto -c mysql-5.1
rhc app cartridge reload -a nombreproyecto -c mysql-5.1
rhc app cartridge status -a nombreproyecto -c mysql-5.1
rhc app cartridge remove -a violeta -c mysql-5.1[/sourcecode]

Entramos al directorio del proyecto.

[sourcecode language=”bash”]cd nombreproyecto[/sourcecode]

Hacemos la referencia a pyramid.

[sourcecode language=”bash”]git remote add upstream -m master git://github.com/lmacken/pyramid-openshift-quickstart.git[/sourcecode]

 

[sourcecode language=”bash”]git pull -s recursive -X theirs upstream master[/sourcecode]

Y finalmente guardamos.

[sourcecode language=”bash”]git push[/sourcecode]

Eso es todo, espero haya servido esta guía y si quieren aportar algo bienvenido sea.
Recuerden visitar nuestra comunindad de Python Chile y participar en nuestros MeetUp

Geocodificación en Ruby con Geocoder

  

La geolocalización y la geocodificación hoy cumplen un papel fundamental en la composición de nuestras aplicaciones. Determinar el pais, la ciudad, el lenguaje, etc sin duda que agregar un gran valor a la hora de personalizar aplicaciones para nuestros visitantes.

Comencemos!

Para esta entrada utilizaré:
– Fedora 16
– Ruby 1.8.7
– Rubygems 1.8.11
– Geocoder 1.1.0
– json_pure 1.6.4

La versión de Ruby 1.8.7 y Rubygems 1.8.11 es la trae por defecto el repositorio de Fedora 16.

sudo yum install ruby rubygems

Ahora instalamos Geocoder y su dependencia json_pure

sudo gem install geocoder json_pure

Podemos forzar las versiones que desamos instalar de la siguiente forma

sudo gem install -v=1.1.0 geocoder

Ya está listo nuestro Ruby con sus gemas necesarias, Geocoder nos instala un script para realizar peticiones por terminal, este lo podemos utilizar de la siguiente forma

$ geocode "Quilicura, Santiago"

# Resultado:
# Latitude:         -33.3613271
# Longitude:        -70.7287415
# Full address:     Quilicura, Santiago Metropolitan Region, Chile
# City:             Quilicura
# State/province:   Santiago Metropolitan Region
# Postal code:      
# Country:          Chile
# Google map:       http://maps.google.com/maps?q=-33.3613271,-70.7287415

Ya funcionando podemos crear nuestros primero ejemplos, entonces creamos un archivo .rb

vim ej_geocoder1.rb

Con el siguiente contenido

# Importamos nuestras gemas, recuerden que en versiones de ruby 1.8 se debe importar siempre la gema 'rubygems'.
require 'rubygems'
require 'geocoder'

# Realizamos una busqueda, esto nos devolvera un lista de coincidencias y con [0] decimos que queremos la primera.
local = Geocoder.search("Quilicura, Santiago, Chile")[0]

# Imprimimos las coordenadas de la direccion buscada
puts local.coordinates

Ejecutamos

ruby ej_geocoder1.rb

Geocoder.search devuelve un objeto con lo siguientes atributos:
address
address_components
address_components_of_type(type)
city
coordinates
country
country_code
formatted_address
geometry
postal_code
state
state_code
types

Entonces siguiendo el ejemplo anterior podemos obtener el pais de nuestra busqueda de la siguiente forma

local.country

También con Geocoder podemos obtener la dirección de una ip o de unas coordenadas de la siguiente forma

vim ej_geocoder2.rb
# Importamos nuestras gemas necesarias
require 'rubygems'
require 'geocoder'

# Ingresamos la ip que queremos buscar y la primera coincidencia con el valor [0]
ip = Geocoder.search("200.113.190.187")[0]
puts ip.address
puts ip.coordinates

# Obtenemos la direccion a traves de unas coordenadas
ip = Geocoder.search("-33,-70")[0]
puts ip.address

Ejecutamos

ruby ej_geocoder2.rb

Geocoder se provee de buscadores como Google, Yahoo, Bing, GeocoderCa, etc para realizar sus busquedas. Esto podemo configurarlo en:

/usr/lib/ruby/gems/1.8/gems/geocoder-1.1.0/lib/geocoder/configuration.rb

en la propiedad [:lookup, :google] , recuerden que la url puede variar según las versiones instaladas.

Más información en la página oficial en RubyGeocoder

Gracias por su visita!