JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Detener un Timer de ASP.NET AJAX

Los temporizadores (Timer) de las extensiones de AJAX para ASP.NET son muy útiles. Nos permiten ejecutar una determinada tarea cada cierto tiempo, provocando postbacks de la página  (tanto completos, como parciales) en intervalos regulares. Un único Timer colocado en la página puede conseguir que se refresquen todos los UpdatePanels disponibles o cada uno de manera individual. Lo habitual es colocarlos en la página y olvidarnos de ellos. Pero ¿qué pasa si queremos poder pararlos y activarlos a voluntad? La cosa tiene más complicación de la que parece a simple vista. Lo primero que se nos ocurre a cualquiera es que, dado que tiene una propiedad Enabled para activarlo y desactivarlo bastará con establecerla en False para conseguir el efecto deseado. Si lo hacemos desde un postback asíncrono enviado desde dentro de un UpdatePanel, ni se notará en la página, ¿no?. Lo malo de esta idea es que, simplemente, no funciona. El motivo es que en un refresco parcial de página, aunque s... [Más]

Compartición de recursos entre dominios: el estándar de la W3C

En mis tres anteriores post me centré en JSONP, la solución soportada actualmente por cualquier navegador para hacer llamadas a servicios JSON ubicados en dominios diferentes al actual (ver índice al final de este post). Ahora, tras quince dís sin tiempo para nada (con Codecamp y TTT para Microsoft por el medio), por fin saco un par de horitas para escribir esta últma parte de la serie, dedicada a los estándares. Las limitaciones del objeto XmlHttpRequest a la hora de hacer peticiones desde el navegador a páginas y recursos ubicados en otros dominios son de sobra conocidas. Ello ha hecho que los programadores busquen atajos para conseguir esta funcionalidad y saltarse esta barrera. Hasta ahora hemos visto cómo JSONP nos permite conseguirlo gracias al uso de la etiqueta <script>, y cómo se le puede sacar partido en muchas ocasiones. No obstante esta técnica tiene bastantes limitaciones: · Sólo ... [Más]

JSONP (yIII): Cuestiones de seguridad y ASP.NET rompiendo la compatibilidad en 3.5

En mis dos anteriores post (busca los enlaces al final de este post y leetelos antes si no lo has hecho) he estado hablando sobre la técnica de JSONP para consumo remoto de datos JSON entre dominios, algo a priori prohibido por el modelo de seguridad del navegador. Anteriormente comentaba que JSONP podría tener ciertos problemas de seguridad, y que para evitarlos en ASP.NET 3.5 se habían introducido cambios para paliarlos que rompían la compatibilidad con versiones anteriores. Voy a aclararlo ahora. El problema de seguridad tiene que ver con la obtención de acceso no autorizado a información privada que se comparte con JSON. Una de las técnicas habituales de securizar el acceso a los servicios, consiste en crear cookies encriptadas con una validez temporal limitada y asociadas a una sesión concreta. Esta técnica se utiliza de manera mayoritaria en los sitios Web actuales (como Facebook, Windows Live, o, como ya hemos visto, en la propia seguridad de ASP.NET). El problema de esta técn... [Más]

JSONP: llamadas AJAX a servidores remotos

Como todo el mundo sabe, una de las medidas de seguridad más acertadas de los navegadores es la del aislamiento de los dominios para proteger la privacidad. Este aislamiento impide que, por defecto, se puedan transferir cookies entre dominios, que fallen los scripts que tratan de afectar a marcos con páginas que están en dominios diferentes y, por supuesto, tampoco permite hacer peticiones desde código JavaScript a servidores que están en dominios diferentes a la actual. Y aún así existen cantidad de vulnerabilidades (Cross Site Scripting, Cross Site Request Forgery, Cross Zone Scripting, etc...) relacionadas con robo de información y ataques distribuidos que están basadas en explotar código de JavaScript en aplicaciones mal construidas. Al final, cómo esté escrito el código de una aplicación web desde el punto de vista de la seguridad es más importante que todos los cortafuegos y otras medidas "de protocolo" que puedas incluir. Una de las implicaciones de este aislamiento entre ... [Más]

¡Mi libro de ASP.NET 4.0 gratis en Internet!

Hoy, coincidiendo con el evento ReMIX en Madrid, en el que Microsoft está regalando mi nuevo libro "Tecnologías ASP.NET 4.0 (saltando desde la versión 2.0)", hemos puesto a disposición de todo el mundo este mismo libro gratuitamente en formato electrónico. Así que puedes leerlo completo on-line y, si te gusta, comprarlo en papel a la editorial. Ya tienes un botón directo de compra a la derecha de la página del libro. Tenemos DISTRIBUCIÓN EN TODO EL MUNDO, no sólo en España, así que no hay disculpa aunque estés en Alemania, jeje El libro estará disponible en Scribd para su lectura por un tiempo limitado, así que aprovecha, leelo ahora y ¡díselo a tus amigos! Este es el enlace al libro: http://www.scribd.com/doc/20154009/Tecnologias-ASPNET-40-saltando-desde-la-version-20 Esta disponible desde hoy por la mañana, pero se lo hemos comunicado en privado antes que a nadie a nuestros fans de la página de Facebook de campusMVP. Es una de las muchas ventajas de ser fan en Facebook, así que ... [Más]

Cómo fijar el puerto del servidor Web de desarrollo

A partir de Visual Studio 2005 la vida se simplificó bastante para los dessarrolladores Web con tecnologías Microsoft. No sólo porque la tecnología estuviera completamente remodelada y ASP.NET 2.0 se convirtiera en la herramienta productiva y potente que es hoy en día. En este caso me estoy refiriendo a la inclusión del servidor Web de desarrollo (Cassini para los amigos) en el propio entorno de Visual Studio. Antes de esto, mover una solución entre equipos era un dolor, sobre todo si tenías varios proyectos Web contenidos dentro de ésta. El motivo era que los proyectos Web estaban atados a la instancia local de Internet Information Server y por lo tanto cuando cambiabas de equipo la solución tenías que configurar cada proyecto en IIS, en el puerto o subcarpeta correctos. Un "peñazo", vamos. Con VS2005 y superiores el servidor de desarrollo sólo puede atender peticiones locales y se lanza automáticamente para depurar y probar el proyecto. Al hacerlo se asigna un puerto aleatorio en e... [Más]

Herramientas de prototipado de aplicaciones Web

Algo muy habitual en los equipos de desarrollo Web es el dibujar maquetas de las pantallas y sus elementos, de forma que podamos transmitir mejor la idea de lo que queremos a los programadores que lo van a implementar. Esto es válido también para los clientes, que a veces no se hacen una idea de lo que les estamos contando si no lo ven dibujado. Este tipo de croquis o prototipos pintados a mano de las Webs (llamados generalmente wireframes) son muy útiles, pero hacerlos realmente a mano es problemático porque no suelen quedar muy bien y luego muchas veces ni siquiera se hacen. Una herramienta especializada viene de maravilla para hacerlo mejor, más rápido y que quede de manera presentable. A continuación pongo una lista de productos, tanto gratuitos como comerciales, que sirven para hacer esto y que están muy bien: iPlotz Protoshare Justinmind Balsamiq: este es de pago pero me gusta especialmente gliffy Smartdraw Jumpchart Pencil Axure Si trabajas con ... [Más]

Cambios importantes en movilidad para ASP.NET 4.0

Hoy he sabido, directamente a través de la gente de producto de Microsoft, que han realizado unos cuantos cambios de cierto calado a la parte de soporte para dispositivos móviles en ASP.NET 4.0. Estos cambios se verán cuando salga la versión definitiva pero ahora no están disponibles en la Beta de Visual Studio 2010. 1.- Han convertido en obsoletas todas las clases de System.Web.Mobile, es decir, todo el soporte de controles móviles para WAP que existían en versiones anteriores de ASP.NET. Con obsoletas no quiero decir que dejen de funcionar o de soportarse, simplemente que han sido marcadas con el atributo Obsolete y que generarán una advertencia cuando compiles apliaciones que las usen. Así que ojo si usas el compilador con la opción de que las advertencias se traten como errores, porque no te compilarán. Simplemente ahora no se recomienda su uso. 2.- Han modificado sustancialmente los archivos de definición de navegadores (archivos .browser) tanto para HttpBrowserCapabilities... [Más]

TRUCO: Cómo hacer un IFRAME que ocupe el 100% de la altura

Hoy he estado perdiendo un buen rato con esta tontería. Y es que parece mentira, pero si metes un <iframe> en tu página y le estableces sus propiedades width y height al 100% para que ocupen toda la página sólo te hace caso el ancho. El alto no funciona, da igual que lo pongas en sus atributos o en sus estilos CSS. No hace ni caso :-( Tras romperme la cabeza unr ato he estado buscando en Internet y hay soluciones para todos los gustos, la mayoría de las cuales no funcionan. Además si funcionan en Internet Explorer no funcionan en Firefox o al revés. Es un verdadero peñazo. Al final la solución pasa por establecer una serie de atributos para algunos tags de la página, así: <style type="text/css">    html, body, div, iframe { margin:0; padding:0; height:100%; }    iframe { display:block; width:100%; border:none; }</style> Si no haces esto no hay forma de que pille el alto completo de la página. Así que ya lo sabes. Espero que esto... [Más]

La misteriosa página que se envía dos veces

Este es uno de los problemas/bugs más raros con los que me he topado en años, y puede llegar a ser desesperante. Si has llegado aquí a través de una búsqueda de Google porque tienes el problema que indico en el título del post, estoy seguro de que me vas a dejar una nota de agradecimiento por el consejo :-) Hace unos días hicimos una nueva plantilla estética para un cliente de nuestra plataforma de e-Learning, SELF. La plataforma tiene un sistema muy potente de plantillas estéticas que permite personalizar mucho la estética y parte de la funcionalidad de la interfaz. Se pueden asociar plantillas a los diferentes campus (entornos cerrados de formación) y también se pueden asignar muchas plantillas/fachadas diferentes a cada campus de forma que se pueda acceder con aspectos diferentes para cada cliente al mismo campus a través de diferentes URLs o directorios virtuales. Una de estas plantillas, preciosa por cierto, provocaba un extraño efecto sobre todas y cada una de las páginas ... [Más]