Category: Desarrollo

Enrutadores de subred Tailscale: Solución sencilla para conexiones de red complejas

2024-12-14

Tailscale normalmente requiere la instalación de un cliente en cada dispositivo, pero esto no siempre es factible para dispositivos integrados o VPC existentes. Ahí es donde entran en juego los enrutadores de subred. Permiten que los dispositivos se comuniquen usando la potente tecnología de traversal NAT de Tailscale, independientemente de si ejecutan Tailscale o no. Este artículo explica cómo funcionan los enrutadores de subred Tailscale, incluida la instalación y configuración en Windows y Linux. Para migraciones de redes grandes o la conexión de VPC de AWS, los enrutadores de subred ofrecen una manera rápida y sencilla de empezar. El uso personal es gratuito y no cuenta para los límites de dispositivos.

Ataque a la cadena de suministro afecta a Ultralytics: Análisis de incidente de seguridad de PyPI

2024-12-14

El proyecto Python Ultralytics sufrió recientemente un ataque a la cadena de suministro. Los atacantes comprometieron los flujos de trabajo de GitHub Actions del proyecto y robaron un token de API de PyPI, lo que resultó en versiones contaminadas 8.3.41, 8.3.42, 8.3.45 y 8.3.46. El ataque no explotó una vulnerabilidad de PyPI, sino el caché de GitHub Actions. PyPI, utilizando la Publicación de Confianza y los registros de transparencia de Sigstore, identificó y eliminó rápidamente el malware. El incidente destacó deficiencias en las configuraciones de tokens de API y entornos de GitHub. El artículo enfatiza la seguridad de las forjas de software y los flujos de trabajo de compilación/publicación, proporcionando recomendaciones de seguridad para los desarrolladores: usar Publicadores de Confianza, bloquear dependencias, evitar patrones inseguros y habilitar la autenticación multifactorial.

Rust Asíncrono en Microcontroladores Cortex-M: Una Inmersión Profunda

2024-12-14

Este artículo se adentra en el mundo de la programación asíncrona Rust en microcontroladores Cortex-M. Explica la mecánica de Futures, la programación cooperativa y los ejecutores asíncronos de Rust, mostrando su eficiencia en la gestión de recursos. Se presenta el innovador framework Embassy, diseñado para potenciar la programación asíncrona en microcontroladores. A través de ejemplos prácticos como un programa Blinky y un programa de Botón, el artículo ilustra la aplicación de Rust asíncrono en sistemas embebidos, comparando sus ventajas y desventajas con respecto a los enfoques tradicionales de RTOS. La conclusión destaca los beneficios significativos de Rust asíncrono en términos de utilización de recursos y concurrencia.

Fern, startup respaldada por YC, busca Ingeniero Frontend Senior

2024-12-14

Fern, una startup respaldada por Y Combinator, está buscando un Ingeniero Frontend Senior con un salario de $168,000 a $192,000, más acciones. Ubicada en Williamsburg, Brooklyn, NY, este puesto presencial requiere 4+ años de experiencia en desarrollo frontend, dominio de JavaScript/TypeScript, React y Next.js. Las responsabilidades incluyen optimizar la experiencia del desarrollador, gestionar la infraestructura frontend, construir funciones orientadas al usuario y fomentar sólidas relaciones con los clientes. Fern simplifica el uso de APIs y cuenta con Cohere, ElevenLabs, Webflow y Merge.dev entre sus clientes.

Desarrollo Ingeniero Frontend

Svader: Biblioteca Svelte para Componentes Renderizados por GPU

2024-12-14

Svader es una biblioteca para crear componentes Svelte renderizados por GPU utilizando shaders de fragmentos WebGL y WebGPU. Los desarrolladores pueden escribir programas en shaders de fragmentos para personalizar los colores de los píxeles y controlar los efectos de renderizado mediante la transmisión de parámetros. Admite Svelte 4 y 5, ofreciendo modos de renderizado WebGL y WebGPU con parámetros integrados como resolución, escala y tiempo. Svader simplifica el renderizado de GPU con componentes fáciles de usar y proporciona renderizado alternativo en entornos que no admiten WebGL o WebGPU.

Desarrollo

La ciencia del enrutamiento de pedidos de impresión en Canva

2024-12-14

El equipo de ingeniería de Canva construyó un sistema de reglas configurable para el recorrido de grafos con el fin de optimizar el enrutamiento de los pedidos de impresión. La separación de la construcción del grafo, el recorrido y la toma de decisiones garantiza una alta disponibilidad y escalabilidad. Utiliza bases de datos relacionales para la gestión de datos y genera grafos en caché de forma asíncrona para consultas rápidas. Un motor de reglas y un algoritmo de flujo de costo mínimo modificado encuentran la ruta óptima en milisegundos, minimizando la distancia de transporte y las emisiones de carbono, mejorando la experiencia del usuario y la eficiencia operativa.

Go: Cuándo decir que no

2024-12-14

Un desarrollador, después de años usando Go, vuelve a Java. Considera que Go es deficiente en varias áreas: opciones de bucle limitadas, ausencia de funciones de orden superior, manejo de errores engorroso, estilo de codificación demasiado restrictivo que lleva a código verboso y difícil de mantener, y un ecosistema de paquetes inmaduro. Si bien reconoce la idoneidad de Go para proyectos de infraestructura, desaconseja su uso en aplicaciones empresariales complejas.

Desarrollo desarrollo

El debate sobre la tipificación estática en PHP: Flexibilidad y eficiencia de los lenguajes dinámicos

2024-12-14

En este artículo, Tony Marston critica duramente los cambios en la comprobación de tipos estáticos obligatorios introducidos en PHP 8.1. Argumenta que este cambio viola los principios de diseño fundamentales de la tipificación dinámica de PHP, entrando en conflicto con el enfoque flexible de PHP para el manejo de tipos de datos y generando una carga de trabajo significativa para los desarrolladores. El artículo profundiza en las ventajas del sistema de tipificación dinámica de PHP, como la conversión automática de tipos y el manejo flexible de datos, señalando que las ventajas de rendimiento de la tipificación estática son insignificantes en el hardware moderno, mientras que obstaculizan la eficiencia del desarrollo. Marston sostiene que el sistema de tipificación dinámica de PHP es más adecuado para manejar datos de frontend HTML y backend SQL, y que imponer la comprobación de tipos estáticos es contraproducente, afectando negativamente a la comunidad PHP.

uv: Un gestor de paquetes y proyectos Python extremadamente rápido

2024-12-14

uv es un gestor de paquetes y proyectos Python extremadamente rápido, escrito en Rust, que reemplaza herramientas como pip, pip-tools, pipx, poetry, pyenv, twine y virtualenv. Con una mejora de velocidad de 10 a 100 veces, uv ofrece gestión de proyectos, gestión de herramientas, gestión de versiones de Python, soporte para scripts y una interfaz compatible con pip. Características como caché global y soporte para espacios de trabajo optimizan los flujos de trabajo. Desde la creación de proyectos y la gestión de dependencias hasta la ejecución de scripts y la creación de distribuciones, uv proporciona soluciones eficientes y convenientes para todas sus necesidades de desarrollo Python.

De recién graduado a ingeniero de personal en Meta en 3 años: la historia de éxito de Evan King

2024-12-14

Evan King comparte su trayectoria de rápido ascenso de recién graduado a ingeniero de personal en Meta en solo tres años. Sus seis principios clave para el éxito incluyen: priorizar la velocidad y la eficiencia para liberar tiempo para el crecimiento; ampliar la perspectiva para pensar estratégicamente como un ingeniero de nivel superior; abrazar la incertidumbre y compartir ideas libremente; centrarse en la resolución de problemas en lugar de la complejidad técnica; construir buena voluntad y relaciones sólidas; y mantener una actitud positiva. Si bien reconoce el papel de la suerte y el momento oportuno, Evan enfatiza la importancia de cultivar hábitos sostenibles que se acumulan con el tiempo, centrándose en las competencias esenciales y utilizando estratégicamente el ancho de banda adicional creado por la eficiencia.

Manejo de Errores en Clojure: No hay Bala de Plata, Solo Opciones

2024-12-14

Clojure ofrece una variedad de enfoques para el manejo de errores, sin una única mejor práctica. El artículo explora varios métodos: lanzar excepciones nativas, usar `ex-info` para excepciones que transportan datos, devolver mapas de error y utilizar varias bibliotecas para flujos de manejo de errores más sofisticados, como la biblioteca `anomalies` o opciones como `pact` y `failjure`. El autor enfatiza que la elección depende del contexto específico y que una mezcla de enfoques puede coexistir en un único proyecto. Los desarrolladores tienen el poder de seleccionar la solución más adecuada para sus necesidades; Clojure abraza esta libertad.

Desarrollo manejo de errores

Notas de la versión HTMX v2.0.4: Correcciones de errores y mejoras

2024-12-14

Las notas de la versión HTMX v2.0.4 detallan numerosas correcciones de errores y mejoras. Esta versión se centra en mejoras de estabilidad y compatibilidad, incluyendo correcciones para problemas con Shadow DOM anidados, comportamiento mejorado de `hx-boost` en formularios, mejor soporte para Web Components y Shadow DOM, y extensiones actualizadas para un rendimiento y confiabilidad mejorados. También se incluyen ajustes en la función `htmx.ajax` y optimizaciones en el manejo de eventos `hx-trigger`.

Asesor de doctorado automatiza la mejora de la escritura con scripts Shell

2024-12-14

Para mejorar la escritura de sus estudiantes de doctorado, un asesor creó tres scripts Shell para detectar el uso excesivo de la voz pasiva, palabras ambiguas y palabras duplicadas. Integrados en su sistema de compilación LaTeX, estos scripts fomentan elecciones conscientes para lograr claridad y precisión, en lugar de una adhesión ciega a las reglas gramaticales. El asesor aboga por el uso de la automatización por parte de los programadores para combatir las debilidades en la escritura y recomienda recursos como "Style: The Basics of Clarity and Grace".

La actualización macOS 15.2 rompe la replicación del sistema: los usuarios enfrentan una pesadilla de copia de seguridad de datos

2024-12-14

Un error crítico en macOS 15.2 ha roto la función de replicación del sistema, haciendo que las copias de seguridad de datos fallen con un error de 'Recurso Ocupado', específicamente al intentar copiar las particiones Preboot o Recovery. El desarrollador Dave Nanian explica que el problema proviene del propio código de Apple y actualmente no tiene una solución fácil. Los usuarios se ven obligados a depender de soluciones de copia de seguridad de terceros, utilizando un método 'Copia de seguridad - todos los archivos' con una actualización inteligente para restaurar sus datos después de una instalación limpia del sistema. Este problema está causando una frustración significativa para los usuarios, especialmente con la proximidad de las fiestas de fin de año.

Farebox: Un Proyecto de Enrutamiento Multimodal en Rust

2024-12-14

Farebox es una implementación rápida de RAPTOR en Rust diseñada para máquinas con restricciones de memoria. Utiliza Valhalla para transferencias y enrutamiento de primera/última milla, con soporte para enrutamiento multiagencia y zonas horarias. El objetivo del proyecto es complementar OpenTripPlanner, ofreciendo un servicio de relleno para áreas no cubiertas por instancias existentes. Se utiliza el mapeo de memoria para las tablas de horarios para permitir una cobertura a escala planetaria con una sola instancia y reducir los costos de alojamiento. Los planes futuros incluyen soporte para GTFS-RT y posiblemente rRAPTOR para el cálculo simultáneo de itinerarios en varios horarios de salida.

Desarrollo Enrutamiento

Lenguaje de Programación Luon: Un Lua con Tipado Estático

2024-12-14

Luon es un nuevo lenguaje de programación con tipado estático, con una sintaxis similar a los lenguajes basados en Oberon e incorporando conceptos de Lua, dirigido a la máquina virtual LuaJIT. Esencialmente, una versión tipada estáticamente de Lua, permite la reutilización de bibliotecas Lua y C existentes mediante declaraciones de procedimientos externos. Luon aborda las deficiencias en el manejo de errores y la estructura del código de Lua, ofreciendo un compilador e IDE integrado que admite programación procedural, genérica y orientada a objetos. El proyecto incluye ejemplos y casos de prueba extensos y está en desarrollo activo.

Desarrollo tipado estático

SCCS: El Motel de Código Fuente Después de 50 Años

2024-12-13

Este artículo examina retrospectivamente la influencia del Sistema de Control de Código Fuente (SCCS) en los últimos 50 años. El autor, Larry McVoy, detalla el formato único de tejido del SCCS, que permite la fusión por referencia, evitando las ineficiencias de la copia basada en parches que se encuentran en otros sistemas. Explica cómo el SCCS aprovecha este tejido para recuperar cualquier versión de archivo en tiempo constante y preserva la autoría entre versiones. Si bien reconoce inconvenientes como los bloqueos a largo plazo y la orientación a archivos, McVoy destaca la eficiencia del formato de tejido y su preservación de la autoría como innovadoras, sentando las bases para sistemas posteriores como BitKeeper.

Arquitectura Hexagonal en Rails: Un Camino hacia el Desacople

2024-12-13

Este artículo explora la implementación de la Arquitectura Hexagonal (patrón Ports and Adapters) en aplicaciones Rails. El autor inicialmente tuvo dificultades con el patrón hasta que se dio cuenta de que 'adapter' se refiere directamente al patrón Adapter del Gang of Four. El artículo detalla los puertos de entrada y salida, y cómo los adaptadores desacoplan la lógica de la aplicación de los servicios externos (bases de datos, registros, correo electrónico, etc.). Los controladores Rails pueden servir como adaptadores HTTP, pero el autor enfatiza evitar el uso directo de ActiveRecord. En su lugar, los repositorios personalizados acceden a los datos, mejorando el desacoplamiento y la mantenibilidad. El artículo concluye animando a los desarrolladores de Rails a adoptar la Arquitectura Hexagonal para aplicaciones más robustas y mantenibles.

Reutilizando smartphones antiguos como nodos de clúster Kubernetes con postmarketOS

2024-12-13

El autor construyó un clúster Kubernetes funcional utilizando smartphones antiguos descartados y el sistema operativo postmarketOS. El artículo detalla el proceso, incluyendo las razones para elegir smartphones antiguos (potente capacidad de procesamiento, baterías integradas), las ventajas de postmarketOS (basado en Alpine Linux, utiliza el kernel de Linux principal) y los desafíos encontrados durante la configuración (módulos del kernel, configuración de red). Se explican detalladamente las soluciones a estos desafíos. El autor logró reutilizar smartphones antiguos como nodos Kubernetes, utilizando los recursos de manera eficiente y promoviendo la sostenibilidad.

Elusión de las medidas de mitigación del kernel de Windows: Una inmersión profunda en Violet Phosphorus

2024-12-13

Esta publicación profundiza en cómo eludir las medidas de mitigación modernas del kernel de Windows 10 y 11, como SMEP y VBS. El autor detalla Violet Phosphorus, una técnica universal de elusión de VBS/SMEP, proporcionando código PoC y una cadena ROP. Explica el funcionamiento de SMEP y VBS, mostrando cómo explotar una vulnerabilidad en el controlador HackSysExtremeVulnerableDriver para usar gadgets ROP y la función MiGetPteAddress para modificar las entradas de la tabla de páginas, permitiendo la ejecución de código en el kernel. El autor también muestra cómo usar el shellcode SYSRET de Kristal-G para regresar al modo usuario. Este es un recurso valioso para desarrolladores de exploits de kernel e investigadores de seguridad, categorizado como Desarrollo.

Desarrollo

Lanzamiento de la biblioteca Node.js EPUB @smoores/epub

2024-12-13

Se ha lanzado una nueva biblioteca Node.js, @smoores/epub. Permite a los desarrolladores inspeccionar, modificar y crear publicaciones EPUB 3. La biblioteca ofrece API de alto nivel que simplifican la interacción con la especificación EPUB, como establecer el título y recuperar la información del autor. Las API de bajo nivel proporcionan un control granular sobre la estructura de EPUB, permitiendo tareas como agregar capítulos y metadatos. Construida sobre fast-xml-parser, @smoores/epub proporciona capacidades robustas de análisis y manipulación XML, facilitando el manejo eficiente del contenido XML de los archivos EPUB.

Desarrollo

Reinicios Programados: Un Enfoque Preventivo

2024-12-13

Un equipo de investigación universitario se enfrentó a un desafío de administración de sistemas: sus servidores llevaban funcionando demasiado tiempo y necesitaban reiniciarse, pero los reinicios frecuentes interrumpen la experiencia del usuario. Su configuración predeterminada era evitar reinicios, pero un reinicio a gran escala reciente debido al tiempo de actividad prolongado obligó a un cambio. Para evitar problemas similares, han decidido un cronograma de reinicio anual, al menos tres veces al año, alineado con el calendario académico de la universidad, equilibrando el mantenimiento preventivo con la experiencia del usuario.

Microsoft lanza código abierto MarkItDown: Herramienta de conversión de archivos a Markdown

2024-12-13

Microsoft ha lanzado el código abierto de MarkItDown, una herramienta Python que convierte varios archivos (incluidos PDF, PowerPoint, Word, Excel, imágenes, audio y HTML) al formato Markdown. La herramienta cuenta con una API simple, admite una amplia gama de tipos de archivos e incorpora OCR y transcripción de voz para una mayor funcionalidad, lo que la hace ideal para el análisis de texto o la indexación. Se agradecen las contribuciones, y el proyecto se adhiere al Código de Conducta de Código Abierto de Microsoft.

Recolección de ciclos concurrentes: Punteros inteligentes con recolección de basura en Rust para Scheme

2024-12-13

Este artículo detalla la implementación de un recolector de ciclos concurrentes en Rust para punteros inteligentes con recolección de basura (Gc) dentro de un intérprete Scheme. Gc funciona de manera similar a Arc>, admitiendo mutabilidad interna, clonación y envío entre subprocesos. El artículo explica detalladamente la implementación de Gc, incluida la mutabilidad interna segura para subprocesos mediante semáforos y bloqueos de lectura/escritura, y los detalles de implementación de la recolección de ciclos concurrentes basada en el algoritmo de Bacon y Rajan. Esto incluye el rasgo Trace, la detección de ciclos y los mecanismos para manejar modificaciones concurrentes.

HyperDX Contrata Ingenieros Full-Stack, Front-end y Back-end

2024-12-13

HyperDX, respaldada por Y Combinator, está contratando Ingenieros Full-Stack, Front-end y Back-end. HyperDX construye una plataforma de observabilidad de código abierto y amigable para desarrolladores, con el objetivo de reemplazar herramientas como Datadog y New Relic, ayudando a los ingenieros a identificar problemas de producción más rápidamente. Ofrece salarios competitivos y opciones de trabajo remoto, dirigidas a ingenieros experimentados.

Creador construye juego de disparos con láser: De un juego de Legoland a la diversión de Halloween con ESP32

2024-12-13

Inspirado por un juego de aventuras egipcias de Legoland, el autor decidió crear un juego de disparos similar. Usando microprocesadores ESP32 económicos, pistolas láser infrarrojas y objetivos caseros, construyó con éxito un juego de disparos con temática de Halloween. En el proceso, aprendió programación Arduino y MicroPython, superando desafíos en conexiones de hardware, suministro de energía y comunicación. El juego fue un éxito en eventos escolares y en casa. Sus planes futuros incluyen mejorar el diseño de los objetivos, los efectos de iluminación y las placas de circuito para mejorar la experiencia de juego.

Desarrollo Creador

Nuevas Funciones Hash Rain Hashes: Velocidad y Seguridad Combinadas

2024-12-13

DOSAYGO Research ha lanzado Rain Hashes, una nueva familia de funciones hash con los algoritmos Rainbow y Rainstorm. Rainbow se destaca por su velocidad excepcional, lo que lo hace ideal para el hashing de propósito general. Su implementación en C++ ha superado todas las pruebas de SMHasher3 y se caracteriza por su código conciso y eficiente. Rainstorm prioriza la seguridad; aunque no ha sido auditado formalmente, su diseño incorpora elementos de funciones hash criptográficas y ofrece tamaños de salida de 64 a 512 bits. El proyecto proporciona implementaciones en C++, WASM y Node.js, junto con una herramienta de línea de comandos y pruebas de evaluación comparativa para una fácil evaluación y uso.

Desarrollo función hash

Web Origami: Un nuevo lenguaje de programación para simplificar la creación de sitios web

2024-12-13

Web Origami es un nuevo lenguaje de programación diseñado para simplificar la creación de sitios web pequeños y medianos. Utilizando una sintaxis concisa que complementa HTML y CSS, los usuarios pueden describir la estructura del sitio web mediante fórmulas similares a las de las hojas de cálculo, transformando datos y archivos en HTML y otros recursos del sitio web a través de programas simples. Incluso sin conocimientos de JavaScript, se pueden crear funciones como la búsqueda de texto completo y los feeds RSS. Web Origami proporciona una interfaz de línea de comandos, funciones integradas y una biblioteca async-tree, con soporte para extensiones de JavaScript. Su concepto central es abstraer la creación de sitios web como una transformación de datos, haciendo que la creación e implementación de sitios web sea eficiente, de bajo costo y fácil de entender.

Vulnerabilidades de seguridad derivadas del PRNG débil de Dart/Flutter

2024-12-13

La investigación de Zellic descubrió múltiples vulnerabilidades de seguridad causadas por un generador de números pseudoaleatorios (PRNG) débil en Dart/Flutter. Un fallo en la inicialización de la función `Random()` dentro del SDK de Dart resultó en una entropía insuficiente en las claves generadas, haciéndolas susceptibles a ataques de fuerza bruta. Esto permitió a los atacantes acceder fácilmente al Dart Tooling Daemon, permitiéndoles leer o escribir archivos del espacio de trabajo e incluso ejecutar código arbitrario. Además, los proyectos Proton Wallet y SelfPrivacy también se vieron afectados por este PRNG débil, experimentando vulnerabilidades de cifrado y problemas de contraseñas predecibles, respectivamente. Si bien la vulnerabilidad se ha corregido, se insta a los desarrolladores a tener precaución al usar la función `Random()` y utilizar `Random.secure()` cuando se necesiten números aleatorios criptográficamente seguros.

Idea revolucionaria: Aplicando los principios de Magit al sistema de control de versiones jj

2024-12-13

El autor propone un enfoque novedoso: aplicar la interfaz de control de versiones Magit de Emacs (que usa archivos de texto como interfaz de usuario) al naciente ecosistema de control de versiones jj. El artículo destaca que la interfaz de usuario basada en texto de Magit ofrece eficiencia y portabilidad. Aprovechando el protocolo LSP, se puede implementar una experiencia similar a Magit en varios editores, evitando el desarrollo redundante. El autor prevé la generación de archivos de texto específicos (como .jj/status.jj) y el uso de funciones de LSP, como tokens semánticos, rangos de plegado e ir a la definición, para lograr operaciones de control de versiones similares a Magit. El objetivo final es crear una interfaz de usuario eficiente y multiplataforma para el control de versiones jj.

Desarrollo
1 2 3 4 5 7 9