
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Las 10 cosas que más fastidian a los programadores
José María Aguilar - Valores y parámetros en cascada con Blazor
José María Aguilar
.NET Core / .NET
- Understanding Task and ValueTask in C#
Code Maze - Give your strings context with StringSyntaxAttribute
Steven Giesel - ConcurrentBag in C#
Code Maze - Adding NuGet packages when offline
Mark Seemann - Challenge: what does this code print? & The answer
Oren Eini - C# 11 List Patterns - Create compatible types
Gérald Barré - .NET Tips and Tricks & ValueStringBuilder
Steven Giesel - OpenTelemetry in .NET - Basic Usage With Examples
Phil Broderick - ReadOnlySpan<char> and strings
Steven Giesel - How to Use Change Tokens in .NET 7?
Goker Akce - Why tuples in C# are not always a code smell
Dennis Frühauff - Automating Integration Tests using the “Critter Stack”
Jeremy D. Miller - Avoiding Primitive Obsession in .NET
Assis Zang

Ante todo, aprovecharé esta inigualable ocasión para desearos lo mejor para este nuevo año 2023 que se está empezando a dibujar. Espero que tengáis oportunidad de cumplir vuestros proyectos y de disfrutar del camino que os lleve a ellos.
Y para empezar con buen pie, como es habitual, vamos a repasar los 10 artículos más leídos en Variable Not Found durante este 2022 que acaba de terminar.
En septiembre de 1947, Grace Murray Hopper y sus compañeros de la Universidad de Harvard descubrieron, sobre un relé electromagnético de su Mark II, una polilla (en inglés, moth) chamuscada que provocaba que su programa no funcionara correctamente. "No funciona porque aquí hay un bicho", debieron pensar.

Lo primero, aunque llegue algo tarde, aprovecho para desearos unas felices fiestas :)
Y siguiendo con nuestro tema, aunque no está recogido en ninguna RFC ni documento oficial (o al menos no he sido capaz de encontrarlo) el código de error HTTP 509 (Bandwidth Limit Exceeded) suele utilizarse para informar al lado cliente de que la solicitud no puede ser procesada porque el servidor ha sobrepasado el límite de ancho de banda que tenía disponible. Normalmente ocurre cuando el plan del hosting utilizado es insuficiente para manejar el tráfico del sitio web, por lo que debe ser upgradeado para que todo siga funcionando.
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo detectar navegadores que no soportan Blazor WebAssembly
José María Aguilar - Crear puntos de ruptura en tiempo de ejecución con .NET
José María Aguilar
.NET Core / .NET
- How to Secure Passwords with BCrypt.NET
Code Maze - Build Your Own Podcast App with .NET 7, Blazor, and .NET MAUI
James Montemagno - Ref-structs are technically obsolete
James Turner - Will ChatGPT replace .NET developers?
David Grace - Delete dotnet bin and obj folders recursively
Steve Smith - Extreme LINQ Performance Boost in .NET 7
Ivan Matec - Generating C# bindings for native libraries by using ChatGPT
Muhammad Azeez - Enhancing the Factory Pattern with C# Attributes
John Patrick Glattetre - Better assertions for your unit tests
Johan Smarius - Microsoft .NET History
Lazie Wouters - Introduction to MVVM Source Generators for C# .NET
Julian Ewers-Peters - Saving Christmas with Functional C#
Simon Painter - IEnumerable in C#
Code Maze - How the heap verification mode helps with debugging heap corruption
Maoni Stephens - C# 11.0: Raw String Literals
Thomas Claudius Huber

Si habéis trabajado algo con Blazor, seguramente sabréis que los componentes escritos en archivos .razor
son traducidos en tiempo de compilación a lenguaje C# y posteriormente compilados como cualquier otra clase de nuestro proyecto.
Por tanto, ¿que impediría que nos saltásemos ese paso y escribiéramos nuestros componentes directamente en C#? Efectivamente, nada ;)
En este post veremos cómo hacerlo.
Pero antes, un disclaimer: apenas existen razones prácticas para implementar componentes visuales usando C#. Usando Razor todo será más sencillo, rápido y tendremos menos riesgo a equivocarnos, así que esa debe ser la opción por defecto. Por tanto, lo que vamos a ver aquí no debéis usarlo salvo en casos justificados (por ejemplo, cuando queráis crear componentes sin UI).

El código de estado HTTP 508 (Loop Detected) indican que el servidor ha finalizado la operación debido a la detección de un bucle infinito mientras procesaba una petición realizada con el valor "infinite" en el encabezado "depth". Este encabezado forma parte de las extensiones HTTP de WebDAV y se usa para realizar operaciones que pueden afectar a un recurso y a todos sus miembros, hasta el nivel de profundidad especificado.
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Componentes genéricos (templated components) en Blazor
José María Aguilar - La depuración y las cinco fases del duelo
José María Aguilar
.NET Core / .NET
- Using Roslyn to Power C# SDK Generation from OpenAPI Specifications
Brant Burnett - Introducing Wolverine for Effective Server Side .NET Development
Jeremy D. Miller - Schedule Jobs with Quartz.NET
Code Maze - Moving to .NET 7 MSMQ Alternatives
Irwin Williams - PriorityQueues on .NET 7 and C# 11
Davide Bellone - .NET 7 Networking Improvements
Natalia Kondratyeva - 11 Ways of Making Your C# Harder to Use
Brendan Enrick - Fun with C# and Bingo
Eric King - C# 11: pattern matching and static abstract interfaces
Tom Deseyn - Add All Project to Solution with dotnet CLI
Steve Smith - Answer: What does this code print?
Oren Eini - Creating Multi-Tier Subscriptions using C#
Jonathan Danylko - Task<IDisposable> surprise
Jiří Činčura - Using Procdump to generate dumps on a specific .net core exception
Xiao Dong Zhu - Testing in DotNet
Mark Oliver