Category: Desarrollo

Reglas para evitar errores comunes en ensamblador inline extendido

2024-12-21

Este artículo no es un tutorial de ensamblador inline, sino un resumen de seis reglas para evitar errores comunes. El autor destaca que el ensamblador inline es traicionero y debe evitarse siempre que sea posible, ya que los compiladores modernos ofrecen intrínsecos y funciones integradas para la mayoría de los casos de uso. Si es inevitable, las reglas son: usar el calificador `volatile`; usar un `memory` clobber si se accede a la memoria; nunca modificar las restricciones de entrada; nunca llamar a funciones desde ensamblador inline; no definir etiquetas de ensamblador absolutas; y usar la característica de etiquetas locales del ensamblador para evitar conflictos de etiquetas. El artículo concluye animando a los lectores a practicar la aplicación de estas reglas revisando tutoriales online e incluso código generado por LLM.

Desarrollo ensamblador inline

NoDB: Procesamiento de Pagos sin Base de Datos

2024-12-21

En "El Manual del Ingeniero de Pagos", Alvaro Duran presenta un enfoque revolucionario para el diseño de sistemas de pago: procesar pagos sin base de datos. Argumenta que la prevalencia de la programación asíncrona se debe a la suposición de la necesidad de bases de datos. Utilizando el sourcing de eventos, cada paso en el proceso de pago se registra como un evento, no como un estado persistente. Estos eventos se almacenan temporalmente en memoria, y el sistema reconstruye el estado del pago a partir del flujo de eventos, eliminando la necesidad de almacenamiento persistente. Este enfoque de alto rendimiento y alta confiabilidad, inspirado en la negociación de alta frecuencia, permite una recuperación rápida de las interrupciones mediante copias de seguridad en caliente. El artículo detalla este concepto con un ejemplo de flujo de pago y analiza las aplicaciones futuras en sistemas de pago.

@celine/bibhtml v3.0.3: Un Sistema de Referencias Basado en Web Components

2024-12-21

El sistema de referencias basado en Web Components para documentos HTML, @celine/bibhtml, ha lanzado la versión 3.0.3. Tiene como objetivo proporcionar una experiencia de usuario similar a la de las referencias en LaTeX/BibTeX, utilizando Citation.js como base y degradando con elegancia cuando las citas y las referencias están mal formadas o JavaScript está deshabilitado. Admite cuatro formatos de referencia: BibTeX, texto no estructurado, DOI y Wikidata, y ofrece tres elementos personalizados: ``, `` y ``, lo que simplifica la gestión de referencias en HTML.

Avance innovador: Compilando C a Rust de forma segura

2024-12-21

Investigadores han desarrollado un nuevo método para compilar código C a Rust de forma segura. Esta técnica utiliza análisis estático y traducción dirigida por tipos para evitar la dependencia de bloques `unsafe` de Rust, garantizando así la seguridad de memoria. El método se ha aplicado con éxito a código de la biblioteca criptográfica HACL* y de las bibliotecas EverParse, resultando en una biblioteca criptográfica moderna verificada de 80.000 líneas en Rust puro, la primera de su tipo.

Programador crea juego pseudo-3D en Bash

2024-12-20

Un programador llamado izabera ha desarrollado un impresionante juego pseudo-3D utilizando el lenguaje de scripting Bash. Este proyecto, un homenaje al clásico juego Wolfenstein 3D, es de código abierto en GitHub. El código es conciso, pero el resultado es sorprendente, mostrando el poder de Bash y la ingeniosidad del programador. El repositorio incluye el código fuente del juego y videos de demostración. Los desarrolladores interesados en aprender más pueden consultarlo en GitHub.

Herramientas de compilación Monorepo: Escalando tu base de código

2024-12-20

Las herramientas de compilación tradicionales tienen dificultades con grandes bases de código (100-10.000 desarrolladores activos). Las herramientas de compilación Monorepo como Bazel y Mill ofrecen soluciones, soportando múltiples lenguajes, tareas de compilación personalizadas, caché y paralelización automáticas, caché y ejecución remota, mejorando drásticamente la velocidad y eficiencia de la compilación. También incluyen selección de pruebas basada en dependencias y sandbox de tareas de compilación, reduciendo el tiempo de prueba y el no-determinismo. Si bien estas características pueden parecer innecesarias para proyectos pequeños, son cruciales para la colaboración a gran escala y la integración continua en proyectos más grandes, evitando que los tiempos de compilación se conviertan en un cuello de botella.

Comando DOS APPEND: Superando la Brecha entre lo Antiguo y lo Nuevo

2024-12-20

Durante la reconstrucción del código fuente de DOS 2.11, el autor se encontró con un desafío: el antiguo ensamblador MASM 1.25 no tenía soporte para directorios, lo que entraba en conflicto con la organización moderna de archivos usando una estructura de árbol. Para evitar un directorio monolítico, el autor empleó inteligentemente el comando DOS APPEND. APPEND es un programa TSR (Terminate and Stay Resident) que intercepta llamadas del sistema como la apertura de archivos y busca en una lista de rutas predefinida si el archivo no se encuentra en el directorio actual. Esto permitió que MASM 1.25 localizara archivos dentro de la estructura jerárquica, resolviendo la incompatibilidad y destacando la sorprendente utilidad de APPEND en escenarios específicos.

Desarrollo

io_uring obtiene nueva funcionalidad de creación de procesos

2024-12-20

LWN.net informa sobre el desarrollo de una nueva función de creación de procesos para el subsistema io_uring. Esta funcionalidad se implementa mediante dos nuevas operaciones io_uring: IORING_OP_CLONE, que crea un nuevo proceso, e IORING_OP_EXEC, que realiza una llamada al sistema execveat() para cargar un nuevo programa. Esto promete una mayor eficiencia y permite que se ejecute una lógica más compleja, como la búsqueda de rutas, de forma asíncrona en el kernel. Sin embargo, la función aún se encuentra en sus etapas iniciales y tiene limitaciones, como la necesidad de ejecutar de forma síncrona las operaciones io_uring en el nuevo proceso. El desarrollo futuro tiene como objetivo aumentar la flexibilidad y, finalmente, fusionar la función en el kernel principal de Linux.

Aplicación Grayjay: Sigue a los creadores, no a las plataformas

2024-12-20

Grayjay es un reproductor de vídeo multiplataforma que agrega contenido de plataformas como YouTube, PeerTube, Twitch y otras, eliminando la necesidad de cambiar entre diferentes plataformas. Priorizando la privacidad del usuario, almacena el historial de visualización localmente y ofrece importación/exportación de datos y copia de seguridad automática. Las características incluyen un feed de contenido personalizado, transmisión a pantalla grande e integración con Harbor para conectar con la audiencia y monetizar el contenido.

El asistente de código Gemini de Google agrega integración con herramientas de terceros

2024-12-20

Google anunció soporte para herramientas de terceros en Gemini Code Assist, su servicio de autocompletado de código de IA centrado en empresas. Esto permite la integración con herramientas como Jira, GitHub y Sentry mediante complementos, lo que reduce el cambio de contexto y aumenta la productividad del desarrollador. Actualmente en vista previa privada para socios de Google Cloud, esta función compite directamente con GitHub Copilot Enterprise, aunque Google destaca ventajas como la compatibilidad con bases de código locales. La adición de herramientas tiene como objetivo optimizar los flujos de trabajo y mejorar la eficiencia para los desarrolladores.

El Fondo Soberano de Tecnología invierte en OpenStreetMap

2024-12-20

La Fundación OpenStreetMap recibió una subvención de 384.000 € del Sovereign Tech Agency para garantizar la estabilidad, el crecimiento y la modernización de su software principal. Esta financiación se utilizará para actualizar el código, mejorar la documentación y la infraestructura de pruebas, y mejorar la infraestructura principal, incluido el tratamiento del vandalismo y la exploración de nuevos métodos de interacción de datos. Se crearán dos nuevos puestos, incluido un Facilitador de Desarrollo de Software Principal de OSM para coordinar los esfuerzos de los desarrolladores y fomentar las contribuciones de la comunidad.

Actualización de Rerun 0.21: Vista de grafo, arrastrar y soltar, y deshacer

2024-12-20

Rerun 0.21 presenta una esperada vista de grafo, junto con la funcionalidad de arrastrar y soltar y la capacidad de deshacer. La nueva vista, construida utilizando los arquetipos GraphNodes y GraphEdges, visualiza varias estructuras de grafo, como grafos ROS y grafos de escena semánticos. Esta versión también implementa el deshacer basado en viajes en el tiempo y presenta un nuevo motor de diseño de grafos basado en fuerzas, Fjädra, mejorando significativamente la experiencia del usuario.

Desarrollo Vista de grafo

Motor de juego de código abierto boardgame.io simplifica el desarrollo de juegos por turnos

2024-12-20

boardgame.io es un motor de juego JavaScript de código abierto diseñado para simplificar el desarrollo de juegos por turnos. Al gestionar automáticamente aspectos complejos como la gestión del estado, la red multijugador y los oponentes de IA, los desarrolladores pueden concentrarse en escribir la lógica del juego. El motor admite varias fases del juego, salas para la creación de partidas, capacidades de creación de prototipos y varias tecnologías de capa de vista (como React y React Native). Su potente sistema de plugins y los registros de juego rastreables mejoran aún más la eficiencia del desarrollo y la experiencia del jugador.

Desarrollo juego por turnos

WordPress.org pausa servicios por vacaciones

2024-12-20

Para dar a los voluntarios un descanso durante las vacaciones, WordPress.org está pausando temporalmente varios servicios gratuitos: nuevos registros de cuentas, nuevas presentaciones de plugins/temas y nuevas presentaciones del directorio de fotos. Los foros y la localización permanecen abiertos. El fundador Matt Mullenweg explica que las batallas legales con WP Engine están consumiendo tiempo y recursos significativos, perjudicando su trabajo en mejoras de WordPress. Insta a apoyar WordPress.org y sugiere usar hosts web alternativos no involucrados en el litigio.

Desarrollo Vacaciones

Visualizando la Concurrencia: Una Guía para Comprender el Espacio de Estado del Programa

2024-12-20

La programación concurrente es notoriamente compleja debido a la dificultad de enumerar todos los estados posibles. Este artículo utiliza la visualización para explicar cómo comprender la mecánica de la ejecución de programas concurrentes. Comienza introduciendo el concepto de estado del programa, que es una combinación de valores de variables y ubicación de instrucciones, y luego demuestra el proceso de transición de estados del programa y la generación del espacio de estado utilizando un ejemplo simple de programa similar a C. El artículo luego introduce programas concurrentes y, utilizando dos programas concurrentes, P y Q, explica cómo representar el estado de un programa concurrente y la construcción del espacio de estado. Finalmente, el artículo explora cómo utilizar la herramienta de verificación de modelos SPIN y el lenguaje LTL para verificar la corrección de los programas concurrentes, destacando el importante papel de la verificación de modelos en garantizar la corrección de los programas concurrentes.

¿Cómo interpretan los navegadores 'chucknorris' como un color?

2024-12-20

Este artículo explora cómo los navegadores manejan valores de color inválidos en HTML, como interpretar 'chucknorris' como rojo. El autor explica la tolerancia del navegador al analizar HTML, intentando convertir valores inválidos en valores válidos. Se describe el proceso de cómo los navegadores analizan valores de color inválidos, con un enlace a CodePen que demuestra el proceso. El autor argumenta que esta tolerancia del navegador es un encanto de la web, permitiendo que incluso el código inválido se ejecute, mostrando la resiliencia de la web.

Resumen Semanal de Python: Lanzamiento de Markitdown, Debate Caliente sobre la Gestión de Paquetes Conda

2024-12-20

Las noticias de Python de esta semana incluyen el lanzamiento de Markitdown de Microsoft (una herramienta para convertir archivos a Markdown), PDFMathTranslate (una herramienta de traducción de artículos científicos) y docling (una herramienta de preparación de documentos). Además, el PEP 768 propone agregar una interfaz de depurador externo segura a CPython para la depuración en tiempo real. Se generó un debate acalorado sobre las complejidades de la gestión de paquetes Conda, analizando sus problemas como conflictos de versiones, gestión de entornos virtuales e interacciones con pip y setuptools. Finalmente, el uso de Markdown provocó un debate que destaca los problemas de compatibilidad debido a las diferencias entre varios analizadores de Markdown.

Desarrollo

GribStream: Una API rápida y eficiente de historial de pronóstico del tiempo

2024-12-20

GribStream es una API rápida, eficiente y fácil de usar para el historial de pronóstico del tiempo, que utiliza los datos del National Blend of Models (NBM) y del Global Forecast System (GFS). Ofrece acceso a una gran cantidad de datos históricos meteorológicos; una sola solicitud HTTP puede recuperar decenas de miles de puntos de datos horarios durante meses en segundos. La API admite varios formatos de salida (CSV, Parquet, JSON, etc.) y consultas de ubicación. Su precio rentable y sus potentes funciones permiten a los desarrolladores acceder fácilmente a los datos que necesitan sin necesidad de descargarlos y archivarlos.

Desarrollo datos históricos

Introducción a NDEF: El lenguaje de NFC

2024-12-19

Este capítulo introduce el Formato de Intercambio de Datos de Comunicación de Campo Cercano (Near Field Communication - NFC) (NDEF), el lenguaje común para dispositivos y etiquetas NFC. NDEF es un formato binario estructurado en mensajes, cada uno de los cuales contiene varios registros. Cada registro se compone de un encabezado (metadatos) y una carga útil (contenido). El capítulo detalla la estructura de los registros NDEF, incluyendo el Formato de Nombre de Tipo, el Tipo de Carga Útil, el Identificador de Carga Útil y la Carga Útil, y muestra cómo escribir y leer mensajes con formato NDEF usando aplicaciones Android. También abarca los límites de tamaño del mensaje NDEF y el particionado de registros para cargas útiles más grandes. Por último, una aplicación de ejemplo demuestra la creación de una aplicación sencilla de escritura de etiquetas NFC usando el plugin PhoneGap-NFC, escribiendo mensajes NDEF en etiquetas para iniciar la aplicación Foursquare.

Desarrollo

Desarrollo Guiado por Tipos: Cómo los Tipos Simplifican Problemas Complejos de Programación

2024-12-19

Este artículo explora el concepto de "Desarrollo Guiado por Tipos", donde el autor, basándose en su experiencia con el gran proyecto Heartbeat en Typescript (más de 300.000 líneas), demuestra cómo el sistema de tipos de Typescript simplifica problemas complejos de programación. La idea principal es que, al aprovechar eficazmente el sistema de tipos, permitiendo que los tipos fluyan libremente a través de todas las capas de la aplicación, comenzando nuevas funciones con definiciones de tipos, haciendo que los estados ilegales sean irrepresentativos, analizando en lugar de validar datos y manteniendo la honestidad y especificidad del código, se reducen drásticamente los errores y se mejora la eficiencia del desarrollo. El autor también comparte técnicas para usar funciones puras como puentes de tipos y el sistema de tipos como una herramienta de introspección, reconociendo la necesidad ocasional de eludir las restricciones del sistema de tipos.

Clay: Una Biblioteca Robusta de Diseño de UI

2024-12-19

Clay es una biblioteca ligera de diseño de UI para construir interfaces de usuario responsivas y accesibles. Su API limpia e intuitiva permite a los desarrolladores crear fácilmente diseños complejos manteniendo la mantenibilidad y legibilidad del código. Clay prioriza el rendimiento y la accesibilidad, asegurando tiempos de carga rápidos y facilidad de uso a través de código optimizado y un diseño bien estructurado. Ya sea construyendo diseños de páginas simples o aplicaciones interactivas complejas, Clay permite a los desarrolladores construir interfaces de usuario de alta calidad de manera eficiente.

CCState: Una biblioteca ligera y flexible para la gestión del estado

2024-12-19

CCState es una biblioteca ligera, semánticamente clara y flexible para la gestión del estado, diseñada para aplicaciones de una sola página de tamaño medio a grande con necesidades complejas de gestión del estado. Se basa en tres tipos de datos básicos: computado, comando y estado, ofreciendo una API simple e intuitiva con una cobertura de prueba del 100 %. Independiente del framework, CCState funciona a la perfección con React, Vanilla JS y otros frameworks de IU, con un rendimiento ultrarrápido que supera a Jotai en varios escenarios. Las API principales, `state`, `computed` y `command`, manejan unidades de valor básicas, cálculos derivados y efectos secundarios, respectivamente. Los Hooks de React como `useGet`, `useSet`, `useLoadable` y `useResolved` simplifican el acceso a los datos y el manejo de los valores Promise. CCState también ofrece funciones de suscripción para actualizaciones reactivas.

Desarrollo gestión del estado

Inicio rápido con TideCloak: Aplicación React segura en 10 minutos

2024-12-19

TideCloak es un sistema de gestión de identidad y acceso fácil de usar, basado en Keycloak y protegido por la estructura de ciberseguridad de Tide. Esta guía te muestra cómo crear una aplicación React de una sola página segura con TideCloak en menos de 10 minutos. Primero, instala Docker y NPM, luego ejecuta el contenedor Docker TideCloak-Dev. Después de activar una licencia gratuita para desarrolladores, crea tu proyecto React, instala las dependencias y ejecuta la aplicación. Los usuarios pueden iniciar sesión, registrarse y ver contenido personalizado en función de los roles predefinidos, todo gestionado por TideCloak y protegido por la estructura de ciberseguridad de Tide.

mizu.js: Una biblioteca ligera de plantillas HTML para renderizado en cualquier lado

2024-12-19

mizu.js es una biblioteca ligera de plantillas HTML que admite la representación tanto del lado del cliente como del servidor. Su sintaxis simple, cercana a JavaScript y HTML sin procesar, ofrece una curva de aprendizaje suave. Con un conjunto completo de directivas para la representación condicional, bucles, enlace de datos y solicitudes HTTP, mizu.js permite construir diversos tipos de aplicaciones web: aplicaciones de una sola página, sitios estáticos y páginas dinámicas, sin procesos de compilación complejos. Su flexibilidad y simplicidad lo convierten en una opción ideal para proyectos pequeños y grandes.

Demo WebGPU Sponza: Un Impresionante Demostrador de Gráficos en el Navegador

2024-12-19

La demo WebGPU Sponza, creada por Georgi Nikolov, muestra las impresionantes capacidades gráficas de la API WebGPU. Los usuarios pueden navegar por la escena usando el teclado y el ratón. Sin embargo, esta demo requiere un navegador moderno con soporte para WebGPU. Actualmente, Chrome 113+, las versiones nocturnas más recientes de Firefox y Safari Technology Preview admiten WebGPU. Actualiza tu navegador a la versión más reciente si quieres experimentar esta demo visualmente impresionante.

Proxmox anuncia el lanzamiento de la versión alfa de Proxmox Datacenter Manager

2024-12-19

Proxmox ha lanzado una vista previa alfa de su Proxmox Datacenter Manager. Este software está diseñado para centralizar la administración de todos sus nodos y clústeres, ofreciendo funciones básicas de administración, como migraciones de máquinas virtuales, sin necesidad de una red de clúster. Desarrollado completamente en Rust, desde el servidor de API del backend hasta las herramientas de línea de comandos y un nuevo frontend, cuenta con una interfaz web moderna para mejorar la velocidad y la compatibilidad. Esta versión alfa tiene como objetivo recopilar comentarios de los usuarios, probar las funciones principales y fomentar la colaboración. Si bien algunas funciones están incompletas y se esperan errores, ya es capaz de administrar miles de hosts remotos y máquinas virtuales.

Programador convierte fotogramas de películas en arte con IA

2024-12-19

Un programador utilizó las bibliotecas Python, OpenCV y PIL para transformar fotogramas de películas en obras de arte únicas. Extrayendo fotogramas de videos, comprimiendo colores y generando imágenes de código de barras e "iris" circulares, el proyecto, 'Movie Iris', visualiza la evolución de los temas de color de una película. El código abierto puede procesar cualquier video, convirtiendo momentos cotidianos en arte.

Nullboard: Un tablero Kanban minimalista para uso sin conexión

2024-12-19

Nullboard es un tablero Kanban minimalista que prioriza la compacidad y la legibilidad. Una aplicación web de una sola página, almacena todos los datos localmente, permitiendo el uso sin conexión con funcionalidad de importación/exportacion JSON. Con funciones de arrastrar y soltar, guardado automático y deshacer/rehacer, Nullboard ofrece una gestión de tareas eficiente. Nacido de la frustración del desarrollador con las herramientas existentes, es una solución autoconstruida ahora compartida de código abierto.

Retis: Rastreo de Paquetes en la Pila de Red de Linux

2024-12-19

Retis es una herramienta que utiliza sondas eBPF para rastrear paquetes en la pila de red de Linux. Interactúa con rutas de control y datos como Open vSwitch y Netfilter, lo que la hace útil para depurar problemas de red, explorar la pila de red de Linux o probar funciones de red. Ofrece filtrado y rastreo de paquetes, recuperando metadatos e información contextual además del propio paquete. No requiere compilación en el sistema objetivo y tiene capacidades de posprocesamiento, como reconstruir el recorrido de un paquete. Fácil de usar, con perfiles predefinidos y soporte para sondas y filtros personalizados, Retis ofrece flexibilidad y facilidad de uso.

Botan: Kit de Criptografía C++ Moderno

2024-12-19

Botan es una potente biblioteca de criptografía C++ de código abierto, lanzada bajo la licencia BSD simplificada permisiva. Su objetivo es ser la mejor opción para criptografía en C++, ofreciendo herramientas para implementar diversos sistemas como el protocolo TLS, certificados X.509, cifras AEAD modernas, soporte de hardware PKCS#11 y TPM, hash de contraseñas y esquemas criptográficos post-cuánticos. Incluye un enlace Python y varios otros enlaces de idiomas están disponibles. La biblioteca se acompaña de una interfaz de línea de comandos con muchas funciones. La versión más reciente es la 3.6.1 y está disponible a través de muchas distribuciones, incluyendo Fedora, Debian, Arch y Homebrew.

Desarrollo
2 4 5 6 7 8