Archivo de la categoría Internet

Lint para Javascript



Después de descubrir Google Closure Compiler Service en Sieve en Javascript (optimizado), hoy paso a comentaros otra rama de utilidades para el desarrollo Javascript: Lint.

Aunque Lint es el nombre genérico de las herramientas de análisis estático de código, muy populares en lenguaje C y C++, actualmente existen este tipo de herramientas para multitud de lenguajes, incluyendo Javascript. Los Linters, van a analizar nuestro código, para detectar construcciones potencialmente peligrosas, que puedan ser indicativas de algún error.

Tenemos disponibles las siguientes:
– JSLint: Implementado completamente en Javascript, es muy exhaustivo, quizás demasiado, reportando muchos falsos positivos, que aunque algunos de ellos pueden desactivarse, siguen siendo demasiados.…

Continuar leyendo...

Rendimiento Javascript vs VBScript (II)



Ya ni me acordaba que en 2004 en Rendimiento Javascript vs VBScript ocurrió el extraño resultado que demostraba que la ejecución de código VBScript resultaba ser más veloz que la de Javascript.

Mucho ha cambiado en estos 7 años en los navegadores web, que debido a la complejidad de aplicaciones client-side, han ido optimizando la ejecución de Javascript, con los ahora habituales JIT.

Obviamente Internet Explorer 9, ha seguido también este camino, al menos en su versión de 32 bits, por lo que no estaba de más verificar si esto seguía siendo así o no.

A priori, todo parecía indicar que las tornas habrían cambiado, y si bien con Internet Explorer 6, Microsoft apostaba por VBScript para sus aplicaciones empresariales que requerían un rendimiento extra, y manejar una complejidad mayor, no tendría mucho sentido que VBScript hubiera seguido los mismos pasos.…

Continuar leyendo...

TBClamAV



A nivel particular, sigo siendo un usuario fiel de The Bat! y como antivirus uso Avira Antivir en modo standalone o bajo demanda.

Es cierto que se puede integrar Antivir con The Bat! sin problemas, y es algo de lo que hablaré más adelante, sin embargo, el problema de estas soluciones, es que necesitan cargar y procesar el archivo de firmas, cada vez que se analiza un elemento. Esta carga adicional, frena bastante la recepción de emails, sobre todo, si en la cola hay más de uno.

Dicho lo cual, y aprovechando que el antivirus de código abierto ClamAV, tiene un módulo de tipo servicio/demonio llamado clamd, y que una vez cargado, clamscand, se conecta con él vía TCP para analizar contenidos, me he decidido por escribir desde cero, mi propio plugin, utilizando esta característica.…

Continuar leyendo...

Emular un PC en Javascript



A PC emulator in Javascript, es un proyecto del reputado Fabrice Bellard, que demuestra como es posible emular un PC en lenguaje Javascript.

Parte del código de QEMU, del que Fabrice ha creado también una gran parte, para conseguir una emulación equiparable a un 486SX, con un rendimiento meritorio, pero todavía lejos de la realidad.

Si quitamos la curiosidad tecnológica, probablemente la mayor utilidad en A PC emulator in Javascript, sea la de utilizarlo como benchmark de máquinas Javascript en diferentes navegadores, por lo que me he tomado la libertad de ejecutarlo en las últimas versiones de los navegadores web disponibles para Windows, anotando el tiempo que han tardado en arrancar:

– Firefox 7.0a1 2011-06-01 (x86): 4,096s
– Opera 11.50.1027: 4,349s
– Firefox 7.0a1 2011-06-01 (x64): 4,749s
– Internet Explorer 9.0.8112.16421 (x86): 6,021s
– Internet Explorer 10.0.1000.16394 (x86): 6,464s
– Chromium 13.0.781: 6,550s
– Safari 5.0.5.7533.21.1: 9,676s
– Internet Explorer 9.0.8112.16421 (x64): 34,767s

Los resultados me parecen curiosos, ya que se esperaba que Opera o Chrome fueran los vencedores, pero ha ganado Firefox, lo que me hace pensar que gran parte del desarrollo de las máquinas virtuales Javascript, es la optimización de casos comunes y particulares.…

Continuar leyendo...

El fin de Ubuntu ShipIt



El servicio ShipIt de Ubuntu ha cerrado sus puertas. ShipIt se encargaba de enviar CD con las distribuciones de Linux amparadas por Ubuntu a los usuarios sin coste alguno.

La noticia me deja un sabor amargo. Por un lado, viene a confirmar que las expectativas de hace algunos años por popularizar los diferentes sabores de Linux en los equipos de escritorio, no ha tenido tanto éxito como se esperaba, por lo que el coste no se justificaba. Probablemente el causante de esto, siga siendo la constante, pero lenta evolución de Linux, al menos en lo que se refiere a características para usuarios domésticos.

Por otro lado, y dado que ShipIt fueron los que me hicieron retornar a Ubuntu Linux allá por la versión 7.04, y luego a Kubuntu con la 8.11, he perdido un conveniente sistema de actualización, y una colección de versiones históricas que aumentaba cada 6 meses.…

Continuar leyendo...

Kubuntu 11.04



Como ya viene siendo habitual cada 6 meses, acaba de presentarse Kubuntu 11.04.

A nivel de características, lo más destacable es el uso de KDE 4.6.2, que gracias a usar Qt 4.7.2, ofrece efectos y animaciones más trabajadas, al mismo tiempo que lo hace de forma más fluida. Esta mejora no es “sobre el papel”, sino que se aprecia claramente en equipos modestos, como mi Pentium 4 a 2,8 Ghz en el que lo he instalado.

La gestión de multimedia se hace ahora con GStreamer, que a pesar de causar algunas incompatibilidades, tiene la ventaja de usarse también en Ubuntu, con lo que se obtiene una comunidad más amplia de usuarios y desarrolladores, que lo irán mejorando con mayor agilidad.…

Continuar leyendo...

Lo que no me gusta de WordPress



Tras mi migración de Simple PHP Blog a WordPress, he familiarizándome con el funcionamiento interno de este CMS, encontrando por desgracia bastantes aspectos que no son de mi agrado.

WordPress es magnífico en mucho sentidos, tiene una herramienta de administración sencillo y cómodo; la cantidad de plugins y temas disponibles nos permiten personalizarlo a nuestro antojo con poco esfuerzo; y sobre todo, la cantidad de funcionalidades que soporta “out-of-the-box”, nos permiten cubrir casi cualquier necesidad.

Poca separación entre datos y presentación
No me malinterpretéis, la forma en que WordPress está programado, con sus temas que separan el código del sistema de la presentación es magnífica, sin embargo, la base de datos guarda el contenido de los posts, y de los comentarios directamente en código HTML, y en este sentido, no habría una peor forma de hacerlo si lo que queremos es separar los datos de la presentación.…

Continuar leyendo...

Rendimiento de variables dentro de cadenas en PHP



Tras la sorpresa de Rendimiento de constantes en PHP, os puedo adelantar que esta vez, probablemente lo hagáis de nuevo.

Se trata de concatenar variables a cadenas.

La primera forma, usa cadenas delimitadas por comillas simples, y el operador punto. La segunda usa el método heredado de Perl, de incluir las variables dentro del literal, naturalente, usando comillas dobles. La tercera, es igual que la primera, pero con comillas dobles, mientras que la cuarta y última, usa sprintf.

<?php $KI_MAX_ITER = 500000;   $fInicio=microtime(true); for ($iCont=0; $iCont<$KI_MAX_ITER; $iCont++) { $sRes = 'Esta es la iteración número ' .…

Continuar leyendo...

Mi configuración de WordPress



Continuando con Renovación del blog y mi paso a WordPress, voy a daros algunos detalles más sobre mi actual configuración. Si no tenéis mucho rodaje con él, seguro que os encamina para poder empezar.

Primero de todo escogí un tema que me gustase, buscaba en este orden que fuera funcional, sencillo, y bonito. Encontré Arclite 2.03 que me gustó por su liquidez, que es indispensable si buscamos la facilidad de lectura.

Luego cargué una buena batería de plugins, recomendados, o recopilados por mi. Hay que destacar que cuantos más añadamos más cargado y lento será el blog, pero si necesitas una determinada funcionalidad, no queda más remedio que tenerlos.…

Continuar leyendo...

Rendimiento de constantes en PHP



En PHP tengo por costumbre el usar variables globales como constantes, pero no ha sido hasta hace bien poco que me he cuestionado su eficiencia, teniendo en cuenta que existe define.

Pensando de manera análoga a C, suponía que define iba a ser mucho más eficiente, al ser una constante definida en tiempo de interpretación. Nada más sencillo que comprobarlo con el siguiente código:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?php $KI_MAX_ITER = 1000; define('KI_MAX_ITER', 1000);   $fInicio=microtime(true); for ($iCont1=0; $iCont1<$KI_MAX_ITER; $iCont1++) { for ($iCont2=0; $iCont2<$KI_MAX_ITER; $iCont2++) { $iCont3=($KI_MAX_ITER != $KI_MAX_ITER); $iCont3=$KI_MAX_ITER; $iCont3=($KI_MAX_ITER == $KI_MAX_ITER); }   } $fFin=microtime(true); echo ($fFin - $fInicio) .…

Continuar leyendo...