an introduction to interactive programming in Python

El pasado mes de Octubre comencé el curso An Introduction to Interactive Programming in Python que la Universidad de Rice ofrece a través de Coursera. El curso es una introducción a la programación con Python basada en el desarrollo de juegos sencillos. De las 9 semanas que dura el curso conseguí llegar hasta la semana 7, y tuve que abandonar en ese punto el curso por falta de tiempo.

Como valoración global el curso me ha encantado. No soy un novato programando, pero mis conocimientos de Python eran muy superficiales. Con este curso los he mejorado, y sobre todo me he divertido. Hacía años que no disfrutaba tanto con un curso de programación, y esto ha sido posible gracias al enfoque del curso, que consiste en módulos semanales donde se explica lo necesario para que el alumno pueda realizar un pequeño proyecto de programación. De esta manera se consigue una alta motivación pues el alumno va viendo sus progresos semanalmente. Los proyectos son programas de dificultad baja o media, que se pueden completar con menos de 200 lineas de código, y que están detallados con procedimientos paso a paso que minimizan las dificultades de realización de los mismos. El único inconveniente es el idioma, a veces me costó entender qué tenía que hacer pero más por dificultades con el inglés que por la complejidad de la tarea a realizar.

Para el desarrollo del curso se utiliza la herramienta CodeSkulptor, que es un intérprete Python que se ejecuta en una ventana de navegador web, con lo que el alumno no tiene que instalar nada en su PC para seguir el curso. Además se utiliza un modulo llamado SimpleGUI que se ejecuta internamente en CodeSkulptor y que ofrece la posibilidad de realizar aplicaciones interactivas de manera sencilla. Este módulo es sencillo pero las posibilidades que ofrece para desarrollar aplicaciones gráficas sencillas son enormes.

Como dije antes, el curso está organizado por bloques semanales, cada uno con una serie de videos explicativos, ejercicios y un miniproyecto que se debe entregar puntualmente. El contenido de las 7 primeras semanas del curso fue el siguiente:

  1. Comentarios, literales, expresiones aritméticas, operadores, variables. Miniproyecto: ‘Queremos un shrubbery!’
  2. Funciones, indentación, expresiones aritméticas, módulos, expresiones y operadores lógicos, instrucciones condicionales. Miniproyecto: ‘Piedra, papel, tijera, lagarto, spock’.
  3. Programación dirigida por eventos, variables locales y globales, SimpleGUI, botones, campos de entrada. Miniproyecto: ‘Adivina el número’.
  4. Canvas y dibujo, operaciones con cadenas, dibujo de texto, timers. Miniproyecto: ‘Parar el cronómetro’.
  5. Listas, puntos y vectores, distancias, colisiones y reflexiones, eventos de teclado, control de posición, control de velocidad, datos mutables e inmutables. Miniproyecto: ‘Pong’.
  6. Eventos de ratón, métodos de listas, iteración, diccionarios, carga y dibujo de imágenes. Miniproyecto: ‘Memory’.
  7. Objetos y clases, trabajar con objetos, imágenes troceadas. Miniproyecto: ‘Blackjack’.

De las dos últimas semanas, lo único que se es que el juego a desarrollar era una versión simplificada del juego clásico de asteroides, y me dio mucha pena abandonar el curso en ese punto.

Para poder hacer los proyectos en mi PC sin tener que usar CodeSkulptor me instalé, aparte del intérprete de Python, las librerías PyGame y SimpleGUICS2PyGame. Esta última es una implementación de la versión de SimpleGUI que usa CodeSkulptor en local. Algunos de los programas que he realizado son los siguientes:

  • Parar el cronómetro, hecho con 83 lineas de código.
  • Pong, hecho con 138 lineas de código.
  • Memory, hecho con 82 lineas de código.
  • Blackjack, hecho con 220 lineas de código.

Mi recomendación del curso es total, tanto para programadores que quieran comenzar con Python como para novatos en la disciplina. El curso está muy bien desarrollado, mantiene la motivación del alumno y permite aprender los fundamentos del lenguaje de una manera muy divertida. El curso te deja con ganas de aprender más sobre Python y de usar lo aprendido para hacerte tus propios programas, como este ahorcado que he hecho con 78 lineas de código. Python es un lenguaje impresionante.

los tres hábitos que cambiarán mi vida

Desde hace tiempo estoy interesado en el minimalismo como corriente de desarrollo personal. El minimalismo propugna desprenderse paulatinamente de aquello que consideramos accesorio o superfluo en nuestras vidas para centrarnos únicamente en los aspectos esenciales de la misma. He ido interesándome por el tema en la medida en que pienso que los valores que aporta son beneficiosos para lograr un equilibrio y un crecimiento personal.

Uno de los blogs más activos en la difusión de esta corriente existencial en castellano es Homo Minimus. Además de haber traducido a castellano algunos de los libros de Leo Babauta, uno de los gurús de este movimiento, la web tiene muchísimo material propio que merece la pena leer.

A principio de este año 2014, Homo Minimus ha lanzado el proyecto de transformación anunciado en el post Los tres hábitos que cambiarán tu vida. Como suscriptor del blog he descargado el libro y me parece un reto en el que merece la pena embarcarse. Así que hago pública mi participación en el mismo, y animo a cualquier persona interesada en su propio desarrollo personal a involucrarse en el mismo. Nos vemos en el blog de Homo Minumus.

cómo gestionar ejercicios contables con findemes

Findemes permite gestionar los apuntes mediante ejercicios que corresponden normalmente con años naturales, pero también pueden corresponder con periodos escolares, periodos particulares de asociaciones, etc. Todos los apuntes y datos que se almacenen en el programa se guardan en el ejercicio actual, que aparece reflejado en la barra de título del programa.

findemes: indicación del ejercicio actual
findemes: indicación del ejercicio actual

Por defecto, findemes lleva un ejercicio creado, actualmente el 2013, pero podemos querer crear más ejercicios. Para ello entramos en el mantenimiento de ejercicios y seleccionamos la opción Nuevo ejercicio. El programa muestra el siguiente formulario:

findemes: alta de un nuevo ejercicio - 1
findemes: alta de un nuevo ejercicio - 1

Introduciremos el ejercicio en cuestión – limitado a 4 caractéres – y a continuación pulsaremos Crear carpetas. De esta manera el programa crear las carpetas donde almacenará los ficheros del ejercicio. Si se crea un ejercicio sin sus carpetas, el programa no encontrará los ficheros del ejercicio y se producirá un error. Si se desea elegir unas carpetas distintas a las que crea el programa por defecto, podemos pulsar el botón al lado de la ruta de cada carpeta para elegir una nueva. Una vez que tenemos las rutas de las distintas carpetas seleccionaremos el ejercicio del que deseamos incorporar datos y pulsamos Aceptar. Al elegir la opción de incorporar datos de un ejercicio anterior Findemes incorporará los datos de tipos de ingreso, pagadores/clientes, tipos de gasto, perceptores/proveedores y cuentas corrientes de ese ejercicio al nuevo. Con esto homogeneizamos la información introducida en el programa y nos ahorramos un buen rato de teclear.

findemes: alta de un nuevo ejercicio - 2
findemes: alta de un nuevo ejercicio - 2

Una vez creado el ejercicio debemos definir los tipos de IVA y de recargo de equivalencia existentes en el mismo, pues al crear el ejercicio este no tiene definido ningún tipo de IVA ni de recargo de equivalencia. Para ello primero debemos seleccionar el ejercicio y a continuación pulsar en la opción Tipos de IVA y Tipos de recargo equivalencia, con lo que findemes muestra el siguiente formulario:

findemes: tipos de IVA del ejercicio
findemes: tipos de IVA del ejercicio

Pulsando el botón Nuevo podremos incorporar un tipo de IVA al ejercicio e indicar si está vigente o no.

findemes: alta de un nuevo tipo de IVA
findemes: alta de un nuevo tipo de IVA

De esta manera, tras introducir los tipos de IVA y de Recargo de equivalencia de acuerdo a nuestra actividad ya tenemos configurado el ejercicio para trabajar con él. Para cambiar de ejercicio hay que entrar en la gestión de ejercicio y seleccionarlo a través de la opción Seleccionar ejercicio.

findemes: selección del ejercicio actual
findemes: selección del ejercicio actual

nuevas web

En las últimas semanas he estado preparando dos sitios web. Uno es para la peluquería de mi esposa, http://www.azabachenovelda.com, y el otro para el AMPA del Conservatorio de Danza de Novelda, http://www.dansa.es.

2013-11-27_180015

Los dos sitios web están hechos con WordPress y los dos usan el tema twenty thirteen, que me parece realmente estupendo. El motivo para elegir este tema para los dos sitios es debido a que soporta diseño adaptativo, y esto es muy importante hoy en día. Esto lo aprendí después de traducir y personalizar un tema gratuito con multiples características como portada deslizante, portfolio, etc. y tras probar la web con un smartphone el resultado fue un fiasco total. Más vale fácil y sencillo que rebuscado y complejo.

Para la web dansa.es estoy utilizando el plugin JetPack de WordPress que proporciona entre otras cosas estadísticas para la web, suscripción a post via emial y otras funcionalidades.

mejoras en el motor de informes de los programas

Hemos modificado el motor de informes de los programas de alanit para incorporar la funcionalidad de guardar la configuración completa de campos, encabezados, tipos de letra y fichero PDF para cada uno de los posibles listados a generar. Esto supone una gran mejora para los programas, dado que es posible personalizar completamente cada uno de los listados y el programa guarda toda información del mismo. De esta manera cada vez que seleccionemos un listado distinto tengamos guardada toda su configuración. Vamos a ver en que consiste esta mejora con un ejemplo.

La gestión de libros de Cuaderno de Bitácora muestra el siguiente panel de informes:

Podemos elegir todos estos informes. Una vez elegido el informe pasamos a personalizar los campos, el encabezado y los tipos de letra a utilizar, y el nombre del fichero PDF a generar. Supongamos que el listado completo de libros lo personalizamos de esta manera:

Generamos el listado y vemos que está de acuerdo a lo que queríamos obtener.

A continuación vamos a preparar el listado de libros prestados, personalizándolo para que nos muestre la información del libro y del préstamo. Seleccionamos el nuevo tipo de listado:

Y seleccionamos los campos que queremos. Ahora para este listado nos interesa incluir los datos del préstamo, como fecha del préstamo y persona a la que lo prestamos el libro.

Y de nuevo generamos el listado para asegurarnos que es el listado que deseamos.

A partir de este momento, cada vez que seleccionemos el listado completo de libros o el listado de libros prestados el programa se encarga de recuperar la personalización que hemos hecho de cada uno de los listados con sus campos, encabezados y demás.

Esta mejora del motor de informes va a estar en breve disponible en todos nuestros programas, en actualizaciones que publicaremos de los mismos en los próximos días.

findemes 2.50

Se encuentra disponible para descarga la versión 2.5 de Findemes. En esta versión se ha actualizado el interfaz con nuevos iconos y estilo Windows 7, he corregido todos los errores conocidos del programa, y además el programa presenta las siguientes novedades:

  • Exportación a formato Excel desde las rejillas de datos, aun sin Excel instalado.
  • Nuevo balance anual separado por trimestres
  • Selección de actividad en los gráficos de ingresos y gastos

La actualización a esta versión es gratuita para todos los usuarios registrados con posterioridad a Enero de 2012.

exportando datos a excel

Uno de los pequeños detalles que me faltaban en la actualización de Findemes en la que estoy trabajando era el tema de la exportación de datos a Excel. Es muy útil que cualquier programa permita la exportación de datos para que se puedan tratar en una hoja de cálculo, pero en el caso de un programa de contabilidad personal este aspecto toma mayor relevancia.

2013-04-23_160200

La manera más sencilla de exportar los datos de un xbrowse de FWH a Excel es usar el método toExcel() de la clase, sin embargo esta manera de realizar la exportación presenta algunos problemas. El primero es que la exportación se hace a través del propio Excel, o sea que el usuario tiene que tener Excel instalado, supuesto que no siempre se cumple. El segundo es no he conseguido que la exportación de datos numéricos se realice correctamente. Al pasar un número con formato 999.999,99 a Excel se transforma en 999999.99 con lo cual no se puede operar correctamente con él en la versión en español del programa. El porqué de este cambio escapa a mis conocimientos, pero creo que es debido a los cambios de formato que se utilizan internamente en la clase para la exportación.

2013-04-23_160142

Ante estos problemas recordé haber leído un post en el foro de FWH donde Rafa TheFull había publicado una manera diferente de realizar la exportación. En el post Rafa, que se puede leer en http://forums.fivetechsupport.com/viewtopic.php?f=6&t=19897, habla de los problemas para generar el fichero XLS a través del propio Excel y que no existe la seguridad de que esta manera de realizar la exportación funcione en todas las instalaciones. Ante esto, Rafa propone utilizar la clase XlsFile de Ramón Avendaño, un programador que en su día realizó muchas contribuciones a FWH. El método usado por esta clase consiste en crear un fichero desde cero, escribiendo todos los caracteres necesarios para crear un fichero en formato XLS puro, sin pasar por Excel. El fichero generado se puede abrir con Excel o LibreOffice.

2013-04-23_160417

Al comenzar a utilizar la función de Rafa, me encontré con el problema de la exportación de las columnas en que se muestra una imagen. La manera que he encontrado de de solucionarlo es usar la variable cargo que existe en todas las clases para asignar el valor que se va a mostrar en la exportación y luego comprobar que cuando el tipo de la columna sea de tipo definido por el usuario mostrar la variable cargo. Algo así:

elseif Valtype( cText ) == "U"
@ nFila, nCol XLS SAY oBrw:aCols[x]:Cargo OF oXls

Con esto consigo una exportación más completa que usando el método de la clase, que se realiza independientemente de los programas que tenga instalado el usuario y que se puede abrir con varios editores de hojas de cálculo.

colores en xbrowse

En la actualización de Findemes que estoy preparando he cambiado el aspecto del programa para dotarlo del look de Windows 7 y uno de los cambios introducidos es poner el pintado de las rejillas de datos con el degradado de Windows 7. Como en Findemes las lineas de apunte se pintan de distinto color en función de si son ingresos o gastos para hacer el pintado correctamente hay que modificar el método oBrw:bClrStd de la siguiente manera:


oApp():oGrid:bClrStd := {|| { iif( AP->ApTipo == "I", oApp():cClrIng, oApp():cClrGas ), CLR_WHITE } }

El resultado es el siguiente:

fdm_browse1

Sin embargo hay un problema: el pintado de los colores de ingreso y gasto es correcto en todas las lineas excepto en la linea seleccionada. En esta linea el texto sigue apareciendo en el color por defecto de browse que es el negro. Para que el efecto sea completo hay que modificar el método oBrw:bClrSelFocus de la siguiente manera:


oApp():oGrid:bClrSelFocus := { || { iif( AP->ApTipo == "I", oApp():cClrIng, oApp():cClrGas ),;
{ { 1, RGB( 220, 235, 252 ), RGB( 193, 219, 252 ) } } } }

Ahora el pintado ya es el deseado.

fdm_browse2

fórmulas en findemes

Hay una funcionalidad de Findemes que está un tanto oculta, y es la utilización de fórmulas en los campos numéricos de cantidades como por ejemplo los importes de ingresos o gastos en apuntes. En estos campos se puede introducir una cantidad directamente, pero puede haber casos en que nos interese hacer una suma o resta previa y almacenar el resultado. Para evitar tener que abrir la calculadora, hacer los cálculos y volver al programa, pulsando la tecla ESPACIO se activa una pequeña ventana donde podemos introducir fórmulas sencillas usando los operadores + – * / y también paréntesis. Al pusar INTRO el resultado de la operación se introduce en el campo correspondiente.

La posibilidad de activar la calculadora está disponible en los campos importe, total y gastos de los campos de edición de apuntes y apuntes periódicos.

curso de programación de aplicaciones en android

Me he inscrito en el curso android: programación de aplicaciones que está realizando el sitio web Miríada X. Este sitio web pertenece a la red universidades de Universia y ofrece cursos online masivos en abierto, o MOOC en sus siglas en inglés. El curso lo imparte un profesor de la Universidad Politécnica de Valencia, que fue precisamente donde cursé ya hace muchos años mis estudios universitarios en Informática. Va a ser mi primera experiencia en un MOOC, y cuando lo termine contaré qué tal me ha parecido.

Mi interés hacía la plataforma Android ha subido mucho desde las pasadas Navidades. Uno de los regalos en casa fue una tableta Android, y poco a poco ha pasado de ser un juguete a ir sustituyendo a los ordenadores de casa para tareas como navegar, leer el correo electrónico, juegos y alguna más. El punto débil de la tableta, desde mi punto de vista, es la dificultad para utilizarla en cosas que requieran escritura. Escribir en una tableta no es fácil, no tienes el tacto de un teclado físico y el trabajo no se realiza con la misma rápidez y facilidad que con un ordenador con teclado físico.

Con este curso espero adquirir los conocimientos básicos de programación de esta plataforma. Que el lenguaje usado sea Java es algo que no me gusta mucho, pero el entorno ‘oficial’ de desarrollo para Android – el Android SDK – está construido alrededor de este lenguaje. Mi relación con el lenguaje Java nunca ha sido buena, nunca me he sentido cómodo programando con él. Espero que esta vez sea diferente.

alanit
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.