Archivo de la categoría Informática

DOS/32 Advanced



Cuando preparaba el artículo Portabilidad, me di cuenta que dentro de contrib\extender\dos32a estaba todavía incluído DOS/32 Advanced 7.20, la versión en la que tuve mucho que ver. Como en MAME y yo, es algo que tenía hace tiempo olvidado.

A principios de 2000, con el abandono de Watcom C/C++ por parte de Sybase, y el subsiguiente anuncio de liberarlo como código abierto, fue una decisión que me entusiasmó, por lo que no es de extrañar que tuviera cierta implicación personal en aquellos años.

En 2001, con la primera versión 11.0c, me centré en los extensores DOS. Watcom soportaba una gran variedad de ellos, y no quedaba muy claro cual era el mejor, pero probablemente no era DOS/4GW.…

Continuar leyendo...

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...

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...

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...

Rendimiento de adición de elementos a un array en PHP



Cuando tenemos que añadir elementos a un array en PHP, al igual que en otros lenguajes, hay muchas formas de hacerlo. En mi caso utilizaba el acceso directamente por índice, que para bucles triviales era muy conveniente (opción 2); o bien array_push, muy efectivo si nos queríamos ahorrar el índice, o si era necesario agregar más de un elemento a la vez.

Sin embargo, resulta sorprendente que no conociera la construcción $array[] =, que automáticamente mete elementos al final del arreglo, y que se encuentra incluso documentada como mejor candidato a array_push al agregar solamente un elemento.…

Continuar leyendo...

Opera 15. ¿Se acabó la innovación?



Os adelantaba hace algunas semanas la decisión de Opera de abandonar Presto en favor de Webkit, y al mismo tiempo os adelantaba mis temores.

A día de hoy, los resultados son variados, mientras que Opera para Android, en su versión 14 resulta prometedor, y ya de momento un producto ágil y sencillo de utilizar, la versión 15 para escritorio, de la que ya se han publicado dos actualizaciones es harina de otro costal.

El esfuerzo dedicado, no se ha transformado en resultados visibles, y es poco más que un Chromium 28 con un skin de apariencia nativa.

El cliente de correo M2, es ahora un producto independiente, que pasa a llamarse Opera Mail, no está mal, pero la decisión de sacarlo del navegador, conlleva perder el lector integrado de feeds, grupos de noticias, y por supuesto de correo.…

Continuar leyendo...

¿Qué fue de… en la informática?



Los que llevamos tiempo en el apasionante mundo de la informática, hemos tenido la suerte de ser participantes de primera linea en sus numerosas revoluciones. Pero también hemos podido ser testigos de grandes cambios, que luego no lo fueron tanto.

Voy a haceros memoria sobre algunas tecnologías, que prometían ser un nuevo paradigma, y que a día de hoy, en un profundo declive, se han extinguido, integrado con otras, o pasan sus días sin pena ni gloria.

Sistemas expertos
Los sistemas expertos son llamados así porque emulan el razonamiento de un experto en un dominio concreto y en ocasiones son usados por éstos.

Continuar leyendo...