Normas para la entrega de tareas
Las tareas serán entregadas vía git usando el repositorio que facilita los servidores del departamento de electronica (vea como crear un repositorio y configurarlo). Para saber los criterios de evaluación, lea la página Criterios de Evaluación.
Si el enunciado de la tarea no indica qué entregar, entonces los archivos que deben venir en tu entrega incluyen: readme.txt, una documentación simple, makefile, y archivos fuente.
- readme.txt Este archivo explica
los archivos de que se compone la tarea, cómo compilarlo (si requiere
algo especial, como bibliotecas aparte por ejemplo), y cómo ejecutarlo.
De ser necesario, otras cosas pueden ser agregadas para dar completitud a
la tarea.
- Documentación Ésta debe incluir un diagrama de alto nivel
explicando los módulos e interacción entre ellos. Debes incluir la
información que estimes importante para entender tu solución.
Normalmente la documentación tiene un alto peso en la nota de la tarea. Por favor no omitir este ítem.
- Makefile Este archivo nos permitirá compilar todos los módulos de la tarea, de modo que al ejecutar el comando make en la carpeta de la tarea entregada, todos los archivos sean compilados y la tarea se encuentre lista para ser ejecutada.
- Archivos fuente (.c .cpp .java), de encabezado (.h) y otros
El código debe encontrarse agradable estéticamente (espacios bien
puestos y bien identado) Además, se hace hincapié en que en el código,
el nombre de cada variable y función sean significativos, es decir que den suficientes pistas como para
saber qué hacen. También se debe comentar para clarificar mejor su funcionamiento.
- ¡No incluir ningún archivo ejecutable! Todos los ejecutables necesarios serán compilados usando el Makefile.
Norma de atrasos: Se efectuará un descuento de 5 puntos por día (incluyendo sábados, domingos y feriados)
Procedimiento para entregar tareas
Las credenciales para ingresar al sitio les han sido entregadas
vía e-mail. Cuando entren por primera vez, deben generar una contraseña
usando un enlace proporcionado en el mismo correo. Procuren anotarla en un lugar seguro, será necesaria para crear y administrar sus repositorios!
Una vez allí, se debe crear un repositorio en los servidores de Electrónica con nombre alusivo al número de tarea y al ramo.
El repositorio debe tener como colaborador a la cuenta de del ayudante (nicolas.olivos). Los archivos de la tarea deben estar subidos en el branch principal ("master"). Al realizar la ultima publicación, agregar tag "Final" al commit y realizar push con opción de tags habilitada:
$ git commit -m "This is a Final commit"
$ git tag Final
$ git push origin master --tags
La revisión de la hora/fecha de entrega se realizará con respecto al último commit del tag "Final".
Si tienen problemas usando GIT, pueden ver una pequeña referencia en el apartado Ayuda GIT.
Importante
Los repositorios deben ser privados, ver ultima sección de Crear repositorio GIT
Criterios de evaluación de tareas
Las tareas serán evaluadas siguiendo los siguientes criterios:
- 10% Si los programas compilan sin errores ni warnings.
En caso de que compile con errores pequeños se aclarará con el o los
alumnos para encontrar alguna solución, siendo éstos responsables de
responder oportunamente. Si los errores son difíciles de corregir, la
parte de programación se evaluará con un cero.
- 60% Que el programa cumpla plenamente con la tarea solicitada.
- 30% Documentación
¿Qué poner en la documentación?
- Un diagrama de alto nivel explicando los módulos e interacción entre ellos.
- Incluir la información que usted estime importante para entender su solución.
- Además el código debe estar medianamente comentado.
- Indicar qué uso tiene cada variable importante de su solución
(simples enteros para controlar una iteración no requieren explicación,
pero un arreglo de descriptores de archivo debería estar documentado).
Un código bien comentado, identado y autoexplicativo puede
ahorrar escribir mucha documentación aparte. Se recomienda nombrar las
variables de forma inteligente para hacer el código mucho más entendible
tanto para ti como para el ayudante.
Ojo: El buen cumplimiento del procedimiento de entrega también es evaluado como parte de la documentación.
Crear y configurar un repositorio en servidores de Electrónica.
¿Por qué GIT?
La razón por la que se pide usar GIT es que permite tener un control de versiones.
Es decir, si tienes un grupo de trabajo trabajando en distintos
computadores, y quizás en muchas partes del mundo, como ocurre en
muchísimos proyectos de código abierto se necesita tener control sobre
el código de los proyectos.
- Algún desarrollador haga algún aporte, y el resto del grupo
decida si este aporte se convertirá en código definitivo para el
programa.
- Si alguien modifica una parte sensible del código, haciendo que el resto no funcione, se pueda volver atrás fácilmente.
- Se lleve un comentario aparte sobre qué modificaciones necesita cada archivo (un TODO: to-do, "por hacer")
- Algún no-desarrollador quiera obtener la última versión del
código fuente para compilarlo y usarlo en su propio computador;
colaborando en probar el programa.
Instalando GIT
En Linux:
$ apt-get install git
Las instrucciones asumen que tienes instalada una distribución
tipo Debian (como Ubuntu o Linux Mint). Dependiendo de cuál sea tu
distribución de Linux el manejador de paquetes puede variar. Por
ejemplo, en el caso de que uses Arch Linux, debes cambiar apt-get install por pacman -S
En Windows:
Descarga e instala el programa: http://git-scm.com/download/win
En Linux simplemente debes abrir la consola. En Windows
debes abrir la consola GIT que puedes encontrar en Start > All
Programs > Git > Git Bash. El resto de operaciones son idénticas
entre las versiones de GIT de ambos sistemas operativos.
Primero debes indicarle a GIT tu nombre y correo. Eso se hace con los siguientes comandos (omitir signo $):
$ git config --global user.name "FIRST_NAME LAST_NAME"
$ git config --global user.email "MY_NAME@example.com"
Creando un repositorio el servidor de electrónica.
Todo alumno del ramo posee un usuario y contraseña en los servidores GIT de electrónica.
Cada alumno debe tener en su poder, en su correo institucional, las
credenciales para entrar al sitio. Lo primero que se necesita para
manejar los repositorios es crear una contraseña de usuario, para lo
cual se proporcionó en el mismo correo un link que permite hacerlo.
Para crear un repositorio se debe primero configurar una
conexión segura con el servidor de electrónica. Para eso debe generarse
un par de llaves RSA (una llave privada y una llave pública) que
asegurará que la comunicación con el servidor será confiable. Para
curiosidades, se pueden encontrar mayores detalles sobre el cifrado RSA aquí.
$ ssh-keygen -t rsa -C "correo_institucional@[...].usm.cl"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): deje en blanco
Enter passphrase (empty for no passphrase): deje en blanco
Enter same passphrase again: deje en blanco
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Luego, en el servidor se debe debe conocer tu llave
pública que se encuentra en el archivo .pub generado en la carpeta /home/user/.ssh/id_rsa si dejaste todo en blanco.
$ cat ~/.ssh/id_rsa.pubm
[Copiar todo el resultado]
Entrar al
servidor de electrónica,
logearse e ir a "Profile Settings" (Parte superior derecha de tu dashboard), luego "Manage SSH keys" (menu parte izquierda), click en "add key", debes pegar el contenido del archivo público generado (el resultado de dicho comando cat) y apretar "Add Key". Ahora sí se puede crear el repositorio.
En el terminal, si es primera vez que usa GIT, será necesario que
proporcione información que lo pueda identificar.
git config --global user.name "Nombre de usted"
git config --global user.email "cuenta de correo electronico suyo"
Creando un repositorio
En la plataforma web de electrónica dirigirse al dashboard y elegir
la opción "Create a new project" y llenar la información que se
requiere.
Configurando el repositorio
Una vez listo el paso anterior se le presentará información para
configurar el git. Cree localmente una carpeta en donde contendrá el
proyecto, un archivo README, y en ella ejecute los siguientes comandos:
$ git init
$ git remote add origin git@git.elo.utfsm.cl:[Nombre_cuenta]/[Nombre_repositorio].git
$ git add .
$ git commit -m "Primer commit"
$ git push origin master
Ejemplo ilustrativo
Suponga usted que recién ha creado un repositorio llamado
tareaElo vacío aún, entonces usted desea subir su avance. Su terminal se
encuentra en la carpeta donde tiene los archivos a subir. Los pasos a
seguir son: inicializar git en su carpeta local, agregar todos los
archivos de interés a su repositorio git local y agregar el git remoto a
su git local para posteriormente poder subir los datos allí.
Inicializar repositorio git en su carpeta local
$ git init
Agregar todos los archivos de interés a su repositorio git local. Note que
$ git add .
$ git commit -m "commit inicial."
Agregar el git remoto a su git local
$ git add origin master
Subir los datos al repositorio correspondiente en Electrónica (al cual se le realizó el git remote add origin)
$ git push
Observación: dependiendo de su versión de git puede ser que
requiera hacer mas configuraciones a su git, pero en ese caso al
intentar hacer el push el mismo software le indicará qué debe configurar
y le explicará correctamente, usted es capaz con esa información de
tomar las decisiones que desee.
Si tienes dudas, puedes consultar una referencia ilustrada del proceso de creación de cuentas y repositorios en este archivo.
Privatizar repositorio [Obligatorio]
Usted debe privatizar su repositorio, en caso de que exista copia
todos los grupos involucrados serán culpables de la copia dado que o
permitieron o copiaron siendo que no debería darse la oportunidad. para
hacer su repositorio privado usted debe ir a dashboard elegir el
repositorio dentro del menu your projects y finalmente en el menu de la
derecha entrar a "manage access" y apretar en make private. Ahí mismo
usted debe agregar las ids de sus compañeros de grupo para que puedan
trabajar en equipo y la del ayudante (nicolas.olivos) para que pueda
calificarlos.
Operaciones comunes para usar en GIT
La secuencia que debemos seguir en GIT es el siguiente:
- Clonar o crear un repositorio localmente.
- Para Crear un repositorio localmente, debes ir al directorio principal de la tarea, y ejecutar ahí los comandos git init y git add .
cd carpeta/de/la/tarea
git init
git add .
Con init, inicializas la carpeta para que GIT pueda reconocer la información del proyecto. Con add . agregas todos los archivos que tiene la carpeta actual al repositorio. (debes usar git add cada vez que crees un nuevo archivo para indicarle a GIT que estás incluyendo un nuevo archivo al repositorio)
- Para clonar un repositorio, debes copiar un link
que se proporciona en el sitio web del proyecto. Con eso puedes
descargar todo el código fuente del proyecto. Por ejemplo, para
descargar OpenCV debes usar:
git clone https://github.com/Itseez/opencv.git
- Asociar la carpeta recién creada a tu repositorio creado en GitHub.
- Realizar los cambios necesarios a los archivos necesarios.
- Agregas archivos al repositorio usando el comando:
git add [archivo]
Puedes usar un punto (.) en lugar de [archivo] para incluir todos los archivos del directorio actual.
- Borras archivos del repositorio usando el comando:
git rm [archivo]
- Hacer un commit: guardar los últimos cambios
hechos al código en tu repositorio. Si quieres puedes agregar un
comentario detallando los cambios generales que le hiciste a los
archivos.
git commit -m [Comentario]
- Enviar los cambios al servidor. Debes detallar a qué branch los quieres enviar. En este caso, lo haremos al branch origin.
git push -u origin master
Una Cheat Sheet con las operaciones principales en GIT.
Trabajo remoto con Aragorn
Se explicará cómo conectarse a Aragorn desde un computador con
sistema operativo Windows o con sistema opertaivo Linux. Además se
explicárá como visualizar en pantalla las ejecuciones de aragorn a
través de un servidor X.
Aragorn es el nombre del servidor para los alumnos de
electrónica/telemática. Para trabajar en Aragorn, deben utilizarse
programas de conexión SSH / SFTP. El método de conexión con Aragorn
depende del sistema operativo que tengas instalado en tu computador.
El Kernel y versión instalada de Linux en Aragorn son:
Linux Aragorn 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
Windows
En caso de Windows el cliente SSH como el servidor X no vienen
instalados por defecto, por lo cual es necesario instalar software
externo. El software que se explicará para los usuarios Windows es el mobaxterm que es de muy fácil uso y además tiene una versión portable.
Primero debes descargar la versión probada desde aquí.
Puedes encontrar la ultima versión del software a través de su página web.
Debes ejecutar el ejecutable que esta dentro del .zip, al
ejecutarlo se abrirá una pantalla en la que por un lado se verá una
consola de comandos, en la cual podrás ejecutar el comando ssh con la
siguiente sintaxis:
$ ssh nombre.apellido@aragorn.elo.utfsm.cl
Mobaxterm incluye tanto el cliente ssh como el servidor X por
defecto. Puedes probar abrir un editor gráfico de texto llamado
gedit, usando el siguiente comando (una vez logeado dentro de Aragorn).
$ gedit
Con las instrucciones anteriores debería aparecer una pantalla con gedit abierto listo para usar, ejecutándose remotamente desde Aragorn y simplemente la ves a través de una "ventana": su servidor X.
Linux
La mayoría de las distribuciones de Linux incluyen un cliente SSH
preinstalado, de modo que no se hace necesario instalar software extra.
Para conectarse a Aragorn vía SSH basta simplemente ejecutar el comando
ssh en consola con la siguente estructura:
$ ssh nombre.apellido@aragorn.elo.utfsm.cl
Para activar el servidor X en la conexión SSH y así poder visualizar, por ejemplo, un editor de texto como gedit debes agregar el flag -X a la ejecución del comando ssh, como se muestra a continuación.
$ ssh -X nombre.apellido@aragorn.elo.utfsm.cl
$ gedit
Con las instrucciones anteriores debería aparecer una pantalla con el gedit abierto listo para usar pero que realmente está siendo ejecutada desde aragorn y usted la ve a través de su servidor X.
Copiar archivos desde y hacia Aragorn usando SCP
En el caso de que prefieras editar los archivos en tu propio
computador y luego transferirlos a Aragorn, esto también se puede
realizar. Para ello, se emplea el comando scp, la cual funciona como una versión SSH del comando cp.
Copiar a un servidor remoto
Se debe incluir el nombre de archivo local (desde_local.txt), el
servidor, nombre de usuario y la carpeta remota o nombre a la cual
quieres enviar el archivo. (hacia_remoto.txt)
$ scp desde_local.txt nombre.apellido@aragorn.elo.utfsm.cl:hacia_remoto.txt
Copiar desde un servidor remoto
Igualmente puedes transferir un archivo remoto hacia tu computador.
Simplemente debes poner el nombre del archivo remoto primero y luego el
nombre de la carpeta local en la cual quieres dejar tu archivo.
$ scp nombre.apellido@aragorn.elo.utfsm.cl:desde_remoto.txt hacia_local.txt
Copia recursiva (carpetas enteras)
Para copiar carpetas enteras (en ambos casos), basta con añadir la opción -r (recursiva).
$ scp -r desde_carpeta nombre.apellido@aragorn.elo.utfsm.cl:hacia_carpeta