Así que, siguiendo la tradición, nos hemos reunido un servidor y su habitual instancia de System.Random para echar en el bombo las papeletas virtuales y elegir al azar los ganadores del sorteo de licencias de la suite DevCraft Complete de Telerik.
Y hoy la suerte ha señalado a:
Carlos Gómez @devcfgc Bilbao | ||
Luis Felipe Gil @lamaslg Madrid |
Me gustaría agradecer también a Telerik su gran apoyo a la celebración del aniversario del blog, que ha sido espectacular.
Ah, y mientras comenzamos el próximo sorteo, no olvidéis que por ser lectores del blog ¡aún podéis conseguir vuestro libro gratis de O'Reilly! Daos prisa porque el tiempo se acaba y en breve acabará la promoción :)
Pero seguid atentos al blog, porque el próximo será ya el último sorteo… ¿alguien había dicho que le gustaría tener una licencia de Resharper? ;)
Publicado en Variable not found
Publicado por José M. Aguilar a las 11:00 a. m.
Etiquetas: 10años, aniversario, sorteo
Como sabemos, en proyectos ASP.NET Core, la carpeta "wwwroot", también conocida como "Web root", ejerce como raíz para los contenidos estáticos de la web, es decir, es donde encontraremos todos los archivos que en algún momento enviaremos al lado cliente: javascript, CSS, favicons, imágenes, fonts, etc.
El nombre que se ha dado a la carpeta, "wwwroot", es por convención, y simplemente se trata del valor por defecto establecido por el framework, pero si no nos convence podemos cambiarlo por otro que nos parezca más conveniente. No es que vaya va a ser muy frecuente hacerlo en aplicaciones del mundo real, pero saber que se puede cambiar y cómo hacerlo es interesante porque, además de darnos la libertad de elegir, nos obliga a aprender un poco sobre las interioridades del framework.
Así, si deseamos cambiar el nombre de "wwwoot" por cualquier otro, los pasos serían básicamente tres:
- Renombrar la carpeta a nivel físico desde el IDE o desde el explorador de archivos.
- Cambiar la configuración de preprocesadores como Gulp, Grunt o WebPack para que utilicen vuestra nueva carpeta como directorio de salida, lo que podemos hacer fácilmente editando sus correspondientes archivos de configuración gulpfile.js, grunt.config, webpack.config.js o el que sea.
- Informar al framework de que esa nueva carpeta es la base para los recursos estáticos, lo que permitirá a otros componentes (por ejemplo, los middlewares encargados de retornar este tipo de contenidos) saber dónde se encuentran los archivos.
Y es que, aunque actualmente abarcan todo tipo de plataformas y tecnologías, la gran reputación conseguida durante años, sus decenas de reconocimientos y su compromiso con la comunidad .NET han hecho de esta empresa un referente para nosotros. ¿Quién no conoce Fiddler, JustDecompile, Kendo UI, o sus componentes visuales para MVC, por citar sólo algunos de sus productos?
Pues efectivamente, Telerik ha sido otra de las compañías que han decidido apoyar generosamente la celebración del décimo aniversario del blog, ofreciendo para sus lectores dos licencias de la suite DevCraft Complete, valoradas cada una en 1.499$.
Y la suerte ha señalado a:
DevExtreme Complete Luis A. Sánchez @luisxkimo Madrid | ||
Componentes ASP.NET Eloy Ortiz @_eloyortiz Baena (Córdoba) |
¡Enhorabuena a los ganadores! En breve me pondré con contacto con vosotros para indicaros los próximos pasos a dar para obtener vuestras licencias. Y muchas gracias a los que no habéis tenido tanta suerte, pero no desesperéis que todavía tendréis más oportunidades :)
Muchas gracias también al patrocinador, DevExpress, por su apoyo a la celebración del décimo aniversario del blog y por ponerlo todo tan fácil. Si sois desarrolladores no dejéis de echar un vistazo a sus productos, porque tienen cosas que seguro os pueden interesar en algún momento :)
Ah, y mientras comenzamos el próximo sorteo, no olvidéis que por ser lectores del blog ¡aún podéis conseguir vuestro libro gratis de O'Reilly! Daos prisa porque el tiempo se acaba y en breve acabará la promoción :)
Y atentos al blog, porque en breve volvemos sorteando más regalos… ¿qué os parecería ahora algo de Telerik? ;)
Publicado en Variable not found
Uno de los requisitos más habituales que tenemos en cualquier aplicación medianamente compleja es la creación de logs donde guardar información cuando ocurran determinados eventos.
En ASP.NET "clásico" teníamos varias opciones, como utilizar las propias herramientas de tracing del marco de trabajo, o bien frameworks especializados de terceros como los célebres Log4Net, NLog o muchos otros, pero al final la idea era la misma, poder disponer de un componente en el que poder registrar sucesos como el siguiente:
public ActionResult RemoveInvoice(string id) { ... // Remove the invoice _logger.LogInformation($"Invoice {id} was removed by {User.Identity?.Name}"); return RedirectToAction("Index"); }El nuevo ASP.NET Core viene equipado de serie con un sistema de logging interno, integrado en el propio marco de trabajo, que proporciona algunas funcionalidades pero, sobre todo, los mimbres básicos sobre los que montar sistemas de trazas más complejos y personalizables.
Dedicaremos este post a ver cómo se configura y utiliza este mecanismo que, como otros aspectos del framework, está construido pensando en su extensibilidad y hace uso intensivo del sistema de inyección de dependencias.
Nota: aunque la RTM se acerca, sigue siendo bueno recordar que todavía estamos utilizando una release candidate de ASP.NET Core y, por tanto, algunos detalles aún podrían variar antes de que aparezca la versión final del producto.
Tras ponerme en contacto con ellos, les entusiasmó la idea de la celebración del décimo aniversario de Variable not found e inmediatamente ofrecieron para sortear entre los lectores del blog:
- Una subscripción ASP.NET, valorada en casi 900$, que incluye componentes para ASP.NET Web Forms, extensiones para ASP.NET MVC, sistema de reporting y algunos otros extras.
- Una suscripción DevExtreme Complete, valorada en cerca de 500$, que incluye los siguientes productos:
- DevExtreme Web, widgets javascript/HTML5 de alto rendimiento para aplicaciones web, entre los que se incluyen Grids, Pivots, Charts, Forms, Calendar, etc.
- DevExtreme Mobile, un framework Javascript/HTML5 optimizado para la creación de aplicaciones móviles con look&feel nativo para las principales plataformas, soporte touch, componentes de visualización, etc.
- DevExtreme Web, widgets javascript/HTML5 de alto rendimiento para aplicaciones web, entre los que se incluyen Grids, Pivots, Charts, Forms, Calendar, etc.
.NET
- .NET Compiler Platform - Language-Agnostic Code Generation with Roslyn
Alessandro Del Sole - A Peek into .NET Open Source Contributions
Jeffrey T. Fritz - Dotnetconf 2016 videos in Channel 9
Microsoft - Implementing Soundex using LINQ (with help from OzCode)
Dror Helper - Inline IL ASM in C# with Roslyn
Alexandre Mutel - The week in .NET – 06/07/2016
Bertrand Le Roy - Generics – A Very Useful Feature in .NET
Vikas Srivastava - All about C# 6.0 New Features
Mukesh Kumar
Y los afortunados han sido:
Raul Carbonell @RaulCarbonell81 Sant Quirze del Vallès (Barcelona) | ||
Jaime de Aquino @deaquino Sevilla | ||
Edgar Ricárdez @ericardezp Coahuila de Zaragoza, México |
¡Enhorabuena! En breve me pondré en contacto con vosotros para concretar cómo podéis obtener vuestro premio :)
Y para los que no habéis tenido suerte, muchas gracias por participar :) Pero no desesperéis y estad atentos al blog que en un par de días volvemos, ¡¡esta vez repartiendo componentes de DevExpress!!
Ah, y no olvidéis que por ser lectores del blog ¡aún podéis conseguir vuestro libro gratis de O'Reilly!
Publicado en Variable not found
El problema es que este componente era un redirector genérico, no ligado a ninguna tecnología concreta, lo que impedía el uso de algunas características interesantes o necesarias para la correcta ejecución de ASP.NET Core en todos los entornos, como el soporte para directorios virtuales de IIS o el reenvío de certificados de cliente.
Con este sorteo que iniciamos hoy, comenzamos una serie en la que repartiremos herramientas para desarrolladores que os ayudarán a ser más productivos y mejorar la calidad de vuestras aplicaciones :)
Seguro que os suena Grapecity, la compañía que hay por detrás de componentes y herramientas de gran reputación como ComponentOne, Wijmo o ActiveReports. Pues tras ponerme en contacto con ellos para hablarles del décimo aniversario del blog, se ofrecieron amablemente para apoyar la celebración cediendo tres licencias completas de sus productos.
Para que os hagáis una idea del volumen de la apuesta, deciros que se trata en todo caso de productos comerciales cuyos importes pueden llegar a superar los 1.000 dólares cada uno ¡Uau! :)
.Net
- Writing Implicit and Explicit C# Conversion Operators
Jason Roberts - Un REPL para hacer pruebas rápidas con C#
José Manuel Alarcón - Strings and the CLR - a Special Relationship
Matt Warren - An Optimization Exercise
Kevin Montrose - C# 7.0 - What to Expect
Damir Arh - Conflicts in C# and Visual Basic
Tim Patrick - The week in .NET – 5/31/2016
Bertrand Le Roy - Announcing HttpClientDiagnostics
Geoffrey Huntley - SmartReactives: detect when an expression changes its value
Remy Willems - Use of IReadOnlyDictionary and IReadOnlyList properties in .NET objects
Michael B. Erickson
And the winner iiiiiis… momentos de emoción... redoble de tambores…
Adrián López @aldacosta Santiago de Compostela (Spain) |
¡Enhorabuena, Adrián! En breve nos pondremos en contacto contigo y te daremos instrucciones para comenzar a disfrutar del premio cuanto antes :)
Muchas gracias a todos por participar, y por supuesto, a CampusMVP por el gran apoyo prestado en los preparativos y difusión de esta iniciativa.
Y chicos, estad atentos porque esto no acaba aquí, y en un par de días comenzamos un nuevo sorteo :) Mientras tanto, daos prisa si aún no habéis descargado vuestro libro de regalo de O'Reilly, que van quedando pocas semanas para el cierre!
Publicado en Variable not found
Publicado por José M. Aguilar a las 11:34 a. m.
Etiquetas: aniversario, aspnetmvc, campusmvp, sorteo
Desde RC2, los nombres de las variables de entorno de sistema operativo que permiten configurar ciertos aspectos, como definir si el entorno de ejecución es "Development" o "Production" usan ahora el prefijo "ASPNETCORE_":
No es la primera vez que cambia, de hecho creo recordar tres o cuatro prefijos diferentes a lo largo de la vida del producto desde sus primeras betas, así que espero que esta sea la definitiva :)
Publicado en Variable not found.
Cuando empecé a plantearme organizar la celebración del décimo aniversario del blog siempre tuve claro que si lo hacía tenía que ser a lo grande, proporcional a mi gratitud por vuestros años de apoyo, y esto sólo podía hacerlo consiguiendo que me acompañaran los más grandes. Y empecé a contactar con las principales compañías relacionadas con nuestro sector.
Como no podía ser de otra forma, los chicos de CampusMVP fueron los primeros en sumarse a la iniciativa aportando una suscripción a su popularísimo curso de Desarrollo Web con ASP.NET MVC, del que tengo el honor de ser autor y tutor desde hace más de cinco años.
El curso, valorado en cerca de 500 euros, se desarrolla completamente online y tiene una duración de 3 meses, durante los cuales se tiene acceso a un completo temario que recorre todos los aspectos del framework MVC, vídeos, prácticas y ejercicios que conseguirán que dominéis la materia, además de tenerme a vuestra disposición para solucionar dudas sobre el temario. Al finalizar obtendréis un certificado que acreditará vuestra participación y que os puede resultar muy interesante desde el punto de vista profesional. Es, sin duda, de lo mejorcito que podéis encontrar en el mercado para aprender ASP.NET MVC (hey, que no lo digo yo que soy el padre, sino los cientos de alumnos que ya lo han hecho ;D).
Podéis ver más detalles del curso en su página oficial.
A continuación podéis ver las reglas para participar en el sorteo, pero, antes de entrar en materia, me gustaría recordaros que CampusMVP, líder en formación online en español, está continuamente ofreciendo información y recursos a la comunidad de desarrolladores a través de @campusMVP en Twitter, de su blog, su boletín electrónico mensual, y publicaciones electrónicas gratuitas. En este momento, por ejemplo, podéis descargar gratuitamente el libro en PDF “20 Consejos imprescindibles para programadores de C# y .NET”, más de 80 páginas de conocimiento concentrado sobre nuestro lenguaje favorito :)
¿Y cómo participo en el sorteo?
La forma de participar en este sorteo es muy parecida a la que utilizamos con los libros de SignalR semanas atrás, por lo que los méritos que hicisteis entonces os valdrán para participar también en este sorteo, pero introduciremos algunas leves variaciones.Los que estéis interesados en participar sólo tenéis que conseguir "papeletas"; cada uno de vosotros podéis conseguir hasta cinco papeletas, dependiendo del grado de afinidad que mostréis con Variable not found y con nuestro patrocinador ;D Obviamente, cuantas más papeletas tengáis más probabilidades tendréis de ganar el premio.
- Para conseguir la papeleta que os da derecho a participar en el sorteo sólo tenéis que escribir un comentario en este post del blog, el que queráis. Podéis aprovechar para contarme por qué queréis aprender MVC, o por qué consideráis que debería tocaros a vosotros el premio, o qué podríais ofrecerme a cambio de trucar el resultado y dároslo directamente ;D El caso es comentar algo, lo que sea. Y sobre todo incluid alguna vía para que pueda contactaros si sois los afortunados (preferiblemente email, pero también podría ser twitter o la dirección de vuestro perfil de facebook).
Ojo: si incluís el email en el comentario, usad alguna forma creativa de ocultarlo a los rastreadores para que no os frían a spam. Por ejemplo, "pedroperez en ge mail punto com", o "com gmail arroba joselito".
- Si queréis una papeleta extra y, por tanto, más posibilidades de ganar, podéis seguir la nueva cuenta en twitter del blog, @variablnotfound e incluir en el texto del comentario anterior los caracteres "+TW1".
- Obtendréis una papeleta adicional si seguís la página del blog en Facebook y añadís al comentario el texto "+FB".
- Conseguiréis otra papeleta extra si seguís mi cuenta habitual de Twitter @jmaguilar. En este caso, debéis añadir al comentario el texto "+TW2".
- Y si queréis una última papeleta, aseguraos de seguir en Twitter a @campusMVP, añadiendo el texto “+CAMPUSMVP” al comentario en el blog.
Hola, soy Manolito, me gustaría aprender ASP.NET MVC porque es lo que mi abuela siempre ha querido para mi. Y porque tengo un jamón en el almacén que no sé qué hacer con él, así que ya sabes ;DNo olvidéis incluir en el comentario los textos "+TW1", "+TW2", "+FB" o “+CAMPUSMVP” para indicar los perfiles a los que seguís, pues tengo automatizado el proceso del sorteo y las papeletas se asignarán automáticamente en función de estas pistas incluidas en el comentario ;) Y aseguraos de que lo que indicáis es cierto, porque de no ser así seréis descalificados!
Soy manolito en gemail seguido del correspondiente dotcom
+TW1+TW2+FB+CAMPUSMVP
¿Cuándo se realiza el sorteo?
El sorteo se realizará el próximo domingo 5 de junio. Todos los comentarios que entren a partir del sábado a las 23:59 UTC+2 serán eliminados, como castigo por dejarlo para última hora ;DEse día, una aplicación leerá automáticamente los comentarios del post y asignará papeletas en función de los perfiles seguidos (+TW1, +FB…). La aplicación elegirá al azar un ganador, y verificaré manualmente que su papeleta sea correcta.
Tras ser elegido, me pondré personalmente en contacto con el ganador través de la vía que haya indicado al participar. Si por cualquier motivo no fuera capaz de contactar con él en un tiempo razonable, el premio sería sorteado de nuevo entre los participantes. También lo iremos difundiendo a través del blog y los distintos perfiles sociales.
Pues nada más, ya estáis tardando en participar. ¡Espero veros en el curso!
Publicado en Variable not found
.Net
- The week in .NET – 5/24/2016
Bertrand Le Roy - Indexers in C#
Abhi Jain - FakeItEasy 2.0.0 released
Blair Conrad - 3 Ways to Loop Without do/do-while/for/foreach/etc...
Nick Chamberlain - Open sourcing ReSharper’s external annotations
Matt Ellis
¡Seguimos dándolo todo con motivo del décimo aniversario de Variable Not Found! Acabamos de finalizar el último sorteo y ya vamos a por lo siguiente, que os adelanto que os va a encantar :)
Seguro que no necesitáis que os presente a O'Reilly, pues se trata de una de las compañías de referencia en la difusión de contenidos para desarrolladores en forma de libros, eventos y cursos en vídeo desde hace más de veinte años.
Pues bien, O'Reilly ofrece a los lectores de Variable not found descuentos del 40% en libros en papel, y de 50% en libros electrónicos y vídeo cursos utilizando el código PCBW al realizar la compra. Interesante propuesta, ¿eh?
Pero no acaba ahí la cosa... :)
Los detalles ya los comentamos en un post anterior, ahora vamos a centrarnos en ver algunos cambios importantes que llaman la atención cuando empezamos a jugar con esta nueva entrega de ASP.NET Core.
Eventos
- Sevilla (España), 27 de Mayo
Revisando los principios del manifiesto ágil – ¿cómo de ágiles somos?
Javier Suárez
.Net
- Happy 25th Birthday, VB!
Anthony D. Green - Operator Overloading in C#
Abhi Jain - Using Westwind.Globalization to edit loose RESX Files
Rick Strahl - Asynchronous Programming. Getting to grips with Async and Await
George Swan - Docker and .NET Core CLR Release Candidate 2
Mano Marks - .NET Core, a call to action
Mark Rendle - Introduction to Roslyn and its use in program development
Sergey Vasiliev - The week in .NET – 5/16/2016
Bertrand Le Roy - Announcing .NET Core RC2 and .NET Core SDK Preview 1
Rick Lander
Programación con ASP.NET SignalR 2.0 Krasis Press David Carrascosa @carrascosad Madrid | |
Programación con ASP.NET SignalR 2.0 Krasis Press Ellery Sammy Valest Torres @ellerysammy Barranquilla – Cartagena | |
SignalR programming in Microsoft ASP.NET Microsoft Press Dachi Gogotchuri @dachibox Madrid |
¡Muchas gracias a todos por participar! Y no os despistéis mucho, porque esto sólo acaba de comenzar y en breve vamos a lanzar nuevas oportunidades para que os llevéis regalos aún más sorprendentes.
Publicado en Variable not found
También os adelanté que mi idea era organizar sorteos de productos y servicios proporcionados por los patrocinadores que se han sumado a este acontecimiento. Se trata de empresas que todos conocéis sobradamente y que han decidido donar productos y servicios de gran calidad (y habitualmente de un coste considerable) para vosotros.
Pero para inaugurar esta serie, quería empezar con una aportación personal que, por su significado, es para mi muy especial: sortearemos 3 ejemplares en papel de mi libro "Programación con ASP.NET SignalR".
Esta release viene cargada de novedades, comenzando por ser la primera en alinearse con el nombre "core" en los frameworks anunciado hace algunos meses, la migración desde DNX al nuevo .NET CLI (interfaz de línea de comandos de .NET), revisión profunda del modelo de hosting y arranque de aplicaciones, muchos cambios en los API (sí, no debería haber pasado desde la RC1, pero pasó...), mejoras espectaculares en rendimiento, centenares de bugs corregidos, etc.
.Net
- Params: pasando cantidad indefinida de parámetros en C#
Diego Bersano - Yield return in C#
Kenneth Truyers - Advanced Pattern Matching Features Removed From C# 7
Sergio De Simone - The week in .NET – 5/10/2016
Bertrand Le Roy - C#7 Features
Alex Mackey - Serilog 2.0 Release Plans
Nicholas Blumhardt
Diez años después, con más de ochocientas cincuenta entradas, cerca de 2.000 comentarios publicados, y acercándonos a los dos millones de páginas vistas, si hay algo que tengo claro es que esto no habría sido posible sin vosotros, queridos lectores y amigos de la Variable. Muchas gracias a todos por estar ahí durante todos estos años, por vuestras visitas, vuestras aportaciones y sugerencias, y por permitirme seguir aprendiendo de vosotros cada día.
Y como desde pequeñito me enseñaron que en este mundo hay que ser agradecido, lo mejor que puedo hacer es celebrar este grato acontecimiento con todos vosotros :)
Así que, contando con el increíble apoyo de compañías de primera línea que han decidido sumarse a esta fiesta de celebración, durante las próximas semanas vamos a realizar sorteos de productos y servicios que seguro os entusiasmarán :)
[Actualizado: 3-Julio-2016] Hemos finalizado la ronda de sorteos y regalos, y ha sido un éxito. Regalos para todos, cientos de participantes en los sorteos de productazos increíbles, premios por valor de decenas de miles de dólares en total, y mucha diversión en los comentarios que hemos recibido:
- Licencias de Resharper Ultimate.
- Por el aniversario de VariableNotFound, ¡O'Reilly te regala un libro!
- Componentes de Telerik.
- Componentes de DevExpress.
- Componentes profesionales de GrapeCity.
- Curso online de ASP.NET MVC 5 en CampusMVP.
- Ejemplares en papel de mi libro Programación con SignalR.
El blog: las cifras del año pasado
Y dicho todo lo anterior, ya sabéis que me gusta siempre hacer un breve repaso de la evolución del blog durante el año pasado, así que, para los curiosos, ahí va.Siguiendo en la tónica de los últimos años, continuamos lo que ya el año pasado denominé como una fase de leve crecimiento sostenido. Según las analíticas de Google, nos visitaron 150.000 usuarios (+6%), 272.000 páginas vistas (+0,64%), con un promedio de tiempo de estancia de 03m48s (+5%). En la página de Facebook superamos los 800 amigos (+7%), y en Twitter superamos los 1415 seguidores (+13%).
El oráculo de Google dice que la mayoría sois hombres (83%), aunque curiosamente este dato ha descendido un 7% en el último año, principalmente de entre 25 y 34 años (50%), profesionales de internet, tecnófilos, aficionados al cine y TV, entusiastas de los móviles y de los deportes (fútbol, principalmente).
Chrome sigue siendo el navegador más usado para acceder a los contenidos, con más del 73% de los usuarios. Respecto al año pasado, siguen cayendo Firefox (16%) y IE (6%). El nuevo Edge no supera el 1%. El 92% de vosotros usáis Windows, siendo Mac el segundo más utilizado con el 3%. Curiosamente, el 50% lo hacéis desde Windows 7, el 23% desde Windows 8.1, y algo más del 16% estáis ya utilizando Windows 10.
Tras varios años de incremento de visitas procedentes del otro lado del Atlántico, el origen de las visitas está prácticamente igualado ya entre España (22%) y Mexico (21%). Algo detrás, pero también in crescendo, tenemos Colombia (11%), Perú (8%), Argentina (7%) y Chile (6%).
Como es habitual, el 83% de las visitas proceden de los buscadores, Google en más del 99% de las ocasiones. El acceso directo, introduciendo la URL o desde favoritos, se utiliza el 10% de las ocasiones, y apenas un 4% de enlaces desde otros sitios web.
Y respecto a la pregunta que me han hecho tantas veces: "¿Y realmente te vale la pena? ¿Qué sacas tú de esto?" La respuesta sigue siendo una afirmación categórica, por supuesto que vale la pena. La satisfacción que supone escribir sobre lo que me gusta y pensar que esto puede ser útil a alguien es inigualable, y los grandes amigos que voy haciendo a lo largo de este camino no tienen precio. Sólo esto ya compensa al 100% el esfuerzo que supone mantener un blog tanto tiempo.
Pero dejando los intangibles aparte, también aporta otro tipo de beneficios más terrenales, aunque no por el lado de la publicidad, que es el que parecería obvio: Adsense sigue básicamente en su tónica; los ingresos me permiten invitar a mi familia a almorzar un par de veces al año, pero decididamente esto no va a ayudarme a liquidar la hipoteca ;D Ni rastro tampoco de los posts patrocinados de antaño, ni de anunciantes fijos que sí disfruté hace algunos años ya.
Los beneficios son indirectos y llegan en forma de visibilidad y oportunidades profesionales que de otra forma no habrían sido posibles. Por tanto, os puedo decir de primera mano que realmente un blog no sólo os podría ayudar a encontrar empleo; si prestáis servicios profesionales de cualquier tipo, vuestra bitácora puede seros incluso de más utilidad que contratar una valla publicitaria en vuestra autopista favorita ;D
Eso sí, también os puedo decir que en ningún caso, al menos de los que conozco, se trata de un retorno inmediato: se requieren años para llegar a este punto, y de hecho lo más habitual es que se caiga por el camino antes de conseguirlo. Pero sinceramente, no es nada que con un poco de paciencia y tesón no pueda conseguirse, así que os animo a lanzaros de forma decidida, que seguro que vuestro yo del futuro os lo agradecerá ;)
Y finalmente, aprovecho estas últimas líneas para agradeceros de nuevo vuestro incondicional apoyo durante todo este tiempo, y espero que sigáis por aquí muchos años más, ayudándome a buscar la Variable.
Publicado en Variable not found.
.Net
- Creating a phone number lookup bot using Microsoft Bot Framework and C#
Marcos Placona - Arithmetic Overflow and Underflow in .NET - Some Nitty Gritties
Rasik Bihari Tiwari - New features of C# 7.0
Sarva Raghavan - Tooling to Facilitate Framework Migrations
Bertrand Le Roy - .NET: Shared App Settings
Keith Burnell - Introduction to .NET Framework Compatibility
Mike Rousos - The week in .NET – 5/3/2016
Bertrand Le Roy - Free eBook C# 6.0: What’s New Quick Start Complete
Jason Roberts - 8 things you probably didn’t know about C#
Damien Guard - C# Bad practices: Learn how to make a good code by bad example – Part 2
Radosław Sadowski
Hace un par de días, Scott Hunter, Program Manager de .NET en Microsoft, desvelaba las fechas de aparición y otros detalles sobre las próximas releases de ASP.NET Core, de las que no teníamos noticias desde el pasado mes de febrero, momento en que decidieron retrasar los lanzamientos previstos.
Veamos cómo queda ahora la cosa.
En ASP.NET "clásico" teníamos varias opciones, como utilizar las propias herramientas de tracing del framework o frameworks especializados de terceros como los célebres Log4Net, NLog o muchos otros, pero al final la idea era la misma, poder disponer de un componente en el que poder registrar sucesos como el siguiente:
public ActionResult RemoveInvoice(string id) { ... // Remove the invoice _logger.LogInformation($"Invoice {id} was removed by {User.Identity?.Name}"); return RedirectToAction("Index"); }El nuevo ASP.NET Core viene equipado de serie con un sistema de logging interno, integrado en el propio marco de trabajo, que proporciona funcionalidades básicas pero, sobre todo, los mimbres básicos sobre los que montar sistemas de trazas más complejos y personalizables.
Dedicaremos este post a ver cómo se configura y utiliza este mecanismo que, como otros aspectos del framework, está construido pensando en su extensibilidad, y hace uso intensivo del sistema de inyección de dependencias.
Nota: aunque este componente no es un gran candidato a cambiar dada las pocas actualizaciones que ha sufrido en los últimos meses, es bueno recordar que todavía estamos utilizando una release candidate de ASP.NET Core y, por tanto, algunos detalles aún podrían variar antes de que aparezca la versión final del producto.
.Net
- Building strongly typed application configuration utility with Roslyn
Filip Woj - Background Tasks in .NET
Derek Comartin - The week in .NET – 4/27/2016
Bertrand Le Roy - Choosing The Right Collection
Arthur Minduca - The .NET of Tomorrow
Ed Charbeneau - Serializing JSON Data into Binary Form
Mahesh Sabnis - Thread.Sleep in Tests Is Evil
Steve Smith - netstandard–El “estándar” que viene
Eduard Tomás
Al hilo de lo tratado en el último post sobre la ramificación del pipeline de ASP.NET Core utilizando los extensores
Map()
y MapWhen()
, el amigo Fernando V. dejaba una pregunta interesante en los comentarios del blog:"[…] Igual que hemos visto cómo ramificar el pipeline, sería posible volver a unir las distintas ramas en una sola?"Tampoco creo que sea muy habitual crear este tipo de estructuras en el pipeline, pero la verdad es que me ha parecido un reto muy interesante, lo suficiente como para dedicarle un post ;D
.Net
- Exploiting the ConcurrentDictionary in Asynchronous Applications
Peter Vogel - Edit and Continue Part 2 – Roslyn
Josh Varty - Why Azure REST API-s and how to prepare for using them?
Gunnar Peipman - The week in .NET – 4/19/2016
Bertrand Le Roy - Edit and Continue Part 1 – Introduction
Josh Varty - Introducing the Microsoft .NET Framework Repair Tool Version 1.3
Rakesh Ranjan Singh - If You Want to Get Into OSS, Consider This Project
James Chambers - 2D Polyline Vertex Smoothing
Ven RP
Al representar gráficamente el pipeline de ASP.NET Core, lo habitual es hacerlo como una tubería única en las que colocamos estratégicamente los middlewares que procesarán las peticiones que entrarán por ella.
Incluso a nivel de código, la inserción de middlewares se realiza normalmente invocando métodos del tipo
UseXXX()
sobre la instancia de IApplicationBuilder
que recibimos en el método Configure()
de la clase Startup
de nuestras aplicaciones ASP.NET Core.Esto parece dar a entender que el pipeline es lineal, y que todas las peticiones serán procesadas de la misma forma y por los mismos middlewares, salvo que alguno de ellos decida cortocircuitar la petición.
Sin embargo, aunque eso será lo más frecuente, no es obligatoriamente así. Ya desde los tiempos de Katana tenemos la posibilidad de dividir el pipeline en branches o ramas en función de determinados criterios, permitiéndonos crear configuraciones mucho más complejas y potentes que las que habitualmente suelen mostrarse.
Como ejemplo, en el diagrama lateral podemos observar un pipeline en cuya entrada se encuentra un middleware de gestión de errores, y que a continuación se divide en función de la ruta de la petición de entrada. Así, las peticiones cuyas rutas comiencen por "/SignalR" serán procesadas por los middlewares configurados en la rama de la izquierda; las que comiencen por "/API" serán procesadas a lo largo de la rama derecha, y el resto continuará su proceso por la rama central.
Vamos a ver cómo conseguir crear estas estructuras, pero, como siempre, tened en cuenta que estamos aún trabajando con una versión preliminar de ASP.NET Core y hay detalles que podrían cambiar en la versión definitiva.