domingo, 28 de diciembre de 2014
Por mi trabajo, suelo “husmear” en el código de muchas aplicaciones creadas por equipos de trabajo en empresas de todo tipo y nacionalidad, y os puedo asegurar que existe un denominador común en todas ellas y que seguro reconoceréis en vuestro propio código: los desarrolladores escribimos como nos viene en gana.
No es poco frecuente ver aplicaciones con faltas de ortografía que un niño de primaria calificaría como graves. Y notad que no hablo sólo de las etiquetas, mensajes y otros elementos visuales que van a parar a los atónitos ojos de nuestros usuarios, sino también de lo que hay por detrás, en el código fuente.
A nivel de código, las denominaciones internas en clases, métodos o variables, textos en comentarios o incluso los mensajes en check-ins en el control de código fuente, son habitualmente terribles. Claro, sabemos que eso no lo va a leer nadie, o al menos nadie de fuera de nuestro entorno, y bajamos la guardia hasta límites que rozan la ilegalidad. Mezclamos idiomas sin ningún criterio (¿quién no ha escrito alguna vez un método
Y lo peor es que esta actitud de desidia es contagiosa. Cuando entras en un proyecto donde todo está escrito sin ningún tipo de miramiento, lo normal es que continúes en esa línea, haciendo que la barbarie sea cada vez mayor y, a su vez, más contagiosa en el futuro. Y cuando comiences otro proyecto, llevarás la costumbre de hacerlo así y continuarás extendiendo esta práctica ad eternum.
Pero, ah, amigos artesanos del código, esto se va a acabar.
Las próximas versiones de Visual Studio corregirán drásticamente esta tendencia, incluyendo la revisión ortográfica como parte del proceso de compilación. Además, como comentó S. Somasegar en una reciente entrevista,
Para su aplicación práctica en las herramientas de desarrollo de la casa, ha sido necesario retocar tanto las propias herramientas como algunos aspectos de los compiladores de los lenguajes estrella, C#, VB, F# y DuoLang.
En Visual Studio tendremos disponibles propiedades a nivel de proyecto y de cada archivo (de código, recursos, diseñadores, etc.) en el que indicaremos el idioma en el que debe realizarse la comprobación.
Por supuesto, también ha sido actualizado intellisense para alternativas a las palabras que vayamos escribiendo e incluso un menú de sinónimos, de la misma forma que Microsoft Word:
Para los casos en que el idioma pueda cambiar dentro del propio archivo o incluso en distintas secciones de éste, se han añadido directivas
Por supuesto, las comprobaciones atienden al camel casing, es decir el nombre del método
Las mismas directivas y propiedades se aplicarán en las comprobaciones de cadenas de texto, recursos (.resx) y diseñadores de la aplicación. De esta forma, podremos estar seguros de que los textos que lanzamos a los usuarios habrán superado un nivel mínimo de calidad, que falta hace en muchas aplicaciones:
En fin, creo que es una iniciativa absolutamente necesaria para mejorar la calidad interna de nuestro código y, como extensión, de nuestras aplicaciones, y me gustaría felicitar a Microsoft por haber tomado esta controvertida decisión. Seguro que traerá mucha polémica, pero estoy convencido de que es por el bien de la humanidad.
Aunque en principio esta nueva característica sólo estará disponible para Visual Studio 2015, no se descarta la creación de extensiones para todas las versiones de Visual Studio, comenzando en la 2005. Está previsto incluso su introducción en el proyecto Omnisharp para poder aplicarlo en entornos de desarrollo más allá de Visual Studio, lo que abriría su uso a otras plataformas como Mac o Linux, y de la posibilidad de desarrollar plugins oficiales para Git, Mercurial, Subversion, TFS y sistemas de integración continua que permitan automatizar estas comprobaciones.
Se avecina un año maravilloso donde los sistemas de control de código fuente podrán rechazar un commit o check-in por tener faltas de ortografía, o en el que en nuestra mesa, junto a clásicos como C Programming language o Code Complete , podremos encontrar el diccionario de la real academia de la lengua española.
¡Feliz escritura de código!
Publicado en Variable not found.
No es poco frecuente ver aplicaciones con faltas de ortografía que un niño de primaria calificaría como graves. Y notad que no hablo sólo de las etiquetas, mensajes y otros elementos visuales que van a parar a los atónitos ojos de nuestros usuarios, sino también de lo que hay por detrás, en el código fuente.
A nivel de código, las denominaciones internas en clases, métodos o variables, textos en comentarios o incluso los mensajes en check-ins en el control de código fuente, son habitualmente terribles. Claro, sabemos que eso no lo va a leer nadie, o al menos nadie de fuera de nuestro entorno, y bajamos la guardia hasta límites que rozan la ilegalidad. Mezclamos idiomas sin ningún criterio (¿quién no ha escrito alguna vez un método
GetFacturas()
, obtenerResources
() o una variable lineasCount
en su base de código?), cometemos atropellos ortográficos, gramaticales y otros tipos de aberración de forma impune, escudados en que no hay que prestar atención a esos detalles porque es sólo código.Y lo peor es que esta actitud de desidia es contagiosa. Cuando entras en un proyecto donde todo está escrito sin ningún tipo de miramiento, lo normal es que continúes en esa línea, haciendo que la barbarie sea cada vez mayor y, a su vez, más contagiosa en el futuro. Y cuando comiences otro proyecto, llevarás la costumbre de hacerlo así y continuarás extendiendo esta práctica ad eternum.
Pero, ah, amigos artesanos del código, esto se va a acabar.
Las próximas versiones de Visual Studio corregirán drásticamente esta tendencia, incluyendo la revisión ortográfica como parte del proceso de compilación. Además, como comentó S. Somasegar en una reciente entrevista,
“esta característica no podrá ser deshabilitada; en caso contrario ya sabemos lo que ocurriría, y va en contra de la firme apuesta de Microsoft hacia un mundo que se comunique mejor”Y la cosa va muy en serio. Para dar mayor formalidad a esta necesaria iniciativa, Microsoft ha firmado un acuerdo con distintas academias responsables de definir y actualizar la mayoría de idiomas del mundo, como la National Commission on Language and Script Work (国家语言文字工作委员会) de China, la Real Academia Española (RAE), Academy of the Arabic Language (مجمع اللغة العربية), la Royal Galician Academy, o Council for German Orthography (Rat für deutsche Rechtschreibung) por citar sólo algunas. De estas instituciones obtendrá los diccionarios actualizados que serán utilizados por las herramientas del gigante de Redmond para comprobar que estamos escribiendo como debemos. En el caso del inglés es distinto porque no existe un organismo regulador, pero se atenderán a las guías oficiales publicadas por los países donde es la lengua oficial.
En Visual Studio tendremos disponibles propiedades a nivel de proyecto y de cada archivo (de código, recursos, diseñadores, etc.) en el que indicaremos el idioma en el que debe realizarse la comprobación.
Por supuesto, también ha sido actualizado intellisense para alternativas a las palabras que vayamos escribiendo e incluso un menú de sinónimos, de la misma forma que Microsoft Word:
Para los casos en que el idioma pueda cambiar dentro del propio archivo o incluso en distintas secciones de éste, se han añadido directivas
#pragma
que pueden usarse en cualquier punto. Por ejemplo, en el siguiente código se han detectado dos errores de compilación para la porción escrita en español, en un comentario y en el nombre de un método:Por supuesto, las comprobaciones atienden al camel casing, es decir el nombre del método
ObtenerFactura()
se entenderá correcto, mientras que Obtenerfactura()
no lo será. Otra ventaja colateral de esta característica es que dejaremos de utilizar nombres de variable sin sentido como “s”, “xyz”, tendiendo a que realmente se refleje su intencionalidad como “saldo” o “coordenadasTridimensionales”. Se está estimando, sin embargo, excluir las variables de tipo índice obvias como la típica “i” en un bucle for
por razones históricas.Las mismas directivas y propiedades se aplicarán en las comprobaciones de cadenas de texto, recursos (.resx) y diseñadores de la aplicación. De esta forma, podremos estar seguros de que los textos que lanzamos a los usuarios habrán superado un nivel mínimo de calidad, que falta hace en muchas aplicaciones:
En fin, creo que es una iniciativa absolutamente necesaria para mejorar la calidad interna de nuestro código y, como extensión, de nuestras aplicaciones, y me gustaría felicitar a Microsoft por haber tomado esta controvertida decisión. Seguro que traerá mucha polémica, pero estoy convencido de que es por el bien de la humanidad.
Aunque en principio esta nueva característica sólo estará disponible para Visual Studio 2015, no se descarta la creación de extensiones para todas las versiones de Visual Studio, comenzando en la 2005. Está previsto incluso su introducción en el proyecto Omnisharp para poder aplicarlo en entornos de desarrollo más allá de Visual Studio, lo que abriría su uso a otras plataformas como Mac o Linux, y de la posibilidad de desarrollar plugins oficiales para Git, Mercurial, Subversion, TFS y sistemas de integración continua que permitan automatizar estas comprobaciones.
Se avecina un año maravilloso donde los sistemas de control de código fuente podrán rechazar un commit o check-in por tener faltas de ortografía, o en el que en nuestra mesa, junto a clásicos como C Programming language o Code Complete , podremos encontrar el diccionario de la real academia de la lengua española.
¡Feliz escritura de código!
[Actualizado 30/12]
Nota para despistadillos: obviamente no es real, se trata simplemente de una broma del Día de los Inocentes. Así que tranquilos, podemos seguir dando patadas al diccionario impunemente en nuestro código :-DDD
Nota para despistadillos: obviamente no es real, se trata simplemente de una broma del Día de los Inocentes. Así que tranquilos, podemos seguir dando patadas al diccionario impunemente en nuestro código :-DDD
Publicado en Variable not found.
Publicado por José M. Aguilar a las 12:05 a. m.
Hay
6 comentarios, ¡participa tú también!
Etiquetas: calidad, inocentadas, novedades, visualstudio
martes, 23 de diciembre de 2014
Estimados amigos, en esta ocasión escribo sólo para desearos unas magníficas fiestas en la mejor compañía posible y, por si nos nos vemos más hasta el año que viene, desearos también un 2015 espectacular y en el que se cumplan todos vuestros sueños.
¡Nos seguimos viendo por aquí!
Publicado en Variable not found.
¡Nos seguimos viendo por aquí!
Publicado en Variable not found.
martes, 16 de diciembre de 2014
Como ya hemos visto por aquí en alguna ocasión, hace tiempo que MVC soporta controladores asíncronos, permitiendo la implementación de acciones muy eficientes desde el punto de vista de la utilización de los recursos del servidor.
Sin embargo, en cuanto pretendíamos llevar a los action filters la misma filosofía nos encontrábamos con que la infraestructura no estaba preparada, es decir, no teníamos una forma clara de introducir llamadas asíncronas en el cuerpo de los filtros. Como consecuencia, todas las tareas que se realizaban en su interior eran puramente síncronas y dejaban bloqueados los hilos destinados a procesar peticiones mientras se completaban las operaciones, lo cual es especialmente un despilfarro cuando se trata de tareas de entrada/salida.
Afortunadamente esto parece que va a terminar con ASP.NET Core MVC, que soportará ya esta solicitada característica. Pero ojo, que Core MVC está aún en desarrollo, por lo que todo lo que cuento a continuación puede cambiar.
Pero empecemos desde el principio, viendo qué ha cambiado por abajo para que sea posible crear filtros con código asíncrono en su interior. Quizás sea una lectura un poco densa, pero creo que es interesante para comprender cómo funcionan las cosas por dentro.
Sin embargo, en cuanto pretendíamos llevar a los action filters la misma filosofía nos encontrábamos con que la infraestructura no estaba preparada, es decir, no teníamos una forma clara de introducir llamadas asíncronas en el cuerpo de los filtros. Como consecuencia, todas las tareas que se realizaban en su interior eran puramente síncronas y dejaban bloqueados los hilos destinados a procesar peticiones mientras se completaban las operaciones, lo cual es especialmente un despilfarro cuando se trata de tareas de entrada/salida.
Afortunadamente esto parece que va a terminar con ASP.NET Core MVC, que soportará ya esta solicitada característica. Pero ojo, que Core MVC está aún en desarrollo, por lo que todo lo que cuento a continuación puede cambiar.
Pero empecemos desde el principio, viendo qué ha cambiado por abajo para que sea posible crear filtros con código asíncrono en su interior. Quizás sea una lectura un poco densa, pero creo que es interesante para comprender cómo funcionan las cosas por dentro.
lunes, 15 de diciembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
ASP.NET
- How to Choose the Best Way to Pass Multiple Models in ASP.NET MVC
Snesh Prajapati - Razor views pre-compilation with ASP.NET 5 and MVC 6
Filip Woj - Running ASP.NET on a Raspberry Pi with Mono and OWIN
Jan Tielens - ASP.NET vNext Project Creation using Yeoman
Shayne Boyer
martes, 9 de diciembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- Creating multi-target NuGet Packages with vNext
Rick Strahl - Modification of .NET expressions
Ivan Yakimov - Introducing .NET Core
Immo Landwerth - 10 Extremely Useful .NET Extension Methods
Jonathan Danylko - Getting ready for the future with the Microsoft .NET Portability Analyzer
Scott Hanselman
miércoles, 3 de diciembre de 2014
Aunque aún en beta e inmersa en un intenso proceso de desarrollo, la próxima versión de ASP.NET MVC está tomando forma en los hornos de Microsoft, y, sin ser definitivas, ya se pueden ver cuáles serán las novedades principales que la acompañarán.
En futuros posts iremos entrando en mayor detalle, pero de momento vamos a echar un vistazo desde una cierta distancia para tener la idea general sobre dónde estamos y la evolución que vamos a encontrar en las nuevas versiones de tecnologías y plataformas, de forma que podamos ver en qué nos afectará como desarrolladores y, en definitiva, para qué tenemos que irnos preparando.
En futuros posts iremos entrando en mayor detalle, pero de momento vamos a echar un vistazo desde una cierta distancia para tener la idea general sobre dónde estamos y la evolución que vamos a encontrar en las nuevas versiones de tecnologías y plataformas, de forma que podamos ver en qué nos afectará como desarrolladores y, en definitiva, para qué tenemos que irnos preparando.
Disclaimer: estamos aún en una fase en la que algunas cosas pueden cambiar y aún no existe información exhaustiva de muchos detalles, por lo que pueden existir ausencias o imprecisiones. Pero bueno, digo yo que el grueso será más o menos correcto ;-)
lunes, 1 de diciembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- Constrained C#
Paulo Zemek - .NET Shell Extensions - Shell Context Menus
Dave Kerr - OmniSharp - Making cross-platform .NET a reality, and a pleasure
Scott Hanselman - Converting PDF to Text in C#
Dan Letecky - Design and Implementation Mistakes - Mostly .NET
Paulo Zemek
martes, 25 de noviembre de 2014
Seguimos con esta serie sobre las novedades de C# 6, y esta vez le toca el turno a una solicitada característica que recientemente ha entrado a formar parte de las elegidas para formar parte de esta nueva versión de nuestro lenguaje favorito: la interpolación de cadenas.
Dado que aún se encuentra en desarrollo no es posible probarlo de forma sencilla, por lo que de momento tendremos que conformarnos con sacar conclusiones basándonos en la discusión de diseño en Codeplex y de la documentación existente. Avisan además que la especificación puede ser modificada, por lo que todo lo que digamos aquí aún puede variar algo, aunque mayormente será (espero) válido.
Dado que aún se encuentra en desarrollo no es posible probarlo de forma sencilla, por lo que de momento tendremos que conformarnos con sacar conclusiones basándonos en la discusión de diseño en Codeplex y de la documentación existente. Avisan además que la especificación puede ser modificada, por lo que todo lo que digamos aquí aún puede variar algo, aunque mayormente será (espero) válido.
lunes, 24 de noviembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- What is .NET Core 5 and ASP.NET 5 within .NET 2015 Preview
César de la Torre - PostSharp 4.1 Preview 1: Support for Xamarin & Visual Studio 2015
Gael Fraiteur - .NET es open source, ¿y ahora qué?
Juan María Hernández
miércoles, 19 de noviembre de 2014
Pues sí, a mí me ha pasado, así que lo comento por aquí porque es posible que alguien más se vea en esta situación al ir a tocar una aplicación MVC antigua.
Resulta que hace unos días Microsoft distribuyó a través de Windows Update un parche de seguridad denominado Microsoft Security Bulletin MS14-059, clasificado como importante, y cuyo objetivo es corregir una vulnerabilidad descubierta en sistemas basados en MVC desde la versión 2 relativa a la forma en que el framework valida los datos de las peticiones entrantes, y que hacer que un atacante utilizara técnicas XSS para obtener un acceso privilegiado a sitios web.
Hasta aquí todo bien, el problema viene cuando por cualquier motivo tenemos que volver a compilar esas aplicaciones. Las versiones de MVC anteriores a la 5 referenciaban directamente a ensamblados guardados en el GAC con un número de versión determinada, que la instalación del parche de seguridad ha incrementado. Como consecuencia, al compilar estas aplicaciones obtenemos errores variopintos como el siguiente:
La que a mí me ha funcionado consistió simplemente en ejecutar el siguiente comando en la consola del gestor de paquetes Nuget (ojo, ¡haced antes una copia del proyecto, por si falla!):
Desde el blog oficial de herramientas y desarrollo web de .NET recomiendan comprobar que la propiedad “Copia local” esté activa en la referencia del proyecto hacia el ensamblado
En mi caso no fue necesario hacer nada pues estaba todo correcto, y a partir de ese momento todo volvió a la normalidad y pude comenzar a compilar de nuevo sin problema.
Ya a la hora de desplegar al servidor, simplemente tened en cuenta unos detalles:
Resulta que hace unos días Microsoft distribuyó a través de Windows Update un parche de seguridad denominado Microsoft Security Bulletin MS14-059, clasificado como importante, y cuyo objetivo es corregir una vulnerabilidad descubierta en sistemas basados en MVC desde la versión 2 relativa a la forma en que el framework valida los datos de las peticiones entrantes, y que hacer que un atacante utilizara técnicas XSS para obtener un acceso privilegiado a sitios web.
Hasta aquí todo bien, el problema viene cuando por cualquier motivo tenemos que volver a compilar esas aplicaciones. Las versiones de MVC anteriores a la 5 referenciaban directamente a ensamblados guardados en el GAC con un número de versión determinada, que la instalación del parche de seguridad ha incrementado. Como consecuencia, al compilar estas aplicaciones obtenemos errores variopintos como el siguiente:
Could not locate the assembly "System.Web.Mvc,Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL".La verdad es que al principio sorprende bastante (“¿Cómooo? Pero si hace meses que no toco esta aplicación, ¿cómo es posible que no compile? ¿Quién la ha roto?”), pero buscando un poco por la red es fácil encontrar varias soluciones.
La que a mí me ha funcionado consistió simplemente en ejecutar el siguiente comando en la consola del gestor de paquetes Nuget (ojo, ¡haced antes una copia del proyecto, por si falla!):
Install-Package Microsoft.AspNet.Mvc -Version <version> -Project <YourProjectName>En la línea anterior debéis sustituir:
<YourProjectName>
por el nombre de vuestro proyecto. Esto es simplente para asegurar que instaláis el paquete en el proyecto correcto si estáis usando una solución con varios de ellos.<Version>
depende de la versión del framework usada en el proyecto y debe ser:- 4.0.40804.0 si usáis MVC 4
- 3.0.50813.1 si usáis MVC 3
Desde el blog oficial de herramientas y desarrollo web de .NET recomiendan comprobar que la propiedad “Copia local” esté activa en la referencia del proyecto hacia el ensamblado
System.Web.Mvc
, pues al parecer existe un bug conocido de Nuget que puede resetear dicha propiedad, y que necesariamente debe estar activa para que éste sea copiado a la carpeta /bin tras construirse la solución.En mi caso no fue necesario hacer nada pues estaba todo correcto, y a partir de ese momento todo volvió a la normalidad y pude comenzar a compilar de nuevo sin problema.
Ya a la hora de desplegar al servidor, simplemente tened en cuenta unos detalles:
- Tendréis que subir los binarios de Mvc, porque probablemente hasta el momento en el servidor se utilizaban los presentes en el GAC.
- Estad atentos al web.config, porque en la misma instalación realizada por Nuget es posible que se hayan introducido modificaciones en él, que tendréis que actualizar en el servidor.
- http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx
- https://technet.microsoft.com/en-us/library/security/ms14-059
martes, 18 de noviembre de 2014
Seguimos hablando de las novedades de C# 6, y en esta ocasión nos centraremos en una interesante característica cuyo nombre, sinceramente, no estoy seguro de ser capaz de traducir de forma correcta del original “Expression bodied function members”. Quizás sería algo así como “expresiones en cuerpo de miembros de función”, pero bueno, lo importante no es el nombre sino el concepto, así que vamos a centrarnos en él.
lunes, 17 de noviembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, en gran parte protagonizados por los jugosos anuncios y lanzamientos que se hicieron públicos en el evento Connect que tuvo lugar de hace unos días. Espero que os resulten interesantes :-)
.Net
- .NET Core is Open Source
Immo Landwerth - Microsoft Open Sources .NET and Mono
Miguel de Icaza - ASP.NET MVC Tag Helpers – Web Controls 2.0?
Jeff Fritz - Avoid async void methods
Phil Haack
martes, 28 de octubre de 2014
Este año, por cuarta vez consecutiva, tendré el placer de asistir dentro de unos días al MVP Global Summit, un macro evento anual organizado por Microsoft en el que reúne a todas las personas reconocidas como Most Value Professional para compartir novedades e intercambiar ideas y planes sobre las tecnologías con las que trabajamos a diario y, mejor aún, con las que trabajaremos dentro de algún tiempo.
Podéis imaginar lo que puede salir de una coctelera en la que introducimos algunos miles de personas procedentes de todos los rincones del mundo, técnicamente excepcionales en muchos casos, y figuras reconocidas y miembros de equipos de producto de Microsoft, compartiendo innumerables sesiones técnicas, debates y encuentros informales organizados durante los días de duración del evento. Una gozada.
Además, creo que este año el evento va resultar especialmente jugoso desde el punto de vista técnico, más que nada por las nuevas tecnologías y herramientas que están empezando a vislumbrarse por el horizonte y que todos ya conocemos :)
Y por supuesto, también es una oportunidad de disfrutar de la compañía de amigos que sólo coincidimos en persona en este tipo de eventos, una o dos veces al año como máximo. Y, por qué no, para seguir conociendo Seattle y sus alrededores, que estas oportunidades hay que aprovecharlas ;)
¡Nos vemos a la vuelta!
Seguimos con la serie donde vamos desgranando las novedades de C# 6, y en esta ocasión vamos a ver algunas mejoras en el uso de bloques try/catch, a las que seguro podremos sacar buen partido.
En este post trataremos dos temas distintos. En primer lugar, comentaremos la introducción del soporte de
Vamos a ello :-)
En este post trataremos dos temas distintos. En primer lugar, comentaremos la introducción del soporte de
await
en bloques catch
/finally
, y seguiremos con la nueva capacidad de filtrado de excepciones.Vamos a ello :-)
lunes, 27 de octubre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes :-)
.Net
- Simple image comparison in .NET
Jakob XnaFan Krarup - Announcing PostSharp 4 RTM
Gael Fraiteur
martes, 21 de octubre de 2014
En otras ocasiones hemos hablado de novedades que acompañarán a la próxima revisión de C# que nos ahorraban algo de tiempo y pulsaciones de tecla a la hora de codificar algunos escenarios bastante frecuentes, a la vez que mejoraban la legibilidad.
Pues en esa misma línea, vemos ahora una nueva forma de inicializar colecciones clave-valor, como son los diccionarios. Ciertamente es un cambio bastante pequeño, de los que fácilmente podrían pasar desapercibidos junto a otras novedades de mayor peso, pero creo que también vale la pena conocerlo.
Pues en esa misma línea, vemos ahora una nueva forma de inicializar colecciones clave-valor, como son los diccionarios. Ciertamente es un cambio bastante pequeño, de los que fácilmente podrían pasar desapercibidos junto a otras novedades de mayor peso, pero creo que también vale la pena conocerlo.
jueves, 16 de octubre de 2014
Hace unos días mostrábamos por aquí el nuevo operador
En los comentarios de este post, el amigo Kiquenet se preguntaba qué incidencia podía tener el uso de este operador en el rendimiento de nuestras aplicaciones, y esa duda es la que vamos a responder muy rápidamente ahora.
nameof
que acompañará a C# 6, y cuya función, resumidamente, es obtener el nombre a nivel de código de la variable o miembro a la que se aplica:En los comentarios de este post, el amigo Kiquenet se preguntaba qué incidencia podía tener el uso de este operador en el rendimiento de nuestras aplicaciones, y esa duda es la que vamos a responder muy rápidamente ahora.
miércoles, 15 de octubre de 2014
Siempre he pensado que el término “parche” aplicado al desarrollo de software se utilizaba por analogía con el mundo real. Al fin y al cabo, poner un parche en una aplicación es conceptualmente bastante parecido a hacerlo en una rueda pinchada, ¿no?
Pero no, como en otras ocasiones que ya hemos visto por aquí, no es un tema nada conceptual. La realidad es bastante más pragmática, y el uso de la palabra “parche” es literal y simplemente responde a razones históricas.
Pero no, como en otras ocasiones que ya hemos visto por aquí, no es un tema nada conceptual. La realidad es bastante más pragmática, y el uso de la palabra “parche” es literal y simplemente responde a razones históricas.
martes, 14 de octubre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
Eventos
- Sevilla Mobility Day Strikes Back
Sábado 25 de octubre, 9:00h
.Net
- C#- Vitaminiza tus enums con métodos de extensión
- Eduard Tomás
- Handling TPL exceptions in MSTest unit tests
Mario Majčica - Rapid Object Detection in C#
Darko Juric
martes, 7 de octubre de 2014
Cuando los lenguajes evolucionan, no todas las novedades son espectaculares ni revolucionan la forma de escribir nuestro código. A veces la cosa va simplemente de añadir pequeños detalles que nos hacen la vida más fácil y ayudan a evitar errores.
Y hoy hablaremos de uno de ellos: el nuevo operador
Y hoy hablaremos de uno de ellos: el nuevo operador
nameof
, que acompañará a C# a partir de su versión 6.
lunes, 6 de octubre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Better than nothing
Eric Lippert - C# – SomeEnum.ToString measured to be 400x slower
Daniel Wertheim - .NET Just in Time Compilation and Warming up Your System
Abhinaba Basu - Digging into .NET Object Allocation Fundamentals
Ben M. Watson - Will it block? Debunking async/await pitfalls
Matthias Welz
martes, 30 de septiembre de 2014
[Actualizado 16-Nov-2014] El equipo de diseño del lenguaje C# ha decidido finalmente no incluir esta característica en la versión 6. En fin, fue bonito mientras duró :(
Seguimos comentando novedades que encontraremos en la próxima versión de C#, y en esta ocasión vamos a ver una nueva característica que, sin resultar espectacular, sí nos va a proporcionar una fórmula más cómoda y concisa para resolver algunos escenarios bastante habituales.
Seguro que os resulta familiar el siguiente código, más que nada porque lo habréis escrito decenas o cientos de veces:
lunes, 29 de septiembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Capturing Performance Counter Data for a Process by Process Id
Rick Strahl - Confusing errors for a confusing feature, part one
Eric Lippert - Return Types for Methods that Return Collections
Peter Vogel - .Net Threading You Need To Know
Sandeep sunku
martes, 23 de septiembre de 2014
En posts anteriores hemos hablado del operador de navegación segura “.?” y de la inicialización de propiedades automáticas, y vamos a comentar ahora otra de las novedades de la versión de C# que viene en camino, pero que en esta ocasión no tengo claro que sea un avance en la dirección correcta. Os lo cuento y ya decidís vosotros ;-)
Hay escenarios en los que en el interior de una clase utilizamos de forma intensiva miembros estáticos de otras clases. Un ejemplo habitual podemos encontrarlo en componentes que hagan mucho uso de
Hay escenarios en los que en el interior de una clase utilizamos de forma intensiva miembros estáticos de otras clases. Un ejemplo habitual podemos encontrarlo en componentes que hagan mucho uso de
System.Math
para la realización de cálculos matemáticos, o incluso en el conocido System.Console
:
lunes, 22 de septiembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Código sin nulls
Eduard Tomás - .NET Sample Code on GitHub
Immo Landwerth - Subir un video a Youtube desde .NET
Gisela Torres - Internal or public?
Eric Lippert - C# 6.0 Features Part 3: Declaration Expressions
K. Scott Allen - Virtual vs Override vs New Keyword in C#
Abhishek Jaiswall - Is IQueryable poisoning your interfaces?
Tilovell09 - Custom Getter Setters in C# using Regular Expression based templates
Amitthk
martes, 16 de septiembre de 2014
Hace algún tiempo comentamos alguna de las novedades que se incluirán en la próxima versión de C#, concretamente el nuevo operador de navegación segura “?.”, pero la cosa no acaba aquí: se avecinan un buen número de cambios que prometen seguir mejorando nuestro lenguaje favorito :-)
Por ejemplo, una nueva característica que tendremos disponible es la inicialización de propiedades automáticas, algo que antes también podíamos hacer, aunque de forma menos directa.
Por ejemplo, una nueva característica que tendremos disponible es la inicialización de propiedades automáticas, algo que antes también podíamos hacer, aunque de forma menos directa.
lunes, 15 de septiembre de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
<Spam>Por cierto, aprovecho para informaros de que si estáis interesados en aprender ASP.NET MVC u otras tecnologías, en CampusMVP han lanzado para este mes una oferta que no podréis rechazar ;-)</Spam>
<Spam>Por cierto, aprovecho para informaros de que si estáis interesados en aprender ASP.NET MVC u otras tecnologías, en CampusMVP han lanzado para este mes una oferta que no podréis rechazar ;-)</Spam>
.Net
- A .NET QueryString and Form Data Parser
Rick Strahl - Overview of C# 6 language enhancements
Bill Wagner
lunes, 8 de septiembre de 2014
Pues era prácticamente ayer cuando dejaba en pausa el blog por la cercanía de las vacaciones, y ya estamos por aquí otra vez listos para la nueva temporada. Y no, no es que me haya pegado más de un mes de descanso (¡quién pudiera!), más bien casi ha sido al contrario: un verano bastante liado y muy pocos días de desconexión efectiva... pero bueno, contento y entusiasmado por la temporada tan apasionante y repleta de novedades que tenemos por delante :-)
Y para celebrar el retorno como la ocasión merece, ahí van unos cuantos enlaces cosechados durante la semana pasada, que, como siempre, espero que os resulten interesantes.
Y para celebrar el retorno como la ocasión merece, ahí van unos cuantos enlaces cosechados durante la semana pasada, que, como siempre, espero que os resulten interesantes.
lunes, 28 de julio de 2014
Pues llegó la mejor época del año, prácticamente la única en la que algunos afortunados podemos alejarnos un poco de los mundos binarios y dedicarnos a otros menesteres seguro más importantes, como disfrutar de la familia y descansar, al menos unos días.
Variable not found quedará a la deriva hasta septiembre, cuando volveremos al ataque con las pilas cargadas y listos para afrontar la nueva temporada :)
¡Feliz verano, amigos!
Variable not found quedará a la deriva hasta septiembre, cuando volveremos al ataque con las pilas cargadas y listos para afrontar la nueva temporada :)
¡Feliz verano, amigos!
martes, 22 de julio de 2014
Hay veces que desde Javascript nos interesa ejecutar un código u otro en función de si la ejecución se está produciendo en un servidor de desarrollo o en uno de producción. Por ejemplo, en el primer caso suele ser interesante disponer de logs o herramientas de ayuda a la depuración, mientras que en el segundo lo normal es que queramos introducir código más eficiente y sin este tipo de condimentos.
En este post vamos a ver algunas técnicas muy básicas que nos permitirán ejecutar un código u otro en el lado cliente de aplicaciones ASP.NET MVC (o ASP.NET en general) en función del modo de compilación.
En este post vamos a ver algunas técnicas muy básicas que nos permitirán ejecutar un código u otro en el lado cliente de aplicaciones ASP.NET MVC (o ASP.NET en general) en función del modo de compilación.
lunes, 21 de julio de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Unusual Ways of Boosting Up App Performance. Strings
Alexey Totin - Switch statement alternative
Nitin Sawant - Covarianza y contravarianza en C#
Rubenfa
lunes, 14 de julio de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Unusual Ways of Boosting Up App Performance. Boxing and Collections
Alexey Totin - Release Candidate for Katana 3 and the ASP.NET Security Components
Vittorio Bertocci - Updates to RoslynDom 1.0.9 Alpha
Kathleen Dollard - Stop Cheating the Type System
Marius Schulz - Caché HTTP de cliente en C# (1 de 4): aplicaciones de escritorio
Juan Manuel Servera
martes, 8 de julio de 2014
Otra de las novedades que acompañan a la versión 2.1 de SignalR, y que sin duda puede resultar interesante en muchos escenarios, es la capacidad de tener desde los hubs una pista sobre el motivo por el que se desconectó un cliente, cosa que hasta ahora no era posible utilizando las herramientas que nos proporcionaba el framework de forma directa.
En versiones previas de SignalR, cuando en un hub recibimos el evento
En versiones previas de SignalR, cuando en un hub recibimos el evento
OnDisconnected()
en realidad no sabemos si este cierre ha sido “educado”, es decir, provocado explícitamente por el cliente como consecuencia de una acción, como puede ser que el usuario haya decidido salir de la aplicación, o bien se ha debido a un problema en el software o comunicaciones (imaginad, por ejemplo, que se cae la conexión a internet).
lunes, 7 de julio de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Exploring C# variables
925Coder - Threadsafe Incrementing in C#
Eli Weinstock-Herman - It's Tuples All The Way Down!
Josh Eastburn - Advantages of Pure Functions and Idempotent Functions in .Net
Rob Kraft - Neuronal.NET - An Easy Implementation of Neuronal Networks
D. Infuehr - Direct casting vs as casting
Ben Dornis
martes, 1 de julio de 2014
Estimados amigos,
esta vez no os voy a castigar con temas técnicos o frikadas diversas ;-), sólo quería compartir con todos vosotros la tremenda alegría que supone el recibir el famoso mail de Microsoft, todavía calentito en mi bandeja de entrada, informando de que he sido nombrado por cuarto año consecutivo Microsoft MVP en el expertise ASP.NET/IIS.
Es un privilegio seguir formando parte de este selecto grupo de locos por la tecnología entre los que se encuentran tantos amigos que admiro profundamente. Y aunque ciertamente los beneficios del programa son amplios y de gran interés, lo mejor sin duda, al menos para un servidor, es la oportunidad de conocer de cerca a gente de primerísimo nivel, tanto profesional como personalmente hablando, de dentro y fuera de Microsoft. Como ya he comentado seguro por aquí, existe un antes y un después en mi trayectoria profesional desde que fui galardonado por primera vez, y mucho es gracias a la gran oportunidad de networking y visibilidad que ofrece este prestigioso reconocimiento.
Muchas gracias a todos los amigos que hacéis esto posible, al equipo del programa MVP en Microsoft por seguir teniéndome en cuenta, y a la gran Cristina González, nuestra MVP lead (y cada día la de más gente ;-D), por cuidarnos tan bien.
Aprovecho también para felicitar a todos los que hayáis recibido este galardón, ya sea por vez primera (vaya momentazo, eh? ;-)), o los veteranos que repiten una vez más.
Ale, me voy a celebrarlo, ¡hasta pronto! ;-DD
esta vez no os voy a castigar con temas técnicos o frikadas diversas ;-), sólo quería compartir con todos vosotros la tremenda alegría que supone el recibir el famoso mail de Microsoft, todavía calentito en mi bandeja de entrada, informando de que he sido nombrado por cuarto año consecutivo Microsoft MVP en el expertise ASP.NET/IIS.
Es un privilegio seguir formando parte de este selecto grupo de locos por la tecnología entre los que se encuentran tantos amigos que admiro profundamente. Y aunque ciertamente los beneficios del programa son amplios y de gran interés, lo mejor sin duda, al menos para un servidor, es la oportunidad de conocer de cerca a gente de primerísimo nivel, tanto profesional como personalmente hablando, de dentro y fuera de Microsoft. Como ya he comentado seguro por aquí, existe un antes y un después en mi trayectoria profesional desde que fui galardonado por primera vez, y mucho es gracias a la gran oportunidad de networking y visibilidad que ofrece este prestigioso reconocimiento.
Muchas gracias a todos los amigos que hacéis esto posible, al equipo del programa MVP en Microsoft por seguir teniéndome en cuenta, y a la gran Cristina González, nuestra MVP lead (y cada día la de más gente ;-D), por cuidarnos tan bien.
Aprovecho también para felicitar a todos los que hayáis recibido este galardón, ya sea por vez primera (vaya momentazo, eh? ;-)), o los veteranos que repiten una vez más.
Ale, me voy a celebrarlo, ¡hasta pronto! ;-DD
Si os interesa el desarrollo para dispositivos móviles y andáis por Sevilla el próximo sábado 5 de julio no podéis perderos este gran evento de comunidad: Sevilla Mobility Day.
Como en otras ocasiones, la cita será en el Microsoft Clouding Point de Sevilla (C/Biología 12, Edificio Vilamar 2, planta 3, Parque Empresarial Nuevo Torneo), comenzando a las 9:30h y finalizando sobre las 14:00h, es decir, toda una mañana para aprender de la mano de grandes expertos en las distintas tecnologías tratadas.
Como en otras ocasiones, la cita será en el Microsoft Clouding Point de Sevilla (C/Biología 12, Edificio Vilamar 2, planta 3, Parque Empresarial Nuevo Torneo), comenzando a las 9:30h y finalizando sobre las 14:00h, es decir, toda una mañana para aprender de la mano de grandes expertos en las distintas tecnologías tratadas.
lunes, 30 de junio de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Ref and Out (The Inside Story)
Akhil Mittal - Creando datos de ejemplo con NBuilder en .NET
Gisela Torres - Métodos de Extensión en C#
Alberto Población - Fun with Custom C# Collection Initializers
Marius Schulz - Would you like a MultiDictionary?
Immo Landwerth - Advantages of Making Your Methods Idempotent and Static in C#
Rob Kraft
miércoles, 25 de junio de 2014
Hace pocos días se ha publicado la revisión 2.1 de SignalR que, aparte de corregir bugs, introduce algunas funcionalidades que pueden resultar interesantes en muchos escenarios. En cualquier caso, como se podría esperar de una revisión de este calado, no rompen con nada existente ni resultan cambios espectaculares, simplemente aportan algunas características que no fueron incluidas en la versión 2.0 por falta de tiempo, o que han surgido con posterioridad.
En esta serie de posts recorreremos las características más interesantes incluidas en esta revisión, y comenzaremos tratando la nueva capacidad de hacer llamadas al lado cliente desde los Hubs utilizando tipado fuerte.
En esta serie de posts recorreremos las características más interesantes incluidas en esta revisión, y comenzaremos tratando la nueva capacidad de hacer llamadas al lado cliente desde los Hubs utilizando tipado fuerte.
lunes, 23 de junio de 2014
Ahí van los enlaces recopilados durante la semana pasada, espero que os resulten interesantes ;-)
.Net
- Uso de DebuggerBrowsable
Jorge Serrano - Exceptions exist for a reason – use them!
John V. Petersen