aox Weblog

Junio 30, 2009

sofi

Archivado en: Debian, Desarrollo, Eventos, GULMER, Linux, PostgreSQL, Python, Software, Web — Etiquetas:, , , , , , , , , — olivaresa @ 5:40 pm

Sofi es una aplicación web que gestiona eventos, presentaciones, ponentes y suscripciones.
Sofi es ideal como portal web de publicación de eventos tipo blog.
Sofi cuenta con una interfaz de administración.
Sofi es una aplicación liberada bajo la licencia GPLv2, por lo tanto usted tendrá derecho de utilizar, estudiar, modificar y distribuir libremente según los términos de la licencia.
Sofi esta desarrollada con el lenguaje de programación Python utilizando Django como framework.

Página del proyecto: http://sofi.cenditel.gob.ve

Algunas capturas de pantalla:


Junio 11, 2009

Jugando con las X

Archivado en: Debian, Desarrollo, GULMER, Hardware, Linux, Python, Software — Etiquetas:, , , , , — olivaresa @ 1:56 pm

Un día realizando una aplicación de escritorio con Python y la librería Pygame me di cuenta que estaba necesitando muchos recursos de maquina, se trataba de una aplicación que realiza un gráfico de curva a partir de una adquisición de datos obtenida a alta velocidad por el puerto USB.

Después de optimizar la aplicación varias veces , me dispuse a probarla con el consumo mas bajo de Xwindow que pudiera, para eso necesitaba el servidor de Xwindow pero no necesitaba el WindowManager Gnome, y realicé mi prueba de la siguiente manera:

Estando en el escritorio de Gnome pulsé las teclas Ctrl+Alt+F1, esto me llevo a una consola del sistema, en el cual hay que loguearse como root, y lo primero es:

  • Desactivar el WindowManager de Gnome

#/etc/init.d/gdm stop

  • Declarar una la variable que manejara Xwindow como display

#export DISPLAY=0:0

  • Arrancar las Xwindow

#X

  • Cambiar de consola al entrono gráfico con las teclas las teclas Ctrl+Alt+F7

Esto mostrara las Xwindow ya corriendo, la imagen sera como esta.

X

Luego podremos arrancar cualquier aplicación grafica en el servidor X, supongamos que queremos correr firefox:

  • Abrimos una segunda consola de sistema, pulsando las teclas Ctrl+Alt+F2
  • Declarar una la variable que manejara Xwindow como display

#export DISPLAY=0:0

  • Ejecutamos firefox

#firefox

  • Cambiar de consola al entrono gráfico con las teclas las teclas Ctrl+Alt+F7

La captura:

X_firefox

Abril 22, 2009

Aprender Python divirtiéndose

Archivado en: Desarrollo, GULMER, IDE, Linux, Python, Software — Etiquetas:, , , , , , , , , — olivaresa @ 2:04 pm

Aprender a programar debe ser divertido!, para adultos y niños por igual.

Este es el primero de una serie de publicaciones que buscan introducir al mundo de la programación específicamente en Python a personas que tengan interés.
Para lograr el objetivo nos apoyaremos en la herramientas RUR-PLE

RUR-PLE es un entorno diseñado para ayudarle a aprender la programación utilizando el lenguaje Python. Dentro de un mundo artificial en el que un robot puede ser programado para realizar diversas tareas. Usted también será capaz de aplicar sus habilidades de programación.

Aprender a programar es como aprender a tocar un instrumento musical: hay que hacerlo, y no simplemente leer sobre él.

Unas de las limitaciones que encontraremos en este post, es que estaremos basándonos en el sistema operativo Linux/Debian. Asumiendo que ya tienen instalado Linux/Debian o alguna de las distribuciones de Linux Basadas en él (Ubuntu, Kubuntu…) necesitaremos lo siguiente:

  • wxPython – (el paquete se llama python-wxgtk2.8, para instalar abra una consola y ejecute)

aptitude install python-wxgtk2.8

  • RUR-PLE – (descargar el programa desde aquí, luego descomprimirlo, desde consola podría ser así)

unzip rurple1.0rc3.zip

Para ejecutar el programa:

cd rurple1.0rc3

python rur_start.py

Si todo va bien veremos esto:

Para interactuar con el robot existen un grupo de instrucciones o funciones:

  • Acciones
    • move()
    • turn_left()
    • pick_beeper()
    • put_beeper()
    • turn_off()
  • Pruebas (test)
    • front_clear()
    • facing_North()
    • carries_beepers()
    • next_to_a_beeper()

Por ahora nos limitaremos a ver como se ejecuta el programa y utilizaremos dos acciones; mover un paso el robot (move()) y apagar el robot (turn_off()), ver el siguiente video.

En la próxima entrega, veremos como a partir de estas funciones podemos empesar a programar en Python de una forma divertida!.

Noviembre 10, 2008

Clonar maquinas con Linux

Archivado en: Debian, Linux, Software — Etiquetas:, , , , , , , — olivaresa @ 2:00 pm

Existen varios programas que pueden hacer este trabajo como (g4l, clonezilla…), sin embargo yo estaba embarcado en hacerlo para conocer en realidad que es lo que necesitaba para clonar un disco sin necesitar programas especializados.

En este caso lo que quería era tener un clon y replicarlo en grupo de maquinas totalmente iguales, las maquinas tenían ya instalado Linux/Debian Lenny totalmente configurado y me dispuse a clonar el disco de la siguiente manera.

Requerimos:

  • Ubuntu ó cualquier distribución Live CD
  • Maquina (origen) totalmente configurada y funcional
  • Dispositivo de almacenamiento (en mi caso utilicé un disco externo de un TeraByte USB) ó Conexión a una Red Interna.
  • Comandos dd, nc y gzip.

Pasos:

  1. Botear la maquina que ya esta configurada y queremos clonar
    con el LiveCD.
  2. Abrir una consola y cambiarse a root “sudo su”.
  3. Identificar que dispositivo de disco queremos clonar, en mi caso es “sda”
  4. El comando que necesitamos utilizar para clonar el disco es “dd”, para obtener la ayuda sobre este comando se puede ejecutar “man dd”. Básicamente es un comando que permite tomar como entrada un fichero y copiarlo a otro utilizando varias configuraciones.
  5. En este momento podemos elegir entre:

Clonar a un dispositivo local:

conectar el dispositivo y observar en que dirección se monta, en mi caso es /media/usbdisk/aox:

Generar la imagen

#dd if=/dev/sda | gzip | dd of=/media/usbdisk/aox/clon.img.gz

Clonar la imagen a una maquina

#gunzip < /media/usbdisk/aox/clon.img.gz | dd of=/dev/sda

Clonar por la red local:

Maquina origen

#dd if=/dev/sda | gzip | nc 192.168.x.x 12345

Maquina destino

#nc -l -p 12345 | gunzip | dd of=/dev/sda

Generar la imagen en un dispocitivo local puede tardar 1 hora para un disco duro de 80Gb y para clonarlo unas 3 Horas, para clonar en red local puede tardar el proceso unas 3 a 3:30 horas.

Noviembre 7, 2008

1er Congreso Nacional de Software Libre y Educación

Archivado en: Eventos, Software — Etiquetas:, — olivaresa @ 12:29 pm

Fecha: 08 y 09 de Noviembre de 2008

Lugar: Centro Cultural Mariano Picón Salas.

Ciudad: El Vigía, Estado Mérida

Hora: 7:30am

Más Información: http://www.solisurla.org.ve/libertad/

I Día Mundial de Plone, Mérida 2008

Archivado en: Desarrollo, Eventos, Python, Software — Etiquetas:, , , , , — olivaresa @ 12:19 pm

El Grupo Pythonistas venezolanos (PyVE), tiene el agrado de invitar al público en general a el “I Día Mundial de Plone, Mérida 2008”.

Lugar: Avenida Los Próceres, entrada al Parque La Isla. Edificio Sede CORPOANDES, Mérida, Estado Mérida, Venezuela.

Fecha: 07 Noviembre de 2008

Horario: 8:00 AM a 12:M

Mérida World Plone

Mérida World Plone

Más Información: http://lcaballero.wordpress.com/2008/10/31/i-dia-mundial-de-plone-merida-2008/

Octubre 15, 2008

Como Python engulle Arduino

Archivado en: Debian, Hardware, IDE, Python, Software — Etiquetas:, , , , , , , , , , — olivaresa @ 7:49 pm

Desde hace un mes aproximadamente vengo trabajando en un mini-proyecto de desarrollo de una IDE <<no java>> para el hardware libre Arduino.

Al principio me topé con la gran pregunta de todo programador “¿que lenguaje debo utilizar?”, no me tomó mucho tiempo elegir a Python y la principal razón es que “yo conozco Python”, ¿sencillo no?.

Luego realice una búsqueda para ver si había algo echo en Python, después de algunos trastazos me conseguí con una IDE llamada Editra y observé que además de ser un editor muy versátil que soporta unos 60 lenguajes de programación, era un proyecto que permite el fácil desarrollo e integración de nuevos componentes “Puglins” y sobre todo que es libre.

Empecé a revisar la documentación de Editra para ver como podía crear un Plugin de Arduino y en la actualidad ya tengo un desarrollo funcional, la dirección del proyecto es: http://wiki.cenditel.gob.ve/wiki/hlpd/idearduino

Este es un proyecto liberado bajo licencia GPL , por el momento el Plugin y la página cuentan con traducción e internacionalización a Español, Ingles e Italiano. ¡Anímate y participa!.

Capturas de Pantalla:

Arduino Plugin

Arduino Plugin

Arduino Plugin - gif animado

Arduino Plugin - gif animado

Vídeo:

Arduino plugin screencats 5.4MB

Arduino plugin tutor screencats 34.4MB

Publicaciones:

David Cuartielles, uno de los creadores de Arduino a publicado un articulo en el Blog de Arduino sobre el Plugin de Arduino para Editra.

Octubre 8, 2008

Paquetes egg – - como poner huevos con Python

Archivado en: Debian, Linux, Python — Etiquetas:, , — olivaresa @ 8:07 pm

En Linux/Debian es necesario instalar el paquete python-setuptools

#aptitude install python-setuptools

para hacer este ejercicio tome como insumo la documentacion de la página http://peak.telecommunity.com/DevCenter/setuptools, luego crear directorios y ficheros del paquete:

$mkdir egg_prueba
$mkdir paquete_egg

$cd egg_prueba

$echo "" > paquete_egg/__init__.py
$vim paquete_egg/familia.py


   1 
   2 class Familia:
   3     def __init__(self):
   4         self.nombre = ""
   5 
   6     def set_nombre(self, nombre):
   7         self.nombre = nombre
   8 
   9     def get_nombre(self):
  10         return self.nombre

luego crear en el directorio paquete_egg/ el fichero setup.py que contiene toda la información del paquete.

$vim setup.py

   1 
   2 # importa setuptools
   3 from setuptools import setup, find_packages
   4 
   5 # Tupla con información del paquete
   6 setup(
   7     name = "familia" # Nombre Paquete,
   8     version = "0.1" # Versión Paquete,
   9     packages = find_packages() # Busca módulos dentro del directorio paquete_egg,
  10     scripts = [] # Scripts que deben ir a /usr/bin,
  11 
  12     install_requires = [] # Dependencias de otros paquetes,
  13 
  14     package_data = {}# Diccionario con ficheros que deben incluirse en el paquete, por ejemplo {'': *.txt},
  15 
  16     # Metadatos para el repositorio Pypi
  17     author = "Alexander Olivares",
  18     author_email = "olivaresa@cantv.net",
  19     description = "Este es un paquete egg de prueba con una clase Familia",
  20     license = "GPL",
  21     keywords = "" # Palabras clave de busqueda,
  22     url = ""
  23 )

Luego de hacer esto debemos tener la siguiente estructura de archivos y directorios:

egg_prueba/
    setup.py
    paquete_egg/
       __init__.py
       familia.py

Estando en el directorio egg_prueba/ ejecutar:

$python setup.py bdist_egg

Eso creara el paquete que estará en egg_prueba/dist/familia-0.1-py2.4.egg

para instalar:

#easy_install egg_prueba/dist/familia-0.1-py2.4.egg

para utilizar:

   1 from familia import *
   2 
   3 f = Familia()
   4 f.set_nombre("Olivares")
   5 print f.get_nombre()
   6 "Olivares"

Python 3000 – primer acercamiento

Archivado en: Python — Etiquetas: — olivaresa @ 8:03 pm

Python 3000 “py3k” ó Python 3.0 se encuentra actualmente en su fase beta2, la versión final de esta prevista para mediados de Octubre.

Me dispuse a probar la versión beta y la descargue de la página http://www.python.org/download/releases/3.0/, la descomprimí y ejecute:

$./configure
$make
$make test

Luego se recomienda instalarlo ejecutando “make install”, pero en mi caso solo quería probar algunas cosas por tanto no me hizo falta, ejecute ./python y ya tenia la consola interactiva (>>>) de Python 3000.

Tomando como referencia de lo nuevo de Python 3000 en la dirección http://docs.python.org/dev/3.0/whatsnew/3.0.html, realice una serie de pruebas sencillas, que muestro a continuación:

Python 2.4

Python 3000

Comentario

>>>print “Hola”

>>>print(”hola”)

“print” ahora es una función

>>>aox = u”computación”

>>>aox = “computación”

por defecto los strings son utf-8

>>>if aox <> u”computación”:

>>>if aox != “computación”:

reemplazado “<>” por “!=”

>>>True, False = 1, “2″

>>>

True , False, None son palabras reservadas

>>>aox = raw_input(”Nombre”)

>>>aox = input(”Nombre”)

raw_input() reemplazado por input()

>>>for i in xrange(10):

>>>for i in range(10):

xrange() reemplazado por range()

Estas son algunas de las características que han sufrido cambios y hacen imcopatible cualquier aplicación escrita con Python 2.x con Python 3000. En adelante estaré alimentando este post con nuevas impresiones.

Enlaces de interés:

http://www.python.com.ar/moin/Python3Mil

Internacionalización con Python

Archivado en: Python — Etiquetas: — olivaresa @ 7:21 pm

Para la utilización de traducción de aplicaciones a otros lenguajes utilizar la librería gettext

Siempre los strings a traducir deben ser etiquetados con _(), por ejemplo si queremos traducir “Hello” debería declararse como _(”Hello”) del resto se encargara gettext.

import gettext

gettext.translation("es", "./locale",languages=['es']).install()

El directorio locale/ es el que tendrá los ficheros de traducción.

Suponiendo que tenemos una aplicación que se llama aox.py que contiene strings que debemos traducir podríamos generar los ficheros de traducción con los siguientes comandos:

$xgettext aox.py -o locale/es/LC_MESSAGES/aox.pot
$msginit -i locale/es/LC_MESSAGES/aox.pot -o locale/es/LC_MESSAGES/es.po
$vim locale/es/LC_MESSAGES/es.po
$msgfmt locale/es/LC_MESSAGES/es.po -o locale/es/LC_MESSAGES/es.mo

En caso de modificar el programa o strings a traducir podremos actualizar los ficheros de traducción con los siguientes comandos:

$mv locale/es/LC_MESSAGES/aox.pot locale/es/LC_MESSAGES/aox.old.pot
$xgettext aox.py -o locale/es/LC_MESSAGES/aox.new.pot
$msgmerge -o locale/es/LC_MESSAGES/aox.pot locale/es/LC_MESSAGES/aox.old.pot locale/es/LC_MESSAGES/aox.new.po
$mv locale/es/LC_MESSAGES/es.po locale/es/LC_MESSAGES/es.old.po
$msginit -i locale/es/LC_MESSAGES/aox.pot -o locale/es/LC_MESSAGES/es.new.po
$msgmerge -o locale/es/LC_MESSAGES/es.po locale/es/LC_MESSAGES/es.old.po locale/es/LC_MESSAGES/es.new.po
$vim locale/es/LC_MESSAGES/es.po
$msgfmt locale/es/LC_MESSAGES/es.po -o locale/es/LC_MESSAGES/es.mo
Entradas más antiguas »

Blog de WordPress.com.