Archivo para la software libre categoría

resumiendo el libro de Django

Publicado en Linux, python, software libre con etiquetas , , el 28 Febrero 2009 por javiercastrillo

En mi camino de aprender Django, me encontré con el Djangobook, y a partir de allí El libro de Django, traducción del original hecha entre otros por el amigo Humitos. Ahora les paso un resumen de ese libro, en esta primera entrega llegamos a hacer nuestra primer página dinámica con este framework.

Resumen del Djangobook

Para crear el proyecto mysite en el directorio actual

$ django-admin.py startproject mysite

Crea los siguientes archivos:

__init__.py
: Un archivo requerido para que Python trate a este directorio como un paquete
manage.py: Una utilidad de línea de comandos para interactuar con la aplicación
settings.py: Opciones y configuraciones del proyecto
urls.py: Tabla de contenidos del proyecto

Django trae un pequeño servidor para probar el proyecto. NO usarlo en reemplazo de Apache u otro de producción, es sólo para probar mientras uno desarrolla.

$ python manage.py runserver

Aparece algo parecido a:

Validating models…
0 errors found.
Django version 1.0, using settings ‘mysite.settings’
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Eso quiere decir que el servidor está corriendo y si voy al navegador y entro en http://localhost:8000 voy a ver la página de prueba.

Ahora que sabemos que funciona, vamos a hacer nuestra primera página dinámica, para empezar haremos una que indique la hora actual. Se debe hacer una *función de vista* (view function) que es una función que toma como argumento una petición web y retorna una respuesta web. Es decir una página, un error 404, un documento, etc. Entonces creamos un archivo llamado vistas.py en el directorio mysite y escribimos:

from django.http import HttpResponse
import datetime

def dia_hora_actual(request):
ahora = datetime.datetime.now()
html = "Ahora es %s." % ahora

return HttpResponse(html)

Repasemos línea por línea:

* Primero importamos la clase HttpResponse
* Luego importamos el módulo datetime desde la biblioteca standard de Python
* Definimos la funcion dia_hora_actual() que es una funcióń de vista. Toda función de vista toma como primer argumento un objeto HttpRequest al que se le asigna el nombre “request”
* Calculamos el valor de ahora mediante la biblioteca estandard de Python
* Generamos el html con la respuesta
* Generamos el objeto HttpResponse con la respuesta. Casi siempre una función de vista es responsable de crear un objeto HttpResponse

Ahora bien, cómo le “decimos” a Django que use ese archivo? Allí empiezan a tallar las *URLconfs*. Son tablas de contenido que le indican a Django “para tal URL usá este archivo, para esta otra URL usá este otro código, etc”

Veamos el archivo urls.py que se generó al crear tu proyecto:

from django.conf.urls.defaults import *

urlpatterns = patterns('',
# Example:
# (r'^mysite/', include('mysite.foo.urls')),

# Uncomment the next line to enable the admin:
# (r'^admin/(.*)', admin.site.root),
)

Repasemos este archivo línea por línea:

Primero importamos todos los objetos desde el módulo django.conf.urls.defaults, en ese paquete obtendremos una función llamada “patterns”

Luego llamamos a esa función patterns() y guardamos el resultado en la variable urlpatterns. El argumento de la función es una cadena vacía. Todas las demás líneas están comentadas.

En este momento nuestra aplicación está en blanco, nueva, entonces Django sabe que debe mostrar la página “It worked!”. Vamos a cambiar este archivo para que podamos mostrar la hora y fecha actuales:

from django.conf.urls.defaults import *
from mysite.vistas import dia_hora_actual

urlpatterns = patterns('',
(r'^time/$', dia_hora_actual),
)

Lo que hacemos es importar la función dia_hora_actual desde vistas.py y por otro lado agregamos la línea (r’^time/$’, dia_hora_actual), que es una tupla compuesta por una expresión regular y la denominacipon de la función. En español, le decimos a Django que toda petición web URL /time sea manejada por la función dia_hora_actual

La expresión regular implica que la URL debe ser exclusivamente “time”. El ^ al principio y el $ al final indican “eso y nada más que eso”.

Ya podemos ir al navegador y ponemos localhost:8000/time y deberemos ver la página que generamos.

rms en la televisión pública

Publicado en actualidad, software libre con etiquetas el 5 Febrero 2009 por javiercastrillo

Incluyo en este post los videos de RMS en su reciente aparición en una entrevista realizada por Rosario Lufrano en Canal 7. Muy interesante que en la TV pública haya un espacio para el SL, espero que los gobernantes tomen nota de lo importante que es para nuestro país la adopción desde el estado y desde la educación del software libre.



Terminamos el curso de Python – Ejercicios y evaluación

Publicado en Linux, Sanca, actualidad, educación, python, software libre con etiquetas , , , , el 21 Diciembre 2008 por javiercastrillo
wxPython, la biblioteca gráfica usada en el curso

wxPython, la biblioteca gráfica usada en el curso

Según comentaba acá , este año tuvimos la inmensa dicha de compartir el primer curso de Programación usando el lenguaje Python, en la Escuela de Oficios San Cayetano, perteneciente al CFP 401 de Vicente López, Provincia de Buenos Aires.

En esa primera entrega listaba los primeros ejercicios, completo en este post los trabajos que hicimos en este año:

Empieza con ejercicios en Python pelado, o sea aplicaciones de consola.

#38    Usando una variable booleana, pedir números por teclado hasta que se ingrese un cero, al pasar estos devolver el resultado de la multiplicación de todos los números ingresados.

#39   Primer Proyecto: Hacer un juego   donde la PC seleccione un número al azar entre 0 y 100. El jugador debe  ir tratando de  adivinar y el programa devolverá “Muy bajo”, “Muy alto” según corresponda. Una vez que adivina, mostrar un mensaje de felicitación  junto a la cantidad de intentos.

#40   “El semáforo loco”: En una esquina un semáforo toma valores aleatorios de rojo, amarillo y verde y no lo podemos controlar.
Programar el semáforo de la calle transversarl para evitar accidentes.

#41  Programar un juego de “piedra”, “papel” y “tijera”. Las  reglas son las siguientes: 1º)  La aplicación le  pregunta el nombre al jugador.  2º)  Luego pregunta cuantas manos van a jugar.  3º)  El programa hace su primer jugada, le pregunta al jugador la suya y calcula el ganador.  4º) Una vez que llega a las manos acordadas en el punto 2 finaliza la partida y muestra el resultado final.

#42  Hacer un pequeño juego donde la PC nos desafía al “Cara o Seca” en 3 manos.

#43  El programa simulará el juego de adivinar en qué mano está la moneda. Le preguntará a la persona el nombre y cuantas partidas quiere jugar, luego calculará el ganador.

#44  Pedir el nombre de la persona y un rubro (impuestos, servicios, etc.) e ir solicitando e ingresando los gastos correspondientes hasta que la persona ingrese 99999. Allí devolver la suma de lo ingresado. Si la persona ingresa un número > 10000 ignorarlo.

#45  Pedir el ingreso de diez nombres de personas, contar cuantos “Perez” aparecen.

#46  Dada una palabra devolver en orden inverso.  Es decir si se ingresa “Calcular” devolver “Raluclac”

#47  Dada una palabra o una frase, decir si es o no un palíndromo (capicúa)

#48  Reformar el ejercicio 47 para que descarte los espacios y funcione con frases.

#49  Escriba un programa que permita crear una lista de palabras. El programa pide un número y luego solicita ese número de palabras para crear la lista. Por último el programa tiene que escribir la lista completa.

#50  Sea una lista de personas autorizadas en una empresa a manejar una aplicación. Hacer un programa que pida el nombre,  busque en la lista si ese nombre está autorizado o no. Si no lo está escharlo y terminar el programa; si lo está pedirle la edad y  responderle aproximadamente  en que año nació. Despedirlo y terminar el programa.

#51  Pedir un número por teclado y calcular la serie de Fibonacci que no sobrepase ese valor.  Los núm de la serie deberán almacenarce en una lista y ser mostrados al final del ejercicio.

#52  Hacer un programa que nos dé la bienvenida. Que tenga un menú con dos opciones: 1) Usar el  programa, 2) Ayuda. Si se elije el menú “Ayuda” mostrar un pequeño texto explicativo y terminar. Si se elije la opción “Usar el  programa”  pedirá un número y devolverá los multiplos de ese número.

#53  Sea  la siguiente lista: Lista= ["River", "Boca",  "CASLA", "Velez", "Newell's", "Racing"], hacer un  programa que  presente  un  menú  como el  siguiente:
1) Agregar
2)  Quitar determinado ítem
3)  Listar
4)  Ordenar
5) Acerca de…
6) Salir

#54  Hacer un programa que me pida mi nombre y lo guarde en un archivo llamado “datos.txt”.

#55  Hacer un programa que almacene nombres de estudiantes. Los debe guardar en un archivo llamado “estudiantes.txt”. Además debe poder mostrar todos los estudiantes que se ingresaron hasta el momento. Hacer un pequeño menú.

#56  Modificar el programa anterior para que podamos dar de baja en el archivo.

#57  Hacer un programa  que pida por teclado  3  números. Decir si  se  puede formar un triángulo  con esas tres medidas de lados. Si se puede aclarar qué tipo de triángulo es. (para que se pueda formar un triángulo, la suma de dos lados tiene que ser mayor al tercero).

#58  Pedir 3 lados y primero: decir si con esos lados se puede hacer un triángulo. Resolverlo usando funciones.

#59  Pedir 2 palabras y decir si riman o no. (Llamamos “rimar” a que las últimas 3 letras sean iguales)

#60  Pedir un número inferior a 4mil y que el programa lo escriba en números romanos.

#61   Usando  diccionarios, elabore una agenda de  teléfono de los compañeros del  curso, donde  pida el  nombre y  devuelva  el teléfono.

#62  Practicamos Clases con el siguiente modelo de aplicación:

class Persona:  ———->  definición  de clase
def saludar(self):  ————–> método

print “Hola!”
def despedir(self):   —————> método
print “Chau!”

cacho =  Persona()   ——> Instancia
cacho.saludar()
cacho.despedir()
olga =  Persona()   ——–> Instancia
olga.despedir()
nadia =  Persona()  ——-> Instancia

#63   Crear una  clas persona.

#64   Crear 2  clases:

-Profe ( def  __init__ : nombre,  curso, sueldo.  def  saludar)
-Estudiante ( def  __init__ : nombre,  curso, edad.   def  inscribir  )

#65   Hacer un programa usando clases, que por un lado  pida : nombre, apellido,  dni y tel.  de un socio.
Además permita ingresar  título y código de una película / libro  alquilada. Todo funcionará a través de una base de datos MySQL.

A partir de acá comenzamos con una biblioteca gráfica llamada wxPython , es decir que las aplicaciones dejan de ser en consola para tener una GUI.
#66 “Hola  mundo!” en ventana.

#67  Diseñar una ventana con dos botones abajo a la derecha que digan  “aceptar”  y  “cancelar”.

#68   Realizar la siguiente interfase:

Ingreso de datos:
Nombre:             _______________   (wx.TextCtrl)

D.N.I. :                 _______________   (wx.TextCtrl)

Nacionalidad:   _______________   (wx.ComboBox)

Estado Civil:      ·  soltero                 (wx.RadioBox)
· casado

Botones:                                           Cancelar                   Aceptar

#69   Hacer una ventana de 400 * 300 que aparezca centrada en la pantalla y  dos botones: El botón “Cerrar” para que termine la aplicación y el  botón  “Saludar” para que aparezca  un saludo en el panel.

#70  Hacer una ventana de 350 * 250 la cual tenga en el panel el título “Probamos botones”  y tres botones:
1)  “Cerrar” —–>  Salir de la aplicación
2)  “Uno”  ——->  Que aparezca otra  ventana con un mensaje, el  ícono de “atención” y un  botón (Aceptar)
3)  “Dos”  ——->  Que aparezca otra  ventana con un mensaje, un ícono  y dos botones (SI/NO)

#71  Realizar una ventana en la que podamos ingresar un nombre y un teléfono y que cuando hagan  click en el botón  “saludar” nos aparezca otra ventanita que nos saluda y nos dice el núm de tel. Si se oprime el botón “Cancelar”  cierre la ventana.

#72  Realizar un a ventana en la que podamos ingresar: nombre (wx.TextCtrl), estado civil (wx.ComboBox), fecha de nacimiento (wx.DatePickerCtrl), y  tenga el botón “Cancelar” y “Saludar”.  Estos datos tienen que aparecer en un mensaje de diálogo.

#73  Crear un formulario para dar de alta un nuevo libro / película. Los  datos deben  cargarse  a una  base de datos MySQL a través de mysqldb.

#74  Crear una tabla  “club” con los siguientes campos: id-club,  nombre, anio-fundacion, cant-campeonatos. Luego ralizar un formulario para rellenar con el nombre de un club, su año de fundación y cantidad de campeonatos.  Estos datos deben ingresar a la base  de  datos.

#75 Crear una nueva ventana  con wx.MenuBar  y  wx.StatusBar, que contenga la anterior ventana  y una nueva de alta de jugadores según el club  ingresado.  Además mostrar  un listado de los clubes y otro de los jugadores ingresados hasta el momento.

#76  Realizar un editor de texto.

# 77 Desarrollar con todo lo aprendido un sistema de administración con ABM a manera de trabajo final en modo proyecto. (En respuesta a esta consigna, los estudiantes han desarrollado sistemas de turnos para consultorios médicos, sistema de administración de servicios de una peluquería, de una biblioteca, pizzería, etc.)

Hasta allí llegamos, esperamos que sea útil para muchos esta lista de ejercicios, que la usen en cursos similares o en autoaprendizaje, están pensados para ir de lo más fácil a lo más complejo, lógicamente.

Realmente, el resultado ha sido completamente satisfactorio, más de lo que esperábamos, nos sentimos satisfechos ya que han terminado catorce compañeros que se llevan los rudimentos necesarios para hacer su camino en este mundo de la programación y que, seguramente, serán muy buenos profesionales si se lo proponen.

richard stallman en buenos aires

Publicado en actualidad, software libre con etiquetas , el 28 Octubre 2008 por javiercastrillo
RMS

RMS

Invitado por Fundación Vía Libre, el padre del Software Libre ofrecerá
una conferencia en la Cámara de Diputados de la Nación

Anuncio oficial en el sitio de FVL

El lunes 3 de noviembre, desde las 18hs. Richard Stallman, el padre del
movimiento de Software Libre ofrecerá una conferencia en el Salón
Auditorio del Anexo de la Honorable Cámara de Diputados de la Nación,
Rivadavia 1865, Primer Subsuelo, Ciudad de Buenos Aires. La Fundación
Vía Libre invita y coordina este evento que contará con la presencia
como anfitriones, de los Diputados Eduardo Macaluse del Bloque
Solidaridad e Igualdad (SI) y José Manuel Córdoba del Frente para la
Victoria (FPV), legisladores que están trabajando en proyectos de ley de
uso de Software Libre en la Administración Pública Nacional.

Stallman es reconocido mundialmente por haber dado origen al Proyecto
GNU, el proyecto fundante del movimiento global de Software Libre,
programas que respetan la libertad de usuarios y desarrolladores de
usarlos con cualquier propósito, estudiar cómo funcionan, hacer y
distribuir copias, mejorar y redistribuir los programas mejorados. Este
físico, graduado en la Universidad de Harvard, revolucionó el mundo de
las nuevas tecnologías al impulsar la ética y filosofía del software
libre y los principios básicos de la libertad de expresión en el uso de
computadoras.

Ideólogo principal del movimiento del Software Libre, Stallman ha
recibido el premio “Grace Hopper” de la ACM, una beca de la Fundación
MacArthur, el Premio Pionero de la Electronic Frontier Foundation y el
Premio Takeda por sus contribuciones a la mejora social y económica, así
como numerosos Doctorados Honoris Causa en Universidades tales como la
Universidad Nacional de Salta (Argentina),  Vrije Universiteit Bruselas
(Bélgica), Universidad de Glasgow (Escocia), Royal Institute of
Technology de Suecia, entre otros.   Más información sobre el perfil y
trayectoria de Richard Stallman en el sitio oficial del movimiento GNU

La visita de Stallman al país se produce en el marco de una gira
regional que comprende conferencias en Paraguay y Uruguay. En Argentina,
su llegada es estratégica para la discusión de un proyecto de Ley de
Licenciamiento de Programas Informáticos para el Sector Público
Nacional, que es parte del trabajo conjunto de las Comisiones de
Comunicaciones e Informática y Educación de la Cámara de Diputados y que
cuenta con las contribuciones de los proyectos presentados por Macaluse
y Córdoba, legisladores que impulsan estas iniciativas.

*Información importante para acceder al evento*

La entrada al evento es libre y gratuita y no requiere inscripción
previa. Sin embargo, la capacidad del auditorio es limitada, por lo que
el cupo de ingreso también será limitado y ajustado a estricto orden de
llegada.  Dado que se trata de un auditorio ubicado en la Honorable
Cámara de Diputados, recordamos que será necesario contar con un
documento que acredite identidad para pasar las medidas de seguridad del
recinto. Por otro lado, y para ahorrar tiempos en el ingreso, sugerimos
a los asistentes no llevar computadoras portátiles, ya que probablemente
se requiera su declaracion en la entrada.

Para acreditaciones de prensa rogamos tomar contacto con
info@vialibre.org.ar para facilitar el acceso y el registro de equipos
electrónicos requeridos para la cobertura del evento.

*Sobre Fundación Vía Libre*

La Fundación Vía Libre es una organización civil sin fines de lucro,
radicada en Córdoba, Argentina, que desde el año 2000 trabaja para que
en la incorporación de nuevas tecnologías a la vida cotidiana se
preserven los derechos fundamentales de la ciudadanía. En este sentido,
la Fundación ha hecho de los principios del movimiento global de
Software Libre parte de su eje de trabajo y militancia.

Desde sus inicios, la Fundación Vía Libre ha acompañado proyectos
legislativos tendientes a fomentar el uso y adopción de Software Libre
por parte del Sector Público Nacional como herramienta estratégica de
respeto a la transparencia de los actos de gobierno, el respecto a la
igualdad de las personas, y la soberanía e independencia en el manejo de
nuevas tecnologías por parte del Estado.   Actualmente, la Fundación Vía
Libre participa del Proyecto FLOSSInclude, un proyecto del 7mo. Programa
Marco de la Unión Europea que pretende fomentar la adopción y difusión
de Software Libre en áreas estratégicas del desarrollo social,
incluyendo las Administraciones Públicas Nacionales y Locales y el
sector educativo.

Vía Libre está acompañando esta vez el proyecto de Licenciamiento de
Software para el Sector Público Nacional, un proyecto que abreva en los
proyectos de Uso de Software Libre en el Sector Público presentados
tanto por el Diputado Córdoba (Frente para la Victoria) como por el
Diputado Macaluse (Bloque Solidaridad e Igualdad),  que tienen estado
parlamentario y se encuentran en la agenda de trabajo de las Comisiones
de Comunicaciones e Informática y Educación de la Honorable Cámara de
Diputados de la Nación.

Importante es destacar que estas iniciativas cuentan también con el
antecedente de trabajo del fallecido ex-diputado Marcelo Dragan, a quien
se debe reconocer la visión y el impulso de estas propuestas
legislativas desde los primeros años de esta década en la Cámara de
Diputados.

Más información sobre la Fundación Vía Libre está disponible en su sitio web

*Contactos de prensa*
Beatriz Busaniche
bea@vialibre.org.ar
O directamente a los despachos de los Diputados Macaluse y Córdoba en la
Cámara de Diputados de la Nacion.

día de emociones fuertes

Publicado en Sanca, actualidad, educación, política, software libre con etiquetas , , , , , el 17 Octubre 2008 por javiercastrillo
Cristina y Néstor inaugurando el polideportivo "Juan Domingo Perón"

Cristina y Néstor inaugurando el polideportivo "Juan Domingo Perón"

Ayer, la Presidenta de la Nación, visitó el barrio de Villa adelina, a cuatro cuadras de Sanca. Alrededor del mediodía, se decía que no iba a poder venir, ya que tenía una reunión urgente con banqueros por el tema de la crisis de los EEUU. Así que con poca esperanza me fuí a la delegación municipal, lugar en el que se haría la inauguración de un polideportivo, llamado “Juan Domingo Perón”. Gracias a la invitación que Inés, la delegada, había cursado, pude ubicarme a pocos metros del escenario. Y por suerte, Cristina realizó su visita. Néstor también estaba presente, sentado a su izquierda. Con la plena sensación de estar viviendo un momento histórico, de esos que recordaré mientras viva, bajé los escudos y dejé que la emoción me invada, y lloré durante todo el acto, absorbiendo todo lo que allí pasaba. Escuchando y asintiendo, comiéndome con la mirada cada gesto, cada sonrisa, cada saludo a la gente, cada chiste a la distancia. Realmente, un día de esos que no se olvidan, que se llevan para siempre, que se guardan, que se atesoran. Luego de las palabras de Cristina, tuve la oportunidad de darle un fuerte abrazo y un beso, y de saludar a Néstor con un apretón de manos “barrio alike”. Además entregué una carta que había llevado, contando el trabajo que hacemos con el Software Libre en la educación, e invitándola a visitar la escuela y charlar seriamente en la alternativa de la educación libre. Una semilla en el viento, veremos qué es lo que pasará con ella.
A la una de la mañana, luego de jugar un partido de fútbol, cansado, con los ojos llenos de imágenes y el alma renacida de espíritu de lucha, seguía sintiendo el “fuerza, fuerza” que entre lágrimas y latidos, le recitaba como retahíla a Cristina y Néstor.

Abajo está el video completo del discurso. Por allí por el minuto 4:40 hay un personaje llorando…