Novedades: actualmente estoy impulsando el proyecto Argentina en Python, desde aquí (ver mapa)

Comunicaciones. Un dolor de cabeza.

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Vuelvo a escribir en mi blog luego de unas vacaciones largas en el mundo cibernético. A decir verdad está bueno, pensar que todos los días me levantaba, prendía la PC, verificaba el correo, contestaba algunos, entraba al canal de PyAr, desayunaba frente a la máquina, leía algunos artículos de blogs interesantes, escribía algo quizás en el mío, y cuántas cosas más... Pero era todos los días lo mismo. Como todo, al principio es divertido, pero cuando se vuelve una rutina, pasa a ser aburrido, aunque esté leyendo cosas interesantes.

De esto, pasé a levantarme todos los días en Paraná, bien tempranito e irme caminando hasta la casa de Guille a estudiar Sistemas Operativos, que de hecho la saqué y con 7 (siete), seguramente se equivocaron, como en Análisis II.

Tenía la computadora allá pero no tenía monitor, asique era lo mismo que nada. Resumiendo, lo que hice fue configurar la salida a TV que fue bastante complicado para que funcione correctamente (no voy a entrar en detalles).

Luego de esta pequeña introducción, empiezo a hablar de lo que dice el título de este post. Otra vez tengo problemas con internet, y otra vez el servicio técnico de Arnet me dice cualquier cosa. Yo creo que nací para pelearme con Telecom.

En mis "vacaciones" de estudio, pedí el servicio de internet para la casa de mi mamá en Paraná, en la que tengo Línea Uno (costo fijo por mes $30 y chirolas, sin excusas, si te quedás sin crédito no podés seguir hablando) no porque queramos pagar siempre $30 sino porque siempre nos venía alrededor de unos $100 que NUNCA pudimos saber de dónde salían.

A mi mamá la estuvieron llamando quichisientas veces ofreciéndole un servicio en el que se paga por minuto unos 5 centavos, a una velocidad de 640Kbps. Como a mi mamá no le interesaba, osea, tiene un modem de 56Kbps con Fullzero y lo usa. Sinceramente no sé como hace, cada vez que abro Gmail ahí estoy 35 minutos.

Me comentó esto y me preguntó si quería que pongamos eso en casa, ya que yo iba a estar unos meses y total mientras no esté, solo se iba a pagar los minutos que se consumian. Asique le dije que la próxima vez que llamen les diga que sí, pero con la condicion de que el modem que le den sea el DUAL, como tengo yo en Santa Fé, que tiene conexión USB y RJ45, así lo podía usar en Linux.

Le dejé todo anotadito como era lo que le tenía que decir. Justo en el momento que llamaron de nuevo (al otro día, estaban re pesados), estaba yo, asique cuando vino la parte del modem hablé yo con "Natalia", muy simpática la chica pero no entendió un corno lo que le decía. Le pregunté cuál era el modem, si era un Pirelli (en este momento están dando esos como DUAL) y me dijo que si que me quede tranquilo que nunca nadie tuvo un problema y que me iba a llegar en los próximos 10 días hábiles.

Pasaron dos días y el modem estaba ahí. "¡Que bueno!", dije yo; dentro de poco tengo internet acá. Cuando leo la caja decía Modem USB. Fuck!. Lo llamo a mi hermano que estaba en santa fé, sospechando que la caja que me había llegado allá por fuera decía USB, pero adentro tenía el DUAL. Lo cuál me confirmó que no era como pensaba. Asique llamé a Arnet, le comenté la situación y me dijo que el plan que yo había pedido: "Arnet libre" el modem que traía era el que me habían enviado y después me preguntaron cuál era... ¿Entonces?.

Les dije que no sabía como era, porque no lo quería abrir para que después no me digan que no lo podía devolver una vez que estaba abierto y me terminen cagando como siempre. Me hicieron abrirlo y que les diga el modelo y todo. Era el típico alfajorcito (fué lo primero que les dije). Y me volvieron a decir lo mismo, que estaba bien. Les dije que no lo quería porque no me servía y me dijeron que llame para darme de baja al 0800 de arnet otra vez y que presione la opción #1. La verdad me tenían los huevos inflados.

Hice esto, llamé, esperé 35 min cantando la melodía (ya me la sé de memoria, incluso la toco en la guitarra :D ), me comuniqué con esa opción y no era, asique el tipo me derivó, otra vez con la musiquita. Cuando me atendió la última chica me dijo:

Arnet: "Señor, me comunican que usted quiere darse de baja en el servicio, ¿Esto es así?" Yo: "Si" Arnet: "¿Porqué motivo?" Yo: "¿Querés la versión corta o la versión larga?" (*) Arnet: "Ah, le enviaron un modem que usted no solicitó..." (**) Yo: "Aja" Arnet: "Bueno, ya está hecho el pedido. Van a pasar a retirar el modem por su domicilio" Yo: "Gracias, chau. Espero no tener que pagar nada por esto" Arnet: "Quédese tranquilo, señor, que todavía no le dió 'aceptar' al contrato que se hace vía web, asique es como que no hubiese pasado nada"

(*) de cualquier forma los iba a mandar a la mierda (**) se dió cuenta

Después de esto tuve otro problema, pero con el teléfono de santa fé. No me llegaba la factura de diciembre. Llamé para reclamar y me dijeron que ya había sido emitida, que si no llegó no era un problema de ellos y que podía ir a la página web de telecom e imprimir la factura para pagarla.

Pasó un tiempo, llamaron a casa y dijeron que me iban a cortar el servicio si no pagaba antes del 25 de enero creo. Asique nos alertamos un poco y fuimos a internet, imprimimos la factura, y cuando la leo era $110,46 ¡UNA LOCURA! yo no pago más de $70. Asique otra vez volvimos a la musiquita, pero esta vez no fuí yo por suerte, fué mi mamá. A la que le dijeron que se quede tranquila que era un error de ellos y que iba a ser solucionado a la brevedad. Que no la pague porque me iba a llegar la factura el 15 de febrero más o menos corregida. Pero que sí pague la factura de enero. Le dió el número de reclado y demás. La atendió una tal "Nancy". ¿Qué hago con esto?

Ayer vino la factura de febrero de Telecom, con $40 más o menos. Por lo que pensé que me habían descontado lo del mes pasado, pero... Yo no lo había pagado a lo anterior y figuraba como que adeudaba esa factura (que era correcto), pero que nunca había llegado modificada

Asique volví a llamar, primero me comuniqué con una computadora que me informaba que la factura de diciembre no estaba paga pero que tenía un reclamo. Y que tampoco estaba paga la de febrero que recién me llegaba. Acá la prueba de fuego.

Luego llamé de nuevo para ver en qué estado estaba el reclado de dicha factura, estuve una "brevedad" esperando para que me atienda y el tipo se lavó las manos como loco. Me dijo que él no se hacía responsable si la solicitud me iba a salir favorable o no. Y que tenía que esperar algunos días hábiles. Asique estoy a la espera aún. Acá el audio.

Todo esto por un lado, el lado del teléfono. Por el otro tengo el problema de internet. Que no sé qué está pasando que durante los primeros 10 minutos aproximadamente puedo hacer cualquier cosa, pero después no puedo cargar ninguna página, pero si se siguen descargando las cosas que durante los primeros minutos pude poner. Unos amigos me dijeron que podía ser problemas de DNS, probé OpenDNS y parecía que se había solucionado, pero luego de un tiempo pasaba lo mismo.

Lo que hacía para "poder navegar" era reiniciar el modem, y ahí tenía otros 10 minutos tranquilo para loguearme en las cosas que uso y luego bue... Reiniciar otra vez :P

Anoche como a las 23 hs llamé al servicio técnico de Arnet y me preguntaron dos mil boludeces como siempre. Entre ellas que sistema operativo tengo, les dije que linux y me dijo que era un problema mío, que tenía que llamar a un técnico. Después me preguntó si no tenía WIndows en otra partición, les dije que sí que me espere a que reinicie, me dijo que no me podía esperar y me cortó. Lamentablemente a esta no la grabé, todavía no me había avivado.

Llamé de nuevo ayer. Y fui "Tan amable de aguardar en línea" como 3 millones de veces. Me preguntaron lo mismo de siempre, las luces del modem cuáles son, que sistema operativo (esta vez le dije que ni con windows ni con linux funcionaba), me preguntaron si tengo antivirus, musiquita, me preguntó la conexión física, cualquier cosa!. Acá está el audio de esta conversación. "Si anda el MSN el servicio está utilizable"

Hoy llamé de nuevo, ya un poco más cansado de aguardar tantas veces en línea, y "conseguí" que me manden otro modem, o al menos que me dijeran que me lo iban a mandar, ya que me dijeron que el problema es del modem.  Me sorprende como es que cada vez que llamas te dicen cosas distintas. Además me dijo que el modem no estaba en garantía. Y la verdad que no tengo ni idea cuál es la garantía del modem, pero le dije que no podía ser, y al toque me dijo que se equivocó. ¿ :) ?. Acá va el audio. Esta vez me olvidé de pedir el número de reclamo, que igualmente no sé para qué sirve. Vamos a ver que pasa de acá a unos días... Mientras tanto a seguir sufriendo.


Resumiendo días

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Ultimamente no tengo tiempo para nada, asique no me estaba sentando a escribir algún que otro post sobre qué estoy haciendo, o investigando. Esto se debe a que estuve rindiendo una materia de la facultad, dando clases particulares de Python a unos chichos de secundaria, trabajando para Diego (un amigo), peleando con la generación de códigos de barras y demás.

Konqueror

Hace un tiempo me dí cuenta que además de no ser compatible con Gmail, este maravilloso navegador, gestor de archivos y demás, tampoco es compatible con Wordpress en su totalidad. No me deja escribir / editar mis post de la forma "What you see is what you get" (Lo que ves es lo que es obtienes -creo que se dice así-), como a los post los venía escribiendo con el Kate y reStructuredText a esto no lo había notado.

Swiftfox

Hace un par de días se me actualizó el Swiftfox a la versión 3.0b3pre; con lo que noté que anda un pocomás rápido que antes y dicenque consume menos memoria RAM que antes. A decir verdad, no sé cuanto consumía antes, sé que era mucha, pero no recuerdo cuanto... Ahora lo tengo con 6 solapas abiertas y consume algo así como 71124 kBytes. No me parece poco.

También noté, que puedo pegar con el botón del medio del mouse (como en cualquier aplicación de linux) lo que tengo en el portapapeles de la última selección en la ventana de edición del post. Esto antes no se podía porque aparecía las flechitas de scroll.

Otra cosa, todos los plugins que tenía instalados no son compatibles con esta nueva versión, incluso quise instalar el diccionario Spanish (Argentina) y me dijo que no es compatible con esta versión. Lo cual es bastante malo.

Está bien, estoy de acuerdo con que todavía no es la versión final, pero... ¿Porqué Swiftfox se me actualizó a una versión queno es la final y tiene algunos problemas?

Código de barras

Para el trabajo que estoy haciendo con Diego, necesitábamos de alguna manera generar el código de barra de los productos del negocio. Buscando en Google, preguntando en la lista de PyAr y por otros lados también, caí en una receta de Python la cuál genera el código EAN que queramos. Este tiene algunas limitaciones a mi entender: no puedo generar códigos con letras y como necesitaba esto, lo descarté. Igualmente me fijé como estaba hecho. Levantaba una letra que tenía internamente codificada y luego utilizaba PIL (Python Image Library) para generar un .gif con el código.

Funciona muy bien. Otra restricción que tiene es que el código debeser de 12 digitos, o 13 si este trae el bit de comprobación, el cuál mediante un algoritmo indica si el código está bien formado o no. Y como los códigos que necesitaba era de una cantidad variable de dígitos tampoco me servía...

Preguntando bastante en la lista de PyAr (se deben acordar de algunos familiares míos :) ) logré hacer el código que realmente necesitaba: escribir cualquier cantidad de caracteres y de cualquier tipo y obtener un código de barra. Lo que hice está muy orientado por Facundo quién me pasó un ejemplo de cómo usar la Font libre de Code39 con PIL, que no tenía mucha idea.

Probando, investigando, reinventando un poco la rueda, peleando con el lector de códigos de barras (que no me quizo agarrar el teclado y el lector al mismo tiempo) llegué a la versión del código que funciona. Esto es, al programa le paso el código que quiero que genere y me guarda en el directorio actual un PNG con ese código. Ejemplo de uso:

[manuel] [~]$ python barras.py "*ABC123*"

*ABC123*

[manuel] [~]$

Ahora en *ABC123*.png tengo el código listo para imprimir. También hice que abajo del código de barras aparezca de forma legible para los humanos el código por si el lector no lo lee. Para esto utilicé una fuente cualquiera, que después cambiaré por una un poco más linda.

Curso de Python

Ayer miércoles, fue la tercer clase que tube con los chicos del curso de Python. Yo les había dado una guía de ejercicios para que hagan en sus casas y un trabajo práctico también. Hacía una semana más o menos que no los veía, y no hicieron casi nada. Sólo 5 ejercicios. Asique les pedí que me expliquen cómo lo habían hecho a algunos y cuales eran las dudas que tenían con respecto a los que no puedieron hacer. La verdad que la hora se pasó volando y alcanzamos a hacer bastante poco, por lo que les dije que si querían se podían quedar un poco más haciendo los ejercicios que les había dado y yo mientras programaba un poco

Me hicieron algunas preguntas, y como estábamos en horario fuera de la clase, los obligué a buscar en Google y a preguntar en el canal de PyAr :D .Entraron, saludaron, preguntaron, y me dijeron que había muy buena onda en ese lugar y que sabían una cantidad los que estában ahí. Espero que se copen con Python y sigan estudiando, que les halla servido lo que intenté enseñarles y aprueben la materia.

Facultad

El martes pasado rendí por segunda vez Sistemas y Organizaciones, una materia de primer año de mi facultad. Con la cual tuve problemas durante los cuatro años que hace que estoy estudiando. Aunque esa materia es una lotería, y a decir verdad, no importa cuanto sepas, sino si pegás un examen en el cual estén un poco menos soretes. El exámen es multiplechoice, son 50 preguntas, las que contestás mal restan, y algunas otras cositas más.

Cuando me dijeron que era multiplechoice, casi que me quedé tranquilo, porque no podía ser muy complicado. Pero bueno, el tema es que no es difícil el exámen, tenés que estar bien concentrado y no dejar llevarte por lo que está en lo que vos estudiaste y sabés que es así. Sino que tenés que pensar como piensan ellos, ponerte en el lado de ellos, pensar como el profesor: "La respuesta verdadera para esta pregunta es la b), pero la mas-verdadera es la d)"; entonces tenés que poner la d).

¿Cómo puede ser esto? No sé, pero en casi todas las respuestas hay dos que son verdaderas, según ellos hay una que es más verdadera. Bueno, eso me dijeron al menos hace dos semanas, la primera vez que la rendía y saqué un 2 con 32 correctas, sobre 35 que se necesita para aprobar. Osea tenía un 64% aprobado del exámen, pero esta matería única en la facultad y en su género se aprueba con 70%.

La segunda vez que la rendí se puede decir que entendí este concepto de mas-verdadera. Si te fijás bien en cada una de las respuestas hay dos que son verdaderas, pero hay una que está un poco más completa la respuesta. Igualmente dicen el concepto de formas totalmente diferentes, y en muchas preguntas me hubiese gustado tener un diccionario ahí.

Además juegan con los nervios de uno porque hacen una pregunta o afirmación y ponen "marque la correcta" o "marque la incorrecta". Imaginate a la pregunta número 40, pensando cuál es la más verdadera y que sé yo que otra cosa (esas cosas que uno piensa cuando está un final: "Que lindo sería estar en casa con el aire"), sinceramente llega un punto en el que te confunden. Encima también juegan con la doble negación, un ejemplo sencillo de esto: "¿Cuáles de los siguientes conjuntos de partes no es un sistema? (indique lo incorrecto)". Más de uno caemos en estas trampas...

Cumpleaños

Ayer fue mi cumpleaños, aunque no parezca tengo 22 añitos recién. Si ya sé, estoy de vuelta, pero bueno algún día tendré plata y me pondré botox :) . El sábado no juntamos en mi casa con algunos amigos y amigas a comer unas hamburguesas y tomar algo, después salimos. A ver que tal se pone esto; el año pasado me llovió de una forma increible.

Hoy es el cumple de Juanjo, un amigo de la facultad, al cual ya estoy llegando tarde... Asique me voy para allá.


Primer día de clases

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Hace una semana César Ballardini, profesor mío de la facultad, vecino y amigo; me manda un mensaje por IM (muy raro de él, ya que no está muy seguido por estos lados) preguntándome que tal me veia para dar clases de Python. Lo primero que le dije es que no tenía idea, dependiendo del nivel, a quién y muchas otras cosas...

Me dijo que un amigo de un amigo de la hermana de un tío conocido de él (esas relaciones que nunca entendí) le había preguntado si él daba clases particulares de Python, porque ya le había preguntado a otros chicos y entre la facultad y demás no podían.

Como César tampoco podía (supongo), le comentó a esta persona que conocía a un chico que la podía ayudar, osea yo, y la verdad que me vendió muy bien.

Al otro día recibo un mail para que coordinemos cuando podíamos empezar con las clases particulares de Python. Hablé por teléfono con Martín (el chico que iba a venir a casa), le pregunté qué nivel manejaba, qué necesitaba saber, y algunas cosas más para ver si realmente yo podía enseñar eso o definitivamente le decía que no tenía esos conocimientos. Me dijo que es una materia de la escuela (nivel secundario) que le enseñan Python para manejar archivos, si no me equivoco la materia se llama "Recuperación de datos" o algo así. En realidad no sabía muy bien lo que daban y qué necesitaba aprender.

Arreglamos para que venga el Lunes pasado, me dijo que iba a ser él solo y que iba hablar con los amigos porque estaban todos en bolas, asique seguramente los amigos también iban a querer venir. La idea era que hagamos grupos de 3 o 4 personas, tengo dos máquinas en casa, por lo que 2 chicos por máquina íbamos a andar bien.

Después de esto, me puse a pensar algunos ejercicios para que haga mientras yo miraba la carpeta completa que le había pedido; y además saber qué nivel estaba manejando. Recurrí a los ejercicios que hice hace un tiempo atrás en Prolog y saqué algunos de ejemplo. Salió esto

Le pregunté a algunos amigos que hace poco que están con Python, a ver si lo podían resolver. Algunos pudieron, otros no... Pero como yo no tenía ni idea del nivel que manejaba este chico no sabía que hacer. Asique decidí por esperar a que sea la primer clase.

El Lunes pasado a las 17 horas era la primer clase, vinieron 3 chicos (Juan, Nicolás y Martín) a las 17:40hs. Yo por suerte estaba libre después de las 18hs, asique les dí clases igual, pero les dije que traten de ser puntuales, que les daba clases igual por ser la primera vez y que me tendrían que haber avisado que venían 3 chicos. Los cagué a pedo bah :) .

Hablamos un rato, como 10, 15 minutos al principio. Sobre todo lo que más me interesaba era saber si querían aprender Python o sólo aprobar la materia. Me dijeron que no les interesaba para nada Python y que lo único que querían era aprobar. Bue...

Les dí el exámen nivelador que había hecho y les dije que lo empiecen a resolver mientra veía la carpeta y pensaba algunos ejercicios referido a lo que ellos estaban dando en la escuela. El problema fue cuando me dijeron que no sabían ni como se hacía el primero. Sinceramente yo pensé que ellos sabían Python pero que tenían dudas con algunos ejercicios o que directamente no los podían resolver, pero me equivoqué.

Asique me puse a resolver los ejercicios con ellos, decidieron que los hagamos todos juntos en la misma máquina, uno escribía en la PC, otro copiaba la resolución en la hoja, el otro sugería cosas al que escribía y yo hablaba al pedo (intentaba explicarles los ejercicios sin decirle la respuesta para que piensen).

Estuvimos cerca de 2 horas en la compu haciendo todos los ejercicios que yo les había dado y explicando algunos conceptos que no sabían. Por ejemplo, me pareció raro que le enseñen Python y no les digan qué es un objeto, una clase, acceder a un elemento de una lista, definir una función, etc. No sé, me pregunto ¿Qué dan en clases?

En un momento multiplicamos una lista (>>> lista*2) y sin querer tipearon lista*-2 lo que devolvió una lista vacía. Me preguntaron que pasó y no supe contestarles en el momento. Asique les dije que esa quedaba de tarea para que la investiguemos ;) . Después pregunté en el canal de PyAr y me dijeron que los valores negativos se toman como 0 (cero).

La clase estuvo muy buena, a mi me gustó, los chicos se portaron bien, y parece que aprendieron algo, ellos me dijeron que estaban contentos con la clase y que les había sido útil, lo que me puso contento. Lo que escribieron en el intérprete está aquí.

Mañana vienen de nuevo a las 10hs, espero que salga todo bien. Por el momento les preparé otros ejercicios para que hagamos acá y se los explique, más bien referido al módulo os que por lo que me dijeron y lo que ví en la carpeta es lo que más necesitan saber. Y para que se lleven a su casa e investiguen un poco les hice un Trabajo práctico en que el hay que leer el ID3 de un archivo .mp3.


KeDElicioso

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Aunque le falta un poco de azúcar todavía, puedo decir que hice un plug-out para el Konqueror y los marcadores de del.icio.us. Es un plug-out porque todavía no lo pude meter adentro del navegador. Para esto se necesita tener acceso a la barra lateral que se llama KonqSideBar y está bastante verde todavía en PyKDE, de hecho creo que no está :) .

Estoy convencido que quiero seguir usando el Konqueror, y no tener estos marcadores que sí tenía en Firefox, me impidan seguir usándolo. Además tenía ganas de empezar a ver un poco de HTTP-Auth y demás cosas en Python, de las cuales no tenía idea.

Asique me puse a investigar un par de días. Bajé el plugin que yo ya conocía y me puse a ver cómo funcionaba. Descubrí varias cosas ahí: el plugin para el Konqueror no era más que un archivo externo y que no tenía nada que ver con este. Estaba hecho Perl y se comunicaba con el navegador por medio de DCOP (una de las tantas grandes cosas que tiene KDE). DCOP, rápidamente, es una forma de comunicarse con los programas que están en ejecución, por ejemplo al Konqueror le puedo preguntar que url tiene abierta, cerrar una sesión de Kopete, etc...

Por otro lado, también descubrí que había una API de del.icio.us que explicaba cómo se debía manejar el servicio, cómo eran las consultas y como eran las respuestas. Qué te convenía hacer y demás. Estaba muy bien explicado, la idea es abrir distintas urls con algunos parámetros que se les pasan y esta te devuelve un XML con los Post, Tags y demás que se necesita.

Lo primero que hice fue ver cómo manejaba esto el plugin de Perl, pero lo hacía bastante feo, o por lo menos yo no lo entendía (todavía no sabía que existía esta API). Después conseguí un programita en Python que hacía algo similar a lo que yo quería pero no funcionaba :P . Miré el código y ahí recién descubrí que había una API.

El código no funcionaba porque tenía las direcciones de las páginas en cualquiera y le pasaba cualquier cosa a estas direcciones también. Después leí que la API puede cambiar sin ningún tipo de aviso, sin respetar las versiones anteriores y de la forma que se le dé la gana. En este momento me pregunté: ¿Cuánto tiempo puede durar mi programa funcionando? :D

Me puse a jugar un rato con la API, fue un rato bastante corto, ya que te limitan las consultas a la misma para no sobrecargar el servidor, hice 3 boludeces y se me terminó la joda. Una cagada bah! Asique seguía haciendo cosas por otro lado, y cuando pasaba cierto tiempo volvía a intentar y probar las funciones que había escrito y suponía que funcionarían.

Me filtraron dos veces más y me cansé, me dí cuenta que esto así no podía ser porque si abrías dos veces el navegador y este bajaba los marcadores a la segunda vez no los ibas a poder ver porque estabas filtrado. Además de tener que bajar todos los marcadores cada vez que entrabas al navegador con su correspondiente consumo de ancho de banda.

Me puse a buscar la forma de mejorar esto y me bajé el archivo XML a disco y lo trabajaba desde ahí. Aunque esto era un poco feo, tenía que hacer consultas como: ¿Cuáles son todos los marcadores que tienen tal etiqueta?, ¿Qué marcadores tienen la palabra "linux"?, etc... Asique lo pensé dos segundos y me hice una base de datos con SQLObject que algo sabía de cuando estudié TurboGears y era una boludés.

El problema era que si agregabas un marcador desde otra computadora, este actualizaba los marcadores de la página, pero no la base de datos. Investigué un poco más y encontré la función update en la API de del.icio.us, que indica cuándo fue la última vez que el usuario hizo una modificación. Asique comparando esta con la última fecha de modificación de mi base de datos queda chanta. Pero... ¿cómo saber la última modificación de la base de datos? Aja! Te la encargo. Yo hice una tabla en la que mantengo esa fecha por el momento. Una negrada bah!

Por último empecé a hacer la GUI con PyKDE, primero por el diálogo de Agregar un Marcador, ya que supuestamente lo otro lo iba a meter en el Konqueror (que todavía no he podido :( ), probé esto y funcionaba perfecto. Asique seguí con la parte del filtrado de marcadores, etiquetas y las consultas a la base de datos para estas.

Terminó saliendo algo bastante bueno, por lo menos para mi gusto, y si lo puedo integrar completamente con el Konqueror me va a ser algo muy útil.

Al principio dije que le falta un poco de azúcar todavía porque el sistema de DCOP le asigna un nombre a cada uno de los programas que están en ejecución y soportan este sistema. Pero si se puede tener más de una aplicación del mismo programa, al nombre de esta le suma un número, que este es su PID. Al no estar integrado con Konqueror este número no lo puedo saber ya que la forma sería haciendo un os.getpid() pero como lo estoy corriendo fuera del navegador me devuelve otro número. Asique por el momento esto hay que ponerlo a mano.

Además no hice alguna forma de ingresar el nombre de usuario y la contraseña todavía, porque no he tenido ganas. Hice un archivo config.py en el cuál se pueden poner estos datos. Total, como nadie lo va a usar no me calenté mucho, y si alguién lo quiere probar y no puede me pregunta y le doy una mano :)

El código está lo que se dice horrible, tengo pensado cambiarlo todo para estructurarlo de alguna forma mejor, como no pensaba hacer nada de lo que hice fue saliendo así de feo :D

Hice una página para este programa en la que explico algunas cosas más, hay screenshots, se puede descargar el código, etc:

http://grulicueva.homelinux.net/~humitos/KeDElicioso/