Personalmente le tengo bastante aprecio a estos chicos desde que conocí su popular Resharper, una herramienta que uso a diario desde hace años, por lo que no dudé en contactar con ellos y, por supuesto, se ofrecieron amablemente a colaborar en la celebración.
Y gracias a ello, hoy sorteamos dos suscripciones a Resharper Ultimate, la suite de productos que incluye:
- Resharper para .NET. Indispensable. Creedme, una vez lo probéis os haréis adictos ;)
- Resharper para C++.
- DotTrace el profiler de rendimiento para .NET
- DotMemory, un profiler de memoria para aplicaciones .NET
- DotCover, runner de pruebas unitarias y control de cobertura de código
- DotPeek, el descompilador para.NET (que por cierto, de todas formas es gratuito y podéis descargar desde su página).
Publicado por José M. Aguilar a las 8:45 a. m.
Etiquetas: 10años, aniversario, sorteo
La verdad es que hace tan sólo unos años, presentar la nueva versión de ASP.NET en la conferencia Red Hat DevNation habría resultado una auténtica osadía y probablemente habría acabado con tomates volando hacia el escenario. Pero esto es agua pasada, y este simple gesto es una prueba más de que realmente las cosas han cambiado en Microsoft.
Con el lanzamiento de la versión 1.0 de la infraestructura .NET Core y el conjunto de frameworks basados en ella (ASP.NET, MVC, Entity Framework), iniciamos una nueva época en la que aquél sueño de desarrollar o ejecutar fácilmente aplicaciones .NET en cualquier plataforma es ya una realidad, y con todo el soporte y las bendiciones del gigante de Redmond. Escenarios antes impensables, como desarrollar desde Mac para desplegar en Linux, o crear nuestras aplicaciones en Windows y explotarlas desde un contenedor Docker, son ya posibles.
Estamos ante un reboot en toda regla: todos estos frameworks han sido construidos desde cero teniendo en mente conceptos actuales que ni siquiera existían cuando empezaron a gestarse las versiones iniciales de .NET o ASP.NET "clásicos": la nube, alto rendimiento, escalabilidad, APIs, múltiples dispositivos y plataformas, contenedores, microservicios etc. Y creados usando principios y buenas prácticas que tampoco eran los habituales antaño: inyección de dependencias, clases con responsabilidades limitadas, modularidad, componibilidad, abstracciones basadas en interfaces, pruebas unitarias…
Pues casi ha pasado un mes desde que lanzamos esta iniciativa, y ya se cuentan por centenares los seguidores de Variable not found que han descargado su libro electrónico de O'Reilly, totalmente gratis.
Sólo quería recordaros que la promoción finaliza el próximo 30 de junio (no sé si ese día aún se podrá, así que, por si acaso, mejor que asumáis que no).
Por si no os enterasteis en su momento, estamos hablando de que para celebrar el aniversario del blog, O'Reilly regala a todos los lectores un libro en formato electrónico, a elegir entre estos diez títulos de programación, o un vídeo-tutorial sobre Web API:
Mastering Cross-Platform Development with Xamarin By Can Bilgin Más info | C# 6 and .NET Core 1.0: Modern Cross-Platform Development By Mark J. Price Más info | ||
jQuery Essentials By Troy Miles Más info | C# 6.0 in a Nutshell, Sixth Edition By Joseph Albahari & Ben Albahari Más info | ||
CSS: The Missing Manual, Fourth Edition By David Sawyer McFarland Más info | Learning NHibernate 4 By Suhas Chatekar Más info | ||
Learning .NET High-performance Programming By Antonio Esposito Más info | Code-First Development with Entity Framework By Sergey Barskiy Más info | ||
AngularJS: Up and Running By Shyam Seshadri, Brad Green Más info | Concurrency in C# Cookbook By Stephen Cleary Más info | ||
Vídeo (2h): RESTful Services with ASP.NET Web API By Fanie Reynders Más info |
Además, 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 video training utilizando el código PCVW al realizar la compra.
¿Y cómo podéis conseguir vuestro regalo?
Recordad que tenéis hasta el próximo 29 de junio de 2016 para obtener vuestro regalo. Sólo tenéis que lo siguiente:- Ayudarme a difundirlo para darle el mayor alcance posible, pues estaréis contribuyendo a que más personas puedan conseguir su regalo. Por tanto, os agradecería mucho:
- Que lo comentéis con vuestros compañeros, amigos y conocidos que aún no se hayan beneficiado de esta iniciativa.
- Que publiquéis en vuestra cuenta de Twitter, Facebook u otras redes sociales un enlace hacia este post. Por ejemplo, estaría bien algo como lo siguiente, aunque podéis demostrar vuestra creatividad y poner otras cosas siempre que vayan en la dirección de los objetivos propuestos :)
Sólo HOY, @oreillymedia te regala un e-book por ser seguidor de @variablnotfound. ¡Ve a por el tuyo! http://bit.ly/295LSAJ
- O, como mínimo, para los más perezosos, que retuiteéis en Twitter o compartáis en vuestras redes sociales los mensajes de otras personas que ya lo hayan publicado.
- Que lo comentéis con vuestros compañeros, amigos y conocidos que aún no se hayan beneficiado de esta iniciativa.
- Si os apetece estar informados de las novedades del blog, seguir la nueva cuenta del blog en Twitter, @variablnotfound. A largo plazo pretendo que sea un canal exclusivo para el blog, separándolo de mi cuenta personal @jmaguilar.
- Finalmente, reclamar vuestro libro o vídeo utilizando este enlace: http://oreil.ly/1W9VAFL. El proceso es muy simple: tendréis que registraros como usuario, elegir el contenido que os interese (uno por persona), y en pocas horas tendréis acceso al mismo.
Publicado en Variable not found
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
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.