jQuery UK 2015 y el futuro de la web

Tuve la posibilidad de volver a asistir a la jQuery UK Conference en Oxford la semana pasada y nuevamente me cargué de energía positiva entre ideas, estándares en desarrollo y prototipos variopintos. Viene bien desconectar del trabajo, compartir ideas y refrescar tu mente con lo nuevo de las tecnologías web así como observar un poco cuál es el futuro de nuestro sector que algunos privilegiados están desarrollando.

En un momento en el que las smartphone apps se comen el mercado y la web parece que pierde tráfico por momentos, podemos culpar a la piratería o podemos adaptarnos al cambio y ofrecer algo mejor, y eso es lo que parece que pretende el sector web al que pertenezco. Los nuevos estándares web ayudan a incorporar más funcionalidades a las páginas, a mejorar su rendimiento, velocidad y usabilidad, a prevenir bugs y mejorar en consecuencia la experiencia de usuario, etc.

Continue reading jQuery UK 2015 y el futuro de la web

Iniciación a LINQ en ASP.Net

LinQ Microsoft
Tras echarle un primer vistazo a LINQ hace unos meses finalmente me he puesto a darle caña a esta nueva tecnología desarrollada por Microsoft y que pretende facilitarnos las tareas a los desarrolladores.

¿Qué es LINQ?

LinQ (Language Integrated Query) es una nueva librería que se integra en Visual Studio 2008 y permite gestionar colecciones de datos de forma más directa utilizando un lenguaje similar al de SQL. Las colecciones de datos pueden proceder de un simple array, una base de datos relacional, un listado de objetos en caché, un archivo XML u orígenes de datos de terceros.

¿Cómo se usa LINQ?

Lo mejor para ver esto es poner un ejemplo de cómo se hacían antes las cosas y cómo pueden hacerse ahora gracias a LINQ:

Continue reading Iniciación a LINQ en ASP.Net

¿Cómo funcionan el StartsWith, Contains o EndsWith?

En .Net tenemos una función llamada StartsWith para saber si un String comienza con una serie de caracteres determinados, en principio, yo me imagino que si dicha función determina que el primer carácter ya no coincide dejará de comparar el resto y devolverá un false, no obstante he querido comprobar si eso es cierto comparando cuánto tarda con un String con el que si empieza, con otro con el que no empieza o con uno con el que coincide a medias; y para que no haya dudas, un poco a lo bestia… metiéndolo en un bucle de 5 millones de pasadas.

Bucle Segundos
StartsWith No Coincidente 1,789597
StartsWith Casi Coincidente 2,186570
StartsWith Coincidente 0,081005

Me sorprende que el coincidente sea el que menos consuma, ¿significa eso que .Net sigue comparando el resto de caracteres? Pero lo que me deja sin explicación alguna es ver que el coincidente a medias es el que más tiempo tarda… podría pensar que este string es más largo que el anterior y tendría sentido, pero sería absurdo pensar que el algoritmo StartsWith sigue comparando caracteres aunque ya haya encontrado uno no coincidente… ¿No les enseñaron a usar el Exit While?

Continue reading ¿Cómo funcionan el StartsWith, Contains o EndsWith?

String Builder vs String en ASP.Net

Como ya dije hace unos días, ando algo liado últimamente, aunque también puede que sea que necesito respirar un poco de aire fresco y hacer cosas distintas, por lo que temporalmente voy a pasarme poco por el blog. No obstante os traigo un pequeño experimento que hice el otro día en ASP.Net, en donde a través del sistema de trazas comprobé la eficacia del StringBuilder de .Net.

¿Stringloqué? StringBuilder es una clase de .Net que representa un String como un objeto, se encuentra en System.Text y su principal particularidad consiste en un menor consumo de recursos a la hora de formar una cadena de texto (de ahí su nombre). StringBuilder reserva un buffer de memoria de forma que cuando vas a insertar nuevos caracteres mira si el buffer es suficiente, si lo es los mete, si no lo es, amplia el búffer y los mete.

Pero, ¿que hacía entonces el String normal? El String normal tiene varias formas de ser concatenado, .Concat, .Join, “+” y “&”. Cada una de ellas distinta pero en principio todas iguales, la idea, y a menos que alguien me corrija y me saque del error, es que crea un nuevo objeto a partir de los ya existentes (un nuevo string), lo que parece consumir bastante mas RAM además de tiempo de proceso.

Yo, por curiosidá de esa que sólo un frikie informático tiene y por culpa de la cual nos consideran un reducto mutante de la sociedad (nosotros nos creemos pr0s) decidí generar un algoritmo facilón y activar el sistema de trazas para realizar carreras… ¿Queréis saber quien gana?

Continue reading String Builder vs String en ASP.Net

URLs relativas y Rewrite en ASP.Net

Mejorando el algoritmo de rewriting en sacaCasa.com me he encontrado con un viejo conocido un tanto problemático pero que en esta ocasión he sido capaz de tumbar por K.O., las URLs relativas cuando colocas una URL falsa simulando un directorio.

Pongamos que tenemos la siguiente url virtual: www.misupermercado.com/frutas/fresas/ cuando en realidad se dirige a www.misupermercado.com/mostrador.aspx?cat=2&prod=1. La ruta real se encuentra en el directorio raíz, mientras que la mostrada en el explorador muestra hasta 2 subdirectorios, con el rewrite la redirección no supone problema, excepto si dentro de esa misma página existen llamadas a otros objetos con rutas relativas. Me explico:

Pongamos que por ejemplo hacemos una llamada a una imagen, para que el proyecto sea portable la ruta de la imagen será algo parecido a esto: “./imagenes/fresas.jpg“. Pues eso mismo y a causa del rewrite se convertirá en: “www.misupermercado.com/frutas/fresas/imagenes/fresas.jpg“; y claro, en esa ruta no existe tal imagen…

¿Cómo evitarlo?

Continue reading URLs relativas y Rewrite en ASP.Net