Category: Desarrollo

Un error divertido en las extensiones MV3 de Chrome

2025-07-13

La transición de Google Chrome de MV2 a MV3 eliminó el permiso webRequestBlocking, lo que rompió muchos bloqueadores de anuncios. Sin embargo, el autor descubrió un error peculiar: debido al uso de enlaces JavaScript en las API de extensión de Chrome, manipular parámetros en el constructor de eventos `chrome.webRequest` permitió omitir las comprobaciones de permisos y habilitar el bloqueo de anuncios. Si bien este error no representaba un riesgo de seguridad, puso de manifiesto problemas potenciales ocultos en código heredado y la posibilidad de lograr resultados inesperados mediante la explotación inteligente de detalles técnicos. El autor informó del error a Google, y desde entonces se ha corregido.

Desarrollo

BinaryRPC: Un framework RPC C++ de alto rendimiento

2025-07-12
BinaryRPC: Un framework RPC C++ de alto rendimiento

Frustrado por problemas de rendimiento con un servidor Java WebSocket, un ingeniero recién graduado recurrió a C++ y a la biblioteca uWebSockets para construir BinaryRPC, un framework RPC de alto rendimiento. Inspirado en Node.js y Express.js, BinaryRPC cuenta con un sistema moderno de middleware y gestión de sesiones, que admite varios niveles de QoS para mensajes fiables. Ahora de código abierto, está bien documentado e incluye ejemplos para una fácil adopción.

Desarrollo

Cronómetro de Speedrun para Deus Ex en D: Un viaje de hacking de juegos

2025-07-12

Frustrado por la falta de herramientas adecuadas para speedruns de Deus Ex en Linux, un speedrunner se embarcó en un proyecto para crear un cronómetro personalizado en D. Este artículo detalla el proceso, desde los intentos iniciales fallidos de encontrar una bandera de carga, hasta aprender llamadas al sistema Linux (ptrace y process_vm_readv), ingeniería inversa para localizar memoria adecuada para la inyección de código y, finalmente, implementar la funcionalidad principal del cronómetro. El autor comparte experiencias usando D y observa limitaciones como el manejo incompleto de excepciones y el soporte a la pantalla de guardado.

Construyendo un compilador C con "Writing a C Compiler": Un viaje paso a paso

2025-07-12
Construyendo un compilador C con

El autor planea trabajar en el libro "Writing a C Compiler" capítulo por capítulo, documentando su progreso en publicaciones de blog. Este libro proporciona un enfoque paso a paso para construir un compilador C, culminando en un compilador funcional al final del capítulo uno, con características adicionales agregadas en capítulos posteriores. Se incluye un conjunto completo de pruebas, lo que permite una verificación exhaustiva. El autor destaca el excelente enfoque incremental del libro, el conjunto completo de pruebas y el enfoque en un lenguaje del mundo real (C), elogiándolo como un recurso excepcional para aprender a construir compiladores.

Fabricación de un Chip de Qubit Superconductor: Un Proceso Detallado

2025-07-12
Fabricación de un Chip de Qubit Superconductor: Un Proceso Detallado

Este artículo detalla el proceso de fabricación de un chip de qubit superconductor, mejorando los métodos existentes para aumentar la reproducibilidad. El proceso incluye: el uso de una oblea de silicio de 6 pulgadas como sustrato, deposición por pulverización catódica de una película de niobio de 200 nm, litografía óptica y grabado por plasma para el patrón del niobio, litografía por haz de electrones para preparar las uniones Josephson, deposición por evaporación de película de aluminio para formar las uniones y, finalmente, corte y despegue. El artículo también describe la configuración experimental para la caracterización y medición de qubits, incluyendo el sistema de medición criogénica y la cadena de procesamiento de señales. Las uniones Josephson fabricadas presentaron corrientes críticas menores a las esperadas, lo que resultó en bajas relaciones EJ/EC.

Incus: Un Administrador de Contenedores y Máquinas Virtuales de Próxima Generación

2025-07-12
Incus: Un Administrador de Contenedores y Máquinas Virtuales de Próxima Generación

Incus es un administrador de contenedores de sistema, contenedores de aplicaciones y máquinas virtuales de próxima generación que ofrece una experiencia similar a la de una nube pública. Mezcle y combine fácilmente contenedores y máquinas virtuales, compartiendo el mismo almacenamiento y red subyacentes. Basado en imágenes, admite numerosas distribuciones de Linux, Incus escala desde computadoras portátiles hasta racks de servidores, adaptándose a diversos tipos de almacenamiento y red. Administre instancias mediante línea de comandos, API REST o herramientas de terceros. Desarrollado por muchos de los creadores originales de LXD, Incus cuenta con un diseño rico en funciones, que incluye seguridad, escalabilidad, registro de eventos y acceso remoto. Admite contenedores de sistema, contenedores de aplicaciones y máquinas virtuales.

Alerta de seguridad crítica: Ataque de cadena de suministro al plugin Gravity Forms

2025-07-12
Alerta de seguridad crítica: Ataque de cadena de suministro al plugin Gravity Forms

Investigadores de seguridad han descubierto un ataque de cadena de suministro dirigido al plugin Gravity Forms de WordPress, con código malicioso incrustado en la versión 2.9.12. Los atacantes utilizaron funciones de puerta trasera, `update_entry_detail` y `list_sections`, para robar información del sitio web, crear cuentas de administrador y ejecutar código arbitrario. El código malicioso se ha eliminado de la descarga oficial y se ha lanzado la versión 2.9.13. Se insta a todos los usuarios de Gravity Forms a que actualicen inmediatamente y comprueben sus servidores en busca de archivos maliciosos y solicitudes de red.

Introducción a los Filtros Digitales con Aplicaciones de Audio

2025-07-12

Este completo libro de texto proporciona una introducción exhaustiva a los filtros digitales y sus aplicaciones en el procesamiento de audio. Comenzando con el filtro de paso bajo más simple, cubre progresivamente los fundamentos teóricos, los métodos de diseño y las técnicas de implementación de varios tipos de filtros, incluidos los filtros lineales invariantes en el tiempo (LTI), los filtros de respuesta de impulso finito (FIR), los filtros de respuesta de impulso infinito (IIR) y diversas estructuras e implementaciones de filtros. El libro incluye numerosos ejemplos de código Matlab y Faust, junto con estudios de caso de aplicaciones de audio, lo que lo convierte en ideal para estudiantes e investigadores en procesamiento de señales digitales e ingeniería de audio.

Desarrollo filtros digitales

Magia Oscura de Python: Biblioteca de Desempaquetado de Diccionarios

2025-07-12
Magia Oscura de Python: Biblioteca de Desempaquetado de Diccionarios

Una biblioteca de Python llamada `dict-unpacking-at-home` proporciona desempaquetado de diccionarios, lo que te permite desempaquetar diccionarios directamente así: `{greeting, thing} = dct`. Aunque es genial, el autor afirma que no es una biblioteca crítica y la versión actual rompe los números de línea en los rastreos de pila. Existe una corrección, pero a un costo... Con casi un millón de descargas al mes y más de 30 millones de descargas en total, mucha gente está usando esta biblioteca aparentemente poco fiable.

Inmersión Profunda en la Recolección de Basura del CLR

2025-07-12
Inmersión Profunda en la Recolección de Basura del CLR

Este artículo proporciona una descripción general completa del recolector de basura (GC) dentro del Common Language Runtime (CLR). El GC actúa como un administrador automático de memoria, manejando la asignación y liberación de memoria para código administrado, liberando a los desarrolladores de la administración manual de memoria y previniendo problemas como fugas de memoria. Se detallan los conceptos centrales del GC, los principios de administración de memoria, los procesos de asignación y liberación, las estrategias de recolección de basura generacional (Gen 0, 1, 2 y el montón de objetos grandes), las condiciones de activación, las descripciones de las fases y el manejo de recursos no administrados. El artículo explica cómo el GC optimiza el uso de la memoria dividiendo el montón en generaciones según la duración del objeto, mejorando la eficiencia al centrarse primero en los objetos de corta duración.

Inmersión en Proxy Inverso: Desafíos y Evolución de la Gestión de Conexiones

2025-07-12
Inmersión en Proxy Inverso: Desafíos y Evolución de la Gestión de Conexiones

Este artículo profundiza en el funcionamiento interno de un proxy inverso y las complejidades de la gestión de conexiones. Desde arquitecturas de un solo hilo hasta multi-hilo, multi-proceso y orientadas a eventos con particionamiento de sockets, los proxies inversos han evolucionado significativamente para manejar alta concurrencia. El artículo detalla las ventajas y desventajas de varias técnicas, como la eficiencia de epoll en el multiplexing de E/S y los desafíos de los modelos multi-hilo con procesadores multinúcleo, y señala complejidades adicionales en el soporte de TLS y la diversidad de protocolos.

Modularización de un Monolito con Recarga de Código en Caliente de Elixir

2025-07-12

Alzo, un monolito de Elixir implementado como una instancia por cliente, aprovecha la carga de código en caliente de Elixir y la VM de Erlang para funciones específicas del cliente. Esto evita fallas en cascada y pruebas complejas de microservicios. Las aplicaciones LiveView específicas del cliente residen en `/alzo/lib/clients/apps`, cargadas dinámicamente al inicio. El código del cliente se elimina durante el proceso de compilación, evitando que la aplicación principal dependa de aplicaciones de tiempo de ejecución. Las actualizaciones de código en caliente se evitan para simplificar. Este enfoque proporciona desarrollo eficiente, mantenibilidad, escalabilidad y la capacidad de refactorizar fácilmente funcionalidades comunes de aplicaciones dinámicas al código base principal.

Jank: Interoperabilidad perfecta entre C++ y Clojure, lograda por un desarrollador individual

2025-07-12
Jank: Interoperabilidad perfecta entre C++ y Clojure, lograda por un desarrollador individual

El proyecto Jank ha logrado un progreso significativo, permitiendo la interoperabilidad perfecta entre Clojure y C++. A través de la gestión manual de memoria, sistemas de tipos mejorados y cajas opacas, el desarrollador permite llamadas directas a código C++ dentro de Clojure. Ejemplos prácticos incluyen imprimir "¡Hola, mundo!" usando streams de C++ y analizar archivos JSON con la biblioteca JSON for Modern C++. El trabajo futuro se centrará en el empaquetado, la distribución, la corrección de errores y, finalmente, el lanzamiento de la versión alfa.

Desarrollo

Control Simple de Sonos para un Niño de 5 Años usando ESP32

2025-07-12
Control Simple de Sonos para un Niño de 5 Años usando ESP32

Un padre creó un sistema simple de control para un altavoz Sonos Play:1 para su hijo de 5 años. Usando un M5Stack CardPuter v1.1 (ESP32S3) como controlador y Go para la lógica del backend, el niño puede reproducir o reiniciar su lista de reproducción favorita con solo presionar un botón. Una luz verde indica el estado operativo. Este es un proyecto divertido y fácil de usar que destaca la simplicidad y la interacción lúdica.

Desarrollo Proyecto Infantil

Combatiendo Crawlers Maliciosos con JPEGs Falsos

2025-07-12
Combatiendo Crawlers Maliciosos con JPEGs Falsos

El autor desarrolló una pequeña aplicación web llamada Spigot que genera páginas web falsas para confundir a los crawlers maliciosos. Recientemente, un crawler llamado ImageSiftBot lo atacó agresivamente en busca de imágenes, a pesar de que Spigot no las tiene. Para contrarrestar esto, el autor utiliza inteligentemente la estructura de los archivos JPEG, generando JPEGs falsos rellenos con datos aleatorios. Esto consume eficazmente los recursos del crawler, minimizando la carga de la CPU en el servidor. El enfoque es simple y eficiente, requiriendo un código mínimo, y las imágenes generadas se muestran correctamente en la mayoría de los navegadores.

Desarrollo

Un error casi catastrófico en OpenZFS destaca la potencia del sistema de tipos de Rust

2025-07-11
Un error casi catastrófico en OpenZFS destaca la potencia del sistema de tipos de Rust

Recientemente se descubrió un error sutil pero devastador en la función de asignación de disco principal de OpenZFS. El error, un simple error de tipo que daba como resultado el retorno del tamaño incorrecto, podía sobrescribir datos silenciosamente. Llevó casi dos días rastrearlo. Si bien el error no estaba presente en ninguna versión lanzada, provocó una reflexión sobre las limitaciones del análisis estático en C y las ventajas del sistema de tipos de Rust. La capacidad de Rust para definir tipos personalizados (como `PhysicalSize` y `AllocatedSize`) habría evitado esto. El autor argumenta que depender únicamente de la perfección del programador es erróneo; aprovechar herramientas y características del lenguaje para mejorar la calidad del código y mitigar errores difíciles de detectar y de alto impacto es clave.

Desarrollo

Guía de Estilo Red Hat: Una Inmersión Profunda en la Terminología

2025-07-11

Este documento describe meticulosamente la terminología estandarizada utilizada en la documentación técnica de Red Hat. Abarca una amplia gama de aspectos, desde nombres de software (por ejemplo, IBM S/390, Samba) hasta descripciones de seguridad (evitando términos vagos como "seguro" y exigiendo detalles específicos sobre las características de seguridad). La guía también estandariza las abreviaturas (por ejemplo, SSH, SSL), las descripciones de la línea de comandos y aclara el uso adecuado de palabras fácilmente confundidas (por ejemplo, "since" versus "because"). El objetivo general es garantizar la coherencia y la precisión, mejorando la legibilidad y el profesionalismo.

Cactus: Framework multiplataforma para la implementación local de LLM

2025-07-11
Cactus: Framework multiplataforma para la implementación local de LLM

Cactus es un framework multiplataforma para implementar modelos de lenguaje grandes (LLM), modelos de lenguaje de visión (VLM) y modelos de texto a voz (TTS) localmente en tu aplicación. Soporta Flutter y React Native, funciona con cualquier modelo GGUF de Hugging Face (Qwen, Gemma, Llama, etc.), manejando modelos desde FP32 hasta cuantización de 2 bits. Cactus proporciona llamadas a herramientas MCP para una funcionalidad de IA mejorada (recordatorios, búsqueda de imágenes, respuestas a mensajes), fallback de modelo en la nube para tareas complejas, plantillas de chat con tecnología Jinja2 y streaming de tokens. Se proporciona código de ejemplo, benchmarks de rendimiento en varios dispositivos y backend C++.

Desarrollo

Aumento del Rendimiento de Btrfs: Asignación de Bloques con Roles de Dispositivo

2025-07-11

¡Una mejora significativa en el rendimiento llega al sistema de archivos Btrfs! Un nuevo parche introduce un método de asignación de bloques basado en el rendimiento que utiliza roles de dispositivo, abordando el desequilibrio actual causado por la asignación basada únicamente en el espacio libre. Al definir cinco roles de dispositivo (metadata_only, metadata, none, data, data_only) y priorizando los roles junto con el espacio restante, el sistema puede asignar inteligentemente dispositivos más rápidos a metadatos y dispositivos más lentos a datos, lo que aumenta significativamente el rendimiento de lectura/escritura. Esta mejora evita las mediciones complejas de la velocidad del dispositivo, aprovechando el formato existente en el disco para una administración de almacenamiento más inteligente y eficiente.

Desarrollo

diffsitter: Herramienta de Diferencia de Código Semántica

2025-07-11
diffsitter: Herramienta de Diferencia de Código Semántica

diffsitter es una herramienta de comparación de diferencias de código que genera diferencias semánticamente significativas comparando los Árboles de Sintaxis Abstractos (AST) de los archivos, ignorando las diferencias de formato. Admite numerosos lenguajes de programación y ofrece funciones como el filtrado de nodos configurable, el formato amigable para la terminal y el registro detallado. Las opciones de instalación incluyen la compilación desde el código fuente, el uso de binarios precompilados y los administradores de paquetes.

eBPF y tiempos de ejecución de contenedores: Conexión a través de CRI

2025-07-11

Este artículo explora cómo los proyectos eBPF de código abierto se conectan con los tiempos de ejecución de contenedores (CR) utilizando la Interfaz de Tiempo de Ejecución de Contenedores (CRI) para enriquecer el contexto con información de pods y contenedores. Se detalla el proceso de conexión: localizar el archivo socket Unix, establecer una conexión gRPC usando la API CRI y consultar información. Ejemplos de Tetragon, crictl y Tracee ilustran diferentes enfoques para conectarse al CR, incluyendo rutas de socket predeterminadas codificadas y intentos de conexión en tiempo de ejecución. Finalmente, se demuestra la consulta de información del contenedor, como rutas de cgroup, usando la API CRI, como el método de Tetragon para recuperar la ruta de cgroup de un contenedor.

Las herramientas de IA ralentizan a los desarrolladores de código abierto experimentados: Un ensayo controlado aleatorio

2025-07-11
Las herramientas de IA ralentizan a los desarrolladores de código abierto experimentados: Un ensayo controlado aleatorio

Un ensayo controlado aleatorio (ECA) investigó el impacto de las herramientas de IA de principios de 2025 en la productividad de desarrolladores de código abierto experimentados que trabajan en sus propios repositorios. Sorprendentemente, los desarrolladores que utilizaron herramientas de IA tardaron un 19 % más en completar las tareas: la IA los ralentizó. Los investigadores consideran esto una instantánea de las capacidades actuales de la IA; planean continuar con esta metodología para rastrear la aceleración de la IA a partir de la automatización de I+D de IA. El estudio explora los posibles factores que contribuyen a la ralentización y examina las discrepancias entre este ECA y otros puntos de referencia y evidencia anecdótica, destacando la necesidad de metodologías de evaluación diversas para evaluar de forma exhaustiva las capacidades de la IA.

Desarrollo

Nuevo canal Canary de Android: Acceso anticipado continuo para desarrolladores

2025-07-11
Nuevo canal Canary de Android: Acceso anticipado continuo para desarrolladores

Google está reemplazando su programa Developer Preview con un nuevo canal Canary para Android, ofreciendo a los desarrolladores actualizaciones continuas durante todo el año. Esto permite un acceso más temprano y consistente a funciones y API experimentales. A diferencia de las instalaciones manuales anteriores, las compilaciones Canary se entregan por aire y se ejecutan simultáneamente con el programa beta. Si bien está destinado a pruebas y no al uso diario, Canary proporciona valiosos comentarios anticipados, permitiendo a los desarrolladores identificar problemas y probar sus aplicaciones de forma continua. El soporte está actualmente disponible para dispositivos Pixel y la versión Canary de Android Studio.

Popularidad de Bases de Datos en Hacker News: ClickHouse y DuckDB en Ascenso

2025-07-11
Popularidad de Bases de Datos en Hacker News: ClickHouse y DuckDB en Ascenso

Un análisis de 18 años de datos de Hacker News muestra el crecimiento significativo de las bases de datos de código abierto ClickHouse y DuckDB, mientras que las bases de datos nativas de la nube experimentan una disminución en la discusión. PostgreSQL mantiene su sólida presencia, y SQLite destaca por su alto engagement del usuario. El análisis utiliza recuentos de titulares y métricas de engagement (comentarios y puntos) para mostrar las tendencias, destacando el auge de las bases de datos de código abierto y analíticas.

Desarrollo

Herramientas de codificación con IA: una caída del 19% en la productividad para desarrolladores experimentados

2025-07-11
Herramientas de codificación con IA: una caída del 19% en la productividad para desarrolladores experimentados

Un estudio riguroso sobre desarrolladores experimentados que utilizan herramientas de codificación con IA revela una sorprendente disminución del 19% en la productividad, contradiciendo la expectativa autoinformada por los desarrolladores de un aumento del 20%. El estudio encontró que el código generado por IA a menudo no cumplía con los altos estándares de los proyectos grandes y maduros, lo que llevó a una cantidad significativa de tiempo dedicado a revisar y corregir la salida de la IA. Esto destaca las limitaciones de las herramientas de codificación con IA actuales, sugiriendo que su eficacia depende en gran medida del tipo de proyecto, la experiencia del desarrollador y la madurez de las propias herramientas.

Desarrollo

Blog de Álgebra Lineal Gráfica: Un Enfoque Diagramático para el Álgebra Lineal

2025-07-11
Blog de Álgebra Lineal Gráfica: Un Enfoque Diagramático para el Álgebra Lineal

Este blog explora el álgebra lineal mediante un enfoque visual y diagramático. Explica conceptos matemáticos complejos de una manera accesible, utilizando ilustraciones para aclarar temas desafiantes. El contenido abarca desde operaciones básicas hasta conceptos avanzados como matrices, homomorfismos y relaciones, todo explicado paso a paso con diagramas. El blog también anuncia una escuela de investigación en Teoría de Categorías Aplicada y oportunidades de investigación relacionadas, lo que lo convierte en un recurso valioso para estudiantes e investigadores interesados en el álgebra lineal.

FOKS: Acceso Seguro a Datos mediante una Jerarquía de Claves Simple

2025-07-11

FOKS protege el acceso a los datos mediante una jerarquía de claves simple. Las claves de nivel básico incluyen claves de dispositivo de usuario, claves de respaldo y YubiKeys. Cada usuario tiene varias claves por usuario (PUK) cuyos secretos de semilla están encriptados con todas las claves de nivel básico disponibles. La eliminación de una clave de nivel básico rota las PUK. Las claves de equipo (PTK) funcionan de manera similar, compartidas entre los miembros del equipo (usuarios o sub-equipos) y encriptadas con claves de miembro. Esta jerarquía garantiza que solo los dispositivos, equipos y usuarios autorizados puedan acceder a los datos.

Desarrollo gestión de claves

Inferencia de LLM en Producción: La Guía Definitiva

2025-07-11
Inferencia de LLM en Producción: La Guía Definitiva

Esta guía aborda el conocimiento fragmentado sobre inferencia de LLM en producción. Cubre conceptos principales, métricas de rendimiento (como Tiempo al Primer Token y Tokens por Segundo), técnicas de optimización (batching continuo, caché de prefijo) y mejores prácticas operacionales. Ya sea que esté ajustando finamente un modelo abierto pequeño o ejecutando implementaciones a gran escala, esta guía ayuda a que la inferencia de LLM sea más rápida, barata y confiable.

Desarrollo inferencia producción

Modo Lote para la API Gemini: Procesamiento de Alto Rendimiento

2025-07-11
Modo Lote para la API Gemini: Procesamiento de Alto Rendimiento

La API Gemini de Google ahora ofrece un modo lote, un punto final asíncrono ideal para tareas de alto rendimiento donde la latencia no es crítica. Envía trabajos grandes, deja que el sistema maneje el procesamiento y recupera los resultados en un plazo de 24 horas con un 50% de descuento en comparación con las API sincrónicas. Perfecto para datos preparados previamente que no necesitan una respuesta inmediata, ofrece ahorro de costes, mayor rendimiento y llamadas a la API simplificadas. Reforged Labs lo utiliza para procesar grandes cantidades de anuncios de vídeo, mejorando significativamente la eficiencia y reduciendo costes. Empieza fácilmente con el Google GenAI Python SDK.

1 2 43 44 45 47 49 50 51 214 215