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.
Publicado por José M. Aguilar a las 12:05 a. m.
Etiquetas: concienciación, desarrolladores, errores
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
Otra de las novedades del flamante C# 11 viene a romper una limitación histórica: la ausencia de tipos genéricos en la definición de atributos.
Hasta esta versión del lenguaje, cuando necesitábamos introducir referencias a tipos de datos en un atributo, debíamos pasar obligatoriamente por el uso de un System.Type
y el verboso operador typeof()
. Además de incómodo, no había forma de limitar los tipos suministrados, dando lugar a errores en tiempo de ejecución que bien podrían haber sido resueltos el compilación con las herramientas apropiadas.
Dicho así quizás sea difícil de entender, pero veámoslo con un ejemplo.
Pasando del 503 ninguno de los códigos de estado HTTP son demasiado conocidos, así que esto se está convirtiendo en una oportunidad para echarles un vistazo y al menos, saber que están ahí.
Esta semana seguimos con el HTTP 507 (Insufficient storage), que indica que el espacio de almacenamiento en el servidor no es suficiente para completar la operación. Según la especificación, la petición no debe ser reintentada hasta que sea solicitada por una acción independiente del usuario; o sea, que cuando recibamos este error, deberíamos informar al usuario y, si procede, permitirle reintentar.
Y ahora, ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo invocar métodos de instancia C# desde Javascript con Blazor (interop 3/3)
José María Aguilar - Formas efectivas de ofuscar emails en páginas web
José María Aguilar
.NET Core / .NET
- A new wave of analyzers in .NET 8
Steven Giesel - C# 11 Strings in the Raw
Shawn Wildermuth - .NET and C# Versions
Niels Rasmussen - Floating-Point Types in C# - Double vs Float vs Decimal
Code Maze - An initial proof of concept of applicative assertions in C#
Mark Seemann - Hashing and Salting Passwords in C# - Best Practices
Diego García - C# Tip: Raise synchronous events using Timer (and not a While loop)
Davide Bellone - Having fun with C# 11 raw string literals
Jiří Činčura - Starting a process as normal user from a process running as Administrator
Gérald Barré - Benchmark Your Code Like dotNetDave!
David McCarter - Introducing C#11: List Pattern
Anthony Giretti - Trying out the built-in container support for the .NET SDK
Carlos Pons - Producer-Consumer Applications With .NET Channels Code Maze
Code Maze - New ArgumentException and ArgumentOutOfRangeException helpers in .NET 8
Steven Giesel