miércoles, 10 de abril de 2013

Apagado de Windows tarda mucho en la pantalla Guardando Configuración

El otro día tenía el problema de que la pantalla Guardando Configuración que se muestra durante el apagado de Windows XP, Vista y otros se prolongaba en el tiempo tardando mucho, minutos, en pasar a los siguiente, Cerrando Windows.

Tras comprobar multitud de cosas, incluyendo:
  • si había procesos perdidos
  • defragmentar el disco duro unas cuantas veces
  • instalar optimizadores
  • etc, etc...
En casi todos los lugares recomendaba una y otra vez esos 3 puntos, cuando me encontré casi de casualidad con un enlace a una utilidad para descargar desde la página de microsoft y tras instalarla ya con pocas esperanzas... bingo... paso de tardar más de 2 minutos a menos de 10 segundos.

UPHClean-Setup.msi en http://www.microsoft.com/es-es/download/details.aspx?id=6676

La utilidad está pensada para asistir en el apagado de Windows... por lo que asumo que fuera cual fuera el problema que tenía yo (seguramente handles abiertos de alguna tarea) seguramente solucione muchos otros casos.

domingo, 7 de abril de 2013

Los problemas de Feedly

Cuanto más uso esta herramienta, menos me convence. Ciertamente es la más cómoda a la hora de leer noticias puesto que apenas requiere esfuerzo o instalaciones y su interfaz es similar a la de Google Reader, incluyendo además algunos "bonus track".

Sin embargo observo varios problemas:
  • en cuanto queremos añadir una fuente nueva empiezan a aparecer problemas.
  • el servicio sigue usando autenticación de Google, es más,
  • lo que es peor accediendo a Google Reader, por lo que no queda claro si Feedly dispone o dispondrá de servidores propios.
Ni que decir tiene que cuando apaguen Google Reader si Feedly no hizo sus deberes se perderán muchisimos datos y el servicio dejará de tener bastante de su utilidad.

Todo esto se sabrá cuando apaguen Reader... esperemos que los de Feedly se pongan las pilas para entonces.

jueves, 14 de marzo de 2013

Muerte de Google Reader. Alternativas a Google Reader.

El fin de Google Reader se aproxima. El 1 de Julio de 2013 se cierra el mejor lector de RSS. Había varios puntos claves, pero para mi lo mejor era su capacidad de recopilar los feeds incluso si no te conectabas cada día. El poder compartir con los amigos y publicar noticias en Twitter y Facebook también estaba bien. Por último el agrupar contenidos era muy útil, pero esta y otras características ya son más comunes entre casi todos los lectores RSS.

Está claro que RSS ya no está de moda: ahora la gente usa Twitter. Yo personalmente -si bien también uso Twitter- sigo prefiriendo RSS por ser más independiente y permitirme hacer lo que realmente quiero: seguir las entradas que publican varias páginas, periodicos, blogs, etc. Además Twitter tiene un fallo muy gordo, y es que no permite organizar bien. Realmente tanto Facebook como Twitter podrían publicar RSS de cada una de sus listas de contenidos pero por motivos monetarios prefieren mantenerse cerrados.

En fin, para todos aquellos que preferían RSS y usaban Google Reader, hay alternativas ahí fuera. Yo por ahora las que mejor me han parecido (aún no es una lista cerrada) son:
Y si disponeis de un servidor web, quizá os interese:
  • http://tt-rss.org/ muy sencillo, e incorpora demonio para escanear las rss incluso sin conectaros.
Hay muchas más alternativas, pero yo creo que estas son las mejores.

miércoles, 13 de marzo de 2013

Calculadora de Google

Una vuelta de rosca más del gigante de internet. Usarlo como buscador es lo normal, pero y si además podemos introducir operaciones matemáticas (incluso conversión de divisas) o busquedas semánticas como el tiempo en madrid, mejor que mejor. Está claro que hace mucho tiempo que Google dejo de ser un simple buscador* para convertirse en mucho más.

Ahora da un paso más y mejora la presentación de muchas de sus búsquedas "inteligentes", entre ellas añade una calculadora en toda regla si realizamos una expresión matemática 5+5 o si buscamos calculadora:


(*) Por ejemplo, algunas cosas curiosas que podíamos buscar con Google:

domingo, 17 de junio de 2012

Llega IPv6, llegan los problemas

Aún no hacían 10 días del lanzamiento "oficial" de IPv6 y empiezan los problemas.

El primer lugar, la penetración de IPv6 es más bien escasa: la mayoría de los servicios de hosting aún no integran la nueva versión de IP en sus redes y según ellos los que lo han hecho han tenido problemas.

Para estos casos está Teredo, sin embargo para los servidores VPS, al menos los basados en OpenVZ habilitar el paquete miredo, el cliente de Teredo para Linux, es toda una odisea.

Por si esto fuera todo, resulta que qmail, uno de los servidores de gestión de correo más conocidos falla como una escopeta de feria en cuanto un dominio activa IPv6...

Todo ello compone un coctel explosivo cuya mecha termina de prender gmail cuando, con toda la razón activa IPv6 en sus servicios de correo... el resultado: el VPS basado en qmail sobre Plesk ya no es capaz de enviar los correos a gmail.

qmail al parecer ya soporta IPv6 pero no es consciente de que el servidor en el que vive no... con lo que poco me importa si soporta o no, o si hace una voltereta, el caso intentar aplicar un ciento de parches infructuosamente, consiguiendo que todo funcionase aún peor (menos mal que apliqué la buena costumbre de hacer copia de seguridad).

La única solución vino de la mano de una alternativa muy sencilla: Plesk integra también postfix, por lo que le doy a un botón en el panel web y cambio el servidor y de repente empieza a funcionar todo.

Así que, moraleja: la única solución es dejar de usar qmail y pasarse a postfix, para ello en el panel Plesk vamos a la pestaña de Servidor, luego a Actualizaciones, entramos y vamos a componentes y wala!!! ahí está: nos deja seleccionar que componente de servidor de correo queremos: postfix o qmail. Le damos y en menos de 5 minutos tenemos todo arreglado.

Me pregunto cual será el siguiente problema que venga de la mano con IPv6, espero que ninguno más...

sábado, 7 de enero de 2012

Ubuntu 11.10... o la actualización que nunca debí hacer

Maldito el día que decidí actualizar!!! según acabó la actualización empezaron los problemas (con 11.04 tuve que cambiar cosas, pero con 11.10 la cuesta se empina más y más!).

Me pregunto si todo esto tendrá que ver con lo que me contaron de que ahora Ubuntu "vende" algunas cosas, vamos, que se ha vuelto más "capitalista" y menos de la comunidad, pero independientemente de eso lo que están haciendo con la distro de linux más popular no tiene nombre!! Pronto habrá que pasarse a Debian si o si...

El caso es que la versión 11.10 ya no sólo carga la nueva interfaz unity por defecto, sino que es que además no incluye gnome. De hecho para conseguir gnome hay que instalar una versión capada. Hay muchas muchas quejas sobre ella, si bien a mi personalmente no me disgusta del todo, aunque me preocupa la línea de evolución, o mejor dicho, involución del sistema.

Tras varios días sufriendo de un ordenador hecho trizas he reunido algo de tiempo para arreglar todo.

Lo primero, instalar el paquete gnome-session-fallback.

Una vez hecho esto nos encontramos con un ordenador sin ningún tipo de aceleración para el escritorio: no entiendo porque han desactivado compiz: ganas de tocar las narices: el caso es que la única alternativa real que he encontrado ha sido ejecutar compiz --replace al principio de cada sesión (se puede lanzar automáticamente).

Para rematar el problema es que compiz por algún motivo deja muerto el sistema de ventanas: no se puede arrastrar ninguna ventana ni nada: de hecho al principio ni siquiera me salían bordes de las ventanas!!

Como primer paso es necesario instalar el gestor de compiz-config que por cierto, hasta esta vez no sabía que se lanzaba usando ccsm XDDDD... debí estar como media hora creyendo que no me funcionaba la instalación.

Al final tras activar window decoration aparecieron las barras, si bien no pude interactuar con las ventanas: no podía moverlas ni redimensionarlas. Era reiniciar la sesión, lanzar compiz --replace y dejaba de funcionar todo!!

Así que dejé el tema y seguí con mi día a día hasta que ayer, dos semanas después, se me dió por volver a ponerme y probar... y funcionó, con lo que apliqué la máxima de "si funciona, no lo toques".

Moraleja: "la nueva ubuntu 11.10 hace aguas, muchas, pronto me migro a Debian!!"

Blusens WebTV

Jojojo... y en la navidad puso Blu:sens su Web:tv a un precio inmejorable, así que me hice con uno.

Señores, este cacharrillo es fenomenal. En resumen es un navegador web + reproductor...

Y que reproductor: ya podemos echarle encima un MKV a super-resolución 1080p (o más... probé uno de 4 mil por 2 mil y tiro fluido XDDD). Sólo mi torre negra con procesador de última generación es capaz de reproducir ese video fluidamente... con eso lo digo todo.

Y como navegador usa un webkit, nada de navegadores tuneados ni gaitas: la compatibilidad está garantizada y desarrollar aplicaciones es tan fácil como hacer una página web. Si queremos que se integre con el mando, tan sólo tendremos que hacer que lea eventos del teclado y opcionalmente podemos usar un api javascript para extender las posibilidades.

Muy recomendable y sencillo, y lo mejor, no quedará desfasado ya que todo está basado en html.

Tutorial: guardar un stream http con Wireshark

Para todos aquellos que querais obtener un stream de datos con Wireshark, este tutorial espero que os ayude:

A mi personalmente me resulta útil para depurar recursos generados dinámicamente en mis páginas: podemos guardarlos a disco y ver que está mal para no andar a dar palos de ciego, si bien variando ligeramente los pasos podemos estudiar un sinfin de protocolos por si teneis problemas implementándolos.

El proceso es:

1) Arrancamos Wireshark con los parámetros de captura que nos interesan: yo optaría por unos relativamente laxos para que capturemos todos los datos necesarios. Es importante arrancar la captura antes de hacer la petición y pararla después de que esta halla terminado. Cuantos menos datos estemos transfiriendo o recibiendo de la red, mejor, así que es mejor reducir la actividad de red de nuestro equipo, y quitar la opción "promiscua".

2) Buscamos la petición, para ello lo ideal es filtrar con las cadenas:

http.request.method == "GET"

o bien

http.request.method == "POST"

3) Una vez que hemos localizado la petición pulsamos botón derecho y luego escogemos "Follow TCP Stream". Esto abrirá una nueva ventana.

4) Por último escogemos en lugar de entire conversation, sólo la parte de la recepción (habitualmente será la que más bytes tenga).

5) Escogemos RAW y pulsamos Save As

6) Si queremos guardar otro stream podemos pulsar Filter Out This Stream, que nos ayudará a encontrar otros, repitiendo los pasos desde el 2 / 3 en adelante, si no vamos a procesar el fichero que hemos guardado.

6) Abrimos el fichero con un editor que soporte ficheros binarios, por ejemplo con Ultraedit.

7) Ahora ya sólo queda comprender un poco el protocolo HTTP: si la respuesta es única (propiedad Connection a close) basta con que busquemos el final de la cabecera de la respuesta HTTP, o sea \n\r\n\r, esto es 0x0D 0x0A 0x0D 0x0A y borramos toda la cabecera, incluyendo estos 4 carácteres, guardamos y ya tenemos el fichero en la mayoría de las ocasiones.

8) En caso contrario debemos jugar con los content-length, aunque independientemente del caso, es siempre bueno anotarlos en todo caso, ya que podría darse el caso de haber datos extra por algún lado. Para ello buscamos algo tal que Content-Length: 1799788 por ejemplo.

Eso es todo. Normalmente que conste que los datos sobrantes al final de un fichero suelen no molestar, pero si tenemos problemas, siempre podemos intentar pegar el tijeretazo.

Como arreglar Tamper Data para los nuevos Firefox

Las nuevas versiones de Firefox usan un diseño mucho más estilizado, pero para aquellos que usan la extensión Tamper Data ( https://addons.mozilla.org/es-Es/firefox/addon/tamper-data/ ) se pierde una manera rápida de acceder al mismo.

Tamper Data es uno de los sniffers más útiles que he visto nunca (no reemplaza a Wireshark, pero es mucho más rápido y cómodo de usar).

Para lograr solucionar todo este lio ha surgido otra extensión llamada Tamper Data Icon ( https://addons.mozilla.org/es-Es/firefox/addon/tamper-data-icon/ ) que nos permite agregar un icono de acceso a Tamper Data.

El problema es que a su vez Tamper Data Icon no lo suelen actualizar muy a menudo, por lo que cada vez que sale una nueva versión de Firefox, y más que ahora parece que Mozilla lleva un cohete en el culo, Tamper Data Icon deja de funcionar. Para solucionarlo debemos realizar 4 pasos:

1) Descargar el xpi pulsando el botón derecho y guardar como...
2) Renombrar tamper_data_icon-1.0-fx.xpi a tamper_data_icon-1.0-fx.zip y abrirlo con nuestro compresor preferido
3) Editar el fichero install.rdf y cambiar la línea donde aparece para aumentar el número de versión.
4) Volver a renombrar a .xpi e instalar la extensión (o abrimos el fichero o lo arrastramos encima de Firefox).

En mi caso venía 5.0 y he puesto 99.0

No es que sea muy seguro poner 99, ya que la extensión podría volverse incompatible, pero dado que la extensión del icono es muy sencilla y que Mozilla saca actualizaciones continuamente nos evitamos un incordio más... y además no creo que esto ocurra pronto. Además siempre podemos desinstalarla si algún día esto ocurriera :)

Espero que esto sea de ayuda.

sábado, 18 de diciembre de 2010

¿Cómo ocultar "Gustos e Intereses" Facebook?

Nuevo perfil, nueva manera:
  1. Abrimos el desplegable haciendo clic en "Cuenta" (esquina superior derecha).
  2. Escogemos "Configuración de la privacidad".
  3. El primer punto se llama "Conectar en Facebook", si os fijais hay un enlace:
  4. Hacemos clic en el enlace "Ver configuración".
  5. Ya está, el último punto es "Ver tus gustos, actividades y otras conexiones", ajustamos su valor a "Sólo mis amigos", "Amigos de amigos" ó "Personalizar" y listo.
Posiblemente el hecho de que esta sección tengo menos visibilidad se debe a que afecta al funcionamiento global de Facebook como herramienta de interconexión y prospección.

En todo caso los ajustes de privacidad realmente importantes son los de "Compartir en Facebook" y esos los han mejorado facilitando la gestión para personas inexpertas y además ahora nos permiten personalizar cada ajuste permitiendo filtrar por personas.

sábado, 1 de mayo de 2010

HTML 5

Nacio como cosas sin sentido y filosofías locas de tres soñadores: "la web semántica"...

Creció a cachos... un poco de pie, algo de mano...

Ahora que está tomando forma, HTML 5 y se prepara para pegar fuerte, muy fuerte... en breve cosas como flash temblarán e irán preparando su tumba ante la sombra de algo que se está hirguiendo muy por encima de ellos.

En todo caso la verdad es algo truculenta... http://baquia.com/actualidad/noticias/16286/steve-jobs-quiere-dar-la-puntilla-a-flash ya que la realidad es que HTML 5 fue una "copia" de gran parte de flash hacia el mundo HTML... recuerda sospechosamente a flash en muchas de sus características. Lo perdonamos porque HTML 5 no solo ha copiado, sino que ha innovado: ha sabido vencer las limitaciones de flash usando una interesante combinación de virtualización en javascript con elementos nativos como los reproductores de vídeo...

Y eso combinado con las recientes carreras "javascript" que está haciendo que los interpretes js se hayan convertido en compiladores JIT cada vez más rápidos cierra un circulo que se cierne sobre todo internet.

En breve el navegador podrá ser --aún más-- el único elemento de un sistema: hoy en día un sistema operativo compuesto solamente por un navegador ya no asusta a nadie y de hecho ya hay ejemplos prácticos.

Para terminar esta apisonadora, la adición de OpenGL a través de WebGL a la palestra completando lo poco que antes faltaba a la web y la está lanzando a una nueva dimensión progresivamente: basta ver http://www.youtube.com/watch?v=fyfu4OwjUEI&feature=player_embedded | http://code.google.com/p/quake2-gwt-port/, y por si fuera poco ahora hay más y más elementos controlados por javascript, por ejemplo http://earth-api-samples.googlecode.com/svn/trunk/demogallery.html (basta darse un paseo por las APIs que saca Google día a dia).

Y esto es el futuro, pero también el presente: la mayoría de los navegadores AAA soportan ya HTML 5 y los que no en breve lo harán. Las versiones en desarrollo dev de los navegadores soportan ya casi todo el estándar... en breve pasarán a las versiones estables.

miércoles, 17 de marzo de 2010

PHPsh: shell de PHP

PHPsh es una herramienta útil para poder probar al vuelo expresiones en PHP sobre un shell que nos devuelve interactivamente el resultado de nuestras operaciones.

Lo mejor de todo es que no ocupa nada, no necesita nada más que PHP y es compatible con casi todos los sistemas operativos, ya que incluye versión para Windows y para Linux y otros sistemas basados en Unix ó Posix.

Además, es gratuito.

Información y descargas en http://iagofg.com/phpsh.htm

sábado, 2 de enero de 2010

Tradiciones de Fin de Año en el mundo

La fiesta de Fin de año o Nochevieja es un acontecimiento en todo el mundo. Desde Rusia a Brasil pasando por Rumanía , Argentina, Italia y muchos otros países se hacen fiestas multitudinarias o privadas con diferentes tradiciones según el país.

En algunas culturas y religiones se lleva otra cuenta de los años tal como en la cultura china, en general, la fecha de fin de año es muy popular en el mundo.

Tarde o temprano, todos los pueblos del mundo se dieron cuenta de que, trascurrido cierto tiempo, las estaciones solares repetían su cauce luminoso. Los cultivos volvían a crecer y las lluvias retornaban para regar las nuevas semillas. Así, el hombre fue constatando el eterno retorno hacia el punto inicial.

Hace 4000 años los babilonios vieron en esta repetición de las estaciones un motivo digno de celebrarse e instauraron un ciclo festivo que dejaría corta la juerga más movida de nuestra época: eran 11 días de celebración, que comenzaban cuando la primavera describía sus primeros trazos entre los jardines colgantes de Babilonia.

Los egipcios también recibían con algarabía las señales que preludiaban el nuevo año. Su rostro se tornaba festivo cuando llegaba el ansiado momento en que el río Nilo empezaba a crecer y el caudal se hacía propicio para la siembra. Entonces, la tierra era labrada con confianza en los tiempos venideros.

Desde siempre, el nuevo año ha significado el festejo de un triunfo inexistente, una victoria que se desea pero aún no ha ocurrido, un elogio a la esperanza que se renueva cada 365 días.

En las diferentes culturas de todos los tiempos los cambios de ciclo han llevado implícitos ritos que atraen salud, amor y dinero, los tres pilares básicos de la felicidad del hombre. Por eso, no es extraño encontrar ritos ancestrales, propios de cada cultura y pueblo, que busquen la felicidad, el éxito y la abundancia.

Desde los inicios del Imperio Romano, enero estaba dedicado al dios bifronte Janus, que mira delante y detrás: al año que se va y al principio del que viene, por eso le representaban con dos rostros, uno barbudo y viejo y el otro jovencito. Los romanos invitaban a comer a los amigos y se intercambiaban miel con dátiles e higos para que pasase el sabor de las cosas y que el año que empezase fuese dulce. Esta vieja costumbre romana fue poco a poco entrando en Europa, donde con la misma finalidad venturosa comenzaron a ofrecerse lentejas, de las que se dice que propician la prosperidad económica del año que empieza. En la Edad Media la Iglesia trató de oponerse a las viejas costumbres, pero no consiguió extirpar la atmósfera disipada de la noche de San Silvestre, que se mantuvo como la última isla pagana de las doce noches navideñas (las comprendidas entre la Navidad y la Epifanía), que la Iglesia consideraba como periodo de renovación para mejorar el año venidero. La cena de Nochevieja, el 31 de diciembre, empezó a convertirse en una festividad de moda desde principios del siglo XX. A diferencia de la cena de Nochebuena, se trata de un rito de carácter público que se celebra entre amigos, en casa de alguno de ellos o en algún establecimiento hostelero.



En Alemania

Allí desafían al destino mediante la “ceremonia” del bleiglessen. Los teutones aprovechan la última noche del año para predecir el futuro. Este ritual consiste en develar los misterios del futuro con una barra de plomo. El plomo se pasa por una soldadora: funden plomo a la luz de una vela. Una vez derretido, en una cuchara, las gotas plateadas se vierten a una cazuela con agua cuando el alba empieza a despuntar. Al entrar en contacto con ésta el plomo adquiere formas caprichosas que -con una buena dosis de imaginación germánica- pueden predecir lo que depara el mañana. El plomo se vende con una lista de interpretaciones: los trozos parecidos a un puño son un corazón y garantizan buena suerte en el amor, las flores indican nuevas amistades. Es como leer los posos del café moca. Esta práctica adivinatoria ya la practicaban los romanos, expertos en fundir metales.

El protagonista en Alemania es San Silvestre. En su honor, corre la bebida, y se queman castillos de fuego para ahuyentar a los espíritus malignos. Después salen a celebrar el fin de año en sus respectivos cotillones, en esto la tradición es muy parecida a la europea.



En Argentina

La ciudad de la Plata vista desde el cielo es una gran falla la noche del 31. A las once de la noche los vecinos de los barrios de Ensenada y Berisso queman los momos, muñecos de papel maché muy parecidos a los ninots valencianos: entre grupos de jóvenes y amigos compiten por crear el mejor muñeco con trapos, papel de periódico, armazón de hierro y madera. Crear el mejor muñeco, el más grande y vistoso para luego quemarlo. Es como un rito de purificación para celebrar el año que se agota, y se quema con todo lo malo. Esta tradición se ha ido haciendo cada día más popular en Argentina, se acompaña con fuegos artificiales, tracas y cohetes expresión de la alegría por el nuevo año.

Es su manera de desprenderse de lo malo ocurrido y dar la bienvenida al nuevo año.



En Bahamas

La fiesta del Junkanoo se romonta a los siglos XVI o XVII y tiene lugar en honor a John Canoe. Este propietario de plantaciones era bondadoso y permitía a sus esclavos tomarse algunos días para la Navidad. Ellos festejaban con danza y música africanas. Esta celebración hoy en día se ha convertido en un gran desfile formal y organizado, con disfraces sofisticados y músicas con mucho ritmo. Se realiza un cortejo de bailarines enmascarados en trajes coloridos y luminosos. Por grupo, los participantes eligen un tema y confeccionan sus trajes en función del tema retenido. Pero un solo grupo gana y es premiado al final de la ceremonia.



En Brasil

Se vive intensamente la fiesta de fin de año. Brasil posee ritos preciosos ligados al mar. El cielo se ilumina con multitud de fuegos artificiales.

Umbanda es una religión practicada en Brasil, fruto de una mezcla de ritos africanos y que genera la fiesta de Iemanja. Las playas se llenan de gente y los cantos religiosos inician la ceremonia en honor a Iemanja. Incluso los que viven retirados en el campo viajan hacia la costa para realizar ofrendas al mar, que la mayoría de las veces son flores en pequeños barcos de madera. “Las filhas do santo” -sacerdotisas africanas- encienden velas y lanzan al mar pequeños barquitos llenos de flores y regalos para que las olas se lo lleven, si es así se considera un buen presagio. Los participantes llevan trajes de colores diferentes cada año (en función del santo que "gobernará" durante esa nueva etapa), bailan y cantan. Le rezan a la santa y piden deseos.



En Escocia

Los escoceses festejanen el Hogmanay. El procedimiento es sencillo: se busca un barril de madera, se le prende fuego y se lo pone a rodar por las calles. Según dicen, es para permitir el paso del nuevo año.

Miles de personas participan en desfiles de antorchas, organizan juegos de luces y pirotecnia en el casco antiguo e inundan las calles de mercadillos y bailes celtas con Kilt.

Además, después de medianoche, llega el momento de presentar su "primer pie": a esa hora van a ver a sus allegados para desearles feliz año nuevo y les ofrecen un trago de whisky, un trozo de carbón y un bizcocho de avena con pasas. Todo eso da buena suerte: los habitantes de Escocia esperan ansiosos a la primera persona que ingrese al hogar. ¿Para qué? Resulta que los rasgos de el individuo determinan el curso de los días futuros. Los más viejos se quedan y esperan que el "primer pie": un moreno pintón (de cabello negro) y bien plantado (una persona bella y alta) es símbolo de buenos augurios. Pero una mujer pálida traerá mala suerte durante todo el año entrante.



En España

La tradición de despedir con uvas el año parece ser que data de 1909; el comienzo del año se festeja con la tradición de las 12 uvas: en el sitio que ocupa cada comensal se coloca previamente un pequeño frutero con 12 uvas y, de acuerdo con el ritual, se debe comer una uva por cada una de las 12 campanadas del reloj. El significado de este ritual se relaciona con las aspiraciones y anhelos de cada participante y con el deseo expreso de que se conviertan en realidad. A continuación, se sigue con costumbres más habituales: comienzan los brindis, se exponen los buenos propósitos de alcanzar alguna meta específica hasta que, entonces sí, se disfruta de la cena de fin de año. Aflora así la añoranza de un año que termina y la esperanza de alcanzar mayor éxito durante el año que comienza.



En los Estados Unidos

La fiesta de fin de año se celebra con muchas fiestas de todo tipo, privadas y multitudinarias. En Estados Unidos las fiestas de Navidad son muy populares. Recibir el año nuevo en la avenida de Times Square es una tradición clásica para los neoyorkinos.



En Francia

La Nochevieja francesa es tan simple como estas dos cosas: Uvas y jolgorio. Como en España.



En Inglaterra

En la parte más poblada del Reino Unido, los festejos se reducen al 31 de diciembre. Esa noche se cuentan los últimos diez segundos del año y cantan Auld Lang Syne mientras brindan con champán. Es una canción del siglo XVIII del poeta Robert Burns, que se utiliza para despedir el año, despedirse de alguien cuando emprende un largo viaje, o despedir a un difunto en su funeral. Su estribillo dice: ¿Deberían ser olvidados los viejos amigos y los viejos tiempos? Por los viejos tiempos, amigo mío, por los viejos tiempos. ¡Tomaremos una copa de afecto por los viejos tiempos!



En Italia

Los italianos aprovechan la Nochevieja para propiciar suerte en el amor con lencería sexy de color rojo. Regalar lencería roja y arrojar trastos viejos por las ventanas como símbolo de un pasado finito. Se deshacen de ropa y muebles viejos para dar cabida a lo nuevo: sobre todo en Nápoles y Roma, donde tuvieron que poner freno al ímpetu de lanzar trastos por la ventana.

En la Nochevieja de Italia las lentejas son las protagonistas para atraer abundancia en el año nuevo.



En Japón

Las fiestas de fin de año duran nada menos que 15 dias, en los que escuchan 108 campanadas equivalentes a los valores negativos que acarreamos los humanos y que con las campanadas se olvidan. Comen también una sopa tradicional con fideos y a continuación se dirigen hacia el templo budista a pedir buena suerte para el año que empieza. Se celebra asi el año recién nacido. Después de dirigirse al templo, beben sake mientras visitan a los amigos para concentrarse después en otra comida especial de año nuevo.

La comida más importante dentro de las celebraciones de fin de año la realizan el dia 15 de enero.



En Polonia

Los polacos van a la zaga en fetichismo festivo port Nochevieja. No sólo llevan ropa interior roja, además esconden en su monedero las escamas del pescado que cenan en Nochebuena para asegurar éxito profesional el resto del año. Otra costumbre, muy sana, es pagar todas las deudas y así encarar el año entrante libre de ataduras. Así mismo no dudan de desprenderse de cosas viejas. Los últimos días del año hacen una buena limpieza de armario.



En Rusia

La Navidad como fiesta cristiana no se celebra de forma oficial, en cambio “La fiesta de fin de año” es el acontecimiento más esperado del año para los rusos durante el día 1 y 2 del año se celebran fiestas y se hacen regalos entre amigos y familiares. El regalo es una costumbre muy arraigada en Rusia.



En Rumanía

Las muchachas casaderas que aún no tiene pareja suelen caminar hacia un pozo, encienden una vela y miran hacia abajo. Se dice el reflejo de la llama dibujará en las aguas profundas del pozo la cara de su futuro esposo. Las que se quedan en sus casas toman una rama de albahaca y la colocan bajo la almohada: el sueño de esa noche tendrá como protagonista al hombre que las espera.



En Venezuela

La espera de fin de año es especial en Venezuela. Antes que den las 12, las familias se reúnen en sus hogares y preparan la hallaca, una especie de humita exuberante, repleta de condimentos y relleno especial, que se regala a los amigos durante la noche de víspera de Año Nuevo. Es una forma de reafirmar la amistad y de desear buena suerte para el próximo año.

sábado, 16 de mayo de 2009

Ejecutar Need for Speed 2000 en Windows XP y posteriores

El otro día decidí desempolvar el NFS 2000 Porsche para recordar viejos tiempos por la Autobahn a 300 Kilometros por hora y me encontré con el problema de que en Windows XP el juego no cargaba.

La solución la encontré de casualidad tras probar sin éxito algunas posibilidades: simplemente hay que ejecutarlo en modo compatibilidad.

Para ello hacemos clic con el botón derecho encima del ejecutable del juego (porsche.exe) y seleccionamos Propiedades, luego entramos en la muesca Compatibilidad y activamos ejecutar en modo compatibilidad, a mi me ha funcionado con compatibilidad con Windows 98/ME.

Wala!! listo... en el menú va un tanto lento en algunas configuraciones, pero una vez cargada la carrera va como un rayo.

El compilador que se auto-compile buen compilador será

En estos tiempos de avances rápidos hay ciertas cosas que van logrando ventaja por varias razones. Últimamente por ejemplo asistimos a una explosión del uso del Javascript y derivados como el Actionscript, y otros como el PHP o compiladores como el TinyCC.

Todos ellos empiezan a mostrar elementos comunes que van desde una mayor comodidad a la hora de trabajar con estructuras de datos hasta compilación dinámica.

Y es esto lo que me interesa: a lo largo del tiempo esta característica ha sido vista como un elemento de no seriedad en un lenguaje, pero en los últimos tiempos estamos asistiendo a que código óptimo sea capaz de auto-compilar código de su mismo tipo: compilación dinámica y JIT.

Proyectos como AS3eval ó TinyCC, incluso native-client, que son compiladores al vuelo para usar dentro del propio código, o V8 y TraceMonkey, que son implementaciones de Javascript que incluyen la función eval capaz de cargar código al vuelo marcan la diferencia respecto a una generación de compiladores más bien poco flexibles.

Con el tiempo se va demostrando que una característica que a priori se consideraba insegura basta con ser rodeada de un sand-box "suficiente" para garantizar la integridad del sistema, o poco eficiente, se va rodeando de compiladores dinámicos con más potencia.

Otros movimientos abogan por la construcción de un sistema compilación de lenguajes universal que proporcione las mismas facilidades y flexibilidad en los diferentes lenguajes y la posibilidad de exportar código JIT. Al fin y al cabo la mayoría de los lenguajes se diferencian en su sintaxis más que ninguna otra cosa. Intentos de proporcionar herramientas que permitan fusionar diferentes módulos en diferentes lenguajes en una sola aplicación final ya ha habido bastantes con más o menos acierto.

Espero que esto sea el fin de los teóricos de la informática que se dedican a proclamar que para conseguir seguridad e integridad en los sistemas es necesario reducir la libertad de movimiento, que es lo más fácil y trivial.

La seguridad debería proporcionarse incluyendo libertad de hacer lo que se quiera dentro de un sand-box establecido en la configuración del sistema, e incluso debe proporcionarse un método para, en aquellos casos en que sea deseable, superar de manera controlada, con conocimiento del usuario ó administrador las barreras que la propia seguridad del sand-box nos impone para poder realizar labores administrativas mediante solicitud de privilegios.

Fuentes:
http://www.joangarnet.com/blog/?p=422
http://eval.hurlant.com/
http://tinycc.org/
http://bellard.org/tcc/

jueves, 23 de abril de 2009

Colocar un menú que siga al scroll con Javascript

Siguiendo con la anterior entrada, hay un "plus" de las propiedades ya expuestas, aplicadas al objeto body...

Si bien en todos los navegadores salvo IE es posible colocar un elemento "atado" a la posición superior del navegador, sin importar lo que movamos el scroll con position:fixed este estilo es completamente ignorado en IE, por lo que si queremos una compatibilidad total debemos usar, una vez más, Javascript.

En primer lugar hay que obtener una referencia a body. Para ello a partir de cualquier referencia de elemento obtenida con getElementById realizamos elemento1.offsetParent y esto nos devolverá una referencia al body. A continuación dispondremos de estas propiedades:
  • body.scrollLeft que nos devolverá la posición izquierda del área visible de scroll.
  • body.scrollTop que nos devolverá la posición superior del área visible de scroll.
  • body.scrollWidth que nos devolverá el ancho total de la zona scroll.
  • body.scrollHeight que nos devolverá el alto total de la zona scroll.
  • body.offsetWidth que nos devoverá el ancho total del viewport del body, incluyendo el scroll vertical.
  • body.offsetHeight que nos devolverá el alto total del viewport del body incluyendo el scroll horizontal.
Basta con coger el elemento elemento1 y cargar body.scrollTop en su style.top así:
  • elemento1.style.top=body.scrollTop.toString()+"px";
Ejecutamos periodicamente esa orden y ya tenemos un menú atado a la parte superior del viewport del navegador compatible con cualquier browser.

Feedback de posición y tamaño en Javascript

Uno de los problemas de maquetar con position:absolute es que si tenemos elementos flexibles no será fácil hacer que nuestro diseño se ajuste a ellos y tendremos que optar por la maquetación con float:left, float:right y clear:both.

Una manera alternativa de poder maquetar con position:absolute, siempre que no tengamos que cumplir las normas WAI, es utilizar javascript para recolocar los elementos. Las características que voy a explicar, por otro lado, son perfectamente compatibles con todos los navegadores de PC y gran parte de los navegadores de dispositivos portátiles, siempre que tengamos soporte para Javascript activado.

Una vez hemos colocado un elemento con position:absolute a priori será muy dificil -al menos hasta donde llega lo que he visto por internet- obtener el alto si sólo hemos prefijado el ancho. Es posible, mediante técnicas, colocar un bloque justo a continuación del bloque position:absolute, pero para ello hay que cumplir una serie de requisitos que hacen impracticable la solución en la mayoría de los casos.

Pero gracias a varias propiedades accesibles desde Javascript podremos obtener el alto una vez inyectado el contenido dinámico, sin problemas y -por fin- ajustar el resto de los bloques de la web a estas nuevas dimensiones.

El primer paso es obtener la referencia al bloque que queremos, para ello usaremos:
  • var elemento1 = document.getElementById("id_del_bloque");
A continuación, si el bloque es un div (y en otros casos también) dispondremos de las propiedades offset, incluso para elementos con posicionamiento float, relativo o sin position, concretamente:
  • elemento1.offsetLeft nos devolverá la posición izquierda dentro del canvas de la página en píxeles.
  • elemento1.offsetTop nos devolverá la posición superior.
  • elemento1.offsetWidth nos dará el ancho, y, por fin,
  • elemento1.offsetHeight nos devolverá el alto, una vez tenido en cuenta el contenido.
Con elemento1.offsetHeight+elemento1.offsetTop ya podremos obtener un valor para inyectar, una vez hechos los cálculos oportunos (teniendo en cuenta la posición del padre, si lo hay) en elemento2.style.top, donde elemento2 se obtiene con document.getElementById igual que la referencia a elemento1.

Estas propiedades son compatibles con IE, Firefox, Safari, Chrome, Opera y otros muchos navegadores.

miércoles, 22 de abril de 2009

Programación funcional con ANSI-C

Últimamente parece que se está poniendo de moda la programación funcional, sobre todo desde que por un lado los procesadores multi-threading están a la orden del día y desde que C# lo soporta "oficialmente".

Hace mucho no obstante que es posible usar programación funcional, incluso antes de que ningún lenguaje funcional naciera, C ya soportaba callbacks, con los que se podían llegar a hacer cosas similares a las que hoy en día es el pan de cada día en la programación funcional: las funciones lambda.

Supongo que muchos ya conocereis su existencia y cómo usarlas, pero por si acaso no es así os dejo aquí un código de ejemplo que usé de pruebas en su día:

#include

typedef int (*operation__prototype) (int, int);
typedef void (*callback__prototype) (int);

int add__implementation(int input1, int input2) {
return input1+input2;
}
int mul__implementation(int input1, int input2) {
return input1*input2;
}
void callback__implementation(int result) {
printf("[Operation done! callback called with result: %d]\n", result);
}

int operation(int input1, int input2, operation__prototype what_operation, callback__prototype what_callback) {
int retv;
retv=what_operation(input1, input2);
what_callback(retv);
return retv;
}

int option1(int arg1, int arg2) {
operation__prototype add_proc = add__implementation;
operation__prototype mul_proc = mul__implementation;
callback__prototype callback_proc = callback__implementation;
printf(
"[Hello world, result of operation ADD is %d.]\n\n",
operation(arg1, arg2, add_proc, callback_proc)
);
printf(
"[Hello world, result of operation MUL is %d.]\n\n",
operation(arg1, arg2, mul_proc, callback_proc)
);
}

int option2(int arg1, int arg2) {
printf(
"[Hello world, result of operation ADD is %d.]\n\n",
operation(arg1, arg2, add__implementation, callback__implementation)
);
printf(
"[Hello world, result of operation MUL is %d.]\n\n",
operation(arg1, arg2, mul__implementation, callback__implementation)
);
}

int main(int argc,char** argv) {
int arg1=4;
int arg2=5;
//printf("[$argc = %d]\n",argc);
//if (argc>=1) { printf("[$0 = %s]\n", argv[0]); }
if (argc<3) {
printf("%s: usage %s value1 value2\n", argv[0], argv[0]); return 0;
}
if (argc>=2) {
printf("[value1 = %s]\n", argv[1]); arg1=atoi(argv[1]);
}
if (argc>=3) {
printf("[value2 = %s]\n", argv[2]); arg2=atoi(argv[2]);
}
printf("\n");
return option2(arg1,arg2);
}

domingo, 8 de marzo de 2009

100000 euros por una aplicación web

A través de Barrapunto: en http://www.galiciapms.eu/ que la Consellería de Innovación e Industria ha destinado 100.000 euros al desarrollo de una aplicación para elaborar presupuestos, por parte de Ardinova Consulting S.L. de A Coruña, orientada al sector de la carpintería metálica llamada Orzametal (que es de libre descarga desde GaliciaPMS, o desde la página http://www.orzametal.eu/).

El detalle es que la aplicación en cuestión es un tanto "descafeinada" incluso si su presupuesto fuera una décima parte del que es... la aplicación en cuestión consiste en una serie de formularios montados sobre el framework Symphony (lo que aligera más el trabajo y me hace dudar sobre la afirmación de que sea "100% galega", quizás "10% galega" sería más apropiado). Los formularios apenas dan funcionalidad de añadir, listar y gestionar mínimamente una serie de tablas de una base de datos.

Fuentes:
http://barrapunto.com/
http://www.conselleriaiei.org/ga/web/notic.php?ide=1815&pag=0
http://elprogreso.galiciae.com/nova/25088.html

lunes, 2 de marzo de 2009

Programadores del siglo XXI

He leído esto (http://blog.ivangadea.com/2009/02/27/management-del-siglo-xx/) que me ha recordado el eterno debate:

Me considero una persona tolerante a las ideas de los demás, pero hay una cosa que nunca he entendido completamente.

En determinadas escuelas de informática se ha instaurado la manía de meter líneas y separar el código de una manera artificiosa... con este me refiero a, por ejemplo, usar doble espaciado en el código y entre bloque y bloque de código poner una separación de 3 líneas y 6 cuando los bloques están en grupos separados. Ya no digo nada de los comentarios, siempre con bloques bonitos de varias líneas de /*** ... *** . . . *** ... ***/

Más allá de que al leer el artículo de management halla encontrado una razón más -que ya sospechaba- para este tipo de comportamiento a la hora de picar código, entiendo que halla gente que lo considere más bonito y claro.

Sin embargo personalmente soy de los que opino que el código, sin pasarse, cuanto más condensado mejor: no es lo mismo tener que analizar un bloque de código que ocupa 3 o más pantallas que uno que se puede ver en su conjunto sin tener que subir y bajar o imprimir en papel todo. Si a esto sumamos que, por suerte, la mayoría de los editores de código tienen resaltado de sintaxis con color, y que existen los comentarios // de final de línea...

Además NO todo el código es igual de complejo: ya sabemos esas zonas que deben estar super-optimizadas porque el 90% la CPU se lo pasará en ellas, o bien esas que tienen la operación más enrebesada. Yo soy firme defensor de la indentación adaptativa... hay zonas del código que en 2 segundos cualquiera reconocería, y otras que podemos estar todo el día sin saber que hacen a ciencia cierta. Lógicamente estas últimas zonas deberían llevar un formateado y unos comentarios mucho más completos y claros que las otras.

Es como quien para optimizar el código optimiza a diestro y siniestro, cuando normalmente basta con aplicar optimizaciones a 3 o 4 zonas claves y/o al flujo lógico del código para lograr un 95% de la posible optimización y el 5% restante ya son chorradas en las que el tiempo invertido apenas tendría resultados reales.

Es un punto de vista, supongo que habrá otros.

miércoles, 25 de febrero de 2009

Demonios del Gmail

Una vez un sabio dijo que todo lo bueno se tenía que acabar... y desde entonces el mundo es un lugar peor.

Gmail, por ejemplo, empieza a sufrir de esta "regla"... en que quedó aquello de "Don't be Evil"...

No es mi intención decir que Gmail es una mierda, no lo es, y de hecho como servicio es magnifico, pero -y esto va especialmente dirigido a aquellos que creen tanto en la nube que andan en las nubes-. Si creéis que no es necesario hacer copias de seguridad de la cuenta de Gmail. LEED ATENTAMENTE:

Es cierto que periódicamente sacan alguna mejora de la interfaz y que ocasionalmente nos dan una alegría con ellas, sin embargo esto no debe hacernos ciegos a varios detalles:
  • En primer lugar, tal como dicen las condiciones de uso, se reservan el derecho de cancelar una cuenta porque sí... vamos, sin vulnerar ninguna de sus directivas de uso. Tampoco se hacen responsable del contenido de la cuenta, vamos, que te borran de la faz de la tierra y ni se inmutan.
  • En segundo lugar el exponencial crecimiento de su capacidad está ralentizándose... asistiremos en breve a un big-crunch en el universo Google.
  • Por último se suman a las caídas -porque sí- del Google Apps algún que otro fallo del Gmail.
Vamos, que la crisis llega a nosotros de maneras insondables y se ve que Google está intentando rentabilizar dinero y ha dejado de crecer. También hay que ser consciente que al crecer una empresa tiene que protegerse... pero es curioso que no quiera proteger a sus usuarios y clientes (incluso en sus servicios gratuitos somos sus clientes: recordad la publicidad).

Por si esto fuera poco hace poco ha llegado a mis oídos de mano de un conocido que su cuenta ha sido inhabilitada... cuenta que casi no uso y que no permite el desbloqueo (normalmente se pueden desbloquear con un captcha) y tras ponerse en contacto con Google por ahora lo único que ha recibido es un silencio atroz.



Así que ya sabéis, si veis una pantallita así, cruzad los dedos y preparaos para lo peor.

Esto me recuerda a gente rajando contra Richard Stallman cuando señaló las maldades de la nube (http://alt1040.com/2008/09/richard-stallman-en-contra-del-cloud-computing).

miércoles, 4 de febrero de 2009

Proyecto de Fin de Carrera: Preprocesado de geometrías 3D

Más vale tarde que nunca.

Hace ya casi 3 años... y bueno, durante todo este tiempo fue accesible en la biblioteca de mi escuela de ingenieros.

He pensado que quizás a alguien le interese ojear la presentación de mi proyecto de quizás os interese ojear la presentación de mi proyecto de fin de carrera... trata de optimización de geometrías, parte de ideas como el polychop, pero intentando minimizar errores y esas cosas. Su aplicación estaba pensada para audio, pero bueno, es genérico.

Incluye dos vídeos.

Como el SWF no estaba pensado para Internet no tiene ni gestor de cargas (mientras carga se ven todas las diapositivas en la esquina inferior-derecha), ni control del foco (se ponía a pantalla completa y estaba en local). He reducido la calidad de las imágenes y de los vídeos para que vaya bien.

En el improbable caso de que os resulta algo de interés y lo uséis, podéis comentármelo y no estaría mal que pusierais alguna mención por alguna esquina :P. Bueno, aquí lo tenéis:



O bien podéis hacer clic aquí para abrirlo en grande.

lunes, 26 de enero de 2009

La cámara del iPhone y su cutre cámara de fotos

Nunca imaginé que llegaría a ver algo así de una pieza de "culto". Si ya nunca compraría un iPhone, ahora que leo esto tengo un motivo más para mi arsenal...

Leo en Teleobjetivo que la cámara del iPhone tiene una peculiaridad:

El chip CCD que lleva la cámara del IPhone no captura la imagen de una sola vez, sino que hace un barrido de izquierda a derecha. Debido a esto, al fotografiar objetos en movimiento podemos obtener resultados curiosos…

Y podemos ver dos imágenes del detalle:



Bueno, el caso es que a mi este tipo de imágenes me suenan: las hacía la primera cámara digital que compre, bastante barata y de 1'3 megapíxeles (de las primeras de esta resolución que hubo).

Creo que no tenía un chip CCD, sino que era CMOS... creo... tampoco estoy seguro... en definitiva... una mierda de cámara para los estándares de hoy en día.

¿Porqué? Pues porque si sacabas una foto algo movida salía un churro... literal... la foto toda movida como podemos ver en el ejemplo de la derecha. Nunca se me dió por fotografíar unas aspas... pero supongo que algo por el estilo.

Interesante cámara para un cacharro que vale 600€ podrían haberse "esforzado" un poco más. Pero es lo que hay... cada día descubrimos nuevos motivos para NO comprarlo, cuando en el mercado hay móviles más baratos, más potentes y con mejores cámaras.
Este sorprendente efecto se debe a que, en el momento de tomar la fotografía, la hélice estaba girando, con lo que la cámara del IPhone, al hacer el barrido, ha pillado la hélice en diferentes etapas de su moviemiento.
La distorsión se debe a que los vehículos se desplazan al mismo ritmo que el barrido. En esta fotografía, si conocieramos la velocidad a la que se movía el camión podríamos calcular la velocidad a la que el IPhone hace el barrido.

La pregunta que queda en el aire es si esta característica es específica del IPhone o si otros modelos de cámara funcionan igual.


Mi respuesta: ¡¡LAS BARATAS!!

Fuente: http://teleobjetivo.org/blog/la-camara-de-fotos-del-iphone-en-accion.html

martes, 20 de enero de 2009

Cómo ahorrar un buen dinero en guionistas: "Escribe tu relato sobre el mundo Star Trek"

Leo en VidaExtra este titular: 'Star Trek Online', escribe tu relato sobre el mundo Star Trek y gana acceso a la beta.

Sinceramente, frente a lo que piden, ya podían dar algo más, porque este concurso les va a nutrir de guiones para el juego, si es que saben lo que hacen.

Un MMO se diferencia de otros juegos en que habitualmente tiene una cuota de uso y que sus contenidos suelen ser interminables, dado que los creadores están continuamente desarrollando el universo de juego.

Que mejor recurso para lograr guiones para todo este material que es necesario desarrollar para un juego de estas características que organizar un concurso, incluso varios de ideas. Es por ello que con el dinero que se van a ahorrar ya podían dar algo más que acceso a la beta.

Y dado el aluvión de historias que van a recibir casi seguro... ya podían dar algo más (van a tener historias para un buen rato).

Fuentes:
http://www.vidaextra.com/2009/01/20-star-trek-online-escribe-tu-relato-sobre-el-mundo-star-trek-y-gana-acceso-a-la-beta
http://www.startrekonline.com/node/148