bxSplit: HJ-Split en Python

March 29, 2008

Habíamos hablado una vez en este blog sobre HJ-Split y su algoritmo, el cual describimos y dejamos pendiente la implementación. Pues bien, que este corto post sea para informarles que he terminado mi propia implementación del algoritmo a la que llamo: bxSplit, es decir ‘BrunoxSplit’.

bxSplit está escrito en Python y está liberado bajo la MIT License.

Pueden descargarlo aquí. Renómbren el .py.txt a .py si desean ejecutarlo. Lo pongo así para que sea más facil a algunos, leer el código antes de bajarlo.

Aquí les pongo la ayuda del archivo:

Modo de uso:
    -h: Muestra la ayuda
    -s [MB] [File]: Divide el archivo [File] en trozos de [MB]
    -j [File.000]: Une el archivo [File.000] en el archivo [File]

Ya he actualizado el post del algoritmo para que vean el código por aquí.

Tengo que finalizar mencionando que este programa lo escribi debido a que se me pedía el programa HJ-Split en algunas descargas de Captain Tsubasa. ¡Ahora podré unir los archivos! 

El tono ‘Mosquito’ y su buen y mal uso

March 20, 2008

Si los que me leen, estudian en Universidades ya sea en el Perú o fuera de ese país, todos se deben de haber dado cuenta de un detalle importante. Muchos profesores prohíben el teléfono celular o al menos los sonidos que produce por ser ‘distractores’ de las clases. Igual sucede con las escuelas. Las medidas disciplinarias contra un teléfono móvil pueden ser duras dependiendo de profesores y demás circunstancias.

En el 2005, Howard Stapleton inventó en Inglaterra, un dispositivo al que llamó "El Mosquito" que consiste en emitir una frecuencia de 17.5 KHz a 85 dB, que debido a un efecto conocido como Presbiacusia, que consiste en que apartir de los 20 años, es más difícil para el oído humano el detectar frecuencias entre 18 - 20 KHz. Stapleton usó este dispositivo para emitir una frecuencia que espantara a personas menores de 20 años (Es decir, jóvenes) para evitar que estos produscan actividades vandálicas o situaciones que perjudiquen al negocio de Stapleton.

Pueden probar su habilidad de oír diferentes frecuencias en la página de Les territoires de la mémoire, una asociación que se opone al uso de estas medidas por considerarlas discriminatorias, ya que en teoría también pueden ser oídas por niños, jóvenes, bebes e incluso animales.

Hay que aclarar además que 85 dB es mucha intensidad de sonido. Según esta web, 85 dB son el sonido de un timbre o de un camión pesado, lo cual ha provocado que el dispositivo sea prohibido en algunos lugares. (Noticia de la BBC en Inglés, aquí)

Pero no todo es malo con este tono de 17.5 KHz. Algunas páginas web, como Mosquitono.com, ofrecen el mencionado sonido como un tono de teléfono celular, lo que facilita a jóvenes que usen los teléfonos móviles donde está prohibido hacerlo por el ruido o situaciones de privacidad. Otras webs como Tonosmosquito.com lo ofrecen para descargarlo gratuitamente para usarlo en situaciones iguales, pero explican el transfondo del tono y no lo presentan simplemente como un tono revolucionario. Para más información, podemos consultar la Wikipedia en Inglés.

Como joven que soy (17 años), he de mencionar que me parece injusto que se use una frecuencia baja para ahuyentar personas. Sin embargo considero interesante y porqué no decir acertado el uso de los politonos para celulares, ya que no molestan a los profesores. Pueden bajar los tonos en Tonosmosquito.com. Esperemos que les den un uso adecuado. 

Rectángulos con bordes redondos con Pygame

March 16, 2008

Los hemos visto en todos lados. Los rectángulos con bordes redondeados invaden el escritorio, los videojuegos y demás. Es la nueva moda. Y sin embargo muchos no sabemos que ese efecto muy llamativo es en realidad un simple truco de geometría.

Como tenía una aburrida tarde, me dediqué a programar con Pygame una clase que permita dibujar esta clase de figuras. Pueden ver el código fuente aquí

Si ejecutan el .py obtendrán el siguiente resultado:

Rectángulo con bordes redondos 

Pero aún no hemos hablado de como es el efecto. Bien, lo vamos a explicar.

  1. Obtenemos las cordenadas del rectángulo a dibujar
  2. Pedimos un radio para los bordes (A más radio, más redondo es el rectángulo)
  3. Restamos a las líneas que forman el rectángulo el doble del radio
  4. Dibujamos el borde redondo usando un arco. Para esto, atentos a lo siguiente:

Ur rectángulo es una figura de 4 lados y cuyos ángulos son de 90º. Sin embargo, para dibujar el arco, sabremos bien que un arco es simplemente un "pedazo" de círculo, por lo que especificamos los ángulos de inicio y fin del mismo. Entonces ocurre una curiosa correlación.

Si tenemos que un rectángulo originalmente tiene ángulos de 90º, 90 x 4 = 360º. Lo que significa que los arcos de los bordes son "1/4" de círculo. Por esa razón se usan los siguientes valores:

  • Borde Izquierdo Superior: 90º - 180º
  • Borde Derecho Superior: 180º - 270º
  • Borde Izquierdo Inferior: 270º - 360º
  • Borde Derecho Inferior: 0º - 90º 

Con eso tenemos todo un círculo perfecto. Por razones de imperfección de las pantallas y los ángulos se le han sumado +1 al borde izquierdo inferior. 

Ya tenemos una clase que dibuje rectángulos con borde. Sería deseable que alguien más entendido de Python analize el código para ver si es factible incluir esto dentro de Pygame. Al menos para mí, una función así sería muy útil.

El código es libre y puede usarse para lo que se desee. (Licencia MIT para los interesados)

He tomado ejemplos e ideas de la página LoserJuegos: Este y este.

El código fuente de la función __arc__ ha sido un mero porte de la función Arco() en C, de un código fuente de fhenix tomado de la página LoserJuegos. El código original es este

Cualquier error o mejora que propongan a este código favor de reportarlo en los comentarios. 

Feliz Día PI (3.14)

March 14, 2008

Como un plan de humor (No siempre estamos serios) me entero de una fecha religiosa importante quizá para los que estudien carreras relacionadas con matemáticas o que les guste esa ciencia. Hoy, 14 de Marzo, celebramos el Día PI.

Feliz Día PI
 

Aproximando PI a unas pocas cifras decimales, tenemos a 3.1416, por lo que las celebraciones deberían ser a las 4:00 pm.

Como curiosidad digamos que en la Biblia (1 Reyes 7:23) se daba a PI un valor erróneo de 3. Vaya fiabilidad… 

La idea de la fiesta religiosa y la imagen las obtuve vía Necudeco.com

¡Feliz día PI! 

Evento Involúcrate: Día 2

March 8, 2008

Continuando con el anterior post en el que describíamos al evento Involúcrate, que es un intento de mejorar el nivel de apoyo que da el Perú a proyectos de software libre como GNOME y demás.

El evento del día 2, debió comenzó a las 10:00 am con una ponencia sobre OpenOffice.org, que no se realizó porque no llegó el ponente, o bien eso fue lo que escuché…

Tras el inconveniente empezó Pedro Villavicencio, un chileno, con su tema Cómo participar en el Bugzilla (QA) de GNOME [QA = Quality Assistance] en el que mencionó que hay muy pocos encargados de ordenar y clasificar los bugs que a diario se reportan en GNOME. Mencionó además que la tarea es en realidad sencilla y se reduce a saber GNOME a nivel usuario y tener un promedio de 30 minutos para lidiar con el ordenamiento de los bugs. También invitó a los interesados al Bug Days de GNOME que se realiza los Jueves en el canal #bugs de irc.gnome.org.

Acto seguido vino German Poo, un chileno, con su tema Cómo Involucrarse en GNOME extendiendo las aplicaciones. Explicó dos cosas: Los fundamentos de Python y como podemos usarlo para crear plugins para Nautilus y Gedit. El ponente también hizo hincapié en escribir documentación para facilitar el desarrollo de los plugins, ya que no hay tal documentación a la fecha.

Después hubo cierta descordinación de horarios, lo que provocó que entrara a la sala equivocada y escuchara a Nicolás Valcarcel, un peruano, con su tema Parchando paquetes de Ubuntu / Debian, en lugar de oír a Diego Escalante, otro peruano, con su tema Cómo usar GNOME versión de desarrollo: descargar, compilar y probar. En este caso oí a Nicolás Valcarcel, el cual habló de las 3 alternativas para crear paquetes .deb para Debian y para Ubuntu: Usando dh-make, quilt y cdbs. El ponente sólo habló de dh-make, la manera común de paquetes en Debian, quilt para parcharlos y simplemente mencionó a cdbs como una forma automatizada del proceso. También mencionó a lintian, un programa que verifica que no hayan errores en los paquetes .deb.

Con esas ponencias se acabó el turno de la mañana. Menciono que hubieron otras a las que no pude ir, por ser en paralelo: Dokeos e-learning: Cómo participar en el desarrollo y las pruebas, de Yannick Warnier, un belga, Participando en el Launchpad (QA) de Ubuntu, de Pedro Villavicencio, un chileno y Proyecto PEAR: Distribuyendo y mejorando tu código PHP, de Jesús Castagnetto, un peruano.

En la tarde se reanudaron las ponencias a las 3:00 pm. Se comenzó con Genghis Rios, un peruano y su tema Software Libre en la PUCP: Implementación, difusión y desarrollo [PUCP = Pontificia Universidad Católica del Perú] en la cual se habló de como implementar un aula virtual con software libre, usando TightVNC para control remoto, wbapplet para una pizarra virtual, xpdf para manejar el upload de .pdf, Imagemagick para ver previews y finalmente lame y mencoder (Parte de Mplayer) para subir mp3 y convertir .avi y demás a .flv. Aunque la última parte no es del todo libre: Flash Player, som embargo se usó Streaming con un proyecto libre que no logré apuntar, pero sospecho que sería Red5. También dijo que la PUCP planea liberar en el 2009 el Aula Virtual, más que nada por prestigio.

Acto seguido vino Fernando San Martín, un chileno, con su tema de Python y GTK, en el cual habló de como usar Python y GTK para crear aplicaciones sencillas e inclusive crear aplicaciones que manejen base de datos con la librería Kiwi. También habló de Django un framework en Python para desarrollo web. También mencionó su entorno favorito de Python: iPython.

Acto seguido vino Manuel Cerón, un colombiano, con su tema Desarrollo de Aplicaciones GNOME con MonoDevelop (C#), en el cual mostró como crear una aplicación GTK con MonoDevelop, como corregir errores, subirla por CVS, traducirla y demás. También mencionó a Stetic, un diseladir tipo Glade para Mono. Excelente ponencia.

Después, continuó Manuel Cerón, con otro tema: MonoUML y MonoHotDraw: Desarrollando herramientas CASE libres, en el cual mostró como se intenta crear una librería de gráficos orientada a trabajar con UML y una aplicación para modelado UML y eventualmente de Base de Datos. 

Luego vino Francisco J. Morosini, un peruano, con su tema: Un ERP adaptado al Perú: Xendra [ERP = Enterprise Resource Planning, Planificación de Recursos Empresariales], en el que habló del Proyecto Xendra, un fork de Adempiere, que a su vez es un fork de Compiere, un ERP libre que tuvo problemas porque la empresa que lo desarrolla no tomó muy en cuenta a los desarrolladores. Morosini se justifica de su fork en que ningún ERP libre contempla la realidad peruana.

Siguió Ricardo Supo, un peruano, con su tema Python como un lenguaje de programación: Caso escuela San Rafael, en la que habló de como usan tanto Python y Pygame para ayudar a cambiar la lógica de pensamiento de los estudiantes, haciéndolos más ordenados. Mencionó que también usan Panda3D, aunque ya hemos advertido en el post anterior que su licencia no es libre, aunque realmente por sencillo detalle de reportar cambios a Disney.

Luego siguió German Poo, un chileno, con su tema: Intentando Cambiar el mundo: Porqué me involucré en el Software Libre, en la que rebatió mitos del Software Libre y dió ideas sobre su visión que puede en un futuro cambiar totalmente al mercado del Software. Tras hacer unas preguntas sobre Ubuntu regaló unos CD.

Finalmente vino Fernando San Martín, un chileno, con su tema: Cómo convertirse en un desarrollador de Software Libre y no morir en el intento, en la que explicó en términos económicos que el modelo del software propietario no es viable para el 99% de los desarrolladores que viven de vender servicios [Palabras textuales del ponente]. El problema que tiene el software propietario, es que vive de un monopolio artificial, en este caso la propiedad intelectual y cerrar el código poniendo barreras que dificultan la competencia. Muy buena ponencia.

Mencionar que hubo una ponencia a las que no pude asistir por ser en paralelo con otras, esto fue el caso de Sergio Aguayo y su tema AMILDA: Linux peruano para Routeres

Con la ponencia de Fernando San Martín, se terminó el evento Involúcrate. Espero que sirva para traer a más usuarios al mundo del software libre y podamos apoyar a proyectos como GNOME. Lo que sí noté fue una ausencia de KDE, pero en fin… supongo que también esa es la libertad de elegir. 

Evento Involúcrate: Día 1

March 7, 2008

El software libre siempre ha necesitado de voluntarios. Lamentablemente el Perú no es un país que destaque a nivel de desarrollos libres. Sólo hay que decir que Perú, por ejemplo, sólo tiene 1 desarrollador GNOME oficial, cuando Chile tiene 4 en promedio. Debido a esta necesidad es que se organiza este evento llamado Involúcrate, que según su web ya tiene 2 presentaciones realizadas.

El evento del que les voy a hablar, es el Involúcrate de Marzo 2008. Pueden ver el programa oficial aquí y se realizó en la Universidad Inca Garcilazo de la Vega en Lima (Lo que también significa que por primera vez viajé a esa ciudad).

El evento empezó a las 5:00 pm y como primera ponencia estuvo Fernando San Martín, un ponente chileno, con su tema: GNOME, 11 años de Libertad. Habló de como surgió GNOME en el año 1997 y de todos los avances que ha tenido el escritorio hasta llegar a sus versiones actuales como la 2.20. En lo personal he de mencionar que comentó funcionalidades de GNOME que no conocía, como efectos de cubo y demás. También habló de la siguiente versión de GNOME 2.22 a lanzarse el 12 de Marzo.

Acto seguido, Manuel Cerón, un ponente colombiano, dió inicio a su ponencia: Creando Juegos con Python. Habló de Pygame y de Panda3D, el último es un motor de 3D liberado por Disney. Sin embargo, aclararemos que la licencia si bien es libre en espíritu, tiene el problema de incluir una cláusula de control de exportación y obliga reportar todos los cambios hechos en Panda3D a Disney. Se lo comenté a Cerón y me dijo que la licencia tiene el problema de ser poco conocida, pero que de todos modos es libre. En realidad, la primera versión de la licencia si era libre, según este post, ya que se parece a la Apple Public Source License. Además según la FSF, la Apple Public License 2.0 es libre, aunque incompatible con la GPL. Salvando ese detalle, la ponencia fue muy buena.

Después, vino German Poo, también chileno, con su ponencia ¿Porqué liberar mi código?: Software Libre desde la Perspectiva de un desarrollador. En esta ponencia, se habló de cómo puede beneficiar al desarrollador liberar el código y construir una comunidad alrededor del mismo para poder tener una ventaja frente a otros modelos de desarrollo.

Concluido German Poo, siguió Nicolás Valcárcel, un peruano, que es desarrollador oficial de Ubuntu con su tema: Colaborador al Software Libre, ¿Yo?, en la que habló de que hay muchas maneras diferentes de ayudar al Software Libre, aparte de programar, como traducciones, arte y demás.

Finalmente, Pedro Villavicencio, un chileno, también desarrollador de Ubuntu, presentó su tema ¿Blueprints, control de versiones, freezes, ciclos de desarrollo? El detrás de cámaras de Ubuntu. Aquí mencionó como Ubuntu sigue un proceso de comprobación de errores y añadir funcionalidades para liberar una nueva versión cada 6 meses, preferentemente después de una nueva versión de GNOME. También nos informó que la próxima versión de Ubuntu sale el 26 de Abril. Entre las mejoras que no pudieron ser incluidas por tiempo, nos mencionó GDM Face Browser, una mejora a GDM que consiste en hacer un inicio de sesión basado en imágenes. También confirmó una de mis dudas: Ubuntu toma paquetes de Debian testing.

Esto fue todo el evento realizado el día Viernes 07 de Marzo, y las ponencias descritas son las ponencias que escuché. Hubieron algunas ponencias en paralelo con las que describí, como el caso de Gustavo Picón y su tema Feedjack: Un agregador de feeds con Django.

Actualización (10 - 03 - 08): Parece que los desarrolladores de Panda3D están dispuestos a liberar su código, eliminando la controvertida cláusula de enviar todos los cambios a Disney. Sin embargo, deberemos esperar hasta que se resuelva todo el papeleo de esta librería en la propia Disney. Cuando Panda3D sea Software Libre, tacharé las partes en las cuales mencioné lo inverso.

Tom’s Shell: Una Shell demasiado básica

March 3, 2008

Tom’s Shell (lit. ‘La Shell de Tom’) es una pequeña prueba de concepto de una Shell que hice. Realmente no soporta casi nada lo que se esperaría de una Shell actual, pero creo que sirve para aprender como debería ser una shell a nivel básico.

La empezé a escribir cuando leí en un libro de Sistemas Operativos que una ejercicio sería crear una shell que soporte diferentes opciones. Ya que no tengo ningún libro de Programación de UNIX a la mano, decidí crear tan solo la parte básica.

El nombre simplemente se me ocurrió, Tom por algún personaje en particular. El código intenta ser claro y sangrado y lo publico bajo la licencia GPL 2.0, al no ser la gran cosa.

Nota para los Curiosos: Esta Shell es totalmente inútil en entornos de producción. Sólo es algo que escribí en una hora y que ni siquiera puede ejecutar programas.

Pueden descargarla desde aquí. Prometo actualizarla en cuanto tenga tiempo.