Category: Desarrollo

Canva reduce los tiempos de compilación de CI de horas a menos de 30 minutos

2024-12-18

El equipo de ingeniería de Canva redujo drásticamente los tiempos de compilación de integración continua (CI), de una media de 80 minutos a menos de 30 minutos, a veces incluso a 15. Esto se logró mediante un enfoque multifacético. Identificaron y resolvieron problemas de caché de Bazel, optimizaron las estructuras de pipeline, mejoraron los checkouts y el caché del repositorio Git y utilizaron la ejecución remota de compilación de Bazel (RBE). Experimentaciones extensas, incluyendo pruebas de diferentes tipos de instancias y ajustes en la configuración de Bazel, jugaron un papel crucial. Una serie de mejoras incrementales aumentaron significativamente la eficiencia de la CI, redujeron costos y mejoraron la experiencia del desarrollador.

Proyecto GitHub ted: Un editor de archivos basado en Máquina de Turing

2024-12-18

ted es una herramienta de línea de comandos escrita en Go que permite a los usuarios editar archivos según las reglas de una máquina de Turing proporcionada. Inspirada en la necesidad del autor de procesar archivos de registro, ted utiliza máquinas de estado para extraer precisamente la información deseada. Admite varias operaciones, incluyendo la coincidencia de expresiones regulares, la ejecución de comandos sed, la asignación de variables, la captura y el control de salida, y ofrece funciones como la captura de varias líneas, grupos de captura de regex y el movimiento de cabeza/cola de archivo.

Aplicación Homescreen: Redefiniendo la experiencia de la pantalla de inicio

2024-12-18

Homescreen es una aplicación diseñada para revolucionar la experiencia de la pantalla de inicio de tu teléfono. Rompiendo las limitaciones de los escritorios tradicionales de teléfonos, ofrece a los usuarios una forma más personalizada, eficiente y conveniente de interactuar con sus dispositivos. Los usuarios pueden personalizar widgets, temas y diseños para crear una pantalla de inicio única, aumentando la productividad y el disfrute. Homescreen no es solo un simple reemplazo del escritorio; es un enfoque renovador de cómo usamos nuestros teléfonos.

Recuperando Datos del Sensor: Liberándose de la Nube

2024-12-18

Este artículo describe cómo un ingeniero de software embebido recuperó el control de los datos de un sensor de radón conectado a la nube, eludiendo los servidores del fabricante. Al analizar el tráfico de red, el ingeniero descubrió una vulnerabilidad donde el sensor no validaba correctamente los certificados del servidor. Utilizando un servidor DNS local y un servidor web Python personalizado, el ingeniero interceptó y leyó con éxito los datos sin procesar del sensor. Esto otorga acceso programático y asegura la continuidad del funcionamiento incluso si los servidores del fabricante fallan. El artículo destaca la importancia de la seguridad de red y los riesgos de privacidad asociados al tráfico DNS.

Extensión de navegador 'refoorest' acusada de esquema fraudulento de plantación de árboles

2024-12-18

Una investigación sobre la extensión de navegador refoorest y el SDK Impact Hero, de Colibri Hero, revela un esquema engañoso de marketing de afiliados disfrazado como una iniciativa de plantación de árboles. La extensión tergiversa el número de árboles plantados, explota datos del usuario mediante reseñas y compartidos incentivizados, y el SDK obtiene permisos excesivos del usuario sin la debida divulgación, violando las políticas de la Chrome Web Store. El artículo expone un patrón de prácticas opacas, incluyendo testimonios falsos, secreto financiero y vulnerabilidades de seguridad de datos, generando serias dudas sobre las afirmaciones de la empresa sobre responsabilidad ambiental.

Desarrollo fraude de datos

Optimizando el JSON de Ruby: Parte 1

2024-12-18

Esta entrada de blog detalla cómo el autor optimizó la gema `json` de Ruby para convertirla en uno de los analizadores y generadores JSON más rápidos. En lugar de técnicas complejas, se aplicaron optimizaciones sencillas basadas en el perfilado, como evitar comprobaciones redundantes, priorizar las condiciones más baratas, reducir los costes de configuración y utilizar tablas de búsqueda. Estas mejoras se aplican tanto al código C como al código Ruby. Las optimizaciones aumentaron significativamente el rendimiento de la gema `json`, haciéndola competitiva con alternativas como `oj`, reduciendo la necesidad de parches de mono y solucionando problemas de estabilidad y compatibilidad asociados con `oj`.

ImPlot3D: Biblioteca de Trazado 3D de Modo Inmediato de Alto Rendimiento Basada en Dear ImGui

2024-12-18

ImPlot3D es una biblioteca de código abierto basada en Dear ImGui, que ofrece a los desarrolladores una forma fácil de usar y de alto rendimiento para crear gráficos 3D. Independiente de ImPlot, ImPlot3D admite varios tipos de gráficos 3D, incluyendo gráficos de líneas, gráficos de dispersión, gráficos de superficie y gráficos de malla, con rotación, panorámica y zoom interactivos. Su API intuitiva, similar a Dear ImGui e ImPlot, permite una integración rápida y la personalización de marcadores, líneas, superficies y estilos de malla, con opciones para mapas de color integrados o personalizados. Una aplicación de demostración completa ayuda a los usuarios a aprender y utilizar sus funciones.

Desarrollo trazado 3D

Intérprete Metacircular Python: Implementando un Intérprete Python en Python

2024-12-18

Este artículo muestra cómo crear un intérprete metacircular Python (MCI) usando Python mismo. Un MCI es un intérprete escrito en el lenguaje que interpreta, permitiendo la implementación de un subconjunto o superconjunto del lenguaje anfitrión. El autor detalla la implementación del MCI, cubriendo el análisis del código fuente Python, la construcción de un Árbol de Sintaxis Abstracto (AST), el recorrido del AST y la ejecución de instrucciones, y conceptos cruciales como el ámbito, las tablas de símbolos y el manejo de instrucciones de flujo de control (por ejemplo, bucles while e instrucciones if). Este ejemplo proporciona una comprensión profunda de la mecánica del intérprete y muestra cómo aprovechar el módulo AST de Python y las funciones integradas para construir intérpretes más complejos.

Notebooks Jupyter: Pruebas de extremo a extremo y documentación en uno

2024-12-18

Durante el desarrollo de una biblioteca de computación cuántica, el autor aprovechó los Notebooks Jupyter como guías de usuario y pruebas de extremo a extremo. Al leer variables de entorno (como SERVER_URL) dentro de los notebooks, logró la parametrización, permitiendo la ejecución por usuarios y pipelines de CI/CD automatizados. Se exploraron dos métodos para ejecutar notebooks: nbclient por simplicidad, y nbconvert/jq para mayor control pero mayor complejidad. El autor optó por la facilidad de uso de nbclient, integrando eficazmente el mantenimiento de la documentación y las pruebas de código, asegurando la integridad de ambos con cada solicitud de fusión.

Domando el Caos: Centralización y Estructuración del Manejo de Errores en Go

2024-12-18

Este artículo describe el proceso del autor para abordar los crecientes problemas de manejo de errores en un proyecto Go en expansión. Inicialmente, el enfoque simple para el manejo de errores se convirtió en un caos con registros confusos y errores intratables. Para solucionarlo, se diseñó e implementó un nuevo marco de manejo de errores. Este marco emplea un sistema centralizado y estructurado que utiliza códigos de espacio de nombres para hacer que los errores sean significativos y rastreables. El núcleo es una declaración centralizada de códigos de error; cada capa de servicio devuelve solo sus propios códigos de espacio de nombres, enriquecidos con información de contexto. El artículo explica a fondo las decisiones de diseño, la implementación, las lecciones aprendidas y la estrategia de migración, ofreciendo una valiosa experiencia práctica.

Ergo: Un Servidor IRC Moderno Escrito en Go

2024-12-18

Ergo es un servidor IRC moderno escrito en Go, diseñado para ser fácil de configurar y usar. Combina las características de un ircd, un framework de servicios y un bouncer (gestión de cuentas integrada, almacenamiento de historial y funcionalidad de bouncer). Cuenta con soporte de vanguardia para IRCv3 y es altamente personalizable a través de una configuración YAML rehashable. Las características clave incluyen servicios integrados (NickServ, ChanServ, HostServ), soporte nativo para TLS/SSL, autenticación SASL, soporte para LDAP y características avanzadas de seguridad y privacidad.

Desarrollo

Lanzamiento del ecualizador de 5 bandas de código abierto a5eq.lv2

2024-12-18

ashafq ha lanzado a5eq.lv2, un plugin de ecualizador de 5 bandas LV2 de código abierto. Este plugin incluye una repisa baja, tres filtros de pico y una repisa alta, diseñados para la escultura de audio precisa tanto para ingenieros de audio aficionados como profesionales. Cuenta con coeficientes de filtro de alta precisión, procesamiento estéreo y una interfaz fácil de usar. Es compatible con cualquier software host que admita LV2, como Ardour y Audacity, y se instala y utiliza fácilmente mediante la línea de comandos. Los usuarios pueden enviar incidencias o contribuir con código a través de GitHub.

Editor de Texto Adaptable 'ad': Combinando Vim y Acme

2024-12-18

ad es un editor de texto novedoso que combina la interfaz de edición modal de Vim y Kakoune con el enfoque de extensibilidad de Acme de Plan9. ad permite a los usuarios ejecutar texto y sirve como un entorno de pruebas para experimentar con la implementación de diversas funciones de editores de texto. Actualmente, ad es lo suficientemente estable y completo como para probarlo, aunque la documentación es escasa y pueden existir errores. La filosofía de diseño de ad combina la edición modal de Vim, el mini-buffer de Emacs y los comandos de edición y extensibilidad de Acme, con el objetivo de crear un entorno de edición cómodo que admita la interacción directa con herramientas y programas externos.

Generación rápida de texturas: un tutorial sobre texturas XOR

2024-12-18

Este tutorial explica cómo generar una textura XOR, una textura simple creada mediante la operación XOR de las coordenadas x e y de cada píxel. Si bien no es ideal para juegos o arte, es perfecta para probar mapeadores de texturas. El artículo detalla la operación XOR, analiza el efecto del tamaño de la textura en el brillo del color y muestra cómo generar texturas similares utilizando los operadores AND y OR. También se presenta un ejemplo de textura 3D utilizando XOR.

dLine: Herramienta de calendario en terminal para una gestión eficiente de la agenda

2024-12-18

dLine es una herramienta de línea de comandos que presenta datos importantes en formato de calendario directamente en su terminal. Monitoriza fechas críticas, simplifica la adición de eventos a través de APIs y calcula periodos de tiempo para varios tipos de eventos. Diseñada para desarrolladores, dLine agiliza la gestión de eventos y la navegación de la agenda sin salir del terminal. Cuenta con vistas dinámica y estática, una calculadora de eventos y sólidas capacidades de gestión de datos, incluyendo añadir, eliminar, ver y limpiar eventos. dLine también admite esquemas de color personalizados, traducciones de usuarios e integración con Google Calendar.

OpenAuth: Servidor OAuth 2.0 universal y autohospedado

2024-12-17

OpenAuth es un proveedor de autenticación universal, basado en estándares y de código abierto. Se puede implementar como un servicio independiente o integrarlo en aplicaciones existentes; es agnóstico de framework y funciona en Node.js, Bun, AWS Lambda o Cloudflare Workers. Cumpliendo con la especificación OAuth 2.0, OpenAuth ofrece una IU personalizable y con temas. A diferencia de la mayoría de las soluciones de autenticación de código abierto que son bibliotecas, OpenAuth es un servidor centralizado diseñado para facilitar el autohospedaje en su infraestructura. Intencionalmente omite la gestión de usuarios, proporcionando en su lugar callbacks para la búsqueda/creación de usuarios personalizados. El almacenamiento de datos es mínimo (tokens de actualización, etc.), utilizando un almacenamiento KV simple (Cloudflare KV, DynamoDB). Una IU preconstruida está disponible, pero puede personalizarla o reemplazarla totalmente. Creado por el equipo SST, OpenAuth simplifica la autenticación para sus aplicaciones.

IncludeOS: Ejecuta aplicaciones en la nube con cero sobrecarga

2024-12-17

IncludeOS es un sistema operativo ligero que permite ejecutar tu aplicación en la nube sin un sistema operativo tradicional. Integra la funcionalidad del sistema operativo directamente en tu aplicación, creando máquinas virtuales de alto rendimiento, seguras y eficientes en recursos. Las aplicaciones IncludeOS se inician en decenas de milisegundos y requieren solo unos pocos megabytes de disco y memoria. Las herramientas simples de línea de comandos facilitan la construcción e implementación, y hay muchos ejemplos y documentación para ayudar a los desarrolladores a comenzar rápidamente.

SeleniumBase: Un potente framework de automatización web

2024-12-17

SeleniumBase es un robusto framework en Python para automatización web, pruebas y elusión de detección de bots. Construido sobre Selenium WebDriver e integrado con herramientas de prueba como pytest, ofrece una sintaxis limpia y amplias funciones, como esperas automáticas para elementos de la página, generación de informes de pruebas, un panel y soporte para múltiples navegadores y sistemas operativos. SeleniumBase también incluye modos como el Modo UC y el Modo CDP para una mayor discreción y fiabilidad, junto con ejemplos y documentación exhaustivos para una rápida adopción.

Cerbos utiliza CRDT para un Playground colaborativo

2024-12-17

Cerbos ha creado un entorno de IDE y pruebas colaborativo, el "Playground", para simplificar la lógica de autorización compleja. Para habilitar una colaboración perfecta, utilizan Tipos de Datos Replicados sin Conflictos (CRDT), que resuelven automáticamente los conflictos en sistemas distribuidos. El artículo explora los CRDT, comparando bibliotecas populares como Yjs y Automerge, y analiza los desafíos y las posibilidades de construir un CRDT personalizado. Cerbos integra los CRDT con una arquitectura de back-end para front-end (BFF), utilizando WebSockets para la transferencia de datos e IndexedDB para la persistencia local, creando una plataforma colaborativa robusta. También se abordan los desafíos de la colaboración global y la persistencia de datos.

Haciendo el Rust Inseguro un Poco Más Seguro: Herramientas para Verificar Código Inseguro, Incluyendo Bibliotecas en C y C++

2024-12-17

La popularidad de Rust se debe a su capacidad para eliminar errores de memoria y concurrencia en tiempo de compilación, pero sus bloques de código `unsafe` pueden eludir estas comprobaciones. Este artículo explora herramientas para verificar código Rust inseguro, incluyendo código llamado desde bibliotecas C o C++. Presenta herramientas de detección de errores en tiempo de ejecución —sanitizadores— y Miri, un intérprete que encuentra comportamientos indefinidos de forma determinista. Los sanitizadores detectan accesos de memoria fuera de límites, carreras de datos y más, mientras que Miri proporciona informes de errores más precisos con fragmentos de código. Sin embargo, Miri actualmente no admite código llamado a través de FFI desde C/C++, siendo necesario el uso de sanitizadores de compilador C/C++ en esos casos. Estas herramientas mejoran la seguridad y confiabilidad del código Rust, incluso al tratar con código `unsafe` o interactuar con bibliotecas C/C++.

Desarrollo Errores de Memoria

BYOJS: Abrace JavaScript nativo para el desarrollo web

2024-12-17

El proyecto BYOJS defiende la construcción de aplicaciones web con JavaScript core, en lugar de depender de frameworks pesados. Si bien los frameworks y lenguajes como TypeScript son populares, BYOJS argumenta que construir aplicaciones web eficientes usando el lenguaje JS core es un arte perdido. Incentiva el uso de bibliotecas débilmente acopladas en lugar de frameworks fuertemente acoplados, abogando por elegir la herramienta menos potente que realice la tarea y priorizando el código conciso. El proyecto proporciona utilidades útiles, como una API simple de almacenamiento clave-valor, un emisor de eventos asíncronos, un contenedor modal y más. Todo el código tiene licencia MIT.

Desarrollo Bibliotecas ligeras

Avance en Seguridad de Red: Atrapar Intrusos en una 'Red del Infierno'

2024-12-17

Investigadores del equipo SensorFu de la Universidad de Oulu han desarrollado un nuevo sistema de defensa de seguridad de red inspirado en la técnica LaBrea tarpit. El sistema intercepta solicitudes ARP y retrasa las respuestas SYN-ACK, creando multitud de dispositivos virtuales en la red para confundir a los intrusos. Esto obliga a los atacantes a perder un tiempo significativo identificando dispositivos reales, proporcionando a los administradores tiempo crucial para solucionar vulnerabilidades. Las pruebas demostraron que el sistema extiende los tiempos de escaneo a horas, reduciendo drásticamente las tasas de éxito de los ataques. Ligero, eficiente y fácil de implementar, este sistema ofrece una protección robusta de red para organizaciones de todos los tamaños.

Surfer Protocol: Framework de código abierto para el control de datos personales

2024-12-17

Surfer Protocol es un framework de código abierto que permite a los usuarios exportar y construir aplicaciones basadas en sus datos personales. Abordando el problema de los datos aislados en múltiples plataformas, Surfer Protocol ofrece una solución. Incluye una aplicación de escritorio para exportar datos de varias aplicaciones y servicios, y un SDK de Python para construir aplicaciones usando estos datos. Los usuarios pueden aprovechar Surfer Protocol para crear modelos de IA personalizados, recuperar el control de sus datos de las grandes empresas tecnológicas o dejar un legado digital.

Hooklistener: Herramienta de depuración y prueba visual de Webhook

2024-12-17

Hooklistener es una herramienta online para visualizar, depurar y probar webhooks. Ofrece inspección de carga útil en tiempo real, capacidades de prueba local, programación personalizada, alertas accionables y funciones de colaboración en equipo. Los usuarios pueden configurar fácilmente puntos finales, recibir y analizar webhooks y automatizar flujos de trabajo con tareas programadas. Hooklistener ofrece planes gratuitos y de pago para satisfacer diversas necesidades, lo que permite a los desarrolladores gestionar y depurar webhooks de forma más eficiente.

Desarrollo Depuración Prueba

Desafío de OCR: Digitalizando las Memorias de Saint-Simon

2024-12-17

El autor dedicó varias semanas a utilizar OCR para digitalizar una edición de finales del siglo XIX de las memorias francesas del siglo XVIII, *Les Mémoires de Saint-Simon*. Esta obra monumental de 45 volúmenes, con más de 3 millones de palabras, está disponible online en imágenes, pero resulta difícil de leer. El objetivo era crear una versión de texto legible, buscable y copiable. Los desafíos incluyeron la baja calidad de las imágenes y el análisis de las diferentes zonas de la página (encabezados, texto principal, comentarios marginales, notas al pie, etc.). Se utilizó la API de Google Vision para OCR, con un programa en Python que procesaba los resultados para identificar y separar el texto de las diferentes áreas. Aunque los modelos de lenguaje grandes (LLMs) no lograron gestionar de forma fiable las referencias a las notas al pie, el autor mejoró el programa e incorporó una revisión manual, lo que resultó en el lanzamiento del primer volumen.

PipeGate: Proxy ligero y autohospedado, tu 'ngrok' económico

2024-12-17

PipeGate es un proxy ligero y autohospedado, construido con FastAPI, diseñado como un 'ngrok' económico. Permite exponer tus servidores locales a internet, ofreciendo una forma sencilla de crear túneles desde tu máquina local al mundo exterior. Es una excelente herramienta para desarrolladores que quieren comprender cómo funcionan internamente los servicios de tunelización como ngrok o necesitan una alternativa personalizable alojada en su propia infraestructura. Sus características clave incluyen autohospedaje, conexiones únicas, personalización, diseño ligero y facilidad de aprendizaje. La instalación es sencilla, a través de git clone o pip.

Bruin: Crea pipelines de datos con SQL y Python

2024-12-17

Bruin es una potente herramienta de pipeline de datos que combina la ingestión de datos, la transformación de datos con SQL y Python y las comprobaciones de calidad de datos en un único marco. Funciona con las principales plataformas de datos y se ejecuta en tu máquina local, en una instancia de EC2 o en GitHub Actions. Las características clave incluyen la ingestión de datos, transformaciones SQL y Python, comprobaciones de calidad de datos, plantillas Jinja, validación de extremo a extremo y soporte para varios entornos. Los pipelines se definen fácilmente mediante un simple archivo pipeline.yml.

Desarrollo pipeline de datos

SpiceNice: Se lanza una base de datos de especias culinarias de código abierto

2024-12-17

SpiceNice es un nuevo sitio web de código abierto que ofrece una base de datos completa de especias culinarias. Proporciona información detallada sobre cada especia, incluyendo su nombre botánico, usos culinarios y origen, junto con detalles sobre la planta correspondiente. Construido con Strapi (backend), PostgreSQL (base de datos) y Astro (frontend), SpiceNice pretende convertirse en un recurso central para cocineros, biólogos, agricultores y entusiastas de las especias. Los planes futuros incluyen una API web, soporte multilingüe y un foro comunitario.

Desarrollo especias

Discourse celebra una década fomentando comunidades online

2024-12-17

Discourse, el software de foros de código abierto, celebró su décimo aniversario el 26 de agosto de 2024. Lanzado con la visión de elevar el estándar del discurso online, ha crecido de un pequeño equipo de cuatro a más de 100 empleados en 25 países. La plataforma cuenta con más de 20.000 comunidades, 107 millones de temas y casi 1.650 millones de publicaciones. El desarrollo continuo ha incluido la adición de 49 plugins, funciones de chat y herramientas con tecnología de IA para la moderación y la mejora de la experiencia del usuario. Este éxito es un testimonio de su naturaleza de código abierto, compromiso con la retroalimentación del usuario y la dedicación de su equipo.

1 2 4 6 7 8 9