Saltar al contenido

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

18 años online

el blog de José M. Aguilar

Inicio El autor Contactar

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

¡Microsoft MVP!
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:

De: support@mvpaward.com
Asunto: ¡Enhorabuena MVP de Microsoft 2016!

image[26]

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:

image[20]

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
Resharper Ultimate Pues por última vez en este décimo aniversario del blog, mi querida instancia de System.Random ha introducido a los numerosos participantes en la coctelera y, tras agitarla enérgicamente, ha elegido aleatoriamente a los afortunados ganadores del sorteo de suscripciones a Resharper Ultimate gentilmente ofrecidos por los amigos de JetBrains, a los que desde aquí agradezco su gran apoyo.

Y hoy el algoritmo cuasimágico de generación de números pseudoaleatorios ha determinado que los ganadores son:

image Ibai Imaz @ibaiimaz
Euskal Herria
image L. Alberto Baigorria @uialberto
Santa Cruz de la Sierra, Bolivia
¡Enhorabuena a ambos! En breve me pondré con contacto con vosotros para daros indicaciones sobre el proceso para conseguir vuestras licencias. Muchas gracias también a los que no habéis tenido tanta suerte, pero bueno, no desesperéis, que dentro de diez años seguro que lo celebramos otra vez y tendréis nuevas oportunidades ;D

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!
Resharper Ultimate, de JetBrainsHoy comenzamos el último sorteo de la celebración del aniversario del blog, unas semanas en las que hemos repartido de todo, gracias a nuestros patrocinadores y amigos. Pero si hay una compañía que no podía faltar en esta celebración, esa era JetBrains, líderes indiscutibles en herramientas para desarrolladores.

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).
Sin duda, un pack de categoría.
martes, 28 de junio de 2016
ASP.NET Core¡Por fin! Tras un desarrollo muy largo y convulso, ayer se presentaron las respectivas versiones 1.0 RTM de .NET Core, ASP.NET Core y Entity Framework Core, junto con actualizaciones de una serie de productos relacionados.

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!

¡Consigue un libro gratis de O'Reilly!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 Mastering Cross-Platform Development with Xamarin
By Can Bilgin
Más info
C# 6 and .NET Core 1.0: Modern Cross-Platform Development C# 6 and .NET Core 1.0: Modern Cross-Platform Development
By Mark J. Price
Más info
jQuery Essentials jQuery Essentials
By Troy Miles
Más info
C# 6.0 in a Nutshell C# 6.0 in a Nutshell, Sixth Edition
By Joseph Albahari & Ben Albahari
Más info

CSS: The Missing Manual CSS: The Missing Manual, Fourth Edition
By David Sawyer McFarland
Más info
Learning NHibernate 4 Learning NHibernate 4
By Suhas Chatekar
Más info
Learning .NET High-performance Programming Learning .NET High-performance Programming
By Antonio Esposito
Más info
Code-First Development with Entity Framework Code-First Development with Entity Framework
By Sergey Barskiy
Más info
AngularJS: Up and Running AngularJS: Up and Running
By Shyam Seshadri, Brad Green
Más info
Concurrency in C# Cookbook Concurrency in C# Cookbook
By Stephen Cleary
Más info
RESTful Services with ASP.NET Web API 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.
       
  • 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.
¡¡No perdáis la oportunidad, que se acaba!!

Publicado en Variable not found
domingo, 26 de junio de 2016
Telerik Probablemente haya cosas mejores que hacer un domingo por la mañana, pero pocas tan gratificantes como ir a votar y después ponerse a repartir regalos :)

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
¡Enhorabuena! En breve me pondré con contacto con vosotros para facilitaros vuestras licencias. Y muchas gracias a los que no habéis tenido tanta suerte, pero no desesperéis que todavía tendréis alguna oportunidad más :)

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
ASP.NET Core Conforme el desarrollo del nuevo framework ha ido avanzando, se han producido bastantes cambios en el sistema de hosting, que es, al fin y al cabo, quien determina la forma en que podemos cambiarle el nombre a "wwwroot". En el pasado hemos publicado varios posts al respecto (aquí y aquí), y ahora vamos a actualizar los conocimientos tras los cambios aparecidos en la RC2 (sí, esa en la que en teoría no iba a cambiar demasiado respecto a la RC1 ;D).

Estructura de un proyecto ASP.NET Core en Visual Studio, donde aparece la carpeta wwwroot con un icono especialComo 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.
En este último punto es donde nos centraremos en el resto del post, viendo algunas fórmulas para conseguirlo.
martes, 21 de junio de 2016
Telerik
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
DevExpress Un domingo más, nos hemos reunido un servidor y una instancia de System.Random en un solemne acontecimiento durante el cual han sido elegidos al azar los dos ganadores del sorteo de componentes de DevExpress que iniciamos hace unos días.

Y la suerte ha señalado a:

image DevExtreme Complete
Luis A. Sánchez
@luisxkimo
Madrid
image 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
ASP.NET CoreEste post es una reedición de un contenido anterior para actualizarlo a la Release Candidate 2 de ASP.NET Core. ¡A ver si se calma todo un poco y conseguimos que los contenidos valgan más de un par de meses! ;D

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
DevExpress
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.
lunes, 13 de junio de 2016
domingo, 12 de junio de 2016
Certificado de premioLa Diosa Fortuna, materializada digitalmente como una instancia de la clase System.Random, ha seleccionado al azar los tres ganadores del sorteo de componentes Grapecity que iniciábamos la semana pasada.

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
miércoles, 8 de junio de 2016
ASP.NET CoreUno de los cambios que ha introducido ASP.NET Core RC2 respecto a la anterior Release Candidate es que dejaremos de utilizar HttpPlatformHandler para redirigir las peticiones desde IIS hacia Kestrel que, como sabemos, es finalmente el que ejecuta nuestra aplicación.

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.
martes, 7 de junio de 2016
GrapeCity
Sorteo cerrado, ya tenemos los ganadores :) Muchas gracias a todos por participar!
Hasta ahora, con motivo de la celebración del décimo aniversario del blog, como decía un amigo del blog vía Twitter, hemos regalado conocimiento: un curso online de MVC en CampusMVP, unos cuantos libros de SignalR e incluso un libro a elegir de entre una selección de O'Reilly (libro que, por cierto, ¡aún podéis reclamar!).

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 :)

Certificado de premioSeguro 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! :)
lunes, 6 de junio de 2016
domingo, 5 de junio de 2016
Sorteo de Curso de ASP.NET MVC 5 en CampusMVPDe nuevo, mi generador de números seudoaleatorios ha introducido su inocente mano virtual en el bombo y ha elegido al afortunado ganador del sorteo del curso de ASP.NET MVC 5 en CampusMVP.

And the winner iiiiiis… momentos de emoción... redoble de tambores…

Adrián López 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
miércoles, 1 de junio de 2016
ASP.NET CoreVa un post rapidito, sólo para informar de un pequeño cambio que ha introducido ASP.NET Core RC2, recientemente lanzado, relativo al nombrado de variables de entorno de sistema operativo.

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_":

Variable de entorno "ASPNETCORE_ENVIRONMENT" establecida a "Development" en las propiedades del proyecto

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.
martes, 31 de mayo de 2016
Sorteo cerrado, ya tenemos el ganador :) Muchas gracias a todos por participar!
Sorteo de Curso de ASP.NET MVC 5 en CampusMVP En dos semanas que llevamos de celebración, supongo que ya habréis visto que la cosa va en serio ;D Hemos enviado ejemplares físicos de mi libro de SignalR a varios amigos del blog, alguno de ellos a la otra parte del mundo, y hemos regalado centenares de ebooks de O’Reilly (por cierto, recordad que este regalo sigue activo hasta junio, ¡aun tenéis tiempo de conseguir el vuestro!).

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.

20 Consejos imprescindibles para programadores de C# y .NET
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.
     
Para que os quede más claro, este sería un ejemplo de comentario de un participante que sigue a Variable Not Found en todos sus perfiles posibles y al patrocinador, por lo que participaría con todas las papeletas:
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 ;D
Soy manolito en gemail seguido del correspondiente dotcom  
+TW1+TW2+FB+CAMPUSMVP
No 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!

¿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 ;D

Ese 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
lunes, 30 de mayo de 2016
Enlaces interesantesAhí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes :-)

.Net

miércoles, 25 de mayo de 2016
Promoción finalizada. Muchas gracias a los más de mil lectores que habéis participado!

¡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... :)
martes, 24 de mayo de 2016
ASP.NET Core RC2Como sabéis, hace unos días se lanzaron las respectivas versiones Release Candidate 2 de .NET Core y los frameworks ASP.NET Core y EF Core.

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.
lunes, 23 de mayo de 2016
domingo, 22 de mayo de 2016
Bien, pues mi generador de números seudoaleatorios ha hablado y ya tenemos los tres ganadores del sorteo de libros de SignalR:

image Programación con ASP.NET SignalR 2.0
Krasis Press
David Carrascosa
@carrascosad
Madrid
image Programación con ASP.NET SignalR 2.0
Krasis Press
Ellery Sammy Valest Torres
@ellerysammy
Barranquilla – Cartagena
image SignalR programming in Microsoft ASP.NET
Microsoft Press
Dachi Gogotchuri
@dachibox
Madrid
En breve me pondré en contacto con los afortunados para concretar los detalles del envío :)

¡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