CORBA versus Web Services, de nuevo

Sólo como referencia, quería guardar aquí trozos de una discusión interesante entre Steve Vinoski, Don Box, etc. Enlaces aquí, aquí y aquí.

Adam Bosworth, genial

Una charla muy interesante sobre la filosofía KISS. Siempre he pensado lo mismo sobre los estándares WS-*...

WordPress Anti-Spam, toma 2

Parece que el mecanismo de anti-spam que describí el otro día ha tenido éxito. Mirando los logs de mi apache, observo varias cosas:


  1. Es sorprendente las diferentes IPs que se utilizan para hacer este trabajo de spam. Contando las peticiones que identifico como spam (50 en tres días, después diré cómo las identifico), diría que todas las direcciones IP de esas peticiones son distintas, con lo que asusta la cantidad de ordenadores que se dedican al spam.

  2. Todas las peticiones spam se pueden identificar por el hecho de que no tienen "referer". Dependiendo del software, podría ser lo suficientemente sofisticado como para introducir referer, pero ahí va una petición "spam":


    203.113.29.3 - - [26/Nov/2004:09:53:56 +0100] "POST /blog/wp-comments-post.php HTTP/1.1" 200 28 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)"


    Como se puede ver, después de que modificara el script wp-comments-post.php, la respuesta que tiene el spammer es "200 (OK)" :) con el mensaje de que se vaya a su casa...

  3. Por el contrario, las peticiones de envío de mensajes válidas, por ejemplo:

    155.54.12.241 - - [26/Nov/2004:19:25:32 +0100] "POST /blog/wp-comments-post.php HTTP/1.1" 302 5 "http://neuromancer.inf.um.es/blog/index.php?p=35" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041111 Firefox/1.0 (Debian package 1.0-2)"

    Contienen varias cosas interesantes. Por ejemplo, hay "referer" (la página del comentario). Además, la respuesta que recibe el script es una "302, redirección", y la redirección es de nuevo a la página del comentario.

  4. Un último dato: Se han enviado 4 comentarios válidos desde que puse la noticia. Sin embargo:

    neuromancer [/var/log/apache]# grep wp-comments-post access.log | wc -l
    55


    Esto es, 55 intentos de envío... Todo un éxito :)


New version of StarCCM

Back on September this year, a new version of StarCCM was released. Taken from their web page, it seems to be feature-rich:


New version supports multithread, a visible assembling tool, a graphic management tool, and can support dynamic deployment. New version StarCCM can upgrade assembly online.

German book on CCM

Tom Ritter announced in Qedo-devel mailing list that he (with Bertram Neubauer and Frank Stoinski) published a book about the CCM titled "CORBA Komponenten." Tom was searching for people who wanted to publish it in English.

Recent articles on CCM

I read recently in Middleware Matters (Steve Vinoski's Weblog) that he published a new article about the CCM jointly with Douglas C. Schmidt. The article is titled "The CORBA Component Model Part 4: Implementing Components with CCM". Fourth of the series, the other entries can be found here: (part 1), (part 2), and (part 3).

WordPress Anti-Spam, toma 1

Bueno, como prometí, una explicación de cómo he modificado mi WordPress para eliminar comentarios de los spammers. En principio, creo que las modificaciones que he hecho van a hacer que no tenga más comentarios spam, pero voy a dejar un tiempo de confianza para probar. Lo primero que he hecho es localizar en la distribución de WP dónde se mostraba el diálogo (form) para introducir los comentarios. En el fichero wp-comments.php. Ahí me he encontrado con:

form action=".../wp-comments-post.php" ...


(con lo que la página que recoge los datos del formulario es wp-comments-post.php. Para hacer el formulario diferente a lo que los spammers tendrán registrado de esta versión, he añadido un nuevo campo "hidden":

input type="hidden" name="checkpoint" value="spammers_go_home"


Lo siguiente es fácil: Modificar el fichero wp-comments-post.php para que si no existe ese campo y no tiene exactamente ese valor, aborte el programa:

if ('spammers_go_home' != trim(strip_tags($_POST['checkpoint'])) )
die( "Spammer, go home" );


Si no existe ese campo exactamente con ese valor, no emite el comentario.

¿Por qué funciona esto? Bien, como es de esperar, los spammers no son personas que están sentadas y "pulsan" el botón "enviar comentario", sino que son programas que envían peticiones HTTP POST pre-formateadas. Para ello han estudiado el código fuente de WP (si, hay gente que hace eso, aunque parezca extraño) y han obtenido el formato de esa petición de publicación de comentario. Así pueden poner programas que automáticamente envían comentarios spam. Añadiendo el nuevo campo oculto y comprobándolo en el fichero que recibe los datos hace que un usuario que realmente pulse el botón sí que pueda publicar el comentario, mientras que un programa, que no tendrá este nuevo campo, no pueda. Esperemos que funcione.

Actualización: He escrito un plugin más sofisticado para tratar el spam. Está aquí.

Actualización: He estado buscando en Google porque es casi seguro que ya se han preocupado de esto. Es increíble la cantidad de soluciones que se dan en la que parece ser la página especializada en combatir el spam para WordPress. Casi ninguna de ellas (salvo quizá la que genera un gráfico para obligar a que una persona lo lea e interprete) es tan eficaz como la que propongo, y desde luego, ninguna tan sencilla. En el sitio web de WP también se explica, pero se limita a decir las opciones del programa, que como ya he explicado, no son suficientes... En fin...

Actualización 2: En esta entrada describo el proceso más detalladamente, ya que hay varias personas que me han preguntado exactamente cómo hacerlo. No lo especifiqué mucho, porque en principio no esperaba que tuviera tanto éxito esta solución anti-spam... ¡¡Que aproveche y abajo el spam!!

Actualización 3: Sería interesnte que los que implementaran la solución cambiaran en su sitio web el "name" y el "value" de la variable oculta. Así cada sitio Web tendría un valor distinto para esta variable de comprobación, y obligaría a los spammers a tener que analizar la página antes de enviar un comentario spam.

CCM page, reloaded

This blog contains a category to hold all the news regarding the CORBA Component Model (CCM). I will add new entries ASAP, as well as a summary of what's in the CCM page, that has been long unmaintained. I posted this entry time ago, but I must have deleted it while doing some tests anti-spam... Sorry, and have fun!

Update: I've added a redirection rule so that http://neuromancer.inf.um.es/blog/ccm will route to this category automatically.

Spam, Spam y más Spam

Hasta ahora podía convivir con el spam (el correo basura, vamos). Todos los días recibo al menos 1Mbyte (si, un megabyte) de mensajes basura. Mi dirección de correo ha estado muchos años dando vueltas, y ya ha sido tomada por miles de spammers. Pero como digo, hasta ahora no tenía problema, porque uso SpamAssassin. En cuanto al correo, lo que tengo es lo siguiente:


  • Mi correo se almacena en el servidor de la Universidad, que se puede acceder a través de POP3S (POP3 con SSL).

  • Lo obtengo con fetchmail, que se lo pasa a procmail.

  • procmail a su vez primero filtra el correo a través de SpamAssassin, y si éste incluye en el mensaje el flag de spam, lo lleva a la carpeta "spam" de Evolution.

  • Si no es spam, tengo un conjunto de reglas que dejan el mensaje en la carpeta adecuada de Evolution.

  • También tengo configurado mutt para que me permita acceder a las mismas carpetas, por lo que puedo acceder a mi correo incluso desde una terminal ssh

  • Por último, procmail reenvía todo el correo que es para mí específicamente a una cuenta gmail, que utilizo por backup o por si en algún momento sólo tengo acceso web y tengo que ver el correo urgentemente.



Hasta ahí bien. SpamAssassin es muy bueno y casi nunca se equivoca en reconocer un correo bueno como spam. Se equivoca al contrario (es decir, algunos correos, sobre todo en español no los reconoce como spam) pero no hay mucho más que hacer. Como máximo se equivoca en unos 5 ó 6 al día.

Pero manejo otras dos cosas más: listas de distribución y este blog.

En cuanto a las listas de distribución, opté por poner el "Aceptar envíos sólo de los suscriptores". Eso solucionó el problema del spam para las listas. Además, tuve que "rechazar automáticamente" todos los correos enviados por remitentes no suscritos, porque la lista de los correos en espera de ser revisados crecía incontrolablemente (lo cual hacía que ocuparan espacio en el servidor).

Y ahora me encuentro (aunque ya lo sabía) que los blogs también son objeto de deseo para los spammers... Para muestra, un botón: un comentario muy filosófico en mi blog que termina con una referencia a no sé qué casino (he eliminado la referencia, pero mantengo el comentario por curiosidad).

Esto está bien, indica que el sitio web del blog ha tenido salida, que alguien ha accedido, que está listado y enlazado en algún sitio que ha permitido a los spammers llegar. Muy bien, ¿y ahora qué?

Tengo configurado yo el blog para que me envíe un correo electrónico cada vez que se envía un comentario. Ayer vi que se enviaba este comentario y vi que era spam, y en seguida me llegaron tres o cuatro más. La industria spam está cada vez más sofisticada y son capaces de rellenar formularios automáticamente.

Estudié entonces las características anti-spam de WordPress; a saber: moderación de comentarios, mantener en espera los comentarios que contienen ciertas palabras, etc.

Establecí entonces la moderación, pero más de lo mismo, muchos mensajes al día, y además el interfaz de WordPress no permite eliminarlos todos de una (claro, ¿y qué pasa con los comentarios buenos?).

¿Solución? Ni idea :). Bueno, que no cunda el pánico, es broma. Siempre hay solución. Una solución que espero elimine completamente el problema del spam incluso sin tener que moderar los comentarios: Voy a modificar el código de enviar comentario del WordPress que tengo instalado para que necesite algún otro parámetro adicional de mi cosecha. Los programas de los spammers saben qué campos rellenar porque han estudiado las versiones de WordPress estándares. Al modificar yo el diálogo de enviar mensaje, los mensajes que envíen ellos los rechazará. Esto es posible porque las herramientas de los spammers no son tan sofisticadas como para analizar el "form", sino que han estudiado los campos necesarios y los incluyen en la propia petición (sin utilizar el formulario que se ofrece a los usuarios). Así, modificando el formulario y el código que lo recibe podré eliminar automáticamente todos los comentarios que no sigan el nuevo formato. Voy a ponerme a ello y os cuento cómo me va.

Sistema de control de versiones

Me interesan mucho esos sistemas. He usado CVS desde hace mucho tiempo, y últimamente Subversion. También conozco arch (artículo interesante) y últimamente en Slashdot he visto otro: darcs (aquí la página principal). A ver si saco tiempo para revisarlos más a fondo.

Sobre código

He encontrado en Barrapunto esta noticia interesante sobre el código fuente... Quizá como todo informático, tengo curiosidad por saber cómo trabajan en Microsoft... aunque por lo que se ve en la noticia de los comentarios en el fuente de Windows... no sé yo.

París

Aunque volví el lunes, todavía no he tenido tiempo de actualizar el blog... y es para decir que volvimos del maravilloso viaje a París para concursar en el concurso ACM de programación, edición del sureste de Europa, en donde mi equipo, el YFKUF (oR) (no pregunten qué significa) consiguió el puesto 24. De todo queda fehaciente prueba en las fotos (y vídeos, al final de la página) :P

Navacerrada y Segovia

Qué bonito todo :) Este fin de semana estuvimos por ahí. Qué bonitas fotos. Vamos, de fondo de escritorio... Frío hacía...

Escribiendo programas seguros

Por casualidad he llegado a la página personal de David A. Wheeler buscando programas para mejorar la robustez del código en cuanto a eliminar posibles agujeros de seguridad (como rats, splint, etc.) En su página web, podemos encontrar un documento imprescindible: "Cómo escribir programas seguros en Linux". Además, un estudio completísimo de "Por qué usar software libre... ¡mira los números!".

Jornadas GNOME en la URJC

Este jueves y viernes se celebran en la Universidad Rey Juan Carlos de Madrid las Jornadas GNOME. Parecen muy interesantes algunas charlas. Me acercaré por ahí este viernes para tener una reunión con los que estamos trabajando en el libro de GNOME, que ya mencioné en una entrada anterior.

Actualización: Al final, me lo pasé muy bien en el "Evolution hack fest" :) Y hasta arreglé un par de bugs de Evolution, como el #68264.

De crítico literario

Por supuesto, no es que sea un crítico literario ni mucho menos. Sin embargo, la entrada anterior sobre el código Da Vinci me ha ayudado a mirar a los libros de otra manera. En esa entrada, el autor estudiaba el lenguaje de un libro en inglés. Aunque entiendo el libro en inglés, no soy capaz de captar algunas de las sutilezas que el autor exponía. Sin embargo, sí que lo puedo hacer de libros en español. Por ejemplo, hace poco compré "El último Catón" de Matilde Asensi. Antes leí "Iacobus" de la misma autora, y no me gustó mucho. No sé exactamente por qué, quizá porque los personajes no eran muy reales; quizá porque los consejos del monje al niño se hacían demasiado claramente para explicar cosas al lector, etc. El caso es que cogí anoche este último libro, el del Catón, y me encuentro una primera frase:

Las cosas hermosas, las obras de arte, los objetos sagrados, sufren, como nosotros, los efectos imparables del paso del tiempo.


Aparte de la demasiada cantidad de comas (quizá esto sea una cuestión de gustos), encuentro por ejemplo que "imparables" no se refiere a los efectos (los efectos no son imparables, porque un efecto es una consecuencia, no una acción), sino al paso del tiempo. Así, quizá la autora quiso decir exactamente:

[...] sufren, como nosotros, los efectos del imparable paso del tiempo.


O incluso mejor... eliminemos el adjetivo. El paso del tiempo siempre es imparable, y además, ese adjetivo no aporta nada a la frase. A veces me da la sensación de que los autores tienen que añadir palabras a las frases para que no se les queden cortas...

Pero sigo más:

Desde el mismo instante en que su autor humano, consciente o no de su armonía con el infinito, les pone punto final y las entrega al mundo, comienza para ellas una vida que, a lo largo de los siglos, las acerca también a la vejez y a la muerte.


En primer lugar, de nuevo encuentro demasiadas comas y aliteraciones. De nuevo será una cuestión de gusto. Además, un autor es siempre humano, por lo que el calificativo quizá queda redundante o rimbombante. Pero la última parte de la frase, ¿acaso no quedaría más cómoda de leer de la siguiente forma?

[...] comienza para ellas una vida que las acerca también a la vejez y a la muerte a lo largo de los siglos.


Creo que esta frase es más fácil de leer, además de tener la característica de que agrupa el hablar de "una vida" con "las acerca a la vejez y la muerte" (es decir, la frase asemeja el fluir del tiempo).

Por último, y todo en la primera página, hacia el final leo:

Tampoco le oí girar la manija y asomarse, pero el caso es que, cuando me vine a dar cuenta, ya lo tenía en la entrada del laboratorio.


De nuevo, demasiadas comas. Por ejemplo, las dos últimas comas se podrían eliminar sin ningún problema. Pero lo que menos me gusta de la frase (de nuevo, quizá, cuestión de gusto personal) es que el hecho de tener al hombre dentro de su laboratorio sin haberse dado cuenta es una "consecuencia" de que no le oyera girar la manija y asomarse, por lo que el uso de "pero el caso es que", como una disyuntiva no tiene sentido. En todo caso sería más lógico decir "por lo que", o simplemente "y", o eliminar el "pero" y poner un punto...

Tampoco le oí girar la manija y asomarse. El caso es que cuando me vine a dar cuenta ya lo tenía en la entrada del laboratorio.


o:

Tampoco le oí girar la manija y asomarse, y cuando me vine a dar cuenta ya lo tenía en la entrada del laboratorio.


En fin, no sé qué os parece.

Sobre código ofuscado y otras curiosidades...

He visto en Slashdot que ya se han publicado los resultados del concurso IOCCC (concurso internacional de códico C ofuscado). Son impresionantes. Como ejemplo, un juego de carreras de coches hecho en 4K o así, en modo gráfico en X-Window... También ha salido a colación el manual "Cómo escribir código inmantenible". Imprescindible ;)

Actualización: Relacionado con el "estilo" al escribir programas, he encontrado esta entrada en el blog de Larry Osterman.

The Anatomy of a Software Bug

He encontrado esta entrada de blog buscando por ahí. Muy interesante. Me queda pendiente añadir un par de libros interesantes en este sentido... Para cuando tenga más tiempo.

El Código Da Vinci... no tan bueno

De hecho, no es que me sorprenda, pero parece ser que es bastante malo. Todavía no he tenido tiempo de leerlo, aunque lo quiero leer (hay que estar enterado del todo), pero parece que aquí no lo ponen muy bien. Es curioso ese artículo. Me ha hecho pensar en cosas que no había pensado antes. El análisis que hace de algunas frases que aparecen en el libro es destructivo. También tengo pendiente algún libro de Henning Mankell y The Second Angel, de Philip Kerr.

Monad (aka Microsoft Shell, MSH)

Después de 25 años de la patata que Windows llama su "shell", Microsoft ha dado un paso interesante en cuanto al shell. Ya era hora. Hay muchas cuestiones interesantes en lo que muestra el artículo de InfoWorld: por ejemplo, el uso de la "pipe" como comunicador de procesos, como en Unix (¿nada nuevo bajo el sol?), pero hay algo más... información semántica, lo cual es más interesante (por ejemplo, los datos se tratan como en tablas, con sus columnas asociadas a elementos de información con nombre y tipo. Este nombre y tipo pueden estar asociados al interfaz de datos de objetos COM o .NET, lo cual es muy interesante).

Linux en los Toshiba M30

En esta entrada de blog de Vicent Gozalbes aparece un buen artículo de cómo instalar linux y la inalámbrica en un Toshiba M30-xxx, que es el que tengo yo últimamente :) Me interesa para la inalámbrica y el módem, que suelen ser los más problemáticos.

Diseño para no-diseñadores

Buscando por ahí, he encontrado este libro: "The Non-Designer's Design Book". Parece interesante. A ver si me lo agencio. Siempre me ha interesado el diseño gráfico, aunque nunca he tenido tiempo de desarrollarme. Presenté un logotipo para un departamento de mi facultad, y fue elegido, pero al final decidieron que no querían nuevo logotipo :) Seguiré estudiando.