🚀

Instal·lar Fortran, Gnuplot, VS Code i extres! (Guia per Windows, Mac i Linux)

Guies antigues


Podeu consultar també les guies antigues, les quals estan més detallades però no van al gra i utilitzen un altre sistema més bàsic i menys personalitzable d’automatització. Estan aquí.

Taula de continguts


Coneixements previs necessaris

Ingredients principals que utilitzarem

  • Gfortran
  • Gnuplot
  • Visual Studio Code
  • Extensions del VS Code
    • ‘Modern Fortran’ by ‘The Fortran Programming Language’
    • ‘gnuplot’ by ‘mammothb’
    • ‘Material Icon Theme’ by ‘Philipp Kief’
    • ‘vscode-pdf’ by ‘tomoki1207’
    • ‘Task Runner’ by ‘Sana Ajani’
  • PowerShell
  • Carpeta .vscode (zip descarregat d’aquesta guia), que conté:
    • tasks.json
    • settings.json
    • tasks
      • run_fortran.ps1
      • run_gnuplot.ps1
      • run_fortran_debug.ps1 (opcional)
      • create_mods_folder.ps1 (opcional)

Ingredients addicionals útils

  • GitHub Copilot
  • Timeline com a historial de versions

Personalitzacions addicionals

  • Personalització de Material Icon Theme
  • Personalització de la terminal
  • Definir dreceres de teclat per executar les tasques

Extra (avançat)

  • Publicar a GitHub amb GitHub Desktop (com a còpia de seguretat al núvol o com a historial de versions)
  • Tasques addicionals per compilar mòduls externs
  • GitHub Gists + Playground LFortran (per provar codi ràpid que no involucri fitxers)
  • GitHub Codespaces (per executar un repositori com si fos el vscode però en línia)

Suport


Si teniu qualsevol dubte o problema tècnic seguint aquesta guia, consulteu al final de tot l’apartat de dubtes i ajuda.

Videotutorials


Per si necessiteu un suport visual al seguir aquesta guia a continuació uns videotutorials que poden ser d’ajuda.
Videotutorial “Instal·lar Fortran i Gnuplot”
Pendent…
Videotutorial “Demo d’ús versió més senzilla possible”
 
Videotutorial “Instal·lar i configurar PowerShell”
Pendent…
Demo d’ús versió completa
 

1a PART: Instal·lem Fortran, Gnuplot i VS Code


Instal·lar Visual Studio Code + Extensions

Instal·la’l de la pàgina oficial. Després busca les extensions esmentades i instala-les.
notion image
Extensions a instal·lar
  • ‘Modern Fortran’ by ‘The Fortran Programming Language’
  • ‘gnuplot’ by ‘mammothb’
  • ‘Material Icon Theme’ by ‘Philipp Kief’
  • ‘vscode-pdf’ by ‘tomoki1207’
  • ‘Task Runner’ by ‘Sana Ajani’
Nota
Per ‘Material Icon Theme’ hauràs de clicar ‘Set File Icon Theme’ i prémer ‘Enter’. Un cop les hagis instal·lat totes, tanca i torna a obrir el VS Code.

Instal·lar Fortran

Per Windows
Entra aquí i descarrega la última versió. Normalment és la següent:
notion image
Segueix el procés d’instal·lació fins al final. Un cop acabat comprova amb gfortran --version.
Per Mac
Previ: Instal·lar Brew
En la terminal fes:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Nota: hauràs d’escriure la contrasenya (la que utilitzes quan s’obre l’ordinador).
Simplement obre la terminal i fes:
brew install gcc
Comprova amb gfortran --version.
Per Linux
Nota: a vegades ja ve instal·lat per defecte. Es pot comprovar amb which gfortran.
Súper immediat. Primer fes sudo apt update per si cal actualitzar llibreries i seguidament fes:
sudo apt install gfortran
Comprova amb gfortran --version.

Instal·lar Gnuplot

Per Windows
Entrem aquí i descarreguem la última versió
notion image
Seguim el procés d’instal·lació amb totes les opcions per defecte excepte en el pas següent:
notion image
Això ens estalviarà haver d’afegir gnuplot al PATH manualment. Un cop acabat el procés d’instal·lació comprovem amb gnuplot --version.
Per Mac
Ara que ja tenim Brew simplement fem:
brew install gnuplot
Comprovem amb gnuplot --version.
Per Linux
Nota: a vegades ja ve instal·lat per defecte. Es pot comprovar amb which gnuplot.
Simplement sudo apt update seguit de:
sudo apt install gnuplot
O si estem a Ubuntu i volem una instal·lació directa (amb les opcions per defecte):
sudo DEBIAN_FRONTEND=noninteractive apt install -y gnuplot
Comprova amb gnuplot --version.

Interludi per comprovacions

Crea una carpeta a on vulguis (Documents, Escriptori…) i obre-la des del VS Code. Ara crea un nou fitxer prova.f90, un altre prova.gnu i un últim dades.dat.
notion image
Posa-hi el següent codi
prova.f90
program prova implicit none print *, 'Hello World!' end program
prova.gnu
file = 'dades.dat' set term png set out 'fig1.png' plot file
dades.dat
1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81
Obre la terminal integrada del VS Code seleccionant com a perfil cmd per Windows, zsh o bash per Mac, i bash per Linux.
notion image
Executa el fitxer prova.f90 fent gfortran prova.f90 -o prova.
notion image
Es generarà un fitxer executable. Executa’l fent .\prova per Windows i ./prova per Linux o Mac.
Hauries de veure un ‘Hello World’ a la terminal.
notion image
Nota: En la imatge es mostra ‘./prova’ tot i fer-se des de Windows. Això és perquè PowerShell (que instal·larem en la segona part), a diferència de cmd, bash o zsh, serveix per qualsevol sistema operatiu. Tot això ho expliquem més endavant.
Per cmd hauria de lluir així
notion image
Per bash o zsh hauria de lluir així
notion image
Ara executa gnuplot fent gnuplot prova.gnu. S’hauria d’haver generat un fitxer fig1.png, obre la imatge i mira que sigui similar a aquesta:
notion image

2a PART: Versió mínima funcional


Si no us voleu complicar la vida i voleu el mínim funcional simplement descarregueu la següent arxiu i descomprimiu-lo:
I poseu la carpeta .vscode a l’arrel del directori que teniu obert en el VS Code.
Si voleu la mateixa senzillesa però amb la lògica de les carpetes, poseu millor aquesta altra versió:
El mateix però amb carpetes
Si voleu una manera més escalable i personalitzable (amb scripts PowerShell) seguiu llegint.

2a PART: Versió recomanada. Anem a automatitzar-ho


Instal·lar PowerShell

Els scripts .ps1 ens permetran configurar tasques independentment del sistema operatiu. Anem a instal·lar PowerShell per poder-los executar.
Prova la manera 1, si no et funciona la 2, etc.
Per Windows
Previ: Instal·lar la Terminal
Primer de tot obrim la Microsoft Store i instal·lem la ‘Terminal’.
notion image
Després quan ja tinguem PowerShell instal·lat la configurarem per utilitzar PowerShell per defecte.
notion image
notion image
Manera 1: A través de Microsoft Store
notion image
Manera 2: Amb WinGet
  1. Comprova que tens WinGet amb winget --version. Si no en tens millor prova una altra manera.
  1. Abans d’instal·lar PowerShell mira el núm de l’última versió disponible fent winget search Microsoft.PowerShel (actualment 7.5.2).
  1. Instal·la fent
    1. winget install --id Microsoft.PowerShell --source winget
Manera 3: Instal·lador MSI
Vés a la pàgina oficial i descarrega la versió corresponent a l’arquitectura del teu processador i sistema operatiu (si tens un ordinador modern, és a dir de 64 bits, i un processador Intel o AMD has de triar la de x64).
notion image
Obre’l i segueix la instal·lació fins al final.
Manera 4: Release de GitHub
Totalment equivalent a la Manera 3 però està bé per entendre com funcionen aquestes coses.
PowerShell és de codi obert, vés al repositori, fixa’t en l’apartat de Releases i clica l’última versió.
notion image
Descarrega els “Assets” (al final de tot de la pàgina) corresponents al teu sistema operatiu i processador, normalment:
notion image
Pots triar el .msi o el .exe, les dues funcionen. Per un sol ordinador el .exe està bé.
Un cop instal·lat configurem la ‘Terminal’ per utilitzar-lo per defecte.
Per Mac
Nota: Si tens una versió antiga (macOS 10.15 Catalina o inferior) no podràs instal·lar PowerShell. Per saber quina versió de Mac tens consulta aquesta guia.
Manera 1: Amb Brew
Obrim la terminal i fem:
brew install --cask powershell
Comprovem la instal·lació amb pwsh.
Manera 2: Descarrega directa
Anem a la pàgina oficial de descarrega i cliquem la última versió disponible compatible amb el nostre processador.
Nota: Si obrint about this mac hi posa “Procesador Intel..." és ‘osx-x64’. Si en canvi "Chip M1 / M2 / M3..." vol dir que és arm64.
notion image
Obre’l i segueix el procés d’instal·lació fins al final.
Nota: Si al obrir el paquet dins del Finder dona error tipus ‘No se puede abrir…’ prem Ctrl, clica l’arxiu i ‘Abrir’.
Manera 3: Release de GitHub
Totalment equivalent a la Manera 2 però està bé per entendre com funcionen aquestes coses.
PowerShell és de codi obert, vés al repositori, fixa’t en l’apartat de Releases i clica l’última versió.
notion image
Descarrega els “Assets” (al final de tot de la pàgina) corresponents al teu processador.
Nota: Si obrint about this mac hi posa “Procesador Intel..." és x64’. Si en canvi "Chip M1 / M2 / M3..." vol dir que és arm64.
notion image
Per Linux
Per Debian (Ubuntu) manualment
PowerShell és de codi obert, vés al repositori, fixa’t en l’apartat de Releases i clica l’última versió.
notion image
Ves al final de tot de la pàgina, i dels “Assets”, descarrega el que acaba amb .deb:
notion image
Obre’l i segueix el procés d’instal·lació fins al final.
Per Debian des de la terminal
Primer fem:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft.gpg > /dev/null
I ara indiquem a on es troba la clau pública de Microsoft fent:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" | sudo tee /etc/apt/sources.list.d/microsoft.list
Retornarà una cosa similar a la comanda que hem escrit, i ara ja podem procedir a la instal·lació:
sudo apt update sudo apt install -y powershell
Si teniu un Linux que no és Debian entenc que ja teniu coneixements informàtics suficients per descarregar PowerShell com a binari i afegir-lo al Path sense problemes.
Igualment, aquí la pàgina oficial d’instal·lació de PowerShell a Linux.
Comprovació
Podem obrir una terminal (ja sigui cmd, bash…) i escriure pwsh per comprovar la instal·lació, hauria de retornar la versió (per exemple ‘PowerShell 7.5.2’).

Configurar la terminal del VSCode per utilitzar PowerShell

Trobar el PATH
Abans de res hem de trobar el PATH, és a dir la ruta de l’executable pwsh.exe.
Per Windows el trobem fent:
Get-Command pwsh | Select-Object Source
Per Mac o Linux el trobem fent:
which pwsh
Configurar el settings.json
Obrim el VS Code i obrim el settings.json de configuració a nivell d’usuari.
notion image
Info: un fitxer JSON sempre comença amb { i acaba amb }, entre mig hi ha els elements d’aquell objecte (també anomenat diccionari) que segueixen el patró key: value i estan separats per comes.
  • Els valors de la key sempre són cadenes de text (ex: "name").
  • En canvi el valor de value pot ser un enter (7), cadena de text ("Miquel"), booleà (true), diccionari (definit per { i }) o array (definit per [ i ]).
  • Els arrays, igual que els diccionaris, contenen elements (simplement el value) separats per comes. Són llistes ordenades així que l’ordre importa.
L’important és entendre que quan afegim un nou element a un fitxer JSON ho hem de fer respectant el } final de l’objecte o ] final de l’array i, afegint una coma (,) a l’element anterior.
Afegim el següent al final del nostre setting.json:
Per Windows
"terminal.integrated.profiles.windows": { "PowerShell 7": { "path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe" } }, "terminal.integrated.defaultProfile.windows": "PowerShell 7"
Per Mac
"terminal.integrated.profiles.osx": { "PowerShell 7": { "path": "/opt/homebrew/bin/pwsh" } }, "terminal.integrated.defaultProfile.osx": "PowerShell 7"
Per Linux
"terminal.integrated.profiles.linux": { "PowerShell 7": { "path": "/usr/bin/pwsh" } }, "terminal.integrated.defaultProfile.linux": "PowerShell 7"
On el "path" serà el que hem obtingut en el pas anterior.
Nota: Ja que hi som si volem podem aprofitar per afegir al settings.json la personalització del Material Icon Theme.
Guardem el fitxer (Ctrl+S) i el tanquem.

Simplement hi posem la carpeta .vscode

Ara simplement descarreguem el següent arxiu (versió completa):
El descomprimim i posem la carpeta ‘.vscode’ dins el directori en el que estem treballant.
Nota: si ens pregunta, triem l’opció ‘Copy Folder’.
Nota: si ens pregunta, triem l’opció ‘Copy Folder’.
Abans de provar res fem >Developer: Reload Window o simplement tanquem i tornem a obrir el visual studio code.

Provem l’automatització

Ara en la pestanya Explorador (Ctrl+Shift+E) obrim el desplegable ‘Task Runner’, i tenint obert el prova.f90 provem de clicar ‘Build & Run Fortran’.
notion image
Hauríem de veure un ‘Hello World!’ a la terminal. També podem eliminar fig1.png i executar l’arxiu gnuplot amb ‘Run Gnuplot’ per comprovar que funciona.
Nota: segons com us pot sortir una notificació de Seguretat de Windows o Gatekeeper de Mac o de l’antivirus (si en teniu) bloquejant l’accés a l’executable generat al compilar Fortran.
Solució per Windows
Per permetre aquests executables en Windows tenim dues opcions.
Crear una excepció manualment per cada executable
Sol aparèixer una notificació. En tot cas…
Seguretat de Windows —> Historial de Protecció —> Clicar una notificació de “l’accés a les carpetes protegides s’ha bloquejat” —> Segur? Sí —> Configuració d’accés a carpetes controlat —> Permet una aplicació amb l’accés controlat a les carpetes —> Segur? Sí —> Afegeix una aplicació permesa —> Aplicacions bloquejades recentment —> Seleccionar “programa.exe” —> ja pots tancar-ho tot i tornar a provar.
Moure els programes a una altra carpeta i crear una exclusió
Si teniu els programes a ‘Documents’, o alguna altra carpeta que Seguretat de Windows considera protegida, el més senzill és migrar la carpeta a l’escriptori o a un altre lloc (per exemple com a subcarpeta del teu usuari, al mateix nivell que Documents i Escriptori).
Al no ser una carpeta protegida ja no hauria de passar.
Tot i així si ens en volem assegurar, afegim una exclusió a aquella carpeta (a les carpetes protegides pel sistema no funcionen les exclusions):
Seguretat de Windows —> Protecció contra virus i amenaces —> Configuració de la protecció contra virus i amenaces —> Administra la configuració —> Exclusions —> Afegeix o sumprimeix exclusions —> (Sí) —> Afegeix una exclusió —> Carpeta —> [Busques la teva carpeta “Fortran” o “Compu” o “Programes” o “Practiques Compu” o similar] —> Ho tornes a provar i ja hauria de funcionar.
En Mac o Ubuntu desconec com gestionar-ho perquè no m’hi he trobat.

Interludi breu: simplificar l’editor

A la barra lateral esquerra, a vegades hi tindrem diversos elements. Podem desactivar els que no ens iteressin clicant botó dret i traient el tick als que no volem.
notion image
Els 3 essencials són l’explorador, el buscador i les extensions.
De la mateixa manera, dins la pestanya “Explorador”, podem desactivar els elements que no ens interessin com ‘Timeline’ i ‘Outline’ traient-els-hi el tick.
notion image
També pots canviar el tema de l’editor i molt més. Pots consultar diferents temes aquí, i el tries buscant >Preferences: Color Theme. A mi el que més m’agrada és el per defecte ‘Dark Modern’. També pots aprendre altres coses que es poden configurar de l’editor i la diferència entre el settings.json a nivell d’usuari (per tots els projectes) i el settings.json dins de la carpeta .vscode (sols afecta a aquell workspace) en aquesta guia.
Dit això, anem a veure com podem personalitzar els scripts.

Personalitzem els scripts amb la configuració que ens agradi

Per defecte el ‘Build & Run Fortran’ només mostra l’output de la terminal.
notion image
Si en canvi ara utilitzem ‘Build & Run Fortran (DEBUG)’ veurem que es mostren uns missatges amb colorets.
notion image
Prova d’afegir una línia double precision :: x al codi i torna a executar-lo en mode debugging, hauries de veure un warning de color groc
Captura de pantalla
notion image
Aquesta tasca ‘Build & Run Fortran (DEBUG)’ inclou diferents arguments opcionals de compilació que ens serviran per trobar més fàcilment un error en el codi.
De la mateixa manera que en aquesta hi ha colorets (UI que li diem nosaltres, que ve de ‘User Interface’) també li podem posar UI a les altres tasques. També podem modificar un script per tal de no treballar amb carpetes o treballar-hi d’una manera diferent.
Cada script .ps1 (que es troben dins de .vscode/tasks) té a l’inici té un apartat de configuració amb opcions ja predefinides.
Exemples
Per exemple si obrim .vscode/tasks/run_fortran.ps1 i editem la línia 10 i la línia 12 a $colorOutput = $false veurem que aquesta tasca també presenta uns missatges amb colors com passa amb la versió DEBUG.
De la mateixa manera, si editem per exemple la línia [int]$opcioConfiguracio = 3 podrem triar si quina gestió de carpetes volem fer. Si canviem el 3 (opció per defecte) a un 1, ja no farem servir carpetes. Si triem un 2, la única carpeta que es generarà serà ‘exes’. Si triem un 6 al compilar es generaran automàticament les carpetes 'exes', 'data', 'out' i 'mods’.
Podem triar l’opció que més s’ajusti al nostre workflow.
El mateix amb l’script run_gnuplot.ps1 (per exemple podem posar $UI = $true per mostrar si s’ha generat el gràfic correctament o no).
Algunes captures de pantalla
Amb la UI…
Desactivada
Amb la UI desactivada es veu com si es fes des de la terminal.
notion image
Per gnuplot simplement no es mostra cap output.
Activada
En canvi amb la UI activa es mostra de la següent manera:
Com es veu quan hi ha un warning de Fortran
notion image
Com es veu quan hi ha un error de Fortran
notion image
Com es veu quan hi ha un error de Gnuplot
Nota: Un dic tinc pendent millorar el highlighting per errors de gnuplot.
Nota: Un dic tinc pendent millorar el highlighting per errors de gnuplot.
Com es veu quan gnuplot s’executa correctament
notion image

Nota d’aclariment

Aquí tot segueix igual. Els professors podran compilar igualment des de la terminal tan Fortran com Gnuplot (amb o sense mòduls involucrats) i tot funcionarà exactament igual però sense la carpeta ‘exes’. Clarament no els sortirà tampoc cap UI ja que no tindran cap tasca ni script powershell. En altres paraules, tot el que estem fent és per facilitar-nos la vida però segueix sent compatible amb compilar i executar des de la terminal com hem fet sempre.

Explicació de què fan les tasques

Al final de la pàgina teniu una explicació detallada dels scripts i de perquè això permet compilar o executar automàticament. És a dir l’equivalència amb si ho fessis directament des de la terminal.

Comentari sobre el flux de treball

Cal a dir que si decidiu treballar amb carpetes (configurable a l’inici de cada script) o no, després haureu de tenir en compte les rutes correctes en el codi.
Exemple en Fortran
program escriureEnUnFitxer implicit none integer :: x real :: x_radians open(unit=10, file="data/dades.dat") ! Recordem no deixar-nos el 'data/' do x = -360, 360 x_radians = (x*2*3.14159)/360 write(10,*) x, sin(x_radians) end do close(unit=10) end program
Exemple en Gnuplot
file = 'data/dades.dat' set term png set out 'out/fig1.png' plot file

Personalitzacions


Personalitzar el Material Icon Theme

Canvi visual:
notion image
Per a fer-ho obrim els User Settings (settings.json d’usuari) i sota la línia:
"workbench.iconTheme": "material-icon-theme",
Hi afegim:
"material-icon-theme.folders.customClones": [ { "name": "dades-carpeta", "base": "folder-content", // opció alternativa: "folder-database" "color": "#009688", // Blau per 'data' "folderNames": ["data"] }, { "name": "exes-carpeta", "base": "folder-config", // opció alternativa: "folder-command" "color": "#360900", // Vermell fosc per 'exes' "folderNames": ["exes"] }, { "name": "out-carpeta", "base": "folder-environment", // opció alternativa: "folder-images" "color": "#2bb302", // Verd per 'out' "folderNames": ["out"] }, { "name": "mods-carpeta", "base": "folder-plugin", // opció alternativa: folder-lib "color": "#000736", // Blau fosc per 'mods' "folderNames": ["mods"] } ], "material-icon-theme.files.customClones": [ { "name": "imatge-png", "base": "image", "color": "#42ab22", // Verd per les imatges "fileExtensions": ["png","jpg","jpeg","plt","gif","ico"] }, { "name": "arxiu-mod", "base": "wxt", "color": "#7584d9", // Blau pels mods "fileExtensions": ["mod"] } ], "material-icon-theme.folders.color": "#e0c810",
Guardem el fitxer (Ctrl+S) i el tanquem.

Personalitzar la Terminal

page icon
Totalment opcional
Si volem podem personalitzar una mica la terminal, per exemple canviar la tipografia o posar-li un tema. Nosaltres utilitzarem Oh My Posh però hi ha altres maneres com ara Starship.
A continuació alguns exemples de temes que es poden utilitzar mitjançant Oh My Posh:
notion image
notion image
notion image
Podeu veure més temes aquí:
Suposem que efectivament decidim personalitzar la terminal, instal·lem Oh My Posh seguint les instruccions per Windows, Mac o Linux. Un cop instal·lat ens disposem a afegir un tema.
El que haurem de fer és indicar en el nostre perfil de terminal (PROFILE) que volem utilitzar aquest tema.
Per a fer-ho fem:
code $PROFILE
I se’ns obrirà en el VSCode el fitxer que conté la configuració del nostre perfil de terminal.
Per afegir per exemple el tema sim-web afegiríem la següent línia:
if ($Host.Name -eq 'ConsoleHost') { C:\Users\PC\AppData\Local\Programs\oh-my-posh\bin\oh-my-posh.exe init pwsh --config "$env:POSH_THEMES_PATH\sim-web.omp.json" | Invoke-Expression }
Nota: Canviar la ruta per la que correspongui. La pots obtenir amb Get-Command oh-my-posh | Select-Object Source en qualsevol terminal PowerShell. Si estàs a Linux o macOS també pots provar amb which oh-my-posh.
La condició if($Host.Name -eq 'ConsoleHost') evita que s’utilitzi el tema si no estem en un entorn interactiu.
D’aquesta manera la terminal externa i la terminal integrada del VSCode utilitzen el tema però les tasques del tasks.json no. Altrament podria passar que el tema de Oh My Posh interfereixi amb el correcte funcionament de les tasques.
Configurar la font de la terminal
Per últim és possible que la terminal integrada del VSCode o la externa no mostrin bé alguns dels icones del tema. Quan això passa vol dir que no tenim cap Nerd Font instal·lada. Per a fer-ho instal·lem per exemple Meslo que és la més típica (després si volem la canviem).
oh-my-posh font install meslo
Un cop instal·lada, configurem la terminal externa per fer servir la font.
Per Windows
Anem a la configuració i després cliquem l’icona amb un engranatge (Abrir archivo JSON).
notion image
Se’ns obrirà un JSON i hi busquem (Ctrl+F) “font”. Canviem la font que hi hagi per:
"font": { "face": "MesloLGM Nerd Font" }
Per Mac
Per Linux
Visita el següent repositori: i segueix les instruccions del README. Al triar una font tria ‘Meslo’.
Ara que tenim la terminal externa configurada només queda configurar la terminal integrada del vscode. Per a fer-ho obrim el settings.json a nivell de usuari (>Preferences: Open User Settings (JSON)) i hi posarem al final de tot:
"terminal.integrated.fontFamily": "MesloLGM Nerd Font"
Suprimim la terminal i en creem una de nova i ja hauríem de veure els icones del tema correctament.
Si volem ara podem instal·lar altres fonts amb oh-my-posh font install i configurar com acabem de fer aquestes fonts en la terminal.
Podeu veure les diferents Nerd Fonts i un exemple de com llueixen aquí.

Definir dreceres de teclat per les tasques

page icon
Totalment opcional, per la gent que li agraden les dreceres de teclat.
  1. File>Preferences>Keyboard Shortcuts.
  1. Clica el següent a dalt a la dreta:
    1. notion image
  1. S’hauria de mostrar un fitxer JSON (keybindings.json), borra el que hi hagi i enganxa-hi el següent codi:
    1. [ // Si vols també pots modificar aquestes dreceres canviant la 'key'. { "key": "F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .f90 || resourceExtname == .f || resourceExtname == .f95", "args": "Build & Run Fortran" }, { "key": "F5", "command": "workbench.action.tasks.runTask", "when": "resourceExtname == .gnu", "args": "Run Gnuplot" } ]
      Això el que fa és sobreescriure les dreceres de teclat, permetent executar fortran o generar el plot amb F5.
      Nota: si voleu podeu canviar les dreceres de teclat editant l’argument “key”.
  1. Guarda el fitxer (Ctrl+S) i ja estaria.

Millores útils


GitHub Copilot

Per programar dins el VS Code és segurament una de les millors eines que existeixen. A continuació una guia dedicada en com obtenir el Pro gratis (com a estudiant de la UB) i com configurar-lo pel VS Code:
GitHub Student Benefits i IA GitHub Copilot Pro
GitHub Student Benefits i IA GitHub Copilot Pro

Tasques addicionals, afegir o eliminar-ne

Entenent que el "tasks" del tasks.json és un array que conté les diferents tasques, podem afegir-hi noves tasques si volem, o podem eliminar-ne algunes que ja hi hagi.
Com hauràs vist si has entrat en el fitxer, una manera molt còmode de definir una tasca és fer simplement que executi un script powershell.
Codi d’exemple per una tasca
{ "label": "NOM TASCA AQUÍ", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/nom-script-aqui.ps1" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }
Aleshores, si volem crear una tasca nova només cal que aconseguim escriure el corresponent script .ps1. Això es més senzill del que sembla, ho podem fer consultant la documentació de PowerShell, mirant forums com reddit o StackOverflow, o demanant ajuda al ChatGPT o a GitHub Copilot.
El següent curs està molt bé també: CodecademyCodecademyLearn PowerShell.

Timeline com a historial de versions local

Cada vegada que guardem un fitxer el VSCode es guarda localment en una carpeta interna la versió del fitxer abans de fer els canvis. Això ens permet saber en tot moment els canvis que s’han fet.
Com fer-ho servir
Si nosaltres habilitem la ‘Timeline’ de l’explorador (clic dret per exemple a on posa ‘Task Runner’ i li posem el tick a ‘Timeline), veurem un seguit d’historial de canvis en el fitxer que tenim obert.
notion image
Si cliquem un dels ‘File Saved’ se’ns obrirà en vista de comparació respecte el fitxer actual.
notion image
A partir d’aquí tenim dues opcions.
Manual
Si simplement volem veure el codi del fitxer original cliquem botó dret sobre el ‘File Saved’ de la Timeline i triem ‘Show Contents’.
notion image
Es mostrarà el fitxer (sense colorets ni res) i podem copiar i enganxar el codi per substituir el nostre fitxer actual. També podem si volem tornar el clicar el fitxer (vista comparació) i després botó dret i clicar ‘Restore Contents’.
A partir de la vista de comparació (manera recomanada)
Significat:
  • El que es mostra en vermell és el codi de la versió antiga
  • El que es mostra en verd és el codi que s’ha afegit o modificat en la versió nova (l’actual)
El que farem ara és anar bloc per bloc on hi han hagut canvis i cliquem el següent botó si volem revertir a la versió anterior aquella part.
notion image
Això farà que aquella part del codi recuperi la seva versió antiga (la que està ara en vermell). Alternativament també podem clicar la part vermella i ‘Revert this change’.
notion image
Els canvis que no vulguem revertir (ja ens agradi com estan en la versió actual) simplement no els toquem. I quan estiguem tornem a obrir el nostre fitxer des de l’explorador.
GIF d’exemple
Mini tutorial de com revertir ràpidament un fitxer a una versió antiga.
notion image
Nota: Local history vs Git
En general quan es sent a parlar de control de versions, es té en ment Git (la manera més famosa i útil per saber quins canvis han patit quins fitxers, i amb la que funciona per exemple GitHub).
Git és relativament complicat d’aprendre i té tota la seva estructura (commit, stage, push) que no aprendrem ara aquí. Pot estar bé per si voleu tenir sincronitzada la vostra carpeta amb GitHub, i així sempre podeu accedir-hi des de qualsevol ordinador o executar-ho com a codespaces, però no és el que estem intentant adreçar aquí.
Per més informació:

Altres


Publicar a GitHub

Explica’t amb detall a . D’aquesta manera podrem:
  1. Tenir una còpia de seguretat en línia (el nostre repositori de GitHub privat) a la que sempre podrem accedir des de qualsevol ordinador.
  1. Utilitzar el GitHub Desktop per desfer els canvis encara no publicats (sense commit). Serveix per quan no recordem en quin moment hem fet un canvi i no volem perdre temps revisant la Timeline.
  1. Compartir (si volem fer públic el nostre repositori) les nostres pràctiques amb altra gent.

LFortran per comprovacions ràpides en línia

Existeix la següent playground molt xula que utilitza l’innovador compilador lfortran:
És la playground oficial recomanada per fortran-lang. Quina és la part xula? que a part de poder compilar allà el codi que nosaltres hi escrivim al moment, podem posar codi a GitHub Gists i després utilitzar correctament la URL.
Per exemple vegeu el següent Gist:
Si ens fixem en la seva URL, ara podem crear una URL per compilar aquest codi el línia amb la playground de lfortran simplement utilitzant ?gist= seguit de l’identificador del nostre Gist.
Així doncs podem crear i compartir exemples en línia. Això és el que s’utilitza en bona part dels exemples de
Curs de Fortran
Curs de Fortran
.
El principal inconvenient però, és que no permet escriure i llegir fitxers. Per una solució que permeti compilar en línia programes que interactuen amb fitxers de dades mira l’opció codespaces.

Configurar GitHub com a codespace

Explica’t en detall aquí: .

Tasques addicionals per mòduls externs

Si els mòduls no estan definits en el mateix programa si no en un altre fitxer (que pot estar en la mateixa carpeta que el programa principal o en un directori extern), ens interessaran els dos següents scripts:
build_modules.ps1
param ( [string]$Fitxer ) # Comprovem que existeix el fitxer if (-not (Test-Path $Fitxer)) { Write-Host "Fitxer no trobat: $Fitxer" -ForegroundColor Red exit 1 } # Comprovem que és un fitxer Fortran if ([System.IO.Path]::GetExtension($Fitxer) -notin @(".f", ".f90", ".f95")) { Write-Host "Ep! T'has equivocat de fitxer. Executa la tasca tenint un fitxer Fortran obert." -ForegroundColor Red exit 1 } # Variables internes $Directori = Split-Path $Fitxer $NomFitxer = Split-Path $Fitxer -Leaf $NomFitxerSenseExtensio = [System.IO.Path]::GetFileNameWithoutExtension($Fitxer) $tempFile = New-TemporaryFile # Fitxer temporal per guardar-hi els errors # Anem al directori del fitxer per compilar i executar amb rutes relatives # Seria equivalent a un cd [nomCarpeta] Push-Location $Directori # Creem la carpeta 'mods' si no existeix if (-not (Test-Path 'mods')) { New-Item -Name 'mods' -ItemType Directory | Out-Null } # Variable interna 'Sortida' en funció de si existeix la carpeta 'mods' $Sortida = "mods/$NomFitxerSenseExtensio.o" # Missatge per pantalla per indicar que ara compilarem Write-Host "Directori: $Directori" -ForegroundColor DarkGray Write-Host "$NomFitxer --> Compilant els moduls del fitxer..." -ForegroundColor DarkGray # Compilem # Nota: Utilitzem Start-Process per poder guardar els errors correctament en un fitxer temporal $Process = Start-Process -FilePath "gfortran" -ArgumentList "-c -Imods -Jmods $NomFitxer -o $Sortida" -RedirectStandardError $tempFile -NoNewWindow -Wait -PassThru # Mirem si ha anat bé la compilació if ($Process.ExitCode -eq 0) { Write-Host "Compilacio dels moduls correcta!" -ForegroundColor Green Write-Host "--> Ara pots executar el programa principal amb la tasca 'Build & Run Fortran'." -ForegroundColor DarkGray } else { Write-Host "La compilacio ha fallat. A continuacio els build logs." Write-Host "---------------------------------------------------------" Get-Content $tempFile | ForEach-Object { Write-Host $_ } Write-Host "---------------------------------------------------------" } Remove-Item $tempFile # Eliminem el fitxer temporal amb els errors # Tornem al directori arrel # (sinó el proxim `cd Carpeta` es faria estant ja dins d'una subcarpeta) Pop-Location
build_external_directory_modules.ps1.
param ( [string]$Fitxer, [string]$DirectoriModulsExterns ) # Comprovem que existeix el fitxer if (-not (Test-Path $Fitxer)) { Write-Host "Fitxer no trobat: $Fitxer" -ForegroundColor Red exit 1 } # Comprovem que és un fitxer Fortran if ([System.IO.Path]::GetExtension($Fitxer) -notin @(".f", ".f90", ".f95")) { Write-Host "Ep! T'has equivocat de fitxer. Executa la tasca tenint un fitxer Fortran obert." -ForegroundColor Red exit 1 } # Comprovem que existeix el directori extern if (-not (Test-Path $DirectoriModulsExterns)) { Write-Host "No s'ha trobat el directori extern: $DirectoriModulsExterns. Assegura't que has escrit correctament la ruta." -ForegroundColor Red exit 1 } # Variables internes $Directori = Split-Path $Fitxer $tempFile = New-TemporaryFile # Fitxer temporal per guardar-hi els errors # Creem la carpeta 'mods' al directori principal si no existeix Push-Location $Directori if (-not (Test-Path 'mods')) { New-Item -Name 'mods' -ItemType Directory | Out-Null } Pop-Location # Obtenim els mòduls externs $FitxersAmbModuls = Get-ChildItem -Path "$DirectoriModulsExterns\*" -Include *.f,*.f90,*.f95 -File if (-not $FitxersAmbModuls) { Write-Host "No s'han trobat moduls externs a $DirectoriModulsExterns." -ForegroundColor Red exit 1 } # Compilem els mòduls externs Push-Location $DirectoriModulsExterns $FitxersAmbModuls | ForEach-Object { $FitxerModuls = $_.FullName $NomModulSenseExtensio = $_.BaseName $SortidaObjecte = "$Directori\mods\$NomModulSenseExtensio.o" Write-Host "$FitxerModuls --> Compilant moduls externs..." -ForegroundColor DarkGray $ProcessModul = Start-Process -FilePath "gfortran" ` -ArgumentList "-c $FitxerModuls -J$Directori\mods -o $SortidaObjecte" ` -NoNewWindow -Wait -PassThru if ($ProcessModul.ExitCode -ne 0) { Write-Host "Error al compilar el mòdul: $FitxerModuls" -ForegroundColor Red exit 1 } } Pop-Location Write-Host "Compilacio dels moduls externs completada correctament!" -ForegroundColor Green Write-Host "Els fitxers .mod i .o s'han guardat a: $Directori\mods" -ForegroundColor DarkGray Write-Host "--> Ara pots executar el programa principal simplement amb la tasca 'Build & Run Fortran'." -ForegroundColor DarkGray
I clarament també els haurem d’afegir com a tasques:
tasks.json
Versió completa (inclou també les tasques anteriors):
{ "version": "2.0.0", "tasks": [ { "label": "Bulild & Run Fortran", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/run_fortran.ps1", "-Fitxer", "${file}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "Run Gnuplot", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/run_gnuplot.ps1", "-Fitxer", "${file}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "---------", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/separador.ps1" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "Create mods Folder", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/create_mods_folder.ps1", "-Fitxer", "${file}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "Build file's modules (in same dir)", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/build_modules.ps1", "-Fitxer", "${file}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "Build external directory modules here", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/build_external_directory_modules.ps1", "-Fitxer", "${file}", "-DirectoriModulsExterns", "${input:directoriModulsExterns}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "--------- ", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/separador.ps1" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] }, { "label": "Bulild & Run Fortran (DEBUG)", "type": "shell", "command": "pwsh", "args": [ "-ExecutionPolicy", "Bypass", "-File", "${workspaceFolder}/.vscode/tasks/run_fortran_debug.ps1", "-Fitxer", "${file}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [] } ], "inputs": [ { "id": "directoriModulsExterns", "type": "promptString", "description": "Ruta del directori on guardes els mòduls externs", "default": "TEORIA/TEORIA MÈTODES NUMÈRICS/TOTES LES SUBRUTINES" }, ] }

Explicació extensiva de què fan les tasques i els scripts

Explicació relacionada: .

Curs de Fortran, de Gnuplot i de mètodes numèrics

Petit recordatori que existeixen els següents cursos:
Al mateix temps quan hi hagi temps es crearà un repositori configurat ja com a codespace que permeti executar pràctiques i exàmens d’anys anteriors en línia sense haver d’instal·lar res.

Resolució de dubtes i problemes tècnics


Si teniu qualsevol dubte o no us funciona alguna cosa poseu un comentari aquí en el mateix Notion a la part on us heu encallat.
Nota: caldrà que us creeu un usuari de Notion (si no el teniu ja) i inicieu la sessió.
Nota: caldrà que us creeu un usuari de Notion (si no el teniu ja) i inicieu la sessió.
A la que es solucioni el dubte o problema tècnic, quedarà com a dubte resolt al final de la pàgina o es modificarà el contingut de la guia per incloure directament el cas.
Per dubtes més llargs podeu escriure’ls a continuació seguint el que hi ha d’exemple.

Dubtes pendents

page icon
(Dubte d’exemple)
Hola al fer [] em surt com a error [] bla bla
He provat de fer [] però no [].
[Captura de pantalla]
Algú em pot ajudar?

Dubtes resolts

page icon
(Solució d’exemple)
Hola al fer [] em surt com a error [] bla bla
He provat de fer [] però no [].
[Captura de pantalla]
Algú em pot ajudar?
✅ Solució
Bla bla bla

Altres formes de contacte