Archivo de la categoría Internet

Sieve en Javascript



La Criba de Eratóstenes, más conocido por su nombre anglosajón de Sieve of Eratostenes, o simplemente Sieve, es un algoritmo matemático para el cálculo de números primos, descubierto por el griego que le dio nombre, allá por el años 200 AC.

Como es lógico, es la época de Eratóstenes, no había ordenadores, por lo que poco podía imaginarse del éxito que tendría su idea en este campo… Durante los 80 y los 90, Sieve era uno de los algoritmos que se utilizaba para verificar el rendimiento de compiladores y hardware, vendría a ser similar a los benchmarks que hacen hoy día los entusiastas con Prime95.…

Continuar leyendo...

El archivo hosts



Si te dedicas a internet, ya sea en la modalidad de programación, como de sistemas, seguro que sabes lo que es el archivo hosts, y probablemente también lo hayas utilizado alguna vez. Si no, es posible que lo hayas utilizado para realizar acciones poco éticas.

Lo que seguramente no sabes, es porqué ese archivo está allí, y funcionando desde tiempos inmmemoriales en diferentes plataformas desde *NIX, hasta Windows, Netware, OS/2, o Mac.

Antes de internet, cuando la red era militar, la mayoría de dominios eran .mil, y se la conocía como ARPANET, no había protocolo DNS (RFC 2535) ni por tanto servidores de DNS.…

Continuar leyendo...

90 FPS en HTML 5



Después de JS ZX LOAD "" SCREEN$, he dado una vuelta de hoja más, esta vez para poder comprobar el rendimiento de blitting en HTML 5.

Para ello he partido del código en 800 FPS en un PC, y lo he adaptado en menos de 15 minutos.

Los resultados, un equipo que daba con el binario para Windows x64 1300 FPS, consigue con la versión de HTML 5 bajo Chrome 6 unos 90 FPS (75 FPS en Opera 10.6 y 60 FPS en Firefox 3.7 x64), es decir, un rendimiento bastante similar al de la versión para DOS de 16 bits.

Como de costumbre, el código lo tienes aquí (2 Kb. en formato HTML).

(adsbygoogle = window.adsbygoogle || []).push({});



Continuar leyendo...

PHP 5.2+ lento al concatenar



Tras actualizar a PHP 5.3, he podido comprobar que ciertas aplicaciones funcionaban mucho más lentas. Una vez descartado que los problemas no estaban en el paso de ISAPI a FastCGI, he dado con la clave, que es la issue #46198.

Parece ser que si concatemanos asignado la cadena original, en la forma como:
$sCadena = $sCadena . 'Valor';

El resultado es tremendamente ineficiente. Según mis pruebas entre 3 y 30 veces más lento que haciéndolo así:
$sCadena .= 'Valor';

El argumento que aducen es que en el primer caso, la cadena debe ser copiada, mientras que en el segundo no. Personalmente, y aunque sigo siendo bastante entusiasta de PHP, lo encuentro intolerable.…

Continuar leyendo...

JS ZX LOAD "" SCREEN$



Después del primer experimento que publiqué usando HTML, JS Noise, ahora le llega el turno a algo un poquito más avanzado, y que he titulado como en laguísimo, y poco original nombre de JS ZX LOAD "" SCREEN$.

Esta vez de lo que se trata, es usando canvas de HTML 5, simular las cargas de pantallas gráficas de nuestro queridísimo Sinclair ZX Spectrum.

La demostración en custión imita el borde de carga, el dibujo progresivo de la imagen, así como la carga final de sus atributos. Le he añadido al principio una recreación de cómo se cargaban este tipo de pantallas. El efecto es bastante resultón después de todo, a pesar que no se incluye por ejemplo el efecto de la carga de la cabecera del archivo, y que naturalmente no se está emulando la memoria de video del Spectrum, de manera que tanto las lineas, como los atributos, son una pura recreación.…

Continuar leyendo...

Funciones Javascript en Dreamweaver CS5



Actualizo el artículo que en su día publiqué sobre las funciones Javascript incluídas por Adobe en Dreamweaver CS 5 (11.0.4909).

Las tienes para descargar aquí (15 Kb. en formato JS), para que puedas utilizarlas en tus proyectos web, con o sin Dreamweaver.



Continuar leyendo...

Simulador de Casio W-59 en Flash



Hace casi 3 años, comencé un simulador de reloj digital Casio W-59 en Flash CS4 con Actionscript 3. Por esas cosas extrañas que a veces ocurren, después de la tarde inicial que invertí en desarrollarlo, el proyecto quedó en el olvido.

Hace algunas semanas lo reencontré, y planeé reescribirlo con Flash CS5, simulando todas sus funcionalidades. Sin embargo, por falta de tiempo, y otras prioridades, el momento de aplicar todos esos cambios nunca llega, de manera que me he decidido a publicarlo, incluyendo sus fuentes, para que podáis incrustarlo en vuestras páginas, o para que lo podáis modificar y ampliar como deseeis.…

Continuar leyendo...

¿Y si Hitler fuera Chrome?



Si el Führer fuera Google Chrome, no iría desencaminado con sus argumentos sobre Opera…



Continuar leyendo...

Visor de PDF en Chrome / Chromium



Se ha publicado recientemente en el blog de Chromium, que el navegador creado por Google soporta en sus ramas de desarrollo la visión nativa de documentos en formato PDF sin necesidad de plugins externos desde la versión 6.0.437.2.

De esta manera, se agiliza la navegación de los usuarios, ya que mostrar documentos PDF, es ahora inmediato, y sin dependencias de visores de PDF externos. El plugin desarrollado por Google (pdf.dll), apenas pesa 2 Mb., por lo que su consumo de recursos es bajo, incluso si lo comparamos con lectores alternativos a Acrobat Reader como SumatraPDF, Foxit PDF Reader, Cool PDF Reader o PDF-XChange Viewer.…

Continuar leyendo...

JS Noise



Como hice en 2007 con AS3 Fire, he reimplementando un algoritmo de los usados en las clásicas demos. El caso escogido esta vez es el efecto de ruido blanco, típico de las televisiones analógicas desintonizadas. El lenguaje, Javascript, haciendo uso del objeto canvas de HTML 5.

Para ser sinceros, la implementación es realmente más sencilla que el del fuego, lo cual he hecho a propósito por problemas de tiempo.

El código en cuestión, es especialmente cuidadoso a la hora de acceder a canvas, para ser compatible con las diferentes implementaciones, y tiene ciertas optimizaciones en cuanto a velocidad como es el uso de FastRandom.…

Continuar leyendo...