Archivo de la categoría Internet

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

WikiquoteES



WikiquoteES lleva funcionando más de un año, pero acabo de darme cuenta, que no llegué a anunciarlo aquí.

Es un sencillo bot que he creado, que sindica en RSS la frase del día de Wikiquote. Es decir, poco más que un parseador HTML escrito en PHP, que obtiene el contenido deseado.

Menos de 100 lineas de código son las responsables de tomar y seleccionar el contenido, manejar un caché de citas diarias por días, y devolverlo en formato RSS, o bien HTML

Con twitterfeed.com se publica además en la cuenta de Twitter de @WikiquoteES, y se publica en Facebook en Wiki Quote ES.

Unos resultados bastante vistosos y convincentes.…

Continuar leyendo...

Una de enlaces



Doy comienzo a una nueva iniciativa, que espero se acabe convirtiendo en una saga periódica y exitosa, donde iré poniendo sin ningún orden en particular, enlaces frescos acompañados de una breve descripción que os de una idea del contenido, y a la vez no os quite demasiado tiempo.

Empezamos…

Amstrad Personal. Colección completa
Los 10 números de la efímera revista Amstrad Personal, disponibles para descargar en formato DjVu.

Introducing “Find Your Way to Oz”, a new Chrome Experiment
El nuevo experimento de Chrome/Chromium desarrollado por UNIT9 basado en la nueva película de Disney, y que explota los gráficos WebGL y CSS3.…

Continuar leyendo...

Miranda NG



Miranda NG (New Generation), es un fork de Miranda IM, surgido a raiz de ciertas desavenencias de algunos desarrolladores con el proyecto original, donde se quejaban de la lentitud a la hora de traspasarcambios e innovaciones al programa, que al final acabaría siendo una disputa más o menos personal entre George Hazan y Boris Krasnovskiy.

Así que desde que George pusiera en marcha el nuevo derivado a mediados de 2012, su diseño se ha centrado en permitir la rápida evolución de Miranda NG, que se focaliza en varios aspectos, el primero es limitar la retrocompatibilidad a nivel de APIs, es decir no se garantiza la interoperabilidad entre plugins y programas de diferentes versiones, lo que representa en mi opinión un buen movimiento para introducir cambios de cierta magnitud, y agiliza la liberación de cambios.…

Continuar leyendo...