General
- Sistemas operativos avanzados
Semana 1: Introducción
Semana 2: Almacenamiento y envío de datos
Semana 3: Concurrencia
Semana 4: Archivos mapeados en memoria
Semana 5: Patrones de diseño concurrentes
Semana 6: Arquitectura del GUI
Semana 7: Scrum
Semana 8: Comunicaciones en red
Semana 9: Desarrollo de demonios y servicios
Semana 3: Concurrencia
Semana 8: Comunicaciones en red
Semana 9: Desarrollo de demonios y servicios
Semana 1
Semana 3
Semana 5
Semana7: Proyecto final
Grupo de Google+ para compartir y discutir noticias relacionadas con los sistemas operativos.
Material formativo para las prácticas elaborado como artículos de un blog técnico.
Git y Github
Completo tutorial interactivo sobre Git que incluye cómo usar ramas y hacer branching en Git.
Qt
Página del proyecto Qt del que se puede descargar el entorno de desarrollo que usaremos en prácticas. De entre las diversas variantes nosotros usaremos la versión Open Source.
Guías de estilo de C++
La mayor parte de las veces, un programa es mantenido por mas de una persona, donde cada programador tiene una forma de entender, leer y escribir el código. Como mantener código escrito por cualquiera del equipo puede llegar a ser una pesadilla, se hace necesario establecer unas normas para que las sigan todos los desarrolladores, de modo que todo el código presente cierta consistencia, independientemente del autor de cada parte del mismo. Estas normas se recopilan en las guías de estilo que, por suerte, muchas organizaciones y proyectos hacen públicas para que puedan ser utilizadas por otros equipos de desarrolladores. Escoge una de las siguientes o crea la tuya propia. Lo importante es que el equipo intente usar un estilo consistente en todo el proyecto.
Desarrollar en una máquina virtual usando Vagrant
Si por cualquier motivo decides utilizar Linux con el IDE de Qt en una máquina virtual, te recomendamos que aproveches para tomar contacto con herramientas que automatizan la creación de máquinas virtuales para desarrollo. Cuando llegas a un nuevo proyecto lo primero es dedicar una importante cantidad de tiempo y esfuerzo a tener configurado tu sistema de forma similar a como lo tienen el resto de los miembros del equipo. De hecho es muy común perder la primera semana de trabajo sólo en configurar tu entorno de desarrollo de forma adecuada. Ten en cuenta que para que puedas integrarte en un equipo por lo general tendrás que usar la misma versión de compilador, las mismas librerías en las mismas versiones, tener configurados los servicios que utilices de forma similar e incluso puede que tengas que usar la misma versión del IDE. Es común que las versiones usadas en los proyectos no sean las últimas y puede que no estén disponibles directamente para la versión del sistema operativo que utilizas. Por eso es interesante manejar herramientas como Vagrant, que mediante un archivo de configuración nos permiten describir las características, configuraciones y software a instalar en una máquina virtual para desarrollar en ella. Así todos los desarrolladores del equipo pueden tener en unos pocos minutos una máquina virtual preparada y exactamente igual a la del resto de los desarrolladores. Y si en algún momento la máquina virtual diera problemas, se elimina y se crea una nueva con la misma configuración inicial.
Proyecto de Vagrant preconfigurado para crear una máquina virtual para desarrollar en Qt. Para usarlo conviene leer el README.md.
Herramientas de gestión de proyectos
Tanto el backlog como los sprint se pueden gestionar en páginas del wiki de GitHub usando tablas. Markdown soporta una notación especial para crearlas. Hay disponible un ejemplo aquí.
Con la ayuda de los issues se pueden gestionar los spring. Simplemente se crea un milestone para el spring y se le asignan las tareas que se van a desarrollar en dicho spring.
Trello es una herramienta para crear listas de cosas. La configuración inicial de cualquier tablero de Trello es de estilo Kanban, con las típicas listas TODO, Doing y Done. Esto puede servir para gestionar el desarrollo de los spring, colocando simplemente en la lista TODO las tareas del siguiente spring y usando Doing y Done para indicar su evolución.
Sin embargo mejorando la organización de las lista se puede adaptar mejor a Scrum.
También existe una extensión para el navegador que añade funcionalidades a Trello para usarlo con Scrum.
Taiga es un sencillo gestor de proyecto que soporta tanto Kanban como Scrum y que se integra con GitHub.