<div class="page">
<div class="cover text-center">
<img class="mx-auto" src=/itb/images/logo_mislata.png alt="logo">
# Preparació de l'entorn
<div class="text-end fit-content ms-auto my-3 mt-auto pt-3">
<p><strong>Autor:</strong> Joan Puigcerver Ibáñez</p>
<p><strong>Correu electrònic:</strong> j.puigcerveribanez@edu.gva.es</p>
<p><strong>Curs:</strong> 2024/2025</p>
</div>
<div>
<p class="fw-bold mb-0">Llicència: BY-NC-SA</p>
<p class="d-none d-md-block">(Reconeixement - No Comercial - Compartir Igual)</p>
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.ca" target="_blank">
<img class="mx-auto" src="/itb/images/license.png" alt="Licence"/>
</a>
</div><!--license-->
</div><!--cover-->
</div><!--page-->
{:toc}
# Objectius
Configurar l'entorn de desenvolupament en ordinadors amb sistema operatiu Windows o distribucions
de Linux basades en Debian, com Ubuntu o Linux Mint.
En aquest manual s'instal·larà i es configuraran les següent eines:
- [Git](https://git-scm.com/): Enina de control de versions.
- [GitHub](https://github.com/): Emmagatzenament en línia de repositoris Git.
- [IntelliJ IDEA](https://www.jetbrains.com/idea/): Entorn de desenvolupament integrat.
- [WSL](https://learn.microsoft.com/en-us/windows/wsl/install): Susbsistema de Linux per a Windows
## Git
Abans que res, cal instal·lar [Git](https://git-scm.com/).
Cal descarregar l'instalador des de la web: https://git-scm.com/downloads
En Ubuntu es pot instal·lar mitjançant les comandes:
```bash
$ sudo apt-get update
$ sudo apt-get install git
```
## GitHub
- Si no en tens cap, crea't un compte a [GitHub](https://github.com/).
- Proporciona-li el teu usuari al docent del mòdul mitjançant la tasca corresponent en
el curs del mòdul.
- Espera a ser convidat a l'organització [fpmislata-dam2s-psp](https://github.com/fpmislata-dam2s-psp).
- Crea un repositori dins de l'organització:
- Propietari: __fpmislata-dam2s-psp__
- Nom del repositori: __CognomNom-PSP__
- Descripció: Respositori de les solucions del mòdul PSP en CIPFP Mislata del estudiant Nom Cognom
- Visibilitat: __Privat__
- __NO__ afegir __README__ ni __LICENSE__.

Si s'ha creat correctament, haurieu de veure una pàgina com aquesta:

```info
Proporciona-li l'adreça HTTPS del teu repositori al docent del mòdul mitjançant la tasca corresponent en
el curs del mòdul.
```
## WSL
En aquesta assignatura treballarem els processos des del punt de vista de Linux.
El __Windows Subsystem for Linux (WSL)__ és un subsistema que possiblita la integració
d'una distribució de Linux en Windows sense necessitat d'una màquina virtual.
Per instal·lar-lo cal seguir les instruccions en la documentació: https://learn.microsoft.com/en-us/windows/wsl/install
Bàsicament consisteix en executar la comanda des de Powershell amb permisos d'administrador (botó dret, __Run as administrator__):
```bash
wsl --install
```
Una vegada instal·lat demana reiniciar l'ordinador. Fes-ho i executar la comanda següent comanda.
Aquesta operació iniciarà la instal·lació de la distribució Ubuntu.
```bash
wsl --install -d Ubuntu
```
També es recomana la instal·lació de la Windows Terminal des de la Microsoft Store:
https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701
## IntelliJ IDEA
Descarrega i instal·la [IntelliJ IDEA](https://www.jetbrains.com/idea/) mitjançant
l'instal·lador disponible a https://www.jetbrains.com/idea/download/. Utilitzarem la
versió __Community__ de l'IDE.
- Inicia IntelliJ.
- Crea un nou projecte.
- Nom del projecte: __CognomNom-PSP__ (el mateix que el repostiri de GitHub)
- Seleccionar __JDK__: Oracle OpenJDK 19.
- Si no en tens cap instal·lat, donar-li a l'opció __Download JDK...__
- Utilitzar el build system __Maven__.
- No utilitzar cap plantilla.

Una vegada creat, tindreu un projecte buit creat.

- Comprova que el programa _Main.java_ que ve per defecte s'executa.
- Una vegada comprovat, esborra el paquet __org.example__ que s'ha creat per defecte.
- Crea el fitxer <strong>README.md</strong> a l'arrel del projecte amb el contingut:
```md
# CognomNom-PSP
Respositori de les solucions del mòdul PSP en CIPFP Mislata del estudiant Nom Cognom
```
- Crea el package __ud1.examples__ dins del directori __src/main/java__.
- Còpia l'example [RunProcess](01_programacio_processos.html#runprocess) en el paquet __ud1.examples__
i executa'l. Comprova que funciona.

## Integració IntelliJ + GitHub
- Copiar el contingut de [.gitignore](https://raw.githubusercontent.com/github/gitignore/master/Global/JetBrains.gitignore)
en un fitxer anomenat __.gitignore__ en l'arrel del teu repositori.
- Afegir les línies:
```
# Maven
log/
target/
```

- Activar la versió de control: __VCS > Enable Version Control Integration__ i seleccionar __Git__
- Afegir el repositori de Github: __Git > Manage Remotes...__ i donar-li al __+__
- Name: __origin__
- URL: __L'enllaç del teu projecte de GitHub__. Podeu triar connectar-vos mitjançant HTTPS o SSH. Jo vos recomane SSH.

### Integració amb HTTPS
- Vos demanarà iniciar sessió, feu-ho mitjançant Use Token...
- Doneu-li a __Generate...__
- Se vos obrirà una pàgina de GitHub per generar el PAT token.
- Poseu la expiració: No expiration
- Genereu el token
- Copieu (i guardeu-vos) el token i introduiu-lo a IntelliJ.
### Integració amb SSH
- Cal crear una clau SSH.
- Linux/Mac: __ssh-keygen__
- Windows: En el programa __Git GUI > Help > Show SSH Key... > Generate key__
- Copiar la clau generada al teu perfil de GitHub: __Profile > Settings > SHS and GPG Keys > New SSH Key__
### Commit inicial
- Realitzar un commit inicial: __Git > Commit...__
- Seleccionar tots els fitxers
- Missatge: Initial commit
- Botó: __Commit__

- Pujar el projecte a GitHub: __Git > Push...__
Us hauria de sortir en verd els fitxers que aneu a pujar.

- Verifiqueu que s'ha pujat a GitHub:

## Treballar amb Git
Una vegada configurat l'espai de treball, ja es pot utiliztar per afegir noves classes i sincronitzar-les en diferents espais de treball mitjançant Git.
Tot el codi estarà dins de la carpeta __src__.
Quan es vulga sincronitzar el codi de IntelliJ IDEA a Github caldrà:
- Realitzar un pull per incorporar els canvis que hagen pogut haver i no crear conflictes:
__Git > Pull...__
- Realitzar un commit amb els canvis: __Git > Commit...__
- Missatge del commit __significatiu__
- Realitzar un push: __Git > Push__
- Comprovar que s'ha actualitzat correctament en GitHub.
Aquest lloc web utilitza galetes per millorar l'experiència de l'usuari