Saltar a contenido

Taller UD02_01: Classroom 50

Requisitos previos

Necesitamos:

Aceptar el Assignement (tarea para la UD02)

Aceptamos el Assignement (la tarea/ejercicio) a partir del link del profesor, en este caso: https://classroom50.org/IES-Eduardo-Primo-Marques/1dam-programacio-java/assignments/ud02

La página nos muestra el nombre de la tarea, la fecha de entrega si la tiene, y con qué cuenta estamos identificados. Pulsamos el botón Accept assignment.

Al aceptar, Classroom 50 crea automáticamente nuestro repositorio privado en GitHub. Cuando termine, pulsamos Open repository para ir a nuestro repositorio en GitHub (ese es el que necesitamos para el siguiente paso).

Preparar nuestra autenticación a GitHub mediante clave privada/pública (necesaria para usar ssh)

En agosto 2021 GitHub eliminó la autenticación por contraseña para operaciones Git en la línea de comandos. Desde el 13 de agosto de 2021, es OBLIGATORIO usar:

  • Tokens de acceso personal (Personal Access Tokens - PAT) para HTTPS
  • Claves SSH para conexiones SSH
  • GitHub CLI con su propio sistema de autenticación

Recomendamos usar siempre SSH y no HTTPS. Con SSH, una vez configurada la clave, git push funciona sin que GitHub te pida usuario, contraseña ni tokens cada vez — es un paso único por ordenador y evita tener que lidiar con tokens que caducan.

Paso 1: Generar una nueva clave SSH

  1. Abre la consola o PowerShell

  2. Genera la clave SSH:

    1
    ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
    
    Reemplaza "tu_email@ejemplo.com" con tu email de GitHub

    Para sistemas más antiguos, usa: ssh-keygen -t rsa -b 4096 -C "tu_email@ejemplo.com"

  3. Sigue las instrucciones:

    1
    Enter file in which to save the key (C:\Users\tunombre/.ssh/id_ed25519):
    

​ Presiona Enter para aceptar la ubicación por defecto

  1. Establece una contraseña segura (opcional pero recomendado):

    1
    2
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    
  2. Introduce una contraseña segura y confírmala.

Paso 2: Localizar y copiar la clave pública

  1. Navega al directorio .ssh: Deberías ver id_ed25519 (clave privada) y id_ed25519.pub (clave pública)

  2. Copia la clave pública id_ed25519.pub:

Abre el archivo en el Bloc de notas y copia el contenido del fichero

Paso 3: Iniciar el agente y agregar la clave privada (opcional)

  1. Abre PowerShell (esta vez necesitaras hacerlo como Administrador)

  2. Verifica si el servicio SSH está instalado:

1
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
  1. Si falta algún componente, instálalo:
1
2
3
4
#Instalar cliente SSH
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
#Instalar servidor SSH
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  1. Inicia el agente SSH:
1
2
3
4
5
# Iniciar servicio
Start-Service ssh-agent

# Configurar para inicio automático
Set-Service -Name ssh-agent -StartupType Automatic
  1. Agrega tu clave SSH:
1
ssh-add $env:USERPROFILE\.ssh\id_ed25519

Paso 4: Configurar la clave SSH en GitHub

  1. Inicia sesión en tu cuenta de GitHub - Ve a github.com y accede a tu cuenta
  2. Accede a la configuración de SSH: - Haz clic en tu foto de perfil (esquina superior derecha) - Selecciona Settings - En el menú lateral, haz clic en SSH and GPG keys
  3. Agrega una nueva clave SSH: - Haz clic en el botón New SSH key o Add SSH key
  4. Completa los campos: - Title: Un nombre descriptivo (ej: "Mi PC Windows") - Key type: Dejar como "Authentication Key" - Key: Pega la clave pública que copiaste anteriormente
  5. Guarda la clave: - Haz clic en Add SSH key - Confirma tu contraseña de GitHub si es necesario

Paso 5: Verificar la conexión SSH

  1. Prueba la conexión en la terminal o PowerShell:

    Si ejecutas este comando:

    1
    ssh -T git@github.com
    

    Deberías ver algo parecido a esto (después de contestar yes a la pregunta, fíjate que aparece tu nombre de GitHub, en mi caso martinezpenya):

    1
    2
    3
    4
    5
    6
    The authenticity of host 'github.com (140.82.121.3)' can't be established.
    ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
    This key is not known by any other names.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?yes
    Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
    Hi martinezpenya! You've successfully authenticated, but GitHub does not provide shell access.
    

Crear el proyecto en IntelliJ

Ahora, en la página de nuestro repositorio en GitHub, pulsamos el botón verde Code, elegimos la pestaña SSH (no HTTPS) y copiamos esa URL:

repositorio

Abriremos IntelliJ y crearemos un nuevo proyecto (New Project from Version Control, o Project/Clone Repository) a partir de la url SSH que hemos copiado:

Crear nuevo proyecto en IntelliJ

  1. Pegamos la URL del paso anterior
  2. Elegimos la ubicación de nuestro PC donde guardaremos el proyecto
  3. Pulsamos el botón clonar

A continuación nos pedirá hacer Login con nuestra cuenta de GitHub:

Login to github

Y en nuestro navegador debemos Autorizar la vinculación de GitHub en el IDE de JetBrains:

JetBrains and GitHub

Y cuando todo esté correcto aparecerá:

JetBrains and GitHub 2

Y ahora en nuestro IDE IntelliJ tenemos:

JetBrainsIDEIntelliJ

Ahora en la carpeta src debemos buscar el enunciado del ejercicio, en este caso src/main/java/es/martinezpenya/UD02/_01_Temperatura.java

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package es.martinezpenya.UD02;

import java.util.Scanner;

/**
 *
 * @author David Martínez (https://wwww.martinezpenya.es | https://martinezpenya.es/1DAMProgramacion/)
 */

/*
ENUNCIADO (Puntos: 2)
    (Temperatura) Crear una clase llamada Temperatura con dos métodos:

   - `celsiusToFarenheit`. Convierte grados *Celsius* a *Farenheit*.
        $$
            F=(1,8*C)+32
        $$

   - `farenheitToCelsius`. Convierte grados *Farenheit* a *Celsius*.
        $$
            C=\frac{F-32}{1,8}
        $$

*/

public class _01_Temperatura {
/* TODO: Tu solucion aqui */
}

Debemos leer el enunciado y escribir nuestro código donde pone:

1
2
3
...
/* TODO: Tu solucion aqui */
...

Una vez comprobamos que el código funciona correctamente, vamos a comprobar si pasará los test impuestos por el profesor.

Importante

En las siguientes capturas se asume que hemos resuelto correctamente el primer ejercicio, por tanto pasamos 2 de los 69 tests que contiene la UD02.

Comprobar los tests (Maven)

Debemos realizar dos acciones:

  1. Primero compilar el proyecto completo con Maven:

maven compile

Una vez comprobado que aparece BUIL SUCCESS (seguimos).

  1. Lanzar la tarea test y comprobar que sea correcta:

maven test

O mejor todavia, podemos ejecutar todos los test con información más visual:

  1. Buscamos la carpeta test en el proyecto
  2. Pulsamos el botón derecho del ratón sobre la carpeta java
  3. Elegimos la opción "Run 'All Tests'"

maven test v2

Y deberíamos ver un apartado similar en la parte inferior izquierda de nuestro IDE:

maven test v2 2º paso

Debes tener en cuenta que:

  1. Los tests no se ordenan alfabéticamente.
  2. Si aparece un circulo amarillo con una X dentro, el test no pasa (aunque alguno de los tests internos funcionen)
  3. Si el tick aparece en verde es que el test ha pasado.
  4. Solo se conceden puntos en Classroom 50 si todos los test de la clase funcionan. En este caso solo la clase _01_Temperatura nos otorgará puntos

Subir nuestra solución a Classroom 50

Una vez comprobado que pasamos los tests lo que queda es subir nuestra solución para que sea evaluada y valorada por el docente (Podemos repetir el proceso tantas veces como queramos, así que lo podemos ir haciendo segun vayamos realizando los ejercicios). No hay un botón de "entrega" aparte: cada push a main dispara la corrección automáticamente.

commit and push to github classroom

  1. Pasamos al apartado de control de versiones
  2. Elegimos los archivos que hemos cambiado y que queremos subir al repositorio para ser evaluados
  3. Indicamos el mensaje del commit (recomiendo que los puedas identificar de alguna manera, indicando lo que has cambiado, un número de versión, etc.)
  4. Finalmente pulsamos el botón Commit adn Push

Error común

Si aparece este error:

commit and push to github classroom error

Podemos elegir la opción Commit anyway and push si hemos pasado alguno de los test correctamente, o bien Review code analysis para ver porque IntelliJ ha detectado algun problema.

Por último aparece esta pantalla, y pulsamos directamente el botón Push:

commit and push to github classroom final step

También podemos ver que test hemos pasado satisfactoriamente en nuestro repositorio de Github:

commit and push to github classroom final step

Ver tu nota y el desglose

Unos segundos/minutos después de cada push se ejecuta la corrección con GitHub Actions. Cada entrega genera una Release en tu repositorio (pestaña Releases), con la puntuación total y el resultado de cada test:

Release con el desglose de la nota

Cada fila es una clase de ejercicio; solo se dan los puntos de una fila si todos los tests de esa clase pasan — no hay puntos parciales dentro de un mismo ejercicio.

Al aceptar la tarea también se abre automáticamente un Pull Request llamado Feedback, que dura todo el curso (no lo cierres ni lo fusiones). Es donde tu profesor puede dejarte comentarios sobre tu código:

Pull Request de Feedback

OJO: No está permitido modificar archivos del proyecto que no estén en la carpeta src/java

Aunque aparentemente todo te funcionará el docente será notificado e invalidará los resultados de los test:

modified

Tarea

Debes enviar tus soluciones a Classroom 50 y superar al menos la mitad de los tests, cuantos más tests superados, mejor nota tendrás en la tarea.