Lab 0 - Git
Git y Representación Numérica
Last updated
Was this helpful?
Git y Representación Numérica
Last updated
Was this helpful?
Aprender git y crear cuenta de GitHub.
Ganar más intuición para trabajar con números binarios.
Por favor lean las siguientes instrucciones cuidadosamente antes de seguir con el laboratorio. La mayor parte de los problemas que tienen los estudiantes durante este laboratorio se pueden prevenir siguiendo atentamente los pasos que se indican.
Para este curso necesitaremos que utilicen git, un sistema de control de versiones distribuido. Los sistemas de control de versiones son las mejores herramientas para compartir y almacenar código a comparación de mandar correos con archivos adjuntos, utilizar memorias flash, o incluso compartir documentos mediante DropBox o Google Docs.
Vamos a estar usando GitHub para tener repositorios privados en donde van a almacenar su código remotamente. Si la oración anterior no les dijo nada, no se preocupen, vamos a guiarlos en el proceso más adelante. Pero primero, necesitan crear una cuenta de GitHub.
¿Por qué GitHub? GitHub ahora le permite a todas las cuentas gratuitas tener repositorios privados ilimitados con algunas limitaciones que no van a ser ningún problema para nosotros.
Naveguen a la siguiente página: github.com
Si no tienen una cuenta de GitHub todavía, creen una en el siguiente link.
Creen un repositorio privado vacío, llamado lab0_git
Primero hagan click en el siguiente link
Luego llenen los campos, como se muestra en la siguiente imagen
Ahora que ya hemos creado nuestro repositorio, vamos a configurar git para que sepa quiénes son. Abran una terminal y ejecuten los siguientes comandos listados abajo, reemplazando NOMBRE con su nombre y apellido (entre comillas) y CORREO con la dirección de correo que utilizarón para registrarse en GitHub.
Primero, algunas definiciones rápidas:
Un remote es la página web host o servidor que va a almacenar su código remotamente en vez de tener únicamente el código de forma local en su propia computadora. Pueden pensar en esto de igual manera a como se almacena un archivo en DropBox o Google Drive pero con el poder que nos da git.
Un branch es una secuencia (por aparte) de diferentes cambios a su código. Pueden pensar en los branches como diferentes versiones de su código, que en algún punto fueron lo mismo. La siguiente figura muestra a que nos referimos como branches.
A lo largo de este curso, estarán trabajando en dos diferentes "computadoras" que generalmente tendran diferentes versiones de su código en algún tiempo. Estas dos son: su computadora personal y su remote de GitHub (sus repositorios privados de GitHub). Es esencial que entiendan la diferencia entre estas dos y como pueden compartir código entre ellas.
Su computadora personal es la que les servirá para hacer todo el trabajo (laboratorios y proyectos) que necesiten hacer durante el curso, nada nuevo aquí.
Su cuenta de GitHub y los remotes les servirán para muchos propósitos, pero la principal razón es para tener un backup o copia de respaldo, de tal manera que si algo malo le sucede a sus computadoras (esperamos no), puedan recuperar su código en vez de empezar de cero nuevamente. Conceptualmente, pueden pensar en los remotes de GitHub como otra computadora que únicamente almacena su código y nada más. Siempre deben subir sus cambios a GitHub haciendo push al remote (es decir actualizando los archivos en GitHub) y también pueden descargar los cambios de GitHub haciendo pull (actualizando los archivos en su computadora personal).
Creen una carpeta llamada lab0_git
en algún directorio de su preferencia.
Luego descarguen los archivos base de la siguiente manera:
Deberían de ser capaces de ver los archivos del laboratorio si los listan en la terminal:
Lo cual desplegará lo siguiente:
Ahora vamos a hacer push del código hacia el repositorio privado de GitHub que creamos anteriormente, ejecutando los siguientes comandos, para ello deben estar en la carpeta que acabamos de crear lab0_git
:
NOTA: Tienen que cambiar USUARIO por su usuario de GitHub.
En caso hayan olvidado cambiar USUARIO
por su usuario de GitHub, pueden utilizar el siguiente comando para arreglarlo:
Ahora que tenemos nuestro laboratorio almacenado en GitHub (pueden verificar esto navegando hacia https://github.com/USUARIO/lab00_git.git\), podemos agregar un archivo y hacer algunos commits. Vamos a crear un archivo llamado hello.sh
en la carpeta del laboratorio ejecutando el siguiente commando en la terminal:
Luego pueden correr el archivo en la terminal con bash hello.sh
. En la terminal se imprimirá Hola Mundo
. Ahora utilicemos git para ver los archivos que todavía no han sido rastreados utilizando status
:
Lo que producirá lo siguiente:
Esto es porque hemos creado un archivo nuevo llamado hello.sh
y no lo hemos agregado. Podemos agregarlo y hacer commit:
El control de versiones git esta construido alrededor de commits, o checkpoints en el desarrollo de diferentes versiones/etapas de su código. Para explicar los pasos de arriba un poco más:
git add [archivo] le dirá a git que han hecho cambios a ese archivo y que quieren que esos cambios se guarden en el siguiente commit (staging).
git commit -m "mensaje" oficialmente guarda esos cambios que acaban de agregar, y crea un snapshot del contenido actual de todos los archivos en el repositorio. Ahora siempre van a tener la opción de revertir su código hacia este commit.
git push -u origin master manda todo el contenido del repositorio que está en el branch "master" al repositorio remoto "origin" (recuerden que agregamos el repositorio de GitHub "lab0_git" como remote y lo llamamos "origin").
Cuando estamos trabajando con git, si alguna vez no están seguros de algo, pero quieren asegurarse de que tienen una copia guardada del contenido actual de su código, solo tienen que correr git add .
y después git commit
en la terminal.
Un último comando de git que pueden encontrar bastante util es git log
. Pueden ejectuar este comando en la terminal y van a ver un historial o log de todos los commits que se han hecho (en el branch actual), incluyendo el tiempo y quien hizo el commit.
Vamos a utilizar números de 4 bits. Si apilamos cinco números de 4 bits uno encima de otro en binario, podemos crear patrones e imágenes. Para ayudarlos a visualizar esto, pueden pensar que un bit en cero es blanco y un bit en uno es negro. Por ejemplo miren el siguiente patrón de bits.
¿Cuáles son los cinco números en decimal (separados por una coma) que producen el patrón de arriba?
¿Cuáles son los cinco dígitos en hexadecimal (separados por una coma) que producen el patrón de arriba?
¿Qué letra se dibuja con los siguientes números en decimal: 1,1,9,9,6?
¿Qué letra se dibuja con el siguiente numero en hexadecimal: 0xF8F88?
¿Cuál es el numero en hexadecimal para dibujar la letra b (minúscula)?
¿Utilizarías cinco dígitos hexadecimales para dibujar la letra N? Contesten Si o No
En los archivos del laboratorio van a encontrar un archivo de texto ex3.txt
con lo siguiente:
En este archivo tienen que colocar todas sus respuestas de las preguntas de arriba siguiendo ese formato por ejemplo un archivo valido sería:
Si ya contestaron todo y creen que está correcto pueden agregar los cambios, hacer commit y subirlo al repositorio remoto ejecutando los siguientes comandos en la terminal:
Imaginen que tienen mil billetes de $1 y 10 sobres. Para este ejercicio tienen que encontrar una manera de poner una cantidad determinada de billetes de $1 en cada uno de los sobres de tal forma que, sin importar la cantidad de dinero que se les pida (entre $1 y $1000), simplemente entreguen una combinación de los sobres y que siempre estén seguros de que están dando la cantidad correcta. En los archivos del laboratorio hay un archivo de texto llamado ex4.txt
en donde encontrarán lo siguiente:
Cada una de las letras representa un sobre, tienen que reemplazar cada letra por la cantidad de billetes de $1 que crean correcta, esa cantidad tiene que ser >= 0
(en decimal) y recuerda que la suma de la cantidad de cada uno de los sobres tiene que ser igual a 1000
.
Si ya contestaron todo y creen que está correcto pueden agregar los cambios, hacer commit y subirlo al repositorio remoto ejecutando los siguientes comandos en la terminal:
Todos los laboratorios y proyectos de este curso tendrán autograders y podrán saber su nota al terminarlo. Este proceso que van a ver a continuación lo tienen que seguir siempre para poder obtener su nota. El staff trabajo bastante para que su experiencia en este curso sea de las mejores, por eso ahora pueden visitar la siguiente página autograders.org en donde al iniciar sesión, con su cuenta de galileo, puedan ver el reporte de notas de los laboratorios y proyectos.
Luego de que inicien sesión con su cuente @galileo.edu van a poder obtener su token de identificación único desde la página de inicio pulsando sobre el card que dice Token.
Ya que tienen el token pueden subir su laboratorio para que sea calificado y obtener su nota. Lo único que tienen que hacer para esto es ejecutar el siguiente comando en la terminal (siempre estando en la carpeta del laboratorio):
NOTA: Tienen que reemplazar TOKEN por el token que generaron.
Si ustedes navegan hacia la página de laboratorios, allí van a aparecer el estado de sus laboratorios, si ya están calificados o están pendientes de calificar por el autograder, la fecha y hora en que lo subieron al hacer ./submit
y el output de la consola y esto en tiempo real. De esta manera pueden obtener el feedback más rapidamente en caso en el GES todavía no estén subidas las notas.
Si todos los sale bien deberían de obtener el siguiente resultado en el dashboard:;