lunes, 29 de octubre de 2018
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cancelación de peticiones en ASP.NET Core y MVC
José María Aguilar - Cómo reconocer a los buenos desarrolladores
José María Aguilar
.NET / .NET Core
- Dependabot for .NET Core dependency tracking in GitHub
Scott Hanselman - Use structures to improve the lisibility of your code
Gérald Barré - Venciendo el miedo a las pruebas unitarias en .Net
Jorge Turrado - C# Intermetiade - Queue, Stack and Hashtable Collections in C#
Marinko Spasojevic - .NET Core Source Code Analysis with Intel® VTune™ Amplifier
Varun Venkatesan, Li Tian & Denis Pravdin - Comparing speed of ToUpper, ToUpperInvariant, ToLower and ToLowerInvariant in .NET Framework and .NET Core
Jiří Činčura - Secure Random Integers in .NET Core 3
Kevin Jones - Playing with C# 7
Adam Storr - Performance in .NET – Part 2
Ricardo Peres
Publicado por José M. Aguilar a las 9:13 a. m.
Nadie ha comentado la entrada, ¿quieres ser el primero?
Etiquetas: enlaces
martes, 23 de octubre de 2018
Desde que comenzamos a programar con ASP.NET MVC tenemos interiorizado que si en nuestras acciones vemos código repetido, suele ser un candidato a ser implementado en forma de filtro. Así, durante años hemos implementado en forma de action filters asuntos transversales de nuestras aplicaciones, como la seguridad, logging, caching y otros aspectos.
Sin embargo, a veces olvidamos que estas mismas técnicas podemos utilizarlas para simplificar código en la implementación de convenciones o funciones más ligadas al negocio o a funcionalidades de nuestra aplicación. Por ejemplo, ¿no estáis aburridos de escribir acciones como las siguientes?
Sin embargo, a veces olvidamos que estas mismas técnicas podemos utilizarlas para simplificar código en la implementación de convenciones o funciones más ligadas al negocio o a funcionalidades de nuestra aplicación. Por ejemplo, ¿no estáis aburridos de escribir acciones como las siguientes?
public class FriendsController: Controller
{
public IActionResult View(int id)
{
var friend = _friendServices.GetById(id);
if(friend == null)
return NotFound();
... // Prepare and show "View" view
}
public IActionResult Edit(int id)
{
var friend = _friendServices.GetById(id);
if(friend == null)
return NotFound();
... // Prepare and show "Edit" view
}
public IActionResult Delete(int id)
{
var friend = _friendServices.GetById(id);
if(friend == null)
return NotFound();
... // Prepare and show "Delete" view
}
...
}
Pues bien, vamos a aplicar el mismo principio para simplificar este código y eliminar duplicidades extrayendo las porciones comunes a un filtro, resultando en algo así de bonito:
[Autoload(typeof(Friend))] // ¡Magia!
public class FriendsController: Controller
{
public Task<IActionResult> View(Friend friend)
{
... // Prepare and show "View" view
}
public Task<IActionResult> Edit(Friend friend)
{
... // Prepare and show "Edit" view
}
public Task<IActionResult> Delete(Friend friend)
{
... // Prepare and show "Delete" view
}
...
}
No sé lo útil que podrá resultar en la práctica pero, como mínimo, nos ayudará a conocer mejor cómo funciona por dentro el framework ASP.NET Core MVC.
lunes, 22 de octubre de 2018
Después del parón de la semana pasada debido a compromisos profesionales (¡hola, chic*s!), continuamos con una nueva recopilación de enlaces que, como siempre, espero que os resulten interesantes :)
Por si te lo perdiste...
- ¿Dónde está Server.MapPath() en ASP.NET Core?
José M. Aguilar - 7 Hábitos de personas altamente innovadoras
José M. Aguilar
.NET / .NET Core
- Announcing .NET Core 2.2 Preview 3
Rich Lander - No InternalsVisibleTo, no problem – bypassing C# visibility rules with Roslyn
Filip Woj - Announcing ML.NET 0.6 (Machine Learning .NET)
César de la Torre - Working with the Dynamic Type in C#
Camilo Reyes - Using multiple instances of strongly-typed settings with named options in .NET Core 2.x
Andrew Lock - New prescriptive guidance for Open Source .NET Library Authors
Scott Hanselman - Nice little trick when working with Expression API
Sacha Barber - .Net Core 2: Managing Secrets in Web Apps - TechNet Articles - United States (English)
Jayendran arumugam - When Is It Okay to Use a C# Partial Class?
Carlos Schults - C# Intermediate - Abstract Classes in C#
Marinko Spasojevic - Don't Code Tired | Setting Up Mock ref Return Values in Moq
Jason Roberts - #MLNET – Analizando datos de la Pipeline con la nueva version API 0.6.0 (gracias LINQ!)
Bruno Capuano - Inyección de Dependencias en .Net Framework
Jorge Turrado
martes, 9 de octubre de 2018
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Recomendarías a tu hijo que se dedicase al mundo del desarrollo de software?
José M. Aguilar - Cómo incluir scripts en la página desde vistas parciales ASP.NET Core MVC con DynamicSections
José María Aguilar
.NET / .NET Core
- .NET Core 2.0 Sees End of Life, 2.1.5 Update Released
David Ramel - Update on .NET Core 3.0 and .NET Framework 4.8
Scott Hunter - I didn't understand why people struggled with (.NET's) async
Dan - C# Intermediate: Structures in C# & Enumerations in C#
Marinko Spasojevic - The danger of TaskCompletionSource<T> class
Sergey Teplyakov - Using Async with ManualResetEventSlim
Calvin H. - BenchmarkMockNet: Benchmarking .NET Mocking Libraries
Steve Desmond - Middle Ground between Server and Workstation GC
Maoni Stephens - Unit Testing With .NET Core
Jeremy Morgan - .NET Tip: Testing Private Fields
Peter Vogel - A Recap about Creating Maps for AutoMapper in .NET Core
Silvia Campo - FixedTimeEquals in .NET Core
Kevin Jones - LINQ Stinks - code smells in your LINQ
Mark Heath - A History of .NET Runtimes
Matt Warren
martes, 2 de octubre de 2018
Pues como uno que os habla, seguro que muchos de vosotros habéis comparado miles de veces si un objeto es nulo utilizando un patrón de código C# como el siguiente:
Pues aunque pueda parecer raro, hay casos en los que la comparación anterior no funcionaría bien... o mejor dicho, no funcionaría como esperamos.
Hace unos días leía un post de Khalid Abuhakmeh en el que hacía referencia a una charla de Channel 9 en la que Mads Torgersen recomendaba no utilizar la doble igualdad para comparar con
var invoice = _invoiceRepository.GetById(18);
if(invoice == null)
{
// Hacer algo
}
¿Qué podría salir mal, verdad?Pues aunque pueda parecer raro, hay casos en los que la comparación anterior no funcionaría bien... o mejor dicho, no funcionaría como esperamos.
Hace unos días leía un post de Khalid Abuhakmeh en el que hacía referencia a una charla de Channel 9 en la que Mads Torgersen recomendaba no utilizar la doble igualdad para comparar con
null
(minuto 33:00, aprox.)
lunes, 1 de octubre de 2018
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste:
- 10 razones por las que tu blog te ayuda a encontrar empleo
José María Aguilar - Redirecciones HTTP 303, 307 y 308: ¿las conoces?
José María Aguilar
.NET / .NET Core
- Scripts to remove old .NET Core SDKs
Scott Hanselman - Async pitfalls: deferred work and resource ownership
Ian Griffiths - Asynchronous functors
Mark Seemann - "ImageResizer" is now "dotnet srcset"
Steve Desmond - Getting the date of build of a .NET assembly at runtime
Gérald Barré - How to generate a zip containing the user personal data to be GDPR compliant in .Net Core 2.1.
Silvia Campo - A command-line REPL for RESTful HTTP Services
Scott Hanselman - [.NET Internals 09] Just-In-Time (JIT) compilation
Dawid Sibiński - C# Intermediate - Static Members in C# & Anonymous and Nullable Types in C#
Marinko Spasojevic - Performance in .NET – Part 1
Ricardo Peres - How Microsoft rewrote its C# compiler in C# and made it open source
Mads Torgersen