Pirate Amazon: Extensión Firefox Controvertida

December 6, 2008

La descarga de materiales digitales sin la autorización de los derechos de autor, es considerada en muchos países como un delito, partiendo de la idea de que es el autor el que debe decidir como debe distribuirse su trabajo y si debe obtener algún beneficio económico.

Esto choca con la idea de que las constituciones o las leyes de cada país definen como el acceso universal de los ciudadanos a la cultura. Al ser la Cultura el conjunto de todas las expresiones y formas de una sociedad, podemos decir que casi todo lo que pensamos viene a ser cultura. A su vez, el acceso a la misma permitirá a una sociedad enriquecerse de ideas y progresar. Ahí viene un dilema… ¿Podemos tener acceso a la cultura, aún saltándonos las restricciones que el autor puso en su creación? Suponiendo que el estado está por encima, diríamos que sí podríamos.

Decir que en lo personal estoy a favor del acceso irrestricto a la cultura, ya que esta representa una forma de intercambio de ideas entre los seres humanos.

Dejando las disertaciones, el tema del post era una controvertida Extensión para Firefox llamada: Pirates of the Amazon, que en esencia comprueba si hay algún material "pirata" o descargable de algún producto que consultemos en Amazon.com. De existir nos lo reportará y podremos, "bajarlo" en lugar de comprarlo.

La extensión tuvo vida efimera, ya que actualmente el sitio indica que se trataba de una parodia y no de algo real. No obstante la extensión existe y puede descargarse de TorrentFreak, quienes han realizado un backup de la misma. Supondremos que el miedo a las demandas provocó que se retirara la extensión del sitio original. Otro mirror en: Cavallete.

El modus operandi es sencillo. Dado un producto que consultemos en Amazon, por ejemplo la versión Widescreen de la Película Kung-Fu Panda, nos mostrará lo siguiente:

Extensión Amazon 

Podemos hacer click en el "Download 4 Free" y nos dará un torrent para descargar la citada película, siempre y cuando esté indexada en el Tracker The Pirate Bay. A su vez, nos ahorramos el precio del DVD (Aproximadamente entre 30 y 14 dólares)

Aquí viene el quid del asunto: Técnicamente es posible (Lo explicaremos luego), pero ¿es justo esto para los autores? En algunos sitios donde he leído opiniones se dice que esto es un "robo a mano armada a los autores", "un cinismo", "una incitación a lo ilegal" y en otros "excelente extensión", "hacía falta hace tiempo", "totalmente necesaria para acceder a la cultura".

Lo vuelvo a decir. Personalmente estoy a favor del acceso irrestricto a la cultura, por dos cosas: La primera es porque aumentamos el intercambio de ideas entre personas y además porque lo copiarían de igual forma. Además… mientras no vendamos nada de lo que nos bajemos… no estamos perjudicando al autor directamente.

Pero, veamos el lado de quienes consideran que esta extensión es presagio del Apocalipsis: Sostienen que la gente dejará de comprar material multimedia, las empresas se arruinarán y desaparecerá la producción de cultura. Un escenario distópico muy difícil de lograr realmente.

Modus Operandi:

Ahora a lo prometido, vamos a detallar como trabaja la extensión y como podríamos mejorarla. Tenemos la página de Kung Fu Panda, es decir:

http://www.amazon.com/Kung-Panda-Widescreen-Jack-Black/dp/B001ECQ75A/ref=pd_sim_d_4

Notemos la estructura:

  1. Dominio Amazon.com
  2. Nombre del Producto (Kung-Panda-Widescreen…)
  3. Datos específicos

El título de la página será parecido a la sección Nombre del Producto, por lo que fácilmente podemos aislar las etiquetas <title> del HTML y con eso tendremos el título del producto que querramos descargar.

Acto seguido debemos localizarlo en algún sitio. En este caso en Pirate Bay, que es uno de los trackers de Torrents más completos de la red.

En este caso, la cadena de búsqueda sería:

http://thepiratebay.org/search/Kung%20Fu%20Panda/0/99/0

Notemos la estructura:
  1. Dominio (thepiratebay.org)
  2. /search/
  3. Cadena de búsqueda (Kung Fu Panda)
  4. Detalles

Y devolvemos el primer .torrent que nos devuelva el buscador. Aquí la eficiencia depende de como se extraigan las palabras clave de la web origen.

Acto seguido, insertamos en el código HTML una imagen que diga "Download 4 Free" [Descargalo Gratis], que apunte al torrent que acabamos de buscar.

Con eso ya tenemos la teoría para crear una extensión similar.

Mejorando la Extensión:

No todos usamos Torrent. Hay más sitios donde podamos encontrar enlaces de descarga, por ejemplo Taringa, Foros o búsquedas a materiales en Google con referencias a "Megaupload" y "Rapidshare".

Si pudiésemos construir un bot que pudiera loguearse en los foros, examinarlos, extraer los post "interesantes" e indexarlos en algún lado, podríamos obtener algo todavía más útil que Pirate Amazon. Lo malo es que muchos foros ya tienen medidas de seguridad y dudo que alguna Universidad patrocine un desarrollo destinado a la mal llamada "piratería".

Tenemos una solución. Podemos montar un sitio tipo Taringa, con la diferencia que tendríamos usuarios que en lugar de subir contenidos se dedicarían a encontrar contenidos y copiar los enlaces, creando una gran base de datos de material de descarga, ya sea Torrent o Descarga Directa. Lo malo es que no duraría mucho, porque un servidor es fácil de localizar y cerrar mediante leyes de infracción de derechos de autor.

Problema con el Script:

Un posible problema que podemos tener es que nuestro script, es que no podamos extraer la información del nombre correctamente. Si se masifica los sitios tipo Amazon, podrían ofuscar el HTML para dificultar la extracción del nombre. En este caso, en lugar de obtener "Kung Fu Panda" podríamos obtener "Kung Panda" o sólo "Kung".

Para solucionarlo, sí podemos crear una web o un archivo actualizado periódicamente con las diferentes permutaciones y "errores" de escritura del nombre de una película en particular. A vista del público sería un servidor para "corregir problemas de escritura de series y películas" y en realidad sería la columna vertebral de nuestro script.

Si me lo permite el tiempo prepararé una sencilla prueba de concepto en Python sobre un buscador parecido, pero sin las optimizaciones. Luego, dependiendo de eso podré publicar versiones más completas.

A los que les gustan las descargas… esta es una extensión muy recomendable. Lo malo es que no distinge idiomas, por lo que deberán acostumbrarse a los subtítulos.

Richard Stallman y el Cloud Computing

October 2, 2008

Leo en Barrapunto que Richard Stallman, advirtió sobre el "peligro del Cloud Computing", al llamarlo "una trampa". El fundador del Proyecto GNU, se expresó de forma muy dura con respecto a este fenómeno, indicando que es una estupidez usar servicios como los ofrecidos por Google.

Creo que hay que definir primero que es Cloud Computing. Es algo así como acceso descentralizado a los datos, de modo que se suben a servidores específicos (Tipo Google Docs) y quedan accesibles para ser procesados y accedidos por el usuario sin importar donde esté.

Obviamente esto no es una muy buena idea desde el punto de vista de la privacidad, y es aquí donde se queja Stallman. Los datos que supuestamente deberíamos manejar o tener nosotros, pasan a estar alojados en servidores de terceros. Claro que no todo tipo de documento es susceptible de esta preocupación. No es lo mismo subir un documento con tus datos personales a un simple cuento o documento de poca monta que se escriba.

Lo atractivo de la Cloud Computing es la facilidad de obtener los datos. Cosa que también puede ser lograda usando Memorias USBs. Al menos en el Perú, el "ansia" de subir todos los archivos no es mucha, ya que poseemos poco ancho de banda y es mayor el ancho de banda que ofrece un USB transportándolo uno.

Pero en otros países o en sitios donde poner un USB puede ser inaceptable (Virus, fuga de datos, etc), el Cloud Computing podría ser todo un atractivo para los usuarios. Aquí es donde el peligro de que datos sensibles puedan ser accedidos por terceros.

Una forma de tratar con esto es mediante la encriptación, ya sea subiendo archivos encriptados o buscando servicios donde la información sea cifrada.

Un punto en el que Stallman incide es que los programas que tratan a los archivos subidos no son libres. No lo son, ya que el usuario no los baja directamente. La GPL 3 no prevee este problema, aunque la Affero License si. El software libre debería apuntar al software Cloud Computing y dar alternativas, ya que en lugar de simplemente demonizar la tecnología, se puede usar para solucionar problemas o para personas que quieran tener acceso a sus datos y la vez el máximo control sobre los mismos.

Vayamos al punto de la paranoia y digamos que esto en realidad es una trampa: Google almacena toda la información de sus usuarios, Sun se llena de dinero por venta de servidores y de repente Google cambia todos sus servicios gratuitos a servicios pagados. La mayoría pagaría y las empresas obtendrían grandes ganancias.

Este comentario leído en Barrapunto, se desmorona por 2 cosas: Si una empresa se decide por cobrar, alguna saldría ofreciendo servicios gratis, de modo que ganase cuota de usuarios. Y la segunda es que aún existe el negocio del software en escritorio.

Claro está que hay que llegar a un punto intermedio y no a querer separarnos de todo. Podemos mantener ciertas cosas en la red, mientras que datos sensibles en nuestros PCs. En el caso de necesidad, subiremos datos cifrados. Así al menos disfrutamos lo mejor de ambos mundos.

La Ignorancia es atrevida

September 2, 2008

Esta frase de origen desconocido la suelo usar cuando veo que alguien afirma algo sin tener ninguna base en lo que dice. También me la suelen aplicar cuando cometo algún desliz. Sin embargo hoy veo algo en Televisión que me hacen pensar en el significado de esta frase.

Hoy, 02 de Septiembre de 2008, veía en América Noticias que un grupo de jóvenes peruanos participará en una final de ciberjuegos en Alemania. Los agraciados dominan con maestría los títulos Fifa 2008, Starcraft, Warcraft III e incluso el Counter Strike.

Hasta aquí una noticia como cualquier otra. Sin embargo cuando le preguntaron al padre de uno de los agraciados jugadores lo que opinaba de lo que realizaba su hijo (Jugar Starcraft), respondió con esta perla:

Me siento orgulloso de lo que hace mi hijo […] Esto es una disciplina deportiva, ya que le requiere un esfuerzo, concentración […]

¿Disciplina deportiva? ¿Jugar Starcraft podría llamarse deporte? Puedo llegar a llamar deporte al Ajedrez, por el nivel de concentración que precisa… pero a un juego de estrategia… dudaría en llamarle deporte.

Veamos la definición de Deporte:

El deporte es toda aquella actividad en la que se siguen un conjunto de reglas, con frecuencia llevada a cabo con afán competitivo. Como término solitario, el deporte se refiere normalmente a actividades en las cuales la capacidad física del competidor son la forma primordial para determinar el resultado […]

¿Starcraft sigue reglas? Claro que sí. ¿Se realiza con afán competitivo? A veces. Hay veces que se juega sólo por diversión. Sin embargo la contradicción está cuando se indica que como término solotario, deporte se entiende con actividades en las que la capacidad física del competidor influyen en el resultado.

¿Starcraft necesita disciplinas de sueño, alimentación y demás para poderlo practicar? Claro que no. Al menos no hay que dejar de comer carne o dormir menos para poderlo jugar. Entonces no es una disciplina propiamente dicha… y entonces no es un deporte.

Si vemos los registros de varios juegos online como Mu, GunBound y demás… veremos que los primeros puestos son ocupados por peruanos o lo estuvieron alguna vez así. Estos jugadores no son "olvidados" deportistas, si no simplemente personas que invierten su tiempo en jugar vía Internet. Nada que ver con deportes, cosa que el IPD debería apoyar.

En resumen… la Ignoracia es atrevida… y mucho.

Descargas de Manga con Python y Wget

August 27, 2008

Gracias a unos amigos que tengo, me entero del sitio OneManga.com, en el cual se puede leer manga online. (Para quien no sepa, manga son cómics japoneses). Entre sus múltiples títulos tienen Naruto, Bleach, Death Note, School Days, etc. Lo único malo es que está en inglés y las imágenes no son de tan buena calidad como uno espera.

Suelo leer en el sitio, pero debido a puro interés, siempre quize tener algunos mangas en local, para leer y también para enseñarselos a mis amigos. (No siempre tengo Internet disponible). Por eso decidí buscar la forma de descargarme las imágenes del sitio.

Sorprendentemente el sitio enlaza a un .jpg sin más protección adicional y tiene enlaces que llevan a las siguientes páginas de un capítulo de manga. Todo esto en legible HTML. Es por eso que conseguí algun tutorial de expresiones regulares y decidí comenzar a programar un script. De nuevo, en Python.

El programa llamado OneManga Downloader, está bajo licencia MIT y se puede descargar de aquí.

Para usarlo hay que tener un par de requisitos: Hay que tener instalado wget, ya que usará a este programa para bajar las imágenes. Bajo Linux ya viene instalado, para Windows, deberán bajarlo de aquí.

Nuestro programa tiene 4 opciones que son:

  • -gurl: Indica que se impriman las URL que se estan bajando.
  • -wget: Descarga las URL
  • -rpage: Descarga recursiva. Comienza desde una página hasta el final del capítulo.
  • -mdata: Devuelve información del Manga, como su nombre y el capítulo actual y luego cierra la aplicación.

Para usarlo, deberán anteponer alguna de las opciones y luego pondrán la URL del capítulo del manga que quieran bajar. Un ejemplo:

one-manga-dw.py -gurl -rpage -wget http://www.onemanga.com/Bokurano/1/01/

Ahora solamente deberán esperar a que se bajen todos los episodios. En realidad, cuando programé la opcion -rpage, se bajaba todos los capítulos de todo el manga. No obstante le he desactivado esas características para no sobrecargar al servidor. Si desean tenerlas de nuevo, modifiquen el código fuente que les pongo.

Un problema de este programa es que pone todos los .jpg en la carpeta actual. No los ordena ni por Manga ni por capítulo. Agradecería a alguna persona para que haga eso o lo haré con cierta demora.

Finalmente si deseas leer manga en inglés, te recomendaría los siguientes:

  • Bokurano
  • Death Note
  • Naruto (Esta de moda, aunque no me gusta… hay que ponerlo)
  • Bleach (Ídem de Naruto)
Feliz descarga y lectura.

 

Actualización (30 - 08 - 08): A raíz de las peticiones de un amigo que queria leer School Days y de un curso de compiladores, he pulido mucho más el script. Ahora soporta Descarga masiva. ¡Denle un titulo de manga y lo bajará hasta llegar al último capítulo! También le he agregado opciones de organización. Ordena los mangas en carpetas y por capítulos y fue totalmente reescrito orientado a objetos. (O casi a eso)

El nuevo OneManga Downloader puede descargarse de aqui. Al igual que el anterior, sigue bajo Licencia MIT.

Anatomía de un Correo Cadena

July 30, 2008

No lo podía creer. Mi cuenta de Gmail siempre ha estado limpia de las ridículas cadenas… hasta que hoy… ¡aparecieron!

Es increíble ver como todavía existen personas que se creen esas mentiras sin razón ni fundamento. Solo hay que mencionar algunos títulos que suelen ser pan de cada día en los correos estudiantiles:

  • Da miedo pero es real…
  • 11 formas de besar…
  • Conversación en el MSN… ¡da miedo!
  • Niña con cancer…
  • Criaturita de Dios necesita ayuda…
  • ¡Si suprime esto, no tiene un corazón!

Y los temas son los mismos… la niña de 4 meses (Y sin embargo el correo tiene ya 8 años circulando) con cáncer en el cerebro, el estudiante que antes de morir quiere graduarse, la historia de las hermanas Smith asesinadas por MSN (En realidad, parece una cadena del IRC) y demás tonterías.

Ya que existen productos como SpamAssain, un filtro de Spam producido por la Fundación Apache, he decidido analizar varios correos cadena y dar su "anatomía" para que de una vez sean añadidos a las listas anti-spam de la mayoría de servicios. Por cada "sospecha" de cadena, regalaremos un "crédito".

Estructura de un Correo Cadena

1. Cabecera: Los correos cadena se caracterizan porque tienen demasiados destinatarios. Si aparecieran más de 10 destinatarios en el campo, podemos comenzar a dar un crédito por e-mail. Puede suceder de que la mayoría de correos sean @hotmail.com. Esto también es un indicador poderoso de que estamos ante una cadena. Si encontramos más de 10 direcciones @hotmail… también comenzemos a sospechar. Un crédito por cada direccion de más. Si se pudiera poner como fórmula… tendríamos:

N_Creditos_Cabecera = (Total Remitentes - 10) + (contar_correo_hotmail(Total Remitentes) - 10)

Nos falta el campo del asunto. Prestar atención a estos patrones:

  • FWD:
  • FW:
  • Reenvíalo
  • Pobrecita
  • criatura de Dios
  • pásalo
Tres (3) créditos por estas frases.  Esto se añade a la fórmula de arriba.

2. Cuerpo: Si recorremos sitios como Rompecadenas o VSA Antivirus - Sección Hoaxes, podremos encontrar muchas coincidencias de texto para las cadenas. Aquí entran los fans de las expresiones regulares. Si seguimos el ejemplo de estas dos páginas, podremos detectar patrones como:

 

  • Si recibes un [correo / e-mail] con [algo_variable] ¡ELIMINELO INMEDIATAMENTE! ¡Es un [virus/troyano] que [formatea / quema / destruye] su disco duro C.
  • [Microsoft / Symantec/ MCAfee / CNN] han detectado el [peor / invencible / indetectable] [virus / gusano] que no tiene cura.
  • Soy [Rachel Artson / Rachel Arrow / Amy Bruce / etc] y soy de [algun_lugar_de_USA]. Mi [hija / hijo] de [n] años tiene [cáncer / síndrome de xyz / alguna_enfermedad_rara] y sólo tiene [n] meses de vida si no se le trata. [Yahoo / Google / ZDNET / Microsoft / AOL] nos donarán 0.5 centavos de dólar por cada mail que sea reenviado.
  • Hola soy [xyz], abogada y le voy a decir algo. Bill Gates está compartiendo su fortuna…
  • Habrá que pagar MSN / MSN se hará pago.
  • cadena de [muerte / solidaridad / amor]
  • Esta [foto / virgen / santo] es [milagrosa / poderosa] […] El presiente de [Argentina / Brasil] la llamó basura y a los [n] dias murió su hijo…

Por cada uno de estos patrones se deben asignar 10 créditos, ya que son extraídos de cadenas casi en su totalidad. Nadie se comunicaría usando estas frases. También hay que prestar atención a los siguientes términos:

  • Fundación Pide-un-deseo / Fundación Make-a-wish
  • Forward / Reenvía
  • [n] años de mala suerte / [n] años de maldición
  • No tiene corazón / no comprende el dolor
  • Progesterex
  • Burundanga
  • Droga de los Violadores
  • Te amo…
  • Formas de Besar
  • Etc

Un crédito por cada una de estas apariciones. Si se encuentra la palabra ‘progesterex’ podría concluir de que es una cadena inmediatamente, pero… es preferible el beneficio de la duda.

3. Final: Todas las cadenas suelen acabar igual. También aquí entra el fan de las expresiones regulares. Veamos algunos patrones:

  • Pásalo a todos tus contactos
  • Necesito su ayuda para que lo pasen
  • Reenvíalo a todos los que consideres [amigos / personas especiales]
  • Yo no creía en las cadenas pero ahora pueden salvarme la vida
  • Esto es [real / no es ninguna mentira]
  • No olvides enviarla…

Asignemos 3 créditos por cada patrón. Luego debemos sumar los créditos obtenidos de las 3 partes del mail y estar listos para el análisis.

4. Decidir si es o no un correo cadena: Aún no he hecho una estadística suficientemente fiable para indicar cual es el número de créditos óptimo para decir si un mail es cadena o no. Supongamos que si tenemos de 20 a 30 créditos es un correo con "posibilidades" y si tiene más de 40 créditos… es con toda seguridad una cadena.

Conforme pasen los días haré algun script que dado un archivo de texto verifique si es o no una cadena, usando las anteriores ideas.

Proyecto Pico: Idea para Tesis

July 12, 2008

Tal vez el título del post sea algo extraño. Debido a un cambio de políticas de en la USAT, es requerido proponer con antelación el tema de Tesis, justamente para evitar el tráfico de Tesis ya hechas y demás perlas.

No obstante estoy en III y IV ciclo de Ingeniería de Sistemas, por lo que pensar en una tesis es muy prematuro todavía. Sin embargo algunos profesores ya nos exigen tener una idea, por lo que pasando una noche en vela pensando, se me acaba de ocurrir una: El Proyecto Pico. (Personal Identity Comunication)

Partimos del problema de las comunicaciones celulares. Muchos jóvenes, como el que les habla, necesitan el envío de Mensajes de Texto para coordinar asuntos personales y académicos. Sin embargo, por lo general la mayoría de SMS son los siguientes:

¿Donde estás [nombre_alguien]?

¿Estás en [tal_lugar]?

Muchas veces perdemos el poco saldo del que disponemos para estos propósitos. No olvidar que los SMS son la gallina de los huevos de oro de las operadoras de telefonía, y que al menos en algunos países su cobro es arbritario.

A su vez, he visto la proliferación de dispositivos Bluetooth en teléfonos celulares de última generación. Generalmente se les usa para transferir archivos de celulares a celulares o música de celulares a PC. Algunos los usan para operar audífonos de mejor calidad que los alambrados. Según Wikipedia el Bluetooth posee alcances que van desde 1 m a 100 m. Incluso hay aparatos que aumentan el alcance a 45 km. (Aunque por lo general son aplicaciones industriales)

100 metros para una Universidad es algo razonable y si usamos los equipos de aumento de señal… podemos cubrir toda una manzana. Es una forma fácil y barata de transmitir (Barata no tanto, porque gasta más batería al móvil). No obstante es de locos querer abarcar con un sólo móvil todas esas distancias. A lo máximo podremos un par de decenas de metros.

El Proyecto Pico (Personal Identity Comunication), es una idea para mi proyecto de Tesis que pretende crear un protocolo de comunicaciones que tenga todo lo que cualquier estudiante necesite para comunicarse de sus labores académicas. Se incluye: SMS y Localización de Personas (Algo así como un GPS muy básico)

Sobre el SMS, es importante la privacidad de los usuarios, pero a la vez la capacidad de procesamiento de un celular es muy baja como para usar algún Algoritmo de Cifrado fuerte como AES. Supongo que usare Base64 para encriptar en parte el SMS y luego se aplicará un cifrado simple. La información debería ir compresa para garantizar la máxima eficiencia.

Pero un móvil no puede cubrir todo un Campus. La señal se atenúa debido a la resistencia con el aire y demás fenómenos. Es aquí donde entra un concepto muy importante: El P2P. Nos basamos en la idea de que los celulares pueden emitir y transmitir señales ajenas. Antes de describirlo, llamaremos a los celulares que emiten "nodos" y a los que transmiten "super-nodos".

Todo celular tiene un identificador único dentro de la Red Pico. A este lo llamaremos "PNID" (Pico Network ID). Todo dato enviado posee una cabecera en la que indica el PNID origen y el PNID destino. Acto seguido lleva otros detalles, como tipo de encriptación, etc. Cuando un nodo emite un "paquete" de datos, este puede ser recibido por cualquier otro nodo que esté disponible. Si el nodo es el destino especificado, se muestra en pantalla del móvil. Si no lo es, ese nodo se convierte en un super-nodo y vuelve a emitir el paquete a otros celulares. Estos seguirán enviando el paquete hasta que den con el nodo destino. Si hay que responder, el paquete será envíado de regreso por todos los nodos que encuentre. (No lo hace por los mismos que envió, ya que pueden apagarse).

En el caso de la Identificación personal, se presupone que todos los móviles pueden enviar un paquete indicando su alcance. (De 1 a 100 m, por ejemplo), por lo que basta crear una lista de contactos que tenga relacionado un PNID específico por cada entrada. Luego se emite un paquete de búsqueda, que registre por donde pasó el paquete en cuestión. De esta manera el usuario buscado puede saber al menos a cuanta distancia aproximada se encuentra del que quiere buscar. Si no encuentra a nadie en un tiempo de espera… se asumirá de que el usuario está fuera de cobertura.

Finalmente, esto puede implementarse dentro de un software escrito en algún lenguaje como Java o C++ (Caso de móviles con Symbian) e usarse como programa o como un driver. Se puede usar el IMEI como PNID para evitar suplantaciones.

Propondré este proyecto a mis profesores responsables. Si es aceptado, lo llevaré a cabo cuando llegué a mis ciclos finales. A su vez prometo liberar todo lo relacionado con Pico.

El nombre de Pico viene del editor pico de UNIX y de las siglas Personal Identity Comunication.

Actualizacion (19 -  06  - 08): Gracias a Volkan Rivera y a Vicky, he visto que esta idea mía tiene puntos flojos como el alcance y la seguridad. Si no hay celulares Bluetooth, la idea se vuelve inútil y todavía este tipo de celulares son un lujo en el Perú. Me propusieron además que el móvil envíe la señal a una antena ubicada en el Campus, por si no hay receptores cerca. Seguiré perfeccionando la idea.

Python y Microsoft SQL Server

July 11, 2008

Durante mi curso de Base de Datos, mi profesor nos pidió la implementación de una Base de Datos en Microsoft SQL Server 2000. Si bien usando Erwin y la Ingeniería Directa, generé el script y lo ejecuté… no quiere decir que ahí haya terminado todo eso.

Luego usando el Administrador Corporativo (Una interfaz gráfica para el Microsoft SQL Server) me dediqué al llenado de datos. No obstante, la clase pasada del Martes el profesor nos pidió algo excéntrico:

Adjunten a su trabajo los scripts de creación y llenado de datos. Con eso los evaluaré.

Si bien tenía ya el script de creación, jamás hice un script de llenado. Todo mi llenado lo hice gráficamente. No necesito complicarme la vida usando INSERT INTO… cuando hay herramientas que lo pueden hacer por uno.

Sin embargo, el profesor pedía ese script y tenía que hacerlo, aunque decidí no llenar todo a mano nuevamente. ¿Quién puede ayudarme?

La respuesta, es nuevamente Python. Googleando un poco sobre alguna librería para conectarme a Microsoft SQL Server 2000 me topé con Pymssql, una librería que permitía ser usada para conexión con Microsoft SQL Server. La descargé y la instalé.

El plan era usar Python para recuperar todos los contenidos de los registros y crear instrucciones INSERT. Sabemos que la sintaxis de un INSERT en SQL es más o menos el siguiente:

INSERT INTO tabla VALUES (valor1, valor2, valor3, …, valorn)

Lo que haría era leer una tabla, y por cada fila ir insertando sus valores dentro de una variable del tipo String donde crearía la "instrucción" SQL. Al script que desarrollé lo llamé SQL-INSERT Creator.

El producto final pudo decirse que fue un 70% efectivo. Pueden bajarlo de aquí (Cambiar la extension a .py) y lo pongo bajo licencia MIT, porque me tomó sólo 1 hora escribirlo. Esta es un fragmento de la salida del script:

INSERT INTO GREMISION VALUES (1, 1, 1)

INSERT INTO PROFORMA VALUES (1, datetime.datetime(2008, 6, 20, 0, 0), 1, 1, Decimal("500.00"))

Aún quedan cosas por perfeccionar, como que no muestre las fechas como funciones Python, pero al menos ya es menos trabajo el arreglar eso que tener que copiar todo el código nuevamente.

Para el trabajo final pienso presentar 3 scripts: El de creación, el de inserción y este. Espero que esto le sirva a cualquier otro que se encuentre en una situación similar.

Abelia Process Manager

July 6, 2008

Habiendo terminado mi curso de Sistemas Operativos con la Profesora Karla Reyes, me dispongo a publicar para mis lectores y demás, el programa que hice para fin de ciclo: Un Administrador de Procesos para Cygwin.

Cygwin es una capa de emulación entre Windows y “POSIX” (Entre comillas lo pongo porque sigue siendo Windows), para poder correr aplicaciones escritas para sistemas operativos compatibles con esa norma.

Dado el carácter “Linux” de mi programa, decidí trabajarlo con la consola y usando las ncurses como librerías para los menúes “gráficos” de mi aplicación. Al programar descarté a C por los problemas que me daba, y finalmente opté de nuevo por Python.

Decidí que mi programa tendría 3 partes: Un Menú, un creador de procesos y un eliminador de los mismos. Sin embargo deseaba algo más original que el simple “Menú”, “Creador” y “Administrador”. Buscaba nombres originales para mis componentes.

Para los interesados en la programación, los procesos bajo Cygwin se alojan en el directorio /proc (Al igual que en Linux), leyéndose algunos archivos para obtener información de los procesos. Pueden leer un buen recurso aquí. Para matar procesos se usa el comando kill() y para crearlos fork() y execv(), todos ellos definidos en el módulo OS de Python.

En esos días de programación terminaba de ver la serie Ima soko ni Iru Boku (Ahora y entonces, aquí y ahora, en japonés) en la que el argumento principal es el horror de la guerra infantil. De esta serie me llamaron la atención un par de personajes: Abelia, una comandante muy estricta, Shu, un chico que se negaba rotundamente a las acciones militares y Tabool, un sujeto cuyo único deseo era escalar en el poder generado por la guerra.

Como pueden notar, mi título ya hacía referencia a uno de esos personajes, es decir que decidí llamar a mis componentes usando a los citados personajes. El asunto quedó así:

  • Menu Principal (Abelia Process Manager): Es el componente principal que llama a los otros dos.
  • Creador de Procesos (Shu’s Process Creator): Creador de Procesos. El nombre Shu también es un acrónimo de Shell Utility.
  • Administrador de Procesos (Tabool Process Manager): Administrador de procesos. Permite la eliminación de procesos.

Decir que al exponer este programa y al explicar los nombres me llevé algunas miradas extrañas de mis compañeros e incluso de mi profesora, no acostumbrados a estos extraños asuntos (Para ellos, del Anime)

Los interesados en ver el código fuente, pueden obtenerlo aquí. Todo el código está licenciado bajo Licencia MIT. Debo advertir que el código tiene algunos errores aún y sólo se ejecuta en Cygwin, debido a unas “características” propias de la emulación. Si se animan a portarlo a Linux completamente les estaría muy agradecido, siempre y cuando respeten el nombre de los programas.

Podría decirse que ese fue mi otaku-trabajo del ciclo. Dado que la reacción no fue del todo desfavorable, quizá planee otra referencia en algún trabajo futuro.

PDF ya es estándar ISO

July 4, 2008

Leo en Barrapunto, que ISO ha ratificado la estandarización del formato PDF, por lo que ya posee un ISO propio, en este caso el ISO 32000-1.

Con esto, el famoso formato de Adobe ya tiene una especificación formal y definida que podrá usarse para garantizar interoperabilidad con las aplicaciones que lo manejen.

La Norma ISO publicada, cubre la versión PDF 1.7, que es la que ha sido ratificada como estándar. Si bien es cierto que ya existían versiones del PDF como estándares ISO para la conservación de documentos… no llevaban todavía el rótulo de "PDF" respectivamente. Esta publicación es un estándar ISO rotulado como "PDF", por lo que no hay más ambiguedades respecto al formato.

Los interesados pueden ver los documentos enviados a ISO por parte de Adobe aquí, o bajar la Especificación PDF 1.7, aquí. (Aproximadamente 31 MB)

Con esto aprobado, esperemos que OpenOffice.org tomo despegue ya que por el momento puede exportar PDF de forma nativa y se planea que permita la edición de PDFs en sus futuras versiones. A la vez, hay que destacar la decisión de Adobe, ya que hasta antes del ISO 32000-1, el PDF era sólo un estándar de facto.

Firefox 3 Download Day

June 17, 2008

La Fundación Mozilla ha esta preparandose para lo que sería el lanzamiento de la versión 3 del navegador libre Mozilla Firefox. Por esta razón se prepararon con una idea que era registrar tal cantidad de descargas que Firefox entrase en los Record Guiness.

Este es el llamado Firefox 3 Download Day y fue programado para el 17 de Junio del 2008. Sin embargo, hay un comunicado del blog de Mozilla en el que se ha pospuesto la fecha al 18 de Junio.

¿Pero esto a que se debe? La respuesta es sencilla. La acogida ha sido tal, que en este momento algunos sitios de Mozilla se encuentran caídos.

Se puede bajar el navegador mediante FTP o BitTorrent, pero lamentablemente estas descargas no serán contabilizadas ya que hay muchos usuarios (Con buenas intenciones) que han creado bots para bajar más copias y lograr un número mayor en el record. Sin embargo Mozilla no contabilizará esas descargas. No sería algo justo para el Record Guiness.

Resulta irónico que Mozilla haya muerto de su propio éxito. Son las 10:47 pm en el Perú del 17 de Junio y sin embargo no he podido bajar Mozilla aún debido a la sobrecarga de servidores. Los interesados de saber como va la descarga a nivel mundial pueden consultar los medidores de Mozilla o si prefieren un contador más "en vivo", este otro de Mozilla.

Y como todo buen software libre, Mozilla se preocupa por su comunidad, al tener una plataforma donde las personas que deseen organizar una celebración con respecto a este evento. Este es el caso de Mozilla Party. Lamentablemente no existe ninguna fiesta registrada para el Perú, pero ya me encargaré de hacer yo una no oficial.

Finalmente para los interesados en dejar constancia de su participación pueden imprimirse un atractivo .pdf con un certificado de participación en la propia página del evento. Y como extra, dejo un botón de Mozilla para promover el evento.

Download Day

 

 

 

 

 

 

 

 

Feliz descarga de Firefox 3. Si no lo haz usado… ¿¡Qué esperas!?