Buscar este blog

diciembre 08, 2010


No se si te tendran el problema de que se te instaldo openjdk pero tienes que trabajar con java de sun(oracle si claro) apesar de que supuestamente trabajan igual e tenido problemas con algunos programas por lo tanto al java normal esto se puede hacer de la siguiente manera, abrimos una consola e insertamos el siguiente codigo:
sudo update-alternatives --config java
Y por ultimo se selecciona la maquina java que queremos utilizar. Y listo eso es todo!!!

diciembre 03, 2010

Proxy ISA problema con GNU/Linux-Ubuntu

El problema que se tiene con los servidores ISA es que no permiten utilizar Synaptic, ni ningún gestor de paquetes para actualizar el sistema, esto se corrige montando un servidor de autentificar de proxy con el paquete CNTLM toca instalar para la versión adecuada de la distribución para que funcione sin ningún problema.
Ya instalado el paquete se tiene que configurar el archivo de la siguiente dirección "/etc/cntlm.conf" y cambiar los parámetros que se ponen a continuación.

Username "usuario del proxy"
Domain  "dominio del proxy"
Password "clave del proxy"
Proxy "ip del proxy:puerto"

El username y password es el nombre y clave del usuario del proxy ISA, y el proxy es la dirección del proxy con el puerto al que se va a conectar. Por ejemplo si fuera el caso de la ESPE

Username Espe\alumno
Domain espe.init
Password Espe001
Proxy 10.1.0.112:8080

ya cambiado estos valores toca cambiar en "Sistema>Preferencias>Proxy de red" y poner la información del proxy como localhost y el puerto 3128, si se desea cambiar el puerto esta se puede realizar en el archivo cntlm.conf.
ya listo, solo toca reiniciar el sistema para que tome efecto o reiniciar la red del sistema.

noviembre 13, 2010

1er Encuentro Nacional de Software Libre - Ecuador

El Evento estuvo interesante, pero lo único malo fue la poca gente que se veía en el evento, conferencias, charlas... Pero los pocos que fueron estaban con todas las ganas de ver y aprender algo.. Y lo único molesto la canción del software libre una vez pasable, dos bueno, pero 1 hora la misma canción ya estaban con ganas de apagarles el amplificador... En el Club que pertenezco se presento los tres proyectos que se están realizando que son:
  1. El portal del Club "CSL"
  2. El proyecto de control de asistencia y control de ambiente
  3. UTC (Ultra thin client)
 Se nos comento de la propuesta de crear una pagina general que englobe todos los grupos de software del país para no estar tan separados los grupos, esperemos que no se meta la mano negra(intereses personales) que dane la buena iniciativa.

agosto 21, 2010

Python + compartir archivos a la red local


Esta información fue tomada del usuario Mohadip Lama <mohadip@dragonjar.org> en GnewBook:
truco para compartir rápidamente una carpeta de tu pc con tus compañeros de oficina es el siguiente.
  • Abres un terminal y en consola te diriges hasta el directorio que quieres compartir.
cd /home/jose/Documentos
  • Ahora desde ahi, ejecutas:
python -m SimpleHTTPServer
  • Y abras creado un servidor web, que permite a otros usuarios acceder al contenido de tu carpeta desde un navegador si utilizan la siguiente URL: http://IP_de_tu_equipo:8000
  • Rapido y muy util!!
  • Solo podrán ver los documentos, nunca editarlos.
  • Nota: lo puedes probar localmente con http://localhost:8000
Direccion del articulo

agosto 09, 2010

Python + Robotica

Primeramente el Robot que se va a utilizar es el P3-DX, se va a trabajar con ARIA que el modulo encargado de los movimientos de robot viéndolo de la manera mas simple como se lo esta utilizando para este ejemplo; el programa tiene algunas fallas en la utilización de API de ARIA ya que puede ser mejorado, pero sirve para mostrar hasta donde se puede encontrar Python "También esta para C y Java de SUN (ORACLE si claro) ".
Foto tomada la de pagina de mobilerobots
Foto tomada la de pagina de mobilerobots
Las librerías necesarias se las puede encontrar en http://robots.mobilerobots.com/wiki/ARIA
No olvidar en el codigo que esta acontinuacion respetar las sangrias en condicionantes if y en las declaraciones de funciones
Mas adelante subire un video de este ejemplo funcionando (Apenas lo encuentre)

from AriaPy import *
import sys

def posicion():
robot.lock()
pose = robot.getPose();
print "La posicion del robot: (", pose.x, ",", pose.y, ",", pose.th, ")"
robot.unlock()
def movimiento(movi):
robot.lock()
print "El robot se va a mover "+str(movi)+" mm"
robot.move(movi)
robot.unlock()
def rotar(rot):
robot.lock()
print "El robot va a rotar "+str(rot)+" grados"
robot.setHeading(rot)
robot.unlock()
def activaMotores():
robot.lock()
robot.enableMotors()
robot.unlock()
# Global library initialization, just like the C++ API:
Aria.init()

# Create a robot object:
robot = ArRobot()


# Create a "simple connector" object and connect to either the simulator
# or the robot. Unlike the C++ API which takes int and char* pointers,
# the Python constructor just takes argv as a list.
print "Connecting..."

con = ArSimpleConnector(sys.argv)
if not con.parseArgs():
con.logOptions()
sys.exit(1)

if not con.connectRobot(robot):
print "Could not connect to robot, exiting"
sys.exit(1)


# Run the robot threads in the background:
print "Running..."
robot.runAsync(1)
print "El voltaje de la vateria es: "+str(robot.getBatteryVoltage())
activaMotores()
posicion()
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000) #Son 5 seg
rotar(-45)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000) #Son 5 seg
rotar(-90)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000) #Son 5 seg
rotar(225)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000) #Son 5 seg
rotar(180)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000) #Son 5 seg
rotar(135)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000)
rotar(90)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000)
rotar(45)
ArUtil.sleep(5000) #Son 5 seg
movimiento(300)
ArUtil.sleep(5000)
rotar(0)
ArUtil.sleep(5000) #Son 5 seg
posicion()
print "Fin!"
Aria.shutdown()

junio 20, 2010

ELGG y GNewBook

Como ponen en su pagina Conectar, Compartir, Colaborar. Son sus puntos mas importantes en especial el ultimo colaborar este es el mas importante ya que no en todas las redes sociales se siente esa cercanía de los desarrolladores indendientes con el proyecto. bueno sin mas les dejo un video para que puedan ver como va.


Si necesitas levantar tu propia red social por alguna cuestión puede ser una buena alternativa, y aqui les dejo un link para que lo prueben

http://www.softwarelibrespe.org/social/elgg/

Claro este no esta tan bien equipado, ya que recién estoy aprendiendo como usarlo; pero si quieren ver uno bien hecho, y con muchas ganas de seguir creciendo pueden dirigirse a GNewBook, una excelente red y mantiene sus ideales de libertad en alto. Tal vez para las personas que vienen de facebook, hi5, y otras. Ellos no disponen de tantos miembros como estas pero sus miembros se puede ver que se mantienen bien activos en los pocos días que llevo viendo como va esta red, y espero que les salga todo a pedir de boca, felicitaciones y éxitos GnewBook.


Quinto Juego!


Este va a ser el ultimo juego, ya que con lo explicado puede no ser mucho, pero ya van a poder entender un poco de lo relacionado con el tema, como no se explico mucho de las senales busquen informacion de:

glade http://live.gnome.org/Glade/Tutorials
GTK http://www.pygtk.org/docs/pygtk/
Python http://python.org/doc/

Para el caso de las senales como van a poder ver en el programa inicio.py son llamadas atraves de metodos y este metodo trae al objeto widget de esta senal y a este podemos aplicar todas las funciones que este tenga:

def entry1_changed_cb(self, widget, data=None):
self.q1 = widget.get_text()
if float(self.q1) > 110:
widget.set_text("110")
if float(self.q1) < -110:
widget.set_text("-110")
self.q1 = widget.get_text()

este es un gtk entry en la pagina de gtk que se les da arriba pueden encontrar las funciones que este tiene; en la parte de glade es mas simple ya que cada señal desempeña un evento diferente en el widget de la interface.

Para ejecutar el programa deben tener conectado un cable serial-USB o modem-gsm para activar los movimientos si no les va a dar error al mandar a realizar los movimientos o deben comentar todas las funciones que digan "serial_robo()" claro menos la de la función, el programa esta estructurado en tre partes la de notificaciones, movimiento y inicio.
Notificación:
Es la misma que se les mostro en juego anterior.
Movimiento:
Este aplica listas, para hacer una supuesta matriz no tiene ninguna función real es solo para practicar, esta dentro de la función homogenea(alfa1,alfa2,z), graficar(a,b,c,fig,espacial) nos permite como su nombre nos indica graficar como va a quedar el SCARA desde una vista superior, esta les puede servir si necesitan graficar señales (seno, cosenos, tangentes, sonidos), si conocen matlab en este no se van a perder.

if __name__ == '__main__':
arg=int(sys.argv[1]),int(sys.argv[2]),float(sys.argv[3])
main(arg[0],arg[1],arg[2])

Este nos permite aparte de ejecutarlo como modulo, puede ser ejecutado como aplicación como se realizar en ciertas partes del programa inicio.py
Inicio:
Como ya se menciono tiene serial_robo() que nos permite comunicarnos con un puerto serial,  pero lo principal en este es esta parte de codigo que es la que se encarga de levantar el entorno gráfico hecho con glade.

def __init__(self):
builder = gtk.Builder() #El archivo de glade debe estar en gtkbuilder
builder.add_from_file("gui/scara_gui.glade") #Carga el archivo glade
builder.connect_signals(self) #Toma todas las senales de glade
self.window = builder.get_object("inicio") #Ventana principal
self.window.show()
self.arti1izq=1
self.arti1der=0
self.arti2izq=1
self.arti2der=0
self.arti3up=1
self.arti3down=0
if __name__ == "__main__":
app = TutorialApp()
gtk.main()

TutorialApp() es la clase del programa, no olvidar de  importar pygtk y gtk ya que son necesarias para que funcione todo.

Disculpen la demora de estos dos últimos juegos (recién salgo de las semanas de pruebas y proyectos a ya presente este proyecto y no salio también tuvimos problemas con un puente H) y lo cortos que son pero creo que con estas pequeñas bases ya pueden comenzar a descubrir por su cuenta el gran mundo de Python que les espera, gracias por seguir esta simple y triste guía.
Si quieren ayuda pueden escribirnos a meliespe@softwarelibrespe.org o en los comentarios.

Cuarto juego!

Importando módulos

import sys
import matplotlib.pyplot as pyplot #Libreria python-matplotlib
import pylab
from math import acos, asin, cos, sin, radians, sqrt, pow, pi, atan


como se puede ver al comienzo se puede ver diferentes maneras de llamar funciones  de módulos de Python; se tiene diferentes maneras de llamar funciones de modulos, como import o from al poner import continua con el modulo y el as es opcional ya que nos sirve para cambiar de nombre a la función por uno que sea mas practico para nuestro caso; mientras que para from lo que hacemos es solo cargar una función del modulo math

Si necesitamos utilizar un metodo de programa nuestro?
se puede lo unico que nos toca añadir al código del programa donde se encuentra la función que necesitamos es

class notificacion_gnome:
def __init__(self):
print "Inicio correctamente"

Entonces añadir este funcion al programa ya podemos poner:

from {su programa} import {función a importar}

Si desean mas información pueden dirigirse a esta pagina: http://docs.python.org/tutorial/classes.html (explica como utilizarlo mucho mejor y no de una manera tan simple como les muestro)

Códigos ejemplo:
notificaiones
Necesita "python-notify" va relacionada con "libnotify", me parece que python-notify ya viene instalado en ubuntu, no me acuerdo.

junio 14, 2010

Feliz Cumpleaños!!!!!

Disculpa por no ser muy elocuente en lo que escribo pero se pone difícil ordenas mis ideas! 

Hoy es un día muy especial para la persona que tiene un brillo en sus ojos que te dan calidez y espero que este brillo nunca desaparezca, ya que me mostró que se puede confiar en las personas y me a pasados muchas faltas; gracias por todo Maybeline y espero que tengas un lindo día, gracias por todo. Y espero que te mejores y suerte en la escuela.

junio 12, 2010

eye OS 1.9

eye OS 1.9
Segun los amigos de wikipedia.
"eyeOS es un escritorio virtual multiplataforma, libre y gratuito, basado sobre el estilo del escritorio de un sistema operativo. El paquete básico de aplicaciones que vienen por defecto, incluye toda la estructura de un sistema operativo y algunas aplicaciones de tipo suite ofimática como un procesador de textos, un calendario, un gestor de archivos, un mensajero, un navegador, una calculadora y más. El paquete entero está autorizado bajo la licencia libre AGPL. Existe un sitio paralelo que provee aplicaciones externas para eyeOS, llamadas eyeApps. Se trata de un nuevo concepto en almacenaje virtual, el cual se considera como revolucionario al ser un servicio clave para el Web 2.0 ya que dentro de una web que combina el poder del actual HTML, PHP, AJAX y JavaScript para crear un entorno gráfico de tipo desktop. La diferencia entre otros entornos desktop al hacer posible iniciar el desktop eyeOS y todas sus aplicaciones desde un navegador web. No se requiere instalar ningún software adicional, ya que solo se necesita un navegador que soporte AJAX, Java y Macromedia Flash(dependiendo de las aplicaciones que se deseen ejecutar)."1

La pagina de donde se pueden descargar y buscar informacion es en http://eyeos.org/
La instalacion es muy simple tan solo toca ponerlo en una carpeta dentro de nuestro hosting y descomprimir el archivo en este lugar, desde el explorador procedemos  a ir la direccion donde lo pucimos y procedemos a instalar solo nos pide una clave para el root y comenzamos a instalar, listo eso fue todo. El resto es muy sencillo, crear usuarios,grupos,ftp etc. todo disponible. Los programas se pueden instalar siendo root se pueden descargar de diferentes paginas, este tiene un repositorio pero no me dio senales de vida, en ningun momento, la pagina de donde se pueden bajar programas(http://eyeos-apps.org/) para luego subirlos a la session de root y darles clic para instalarlos, simple y sencillo.

Para probarlo:
Usuario: invitado
Clave: invitado

junio 05, 2010

Video

Preferiblemente ver el video en HD ya que las otras no se puede reconocer bien las palabras.



Para descargar el video:
Video de como usar Glade segun lo explicado por Tercer Juego!

junio 01, 2010

Tercer juego!

Que tenemos que instalar?
Python GTK
Es una librería que nos permite manejar la librería GTK+ (es multiplataforma es para GNU-Linux y Windows) este es muy importante para poder comenzar a trabajar  ya que va a hacer de enlace entre nuestro código y GTK+.

GTK


Glade
Para este caso podemos instalarlo de diferentes maneras bajarlo de su pagina o repositorio de nuestra distribución; para este caso vamos a instalarlo por "Centro de Software de Ubuntu"  la aplicación glade :
glade
Como utilizar Glade?1
Al abrir este programa vamos a ver una pantalla como la que se va a mostrar a continuación
Glade inicio
En las opciones del proyecto debemos escoger la opción GtkBuilder y cargar las imagen desde el directorio del proyecto. La paleta en la izquierda permite añadir widgets a la aplicación, mientras que el panel de propiedades, abajo a la derecha, permite seleccionar las propiedades del widget seleccionado para ser modificado y las señales (de lo que se nombro en el primer juego) que serán definidas para poder utilizarlas en el programa.
Iconos nivel superior
niveles superiores
El que vamos a utilizar es el primer icono el de ventana ya que este es la base para todo el resto de opciones del nivel superior
Icono de ventana
Aparece en el espacio de trabajo que se encuentra el la parte superior derecha del programa en la opción de widget, después de abrirla nos dirigimos a las propiedades que se encuentra en la parte inferior derecha del programa a la pestaña General, nombre es el nombre de la ventana este es muy importante ya que en el programa es este como lo llama al widget, y comenzamos a configurar los diferentes parametros de general y empaquetado.
Propiedades
Ya listo esto debemos proceder a añadir los contenedores que es donde se van a poner los elementos de nuestro entorno gráfico y en estos tenemos a HBOX y VBOX que son como el esqueleto de la ventana y en las áreas donde nos de libre se ingresan los cuadros de texto, caja de texto, arboles, etc.. haciendo que todo sea ajustable en su área.
vboxVBOX Y HBOXHBOX
Nos pone áreas de trabajo en forma vertical o horizontal según la escogida solo se le da clic y se va a la ventana a darle clic donde queramos ponerlo. Listo esto se puede proceder a ingresar los elementos que se necesitan a continuación como cuadros de texto y esas cosas.
Poner señales a los elementos
El asunto de senales es muy simple ya que solo toca escoger la senal adecuada para lo que deseamos hacer como por ejemplo un boton:
gtk_boton_senal
Como se puede ver la señal pressed tiene un manipulador de nombre "on_Enviar_pressed" este es lo mas importante ya que nos va a permitir en el programa utilizarlo casi como un método ya que cuando se active la señal este método del programa se activara llevando con sigo algunos parámetros que se explicaran en el próximo juego. En la ventana en cambio necesitamos activar necesariamente la siguiente señal.


1 Se tomo de este tutorial el orden de las cosas explicadas http://www.muitovar.com/glade/es-index.html

mayo 31, 2010

Segundo juego!-B

Sentencia FOR
Un bucle for es un bucle que repite el bloque de instrucciones un número prederminado de veces y bloque de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se suele llamar iteración.

for variable in lista o cadena o rango:
cuerpo del bucle

Que es una lista?
Es un arreglo donde se puede almacenar informacion, se se puede anadir las valores haciendo una simple suma tambien se los puede modificar.
lista=['e','i','o']
lista_matriz=[['e','i','o'],['a','u','x']]
print lista
lista=['a']+lista
print lista
lista=lista+['u']
print lista
print lista[0]
print lista_matriz[0][1]
print lista_matriz[1][2]

Y nos va a dar como resultado:
['e','i','o']
['a','e','i','o']
['a','e','i','o','u']
['a']
i
x
El único inconveniente en lista_matriz es que solo es un arreglo en dos dimensiones, no es una matriz en los siguientes juegos se va explicar como realizar operaciones matriciales.
Que es un rango?
Es una sentencia que nos genera una lista de una dimensión como la de los ejemplos de arriba (lista) y su forma es range(argumento) el argumento es un numero por ejemlo:
print range(3)
y nos da como resultado:
[0,1,2]
Que es una cadena?
Es un string normal como por ejemplo mensaje="Hola"

Ejemplo for:
for i in "hola":
print i
for i in ['a',"hola",'c',"qwerty"]:
print i
for i in range(3):
print i
y nos da un resultado igual para todos los casos:
0
1
2
3
Sentencia While
Es otro tipo de bucle que se repite siempre que se cumpla la condición que este tiene.
i = 1
while i <= 11:
print i," ",
i = i + 1
Nos da como resultado:
1 2 3 4 5 6 7 8 9 10 11

Ya esto seria lo ultimo de esta pequeña introducción a Python el siguiente juego comenzamos con el entorno gráfico. Si desean mas informacion pueden visitar las siguientes paginas:
http://docs.python.org/tutorial/
http://es.diveintopython.org/index.html

mayo 29, 2010

Segundo juego!

Primer código


def mensaje(a):
 if a==1:
  print "chao mundo"
 elif a==2:
  print "odnum oahc"
def main():
 mensaje(1)
 mensaje(2)
 return 0

if __name__ == '__main__':
 main()
Primero se tiene que guardar este codigo en un archivo de texto y guardarlo con cualquier nombre, pero con la extension py, por ejemplo "mensaje.py" entonces procedemos a ejecutarlo, entonces ponemos en el terminal el siguiente codigo para correrlo. Dandomos el siguiente resultado:
$python mensaje.py
chao mundo
odnum oahc
Como se pudo apreciar en el codigo de arriba se tiene dos funciones def mensaje(a) y def main(), siempre que se encuentre def nos indica que es una función y los argumento solo se ingresan las variables sin importar el tipo de variable(gran ventaja con respecto a otros lenguajes), todo es un objeto para Python, despues de escribir esto en el codigo al comenzar la siguiente linea debemos precionar la tecla TAB (es una recomendacion ya que con espacio es mas que suficiente pero se les va a facilitar bastante), ya que python se puede decir que el codigo maneja jerarquia al hacer esto le estamos diciendo que lo que se esta escribiendo a continuacion le pertenece a la funcion de arriba, y lo mismo se aplica para los if, for,while, etc. para todo lo que te encuentres en python debes recordar esta unica regla que tiene en la escritura.
Mientras que el if __name__ == '__main__': esta parte es una de las mas complicadas de entender de python ya que como todo es un objeto, estos módulos tienen el parámetro __name__ entonces este nos puede servir para probar el programa dentro de si mismo si se importa el mismo como se muestra a continuacion.
import "El nombre del archivo sin .py y sin comillas"
"El monbre del archivo sin .py y sin comillas".__name__
y este nos debera devolver el nombre del modulo, pero no me a salido.
Sentencia IF
Como se puede ver en el código la sentencia IF no lleva paréntesis y lo mas importante es que lleva dos puntos ":" al final de la operación, no se tiene un endif o algo parecido como otros lenguajes, y si se necesitara anidar los if se utiliza elif o else dependiendo el caso.
else para cuando no se cumpla la condicion y elif para cuando no se cumpla y se tenga que verificar otra conticion
if alfa2==0:
print "es cero"
elif alfa2>0:
print "mayor a cero"

entonces si alfa2 fuera 0 se va a imprimir "es cero" mientas que si fuera mayor a cero se imprimiria ese mensaje.
Operadores:


igual ==
mayor >
mayor igual >=
menor <
menor igual <=
diferente !=
y logico and,&
o logico or,|
IDE para Python
Se pueden encontrar algunos, pero para comenzar es bueno el geany es super simple y sensillo para utilizar sin contar que nos ayuda ya que posee templates de archivos de python para comenzar a escribirlo y nos permite ejecutarlo desde el mismo para probarlo.

Y para probar el codigo ingresado presionamos F5 para ejecutarlo

Primer juego!

Hasta donde vamos a llegar por el momento, a realizar una interfaz grafica, para controlar un robot SCARA(ya que eso estoy haciendo en la universidad), utilizando las herramientas GLADE y Python, entonces un poquito de historia de estas.

Glade "es una herramienta de desarrollo visual de interfaces gráficas mediante GTK/GNOME. Es independiente del lenguaje de programación y predeterminadamente no genera código fuente sino un archivo XML"1

Python "Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros."2

Espero que esto sea toda la lata que tenga que poner en estas pequeñas ayudas

Porque Glade?

Bueno porque es una herramienta que nos va a servir bastante al momento de hacer el programa ya que nos da la libertad de olvidarnos de la interfaz gráfica mientras hacemos el programa ya que esta va a ser completamente independiente de este, ya que solo tenemos que cargarla al programa y leer las señales que esta nos de.

Si señales, al realizar la interfaz se manejan señales, esto se a explicar mas adelante en el juego(a por cierto asi voy a llamar a cada entrada de esta pequeña ayuda)

Porque Python?

Bueno este puede ser lo mas difícil de explicar ya lo escogí por puro capricho mio, ya que no me gusto para nada al principio por la manera que se debe escribir y ordenar el código de este, ya que no soy muy ordenado, al programar. Y no me iba a ganar un lenguaje.

Espero poder darles una idea confusa de lo que se va a hacer (ja ja)

En el siguiente juego se va a comenzar a explicar poco a poco el manejo de Python desde un simple y típico "chao mundo!!" hasta el control del robot SCARA; claro no todo en el mismo juego.

1 http://es.wikipedia.org/wiki/Glade

2 http://es.wikipedia.org/wiki/Python