Archivo del autor

Escrito por Iván Alonso el Domingo 27 de Diciembre de 2009

Tras trastear un rato con sed y distinta posibilidades de búsqueda de archivos para poder aplicarlo a varios de ellos, he encontrado esta única instrucción en perl que acaba siendo mucho más sencilla:

perl -pi -w -e 's/texto viejo/texto nuevo/g;' *.php

En las secciones a buscar y reemplazar hay que acordarse de escapar con la barra invertida (‘\’) determinados caracteres, como paréntesis, barras, etc.

Actualizado: para hacerlo recursivo desde un determinado directorio, la mejor solución que he encontrado ha sido:

perl -pi -w -e 's/oldstring/newstring/g;' `grep -ril oldstring *`
Escrito por Iván Alonso el Lunes 21 de Diciembre de 2009

Hace ya unos meses que había comenzado a rediseñar esta página, pero me había quedado parado tras terminar la cabecera y un par de detalles más. He hecho un par de cosas nuevas y lo he traducido todo a un theme de WordPress, para poder ponerlo en pruebas en la página y así poder ir trabajando sobre algo visible.

Está en permanente construcción, como todo en Internet…  

Captura de pantalla 2009-12-21 a las 17.51.54.png

Escrito por Iván Alonso el Lunes 21 de Diciembre de 2009

Vamos a por nuestro primer ejemplo con OpenGL. Tras las explicaciones del anterior post sobre OpenGL, la única puntualización necesaria sería sobre qué es eso de GLUT que pone en el título del post. GLUT es el acrónimo de openGL Utility Toolkit, y viene a ser poco más que un wrapper para facilitar las tareas más comunes, con llamadas algo más sencillas. A los desarrolladores de OpenGL debería decirles algo el hecho de que este tipo de productos existan y sean tan ampliamente utilizados. Como veremos, también incluye algunas facilidades para el uso del teclado y ratón.

Nosotros lo utilizaremos únicamente para este primer ejemplo, para afianzar conceptos básicos… porque con él estamos perdiendo una gran cantidad de productos potenciales en lo que ejecutar nuestro código (GLUT únicamente existe para los sistemas principales, pero no para consolas, específicamente para productos homebrew que no disponen de SDKs oficiales, ni para el iPhone). Además se dejó de trabajar en GLUT hace tiempo, ahora habría que utilizar freeglut y blablabla… conclusión: no lo vamos a utilizar en el futuro.

Lo primero que haremos será crear un nuevo proyecto, de tipo Command Line Tool, para C++, al que pondremos como nombre lo que más rabia nos dé (a mi se me ha ocurrido Demo01, en un arranque de originalidad):

Captura de pantalla 2009-11-17 a las 11.04.11.png

Se creará un proyecto con un único archivo de código (main.cpp). La siguiente tarea a realizar será añadir las referencias a los frameworks/librerías que vamos a utilizar, en este caso OpenGL. Esto lo haremos haciendo click derecho sobre el proyecto, Add, Existing Frameworks:

Captura de pantalla 2009-11-17 a las 11.07.48.png

Otra de las buenas cosas de los Mac es que todo está localizado donde debe. Así que todos los frameworks instalados en el sistema se mostrarán en una lista de la que tan sólo hemos de escoger OpenGL.framework y GLUT.framework (OpenGL Utility Toolkit) y añadirlos al proyecto.

(más…)

Escrito por Iván Alonso el Viernes 18 de Diciembre de 2009

200912181358.jpg

Vía Nunca me entero de nada

Escrito por Iván Alonso el Martes 15 de Diciembre de 2009

http://technorati.com/tools dice:

Technorati has redesigned our sites and many things have changed. Technorati tools are not currently available with the new site launch. We plan to bring some back soon! Thank you for your patience.

Creo que la muerte de Technorati es más que patente. Define claramente la vida útil de la mayor parte de proyectos y empresas en internet. Cualquier emprendedor debería tener bastante claro que su objetivo debería ser crecer, crecer y crecer, vender lo más caro posible y desentenderse del proyecto. De todas formas antes o después el interés en el mismo va a caer…

Escrito por Iván Alonso el Martes 15 de Diciembre de 2009

Esta mañana me he puesto a revisar neverbot.com, y he descubierto que tenía cincuenta y tantos errores que impedían que la página validara correctamente según el W3C… principalmente eran culpa del nuevo sistema para ver el estado de twitter, del badge inferior donde se veía una foto aleatoria de mi flickr y del contador de visitas de statcounter (invisible).

Cambios principales:

  • En llamadas a scripts y similares, cambiar todos los ampersand (&) por &
  • Cambiar completamente el badge de flickr por uno ad hoc. Yo he seguido este post, y ahora muestro cuatro imágenes siendo el resultado perfectamente válido.
  • No olvidar los atributos alt en las imágenes que incluyamos en la página, aunque estén vacíos (alt=”"). A mí siempre se me pasa.

Ahora puede comprobarse la validez de la página… sólo me queda comprobar todas las demás que mantengo, como esta misma.

Actualizado: neverbyte también pasa el test XHTML 1.0 Transitional

Escrito por Iván Alonso el Miércoles 2 de Diciembre de 2009

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de Internet manifestamos nuestra firme oposición al proyecto, y declaramos que:

  1. Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
  2. La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
  3. La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
  4. La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
  5. Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
  6. Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
  7. Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
  8. Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
  9. Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
  10. En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.
Escrito por Iván Alonso el Viernes 27 de Noviembre de 2009

Esto ha costado por el modo en que se manejan los strings, pero al final se ha conseguido.

Este post de WPRecipes explica cómo conseguirlo, pero el problema viene cuando en tu estado de Twitter se incluye algún enlace. En ese caso el enlace reconstruido no se verá correctamente ya que las comillas dobles aparecerán dos veces (“”), y se añadirá al inicio del enlace el nombre de tu propio dominio para intentar solucionarlo, por lo que tus enlaces siempre serán algo del tipo:

http://www.tudominio.com/"enlace/de/twitter"

Y eso, lógicamente, no funciona. Gracias a un comentario de Nick Heer en este otro post de Smashing Magazine, al respecto de este tema, conseguí llegar a un trozo de código escrito por él… pero que tampoco funciona correctamente.

Al final, la solución ha sido (y por el amor del espagueti volador, con comillas simples, que parece que la gente no sepa cómo funciona PHP):

function nb_parse_feed($feed)
{
    $stepOne = explode('<content type="html">', $feed);
    $stepTwo = explode('</content>', $stepOne[1]);
    $tweet = $stepTwo[0];
 
    $tweet = str_replace('&lt;', '<', $tweet);
    $tweet = str_replace('&gt;', '>', $tweet);
    $tweet = str_replace('&quot;', '"', $tweet);
    $tweet = str_replace('&amp;', '&', $tweet);
    $tweet = str_replace('&lt;a href', '<a href', $tweet);
    $tweet = str_replace('"&gt;', '">', $tweet);
    $tweet = str_replace('&lt;/a&gt;', '</a>', $tweet);
 
    return $tweet;
}
 
function nb_twitter_status()
{
    // Tu usuario de Twitter
    $username = 'neverbot';
    $feed = 'http://search.twitter.com/search.atom?q=from:' . $username . '&rpp=1';
    $twitterFeed = file_get_contents($feed);
    return nb_parse_feed($twitterFeed);
}

Y, donde lo necesites:

<?php echo nb_twitter_status(); ?>

Lógicamente, puedes cambiar los nombres de las funciones, yo he utilizado el prefijo nb porque las he incluido en un archivo de funciones comunes que tengo para los themes de WordPress, que incluyo con:

include_once('nb_funcs.php');
Escrito por Iván Alonso el Miércoles 25 de Noviembre de 2009

200911251825.jpg

Escrito por Iván Alonso el Martes 17 de Noviembre de 2009

Me he dado un paseo por las cuatro páginas que mantengo ahora mismo, actualizando unas cuantas cosas:

  • Los feeds de todas se sirven ahora a través de FeedBurner (hasta ahora sólo lo hacía con neverbot).
  • A la última de las cuatro la he añadido los servicios de estadísticas de Google Analytics y Statcounter.
  • Y ya de paso he actualizado algunas versiones de plugins que estaban atrasados.

Y esta información, que no le interesa a nadie, me la dejo apuntada aquí para recordar en el futuro cuándo hice qué.