ISIS1225 - Laboratorio1
ISIS1225 - Laboratorio1
ISIS1225 - Laboratorio1
LABORATORIO 1: CONFIGURANDO EL
AMBIENTE DE DESARROLLO
(VS CODE + GITHUB + PYTHON)
Contenido
1 Objetivo .............................................................................................................................................. 2
2 Fecha de Entrega ................................................................................................................................ 2
3 Preparación......................................................................................................................................... 2
3.1 Instalar VS Code .......................................................................................................................... 2
3.2 Personalizar el IDE ...................................................................................................................... 3
3.3 Instalar GIT .................................................................................................................................. 4
3.4 Registrarse en GitHub................................................................................................................. 5
3.5 Integrar VS Code y GitHub .......................................................................................................... 5
4 Trabajo propuesto .............................................................................................................................. 6
4.1 Crear una organización de trabajo ............................................................................................. 6
4.2 Bifurcar un proyecto en la organización .................................................................................... 8
4.3 Cambiar la visibilidad de un repositorio .................................................................................. 11
4.4 Descargar un proyecto en el computador ............................................................................... 12
4.5 Examinar el proyecto con VS Code........................................................................................... 13
4.6 Modificar README del repositorio ............................................................................................ 15
4.7 Modificar el código del repositorio .......................................................................................... 16
4.8 Utilizar Extensiones para inspeccionar código (Debugger) ..................................................... 18
5 Entrega.............................................................................................................................................. 20
5.1 Confirmar cambios finales ........................................................................................................ 20
5.2 Compartir entregables con los evaluadores ............................................................................ 20
ANEXO: Solución de la practica ................................................................................................................ 21
Cambios para el model.py ................................................................................................................... 21
Cambios para el controller.py .............................................................................................................. 21
Cambios para el view.py ...................................................................................................................... 21
1 Objetivo
Configurar un ambiente de trabajo útil para completar los laboratorios, prácticas y retos del curso de
Estructuras de Datos y Algoritmos, teniendo en cuenta los requerimientos de trabajo en equipo.
Al finalizar este laboratorio el estudiante estará en capacidad de:
1) Utilizar VS Code como Entorno de Desarrollo Integrado (IDE) para Python.
2) Entender los conceptos y aspectos generales de un ambiente de trabajo distribuido (Repositorio
GIT, IDE VS Code, Python 3.7 o superior).
3) Administrar las versiones y ramas de código en un repositorio GIT (GitHub).
4) Administrar un depósito de versiones GIT por medio de la consola y línea de comandos.
5) Comprender la organización de una aplicación siguiendo el esquema Modelo–Vista–Controlador
(MVC por sus siglas en inglés).
6) Utilizar herramientas de inspección de código (debugger) dentro de VS Code.
7) Ampliar las capacidades de VS Code al instalar y utilizar extensiones (Plug-In) o adiciones
(Extensions) dentro del ambiente.
2 Fecha de Entrega
Recuerde que durante la sesión de laboratorio todos los miembros del grupo deben completar hasta
la sección 4.6 Modificar README del repositorio
La entrega final de toda la práctica es antes del martes 15 de agosto, 11:59 p.m.
3 Preparación
3.1 Instalar VS Code
Para este curso se utilizará como entorno de IDE la herramienta Visual Studio Code (VS Code). Para
ayudarles a instalar este IDE en sus equipos, se prepararon los siguientes recursos del curso:
a. Video Uniandes para instalar y configurar VS Code titulado Como Instalar VS Code
b. Video Uniandes para instalar Python en MacOS titulado Como instalar Python 3 en MacOS
c. Video Uniandes para Instalar Python en Windows titulado Como instalar Python 3 en
Windows
Después de examinar el material complete los siguientes pasos (p):
p.1. Después de ver los videos relevantes, instale Python 3.7 o superior como lenguaje de
programación global en su sistema operativo desde la página Python.Org
p.2. Compruebe que instalo correctamente Python escribiendo los siguientes comandos por consola
CMD (Terminal en MacOS y Linux) “python --version” y “pip --version” como se ve
en la Ilustración 1.
IMPORTANTE: se recomienda desinstalar otras distribuciones de Python y otros administradores librerías
como Anaconda para evitar problemas al integrar todas las herramientas.
pg. 2
Ilustración 1. Comandos para comprobar la correcta instalación global de Python.
p.4
p.5
p.3
Otras extensiones pueden instalarse para personalizar y ampliar el uso de Python con código
interactivo (Notebooks) de Jupyter. Algunas de estas opciones son:
a. El paquete de extensión para el desarrollo código interactivo (Notebook) en Python por
Microsoft en Jupyter (este incluye 4 extensiones más).
b. Visualizador de archivos Markdown por Yiyi Wang en Markdown Preview Enhanced
c. Tema de colores personalizable por Andrey Volosovich en Monokai ST3
d. Tema de colores personalizable por Unintended Side Effects en Adventurous Syntax Black
pg. 4
p.8. Después de ver el video indicado, instale GIT 2.39 o superior como aplicación global desde la
página git-scm.com
p.9. Compruebe que instaló correctamente GIT escribiendo los siguientes comandos por consola
CMD (Terminal en MacOS y Linux) “git --version” y “git --help” como se ve en la
Ilustración 3.
1
En caso de tener un perfil, agregue su cuenta Uniandes al perfil de GitHub y selecciónela como cuenta principal
de registro.
pg. 5
p.15. Ingrese sus credenciales GitHub en el perfil de VS Code por medio del icono de usuario en la
parte inferior del menú vertical izquierdo del IDE como se muestra en Ilustración 4.
p.16. Confirme sus datos y autorice a VS Code para acceder a GitHub 2.
p.15
IMPORTANTE: Para mejorar en el uso de todas las herramientas recomendamos ver el contenido
complementario de Pills EDA en nuestra sección unificada.
4 Trabajo propuesto
4.1 Crear una organización de trabajo
GitHub permite crear organizaciones con el objetivo de agrupar repositorios de código relacionados
entre sí. Una vez creen sus usuarios de GitHub deberán crear una nueva organización para trabajar con
sus compañeros del curso.
Para este proceso solo UNO de los integrantes del grupo deberá crear esta organización. Para ello
examine el siguiente recurso audiovisual:
a. Video Uniandes para crear una organización en GitHub titulada Como crear equipos en GitHub
A continuación, complete el proceso siguiendo las siguientes instrucciones:
p.17. Cree la organización del grupo de trabajo utilizando el formato EDA-202320-SEC<<XX>>-
G<<YY>>, donde: <<XX>> es el número de la sección y <<YY>> el numero asignado del grupo
(Ej.: EDA-202320-SEC05-G03 para el tercer grupo de la sección 5 del curso).
p.18. Invite a sus otros compañeros utilizando el correo Uniandes con la opción para invitar a un
miembro (invite member) en la pestaña de personas (People) como se ve en Ilustración 5.
2
En caso de que la extensión de GitHub no funcione desde VS Code instale GitHub Desktop como alternativa.
pg. 6
p.19. Configure un nuevo grupo de desarrollo en la pestaña de equipo de trabajo (Team) con el
nombre “Equipo EDA” como se ve en la Ilustración 6.
p.20. Configure el perfil de sus compañeros como propietario (Owner) de la organización después
de que ellos acepten la invitación como se ve en Ilustración 7.
p.21. Invite a los evaluadores, esto incluye al profesor de la sección, al profesor de laboratorio y a
los dos monitores asignados.
p.18
p.18
p.19
p.19
pg. 7
p.20
p.20
Ilustración 7. Pestaña de personas (People) y configuración de roles para los miembros de una organización.
IMPORTANTE: NO borre o edite los repositorios después de su entrega oficial porque esto afecta el
proceso de calificación de los monitores.
pg. 8
p.23
p.24
p.26
Este proceso lo dirigirá a una nueva ventana para continuar con el proceso.
p.27. Seleccione la opción Importar repositorio (Import a repository) como en la Ilustración 10.
p.27
Ilustración 10. Como seleccionar la opción para importar manualmente un repositorio en GitHub.
p.28. Complete los campos indicados por GitHub como se muestra en Ilustración 11.
a. Seleccione el propietario del repositorio, que en este caso el nombre de la organización.
b. Complete el nombre del repositorio objetivo, que en este caso será “DEMO-EDA-
SampleMVC”.
c. Configure la Privacidad (Privacy) del repositorio objetivo a pública.
pg. 9
p.29. Presione el botón de Iniciar Importación (Begin Import) según la Ilustración 11 para iniciar
el proceso.
p.28, a
p.28, b
p.28, c
p.29
Antes de clonar el repositorio en su computador cambie el nombre. Para ello, diríjase a su organización
(Ej.: EDA-202310-SEC05-G03) y complete las siguientes instrucciones:
p.30. Abra el repositorio que bifurcó.
p.31. Seleccione la pestaña de Ajustes (Settings) del repositorio como lo muestra la Ilustración 12.
p.31
Ahora, cada integrante del grupo debe completar los siguientes pasos:
p.32. Cambie el nombre del repositorio según el esquema LabMVC-L<<XX>>-G<<YY>>-<<ZZ>> donde
XX es el numero de la semana de la práctica que se está haciendo, YY el número del grupo de
trabajo y ZZ es el usuario Uniandes de uno de los integrantes del grupo. Un ejemplo de esto es
LabMVC-L01-G01-j.perez123 para este primer laboratorio del grupo 1 hecho por el estudiante
Juan Perez como se ve en la Ilustración 13.
p.33. Confirme los cambios seleccionando la opción de Renombrar (Rename) de la Ilustración 13.
pg. 10
p.33
p.32
IMPORTANTE: NO necesita agregar la sección o el semestre en este nombre porque ya está identificado
en su organización.
p.34
Ilustración 14. Detalles de los campos para cambiar la visibilidad de un repositorio GitHub.
pg. 11
p.35
p.36
IMPORTANTE: Todos los repositorios de trabajo durante el semestre deben ser privados, ya que este es
un trabajo propio e intransferible de los grupos.
3
Este proceso puede completarse por diferentes medios, utilizando la terminal/consola de Windows o MacOS, y
también utilizando aplicaciones independientes como GitHub Desktop y Sourcetree
pg. 13
Ilustración 16. Estructura (Python Path) del repositorio para el primer laboratorio.
Adicionalmente, al revisar el código del modelo (model.py) observará que contiene los modelos
usados para solucionar los requerimientos; es decir, en el model.py están todos los datos que
usaremos en nuestros programas.
Finalmente, como se ve en la Ilustración 16 el proyecto también contiene un directorio denominado
Data, el cuál inicialmente se encuentra vacío.
Ahora, para ejecutar correctamente el laboratorio complete los siguientes pasos:
p.45. Acceda a la página unificada en Bloque Neón.
p.46. Diríjase al contenido del curso en laboratorios/datos de entrenamiento.
p.47. Descargue el archivo del caso de estudio (GoodReads).
p.48. Descomprima el archivo GoodReads.zip.
p.49. Copie los archivos en el directorio */Data/GoodReads como lo indica Ilustración 17.
p.50. Ejecute el proyecto presionando el icono de Play en VS Code (Ilustración 17).
p.51. Seleccione las opciones del menú para cargar libros (1) y tags (2) según la Ilustración 17.
pg. 14
p.50
p.49
p.51
Los tres archivos del proyecto deben ser: proyecto maneja tres archivos:
• Books.csv: Este archivo contiene toda la información de los libros, tales como autor, ISBN,
fecha de publicación e idioma entre otros.
• Tags.csv: Este archivo contiene todas etiquetas que se pueden poner a un libro, como por
ejemplo el tipo de obra, es decir si es de ficción, ciencia o suspenso.
• Book_tags.csv: Este archivo tiene el identificador de un libro y el identificador de un tag,
para indicar que ese libro fue etiquetado con ese tag por un usuario.
Ilustración 18. Lista de comentarios para las modificaciones del SampleMVC con TODO Tree.
Primero, Las modificaciones propuestas para el #TODO del model.py son las siguientes:
def addBookTags(catalog, booktagsfile):
"""
Esta funcion crea una lista basada en el archivo de booktags. siga
el mismo procedimiento que la funcion addBooks.
"""
# TODO: Mods lab 1, completar funcion.
pg. 16
book_tags = catalog.get("Book_tags")
book_tags = lt.newList(datastructure="SINGLE_LINKED",
filename=booktagsfile)
catalog.update({"Book_tags": book_tags})
return catalog
Segundo, las modificaciones propuestas para el #TODO del controller.py son las siguientes:
def loadBooksTags(control, filename):
# TODO: Mods lab 1, integración controlador y modelo
"""
Carga los tags de los libros del archivo y los agrega a la lista
de tags. Siga el mismo procedimiento que en la carga de libros.
"""
catalog = control.get("model")
booksfile = os.path.join(cf.data_dir, filename)
catalog = model.addBookTags(catalog, booksfile)
if model.emptyBookTags(catalog):
return None
else:
return model.bookTagSize(catalog)
Tercero, las modificaciones para el primer #TODO del view.py son:
def printMenu():
print("Opciones:")
print("1- Cargar Libros")
print("2- Cargar Tags")
# TODO: Mods lab 1, agregar opcion 3.
print("3- Cargar Libros con Tags")
print("0- Salir")
Por último, las modificaciones propuestas para el segundo #TODO del view.py son:
# TODO: Mods lab 1, agregar la opcion 3 -> ladBookTags().
elif int(inputs[0]) == 3:
print("Cargando información de libros con tags…")
book_tags = loadBooksTags(control)
print("Total de libros con tags cargados: " + str(book_tags))
Al finalizar las modificaciones la consola mostrará un resultado al ejecutar la tercera opción como lo
muestra la Ilustración 19.
pg. 17
Ilustración 19. Respuesta esperada para la opción 3.
Sin embargo, este resultado (ver Ilustración 19) no es el que aparece en la consola ya que aparece
None como total de libros con tags cargados y no 999. Por lo tanto, concluimos que existen errores en
las modificaciones con comportamientos no indeseados.
p.64. Marque como punto de inspección (Checkpoint) la línea 99 del código en el modelo como
se muestra en la Ilustración 20.
p.65. Ejecute el laboratorio desde el view.py utilizando el Debugger según Ilustración 20.
p.66. Seleccione la opción 1 del menú por consola, aquí notará que el programa se comporta como
lo haría en una ejecución normal.
p.67. Ahora ejecute la opción 2, en este caso el comportamiento cambia y se observa algo como
se ve en la Ilustración 21. Donde la herramienta de inspección muestra el estado de las
variables globales, locales y da la opción de avanzar o retroceder hasta el siguiente
Checkpoint.
p.68. Pruebe sus cambios hechos al código del Modelo para confirmar su correcto comportamiento.
p.69. Modifique el código fuente de ser necesario y confirme (Commit y Push) los cambios con el
comentario “modificaciones por debug lab 1”.
p.70. De ser necesario repita este procedimiento en los cambios del Controlador y la Vista.
Intente por usted mismo encontrar el error en las modificaciones basándose en lo observado durante
la sección 4.5 Examinar el proyecto con VS Code. Sin embargo, si lo desea diríjase al final del
documento al ANEXO: Solución de la practica para leer los detalles de una posible solución.
pg. 18
p.65
p.64
Ilustración 20. Ejemplo de cómo preparar un punto de inspección en la herramienta de pruebas de VS Code para Python.
p.67
p.67
Ilustración 21. Ejemplo e como debe funcionar el punto de inspección al ejecutarse con la herramienta de pruebas VS Code.
pg. 19
5 Entrega
5.1 Confirmar cambios finales
Confirme los cambios finales siguiendo los pasos practicados en la sección 4.6 Modificar README del
repositorio con el comentario “Entrega Final – laboratorio 1” (git commit -m “Entrega Final –
laboratorio 1”) 4
No olvide confirmar que sus cambios fueron registrados correctamente al repositorio remoto en GitHub.
Por último, cada uno de los integrantes del grupo debe diligenciar la encuesta para conformar los
grupos de trabajo en el formulario Microsoft Forms para inicio del semestre E informar al grupo EDA
de quienes son.
4
GIT y VS Code no permiten operaciones Commit/Push sin cambios en el código, puede forzar este
comportamiento modificando inconsecuentes para el software como lo son los comentarios y la documentación.
pg. 20
ANEXO: Solución de la practica
Las siguientes marcas #TODO poseen el código funcional para el laboratorio. El error está en que la
llave de diccionario “Book_tags” del en el model.py debe ser “book_tags”, todo en minúsculas
pg. 21