Portabilidad



Como excusa para revisar los progresos de los snapshots diarios (27 MB en formato TAR.BZ2 vía FTP), decidí unificar los fuentes de 100 FPS en un PC (16 bits) y 500 FPS en un PC, para mostrar el funcionamiento del preprocesador de C, de cara a mantener la portabilidad entre plataformas.

El artículo pretendía explicar el uso de #define, #ifdef/#if defined, pero incitado de nuevo por los poderes ocultos de Watcom, me dediqué a ver hasta cuánto podía mejorar el original, sin necesidad de usar ensamblador. ¡Qué tiempos con el #pragma aux!

Lo primero que hice fue sustituir las llamadas a kbhit y getch, por una implementación directa basada en los servicios de teclado de la BIOS.…

Continuar leyendo...

Bitdefender Antivirus Free Edition



Después de años usando alternativamente Avast y Avira, probando de vez en cuando soluciones más esotéricas, y revisando regularmente las alternativas gratuitas, me he topado con Bitdefender Antivirus Free Edition.

A diferencia de las anteriores ediciones gratuitas de Bitdefender, que estaban basadas en una versión anterior de la edición comercial, el nuevo Bitdefender Antivirus Free Edition, es un desarrollo completamente nuevo, conocido anteriormente con el nombre clave de Gonzales.

Utiliza firmas locales, pero está basado en cloud, como veréis más adelante, viene a ser lo que Panda Cloud Antivirus debería haber sido.…

Continuar leyendo...

Samsung Galaxy S4



Tras casi 3 años con el LG Optimus E900 Optimus 7, tocaba una renovación, y el elegido ha sido el Samsung Galaxy S4 (modelo GT-I9505).

Lo primero que llama la atención es la poca calidad aparente del producto, y más teniendo en cuenta su precio actual, con una tapa posterior de plástico, que va anclada por unos anclajes interiores de plástico, y un packaging más bien discreto y espartado. Nada que ver con la de aluminio negro del E900. A este respecto, las fuentes oficiales afirman que la tapa de plástico es resistente y ligera, y que no tiene nada que ver con un ahorro de costes… Permitidme que discrepe.…

Continuar leyendo...

J’hayber New Olimpo



Después de las Paredes Axel, hoy le toca el turno a otras zapatillas legendarias: Las J’hayber.

Fundada en Elche en 1971, obtuvo gran notoriedad con su modelo Antorcha presentado en 1972. Actualmente acaban de cumplir su 40 aniversario. En los años 80 y 90, cualquier heavy que se preciara calzaba unas J’hayber, ya fuera en su modelo Olimpo, como preferiblemente en el de bota Atenas, ambas lanzadas al mercado en 1985. Tuvieron mucha aceptación en el tenis donde se decía que su agarre en mojado era insuperable, y por supuesto, entre los profesionales que se veían obligados a pasar mucho tiempo de pie.…

Continuar leyendo...

¿Qué precisión tienen los relojes?



Ya vimos en relojes radiocontrolados, que cuando estos sincronizan diariamente, ofrecen una precisión que a efectos prácticos es del orden de décimas o centésimas de segundo en cualquier momento.

Sin embargo, los relojes de pulsera que no ofrecen esa característica, o bien que por cualquier motivo no logran sincronizar, tienen diferentes especificaciones en cuanto al grado de precisión que pueden mantener. Ello depende fundamentalmente de la naturaleza del movimiento (siendo los de cuarzo muy superiores a los mecánicos), y también de la calidad del mismo (existiendo diferentes gamas en cada uno de ellos).…

Continuar leyendo...

Facebook HipHop



Hip Hop es la herramienta desarrollada por Facebook que permite ejecutar PHP como binarios nativos de la plataforma. Las versiones iniciales se basaban en transformar una aplicación completa PHP a un binario nativo, mientras que las siguientes permitían convertir un único archivo PHP y sus dependencias a C++, y compilarlo.

Él último enfoque es HHVM, que funciona como el intérprete de bytecode de PHP, pero que es capaz de compilar Just In Time (JIT) ese bytecode a código nativo en memoria. El código nativo generado queda cacheado en una base de datos SQLite, de manera que si se vuelve a solicitar, no es necesario volver a compilarlo.…

Continuar leyendo...

Simulador de Casio F-91W en HTML



Hace casi 3 años ya de Simulador de Casio W-59 en Flash, llevaba un año o así dándole vueltas a programar un simulador, que además incluyera la funcionalidad del reloj.

Me puse manos a la obra, y tras cuatro días de trabajo, y más de 1000 lineas de código, finalmente os puedo presentar Simulador de Casio F-91W en HTML. Además de cambiar el modelo de reloj de un W-59 a un F-91W-1YEF, que no obstante comparten el módulo 593, incluye bastantes novedades en base a mi experiencia anterior.

Obviamente, y al dominar mucho más la plataforma, hay algunos refinamientos muy interesantes, como el uso de requestAnimationFrame en el caso de estar disponible, efectos CSS, manejo de eventos independientemente del navegador (tanto para dispositivos táctiles, como de escritorio o versiones antiguas de Internet Explorer), etc.…

Continuar leyendo...

Especificaciones de las pilas de botón



En este artículo se combinan dos elementos por los que siento cierto entusiasmo, el primero son las pilas, baterías y acumuladores en si mismos, el segundo son los relojes, que podríamos catalogar como unos de los principales consumidores de pilas tipo botón.

A nivel técnico, y desde que era pequeño, me sentí maravillado en como elementos tan pequeños, conseguían almacenar una capacidad de carga tan elevada. Para hacernos una idea la socorrida LR77, que conocemos todos los que teníamos maquinitas electrónicas del tipo Game & Watch, almacena solamente unas 7 veces menos carga que una pila AA de las normales, y obviamente en cuanto a volumen, las diferencias son abismales.…

Continuar leyendo...

Paredes Axel



Desde hace 15 años aproximadamente he sido consumidor de zapatillas deportivas Nike, Adidas, Reebok y Avia, que he llevado casi a diario. Pero estaba algo cansado de ese juego, así que decidí cambiar.

Me topé con las clásicas Paredes, y viendo sus precios, decidí hacerme con una de ellas, siendo las elegidas las Axel azul, que rondan los 20€, un precio al menos 3 veces inferior al de las multinacionales.

Las zapatillas se entregan en una caja de cartón Paredes, que nos recuerda muchos de los valores del producto, su logotipo, menciones de ser el original, etc. La impresión negativa es que hace referencia a dos webs, y una de ellas (www.paredes1954.com) dejó de existir en 2010.…

Continuar leyendo...

Conversiones peligrosas en MySQL



La informática demuestra que por más tiempo que llevemos, siempre nos encontraremos cosas que nos puedan sorprender, como por ejemplo el rendimiento de adición de elementos a un array en PHP. Hoy os traigo otra sorpresa, que tal vez sea menos agradable.

Tradicionalmente se ha recomendado en MySQL, forzar los parámetros numéricos a cadena dentro de las consultas, para evitar errores de tipo, y que por tanto fallen las queries.

Así por ejemplo, en vez de escribir:

SELECT * FROM t_mstr_agenda WHERE agenda_id=47

Escribíamos:

SELECT * FROM t_mstr_agenda WHERE agenda_id='47'

Cuando por el motivo que sea, ese 47 ya no es un numérico, quedamos protegidos del error, no retornándose ningún registro:

SELECT * FROM t_mstr_agenda WHERE agenda_id='ABC'

Lamentablemente si ese string, es convertible, aunque sea parcialmente a un numérico, MySQL efectuará directamente la conversión, reportando la advertencia query – Error Code 1292 – Truncated incorrect DOUBLE value:

SELECT * FROM t_mstr_agenda WHERE agenda_id='1-5W38'

No sería nada grave, si no fuera porque PHP no nos informará de esa advertencia, y transformará la consulta anterior, convertida directamente a numérico:

SELECT * FROM t_mstr_agenda WHERE agenda_id='1'

Es decir, estamos pidiendo un registro con identificador 1-5W38, que no debería existir, pero él nos está devolviendo el que corresponde a 1.…

Continuar leyendo...