Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
Mostrando entradas con la etiqueta recomendaciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta recomendaciones. Mostrar todas las entradas
jueves, 28 de diciembre de 2017
Aunque por aquellos tiempos ya llevaba bastante tiempo enganchado al desarrollo de software, fue en el año 1992 cuando empecé mi andadura profesional en este mundillo, y he de decir que estos más de veinticinco años han dado para mucho. Poco más o menos, creo que he pasado por todos los roles existentes en el mundo del software, en todas las modalidades laborales posibles: programador, analista, consultor, formador, coordinador de equipos de desarrollo, CTO, empleado, empresario, freelance

Aparte de muchas alegrías y algún que otro disgusto, lo que tengo claro es que esta trayectoria me ha dado una visión bastante amplia de cómo funciona el mundo del desarrollo de software y las personas que trabajamos en él.

Winner Como guardarme estos conocimientos me parecía demasiado egoísta, he decidido compartir con todos vosotros los que considero que son los diecisiete consejos definitivos que debéis seguir si queréis triunfar en el mundo del desarrollo de software.

Por lo que he ido aprendiendo estos años, seguir estas reglas os llevará a conservar indefinidamente vuestros empleos o clientes, aumentaréis vuestro valor en el mercado, mejoraréis salarios y vuestro grado de felicidad y satisfacción personal crecerá hasta límites insospechados.

He de decir que, antes de compartirlos con todos vosotros, varias personas ya los han seguido y sus vidas profesionales han mejorado considerablemente. Por ejemplo, Juan M. R. trabajaba como programador junior en una conocida cárnica hace 6 meses y hoy dirige el equipo técnico en una startup en San Francisco. También, Nacho G. L. pudo firmar hace poco el contrato fijo con el que soñaba, incluso con un aumento de sueldo. Rafael P. G. era un programador del montón y ahora es un reputado project manager por el que se pelean las mejores empresas del mundo.
“Sin los grandes consejos de José María,
mi vida como desarrollador seguiría siendo un infierno”
– Ricardo M. C., 2017
Podéis ser los próximos en dar el salto, sólo depende de vosotros.
lunes, 13 de enero de 2014
The best of Variable Not FoundComo viene siendo habitual, me reservo el primer post del año para transmitiros mis mejores deseos para es año que acabamos de estrenar. Espero que sea simplemente brutal, en el buen sentido, claro ;-)

Y siguiendo la tradición, aprovecharemos para echar un vistazo a los contenidos más visitados durante el pasado año. Esto nos puede dar una idea de por dónde andan los intereses de los visitantes y, de camino, dar una segunda oportunidad a los artículos que os perdisteis en su momento.
martes, 16 de abril de 2013
Muchos ya sabréis que hace unos meses publicaron desde Microsoft un póster que describe muy detalladamente el ciclo de vida de una petición en ASP.NET Web API. En su momento lo referencié desde una entrada de la serie enlaces interesantes, pero últimamente he podido comprobar que aún no es lo suficientemente conocido, y desde luego bien vale la pena dedicarle un post en exclusiva.

ASP.NET Web API message lifecycle
Se trata de un documento fundamental para comprender qué es lo que ocurre desde que llega al servidor una petición a un servicio Web API hasta que la respuesta es enviada de vuelta al cliente. En él encontraréis reflejados aspectos tan interesantes como la ubicación de los delegating handlers en el pipeline, la creación de controladores, selección de acciones, filtros de acción, binding, media type formatters, y otros muchos, conociendo qué puntos del framework son extensibles por diseño.

Desde el sitio de descargas de Microsoft podéis obtenerlo en formato PDF.

Realmente imprescindible.

Publicado en Variable not found.
miércoles, 9 de enero de 2013
The best of 2012Una vez más, aprovecho este primer post del año para desearos a todos que 2013 sea feliz, próspero, y que se cumplan todos vuestros sueños :-)

Y mientras esto ocurre, como manda la tradición, vamos a comentar brevemente cuáles son los artículos más visitados del año que acabamos de cerrar. Al igual que otras veces, distinguiremos entre los posts escritos en 2012 y los publicados otros años, clásicos de Variable not found, que siguen atrayendo gran cantidad de lectores al blog.

Cosecha de 2012

Además de la raíz del sitio, que siempre es la URL más visitada (lo cual no sé si es bueno o malo, todo hay que decirlo ;-)), el post que más visitas atrajo durante 2012 fue “Pasar variables de script a un Url.Action() o Html.ActionLink()”, un artículo publicado en febrero donde se explicaban algunas posibilidades que tenemos a la hora de crear rutas dependientes de parámetros disponibles exclusivamente en cliente, en tiempo de script. Ha sido una grata sorpresa el que un post tan técnico haya sido el más visitado :–)

A continuación, la recopilación de “Las 20 mejores tiras cómicas sobre desarrollo de software”, hilarantes muestras de genialidad extraídas a partir de las votaciones y sugerencias de miles de usuarios de Stackoverflow.

Le sigue de cerca el post que daba comienzo a la serie Introducción a SignalR, el maravilloso framework de programación de sistemas multiusuario en tiempo real que tanto va a dar que hablar en los próximos meses.

101 nuevas citas célebres del mundo de la informática (¡y van 404!)”, la continuación de la exitosa serie, también está entre las páginas más vistas del año, como no podía ser de otra forma. Por supuesto, ya he comenzado a recopilar la siguiente tanda ;-)

Continuamos con otro inicio de serie “Knockout (I): pongamos orden en el lado cliente”, que demuestra el interés que está despertando este marco de trabajo MVVM para Javascript, que no es sino una clara prueba de la necesidad que tenemos de ordenar el caos en que se convierte la capa cliente en sistema medianamente complejos.

Como somos bastante curiosos, tampoco podía faltar aquí la respuesta a una pregunta que se ha hecho la humanidad durante décadas: “¿Por qué separamos los directorios con la barra invertida?“. ¿Todavía no lo sabes?

Seguimos con un post que anunciaba la disponibilidad de la flamante versión beta de ASP.NET MVC 4, a la vez que describíamos las principales novedades que venían de su mano: “¡ASP.NET MVC 4 Beta disponible!”.

De nuevo el humor tiene su hueco en la lista de artículos más visitados con la aparición de “Llamemos a las cosas por su nombre”, una relación de fórmulas geek para arremeter contra los patosos usuarios de nuestras aplicaciones.

También destaca “TypeScript: un primer vistazo”, donde se realizaba un rápido recorrido sobre los aspectos más destacables de la propuesta de Microsoft para mejorar la vida de los desarrolladores Javascript.

Y por último, un post que ha entrado con mucha fuerza a última hora, el anuncio de los nuevos servicios de computación distribuida móvil con el que podemos ganar bastante dinerillo: “Vende a la nube capacidad de proceso de tu móvil”. San Inocencio me perdone, pero no puedo evitarlo ;-D

Cosecha de 2011 y anteriores

Artículos escritos en años anteriores, muchos de ellos destacados miembros de lo que suelo denominar “clásicos de Variable Not Found”, siguen atrayendo un gran número de visitas al blog.

El primero en la lista, por segundo año consecutivo, es el artículo “ASP.NET MVC 2: Quince cuestiones que deberías conocer”, que recoge algunas de las preguntas realmente básicas sobre el framework y, a pesar de referirse a la segunda versión, sigue despertando interés de los lectores. Ya el año pasado me propuse actualizarlo a la versión 4 y por razones que no quiero nombrar postergación, pereza, desidia, ignominia, alevosía no lo hice. Pero de 2013 no pasa ;-)

Le sigue un clasicazo del blog, el inicio de la saga que aún hoy perdura: “101 citas célebres del mundo de la informática”. Este post inaugural fue traducido de una publicación original en inglés (con permiso de su autor, por supuesto), y me divirtió tanto que comencé a recopilar citas por mi cuenta, lo que ha dado como para cinco posts de la serie a lo largo de los años.

La popularización de MVC y la tradicional falta de alternativas oficiales para la implementación de rejillas de datos Ajax (grids, grillas,…) hacen que aún en la actualidad siga siendo muy consultado el post “jqGrid: Grids espectaculares para ASP.NET MVC, paso a paso”, un artículo de 2009 que mostraba cómo utilizar este conocido plugin de jQuery para la visualización y edición de datos.

A continuación encontramos un post de 2008, “32 técnicas de producción de ideas”, un resumen de técnicas de producción de ideas extraídas de la web Neuronilla, que supongo que por obra y gracia del SEO parece estar bastante bien posicionado y atrae bastantes visitantes.

Una prueba más de la importancia de la implementación de rejillas de datos es el hecho de encontrar de nuevo un post sobre el tema, “WebGrid en MVC 3, paso a paso”, que de hecho era el inicio de una serie de artículos bastante leídos también.

Evitar el postback al pulsar un botón en ASP.Net” es un artículo de 2007(!) que, según comentaba un lector, sigue estando aún vivo, y con bastantes lecturas a lo largo del año. Una alegría, teniendo en cuenta el ritmo al que avanzan las tecnologías y la rapidez con la que los contenidos quedan obsoletos.

Y, ¿quién dijo que Windows XP o Vista estaban ya muertos? Por suerte o por desgracia no es así, y prueba de ello es que entre los diez artículos más vistos en 2012 se encuentra un artículo del año 2010 llamado “Acceder al contenido de un .vhd desde Windows XP/Vista”. Increíble pero cierto.

A continuación, el imperdible “El Tao de la Programación”, una maravilla escrita en 1987 por Geoffrey James, quien muy amablemente me permitió traducir y publicar en el blog esta pieza imprescindible de la literatura friki. Ya estás tardando en leerlo, si aún no lo has hecho ;-)

Seguidamente encontramos otros dos clásicos muy solicitados por los lectores, “Edición elegante de fechas con jQuery Datepicker y MVC, paso a paso” y “Desplegables en cascada con ASP.NET MVC y jQuery”, que a pesar de su antigüedad siguen siendo relativamente válidos. A ver si este año me animo y publico versiones actualizadas de los mismos.

¡Y eso es todo! Espero que esta recopilación os sea de utilidad para descubrir posts que en su momento os perdisteis o para redescubrir alguno que os llamara la atención cuando se publicó.

Seguimos viéndonos por aquí :-)

Publicado en Variable Not Found.
martes, 23 de octubre de 2012
Fundamentos de JavaScript y AJAX para desarrolladores y diseñadores webDurante los últimos días he tenido ocasión de disfrutar de la lectura del libroFundamentos de JavaScript y AJAX para desarrolladores y diseñadores web”, y no quería dejar de comentarlo por aquí.

Se trata de la obra más reciente del maestro José Manuel Alarcón, nacida con un ambicioso objetivo: ser útil tanto para desarrolladores  experimentados que buscan reforzar y ampliar sus conocimientos en Javascript, como para aquellos que desean comenzar trabajar con el lenguaje sin haber tenido contacto previo con el mismo.

Y desde luego, nadie mejor que el autor para conseguirlo: dilatada y reconocida experiencia en el mundo web, en Javascript (publicó su primer libro sobre el tema hace más de diez años), y una forma de escribir muy amena y cercana que hace que las trescientas ochenta páginas del libro se lean con mucha facilidad.

El índice completo podéis consultarlo en Scribd, pero, a grandes rasgos, el libro está dividido en los siguientes bloques:
  • Una amplia introducción al lenguaje, en cuyos primeros siete primeros capítulos se comienza a presentar Javascript desde cero, introduciendo ordenada y progresivamente conceptos como las variables, tipos de datos, funciones, operadores, estructuras de control de flujo, uso de matrices, textos, fechas o temporizadores, siempre usando ejemplos simples y directos.

    A pesar de que esta primera parte se destina sobre todo a los programadores noveles, me la he zampado por completo y puedo asegurar que he aprendido bastante con ella.

    El capítulo 8, que cerraría este bloque, cambia el ritmo de forma considerable entrando en aspectos avanzados, como la definición de objetos, constructores, el uso del siempre intrigante “this”, la herencia basada en prototipos, closures, y ocultación de miembros, entre otros interesantes asuntos.
          
  • Una vez conocido el lenguaje Javascript, a continuación se nos muestra cómo utilizarlo en el contexto de un navegador, realizando un completo recorrido por el DOM y las técnicas que nos permiten manipularlo de forma directa, sin usar jQuery ni frameworks similares. Aprenderemos a localizar elementos de la página, recorrerlos, realizar consultas dinámicas, y a modificar el contenido de la página en tiempo de ejecución.

    También se estudia en profundidad el tratamiento de eventos, su funcionamiento interno, los distintos modelos soportados por los navegadores, y cómo implementarlos de forma eficiente, por supuesto sin necesidad de emplear marcos de trabajo externos. Es, además, una referencia completísima de los eventos disponibles para cada tipo de elemento y la forma de procesarlos sin caer en particularidades de navegadores concretos.

    Para cerrar este bloque, se dedica un capítulo exclusivamente a hablar de Ajax, el uso del objeto XMLHttpRequest para enviar y recibir información  y los problemas más habituales que surgen cuando usamos esta técnica de intercambio de datos entre cliente y servidor. También se describen soluciones para la comunicación cross-site como JSONP (JSON with Padding), estudiado muy en profundidad, y CORS (Cross-Origin Resource Sharing).
     
  • Un último bloque muy orientado a la práctica, en el que se describen errores más comunes y la forma de trazar y depurar aplicaciones Javascript utilizando herramientas integradas en los navegadores, donde encontramos mecanismos similares a los que estamos acostumbrados en entornos de desarrollo como logs, profilers o breakpoints.
     
  • Por último, se dedica un capítulo en exclusiva para ver cómo lidiar con las misteriosas expresiones regulares, donde se demuestra que con la base adecuada no son tan fieras como parecen ;-)
Todos estos contenidos vienen, además, acompañados de innumerables ejemplos, trucos, consejos prácticos,  referencias históricas y anécdotas mediante las cuales se entienden los motivos de algunas de las “cosas raras” que vemos hoy en día al programar con Javascript, y que hacen aún más amena la lectura.

Con toda seguridad, un must have para todos los que aún no conocen Javascript y desean entrar por la puerta grande, y también para todos los que ya habíamos entrado hace años pero nos hemos ido dejando algunos detalles por el camino ;-)

Publicado en Variable not found.
martes, 3 de enero de 2012
image
Las tradiciones están para cumplirlas. Y casi desde el principio de los tiempos, el primer artículo del año está reservado a hacer un análisis retrospectivo y ver qué posts son los que más han llamado vuestra atención durante los 365 días que hemos dejado atrás, así que ya sabéis lo que toca ahora ;-)

Pero antes de nada, aprovechando la inauguración oficial del 2012 en el blog, desearos a todos un feliz año 2012, y que podáis disfrutarlo con salud, buena compañía, y prosperidad.

martes, 11 de enero de 2011
Uno de los libros que recuerdo haber leído con más entusiasmo en los últimos años fue el primero de Krasis Press sobre Entity Framework (bueno, y de hecho era el primero a nivel mundial por entonces en tratar este tema). Ya entonces comenté por aquí lo que me pareció, una lectura de lo más recomendable para sumergirse en esta tecnología.

ADO.NET Entity Framework 4.0. Aplicaciones y servicios centrados en datosPor esta razón esperaba impaciente la actualización del mismo a la versión 4 de Entity Framework, que durante estas navidades he tenido oportunidad de devorar. Y de nuevo de la mano de un figura como Unai Zorrilla y sus colaboradores (Yamil Herández, César de la Torre y Pablo Peláez), he disfrutado de lo lindo.

Lo primero que me ha llamado la atención es que, aunque se podía esperar lo contrario, se trata de un libro nuevo. Es decir, no es el anterior con ligeras indicaciones sobre los cambios introducidos en la última versión del marco de entidades, sino que ha sido reescrito integrando en sus contenidos las novedades, lo que hace su lectura más natural, y sobre todo para los que aún no han trabajado con esta tecnología o no leyeron el libro anterior.

Eso sí, como introduce José Manuel Alarcón (director de Krasis y MVP en ASP.NET) en su prólogo, “no se trata de un libro de recetillas”; en él encontraremos desde trucos y aspectos eminentemente prácticos hasta fundamentos del funcionamiento interno de la tecnología que nos permitirán tener un mayor control sobre ella.

Tampoco es un libro para principiantes: tanto la temática como la forma de tratarla hacen necesario que el lector disponga de ciertos conocimientos sobre bases de datos, programación orientada a objetos, arquitecturas y lenguajes de programación para la plataforma .NET.

El contenido está estructurado en cinco capítulos principales:
  • El primer capítulo nos introduce en el concepto de modelos de dominio, y presenta Entity Framework y sus distintos componentes.
  • A continuación se profundiza en el Entity Data Model y el diseño de modelos, desde mapeos básicos hasta conceptos algo más avanzados, como la herencia, table splitting, o las model defined functions.
  • El tercer capítulo nos presentará Entity Client, el proveedor de datos ADO.NET específico para trabajar con modelos conceptuales, y nos mostrará cómo trabajar directamente con él para consultar información.
  • Seguidamente, ascendemos un nivel más en las capas de abstracciones que Entity Framework establece sobre el almacén de datos, pasando a estudiar Object Services y LINQ to Entities, que de forma conjunta nos ofrecen ya las funcionalidades que nos permiten trabajar directamente con objetos del modelo, abstrayéndonos del motor subyacente a la hora de consultar y actualizar información. En este capítulo se describen además temas tan interesantes como las entidades self-tracking (STE) y POCO.
  • En el capítulo 5, llamado “EF 4.0 en el mundo real”, los autores desarrollan un completo escenario donde demuestran las posibilidades de uso de este marco de trabajo en sistemas n-layer, describiendo paso a paso cómo crear los distintos componentes que entran en juego.
Y adicionalmente se incluyen otros tantos anexos:
  • Fundamentos de LINQ, que nos permite conocer y familiarizarnos con el lenguaje integrado de consultas.
  • Referencia de eSQL (Entity SQL), el lenguaje de consultas de Entity Client.
  • Notas sobre el rendimiento de Entity Framework, con consejos y recomendaciones para hacer el acceso a datos de nuestras aplicaciones más eficiente.
  • Plantillas T4, donde se realiza una introducción a la creación de plantillas de este tipo.
  • Referencia de uso de la herramienta de línea de comandos edmgen.exe.
En definitiva se trata de un libro completo, que toca prácticamente todos los puntos necesarios para introducirnos de lleno en el mundo de Entity Framework 4, tanto si anteriormente hemos trabajado con esta tecnología como si lo que pretendemos es iniciarnos en ella.

El libro puede adquirirse directamente en la tienda online de Krasis, en formato papel y PDF. Además, desde esa misma página es posible descargar el código de los ejemplos del libro, y acceder al índice y primer capítulo en Scribd, por si queréis echarle un vistazo.

Ah, y como interesante complemento si queréis estar a la última, no os perdáis la serie de posts del autor, Unai, sobre Code-First, una extensión de Entity Framework (actualmente aún en pruebas) que permite crear bases de datos a partir del código, sin necesidad de usar los diseñadores de Visual Studio.

Publicado en: Variable not found.
domingo, 9 de enero de 2011
Top posts 2010 en Variable not foundPrimero, ya que este post inaugura el recién estrenado 2011 en Variablenotfound.com, aprovechar estas líneas para desearos a todos un feliz año nuevo. Espero que se cumplan vuestros sueños, con salud, y en buena compañía.

Y ahora, tal y como manda la tradición, comentaré los posts más vistos durante el año que acabamos de cerrar, distinguiendo entre los que han sido publicados en 2010, y los que forman ya parte del archivo histórico del sitio y que siguen teniendo gran aceptación.

Cosecha de 2010

Encabezando la lista, además con bastante diferencia sobre el siguiente, el post ASP.NET MVC 2: Quince cuestiones que deberías conocer, un megapost que ya va por su tercera versión (y probablemente pronto podamos tener la cuarta ;-)), en la que se responden preguntas muy básicas sobre ASP.NET MVC. Supongo que de alguna forma, demuestra que el interés de la comunidad de desarrolladores por este framework va creciendo a buen ritmo :-)

Justo detrás en las más visitadas, encontramos dos entradas clasificadas en la categoría de “humor”, lo cual ya dice bastante sobre el tipo de fauna que pulula por aquí ;-D… La primera, muy reciente, es 32 Síntomas que indican que estás afectado por el desarrollo, una particular colección de extrañezas conductuales en las que los desarrolladores parece que coincidimos bastante, mientras que la segunda es un post de hace ya varios meses, Consejos imprescindibles por si algo falla, donde recogía una lista de recomendaciones y buenas prácticas a tener en cuenta cuando nuestras aplicaciones pretenden dejarnos en mal lugar.

En cuarto puesto tenemos el artículo llamado Edición elegante de fechas con jQuery Datepicker y MVC, paso a paso, en el que mostraba cómo combinar templated helpers de ASP.NET MVC con jQuery para crear editores de propiedades de tipo fecha muy profesionales.

Curiosamente, el quinto puesto lo ocupa un post de esos que escribes cuando descubres algo que probablemente todo el mundo conocía menos tú, pero resulta que no, que es útil para más gente: Acceder al contenido de un .vhd desde Windows XP/Vista.

En el sexto lugar, encontramos la serie Leyes epónimas relacionadas con el desarrollo de software, donde se recogían un buen número de leyes que llevan el nombre de su creador, con alguna o mucha relación con nuestra profesión.

En séptimo, un post que mostraba cómo utilizar JSON para el intercambio de datos entre cliente y servidor, sobre tecnología ASP (sin el .NET de detrás): Ajax con ASP: intercambio de datos JSON.

Los puestos octavo y noveno son para artículos muy técnicos y centrados en ASP.NET MVC: Validación de rangos decimales en cliente y servidor para ASP.NET MVC 2, y Formularios con autoguardado en ASP.NET MVC.

Y por último, en el décimo, se ha colado en el último momento el post Llega la Programación Gestual: Visual Studio Kinect Edition, la inocentada del pasado 28 de diciembre que, como todos los años, tanto me divierte escribir.

Cosecha de años anteriores

A continuación cito los artículos escritos años anteriores, pero que siguen estando entre los más visitados del blog.

Como siempre, en cabeza no podía faltar la eterna serie de citas célebres del mundo de la informática, tres posts algo viejunos que recogían más de 300 frases imprescindibles de nuestro mundillo, y que siguen atrayendo visitas de forma impresionante.

A continuación, y no a demasiada distancia de los anterior, jqGrid: Grids espectaculares para ASP.NET MVC, paso a paso, un artículo que describía paso a paso cómo utilizar el plugin jqGrid para implementar rejillas de datos en aplicaciones ASP.NET MVC.

Seguidamente, un clásico del año 2007: Bordes redondeados en webs (sin esfuerzo) con Nifty Corners Cube, que pone de manifiesto la pesadilla que sigue siendo la creación de esquinas redondas en elementos de bloque HTML. Menos mal que CSS3 viene al rescate pronto…

En sexto lugar, más de la cosecha de 2007, Llamar a métodos estáticos con ASP.NET Ajax, un artículo que describía la utilización de PageMethods como mecanismo de comunicación cliente-servidor utilizando Ajax. Aunque se refería a la versión 2.0 de ASP.NET, parece ser que todavía la información es útil.

Sin duda el 2007 fue un gran año, pues justo detrás tenemos el post Evitar el postback al pulsar un botón en ASP.Net, donde se mostraban diversos escenarios en los que podría ser interesante la cancelación del postback al pulsar un botón en formularios web ASP.NET.

Prácticamente igualado con el anterior, 32 técnicas de producción de ideas, un resumen de técnicas para la generación de ideas publicadas allá por 2008 en Neuronilla (ahora hay más), que sigue atrayendo muchos visitantes.

Por último otro gran clásico, 13 Consejos para comentar tu código, que recoge una serie de recomendaciones y buenas prácticas para comentar el código fuente y hacerlo más legible. Como curiosidad, este artículo ha sido traducido y publicado en varios idiomas (inglés, chino, y otros que soy incapaz de identificar), e incluso ha aparecido publicado en una revista India.

Y hasta aquí el tradicional resumen anual, espero que os sea interesante para descubrir entradas que en su día os perdisteis, o simplemente, por la curiosidad de conocer los temas que más interesan de este sitio.

Espero seguir viéndoos por aquí en 2011, no me faltéis, eh? Guiño

Publicado en: Variable not found.
lunes, 11 de enero de 2010
Ya iba siendo hora de estrenarme este 2010 y,image como ordena la tradición, el primer post del nuevo año lo reservo para comentar las entradas que han sido más populares a lo largo del año que acabamos de cerrar.

Esta vez voy a introducir una novedad en el análisis, separando los posts que han sido escritos durante este año de otros, creados años anteriores y que todavía gozan de gran popularidad en la red.

Cosecha de 2009

Encabezando el top ten aparece “101 formas de saber que tu proyecto está condenado al fracaso”, una traducción autorizada del original 101 Ways To Know Your Software Project Is Doomed de Max Pool, que enumeraba, en clave de humor, una serie de pistas para saber si un proyecto se estaba precipitando hacia un estrepitoso fracaso.

Seguido de cerca tenemos “ASP.NET MVC: trece preguntas básicas”, un pequeño resumen de cuestiones realizadas muy frecuentemente tras el primer encuentro con el framework, como qué es MVC, qué ventajas tiene sobre Webforms, o si vale la pena pasarse a esta nueva forma de desarrollar aplicaciones web.

En tercer lugar, “Y todavía otras 101 citas célebres del mundo de la informática”, la tercera entrega de un clásico de este blog, con otras ciento una frases recogidas sobre este mundillo. En total, 303 frases, no está mal.

A continuación, el post “jqGrid: Grids espectaculares para ASP.NET MVC, paso a paso” ha demostrado el interés que despierta el uso de este plugin para mostrar y editar datos tabulados en el framework ASP.NET MVC.

En quinta posición tenemos la serie de tres posts “C#: Desmitificando las expresiones lambda” con la que pretendí quitar un poco de misterio a las expresiones lambda, esa fascinante y temida característica de la última hornada de nuestro lenguaje favorito.

En el post “Aspectos a tener en cuenta al crear sitios web públicos” recopilé las opiniones de un hilo de StackOverflow en el que se debatía sobre aquellos aspectos que teníamos que considerar, desde el punto de vista técnico, para crear webs destinadas al público en general, clasificadas por categorías como experiencia de usuario, seguridad, rendimiento, SEO, etc.

En séptima posición, “Plantillas de proyectos ASP.NET MVC 1.0 para NUnit”, donde se describían los pasos para instalar NUnit como framework de pruebas unitarias en proyecto ASP.NET MVC.

La octava posición es para “Indicios de que tu interfaz de usuario fue creado por un programador”, que comentaba y ampliaba el post de Ian Voyce “The 7 signs your UI was created by a programmer” sobre los rastros que dejamos los desarrolladores cuando queremos hacer de diseñador.

En penúltima posición, “Generación de PDF desde .NET usando formularios”, donde describía un truco muy rápido para generar documentos PDF al vuelo, utilizando formularios en el documento y la librería iTextSharp para rellenar su contenido.

En décima posición, “Programadores con producción neta negativa (NNPP)”, post donde comentaba el curioso fenómeno de la existencia de desarrolladores cuyo saldo en las aportaciones a un proyecto resultara negativo, o sea, que el valor de su producción fuera superado por el coste de los errores y defectos que introducían en las aplicaciones.

Cosechas anteriores

En este apartado encontramos los posts que podríamos considerar clásicos en este blog, pero dado que muchos de los lectores acaban de llegar, no está de más comentar su existencia.
Las dos primeras posiciones, un año más como líderes indiscutibles, citados, copiados y pegados hasta la saciedad, “Otras 101 citas célebres del mundo de la informática” y “101 citas célebres del mundo de la informática”.

En tercera posición, “Bordes redondeados en webs (sin esfuerzo) con Nifty Corners Cube”, un post de 2007 donde comentaba el uso de esta librería de scrips para redondear las esquinas de elementos de bloque en páginas web.

Le sigue otra creación de 2007, “Evitar el postback al pulsar un botón en ASP.Net”, donde comentaba distintas formas de hacer que no se lanzara un postback al pulsar un botón incluido en una página ASP.NET, utilizando, por ejemplo, para evitar envíos múltiples de un formulario.

Otro de los grandes clásicos, en “13 Consejos para comentar tu código” comentaba una serie de prácticas destinadas a facilitar la legibilidad en el código fuente.

La sexta posición la ocupan las “32 técnicas de producción de ideas”, un resumen de un post de Neuronilla sobre técnicas destinadas a favorecer la creatividad.

El post “Llamar a servicios web con ASP.NET AJAX paso a paso”, donde se describe detalladamente cómo utilizar ASP.NET AJAX para obtener datos desde un servicio web.

En octava posición, curiosamente, un post sobre el “Escaneo de puertos con idle scan”, una ingeniosa técnica para detectar puertos abiertos en máquinas remotas utilizando un equipo zombie que oculta la identidad del atacante.

“20 desastres famosos relacionados con el software” traducción autorizada por Timm Martin de su serie “20 Famous Software Disasters”, que recogía un buen número de casos en los que fallos relacionados con el software habían tenido consecuencias trágicas.

Por último, “Enviar mensajes con imágenes incrustadas desde .NET”, de la cosecha de 2008, donde se mostraba cómo incrustar archivos de imagen en un mensaje de correo electrónico generado desde una aplicación .NET.

¡¡Feliz 2010!!

Publicado en: Variable not found.
lunes, 6 de julio de 2009

image Hace unos meses, un usuario de StackOverflow planteaba una interesante cuestión: ¿qué debería saber un desarrollador para construir un sitio web público? Es decir, ¿cuáles son aquellos aspectos importantes que deben tenerse en cuenta a la hora de crear un site de calidad, desde el punto de vista técnico?

Tras un tiempo de respuestas, ideas y debates, otro usuario ha realizado una recopilación de los aspectos y sugerencias más votadas y los ha publicado en forma de lista categorizada, donde podemos encontrar muy buenas ideas a tener en cuenta en nuestros propios desarrollos, y que me he permitido traducir.

Muchos de los puntos son obvios y seguro que ya los estáis teniendo en cuenta, quizás otros son demasiado exagerados, y seguro que alguno de ellos ni siquiera os los habíais planteado. En cualquier caso el resultado es una relación interesante y muy a tener en cuenta para mejorar nuestros sitios web.

Interfaz y experiencia de usuario

  • Ser consciente de que los navegadores implementan los estándares de forma diferente y asegurarse de que el sitio web funciona razonablemente bien en la mayoría de los principales navegadores. Como mínimo, sería necesario probarlo con un navegador que utilice un motor reciente Gecko (Firefox), Webkit (Safari, Chrome y algunos navegadores móviles), las versiones soportadas de Internet Explorer, y Opera.
  • Tener en cuenta que el sitio web puede ser visitado utilizando medios distintos a los navegadores habituales, como por ejemplo teléfonos móviles, lectores de pantalla, o motores de búsqueda. Usar estándares de accesibilidad como WAI o Section508.
  • Considerar los mecanismos de actualización del sitio web para que estos procesos no afecten a los usuarios una vez que el sistema está en marcha y puedan producirse de forma suave y transparente. Por ejemplo, puede ayudar el mantener entornos de prueba paralelos, el uso de herramientas de control del código fuente, o mecanismos de builds automatizados.
  • No mostrar errores directamente al usuario.
  • No incluir en las páginas direcciones de correo de usuarios en texto plano, para evitar que sean bombardeados por los spammers.
  • Incluir límites razonables de utilización del sitio para evitar malos usos por parte de usuarios o procesos automáticos (como puede ser los virus). Por ejemplo, es razonable que un sistema de correo electrónico gratuito limite el número de mensajes diarios que puede enviar un usuario, aunque el número máximo sea muy alto; otro ejemplo podemos verlo en Google, que muestra un mensaje de error cuando detecta demasiado tráfico hacia sus servidores desde una única dirección IP.

Seguridad

  • Conocer la amplia guía de desarrollo OWASP, que  cubre la seguridad de sitios web de forma muy completa.
  • Conocer el fundamento de los ataques de inyección SQL y cómo prevenirlos.
  • Jamás confiar en los datos introducidos por los usuarios.
  • Evitar el almacenamiento de contraseñas en texto plano utilizando técnicas criptográficas como hashes y salts.
  • No intentes utilizar tu magnífico y elaborado sistema de autenticación; es bastante probable que existan fallos impredecibles de los que sólo te darás cuenta después de haber sido hackeado.
  • Usar SSL/HTTPS en las páginas de identificación de usuarios y, en general, en todas aquellas páginas donde sea introducida información sensible, como datos personales o bancarios.
  • Evitar el secuestro de sesiones (session hijacking).
  • Evitar los ataques XSS (Cross Site Scripting).
  • Evitar los ataques XSRF (Cross Site Request Forgeries).
  • Mantener tus sistemas actualizados con los últimos parches disponibles.
  • Asegurarse de que la información de conexión a la base de datos está almacenada en un lugar lo suficientemente seguro.
  • Mantener informado sobre las últimas técnicas de ataque y vulnerabilidades que afecten a la plataforma sobre la que trabajas.
  • Conocer el manual The Google Browser Security Handbook.

Rendimiento

  • Implementar el cacheado de páginas cuando sea necesario. Comprender y usar apropiadamente los mecanismos de cacheo HTTP.
  • Optimizar las imágenes. Por ejemplo, no utilizar una imagen de 20 Kb. como mosaico de fondo.
  • Conocer cómo comprimir el contenido de las páginas con gzip.
  • Echar un vistazo al sitio Yahoo Exceptional Performance, donde se muestran directrices y buenas prácticas para mejorar el rendimiento de sitios web. Utilizar herramientas como YSlow.
  • Utilizar la técnica de CSS Sprites para las pequeñas imágenes (como las que encontramos en las barras de herramientas), con objeto de minimizar el número de peticiones HTTP.
  • Los sitios web de alto tráfico deberían considerar el despliegue de componentes en distintos dominios para optimizar la descarga en paralelo de los mismos.
  • En general, minimizar el número total de peticiones HTTP necesarias para que el navegador muestre las páginas.

SEO

  • Utilizar direcciones URL amigables para los buscadores. Por ejemplo, utilizar direcciones del tipo "ejemplo.com/paginas/titulo-del-articulo" en lugar de "ejemplo.com/index.php?page=45".
  • No utilizar enlaces que digan "pulse aquí". Estarías creando sitio web poco optimizado para buscadores, a la vez que complicando las cosas para los usuarios que utilizan lectores de pantalla.
  • Crear un mapa del sitio en XML (sitemap).
  • Utilizar <link rel="canonical" ... /> Cuando tengas múltiples URLs que apunten a un mismo contenido.
  • Utilizar las herramientas disponibles en www.google.com/webmasters.
  • Instalar Google Analytics desde el principio.
  • Conocer cómo funcionan los rastreadores de los buscadores y el archivo robots.txt.
  • No maquetar con tablas; Google generalmente valorará positivamente el marcado HTML semántico y la maquetación con CSS.
  • Si tienes contenido no textual en la página, utiliza en el sitemap las extensiones de Google para audio, video, etc. Hay alguna información sobre ello en la respuesta de Tim Farley.

Tecnología

  • Entender el protocolo HTTP; conocer cosas como GET, POST, sesiones, cookies, y saber lo que significa e implica su naturaleza "sin estado" (stateless).
  • Escribir el código (X)HTML y CSS conformes a las especificaciones de la W3C, y asegurarse de que validan. El objetivo es evitar las particularidades de los navegadores, a la vez que se facilita enormemente la navegación utilizando browsers no estándar como lectores de pantalla o dispositivos móviles.
  • Comprender cómo se procesa el código javascript en los navegadores. Mover los scripts al final de las páginas.
  • Comprender cómo funciona el sandbox de javascript, especialmente si pretendes utilizar iframes.
  • Asegurarse de que javascript puede ser deshabilitado sin que la página deje de funcionar. AJAX debe ser una extensión, y no la base sobre la que se construya un sitio. Aunque la mayoría de usuarios lo tengan activado, recordar que existen muchos y muy populares dispositivos en los que no funcionará correctamente.
  • Entender la diferencia entre las reflexiones 301 y 302 (esto también es un aspecto SEO).
  • Aprender tanto como sea posible sobre la plataforma en la que será desplegado el sitio web en producción.
  • Considerar el uso de un reseteador de CSS.
  • Considerar herramientas como jQuery, que oculta muchas de las particularidades de los distintos navegadores utilizando javascript para la manipulación del DOM.

Corrección de errores

  • Entender que pasarás el 20% del tiempo codificando y el 80% restante manteniéndolo, por tanto codifica apropiadamente.
  • Configurar un buen sistema de notificación y gestión de errores.
  • Habilitar sistemas para que los usuarios puedan contactar contigo y trasladarte críticas y sugerencias.
  • Documentar cómo funciona la aplicación para facilitar el futuro soporte y mantenimiento del sistema.
  • Poner a funcionar el sistema primero en Firefox y después en Internet Explorer.
  • Hacer copias de seguridad frecuentes.

Publicado en: Variable not found.

domingo, 2 de noviembre de 2008
Como muchos otros desarrolladores, soy un sufridor del chirriar entre los modelos relacionales y de objetos (desajuste de impedancias lo llaman otros ;-)). Y dado que principalmente me dedico a la construcción de software centrado en datos, estoy especialmente sensibilizado con el tema ;-).

Conozco sistemas ORM, y en especial NHibernate, que ayudan a aliviar en gran parte esta falta de concordancia, por lo que estaba deseando ver la gran apuesta de Microsoft en este ámbito, máxime después de juguetear con su hermano pequeño, y quizás ya difunto, Linq to SQL, y ver que se quedaba bastante corto en muchos aspectos.

El libro "ADO.NET Entity Framework. Aplicaciones y servicios centrados en datos" publicado por Krasis Press hace algo más de un mes, me ha parecido una lectura muy recomendable para acercarse a esta nueva tecnología de la mano de fenónemos como Unai Zorrilla, Octavio Hernández y Eduardo Quintás.

Comienza con una breve introducción en la que se explica la necesidad de tecnologías que ayuden a salvar la distancia entre el mundo relacional de las bases de datos y el mundo más conceptual, presentado como modelos de clases a nivel de diseño software, ofreciendo seguidamente una descripción general de este nuevo marco de trabajo. A partir de ahí, va profundizando en los distintos componentes de Entity Framework, siempre de forma muy práctica y basándose en ejemplos bastante cercanos a la realidad. Se recogen, entre otros, los siguientes contenidos:
  • Creación de modelos conceptuales, usando tanto los diseñadores de Visual Studio como modificando a mano los archivos XML que describen el modelo, útil para acceder a características no soportadas por el IDE.

  • Entity Client, el proveedor ADO.NET para acceso, aunque algo rudimentario, a datos del modelo

  • eSQL, el lenguaje de consulta de Entity Framework.

  • Implementación de consultas con ObjectQuery<T> y Linq to Entities.

  • Mecanismos de actualización de datos, incluyendo las técnicas de seguimiento de cambios en objetos, transaccionalidad y concurrencia, entre otros aspectos.

  • Ejemplos de uso de Entity Framework con WCF, enlaces a datos desde controles Windows Forms, WPF o ASP.NET.

  • Servicios de datos de ADO.NET, el mecanismo de publicación de modelos de Entity Framework a través de HTTP.

En definitiva, se trata en mi opinión de un libro muy claro y didáctico, recomendable para desarrolladores que quieran obtener un buen nivel de conocimiento de esta nueva tecnología partiendo desde cero, y para tener siempre a mano cuando comencemos a practicar y utilizar Entity Framework.

Desde la web de la editorial se puede descargar el índice y varias páginas de la introducción en PDF, lo que os permitirá echarle un vistazo, así como realizar el pedido online.

Publicado en: www.variablenotfound.com.