Valor insensitivo en la QueryString

Recientemente tuve una situación donde necesitaba en el cliente el valor de un parámetro específico de la query string del pedido y necesitaba estar completamente seguro de que podría encontrar el parámetro sin importar si estuviese en mayúsculas, minúsculas o cualquier combinación de estas. Con ese propósito cree la siguiente función en TypeScript:

1
2
3
4
5
private getInsensitiveQueryStringValue(queryParams: Params, paramKey: string): string {
  const keys = Object.keys(queryParams);
  const key = Array.from(keys).find(item => item.toLowerCase() == paramKey.toLowerCase());
  return key ? queryParams[key] : null;
}

Comandos asíncronos

Código fuente de apoyo disponible en GitHub

Recientemente tuve que implementar una aplicación simple con Windows Presentation Framework (WPF) usando el patrón Model-View-ViewModel (MVVM). Me sorprendí cuando noté que no había una solución simple lista para usar para enlazar comandos asíncronos, así que decidí crear mis implementaciones para ellos.

También quiero ser genérico, así que comencé a definir la interfaz más general que hereda de ICommand (incluida en el espacio de nombres: “System.Windows.Input”).

Publicación inmediata

Código fuente de apoyo disponible en GitHub

Érase una vez una solución, alojada en un proyecto de equipo en Team Foundation Services (TFS) que fue descargada por primera vez. Sabía que la solución compilaba y podía publicarse sin problemas de inmediato. Pero me llevé una sorpresa porque ambos procesos fallaron. La figura 1 muestra una estructura simplificada del proyecto.

Estructura del proyecto

Figura 1: “Estructura del proyecto”.

La figura 2 muestra cómo se configuró el proyecto para generar su documentación:

Generando clientes de Swagger/OpenAPI

Código fuente de apoyo disponible en GitHub

Recientemente, estaba desarrollando una aplicación web .NET Core que necesita consumir una API desarrollada hace unos años usando ASP.NET WebAPI. Afortunadamente, esa API tenía Swagger integrado, así que pensé que podía ahorrar tiempo al no crear manualmente los instrumentos necesarios para las llamadas a la API (DTO, cliente, etc.) en su lugar podría utilizar la función “Servicios Conectados” de Visual Studio.

Me llevé una gran sorpresa que me inspiró a compartir la experiencia y la solución en este post. Reproduje un escenario simplificado como se puede ver en la figura 1 accediendo a Swagger UI a través de su URL: “http://localhost:5200/swagger”.

Firmando ensamblados

Código fuente de apoyo disponible en GitHub

.NET Core

No todos los clientes requieren firmar los ensamblados de sus aplicaciones, pero cuando es necesario, la tarea no es tan fácil como cabría esperar.

En el caso de las aplicaciones .NET Core, podemos lograr esto simplemente editando el archivo del proyecto (.csproj) agregando el siguiente código:

1
2
3
<Target Name="BuildSigning" AfterTargets="AfterBuild">
  <Exec Command="SIGNING_COMMAND" />
</Target>

Como ejemplo, SIGNING_COMMAND podría ser:

“C\Program Files (x86)\Windows Kits\10\bin\10.0.177630\x64\signtool.exe” sign /f “$(SolutionDir)certificate.pfx” /p “pass&1234” “S(TargetDir).dll”*