El documento describe un código de base de datos complejo que calcula los rankings de puntuación de usuario por país y globalmente. El código contiene múltiples subconsultas anidadas que agrupan, clasifican y unen datos de puntuaciones de usuario para devolver los rankings de un usuario específico.
Presentación de la charla de Toni Recio en la #DotNetSpain2016 y la re-DotNet #4Sessions del 16 de abril de 2016, en el Mobile World Centre de Barcelona
Este documento resume las mejores prácticas de SQL Server, incluyendo el uso de índices, diferentes tipos de instrucciones SQL como SELECT, INSERT y UNION, y el manejo de fechas y parámetros. También cubre temas como relaciones de muchos a muchos, tipos de joins y cuando crear índices.
El documento describe conceptos relacionados con colecciones genéricas, expresiones regulares, conexiones a bases de datos, sentencias CRUD y multiprocesamiento en Java. Explica que las colecciones son estructuras de datos que permiten realizar operaciones como get, set y find, y que los genéricos permiten sobrecargar métodos de forma similar. También cubre expresiones regulares, conexiones a bases de datos usando JDBC, sentencias SQL para crear, leer, actualizar y eliminar datos, y el uso de hilos para lograr multiprocesamiento.
consultas de visual estudio sistema de ventasGroup Lliuya
Este documento describe la creación de una aplicación de tres capas para un sistema de ventas. Se agregan dos formularios para cargar y buscar datos de la tabla "cargos" de la base de datos. La capa de datos contiene la clase CDcargos para conectarse a la base de datos y recuperar los datos. La capa lógica contiene la clase CLCargos. Los formularios usan estas clases para mostrar, cargar y buscar registros de la tabla "cargos".
Este trabajo fue hecho por los alumnos Asael Cardona y Enrique Robledo del grupo 404 para la materia de Programacion. Semestre B0910
NET Nicolas Romero
Este documento proporciona instrucciones paso a paso para crear varias aplicaciones móviles básicas en Android, incluidas aplicaciones "Hola Mundo", calculadoras, calculadoras de IMC y más. Explica cómo configurar un proyecto de Android, agregar interfaz de usuario como botones y cajas de texto, y escribir código Java para proporcionar funcionalidad.
Este documento lista los comandos y funciones de Raptor y Java. Entre los comandos de Raptor se encuentran asignación, llamada, entrada, salida, selección y ciclo. Los comandos de Java incluyen @author, @deprecated, @param y @return. También describe las funciones de la clase Scanner en Java para la entrada de datos.
Presentación de la charla de Toni Recio en la #DotNetSpain2016 y la re-DotNet #4Sessions del 16 de abril de 2016, en el Mobile World Centre de Barcelona
Este documento resume las mejores prácticas de SQL Server, incluyendo el uso de índices, diferentes tipos de instrucciones SQL como SELECT, INSERT y UNION, y el manejo de fechas y parámetros. También cubre temas como relaciones de muchos a muchos, tipos de joins y cuando crear índices.
El documento describe conceptos relacionados con colecciones genéricas, expresiones regulares, conexiones a bases de datos, sentencias CRUD y multiprocesamiento en Java. Explica que las colecciones son estructuras de datos que permiten realizar operaciones como get, set y find, y que los genéricos permiten sobrecargar métodos de forma similar. También cubre expresiones regulares, conexiones a bases de datos usando JDBC, sentencias SQL para crear, leer, actualizar y eliminar datos, y el uso de hilos para lograr multiprocesamiento.
consultas de visual estudio sistema de ventasGroup Lliuya
Este documento describe la creación de una aplicación de tres capas para un sistema de ventas. Se agregan dos formularios para cargar y buscar datos de la tabla "cargos" de la base de datos. La capa de datos contiene la clase CDcargos para conectarse a la base de datos y recuperar los datos. La capa lógica contiene la clase CLCargos. Los formularios usan estas clases para mostrar, cargar y buscar registros de la tabla "cargos".
Este trabajo fue hecho por los alumnos Asael Cardona y Enrique Robledo del grupo 404 para la materia de Programacion. Semestre B0910
NET Nicolas Romero
Este documento proporciona instrucciones paso a paso para crear varias aplicaciones móviles básicas en Android, incluidas aplicaciones "Hola Mundo", calculadoras, calculadoras de IMC y más. Explica cómo configurar un proyecto de Android, agregar interfaz de usuario como botones y cajas de texto, y escribir código Java para proporcionar funcionalidad.
Este documento lista los comandos y funciones de Raptor y Java. Entre los comandos de Raptor se encuentran asignación, llamada, entrada, salida, selección y ciclo. Los comandos de Java incluyen @author, @deprecated, @param y @return. También describe las funciones de la clase Scanner en Java para la entrada de datos.
El documento lista comandos de programación y sus funciones. Incluye comandos como asignación para cambiar valores de variables, entrada para pedir entrada de usuario, y salida para mostrar resultados. También describe estructuras de control como selección para tomar decisiones y ciclos para repetir secuencias. Finalmente, resume funciones comunes de Java y C como Scanner para entrada de datos y printf para salida de datos.
Este documento resume las sentencias básicas en C, incluyendo la asignación de valores, salida de datos a través de la función printf, y entrada de datos a través de la función scanf. Explica los formatos para imprimir y leer diferentes tipos de datos, como enteros, reales, caracteres y cadenas. También incluye ejemplos de código para ilustrar el uso de estas funciones.
El documento describe LINQ (Language Integrated Query), una característica de C# y VB.NET que permite realizar consultas en memoria y sobre bases de datos de una manera integrada al lenguaje. Explica conceptos como LINQ to Objects, LINQ to XML y DLINQ, así como operadores de consulta, tipos anónimos, expresiones lambda y más.
El documento describe LINQ (Language Integrated Query), una característica de C# y VB.NET que permite realizar consultas en memoria y sobre bases de datos de una manera integrada al lenguaje. Explica conceptos como LINQ to Objects, LINQ to XML y DLINQ, así como operadores de consulta, tipos anónimos, expresiones lambda y más.
Este documento proporciona una introducción a LINQ (Language Integrated Query), que permite realizar consultas en memoria y sobre bases de datos de una manera integrada en el lenguaje de programación. Explica conceptos clave como operadores de consulta, expresiones lambda, tipos anónimos e inicializadores de objetos. También describe las diferentes implementaciones de LINQ como LINQ to Objects, LINQ to XML y LINQ to SQL para consultar sobre colecciones, XML y bases de datos respectivamente.
El documento lista diferentes comandos y sus funciones para el lenguaje de programación Raptor, así como etiquetas y métodos comunes en Java. También describe operadores, declaraciones de variables, estructuras de control y funciones para C/C++ relacionadas con E/S, cadenas, caracteres y archivos.
El documento presenta una agenda para un análisis de datos con MongoDB. La agenda incluye por qué hacer análisis con MongoDB, cómo crear un ambiente de MongoDB, cómo ingestar datos en MongoDB, cómo explorar datos con MongoDB Compass, cómo hacer análisis de datos con el Aggregation Framework de MongoDB, cómo extender el análisis con Python y Apache Spark, e integrar herramientas de BI. El documento también incluye una demostración del Aggregation Framework y la integración con Python y herramientas de BI.
Este documento presenta varias métricas para evaluar la calidad de diagramas de clases en UML y la mantenibilidad de sistemas de información orientados a objetos. Se definen 10 métricas estructurales como número de clases, atributos, métodos, asociaciones, etc. Se miden estas métricas en tres diagramas de clases y se calcula la correlación entre ellas y el tiempo de mantenimiento usando el coeficiente de correlación de Spearman. Finalmente, se proponen métricas estéticas para medir aspectos del diseño gráfico como número
Este documento presenta varias consultas SPARQL sobre diferentes temas como The Simpsons, DBPedia, Tokyo Mew Mew, presidentes de Ecuador y Estados Unidos, álbumes de bandas californianas, capítulos de Los Soprano, empresas de software de California, autores nacidos en Berlín, películas de actores como Tom Hanks y Sandra Bullock, coincidencias para búsquedas, temas de Metallica, ciudades populares y una ontología sobre algoritmos de clasificación. Se incluyen consultas para identificar algoritmos,
El documento proporciona información sobre los conceptos básicos de programación en C, incluyendo funciones, variables, tipos de datos, estructuras de control de flujo como if/else y bucles for y while. Explica cómo incluir bibliotecas, definir funciones, usar tipos de datos primitivos y realizar entrada y salida de datos.
Los documentos presentan programas en C para resolver diferentes problemas matemáticos y lógicos mediante menús y condicionales. El primero calcula áreas según la figura geométrica seleccionada. El segundo convierte letras en números. El tercero calcula descuentos y obsequios por compras al por mayor.
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
El documento describe el framework web Catalyst escrito en Perl. Explica qué es Catalyst, sus ventajas de uso, requisitos de instalación, estructura de proyectos, creación de controladores, modelos, vistas, uso de plantillas, formularios, sesiones, autenticación y depuración. También menciona proyectos desarrollados con Catalyst en Perú.
Ejercicios de programación en C (Estructuras condicionales-Selectivas)Maynor Mendoza
Los documentos presentan programas en C para resolver diferentes problemas matemáticos y lógicos mediante el uso de condicionales y estructuras de control. Los programas incluyen cálculos de áreas geométricas, conversión de caracteres, cálculo de descuentos y obsequios, evaluación de índices de masa corporal, cálculo de días transcurridos, ordenamiento y comparación de números, y cálculo de costos de alquiler.
El documento describe la estructura básica de un programa en C, incluyendo declaraciones de funciones, variables y tipos de datos. También cubre el preprocesador de C, bibliotecas estándar, operadores, flujos de control y E/S.
El documento lista los comandos de Raptor y Java y describe su función. Los comandos de Raptor incluyen asignación, llamada, entrada, salida, selección y ciclo. Los comandos de Java incluyen @author, @param, @return y @see. También describe funciones como printf, scanf, strcpy y funciones para crear, abrir y cerrar archivos.
Este documento presenta el código para una aplicación móvil que permite seleccionar colores mediante códigos hexadecimales. Incluye la interfaz gráfica con TextViews y SeekBars para mostrar y seleccionar los valores del rojo, verde y azul. El código Java obtiene los valores de los componentes de color y genera el código hexadecimal correspondiente.
Este documento describe tres programas diferentes para calcular conceptos de electrónica, física y matemáticas. El programa de electrónica permite calcular la resistencia, voltaje y corriente aplicando las fórmulas correctas. El programa de física incluye conversiones de unidades y conversiones de grados. Finalmente, el programa de matemáticas permite calcular la raíz cuadrática de una ecuación, la distancia entre dos puntos y la raíz cuadrada de un número.
Back to the basics: Modelando nuestro dominio #scbcn19CodelyTV
SOLID, Arquitectura Hexagonal, CQRS, DDD… total, que llega el momento de modelar nuestras entidades y servicios, y nos hacemos un lío que no sabemos ni por dónde empezar .
Sensación de bloqueo. ""Hostia, llevo 3 horas pensando y dibujando posibles alternativas y ninguna me convence. Al final será verdad que no tengo ni idea "".
Planteamos hipótesis erróneas del estilo… _si lo hago con DDD ""de verdad"" la query no aguanta ni 100 peticiones concurrentes, pero esto otro me parece una chapuza, y esto otro viola 7 de los 5 principios SOLID… ¡¡¡mmmmmamaaaaaa!!! ._
Keep calm.
En esta charla plantearemos distintos escenarios prácticos y reales. Casos de uso de esos que se pueden ver en un screenshot y donde la gran mayoría de desarrolladores web y móviles nos podemos ver identificados:
* Listado de items con 652342 filtros y combinatorias (backoffices, páginas de categoría o filtrados, búsquedas…)
* Tipologías de items con partes comunes pero pequeños matices (productos de distintas categorías por ejemplo)
* Distintas opciones a la hora de modelar nuestras interfaces para hacerlas realmente agnósticas de la infraestructura que hay detrás
En fin. Cositas que nos han supuesto un reto a la hora de plantearlas, que hemos fallado modelando y hasta que no lo hemos tenido picado no nos hemos dado cuenta de la magnitud de la tragedia, y batallitas que ojalá puedan serle útiles a alguien
Microservices: Improving the autonomy of our teams with Event-Driven Architec...CodelyTV
- Microservices: Improving the autonomy of our teams with Event-Driven Architecture discusses migrating from a monolithic architecture to microservices and event-driven architecture.
- It explores how this impacts development team autonomy and scalability. It also analyzes a migration plan from monolith to service-based architecture.
- The document outlines stages including starting with a monolith, then moving to microliths which improved codebase scaling but led to infrastructure scaling issues. It describes how event-driven architecture can further decouple services.
Más contenido relacionado
Similar a Aprende a convivir con legacy (o no) - Vol. 2
El documento lista comandos de programación y sus funciones. Incluye comandos como asignación para cambiar valores de variables, entrada para pedir entrada de usuario, y salida para mostrar resultados. También describe estructuras de control como selección para tomar decisiones y ciclos para repetir secuencias. Finalmente, resume funciones comunes de Java y C como Scanner para entrada de datos y printf para salida de datos.
Este documento resume las sentencias básicas en C, incluyendo la asignación de valores, salida de datos a través de la función printf, y entrada de datos a través de la función scanf. Explica los formatos para imprimir y leer diferentes tipos de datos, como enteros, reales, caracteres y cadenas. También incluye ejemplos de código para ilustrar el uso de estas funciones.
El documento describe LINQ (Language Integrated Query), una característica de C# y VB.NET que permite realizar consultas en memoria y sobre bases de datos de una manera integrada al lenguaje. Explica conceptos como LINQ to Objects, LINQ to XML y DLINQ, así como operadores de consulta, tipos anónimos, expresiones lambda y más.
El documento describe LINQ (Language Integrated Query), una característica de C# y VB.NET que permite realizar consultas en memoria y sobre bases de datos de una manera integrada al lenguaje. Explica conceptos como LINQ to Objects, LINQ to XML y DLINQ, así como operadores de consulta, tipos anónimos, expresiones lambda y más.
Este documento proporciona una introducción a LINQ (Language Integrated Query), que permite realizar consultas en memoria y sobre bases de datos de una manera integrada en el lenguaje de programación. Explica conceptos clave como operadores de consulta, expresiones lambda, tipos anónimos e inicializadores de objetos. También describe las diferentes implementaciones de LINQ como LINQ to Objects, LINQ to XML y LINQ to SQL para consultar sobre colecciones, XML y bases de datos respectivamente.
El documento lista diferentes comandos y sus funciones para el lenguaje de programación Raptor, así como etiquetas y métodos comunes en Java. También describe operadores, declaraciones de variables, estructuras de control y funciones para C/C++ relacionadas con E/S, cadenas, caracteres y archivos.
El documento presenta una agenda para un análisis de datos con MongoDB. La agenda incluye por qué hacer análisis con MongoDB, cómo crear un ambiente de MongoDB, cómo ingestar datos en MongoDB, cómo explorar datos con MongoDB Compass, cómo hacer análisis de datos con el Aggregation Framework de MongoDB, cómo extender el análisis con Python y Apache Spark, e integrar herramientas de BI. El documento también incluye una demostración del Aggregation Framework y la integración con Python y herramientas de BI.
Este documento presenta varias métricas para evaluar la calidad de diagramas de clases en UML y la mantenibilidad de sistemas de información orientados a objetos. Se definen 10 métricas estructurales como número de clases, atributos, métodos, asociaciones, etc. Se miden estas métricas en tres diagramas de clases y se calcula la correlación entre ellas y el tiempo de mantenimiento usando el coeficiente de correlación de Spearman. Finalmente, se proponen métricas estéticas para medir aspectos del diseño gráfico como número
Este documento presenta varias consultas SPARQL sobre diferentes temas como The Simpsons, DBPedia, Tokyo Mew Mew, presidentes de Ecuador y Estados Unidos, álbumes de bandas californianas, capítulos de Los Soprano, empresas de software de California, autores nacidos en Berlín, películas de actores como Tom Hanks y Sandra Bullock, coincidencias para búsquedas, temas de Metallica, ciudades populares y una ontología sobre algoritmos de clasificación. Se incluyen consultas para identificar algoritmos,
El documento proporciona información sobre los conceptos básicos de programación en C, incluyendo funciones, variables, tipos de datos, estructuras de control de flujo como if/else y bucles for y while. Explica cómo incluir bibliotecas, definir funciones, usar tipos de datos primitivos y realizar entrada y salida de datos.
Los documentos presentan programas en C para resolver diferentes problemas matemáticos y lógicos mediante menús y condicionales. El primero calcula áreas según la figura geométrica seleccionada. El segundo convierte letras en números. El tercero calcula descuentos y obsequios por compras al por mayor.
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
El documento describe el framework web Catalyst escrito en Perl. Explica qué es Catalyst, sus ventajas de uso, requisitos de instalación, estructura de proyectos, creación de controladores, modelos, vistas, uso de plantillas, formularios, sesiones, autenticación y depuración. También menciona proyectos desarrollados con Catalyst en Perú.
Ejercicios de programación en C (Estructuras condicionales-Selectivas)Maynor Mendoza
Los documentos presentan programas en C para resolver diferentes problemas matemáticos y lógicos mediante el uso de condicionales y estructuras de control. Los programas incluyen cálculos de áreas geométricas, conversión de caracteres, cálculo de descuentos y obsequios, evaluación de índices de masa corporal, cálculo de días transcurridos, ordenamiento y comparación de números, y cálculo de costos de alquiler.
El documento describe la estructura básica de un programa en C, incluyendo declaraciones de funciones, variables y tipos de datos. También cubre el preprocesador de C, bibliotecas estándar, operadores, flujos de control y E/S.
El documento lista los comandos de Raptor y Java y describe su función. Los comandos de Raptor incluyen asignación, llamada, entrada, salida, selección y ciclo. Los comandos de Java incluyen @author, @param, @return y @see. También describe funciones como printf, scanf, strcpy y funciones para crear, abrir y cerrar archivos.
Este documento presenta el código para una aplicación móvil que permite seleccionar colores mediante códigos hexadecimales. Incluye la interfaz gráfica con TextViews y SeekBars para mostrar y seleccionar los valores del rojo, verde y azul. El código Java obtiene los valores de los componentes de color y genera el código hexadecimal correspondiente.
Este documento describe tres programas diferentes para calcular conceptos de electrónica, física y matemáticas. El programa de electrónica permite calcular la resistencia, voltaje y corriente aplicando las fórmulas correctas. El programa de física incluye conversiones de unidades y conversiones de grados. Finalmente, el programa de matemáticas permite calcular la raíz cuadrática de una ecuación, la distancia entre dos puntos y la raíz cuadrada de un número.
Back to the basics: Modelando nuestro dominio #scbcn19CodelyTV
SOLID, Arquitectura Hexagonal, CQRS, DDD… total, que llega el momento de modelar nuestras entidades y servicios, y nos hacemos un lío que no sabemos ni por dónde empezar .
Sensación de bloqueo. ""Hostia, llevo 3 horas pensando y dibujando posibles alternativas y ninguna me convence. Al final será verdad que no tengo ni idea "".
Planteamos hipótesis erróneas del estilo… _si lo hago con DDD ""de verdad"" la query no aguanta ni 100 peticiones concurrentes, pero esto otro me parece una chapuza, y esto otro viola 7 de los 5 principios SOLID… ¡¡¡mmmmmamaaaaaa!!! ._
Keep calm.
En esta charla plantearemos distintos escenarios prácticos y reales. Casos de uso de esos que se pueden ver en un screenshot y donde la gran mayoría de desarrolladores web y móviles nos podemos ver identificados:
* Listado de items con 652342 filtros y combinatorias (backoffices, páginas de categoría o filtrados, búsquedas…)
* Tipologías de items con partes comunes pero pequeños matices (productos de distintas categorías por ejemplo)
* Distintas opciones a la hora de modelar nuestras interfaces para hacerlas realmente agnósticas de la infraestructura que hay detrás
En fin. Cositas que nos han supuesto un reto a la hora de plantearlas, que hemos fallado modelando y hasta que no lo hemos tenido picado no nos hemos dado cuenta de la magnitud de la tragedia, y batallitas que ojalá puedan serle útiles a alguien
Microservices: Improving the autonomy of our teams with Event-Driven Architec...CodelyTV
- Microservices: Improving the autonomy of our teams with Event-Driven Architecture discusses migrating from a monolithic architecture to microservices and event-driven architecture.
- It explores how this impacts development team autonomy and scalability. It also analyzes a migration plan from monolith to service-based architecture.
- The document outlines stages including starting with a monolith, then moving to microliths which improved codebase scaling but led to infrastructure scaling issues. It describes how event-driven architecture can further decouple services.
Acercándonos a la Programación Funcional a través de la Arquitectura Hexag...CodelyTV
Slides de la charla "Acercándonos a la Programación Funcional a través de la Arquitectura Hexagonal" en el meetup de Software Crafters Madrid conjuntamente con Scala Madrid el 21/11/2018. Descuento en cursos CodelyTV Pro por verla: http://bit.ly/codelytv19e
Towards Functional Programming through Hexagonal ArchitectureCodelyTV
Slides of for the talk "Towards Functional Programming through Hexagonal Architecture" delivered at the Software Crafters Barcelona 2018 conference #scbcn18 by Juanma Serrano from Habla Computing and Javier Ferrer from CodelyTV
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)CodelyTV
How can we apply SOLID principles to a macro-design level in our [micro]services architectures?
In this talk we will see a problem-solution approach on how we deal with different kinds of load for our different services in order to avoid a domino effect while having peaks of request in one of our services. We'll do so using Domain Events and Message Queues such as RabbitMQ and AWS SNS-SQS.
Spanish resources:
* Hexagonal Architecture course: https://pro.codely.tv/library/arquitectura-hexagonal/66748/about/
* CQRS course: https://pro.codely.tv/library/cqrs-command-query-responsibility-segregation-3719e4aa/62554/about/
* HTTP API with Scala course: https://pro.codely.tv/library/api-http-con-scala-y-akka/66747/about/
* Testing in CQRS architectures talk: https://www.youtube.com/watch?v=cw6Va1ZW7iI
* We broke up with the monolith, and started dating event sourcing slides: https://www.slideshare.net/JavierCane/we-broke-up-with-the-monolith-and-started-dating-eventsourcing-symfonycat
English resources:
* The anatomy of Domain Event: blog.arkency.com/2016/05/the-anatomy-of-domain-event/
* Versioning in an Event Sourced System book: https://leanpub.com/esversioning
* RabbitMQ Simulator: tryrabbitmq.com
* A Series of Fortunate Events slides: https://www.slideshare.net/matthiasnoback/a-series-of-fortunate-events-symfony-camp-sweden-2014
From framework coupled code to #microservices through #DDD /by @codelytvCodelyTV
From framework coupled code to microservices through DDD modules. The presentation discussed the evolution from monolithic frameworks to microservices architecture through various stages:
1) Old days of framework coupled code with low autonomy, maintainability and learning curve.
2) Use of MVC frameworks improved isolation but code was still highly coupled.
3) Focus on testing drove adoption of SOLID principles at a micro scale.
4) Domain-Driven Design introduced modules per domain concept improving decoupling, semantics and testability.
5) Further decomposition into bounded contexts and microservices provided more autonomy for teams but introduced new accidental complexities around infrastructure and coordination.
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Javier Martinez Seco
El 15 de junio de 2024 Javier Martínez Seco, director de Ecode, presentó en SEonthebeach 2024 una ponencia titulada "Casos de éxito en Negocios online - Estrategias WPO que funcionan". Javier compartió su experiencia de más de 15 años en el ámbito de las tecnologías web, destacando su especialización en desarrollo web a medida, SEO técnico y optimización del rendimiento web (WPO).
- Presentación inicial: Javier Martínez es ingeniero informático especializado en tecnologías web, con un historial que incluye la creación y mejora de más de 1000 sitios web y negocios online. Realiza auditorías, consultorías, formación a equipos de desarrollo y desarrollo a medida.
- Sitios web que funcionan bien desde el principio: destacó la diferencia entre un sitio web que simplemente "funciona" y uno que "funciona bien". Ejemplos reales desarrollados por Ecode.
- Calidad en el rendimiento web: explicó qué aspectos deben considerarse para conseguir calidad en el rendimiento de una web. Detalló los procesos que el navegador debe seguir para renderizar una página web, incluyendo la descarga del documento HTML, CSS y demás recursos (imágenes, tipografías, ficheros JavaScript).
- Estrategias de carga óptima: Javier presentó estrategias de carga óptima teniendo en cuenta diferentes objetivos y condiciones de trabajo. Habló sobre la importancia de simular condiciones reales de usuario y ajustar la velocidad y CPU para estas simulaciones. También mencionó la extensión de Chrome Web Vitals.
- Pruebas de rendimiento: indicó cómo probar el rendimiento de carga de una página web en su primera visita.
- Realidad del sector y mercado actual: Javier describió la situación actual del sector, donde se priorizan tecnologías populares que facilitan el trabajo de creación web. Sin embargo, advirtió sobre la dependencia de tecnologías conocidas y la necesidad de adaptar el negocio online a estas tecnologías.
- Ejemplos de cargas no óptimas: presentó ejemplos de malas cargas de diferentes webs populares desarrolladas con CMS y tecnologías como Shopify, Webflow, Prestashop, Magento, Salesforce, Elementor, WordPress y Drupal. La tecnología lenta es tecnología mala.
- ¿Merece la pena hacerlo mejor?: Javier subrayó la importancia de medir la situación actual y evaluar la oportunidad de mejora.
- Javier finalizó la ponencia hablando sobre cómo trabaja actualmente con su empresa Ecode, enfocada en construir sitios web muy optimizados desde el inicio. Presentó un caso de éxito: La Casa del Electrodoméstico, una tienda online a medida con una facturación anual de millones de euros y más de 10 millones de carritos de compra, donde más del 90% de las sesiones cumplen con los parámetros LCP, INP y CLS durante toda la sesión.
La ponencia de Javier Martínez Seco en SEonthebeach 2024 ofreció una visión completa y práctica sobre la optimización del rendimiento web, demostrando cómo las estrategias WPO bien implementadas pueden marcar la diferencia en el éxito de los negocios online.
DuckDuckGo, es el motor de búsqueda centrado en la privacidad que lleva años creciendo como una sólida alternativa a buscadores como Google, Bing y Yahoo. Sobre todo, una alternativa para todos aquellos que no quieran ser rastreados y que quieran maximizar la privacidad cuando buscan cosas en Internet.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
Aplicación de las sentencias de control en telecomunicacionesambuludimateo2
if y switch son fundamentales en la programación moderna debido a su capacidad para controlar el flujo de ejecución y tomar decisiones basadas en condiciones específicas.
29. SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM score
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
30. SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM score
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM score
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM score
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM score
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM score
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRank
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY t.country_id
ORDER BY t.highScore DESC) AS countryRank,
RANK() OVER (ORDER BY t.highScore DESC) AS globalRan
FROM (
SELECT
user_id,
country_id,
MAX(score) AS highScore
FROM (
SELECT
*
FROM (
SELECT
t.user_id,
t.country_id,
t.highScore,
RANK() OVER (PARTITION BY
ORDER BY t.highScore
RANK() OVER (ORDER BY t.h
FROM (
SELECT
user_id,
country_id,
MAX(score) AS hi
FROM score
WHERE topic_id = 101
GROUP BY user_id, co
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
)
WHERE topic_id = 101
GROUP BY user_id, country_id
) AS t
) AS rt
WHERE
rt.user_id = ?
31. Flujo de una petición
&
Repository
Controller UseCase
Service
Unit test Integration test
Implementation
Acceptance test
I
A
D
*
32. Flujo de una petición
&
Repository
Controller UseCase
Service
Unit test Integration test
Implementation
Acceptance test
I
A
D
40. Sincronización entre sistema legacy y el nuevo
♻
Legacy New
TubiAPIradora
legacy
domain_events
new
replicate_from_legacy
new
domain_events
legacy
replicate_from_new
Publica evento
Replica
Consume
Publica evento
Replica
Consume
Invoca API
9