From 20658b0132ea21a1cec80a3a5717f73af303f4a7 Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:08:05 -0400 Subject: [PATCH 01/16] chore(content): expand introduction --- content/1.introduction/index.md | 48 ++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/content/1.introduction/index.md b/content/1.introduction/index.md index 52beeac..6c0c137 100644 --- a/content/1.introduction/index.md +++ b/content/1.introduction/index.md @@ -1,6 +1,6 @@ --- -title: 'Introducción al Lenguaje' -description: 'Un introduccion al lenguaje Rust' +title: 'Introducción a Rust' +description: 'Introducción a Rust: El Lenguaje del Futuro en Programación de Sistemas' draft: true data: type: 'custom' @@ -17,11 +17,39 @@ externalLinks: english: true link: 'https://rust-lang.org' --- -# Introducción al Lenguaje -Rust es un lenguaje de programación moderno y de alto rendimiento que se enfoca en la seguridad, la concurrencia y la eficiencia. Fue creado por Mozilla Research y lanzado en 2010. Desde entonces, ha ganado popularidad debido a varias razones: - -- 1. Seguridad y Confiabilidad: Rust se destaca por su sistema de tipos y su enfoque en la seguridad de la memoria. Su compilador atrapa muchos errores comunes de programación en tiempo de compilación, como el acceso a memoria no válida o los problemas de concurrencia, lo que hace que sea más difícil que los errores de este tipo se filtren en el código en producción. -- 2. Concurrencia sin Problemas: Rust ofrece herramientas poderosas para escribir código concurrente de forma segura. Su sistema de tipo de datos llamado "ownership" permite que el compilador garantice en tiempo de compilación que no hay carreras de datos o problemas de concurrencia en el código. -- 3. Eficiencia: Rust proporciona un alto rendimiento comparable al de C++ o C, pero con menos riesgos de errores comunes asociados con estos lenguajes, gracias a su sistema de tipos y su enfoque en la seguridad de la memoria. -- 4. Comunidad Activa: La comunidad de Rust es conocida por ser acogedora y activa. Hay una gran cantidad de recursos en línea, como libros, tutoriales, y una gran cantidad de bibliotecas de código abierto que hacen que sea fácil comenzar a trabajar con Rust y resolver problemas comunes. -- 5. Apoyo de Grandes Empresas: Rust ha ganado el apoyo de grandes empresas como Mozilla, Microsoft, Amazon, y Google, que están utilizando Rust en proyectos importantes. Esto ha contribuido a la popularidad y la adopción del lenguaje en una variedad de industrias. +## Introducción a Rust: El Lenguaje del Futuro en Programación de Sistemas + +En el vasto universo de los lenguajes de programación, Rust ha emergido como una estrella en ascenso, atrayendo la atención de desarrolladores de todo el mundo por su enfoque único en la seguridad y el rendimiento. Rust no solo promete, sino que cumple con la difícil tarea de ofrecer un control de bajo nivel sin sacrificar la seguridad y la facilidad de uso. En este post, exploraremos qué hace que Rust sea tan especial y por qué deberías considerarlo para tus próximos proyectos. + +### ¿Qué es Rust? + +Rust es un lenguaje de programación de sistemas que fue desarrollado por Mozilla Research, con su primera versión estable lanzada en 2015. A diferencia de muchos lenguajes modernos que priorizan la productividad y la simplicidad en detrimento de la eficiencia y el control, Rust busca ofrecer lo mejor de ambos mundos. Está diseñado para ser seguro, concurrente y práctico, permitiendo a los desarrolladores escribir código de bajo nivel sin temor a errores comunes como los desbordamientos de búfer y las condiciones de carrera. + +### Características Clave de Rust + +1. **Seguridad de Memoria sin Recolección de Basura:** + Una de las características más distintivas de Rust es su enfoque en la seguridad de la memoria. A diferencia de otros lenguajes que utilizan un recolector de basura para gestionar la memoria, Rust emplea un sistema de propiedad y préstamo. Este sistema permite que el compilador gestione la memoria de manera segura y eficiente, previniendo errores comunes como los punteros colgantes y las fugas de memoria. + +2. **Control y Rendimiento:** + Rust proporciona un control de bajo nivel similar al de C y C++, permitiendo a los desarrolladores optimizar su código para un rendimiento máximo. Esto lo hace ideal para aplicaciones donde el rendimiento es crítico, como los motores de juegos, los sistemas embebidos y las aplicaciones de tiempo real. + +3. **Concurrencia sin Miedo:** + La concurrencia es uno de los aspectos más complejos y propensos a errores en la programación. Rust aborda este problema con su sistema de tipos y el análisis estático en tiempo de compilación, lo que ayuda a evitar las condiciones de carrera y otros errores de concurrencia. Su modelo de propiedad garantiza que dos hilos no puedan acceder al mismo recurso mutable simultáneamente, asegurando así una concurrencia segura. + +4. **Ecosistema y Herramientas:** + Rust cuenta con un ecosistema robusto y en constante crecimiento. Herramientas como Cargo, el gestor de paquetes y compilador de Rust, facilitan la gestión de dependencias y la compilación del código. Además, la comunidad de Rust es conocida por ser extremadamente acogedora y activa, lo que hace que aprender y resolver problemas sea más accesible. + +### ¿Por Qué Elegir Rust? + +1. **Proyectos Críticos de Alto Rendimiento:** + Si estás trabajando en proyectos donde el rendimiento y la eficiencia son cruciales, como sistemas operativos, navegadores web o motores de juegos, Rust es una excelente opción. Su capacidad para ofrecer un control de bajo nivel sin sacrificar la seguridad lo hace ideal para estos entornos exigentes. + +2. **Seguridad en Aplicaciones:** + Para aplicaciones donde la seguridad es una prioridad, Rust proporciona una base sólida para prevenir vulnerabilidades comunes. Su sistema de tipos riguroso y su énfasis en la seguridad de la memoria ayudan a evitar errores que pueden ser explotados en ataques de seguridad. + +3. **Desarrollo Moderno:** + Rust no solo se trata de rendimiento y seguridad; también está diseñado para ser agradable de usar. Su sintaxis moderna y expresiva, junto con herramientas avanzadas, hacen que el desarrollo sea más eficiente y menos propenso a errores. + +### Conclusión + +Rust está cambiando la forma en que pensamos sobre la programación de sistemas. Su capacidad para ofrecer seguridad y rendimiento sin compromisos lo convierte en una herramienta poderosa para los desarrolladores modernos. Si aún no has explorado Rust, ahora es el momento de sumergirte y descubrir cómo puede transformar tus proyectos. Con una comunidad en crecimiento y un ecosistema robusto, Rust está preparado para ser un pilar en el desarrollo de software del futuro. From 0e58d8a9dc09485d56ebceba3958dfd399b36ec4 Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:09:12 -0400 Subject: [PATCH 02/16] fix(content): external links fix --- content/1.introduction/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/1.introduction/index.md b/content/1.introduction/index.md index 6c0c137..7e88f82 100644 --- a/content/1.introduction/index.md +++ b/content/1.introduction/index.md @@ -12,10 +12,10 @@ data: rust: 'top' targetPosition: basic: 'bottom' -externalLinks: - oficial: - english: true - link: 'https://rust-lang.org' + externalLinks: + oficial: + english: true + link: 'https://rust-lang.org' --- ## Introducción a Rust: El Lenguaje del Futuro en Programación de Sistemas From 45271394fba88605769ae5f6aa9b9826da8d716e Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:24:19 -0400 Subject: [PATCH 03/16] fix(content): add more links --- content/1.introduction/index.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/content/1.introduction/index.md b/content/1.introduction/index.md index 7e88f82..efb785c 100644 --- a/content/1.introduction/index.md +++ b/content/1.introduction/index.md @@ -13,9 +13,15 @@ data: targetPosition: basic: 'bottom' externalLinks: - oficial: + - name: 'Web Oficial' english: true link: 'https://rust-lang.org' + - name: 'Un paseo por Rust' + english: false + link: 'https://blog.rustlang-es.org/articles/un-pequeno-paseo-por-rust-4lko' + - name: 'Hicimos el sitio web de nuestra boda en Angular y Rust' + english: false + link: 'https://blog.rustlang-es.org/articles/hicimos-el-sitio-web-de-nuestra-boda-en-angular-y-rust-pk8' --- ## Introducción a Rust: El Lenguaje del Futuro en Programación de Sistemas From fd5d3c6357227b0207769f7f5fb508dc2730cc03 Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:43:54 -0400 Subject: [PATCH 04/16] fix(content): fix position --- content/rust.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/rust.yml b/content/rust.yml index ddcae9b..2f592c6 100644 --- a/content/rust.yml +++ b/content/rust.yml @@ -4,7 +4,7 @@ data: type: 'transparent' topicLevel: 'start' position: - x: 400 + x: 390 y: -100 sourcePosition: none: 'top' From a9c68c26fa2ea990d94fb356ffbdbf8f2dac6eaa Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:44:16 -0400 Subject: [PATCH 05/16] feat(content): add why rust --- content/1.introduction/index.md | 4 +- content/1.introduction/que-es-rust.md | 60 +++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 content/1.introduction/que-es-rust.md diff --git a/content/1.introduction/index.md b/content/1.introduction/index.md index efb785c..a3c5f0b 100644 --- a/content/1.introduction/index.md +++ b/content/1.introduction/index.md @@ -11,14 +11,12 @@ data: sourcePosition: rust: 'top' targetPosition: + que-es-rust: 'right' basic: 'bottom' externalLinks: - name: 'Web Oficial' english: true link: 'https://rust-lang.org' - - name: 'Un paseo por Rust' - english: false - link: 'https://blog.rustlang-es.org/articles/un-pequeno-paseo-por-rust-4lko' - name: 'Hicimos el sitio web de nuestra boda en Angular y Rust' english: false link: 'https://blog.rustlang-es.org/articles/hicimos-el-sitio-web-de-nuestra-boda-en-angular-y-rust-pk8' diff --git a/content/1.introduction/que-es-rust.md b/content/1.introduction/que-es-rust.md new file mode 100644 index 0000000..3fa6624 --- /dev/null +++ b/content/1.introduction/que-es-rust.md @@ -0,0 +1,60 @@ +--- +title: '¿Por Qué Rust?' +description: '¿Por Qué Usar Rust Hoy en Día? Casos de Éxito que Demuestran su Potencial' +draft: true +data: + type: 'custom' + topicLevel: 'start' + position: + x: 620 + y: 100 + sourcePosition: + introduction: 'left' + externalLinks: + - name: 'Web Oficial' + english: true + link: 'https://rust-lang.org' + - name: 'Un paseo por Rust' + english: false + link: 'https://blog.rustlang-es.org/articles/un-pequeno-paseo-por-rust-4lko' +--- +### ¿Por Qué Rust? + +En el competitivo mundo de la programación, elegir el lenguaje adecuado puede marcar una gran diferencia en la eficiencia, seguridad y escalabilidad de tus proyectos. Rust, un lenguaje relativamente nuevo, ha captado la atención de la comunidad de desarrolladores por su enfoque innovador en la seguridad y el rendimiento. A medida que más empresas e individuos adoptan Rust, los casos de éxito continúan demostrando su valor en aplicaciones del mundo real. En este post, exploraremos por qué deberías considerar usar Rust hoy en día y examinaremos algunos ejemplos notables de su éxito. + +#### ¿Por Qué Elegir Rust? + +1. **Seguridad de Memoria:** + Rust es conocido por su enfoque en la seguridad de memoria, lo que ayuda a prevenir errores comunes como los desbordamientos de búfer, los punteros colgantes y las fugas de memoria. Este enfoque se logra a través de su sistema de propiedad y préstamo, que garantiza la seguridad en tiempo de compilación sin necesidad de un recolector de basura. + +2. **Rendimiento:** + Al ser un lenguaje de bajo nivel, Rust permite un control preciso sobre el hardware, lo que se traduce en un rendimiento cercano al de C y C++. Esto lo hace ideal para aplicaciones de alto rendimiento, como motores de juegos, sistemas embebidos y software de tiempo real. + +3. **Concurrencia Segura:** + La concurrencia es una de las características más difíciles de manejar en la programación. Rust aborda este desafío con su sistema de tipos y análisis estático, previniendo condiciones de carrera y asegurando que los programas concurrentes sean seguros y eficientes. + +4. **Ecosistema y Comunidad:** + Rust cuenta con un ecosistema robusto, con herramientas como Cargo, su gestor de paquetes y compilador, que facilita la gestión de dependencias y la compilación de proyectos. Además, la comunidad de Rust es conocida por ser acogedora y activa, proporcionando un entorno de aprendizaje colaborativo. + +#### Casos de Éxito con Rust + +1. [**Mozilla y Servo:**](https://github.com/servo/servo) + Uno de los ejemplos más conocidos del uso de Rust es el navegador experimental Servo, desarrollado por Mozilla. Servo está diseñado para ser rápido, seguro y paralelizable, aprovechando al máximo las capacidades de Rust. El proyecto ha demostrado cómo Rust puede mejorar la seguridad y el rendimiento en aplicaciones de alto impacto como los navegadores web . + +2. [**Dropbox:**](https://dropbox.tech/application/why-we-built-a-custom-rust-library-for-capture) + Dropbox ha utilizado Rust para mejorar el rendimiento de su infraestructura. En particular, han reescrito partes críticas de su backend en Rust, logrando mejoras significativas en la eficiencia y la confiabilidad. Rust ha permitido a Dropbox manejar grandes volúmenes de datos con un alto grado de seguridad y rendimiento . + +3. [**Amazon Web Services (AWS):**](https://aws.amazon.com/es/blogs/opensource/sustainability-with-rust) + AWS ha adoptado Rust para varios de sus servicios, incluyendo el servicio de monitoreo de redes Firecracker, que es utilizado para lanzar microVMs. Rust proporciona la seguridad y el rendimiento necesarios para gestionar la infraestructura en la nube a gran escala de AWS, asegurando que los servicios sean rápidos y seguros . + +4. [**Discord:**](https://discord.com/blog/why-discord-is-switching-from-go-to-rust) + La popular plataforma de comunicación Discord ha integrado Rust en sus sistemas backend para mejorar la velocidad y la eficiencia. Rust ha permitido a Discord manejar una gran cantidad de tráfico de manera eficiente, reduciendo la latencia y mejorando la experiencia del usuario final . + +5. [**Linux**](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8aebac82933ff1a7c8eede18cab11e1115e2062b) + La integración de Rust en el kernel de Linux representa un cambio significativo en el desarrollo de uno de los sistemas operativos más fundamentales y ampliamente utilizados en el mundo. Este movimiento tiene profundas implicaciones para la seguridad, el rendimiento y la sostenibilidad del desarrollo del kernel. En este post, exploraremos las razones detrás de la adopción de Rust en Linux, cómo se está llevando a cabo esta integración y qué significa esto para el futuro del sistema operativo. + +#### Conclusión + +Rust no es solo una moda pasajera; es un lenguaje que ofrece soluciones reales a problemas complejos en el desarrollo de software moderno. Su enfoque en la seguridad de la memoria, el rendimiento y la concurrencia segura lo convierte en una opción atractiva para una amplia gama de aplicaciones. Los casos de éxito de empresas como Mozilla, Dropbox, AWS y Discord son testimonios contundentes del potencial de Rust para transformar proyectos críticos. Si buscas un lenguaje que combine eficiencia, seguridad y modernidad, Rust es una opción que vale la pena explorar. + +Adoptar Rust hoy puede prepararte para enfrentar los desafíos del desarrollo de software del mañana, proporcionando una base sólida para construir aplicaciones robustas y de alto rendimiento. ¡Es el momento perfecto para empezar a explorar todo lo que Rust tiene para ofrecer! From 20c44a27a414239fdc9eb1f9e329b93f11a6605a Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 18:39:37 -0400 Subject: [PATCH 06/16] fix(content): rename why rust content --- content/1.introduction/{que-es-rust.md => why-rust.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/1.introduction/{que-es-rust.md => why-rust.md} (100%) diff --git a/content/1.introduction/que-es-rust.md b/content/1.introduction/why-rust.md similarity index 100% rename from content/1.introduction/que-es-rust.md rename to content/1.introduction/why-rust.md From f0e66428b28f57ed0b8628f4707b282ac169531b Mon Sep 17 00:00:00 2001 From: Sergio Ribera <56278796+SergioRibera@users.noreply.github.com> Date: Tue, 4 Jun 2024 21:34:57 -0400 Subject: [PATCH 07/16] fix(components): try fix multiple sources and targets --- components/NodeCard.vue | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/components/NodeCard.vue b/components/NodeCard.vue index 11b7c22..75dafe6 100644 --- a/components/NodeCard.vue +++ b/components/NodeCard.vue @@ -4,6 +4,12 @@ import { Handle, Position } from '@vue-flow/core' const ignoreTypes = ["topics", "transparent"] + const positions = { + top: Position.Top, + left: Position.Left, + right: Position.Right, + bottom: Position.Bottom, + } const props = defineProps({ data: Object, @@ -32,24 +38,26 @@ console.log(node) }) - const checkSourceHandle = (ty) => { - return Object.values(props.data.sourcePosition || {}).includes(ty) - } - const checkTargetHandle = (ty) => { - return Object.values(props.data.targetPosition || {}).includes(ty) + const generateStyle = (handle, index) => { + return { [handle]: `${index * 10}px` } }