Lenguaje Gherkin

El lenguaje Gherkin utiliza palabras clave especiales como “Feature”, “Scenario”, “Given”, “When” y “Then” para definir el comportamiento esperado de la aplicación. Cada “Scenario” describe un caso de prueba específico, y las instrucciones “Given”, “When” y “Then” indican las condiciones iniciales, la acción que se realiza y el resultado esperado, respectivamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Feature: Sistema de nómina
El sistema de nómina permite a los empleados ver su información de pago y a los administradores de recursos humanos gestionar los pagos de los empleados.

Scenario: Ver información de pago
Given estoy conectado como un empleado
When accedo a mi página de información de pago
Then se muestran mis datos de pago, como mi salario, impuestos y deducciones

Scenario: Gestionar pagos de empleados
Given estoy conectado como un administrador de recursos humanos
When accedo a la página de gestión de pagos de empleados
Then puedo ver una lista de todos los empleados y sus respectivos datos de pago
And puedo modificar la información de pago de cualquier empleado
And puedo generar y descargar un informe de pago para cada empleado

Scenario: Generar informe de pago
Given estoy conectado como un administrador de recursos humanos
And he seleccionado un empleado en la página de gestión de pagos de empleados
When hago clic en el botón "Generar informe de pago"
Then se descarga un archivo PDF con el informe de pago del empleado seleccionado

sintaxis del lenguaje

¿Qué es Jamstack?

La palabra “Jamstack” es un acrónimo que se refiere a “JavaScript, APIs y Markup”. Se trata de un enfoque para la construcción de sitios web y aplicaciones que se basa en el uso de servicios externos para el alojamiento, el procesamiento y la entrega de contenido. En lugar de utilizar un servidor web tradicional para ejecutar el código y servir contenido dinámico, Jamstack se apoya en servicios externos (conocidos como “APIs”) para manejar estas tareas.

¿Por qué elegir Jamstack? Hay varias razones por las que el enfoque Jamstack está ganando tanto terreno en el mundo del desarrollo web. En primer lugar, es increíblemente escalable. Al utilizar servicios externos para manejar tareas como el procesamiento y el alojamiento, puedes ahorrar recursos y aumentar la velocidad de tu sitio o aplicación. Esto es especialmente importante si tienes un gran tráfico o si tu sitio o aplicación necesita soportar picos de tráfico imprevistos.

Otra ventaja de Jamstack es que es extremadamente seguro. Al no tener que preocuparte por el servidor web y la ejecución de código en el lado del servidor, hay menos oportunidades para que alguien pueda atacar tu sitio o aplicación. Además, al no tener que preocuparte por el servidor, puedes enfocarte en lo que realmente importa: el contenido y la experiencia de usuario.

Por último, Jamstack es increíblemente rápido. Al utilizar servicios externos para manejar tareas como el procesamiento y el alojamiento, puedes ahorrar recursos y aumentar la velocidad de tu sitio o aplicación. Esto es especialmente importante si tienes un gran tráfico o si tu sitio o aplicación necesita soportar picos de tráfico imprevistos.

En resumen, Jamstack es un enfoque innovador para la construcción de sitios web y aplicaciones

Emmet toolkit

Emmet es un plugin para editores que permite agilizar la escritura de codigo HTML. El proyecto fue iniciado por Vadim Makeev en 2008 y continúa siendo desarrollado activamente por los usuarios de Sergey Chikuyonok y Emmet. Desde 2015.

Esta herramienta se ha incorporado a varios editores de texto populares. Sin embargo, Emmet es principalmente independiente de cualquier editor de texto, ya que el motor funciona directamente con el texto en lugar de con cualquier software en particular.

Emmet es de código abierto bajo la licencia MIT. source code

Ejemplos

image
Para crear una estructura de html simple se utiliza el signo de exclamacion “!” y tab.

Emmet cheatsheet

OLAP vs OLTP

OLAP

Online analytical processing (OLAP) is a system for performing multi-dimensional analysis at high speeds on large volumes of data. Typically, this data is from a data warehouse, data mart or some other centralized data store. OLAP is ideal for data mining, business intelligence and complex analytical calculations, as well as business reporting functions like financial analysis, budgeting and sales forecasting.

The core of most OLAP databases is the OLAP cube, which allows you to quickly query, report on and analyze multidimensional data. What’s a data dimension? It’s simply one element of a particular dataset. For example, sales figures might have several dimensions related to region, time of year, product models and more.

The OLAP cube extends the row-by-column format of a traditional relational database schema and adds layers for other data dimensions. For example, while the top layer of the cube might organize sales by region, data analysts can also “drill-down” into layers for sales by state/province, city and/or specific stores. This historical, aggregated data for OLAP is usually stored in a star schema or snowflake schema.

The following graphic shows the OLAP cube for sales data in multiple dimensions — by region, by quarter and by product:
image

OLTP

Online transactional processing (OLTP) enables the real-time execution of large numbers of database transactions by large numbers of people, typically over the Internet. OLTP systems are behind many of our everyday transactions, from ATMs to in-store purchases to hotel reservations. OLTP can also drive non-financial transactions, including password changes and text messages.

OLTP systems use a relational database that can do the following:

  • Process a large number of relatively simple transactions — usually insertions, updates and deletions to data.
  • Enable multi-user access to the same data, while ensuring data integrity.
  • Support very rapid processing, with response times measured in milliseconds.
  • Provide indexed data sets for rapid searching, retrieval and querying.
  • Be available 24/7/365, with constant incremental backups.

Many organizations use OLTP systems to provide data for OLAP. In other words, a combination of both OLTP and OLAP are essential in our data-driven world.

The main difference between OLAP and OLTP: Processing type

The main distinction between the two systems is in their names: analytical vs. transactional. Each system is optimized for that type of processing.

OLAP is optimized for conducting complex data analysis for smarter decision-making. OLAP systems are designed for use by data scientists, business analysts and knowledge workers, and they support business intelligence (BI), data mining and other decision support applications.

OLTP, on the other hand, is optimized for processing a massive number of transactions. OLTP systems are designed for use by frontline workers (e.g., cashiers, bank tellers, hotel desk clerks) or for customer self-service applications (e.g., online banking, e-commerce, travel reservations).

Other key differences between OLAP and OLTP
  • Focus: OLAP systems allow you to extract data for complex analysis. To drive business decisions, the queries often involve large numbers of records. In contrast, OLTP systems are ideal for making simple updates, insertions and deletions in databases. The queries typically involve just one or a few records.
  • Data source: An OLAP database has a multi-dimensional schema, so it can support complex queries of multiple data facts from current and historical data. Different OLTP databases can be the source of aggregated data for OLAP, and they may be organized as a data warehouse. OLTP, on the other hand, uses a traditional DBMS to accommodate a large volume of real-time transactions.
  • Processing time: In OLAP, response times are orders of magnitude slower than OLTP. Workloads are read-intensive, involving enormous data sets. For OLTP transactions and responses, every millisecond counts. Workloads involve simple read and write operations via SQL (structured query language), requiring less time and less storage space.
  • Availability: Since they don’t modify current data, OLAP systems can be backed up less frequently. However, OLTP systems modify data frequently, since this is the nature of transactional processing. They require frequent or concurrent backups to help maintain data integrity.

source

Entity Framework AsNoTracking

Entity Framework exposes a number of performance tuning options to help you optimise the performance of your applications. One of these tuning options is .AsNoTracking(). This optimisation allows you to tell Entity Framework not to track the results of a query. This means that Entity Framework performs no additional processing or storage of the entities which are returned by the query. However, it also means that you can’t update these entities without reattaching them to the tracking graph.

source

Weaving .net assemblies

Weaving refers to the process of injecting functionality into an existing program. This can be done conceptually at a number of levels:

  • Source code weaving would inject source code lines before the code is compiled
  • IL weaving (for .NET) adds the code as IL instructions in the assembly
  • ByteCode weaving (for Java) works on the class file, see these comments wrt AspectJ

In theory you could go one deeper and weave with an executable compiled to native instructions, but this would add a lot of complexity and I’m not aware of anything that does this.

source

HTTP Logging options

HTTP Logging is a middleware that logs information about HTTP requests and HTTP responses. HTTP logging provides logs of:

HTTP request information
Common properties
Headers
Body
HTTP response information
HTTP Logging is valuable in several scenarios to:

Record information about incoming requests and responses.
Filter which parts of the request and response are logged.
Filtering which headers to log.
HTTP Logging can reduce the performance of an app, especially when logging the request and response bodies. Consider the performance impact when selecting fields to log. Test the performance impact of the selected logging properties.

source