Artículos con la etiqueta «Diseño»
25 artículos con la etiqueta «Diseño», del más reciente al más antiguo.
-
Buenas prácticas de multithreading en la práctica — Edición Java: el estándar en la era de los hilos virtuales
En Java lo correcto es no crear hilos a mano, sino usar ExecutorService y hilos virtuales. Repasamos synchronized frente a ReentrantLock, la parada por inter...
-
Buenas prácticas de multihilo en la práctica — Edición C — Programar con seguridad al estilo de la API Win32
En C con Win32 la norma es crear hilos con _beginthreadex, usar bloqueos SRW y variables de condición, Interlocked, y una parada con evento + WaitForMultiple...
-
Buenas prácticas de multithreading en la práctica — Edición C++: eliminando los accidentes desde la estructura con RAII y jthread
En C++, una condición de carrera es directamente comportamiento indefinido. Repasamos la trampa del destructor de std::thread, la parada con jthread y stop_t...
-
Buenas prácticas de multithreading en la práctica — Edición .NET: qué decidir antes de aumentar los hilos
Reglas de diseño en .NET/C# para evitar fallos y bloqueos intermitentes con hilos: usar Task en lugar de hilos propios, reducir el estado compartido, discipl...
-
No confíe en el valor decodificado de un código QR sin validarlo — que la corrección de errores funcione no garantiza que el valor sea correcto
La corrección de errores del QR no garantiza que el valor leído sea correcto. Con pruebas reales y dos decodificadores explicamos por qué un daño mal ubicado...
-
Deje de usar Write-Host — Flujos de salida de PowerShell y diseño de registros
Explica los seis flujos de salida de PowerShell, los problemas de Write-Host y su uso correcto, por qué se contamina el valor de retorno de una función, el c...
-
Diseño de códigos en sistemas empresariales ── Cómo definir códigos de producto y cliente, y el dígito de control
Guía práctica para diseñar códigos de producto y cliente en sistemas empresariales: código significativo frente a secuencial, fórmulas de dígito de control (...
-
Introducción a ADR (Architecture Decision Record) — El método mínimo para dejar constancia de «por qué se eligió este diseño» en desarrollos de pequeña escala
El código no dice «por qué» se hizo así. Aprenda a registrar cada decisión de diseño con ADR (Architecture Decision Record): plantilla, tabla de criterios y ...
-
Para no olvidar decidir «en cuántos segundos debe responder para ser aceptable» — Cómo ordenar los requisitos no funcionales con la «Escala de requisitos no funcionales» del IPA
Muchos conflictos por «lentitud» o «respuesta a fallos no prevista» se deben a requisitos no funcionales olvidados. Explicamos, en términos claros para el cl...
-
Cuándo no conviene migrar una aplicación de Windows a la Web — tabla de decisión y la solución realista de la "división"
En apps Windows con integración de dispositivos, procesamiento de archivos locales u operación sin conexión, migrar a la Web puede elevar los costos y degrad...
-
Cómo elegir la comunicación entre procesos en Windows — canalizaciones con nombre / TCP / gRPC / memoria compartida / COM: tabla de decisión
Cómo elegir la comunicación entre procesos en Windows: comparamos en una tabla de decisión las canalizaciones con nombre, el TCP local, gRPC, la memoria comp...
-
Cómo elegir el destino de almacenamiento de datos en una app de Windows ── Tabla de decisión: SQLite / JSON / Registro / Access
Dónde y con qué guardar los datos de una app de escritorio Windows: uso de AppData/ProgramData, ventajas y trampas de SQLite, JSON, Registro y Access, con pr...
-
¿Dónde deben ir el catch y el log en el manejo de excepciones?
Organiza los límites para capturar excepciones, el log principal y quién decide la recuperación, evitando el catch amplio, los logs duplicados y los resultad...
-
Por qué priorizar la espera por eventos sobre Sleep(1) en Windows
En Windows, la precisión de una espera corta con timeout depende de la granularidad del reloj del sistema y de la planificación. Este artículo explica por qu...
-
Tabla de decisión: terminar o continuar ante una excepción inesperada
Analiza si una aplicación debe terminar o continuar tras una excepción inesperada, según el daño al estado, los efectos externos, los hilos y los límites nat...
-
Lista de verificación mínima de seguridad para el desarrollo de aplicaciones de Windows
Lista de verificación para aplicaciones empresariales WPF, WinForms, WinUI, C++ y C#: permisos, firma, actualizaciones, secretos, HTTPS, validación de entrad...
-
¿Qué es .NET Generic Host? - La base de DI, configuración y registro
Analiza el papel de Generic Host —DI, configuración, registro, IHostedService y BackgroundService— y resume, con criterio práctico, dónde conviene usarlo y d...
-
¿Qué es .NET Native AOT? Diferencias con JIT y trimming
Explicamos qué es Native AOT diferenciándolo de JIT, ReadyToRun, self-contained, single-file, trimming y source generator, y resumimos desde una perspectiva ...
-
Cómo elegir entre los 3 temporizadores de .NET - PeriodicTimer/Timer/DispatcherTimer
Diferencias entre PeriodicTimer, System.Threading.Timer y DispatcherTimer, y cómo elegirlos para el procesamiento async, los callbacks de ThreadPool y las ac...
-
Por qué usar .NET Generic Host y BackgroundService en una aplicación de escritorio
Resumimos cómo usar Generic Host y BackgroundService en herramientas y apps residentes de Windows para organizar el inicio, el procesamiento periódico, el ci...
-
Guía práctica de FileSystemWatcher - Cómo evitar pérdidas de eventos y duplicados
Analizamos el uso de FileSystemWatcher: pérdida de eventos, notificaciones duplicadas, trampas de finalización, reescaneo, claim atómico e idempotency.
-
Tabla práctica de decisión de C# async/await - Task.Run y ConfigureAwait
Organizamos las mejores prácticas de C# async/await con una tabla de decisión para espera de E/S, cálculo de CPU, Task.Run, ConfigureAwait(false) y fire-and-...
-
Guía práctica para lograr el máximo de soft real-time posible en un Windows convencional
Cómo estabilizar procesos periódicos y de baja latencia en Windows convencional: precisión del temporizador, prioridad, energía y monitoreo.
-
Conocimientos básicos del control de exclusión en la integración de archivos — Mejores prácticas de bloqueo de archivos y claim atómico
Organizamos el control de exclusión en la integración de archivos: bloqueo de archivos, claim atómico, temp -> rename e idempotency, para diseñar una integra...
-
Introducción a HCP Chart y MakingHCPChartSkill
Explicamos qué es un HCP Chart y resumimos, con MakingHCPChartSkill, el flujo para convertir HCP-DSL en SVG determinista, su lectura y su uso.