Blog
Artículos prácticos de KomuraSoft LLC sobre desarrollo web, SEO, Google Ads, desarrollo para Windows, aprovechamiento de sistemas existentes e investigación de fallos.
Búsqueda con IA en todo el sitio
Las consultas de búsqueda se envían a Cloudflare AI Search para generar los resultados. No introduzcas datos personales.
-
Fecha, hora y zona horaria en aplicaciones empresariales — de las trampas de DateTime al principio de UTC y el diseño de pruebas
Un traslado de servidor desplaza la hora 9 horas: exploramos el origen en el Kind de DateTime, DateTimeOffset, el principio de UTC, TimeZoneInfo, el horario ...
-
Pruebas de UI automatizadas para aplicaciones de escritorio de Windows ── el funcionamiento de UI Automation y pruebas resistentes a roturas con FlaUI
Organizamos las pruebas de UI automatizadas para apps WinForms/WPF desde el funcionamiento de Windows UI Automation: implementación mínima con FlaUI, diseño ...
-
Compatibilidad de WPF con alto DPI ── causas y soluciones del desenfoque pese a que «debería ser resistente al DPI»
WPF es System DPI Aware, pero al moverse a un monitor con otro DPI toda la ventana se difumina y los mapas de bits se ven borrosos. Repasamos el diagnóstico,...
-
El problema de EXCEL.EXE que permanece al operar Excel desde C# — Patrones de liberación de referencias COM y el criterio de sustitución
Explica por qué EXCEL.EXE permanece al operar Excel vía COM desde C#, mediante el conteo de referencias COM y el RCW. Cubre la regla de los dos puntos, los p...
-
Compatibilidad de WinForms con pantallas de alto DPI ── Por qué se ve borroso o se rompe el diseño en monitores 4K, y cómo abordarlo de forma realista
Explica por qué las aplicaciones WinForms se ven borrosas o rompen su diseño en monitores 4K, a partir de la virtualización de DPI y los modos de reconocimie...
-
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 usar SQLite en aplicaciones empresariales con C# — Modo WAL, control de exclusión, prevención de corrupción y cuándo usar EF Core
Reunimos el conocimiento práctico para integrar SQLite en aplicaciones empresariales con Microsoft.Data.Sqlite: modo WAL, SQLITE_BUSY, mapeo de tipos, copias...
-
Cómo crear y operar un servicio de Windows — de la diferencia con el Programador de tareas a la creación de servicios con BackgroundService
¿Un proceso en segundo plano debe ser servicio de Windows o basta con el Programador de tareas? Tabla de decisión, creación con .NET Worker Service, cuenta d...
-
¿Es WebView2 el siguiente paso tras el modo IE? — La restricción de que ActiveX no funciona y un diseño de migración realista
Explicamos la estructura básica de WebView2, la estrategia de distribución Evergreen y Fixed Version, la trampa de la carpeta de datos de usuario, la comunic...
-
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...
-
Las tareas del Programador de tareas no se ejecutan o terminan con 0x1 — cómo aislar la causa y diseñar una operación segura
Repasamos la cuenta de ejecución, el tipo de inicio de sesión, las causas típicas del 0x1, la activación del historial, el control de ejecuciones múltiples y...
-
Automatizar procesos empresariales con Power Automate — Cuándo usar el flujo en la nube o el de escritorio, y cómo diseñar el manejo de errores
Diferencias entre el flujo en la nube y el de escritorio de Power Automate, cuándo usar PowerShell o VBA, licencias, manejo de errores, estabilización de la ...
-
Programación genérica en Ada ── escribir contratos con tipos y lograr la reutilización sin costo en tiempo de ejecución
Explica de forma sistemática los genéricos de Ada: subprogramas, paquetes, parámetros formales y categorías de tipo, con pautas de diseño para la reutilizaci...
-
Programación de sistemas de tiempo real con Ada — Control práctico de prioridad, periodo y tiempo de ejecución
Aprenda el Annex D de Ada (sistemas de tiempo real) con 8 ejemplos prácticos de código: prioridad de tareas, Ceiling_Locking, ejecución periódica con delay u...
-
Fable ha dejado de estar disponible, pero no toca rendirse ── Aguantar con OpenRouter Fusion+LLM chinos+una capa de revisión
Ni de lejos se acerca a Fable. Pero combinando cinco LLM chinos con OpenRouter Fusion y añadiendo encima una revisión de gpt-5.5-pro o una revisión de PR de ...
-
Concurrencia segura en Ada — Guía práctica de tareas y objetos protegidos
Introducción a las tareas y objetos protegidos de Ada: rendezvous, aceptación selectiva, exclusión mutua, llamadas con tiempo de espera y prioridades de tareas.
-
Introducción a la verificación formal con SPARK ── De los contratos de Ada a la demostración matemática
Un artículo introductorio y práctico sobre la verificación formal con SPARK, el subconjunto de Ada. Repasa cómo pasar de los contratos (Pre/Post) a la demost...
-
El atractivo del lenguaje Ada ── Cuando los tipos expresan el diseño, el lenguaje que sostiene software que funciona durante décadas
Presentamos el atractivo del lenguaje Ada: tipado fuerte, restricciones de rango, paquetes que separan especificación e implementación, diseño por contrato, ...
-
¿Qué es MFC en Windows? — Conocimientos básicos para mantener activos existentes
Resumen de MFC: relación con Win32, estructura de la app, mapa de mensajes, Document/View, DDX/DDV y puntos de mantenimiento.
-
Qué hacer antes de desechar un PC con Windows ── Lista de comprobación práctica de eliminación de datos, desvinculación de cuentas y copias de seguridad
Qué hacer antes de desechar, ceder, vender o devolver en leasing un PC con Windows: copias de seguridad, eliminación de datos, BitLocker, cuentas de Microsof...
-
¿Qué es un PDB (Program Database)? — Cómo entender la información de depuración, los símbolos y Source Link
Qué es un PDB: qué contiene, qué no, y su relación con Debug/Release, Portable PDB, Source Link, servidores de símbolos y el análisis de volcados.
-
¿Qué es Roslyn? ── Leer, corregir y generar código C# desde la perspectiva del compilador
Resumen de Roslyn (.NET Compiler Platform): Syntax Tree, SemanticModel, Workspace, Analyzer, Source Generator, y sus usos y precauciones en la práctica.
-
Externalización y desarrollo por encargo de una app Windows: qué aclarar antes de solicitarlo
Antes de encargar la externalización o el desarrollo por encargo de una app Windows, estos son los puntos a aclarar: revisión de software existente, integrac...
-
Tipos de datos algebraicos en .NET Framework / .NET — Diseño que representa estados y resultados mediante tipos
Cómo usar los tipos de datos algebraicos, en especial los tipos suma y las uniones discriminadas, en .NET Framework y .NET: F#, jerarquías de clases en C#, r...
-
Cómo manejar correctamente los tokens de suplantación de Windows — préstamo de privilegios por hilo y una forma segura de revertirlos
Guía práctica sobre los tokens de suplantación de Windows: tokens de acceso, primarios y de hilo, niveles de suplantación, RevertToSelf y RunImpersonated de ...
-
El malentendido de que TCP permite recibir por cada unidad enviada con Send ── diseño de recepción para tratarlo como flujo de bytes
En TCP, suponer que se recibe por cada unidad enviada con Send o Write provoca fragmentación, uniones, texto corrupto y protocolos rotos. Este artículo trata...
-
Cómo distinguir la espera de GC de una fuga de memoria en .NET — Procedimiento práctico para observar, comparar y demostrar el crecimiento de memoria
Cómo distinguir, en aplicaciones .NET, si la memoria crece por espera de GC o por una fuga real, usando dotnet-counters, dotnet-gcdump y dotnet-dump.
-
Cómo ejecutar PowerShell desde C# (CSharp) y recibir los resultados como objetos
Explica, con enfoque práctico, cómo iniciar PowerShell desde C# y recibir los resultados como PSObject en vez de cadenas: PowerShell SDK, AddCommand, AddPara...
-
Mantenimiento de pruebas de PowerShell con Pester — un patrón práctico para que los scripts operativos sean más resistentes a la rotura
Organiza el procedimiento práctico para probar scripts de PowerShell con Pester v5, cubriendo fechas, archivos, eliminaciones, mocks y CI.
-
Por qué Windows llegó a ser como es hoy: la evolución de las versiones de Windows vista por un desarrollador
Repasamos los cambios de Windows 95 a Windows 11 no como un cronograma visual, sino desde la perspectiva de un desarrollador: compatibilidad, estabilidad, pe...