jueves 2 de julio de 2009

Firefox 3.5 y los errores en javascript

firefox-logo_small Ojala esto sea algo que solo me pase a mi por algún complemento o algo desconocido pero desde la RC1 de Firefox 3.5 vengo testeándolo por las maravillas que prometía en javascript (las cuales realmente no he notado para seros sinceros), bien el asunto es que para mi sorpresa ante errores tan nimios como un formulario no definido, o un nodo de un XML nulo, o un índice de un array no definido, la ejecución del script se detiene (como es de esperar por supuesto) pero NO REPORTA EL ERROR. O sea que se te detiene tu script y no tienes ni idea de porque ni dónde.

Ante esto he probado otros navegadores para probar las consolas de errores y un punto a favor de Firefox 3.0 es que ninguno me complacía del todo, por ejemplo:

logo-google-chrome Chrome – me detecta el error pero es una consola muy complicada y no te va a la línea de código dónde a fallado el script, demasiados colores y botones para no servir de nada.

Opera-10-Beta-Opera Opera 10 beta – no es compatible al 100 % con la aplicación pero la consola presenta los mismos detalles que la de Chrome.

Internet Explorer 8 – desarrollamos para mozilla con lo cual no es compatible ni un 1 % con el Explorer, no testeado.

Safari – no testeado.

En fin que para trabajar con javascript y hasta que no corrijan este bug ya reportado por mi al equipo de Firefox ni se os ocurra actualizar a la versión 3.5.

jueves 18 de junio de 2009

Gráficos para la web

Estos días he estado peleándome con múltiples alternativas para generar gráficos dinámicos en la web y realmente entre todas no he encontrado ninguna que me convenza definitivamente, voy a describirlas un poco y pondré las ventajas y desventajas de cada una.

jqplot

Destacar el diseño tan currado de este plugin de javascript muy sencillo de implementar pero en una fase muy verde de su desarrollo porque solo sirve para g´gráficos de líneas, eso si, con un sorprendente diseño, al ser basado en javascript podemos jugar con múltiples opciones del lado del cliente pero no con gráficos muy potentes.

jQuery Google Charting

Muy útil y potente herramienta para gestionar la API de Google Chart mediante jquery, el diseño realmente no están currado pero es muy personalizable y con multitud de posibilidades en cuanto a gráficos, la única pega que le veo es que para gráficos con más de 150 puntos se bloquea y no muestra nada, esto claro es debido a ser una herramienta del lado cliente. Otra pega son limitaciones propias de Google que no permite gráficos de un tamaño mayor a 1000 px por ninguna de las 2 caras o que no supere los 300 000 px cuadrados.

amChart

Una completísima herramienta para crear gráficos dinámicos en flash mediante XML, utilizando 2 archivos distintos uno para las configuraciones y otro para los datos. Puede llegar a ser un poco complicada de entender y de leer toda su documentación en inglés pero el punto más flaco que le veo es la capacidad de actualización de los flash, pues aunque cambies el XML tienes que cerrar el navegador para que cargue los nuevos cambios y esto en la fase de diseño es horroroso, nada recomendable para testear o te puedes morir del asco.

jpgraph

Una herramienta que genera los gráficos en php y los muestra como una imagen, en realidad es muy personalizable pero la pega que tiene es que envía una cabecera a la web con la imagen por lo cual para crear gráficos dinámicos dentro de una página web es muy complicado insertarlo dentro, tal vez se podría capturar esta salida y guardarla en un archivo y luego acceder a ella pero realmente la veo muy débil para hacer gráficos dinámicos dentro de aplicaciones ya existentes,  o por lo menos como algo fácil de hacer.

En fin hay miles de soluciones pero una perfecta a mi modo de ver ninguna.

miércoles 3 de junio de 2009

Internet ¿acceso o barrera?

No cabe duda de que la llegada de internet y la aplicación de esta en múltiples aspectos de nuestra vida es una ventaja más que considerable, pero a la vez si optamos por ciertos servicios puede llegar a ser una verdadera tortura.

Sin-título-1 Por ejemplo, me he dado de alta al servicio de e-factura de movistar, un poco para ser ecologista y que no me manden la factura en papel, pero debí darme cuenta que movistar no es para nada una empresa comprometida con sus usuarios de internet, y porque digo esto pues porque su web no es, ni remotamente, una web que respete a sus visitantes. Antes que nada solo el válida para Internet Explorer, dicen ellos que versiones 5.5 en adelante pero esto es falso porque para la versión 8 tampoco es compatible.

ie8-logo Yo por ejemplo tengo todos los navegadores más famosos pero por suerte o desgracia tengo la ultima versión de los mismo o sea que tengo Internet Explorer 8, ahora, si no puedo ver mi factura por internet porque la aplicación está mal ¿como hago?, pasarme 3 horas al teléfono de atención al cliente.

Si fuera otra empresa podría hasta entender estos fallos, pero movistar, con la pasta que tiene. Coño que hacer una web para mozilla no es para tanto, o por lo menos que la vayan actualizando a la ultima versión del Explorer. no creo que esté pidiendo algo que se les escape del presupuesto.

Pero esta no es la última, recientemente, culpa mía, perdí mi clave de acceso a mi compañía de seguros por internet (estoy muy contento con ella por eso no pongo nombre) y solicité que me enviaran una, esto no lo hacen por internet “por seguridad”, solo te la envían por correo certificado a tu casa –lo puedo llegar a entender-.

MutuaLo malo es que con esta cabeza que tengo al llegar la carta se me olvidó ir a recogerla y se la regresaron a mi aseguradora, inmediatamente me llamaron para confirmar mi dirección y decirme que me la mandarían por correo ordinario. entonces si me la mandan por correo ordinario ¿no era más fácil un correo electrónico con la clave? o es que acaso en todos los sitios que me registro en internet y me mandan la clave por mail ¿estoy desprotegido?

logo-vital No sé, no entiendo estas cosas muchas veces, lo de los bancos es otra, hay algunos más complicados que otros pero bueno allí incluso puedo ser más permisivo porque es algo más delicado, aunque reconozco que algunos se pasan. En fin que muchas veces tenemos las herramientas pero por poco compromiso de algunos o malas prácticas o políticas no podemos disfrutarlas a veces ni saber como funcionan.

martes 2 de junio de 2009

Kaspersky el antivirus para webmasters

clam_av_logo Ya sé que suena a publicidad barata pero realmente a las pruebas me remito. Hace un tiempo un usuario me comentó que su antivirus no había dejado cargar una de mis páginas porque tenía virus, inmediatamente recorrí a la herramienta de mi proveedor de hosting que es el ClamAV y este no detectó nada en el servidor.

agnitum_outpost_logo.thumbnail bitdefender_lorego En vista de esto tomé mi código fuente y en casa pues la verdad no detectó nada tampoco, utilizando Agnitum Outpost security suite 2009, BitDefender total Security en las versiones 2009 y 2010 (beta 2) y el AVG Network Edition v8.5.

kaspersky-logo-300x300Al no darme resultados le comenté al usuario que antivirus utilizaba y me dijo que el Kaspersky Internet Security 2009, yo como en casa tengo el windows 7 me descargué la technical preview de la nueva versión para este S.O., concretamente Kaspersky Anti-Virus for Windows 7 v.8.0.

En fin que luego de darle un repaso a mi máquina me detectó en el código fuente 2 virus: el Trojan-Downloader.JS.Iframe.ahv y el Trojan-Downloader.JS.Iframe.ali. Simultáneamente en los correos entrantes todos los que enviaba desde una plantilla también infectada me los bloqueaba bajo su búsqueda heurística detectando RichBody//Html2Rtf: detected modification of virus 'HEUR:Trojan.Script.Iframer'.

Una vez visto esto me puse manos a la obra y descubrí en estas páginas una inyección de código javascript la cual me redirigía img.plasticsuite.tl un conocido sitio bloqueado en varias listas de antivirus.

kaspersky-logo-736545La solución fue informar a mi proveedor de hosting, eliminar este código y sustituir los archivos por unos nuevos. De no se por el Kaspersky aún seguiría perdiendo visitas a mi sitio web y lo que es pero el prestigio que pueda llegar a alcanzar cualquier sitio si llegas a él y te informan de que puedes descargarte un virus.

sábado 30 de mayo de 2009

De Windows 7 a Office 2010

Desde la primera beta de Windows 7 he estado probándola y una de las cosas que me llamó más win7-feedbackla atención era el enlace en cada ventana para enviar un feedback a Microsoft, realmente me pareció una idea genial y de mucho marketing, muy Microsoft. 

Pues sobre la evolución de esta característica trata este artículo.

windows7installer Ya con las versiones RC y pre – RTM este enlace en Windows 7 se ha eliminado y me parece muy lógico pues ya la mayoría de feedback han sito emitidos y esta funcionalidad ya no es tan necesaria como en una beta. Pero la cosa no ha quedado allí, el otro día que comencé a testear el Office 2010 y para mi sorpresa ha evolucionado muchísimo esta característica, también hay que recalcar que Windows 7 era una beta y esta de office 14 es una technical preview pero el avance es genial.

fondo Mi asombro fue ver 2 iconos en la barra de tareas en los cuales podía enviar una sonrisa o algo en que estas en desacuerdo, las frases en inglés son “Send a smile” o “Send a frown”.

Pues esto no es todo sino que al enviarlo no es el típico formulario sino que añade la característica extra de que ellos te sacan una captura de pantalla y la puedes enviar junto con el comentario, se han echo eco de que una imagen vale más que mil palabras. Creo que sin duda es un paso de muchísimo avance en reportar mejoras hacia un proveedor de software, cuantas veces no le hemos dicho a nuestros usuarios “has una captura de pantalla y mándamela”.

Sin-título-16

En fin que le doy un 10 a Microsoft por originalidad.

Office%202010%20filtrado%201 Sobre Office 2010 me parece que sigue mucho la actual línea de una mescla entre Windows 7 + Windows Live, mucho diseño y sobre todo muy funcional. Hasta ahora muy contento con ambos y creo que ganaran muchos seguidores con este paquete de software junto con las nuevas herramientas que piensan lanzar.

viernes 29 de mayo de 2009

Cría fama y échate a dormir

Hace unos días nos dio por actualizar el servidor web a las últimas versiones de apache y php, de paso instalar un framework de .NET y descargar las actualizaciones pendientes de Windows Server 2003: Luego de hacerlo en el server de backup y probarlo pues decidimos pasarlo a producción, gran fallo por aquello empezó a cascar por todos lados con reinicios sorprendentes cada 30 minutos cuando la aplicación superaba un límite de memoria, y claro a quien le vamos a echar la culpa a Windows, porque claro tiene tan mala fama que que vamos a esperar que sea un software libre echo por no se quien lo que falle.

windows_server_system_logo Pues empezamos a tener errores de Windows con el httpd.exe y la librería php5ts.dll que es una especie de “valgo para todo” de PHP y como eran errores reportados por Windows pues pensamos que era incompatibilidad de la nueva versión de apache 2.2.11 o del php 5.2.8 con Windows server 2003, culpa de quien, pues ‘claro de Windows’, craso error. Pero bueno allí enfrascado buscamos todo tipo de soluciones por internet poniendo los escasísimos daos que nos daba el log de apache, una cosa como esta “Parent: child process exited with status 3221225477” y nos mosqueaba que ponía sqlsrv: entering minit, dijimos claro el driver de Microsoft para php y SQL server no sirve, otro craso error.

php-logo Luego de testear todo lo posible y aplicar miles de formulas de internet como modificar el path y poner la ruta de las extensiones de php también y la ruta de la carpeta bin de apache, copiar el php5ts.dll a system32 (nuestro grabe error). Pues decidimos quitar una a una las actualizaciones de Windows porque claro sería eso lo que funcionaba mal, y no amigos lo que está mal es la librería php5ts.dll de php 5.2.8 porque al regresar a la versión 5.2.1 y borrar (importante) la dll php5ts que habíamos copiado en system32 todo volvió a la normalidad, reinstalamos las actualizaciones de Windows server y todos felices.

En fin que desde un primer momento Windows nos avisó, nos dijo esto esta mal, esto no sirve, pero claro ¡hacerle caso a redmond! noooo por dios que crimen, y mira el crimen era de un software libre, o sea de PHP.

Quería aclarar que si no quitas la dll de system32 esta la carga antes que cualquier otra librería, por ejemplo si esta en system32 y luego repetida en aunque sea otra versión en la carpeta de php cogerá solo la de system32, por eso poníamos phpinfo() y nos mostraba otra versión que la instalada (instalada en la carpeta php estaba la 5.2.1 pero en system 32 estaba la 5.2.8) aunque pusiera los valores del php.ini correctos y el monitor de apache mostrara versión 5.2.1 y fueras por línea de comandos y ejecutaras php – version, el caso es que sigue cargando solo la de system32 y esta NO es necesario que esté allí.

servidor_sun2 Esta librería como veis puede fallar para cualquier servidor de bases de datos sql server, mysql, oracle o incluso access desde odbc, no influye la base de datos pues lo que está mal es la propia librería php5ts y hay que cambiar de versión de php, no vale con cambiar la librería o mover otras librerías como libmysql o libeay32 de lugar, todo que se quede donde está, tampoco hay que modificar el path ni mucho menos instalar php y apache en la raíz de la unidad, todo eso es inútil, solo cambiar la versión de php y seremos felices. Nosotros retornamos completamente de apache 2.2.11 y php 5..8 a apache 2.0.63 y php 5.2.1, lo de apache aun nos queda probar si podemos actualizar o no, realmente opino que no haya problemas.

Interacciones en php

Hoy he leído un artículo muy interesante en anieto2k con el título for reverso para grandes interacciones en javascript y me ha llamado mucho la atención la premisa y el resultado de este test que demuestra como puede afectar poner en un for una variable para comparar el recorrido de la variable, o sea que no es lo mismo for (var i=0;i<iterations;i++) que for (var i=iterations;i>0;i—)

Con tiempos en javascript asombrosos, por ejemplo para 50 mil repeticiones el primer ciclo tardaría 11 ms pero el segundo solo 2 ms y esto explicado muy brillantemente y cito:

El motivo de esta diferencia de tiempo, es debido a que increment() debe realizar una revisión del valor de iterations por cada pasada por el bucle. De esta forma, se realiza un acceso a memoria para solicitar el valor de la variable, algo que no pasa en decrement() que al compárala con 0, nos ahorramos dicha consulta.

Y me he planteado como sería hacer esto en javascript y además de que en vez de una variable fuera una función y los resultados son impresionantes llegándose a reducir el tiempo de un script en hasta un 80 % en el caso de una función personalizada. Los ejemplos son los siguiente:

Para el clásico for ($i=0;$i<$iteracciones;$i++) dónde $iteracciones = ‘50000’ o sea un número exacto se puede ahorrar entre un 2 y un 11 % del tiempo según la carga del server. En cambio si seguimos comparando con $iteracciones pero en vez de asignar esta a un número la asignamos por ejemplo $iteracciones = count($array) donde array contiene 550 elementos el ahorro puede llegar hasta el 13 %, no sé porque la diferencia supongo que se pueda achacar a carga del server o si a alguien se le ocurre otra idea, pero a mi particularmente no se me ocurre el porque.

Ya si utilizamos for ($i=0;$i<count($array);$i++) damos un salto de ahorro de entre un 62 y un 65 % del tiempo y ya si utilizamos una función propia pues será en tiempo que demore en ejecutarse la misma las n veces, por ello es que no es nunca recomendable utilizar funciones como método de comprobación de un for.

En fin seguiré reportando frikeses a medida que las vaya encontrando.