Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

No se puede confiar en las capturas de pantallas de páginas web

Hoy circuló una captura de pantalla de un artículo de la web del Clarín en el que un redactor se olvidó de borrar un comentario de su editor:

clarin1.thumbnail.png

El copete en las redes sociales era:

Chicos de Clarín, se les escapó borrar el párrafo que explicaba cómo nos tenían que chamuyar.

Algunos aclaraban que mostraban una captura de pantalla antes de que "lo borren".

Hoy, ya tarde a la noche, entro a la dirección origianl y el texto sigue ahí. Increible. Si no estuviera, el lado conspiracionista de mi cerebro me habría hecho pensar que todo fue una puesta en escena. Repito, en este caso no fue, pero podría haberse hecho muy fácilmente.

Solo basta entrar a la web en cuestión usando un navegador moderno como Firefox o Chrome. En Chrome vamos a Más herramientas/Herramientas para desarrolladores:

clarin2.thumbnail.png

Editamos algúno de los párrafos:

clarin3.thumbnail.png
clarin4.thumbnail.png

Y listo, ya tenemos una captura de pantalla con la cual sembrar confusión o invalidar un medio:

clarin5.thumbnail.png

Por lo tanto, si bien este no fue el caso (de eso estoy seguro yo porque entré al sitio y seguía con el comentario, pero vos no podés estar seguro si entrás y ya no está), nunca confien en capturas de pantallas de páginas web.


Limpiar Wordpress infectado

Si tenés un blog con Wordpress y te atrasás con las actualizaciones (o no) tarde o temprano te embocan (no es la primera vez que me pasa). Alguna herramienta automática detecta que estás corriendo una versión vulnerable a cierto fallo de seguridad reciente y otra inserta código malicioso en todos los archivos de tu sistema de blogging en los que pueda escribir.

Las consecuencias son que cuando tus visitantes intenta entrar al blog son redirigidos a un sitio porno o de venta de Viagra. Si se accede con Chrome a uno de estos sitios infectados, un enorme cartel rojo de avisa que el sitio incluye contenido de una web rumana reportada como distribuidora de malware.

Tu hosting te manda un mail diciéndote que no te sientas solo por que no lo estás, pero en realidad si lo estás. Te recomiendan cosas poco prácticas como actualizar, cambiar claves o restaurar un back-up previo a la infección. Tengo casi 1000 archivos .php llenos de código malicioso y me decís que cambié mis claves (?). Necesito una forma de arreglar esto.

Dejo aquí unos tips en base a mi experiencia personal, con la certeza de que en cualquier momento voy a volver a buscarlos por necesidad.

Muchas de las herramientas que agregan código malicioso (las más simples) agregan una línea al principio de todos los .php en los que pueden escribir. En mi caso esta línea tenía esta forma:

 <?php /**/ eval(base64_decode("aWYoZnVuY3...oZnVu"));?><?php

(código codificado que es decodificado y evaluado al ejecutar el archivo).

¿Qué archivos están infectados?

grep -l eval\(base64_decode -R *

¿Cuantos archivos hay infectados? (aprox.)

grep -l eval\(base64_decode -R * | wc -l

Limpiar todos los archivos:

for x in `grep -l eval\(base64_decode -R * | grep -v .back`; do sed -i.back '1d' $x ; sed -i '1 i 

El anterior comando busca todos los archivos infectados (excepto los que tienen extensión .back), les borra la primer línea y luego les agrega una primer línea "

Mejoras, sugerencias y correcciones bienvenidas!


Ya podés comprar mi nuevo libro de cuentos!

Los caballeros de la Rosa

Bueno, en realidad el título del post es algo engañoso. No podés comprarlo ya, por que todavía no está impreso, pero podés financiar su edición e impresión, convertirte en un productor y en el medio obtener tu copia.

¿Cómo? Cargué mi proyecto en el sitio idea.me, un sitio de financiamiento colectivo. El funcionamiento es simple: las personas pueden participar con distintas sumas de dinero y para cada aporte hay una recompensa. Mi objetivo monetario es llegar a 1000 u$s. Si llego al 10%, el proyecto se hace público y la gente de idea.me me ayuda a difundirlo (es importante llegar a este hito lo antes posible, así que no dejes para mañana lo que puedes hacer hoy). El total tengo 55 días. Si luego de ese periodo no llegué al 100%, el proyecto es cancelado y a los productores les devuelven su dinero.

El sitio de mi proyecto es: http://idea.me/proyecto/144/loscaballerosdelarosa (pueden ayudarme difundiendo la url en Facebook o Twitter) y allí hay un video promocional, fotos y una sección de novedades donde voy a ir contando cosas sobre el libro y los avances (if any) que hayan en la recaudación.

Las recompensas son:

  • Una copia de la edición digital del libro antes de que esté online: 5 u$s.
  • La copia digital y una copia impresa tan pronto esté lista: 10 u$s.
  • La copia digital, la impresa y tu nombre en la sección Productores del libro: 25 u$s.
  • La copia digital, la impresa y tu nombre en la sección Productores del libro + una copia de mi anterior libro: 35 u$s.
  • La copia digital, la impresa, tu nombre en el libro y un asado en la casa del autor si alguna vez estás en Santa Fe: 100 u$s.
  • Todo lo anterior y le ponemos tu nombre a uno de los personajes del libro: 250 u$s.

Una vez listo el libro podrá descargarse gratuitamente de Internet y tendrá una licencia Creative Commons.

Una aclaración, en el sitio figura que el gasto de envío de las recompensas dentro del país es de unos $ 30 (30 pesos argentinos o 7 dolares) pero en realidad son solo 7 pesos. Lo mismo para el envío internacional, son 26 pesos. Estoy gestionando que lo cambien.


Lo que me llegó de China

Hace unos días me enteré que unos amigos, de esos que uno tiene en "La Internet"(tm), empezaron un blog llamado Lo que me llegó de China. La idea es comentar artículos que uno puede comprar en el lejano oriente por pocos dolares y recibirlos en la puerta de su casa, consiguiendo productos que nunca encontraremos por estos lados o que si, pero con una diferencia de precio importante.

Me sumé y me di cuenta de que aún no habían publicado nada! Así que lo inauguro con mi primer compra, mientras espero que me lleguen los otros pedidos, antes de que se haga Navidad :)


El hosting para Django más barato

Hace un tiempo recomendé Webfaction como el mejor hosting para Django (debe aún serlo). Pero algunas veces no queremos el mejor, con el más barato nos alcanza :D

Tal vez son un adolecente aprendiendo a programar, o simplemente rata. Para un programador PHP es bastante fácil encontrar un hosting en Internet que le de un servicio gratuito, subir sus cosas y mostrarlas al mundo. Cuando programás en Django... es más difícil.

Hasta hoy; les paso el dato: AlwaysData.com

Hosting Django gratuito.

Tengo 2 cuentas funcionando muy bien. Y no se asusten por que está en francés (eso me detuvo la primer vez que lo vi); luego de sacar la cuenta tenés acceso al panel de administración que está en muchos idiomas; incluyendo español. Tenés para elegir distintas versiones de Python y Djando, MySQL o PosgreSQL, acceso SHELL, FTP y WebDAV. Qué más querés?

También podés tener PHP o Ruby on Rails.

Espero les sirva.


Coloreando código fuente en WordPress

Tengo este blog hace unos 5 años y en él tengo muchos posts con código fuente, pero nunca usé un plug-in para hacer syntax highlight o resaltado de sintáxis, es decir que las distintas partes del código fuente se pinten de distintos colores según su significado. Mi idea es solucionarlo.

El escenario es bastante complicado. Hay bloques de código en los que uso la etiqueta HTML <pre> y otros en los que uso la etiqueda <code>. También tengo código in-line (es decir líeas de código que forman parte de una oración) arcadas con la etiqueta <code>.

¿Qué busco?

  • No quiero posts con código coloreado de ahora en adelante y que los anteriores sigan en blanco y negro.
  • No quiero tener que editar cada posts para agregar algún atributo en las etiquetas pre o code. Por ejemplo, muchos plug-ins te piden que marques el código con algo como <pre lang="python"> o similar.
  • Quiero que los bloques de código <pre> y <code> se vean igual.

Luego de buscar un poco, decidí instalar y probar estos plug-ins:

  • WP-SynHighlight (lo descarté enseguida, tiene una GUI pesada con muchas opciones y las marcas que introduce en el post son bastante poco estándar e intrusivas)
  • WP-Syntax (usa GeSHI, por lo que el coloreado se realiza en el lado del servidor)
  • JQuery.Syntax (hecho con la popular librería de JavaScript)
  • Google Code Prettify (está basado en tecnología de Google y posiblemente lo hayan visto en acción en StackOverflow. Su principal ventaja es que no requiere decirle en qué lenguaje está escrita la porción de código, sino que este lo adivina)

Intentar empezar a usar uno de estos plug-ins ahora, me genera un gran problema

de compatibilidad hacia atrás :)

Veamos... WP-SynHighlight no me gustó de arranque. Modifica la GUI del editor WYSIWYG the WordPress, uno selecciona una porción de código, aprieta el botón y te da unas 10 opciones para elegir (desde lenguaje hasta el número de espacios para los tabs). Puede funcionar para algún tipo de usuario, pero no para un programador. Además agrega bastante código sucio al HTML del post. Paso.

El segundo que probé fue WP-Syntax. Me gustó mucho, entre otras cosas:

  • Usa CSS in-line para que el código coloreado se mantenga incluso si el posts no es leído en el blog; por ejemplo en un planeta o por RSS.
  • Si el texto es más ancho que la página, agrega una barra de desplazamiento en la cajita de código.

Luego probé JQuery.Syntax y Google Code Prettify. Estos funcionan de la siguiente forma: luego de que se carga el HTML del sitio, corre código JavaScript que se encarga del coloreado. Esto hace que la carga de la página sea más lenta.

¿Qué hice?

Me decidí a usar WP-Syntax y para no editar todos los bloques de código, creé un pequeño plug-in para WordPress que cambia todos los <pre> por <pre lang="python" escaped="true">, cambié a mano los pocos bloques code que tenía por bloques pre y agregué a mano la especificación para los bloques de código que no son Python (no eran muchos).

Tampoco tengo coloreado del código in-line. De las opciones que probé solo el plug-in que usa tecnología de Google, tenía esta característica.

Si ven algún post en el que algo no quedó del todo bien, avisen!



Destapando las cañerías de planet-planet

Palabras claves: planet-planet exception KeyError

Antes de venirme para Pellegrini recibí algunos avisos de que los planetas de PyAr y TecnoFe no se estaban actualizando. Estos dos sitios corren sobre dos instalacions de planet-planet, un agregador de feeds escrito en Python. El programa consiste en un script que cada vez que se ejecuta genera páginas html, actualizando su contenido entre corrida y corrida si corresponde.

Mediante reglas de cron hago que estos scripts corran cada 15 minutos, buscando novedades en los blogs agregados.

Mi primer intento de saber qué estaba pasando fue revisar crontab, pero no encontré nada raro allí. Lo siguiente fue ejecutar a manos los scripts en cuestión. Ambos tiraban exepciones similares:

Traceback (most recent call last):

File "planet.py", line 167, in ?

main()

File "planet.py", line 160, in main

my_planet.run(planet_name, planet_link, template_files, offline)

File "/home/.orithyia/jjconti/pyar.firebirds.com.ar/planet-2.0/planet/init.py", line 240, in run

channel = Channel(self, feed_url)

File "/home/.orithyia/jjconti/pyar.firebirds.com.ar/planet-2.0/planet/init.py", line 527, in init

self.cache_read_entries()

File "/home/.orithyia/jjconti/pyar.firebirds.com.ar/planet-2.0/planet/init.py", line 569, in cache_read_entries

item = NewsItem(self, key)

File "/home/.orithyia/jjconti/pyar.firebirds.com.ar/planet-2.0/planet/init.py", line 845, in init

self.cache_read()

File "/home/.orithyia/jjconti/pyar.firebirds.com.ar/planet-2.0/planet/cache.py", line 74, in cache_read

self._type[key] = self._cache[cache_key + " type"]

File "/usr/lib/python2.3/bsddb/init.py", line 116, in getitem

return self.db[key]

KeyError: 'tag:www.taniquetil.com.ar,2007-08-31:285 author type'

Este software tiene un cache de informacion para guardar los feeds que parsea. Basicamente es un directorio llamado cache con un archivo por cada feed agregado.

Solucioné el problema -más por instinto que por pericia- borrando, para ambos sitios, el archivo correspondiente al blog con problemas. Les dejo el tip por si les sucede en alguna instalación de planet-planet. Prometo que si me vuelve a pasar voy a investigar un poquito más para descubrir la razón del problema :)


¿Conocías Axxón?

Axxón es una revista electrónica de Ciencia Ficción y Fantasía. Tiene una increíble colección de cuentos, galería de arte, noticias y mucho más.

Tempestad de Raúl Cruz (Racrufi)

Axxón es un ezine argentino dedicado principalmente a la literatura de ciencia ficción, la fantasía y el terror.

Creada en 1989 por Eduardo J. Carletti y Fernando Bonsembiante, Axxón fue la primera revista editada en soporte informático en habla hispana, destacándose además que se trataba de un programa ejecutable autocontenido, desarrollado independientemente por sus creadores. La principal inspiración para el surgimiento de este vehículo literario fue la fuerte crisis económica que atravesaba Argentina: la inflación mensual cercana al 200% hacía casi imposible cualquier nuevo proyecto de edición e impedía especialmente la aparición de los varios fanzines de ciencia ficción que habían empezado a surgir durante la década de 1980.

Originalmente el programa funcionaba en MS-DOS con una cantidad relativamente pequeña de páginas. Sucesivas mejoras en la compresión permitieron que en el reducido tamaño de un disquete de 360 kilobytes se pudieran incluir novelas completas con ilustraciones, como fue el caso de El Libro de la Tierra Negra, de Carlos Gardini, actualmente una novela impresa por medios convencionales pero que vio la luz por primera vez como un número especial de Axxón. Refinamientos posteriores permitieron la inclusión de mejores imágenes, sonido, conversión a una versión completamente gráfica y luego una versión que funcionaba bajo Windows, siempre con la idea de que todo el programa debía caber en un diskette (que para ese momento ya eran de 1,2 y 1,4 megabytes).

Axxón apareció durante nueve años invariablemente cada mes, superando el centenar de números, pero diversas circunstancias volvieron más irregular la preparación de los números ejecutables. Además, el acceso a Internet del público regular era más económico y fácil. Todo esto decidió a su director a darle un nuevo impulso a la publicación, transformando la página web de Axxón de punto de presencia para la bajada de los programas ejecutables en sede de un webzine sumamente activo.

Más en Wikipedia.

La imagen con la que adorno este post se titula Tempestad y es una obra de Raúl Cruz (Racrufi).