martes, 7 de septiembre de 2021

CORS (Cross-Origin Resource Sharing) - Lecciones aprendidas

Estas son algunas lecciones aprendidas luego de haber tenido algunos problemas para implementar nuestras aplicaciones SPA (Angular - REST API) en nuestros servidores.

 ¿Qué es CORS?

Hay dos caminos al momento de habilitar CORS para un sitio web.

1 - A través de un Middleware dentro de la aplicación. Es conveniente hacerlo cuando no se tiene control sobre el servidor donde estará alojada la aplicación. En ese caso es la propia aplicación la que implementa el middleware que administra CORS.

Enable Cross-Origin Requests (CORS) in ASP.NET Core


2 - Configurando el servidor web (IIS). Hay que verificar que esté instalado el módulo general "CORS" y luego especificar los parámetros para cada sitio en el web.config. Esta es una opción mejor a la anterior porque permite modificar la configuración sin tocar el código pero requiere instalar el módulo general de CORS en el servidor.

IIS CORS module Configuration Reference 


Aprendiendo de nuestros errores:

- No sirve configurar HEADERS (de tipo "access-control-allow-origin") porque no funciona bien el "preflight".

- Por algún motivo en nuestro IIS dejó de funcionar el middleware del asp.net y tuvimos que configurar los sitios a través del web.config. Habría que probar desinstalando el CORS del servidor, tal vez así vuelve a funcionar el middleware.




viernes, 20 de agosto de 2021

Patrón CQRS - Command and Query Responsibility Segregation

Luego de haber transitado por el curso "Microservicios con ASP.NET 5, Angular, MongoDB, Docker" me quedó la idea de implementarlo en nuevos proyectos. 

Analizando el tema en más profundidad entiendo que se trata de un recurso aplicable a algunos casos en particular y no como estándar de arquitectura global.

Su implementación requiere esfuerzo adicional y se deberá evaluar la relación costo/beneficio en cada caso.

Referencias:

- What is the CQRS pattern?

- CQRS Journey

- CQRS Journey - Introducing the Command Query Responsibility Segregation Pattern

lunes, 12 de julio de 2021

No levanta GitLab Postgresql

- Para revisar el estado de los servicios en GitLab:

 sudo gitlab-ctl status

- Para ingresar con permisos de root dentro de la consola:

sudo -i

- Para buscar archivos:

locate -i postmaster.pid

- Ver el log de errores en: 

/var/opt/gitlab/postgresql --> current

- Para solucionar error: bogus data in lock file "postmaster.pid". Eliminar archivo:

rm /var/opt/gitlab/postgresql/data/postmaster.pid




viernes, 25 de junio de 2021

Content Security Policy (CSP)

Content-Security-Policy is the name of a HTTP response header that modern browsers use to enhance the security of the document (or web page). The Content-Security-Policy header allows you to restrict how resources such as JavaScript, CSS, or pretty much anything that the browser loads.

Although it is primarily used as a HTTP response header, you can also apply it via a meta tag.


Content Security Policy browser test


CSP Reporting API

Generic reporting framework which allows web developers to associate a set of named reporting endpoints with an origin. Various platform features can use these endpoints to deliver feature-specific reports in a consistent manner.


CSP Evaluator

CSP Evaluator allows developers and security experts to check if a Content Security Policy (CSP) serves as a strong mitigation against cross-site scripting attacks. It assists with the process of reviewing CSP policies, which is usually a manual task, and helps identify subtle CSP bypasses which undermine the value of a policy.

viernes, 4 de junio de 2021

Colas de mensajes para .Net Core

Al momento de escribir este artículo, MSMQ (Microsoft Message Queuing) y su librefía System.Messaging no está disponible para ejecutarse en entornos .Net Core 5. Se puede consumir en .Net Core 5 pero el sistema debería estar instalado en Windows. Ver MSMQ is dead.

Entonces, ¿cual es la mejor forma de implementar una cola de mensajes / tareas en .Net Core 5?

Opciones para analizar:

  1. RabbitMQ - AMQP (Advanced Message Queuing Protocol)
  2. Apache Kafka - ¿Qué es Apache Kafka?  (Linux) - Apache Kafka
  3. NServiceBus - A simple explanation of NServiceBus and why you need it
  4. Kafka vs RabbitMQ


Ver documentos de Microsoft:


Conclusiones
Para comunicación entre microservicios se recomienda utilizar el protocolo AMQP. Es un protocolo abierto y probado funcionando hace largo tiempo. La implementación más exitosa es la de RabbitMQ que además también se puede instalar en Windows.

jueves, 27 de mayo de 2021

Comparaciones de esquemas con Visual Studio SQL Data Tools

Microsoft Visual Studio SQL Data Tools proporciona una funcionalidad que permite comparar la estructura de las tablas de la base de datos, los procedimientos almacenados, las vistas y otros objetos de la base de datos. 

Schema Comparisons using Visual Studio SQL Data Tools

miércoles, 26 de mayo de 2021

SQL Server - Extensiones y funcionalidades adicionales

Data Quality Services

SQL Server Data Quality Services (DQS) is a knowledge-driven data quality product. DQS enables you to build a knowledge base and use it to perform a variety of critical data quality tasks, including correction, enrichment, standardization, and de-duplication of your data. DQS enables you to perform data cleansing by using cloud-based reference data services provided by reference data providers. DQS also provides you with profiling that is integrated into its data-quality tasks, enabling you to analyze the integrity of your data.


Dynamic Data Masking - Enmascaramiento dinámico de datos (DDM)

Dynamic data masking (DDM) limits sensitive data exposure by masking it to non-privileged users. It can be used to greatly simplify the design and coding of security in your application.

Dynamic Data Masking

sábado, 22 de mayo de 2021

Chia Network

Chia Network
A new blockchain and smart transaction platform that is easier to use, more efficient, and secure.
Our hope is that, over time, Chia will be supported by point of sale systems and consumer payment apps all over the world

Diseñada para mejorar el sistema financiero y de pagos a nivel global, Chia es una nueva plataforma de blockchain (cadena de bloques) creada por Bram Cohen, el autor de Bit Torrent.

Chia es eco-friendly porque utiliza menos recursos de hardware y energía electrica.
Su mecanismo de validación utiliza el consenso Proof of Space (PoS) y Proof  of Time (PoT) o Verifiable Delay Functions (VDF) en lugar de Proof of Work (PoW) como utilizan actualmente las otras blockchain como Bitcoin o Ethereum.
Entonces decimos que que el "mining" tradicional requiere más recursos (placas de video, servidores y energía eléctrica) que el nuevo "farming" que sólo requiere algo de espacio libre en disco y no incentiva la instalación de granjas de servidores.

Chia es significativamente más segura porque es más descentralizada. El lenguaje de programación Chialisp es muy fácil de usar y de auditar. Mejora la seguridad y transparencia de las operaciones y smart contracts.

¿Cuales son las ventajas y novedades que aporta Chia a la cryptografía?


(infobae) Qué es la criptomoneda Chia y por qué está incrementando el valor de los discos duros en China

(INFOCOMPUTER) ¿Qué se necesita para poder minar CHIA?

How does Proof of Space and Proof of Time work?

Why is Chia better?

Isn’t the current international monetary system good enough?

Isn’t Bitcoin good enough?

jueves, 13 de mayo de 2021

Red Hat OpenShift

Red Hat OpenShift Service on AWS

Red Hat OpenShift Service on AWS (ROSA) provides an integrated experience to use OpenShift. If you are already familiar with OpenShift, you can accelerate your application development process by leveraging familiar OpenShift APIs and tools for deployments on AWS. With ROSA, you can use the wide range of AWS compute, database, analytics, machine learning, networking, mobile, and other services to build secure and scalable applications faster. ROSA comes with pay-as-you-go hourly and annual billing, a 99.95% SLA, and joint support from AWS and Red Hat.




jueves, 11 de marzo de 2021

Templates para WebApps y Librerias basadas en Bootstrap.

Creative Tim

Existen sitios web que proveen web kits y Templates gratuitos o pagos para Bootstrap, Angular, React, etc.

Facilitan el diseño otorgando simples alternativas basadas en Bootstrap y también proyectos de Ejemplo en los frameworks con librerías CSS.

Si necesitamos una alternativa a Bootstrap con la misma sintaxis de uso, es tan simple como bajar una de las librerías basadas en la misma.

Librería Basada en Bootstrap.

O si simplemente necesitamos un proyecto desde cero en Angular con estilos definidos podemos optar por los web kits de Angular.

Ej: Boilerplate Angular.





jueves, 18 de febrero de 2021

Kubernetes, Serverless and Web Frontend

Kubernetes

Kubernetes es un sistema de código libre para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores​ que fue originalmente diseñado por Google y donado a la Cloud Native Computing Foundation. Soporta diferentes entornos para la ejecución de contenedores, incluido Docker


Serverless application framework

La computación sin servidor es un modelo de ejecución de computación en la nube en el que el proveedor de la nube asigna los recursos de la máquina a pedido, cuidando los servidores en nombre de sus clientes.


Web Frontend

El desarrollo web Front-end consiste en la conversión de datos en una interfaz gráfica para que el usuario pueda ver e interactuar con la información de forma digital usando HTML, CSS y JavaScript.

miércoles, 13 de enero de 2021

Web Api .Net Core - Generar reportes

Luego de analizar las soluciones alternativas que se muestran más abajo decidimos desarrollar una API en .Net 4.5 para consumirla desde nuestra API .Net Core. Es una solución temporal porque las nuevas APIs (ViaReportingAPI y ViaReportingAPI_Crystal) no ejecutan sobre .Net Core. En la actualidad, tanto nuestros desarrollos .Net Core como las nuevas APIs de emisión de reportes se alojan en el mismo IIS.


A continuación se mencionan algunos vínculos con info que teníamos disponible al momento analizar soluciones alternativas.

En principio, habían 2 alternativas principales para analizar:

- Reporting Services Web Service. Ejemplos:

    - How to use microsoft reporting services with .net core

    - Reporting Services Web Services with .NET CORE 2

    - Generating a SSRS report using WCF from a .NET Core application

o bien

- Telerik: How to Host Reports Service in ASP.NET Core 3+


La mejor herramienta de terceras partes y más accesible es IRON PDF for .Net

Se mencionan otras alternativas en Creating A PDF In .NET Core.

Hay bibliotecas de terceros que permitan la generación de documentos PDF en .NET Core. Algunas de las opciones populares incluyen:

DinkToPdf: Es una librería que utiliza el motor de renderizado WebKit para convertir HTML/CSS a PDF. Puedes crear una vista HTML en tu Web API y luego utilizar esta librería para convertirla en un documento PDF.

iTextCore: Esta es una librería de manipulación de PDF de código abierto que te permite crear y modificar documentos PDF. Puedes utilizarla para crear documentos PDF desde cero o para agregar contenido a documentos existentes.

PdfSharpCore: Similar a iTextSharp, PdfSharp es una librería de código abierto que permite la creación y modificación de documentos PDF. También proporciona una manera de crear documentos PDF desde cero o agregar contenido a documentos existentes.


Otras alternativas para generar reportes desde una WebApi construida en .Net Core son:

https://code-maze.com/create-pdf-dotnetcore/

https://github.com/FastReports/FastReport