DAO vs. DTOLos DTO y DAO no son exclusivos de las apps web: se usan en cualquier sistema con lógica estructurada donde se quiera separar responsabilidades. Conocerlos es clave para entender cómo se organizan proyectos profesionales. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/conceptos/2025/04/16/dao-dto.html
¿En qué se parecen los frameworks de backend?Cuando entendemos los conceptos que hay detrás de un framework backend, cambiar de lenguaje o tecnología se vuelve mucho más fácil. No se trata de sintaxis, sino de patrones de arquitectura y principios de diseño que se repiten en todas partes. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/otros/2025/04/06/frameworks-backend.html
“Streams” estándarLos “streams” estándar son una herencia de Unix en los años 70, pero hoy son universales. Todos los lenguajes los usan, y el sistema operativo les asigna los números 0 (stdin), 1 (stdout) y 2 (stderr) para identificarlos. Tener un canal específico para errores nos permite separarlos de la salida “normal” del programa. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/otros/2025/04/06/streams-estandar.htmlVer más
Resolvamos un ejercicio con arreglosVeamos un ejercicio con arreglos y una posible solución que tiene un error… Aunque la resolución, en general, está bien encarada y su complejidad algorítmica con respecto al tiempo es de O(N), hay un error evidente: las condiciones de los bucles while acceden a elementos del arreglo mediante su índice sin antes validar que el índice esté en el rango correcto. La corrección a hacer es simple: usamos una “evaluación de cortocircuito” invirtiendo las partes de la condición para verificar que el índice sea válido antes de usarlo. El operador and hace que, al ser falsa la primera parte de la condición, la segunda no se evalúe (evitando así el error). 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/ejercicios/csharp/2025/04/03/ejercicio-cortocircuito.htmlVer más
¡Cuidado con la concatenación implícita!Algunos lenguajes soportan la concatenación implícita de literales string. Es algo a tener en cuenta, porque podría causar problemas difíciles de detectar a simple vista. En el ejemplo que se muestra, al existir un valor por defecto para el segundo parámetro de la función, si se omite la coma en la lista de argumentos, ambos strings se pasan al primer parámetro, concatenados como uno solo. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/python/c++/2024/05/06/concatenacion-implicita.htmlVer más
Un caso con generadores en PythonVeamos un ejemplo con yield que podría generar confusión si no estamos acostumbrados a trabajar con generadores en Python. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/python/2024/04/28/ejemplo-generadores-python.html
Desafío C#Lo importante en este desafío es aplicar una de las características de la programación orientada a objetos. ¿Sabrías decir cuál, y entonces descubrir la solución correcta? Si quisiéramos ejecutar el código del ejemplo, deberíamos instanciar el objeto desde dentro de algún método en una clase. Además, para acceder a los campos de ese objeto, deberíamos agregar "getters" y "setters" (o bien hacer que los campos tengan el modificador de acceso "public" en lugar de "private"). 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/desafios/csharp/2024/04/07/desafio-csharp-3.htmlVer más
Versionado del softwareAsignar de forma correcta y ordenada un número de versión a nuestro software es crucial para controlar actualizaciones, coordinar desarrolladores y permitir a usuarios migrar entre versiones. El método de versionado más común es el “versionado semántico”, cuya especificación puede verse en https://semver.org/lang/es/. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/conceptos/otros/2024/03/28/versionado.htmlVer más
Diseño de objetos - ejercicio básicoEl diseño orientado a objetos es un paradigma de programación que organiza el código en unidades reutilizables llamadas "objetos". Aprender a diseñar correctamente es importante en la programación orientada a objetos, pues facilita la reutilización de código y el mantenimiento. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/poo/ejercicios/2024/03/05/ejercicio-OO.html
Permisos en Linux: chmod🔒 El comando chmod en los sistemas Linux permite manejar los permisos de un archivo o un directorio mediante la terminal. Para ver los permisos de un archivo o directorio mediante la terminal se puede utilizar el comando ls -l, por ejemplo: ls -l archivo.txt. La salida de este comando mostrará información sobre el archivo, incluyendo los permisos. El primer carácter será el que indique si se trata de un archivo normal (“-“) o de un directorio (“d”). Luego siguen tres grupos de 3 caracteres: permisos del propietario, del grupo y de otros (y cada uno de ellos puede ser “r” para lectura, “w” para escritura, “x” para ejecución, “-“ para ausencia de permiso). Por ejemplo: drwxr-x--- 1 usuario grupo 1234 Feb 6 00:00 archivo.txt donde “d” indica que es un directorio, “rwx” significa que el propietario del directorio tiene permisos de lectura (r), escritura (w) y ejecución (x), “r-x” significa que los miembros del grupo del archivo tienen permisos de lectura (r) y ejecución (x), pero no de escritura (-), “—” significa que todos los demás usuarios no tienen permisos de lectura, escritura ni ejecución. 📜 Ver esta publicación en el blog: https://patriciaemiguel.com/otros/2024/02/07/chmod.htmlVer más