martes, 22 de noviembre de 2016
A continuación desgranaremos un poco qué se incluye en esta entrega, pero gracias al uso de versionado semántico, sin entrar en más detalles ya podemos saber que esta nueva versión añade características adicionales y mejoras compatibles hacia atrás, por lo que no tendríamos que preocuparnos por romper algo si actualizamos a ella (¡al menos en teoría, claro! ;)).
Publicado por José M. Aguilar a las 8:55 a. m.
Nadie ha comentado la entrada, ¿quieres ser el primero?
Etiquetas: aspnetcore, aspnetcoremvc, novedades
jueves, 3 de noviembre de 2016
Pues de nuevo este año voy a tener inmensa fortuna de dar el salto a la otra parte del mundo para asistir al eventazo anual que Microsoft organiza para sus MVP. Una nueva ocasión para salir un poco de la cueva y conocer lo que se está cociendo en los hornos del gigante, en el marco incomparable de su campus en Redmond.
Aunque por supuesto, los cientos de sesiones técnicas a las que podré asistir son uno de los grandes motivos para hacer un viaje de esta magnitud, he de reconocer que una de las cosas que más valoro de mi asistencia es pasar unos buenos ratos con colegas y amigos a los que sólo veo en ocasiones como estas y de cuya compañía disfruto cada minuto.
Y dicho esto, cierro las maletas y casi salgo pitando para el aeropuerto, que ya voy tarde ;D
¡Nos vemos a la vuelta!
Publicado en Variable not found.
lunes, 31 de octubre de 2016
.NET
- How does the 'fixed' keyword work?
Matt Warren - The week in .NET – .NET, ASP.NET, EF Core 1.1 Preview 1 – On .NET on EF Core 1.1 – Changelog – FluentValidation – Reverse: Time Collapse
Bertrand Le Roy - Interception in .NET – Part 4: An Interception Framework
Ricardo Peres - Roslyn - How to create a custom debuggable scripting language?
Michal Komorowski
martes, 25 de octubre de 2016
maxlength
en los cuadros de texto, máxime cuando esta información solíamos incluirla en anotaciones de las clases del modelo con atributos como StringLength
o MaxLength
.Y ha llovido bastante desde entonces, incluso el framework MVC se ha "reseteado" y ahora es ASP.NET Core MVC, pero seguimos sin disponer de esa posibilidad, que cubre un escenario muy frecuente al desarrollar aplicaciones con este framework.
En este post vamos a ver, paso a paso, cómo utilizar los maravillosos tag helpers para incluir este atributo de forma automática en los tags
<input>
vinculados a propiedades del modelo cuyos metadatos indiquen un tamaño máximo para el campo.
lunes, 24 de octubre de 2016
Como de costumbre, espero que os resulten interesantes :-)
.NET
- You're using HttpClient wrong and it is destabilizing your software
Simon Timms - Making .NET code less allocatey - Allocations and the Garbage Collector
Maarten Balliauw - Serialización de datos: Protocol Buffers
Javier Torrecilla - The week in .NET – Bond – The Gallery
Betrand Le Roy - Notes from the ASP.NET Community Standup – October 11, 2016
Jeffrey T. Fritz - Interception in .NET – Part 3: Static Interception
Ricardo Peres
martes, 18 de octubre de 2016
Me consta que muchos lo estabais esperando con impaciencia, así que me complace anunciaros que desde hace unos días tenéis disponible mi nuevo curso sobre ASP.NET Core MVC en CampusMVP.
Su creación sido un proceso realmente largo y laborioso porque, a diferencia de ediciones anteriores, los cambios que trae consigo el nuevo marco de trabajo han obligado a replantear desde el principio los contenidos, pero creo que el resultado ha valido la pena: un curso potente y completo en el que recorremos el marco de trabajo desde las bases que lo sustentan (ASP.NET Core) hasta la programación de aplicaciones y servicios con el framework ASP.NET Core MVC.
En este post intentaremos responder a las siguientes preguntas:
- ¿En qué consiste el curso de ASP.NET Core MVC?
- ¿Cuáles son los contenidos del curso?
- ¿Es este curso para mi?
- ¿Qué conocimientos previos necesito para seguir el curso?
- ¿Y qué ocurre con MVC 5 o los demás frameworks basados en ASP.NET 4.x?
- Me convence, ¿cuándo empezamos?
martes, 11 de octubre de 2016
El framework nos ofrece distintas fórmulas para generar direcciones, aunque la más básica es utilizar extensores de
IUrlHelper
como Action()
, Link()
o RouteUrl()
. Tenemos instancias de dicho interfaz disponibles en la propiedad Url
de controladores y vistas, pero también podemos reclamarlas directamente al sistema de inyección de dependencias en otros contextos. Asimismo, en las vistas podemos utilizar helpers específicos para generar hipervínculos, como el clásico Html.Action()
, o el más reciente tag helper <a>
.
lunes, 10 de octubre de 2016
.NET
- Audit.NET: A small framework to audit .NET object changes
Federico Daniel Colombo - New Features of C# 7.0
Prasad kulkarni - Screen Recorder in .NET
Arun Chandrasekhara Pillai - The week in .NET – On .NET on Cecil – NAudio – SpeechCentral – Hand of Fate
Bertrand Le Roy - Story of Equality in .Net - Part 6
Ehsan Sajjad - Pluralization: The missing part of .NET & PluralNet: Pluralization for your .Net application
Rudy Huyn
martes, 4 de octubre de 2016
Startup
es donde introducimos el código de inicialización de nuestras aplicaciones. En sus métodos Configure()
y ConfigureServices()
encontraremos aspectos de todo tipo, como los siguientes, por citar sólo algunos:- La configuración del sistema de settings
- Definición de destinos de logs y niveles de trazas
- Configuración de componentes de tratamiento de errores y sistemas de depuración y profiling adicionales
- Configuración de servicios como caching o estado de sesión
- Inserción y configuración de servicios y middlewares del framework, como los destinados al proceso de contenidos estáticos, internacionalización, CORS, u otros
- Middlewares personalizados
- Registro de servicios en el sistema de inyección de dependencias
- Inicializaciones específicas de la aplicación, como seeds de bases de datos o configuración de mapeos entre objetos
- Configuración de rutas de la aplicación
- …
lunes, 3 de octubre de 2016
.NET
- Optimising LINQ
Matt Warren - Convirtiendo Entidades de Dominio a Dtos y viceversa, parte I & parte II
Javier Torrecilla - Un-swallowing Swallowed Exceptions with Fody and IL Weaving
Nick Chamberlain - The week in .NET: On .NET on Orchard 2 – Mocking on Core – StoryTeller – Armello
Bertrand Le Roy - Introducing .NET Standard
Immo Landwerth - .NET Standard, una única Library para gobernarlos a todos!
Bruno Capuano - Yield or Not To Yield
Pavel Rytikov
martes, 27 de septiembre de 2016
En más de una ocasión me he topado con artículos que sugerían que ASP.NET Core MVC es un middleware y de hecho, incluso en algunos momentos yo también he tenido la sensación de que podía serlo.
Sin embargo, y esta es la respuesta corta si quieres ahorrar tiempo de lectura, estrictamente hablando no lo es.
lunes, 26 de septiembre de 2016
.NET
- When a disk cache performs better than an in-memory cache (befriending the .net GC)
Dan Roberts - Asynchronous Programming in C# using Async Await – Best Practices
Damir Arh - The week in .NET: On .NET with Steeltoe – C# Functional Extensions – Firewatch
Bertrand Le Roy - Inspecting aspects and interception in .NET, part I, II & III
Erik Heemskerk - Compact strings in the CLR
Matt Warren - Designing with Exceptions in .NET
Jonathan Allen - Channelling my inner geek
Marc Gravell
miércoles, 20 de julio de 2016
Parecía que no llegaban, pero por fin están aquí las vacaciones :)
Como suele ser habitual por esta época, colgaré temporalmente los hábitos digitales y durante las próximas semanas el blog quedará a merced de las olas. Aunque la mayor parte del tiempo seguiré trabajando en distintos temas, espero poder reducir un poco la intensidad y tomar aunque sea algunos días de descanso para poder disfrutar de la familia y darme algún que otro bañito relajante en las costas de Cádiz.
Espero que nos veamos a la vuelta, todos morenitos y con las pilas al 100%, ya en el mes de septiembre.
¡Felices vacaciones, amigos!

Imagen: Atardecer en Costa Ballena (Rota-Cádiz)
Autor: Ramón Sobrino https://trapatroles.wordpress.com/2015/04/08/rota-cadiz/
Como suele ser habitual por esta época, colgaré temporalmente los hábitos digitales y durante las próximas semanas el blog quedará a merced de las olas. Aunque la mayor parte del tiempo seguiré trabajando en distintos temas, espero poder reducir un poco la intensidad y tomar aunque sea algunos días de descanso para poder disfrutar de la familia y darme algún que otro bañito relajante en las costas de Cádiz.
Espero que nos veamos a la vuelta, todos morenitos y con las pilas al 100%, ya en el mes de septiembre.
¡Felices vacaciones, amigos!
Imagen: Atardecer en Costa Ballena (Rota-Cádiz)
Autor: Ramón Sobrino https://trapatroles.wordpress.com/2015/04/08/rota-cadiz/
martes, 19 de julio de 2016
Hoy vamos a hablar de las variables de sesión, un tema que ya tratamos por aquí hace bastante tiempo, pero que conforme evolucionaba el producto ha cambiado lo suficiente como para dedicarle un nuevo post.
lunes, 18 de julio de 2016
.NET
- The cost of garbage collection
Szymon Warda - Cambios de zona horaria en .NET
CampusMVP - Accessing and deleting large e-mails in Gmail with C#
Bruno Sonnino - LongRunning Is Useless For Task.Run With async-await
Bar Arnon - Fast Deep Copy of Objects by Expression Trees (C#)
Fakon - Simplest C# code to post a tweet using OAuth
Danny Tuppeny
martes, 12 de julio de 2016
Pero como sabemos, en ASP.NET Core el sistema de configuración ha cambiado para mejor, y ahora los settings podemos almacenarlos en archivos JSON independientes del resto de configuraciones del proyecto, así como en otros formatos y ubicaciones. Y ya que se ponían con el tema, el equipo de ASP.NET ha aprovechado para hacer que podamos modificar los settings sobre los archivos de configuración y que éstos sean aplicados sobre la marcha, sin necesidad de volver a arrancar la aplicación.
lunes, 11 de julio de 2016
.NET
- Upload File to SFTP Site with C# in Visual Studio .NET
Slccocdev - Avoidable colletion mistakes in C#
Trevor Ash - AutoMapper 5.0 Released
Jimmy Bogard - How to Write Your Own Programming Language in C#
Vassili Kaplan - .NET Backward Compatibility – Part 1, Part 2 & Part 3
Bastian Eicher - Story of Equality in .Net - Part 3 & Part 4
Ehsan Sajjad - Querying JSON using LINQ
Mahesh Sabnis - What is the Extension Method in C#?
Dhananjay Kumar - The async/await model and its perils
& The cost of the async state machine
Ayende Rahien
lunes, 4 de julio de 2016
Para contaros penas ya están los telediarios, así que simplemente quería compartir vosotros una alegría de la que, de alguna u otra forma, sois también artífices: el pasado viernes me notificaron desde Microsoft que he sido reconocido nuevamente como MVP :)
Supongo que todos habréis visto ya la pinta que tiene este ansiado mail, pero para los que acabéis de llegar, el mensaje de notificación del nombramiento viene a ser más o menos como sigue:
Esta vez me ha pillado por sorpresa porque en el fragor de la batalla diaria no me había dado cuenta de que era día uno de julio, que es la fecha en la que conozco si me otorgan o no esta distinción, por lo que no he tenido la tensa espera de otras veces… y os confirmo que, a pesar de ser la sexta vez, la mezcla de emoción, alegría y orgullo es la misma :)
Una novedad curiosa es que dejo de ser MVP en ASP.NET/IIS, como ocurría años anteriores, y paso a ser MVP en la categoría Visual Studio and Development Technologies . Pero no, no es que haya cambiado de especialidad; este cambio es debido a las modificaciones al programa MVP que anunció Microsoft meses atrás, que introducía nuevas categorías de "grano grueso" en las que englobarían especializaciones más concretas:
![image[20] image[20]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5oqleoTTBHdTywJKDYeY3ih2Qa_pN1UGxU2l3WDAuPYWml_gD3hGY2r0EK65yWvAAE80mHu2LpAkU5fm1FZxabfxl0i8eK9HDVGnCVctj0aciKbuR0AoMr6c89bp5U7RCAwsnLw/?imgmax=800)
Muchas gracias al equipo del programa MVP en Microsoft, a la gran Cristina González, MVP lead para esta parte del mundo, y a todos vosotros, amigos de Variable not found, por hacerlo posible.
Es un honor seguir formando parte de este privilegiado grupo de personas que cada día dedican su tiempo y entusiasmo para compartir conocimientos con la comunidad de desarrolladores, y entre los que cuento ya grandes amigos. Sinceramente, cada vez me siento más afortunado de pertenecer a esta pandilla y, como sé que esto es algo que lógicamente en algún momento habrá de acabarse, estoy disfrutando el momento como nadie :)
Ah, y ¡enhorabuena al resto de MVP nombrados el mismo día!
Publicado en Variable Not Found.
Supongo que todos habréis visto ya la pinta que tiene este ansiado mail, pero para los que acabéis de llegar, el mensaje de notificación del nombramiento viene a ser más o menos como sigue:
De: support@mvpaward.com Asunto: ¡Enhorabuena MVP de Microsoft 2016! Estimado/a Jose Maria Aguilar, Enhorabuena. Nos complace anunciarle el Premio MVP de Microsoft® de 2016. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa con otras personas su profundo conocimiento técnico así como su experiencia en el uso de la tecnología. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de Visual Studio and Development Technologies a lo largo del pasado año. |
Esta vez me ha pillado por sorpresa porque en el fragor de la batalla diaria no me había dado cuenta de que era día uno de julio, que es la fecha en la que conozco si me otorgan o no esta distinción, por lo que no he tenido la tensa espera de otras veces… y os confirmo que, a pesar de ser la sexta vez, la mezcla de emoción, alegría y orgullo es la misma :)
Una novedad curiosa es que dejo de ser MVP en ASP.NET/IIS, como ocurría años anteriores, y paso a ser MVP en la categoría Visual Studio and Development Technologies . Pero no, no es que haya cambiado de especialidad; este cambio es debido a las modificaciones al programa MVP que anunció Microsoft meses atrás, que introducía nuevas categorías de "grano grueso" en las que englobarían especializaciones más concretas:
Muchas gracias al equipo del programa MVP en Microsoft, a la gran Cristina González, MVP lead para esta parte del mundo, y a todos vosotros, amigos de Variable not found, por hacerlo posible.
Es un honor seguir formando parte de este privilegiado grupo de personas que cada día dedican su tiempo y entusiasmo para compartir conocimientos con la comunidad de desarrolladores, y entre los que cuento ya grandes amigos. Sinceramente, cada vez me siento más afortunado de pertenecer a esta pandilla y, como sé que esto es algo que lógicamente en algún momento habrá de acabarse, estoy disfrutando el momento como nadie :)
Ah, y ¡enhorabuena al resto de MVP nombrados el mismo día!
Publicado en Variable Not Found.
domingo, 3 de julio de 2016
Y hoy el algoritmo cuasimágico de generación de números pseudoaleatorios ha determinado que los ganadores son:
Ibai Imaz @ibaiimaz Euskal Herria | ||
L. Alberto Baigorria @uialberto Santa Cruz de la Sierra, Bolivia |
Y así, damos por finalizada la ronda de sorteos por la celebración del décimo aniversario del blog. Al comenzar esta iniciativa quería que fuera algo grande y espero haber conseguido al menos un poco de dicho objetivo: todos os habéis llevado un libro de O'Reilly, muchos de vosotros conseguisteis grandes premios, pero lo más importante es que con todo esto espero haber sido capaz de transmitiros mi agradecimiento por estar siempre ahí, ayudándome a encontrar la variable.
Venga, ¡a por los próximos diez años!
Publicado en Variable not found
miércoles, 29 de junio de 2016
Sorteo finalizado, ya tenemos los ganadores. ¡Muchas gracias a todos por participar!
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).
martes, 28 de junio de 2016
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…
lunes, 27 de junio de 2016
Promoción finalizada. Muchas gracias a los más de mil lectores que habéis participado!
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
domingo, 26 de junio de 2016
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
miércoles, 22 de junio de 2016
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.
martes, 21 de junio de 2016
Sorteo cerrado, ya tenemos los ganadores :) Muchas gracias a todos por participar!
Imaginad que estáis asistiendo a un evento destinado a desarrolladores .NET, elegís al azar a cualquier otro asistente y le preguntáis el nombre de una compañía líder en componentes y herramientas para desarrolladores con tecnologías Microsoft. Seguro que coincidís conmigo en que Telerik tendría muchas probabilidades de aparecer en la respuesta :)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$.
domingo, 19 de junio de 2016
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
miércoles, 15 de junio de 2016
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.
martes, 14 de junio de 2016
Sorteo cerrado, ya tenemos los ganadores :) Muchas gracias a todos por participar!
DevExpress es, sin duda, una de esas compañías que identificamos como líderes en el mercado de componentes y herramientas para desarrolladores por la calidad de sus productos y por el amplio abanico de plataformas a las que se dirigen. De hecho, año tras año son reconocidos con premios y honores que los sitúan entre los mejores y más reconocidos del panorama actual. Es decir, hablamos de nuevo de uno de los grandes :)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.
lunes, 13 de junio de 2016
.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