Blog de Francisco Velázquez

otro blog personal

HttpWebRequest Timeout in HTTP Get

leave a comment »

En estos últimos días he tenido un problema bastante curioso. Era una aplicación multi-hilo (50 hilos simultáneos de ejecución) que realizaba peticiones HTTP Get a distintos servidores. El problema es que se presentaban bastante timeouts en las peticiones HTTP y sin embargo el servidor estaba en un correcto funcionamiento.

El código era algo como esto:


public static string Get2(string uri)
{
    string responseData = string.Empty;
    WebRequest request = WebRequest.Create(uri) as HttpWebRequest;
    request.Method = "GET";
    request.Timeout = 35000;
    using(HttpWebResponse response = (HttpWebResponse)request.GetResponse() as HttpWebResponse)
    {
        using(Stream dataStream = response.GetResponseStream ())
        {
            using(StreamReader reader = new StreamReader (dataStream))
            {
                responseData = reader.ReadToEnd();
            }
        }
    }
    return responseData;
}

Tras buscar, encontré bastantes links y este bastante interesante.

El problema era que .NET sólo permite 2 conexiones HTTP a cada sitio, tal y como establece el el protocolo HTTP1.1. Para aumentar este número, lo único que hace falta es incluir esta configuración en el app.config o web.config.


<connectionManagement>
	  <addaddress="*"maxconnection="40"/>
</connectionManagement>

Written by fravelgue

June 30, 2009 at 1:17 pm

Consejos para evitar bloqueos e interbloqueos

leave a comment »

Interesante post con unas conclusiones que merecen tenerse en cuenta:

  • Nunca bloquees por un objeto que no sea estático:

Eso solo serviría para proteger los miembros de esa instancia concreta, y rara vez es esto lo que deseamos con un lock.

  • Nunca hagas un lock sobre un objeto publico:

Como se explico previamente, el lock sobre el objeto publico significa que otra parte de la aplicación puede hacer un lock sobre el mismo objeto y ocasionar un interbloqueo.

  • Sobre todo, la mas importante de todas… Nunca hagas un lock sobre un System.RuntimeType o System.Type:

Ya sabéis, si leísteis la parte teórica, que estos tipos son Marshal-by-bleed, lo que significa que se comparten entre dominios de aplicación diferentes. El riesgo de interbloqueo es enorme, y no puedo pensar en un solo escenario en que tenga sentido hacer ese bloqueo.

Written by fravelgue

June 30, 2009 at 11:53 am

Posted in develpment

Tagged with , ,

Firefox plugin para Desarrollo

leave a comment »

Para desarrollo web.

- Firebug.
- Web Developer.
- Yslow.
- Page Speed.

Para desarrollo web móvil.

- UserAgent Switcher.
- wmlbrowser.
- xHtml Mobile Profile.

Para HTTP.

- Live Http Headers.
- Tamper Data.

Written by fravelgue

June 4, 2009 at 12:42 pm

W3C Device API

leave a comment »

La w3c comienza el desarrollo de un borrador, Device API, para definir una serie de APIs que se ejecutarían en el cliente y permitirían acceder a determinada funcionalidad del dispositivo, como el calendario, los contactos, la cámara (esperemos que también la localización) y así como definir un marco de seguridad.

Muy en la línea y un paso atrás que la iniciativa Bondi, esperemos que de un lado u otro al final los desarrolladores podemos acceder a esta funcionalidad desde el navegador. Si no aparece una solución pronto, veremos como se imponen las funciones de algún navegador específico, como el de iphone o Android.

Written by fravelgue

June 2, 2009 at 10:05 pm

Posted in mobile web

Tagged with , , ,

Estadísticas de admob html vs xhtml MP

leave a comment »

Merece la pena comentar las estadísticas de admob, en las cuales (además de en multitud de sitios) se sobresalta  que el iphone supera con creces a los demás competidores.

april-2009-metrics-smartphone-share

Sin embargo, en mi opinión esas gráficas son relativamente parciales. Es muy normal que desde otros dispositivos (e incluso el iphone) se accedan a páginas específicas para móviles (ya sean wml o xhtml mp) que ofrecen unos tiempos de respuesta muchos más rápidos. Además de esto se está desechando el tráfico que procede de determinadas aplicaciones o widgets que es bastante usado en determinados terminales ya que se hace un uso más eficiente de la conexión.

Written by fravelgue

June 1, 2009 at 9:07 pm

Posted in mobile

Tagged with , , ,

Push email con Funambol

leave a comment »

Con las herramientas cliente/servidor de Funambol, podemos tener email push y sincronización en cualquier dispositivo móvil. Además poseen una aplicación web, myFunambol, para no tener que realizar la instalación de servidor.

Además en el siguiente blog (en el que también explican como usar el navegador de la blackberry sin BIS), recomiendan el siguiente plugin que integra el correo en la blackberry. Parece una mejor solución que usar Shangmail con sus servidores alojados en China.

Written by fravelgue

June 1, 2009 at 8:56 pm

.Net Profilers

leave a comment »

Un pequeño recordatorio con los profilers de .net que he estado probando.

- nprof (y en google code) bastante antiguo y con algunos cuelgues, pero opensource.

- dotTrace Profiler, sin duda alguna el mejor que probé.

- Profile Sharp, también opensource.

- EQATEC Profiler.

Written by fravelgue

May 27, 2009 at 7:31 pm

Posted in develpment

Tagged with , , , ,

Protocol Buffers en C#

leave a comment »

Leyendo el siempre interesante blog de Ayende, descubro la manera en la google serializa sus datos: Protocol Buffers, y su implementación por Jon Sket en c#.

Written by fravelgue

May 12, 2009 at 4:19 pm

Problema en Thunderbird desaparecen adjuntos

leave a comment »

A veces,  en thunderbird correos que poseen varios archivos adjuntos desaparecen y el correo se muestra de forma que se observa que está corrupto. Para ello lo único que tenemos que hacer es reconstruir el indice de la carpeta. Así que, pulsamos botón derecho sobre la carpeta : Propiedades : Reconstruir índice.

Written by fravelgue

April 20, 2009 at 11:38 am

Posted in util

Tagged with , , , , ,

Las nuevas características de firefox

leave a comment »

Tengo que decir que estoy maravillado con el blog de Aza Raskin de Mozilla, sus últimos posts me están encantando y sobre todo viendo como será el futuro Firefox. Estoy deseando tener a Ubiquity en mi barra de direcciones (e integrarlo con lanzadores de aplicaciones como Google Desktop o Launchy). Además de esto, me parece muy acertado como el comando nueva pestaña está evolucionando, aunque esto es algo que comenzó con Chrome y que parece que todos los navegadores comenzarán a imitar y ampliar.

Algo que no termino de ver, al menos por la similitud con iTunes, es como se quiere cambiar la manera de acceder a la información sustituyendo las pestañas (aunque estoy de acuerdo que tener 20 pestañas abiertas no es muy útil). Creo que hay que buscar nuevos medios para interactuar con toda la información que nos brinda el navegador e incluso el desarrollo de agentes para que automatizar el acceso a la información.

Desde luego que Firefox no se duerme en los laureles frente al nuevo Internet Explorer 8.1.

Written by fravelgue

April 17, 2009 at 3:43 pm

Posted in web

Tagged with , ,