Skip to content

Instantly share code, notes, and snippets.

@neoSnakex34
Last active October 28, 2025 16:13
Show Gist options
  • Select an option

  • Save neoSnakex34/c45c6d04395e2c9088fbf74d420f05d5 to your computer and use it in GitHub Desktop.

Select an option

Save neoSnakex34/c45c6d04395e2c9088fbf74d420f05d5 to your computer and use it in GitHub Desktop.
Students mantained FAQ for "Programmazione per il web" and "WASA" course

Wasa FAQ ENGLISH

Before proceeding

You may want to take a look at the official FAQ!

How doable is this course for a novice?

Despite this not being a course which hand-holds you, on the contrary its a course that requires quite some analitycal skills from the end user if no prior experience exists, it is comprehensive enough to let you expericence full-stack development for the first time if you had never done it before. If you are passionate about the subjects it is a good way to approach them. Being an extremely practical course, the correction system is quite complex and can lead to temporal dilatations (see My repo wasn't assessed)

What prior knowledge do i need?

  • A minimum of basics in the use of a command line (to use git, install and update the necessary tools, etc.)
  • A minimum of knowledge about linux (the development of the project is encouraged to be done on the prof's VM, which is based on Debian)
  • Concepts fromt the exam "Reti di Calcolatori" (?)
  • Programming paradigms

Can i use library y in the frontend?

It is not possible to use libraries which augment Vue or that add new components, for everything else, make sure they're written in JS and not TS.

May i use TypeScript in the frontend?

No, this is a course about JavaScript, not TypeScript, if you want types you can use JSDoc as the TS language server supports it.

How does the oral exam work?

The oral exam is composed of a brief presentation of the project, guided mainly by you; plus one or two questions. The most common questions are on the methods of the HTTP protocol (for example the difference between POST and PUT), on implementation choices, on what does the contents of the Dockerfiles mean.

I did everything correctly on swagger but the OpenAPI assessment gives me error x, y, z

Swagger has limited checks compared to the prof's config, which is based mostly on ibm-openapi-validator, you can download ibm-validator and set it up to use the config made by Michele.

I've implemented all the endpoints, but the assessment says some (or all) are missing

  • Checks that the paths match what you declared inside doc/api.yaml and between frontend and backend.
  • If you have a path /users/{userId} which expects a POST you have to keep coherence in the various parts of the application.
  • Check the casing of the letters, the check is case-sensitive so if they differ it will fail.

My repo wasn't checked, but i committed everything today

If you pushed to the repo wednesday, it may not get it as he starts the assessment early in the morning, even if the results arrive way later. If it gets skipped more than two times, write him an email.

This week i didn't get any assesments

The week after the exams are skipped.

How often does he assess?

Usually, every wednesday, except festivities or exceptional cases. The week before the exam, he assess every day until the Thursday before (so all pushes done before wednesday evening will be assessed).
Example: I have the attend the exam on the wensday 22? then i will receive assessments every day from wednesday 8 to wednesday 15.

Where do i study x, y, z?

Generally:

  • Documentation of the technology you are using, foundamental.
  • The prof's book goes on the whole program and shows a quite useful parallel project, its relatively short but doesn't cost much and may be useful.

Specifically:

How do i simulate docker with the same privileges as the prof's?

Note

This is for avoiding that your errors are different from yours

docker run --rm --user 1000 -p 3000:3000 <image tag>

How can i verify the correctness of the parts of my project?

To verify the correctness, or if you don't want to wait for the prof's assessment, you can use the linters.

It says i have hardcoded an url to http://localhost:3000/the backend doesn't work for the prof, how do i fix it?

These errors may be caused by the fact that the prof runs the project on a machine, while opening the site on another, so localhost:3000 doesn't know where to go. So, to test it by yourself you can do the same, taking the IP of the host and placing it in a browser from another device, like you would do on PC.

For example, if the host's IP is 192.168.1.4 you connect from another device to http://192.168.1.4:8080.

This said, of course the two devices must be on the same network, else they cannot comminucate, so pay attention that they are on the same network.

If this doesn't take you anywhere, check if you have that string anywhere, the regex matches everything, including comments!

Linter

Linters are used to find errors and problems before they reach the repo on github/gitlab, and consequently before the prof assesses them, so to have more chances to receive actual notes on the project instead of syntax errors or typos. To get this result, we need to reflect the prof's configuration as much as possible, for which Michele (@Michele 4384 on tg (without spaces)) has created a series of configs which should manage exactly that. To install both linters and configs, you may follow the mini-guide which is present in the above link.

Homework

How does the homeworks work?

The course, even if divided in homework, actually requires the realization of a full-stack app divided in:

  • OpenAPI document which desribes the REST API
  • Backend/API implementation
  • Frontend with VueJS
  • Docker container to simulate a deploy

The project must be realized starting from the example github repo made by the prof Bassetti (licensed under MIT) fantastic-coffee, from which is possibke to create forks or cloness, the important part is that you connect your repo to the prof's corrector via SSH key by following his instructions.

How should I approach the project?

Note

Reply given from Ionut Cicio (@CuriousCI on tg)

  1. If you've done DB2, do the analisys of the project, so you can quickly solve problems like "what do i need to implement?"
  2. Try to start the code and see if it compiles and works (everything is written in the fantastic-coffee's README)
  3. Write the API using a RESTful style as suggested by thye slides, assessments will tell you if and what problems exist as you go
  4. Design the DB (technically you could do it later as well, to implement the functionalities you can use "fake" data); if check, the cloned project congtains a "database" folder, which is where this stuff should be placed into
  5. Take a functionality (like the login), and try to implement it
  6. Implement the rest of the functionalities (to test, use postman or similar, i made a bash script which uses jq to make the tests)
  7. Do the front-end
  8. Write the two small Dockerfile needed to start the project via Docker

Wasa FAQ ITALIANO

Prima di continuare

Potresti voler dare un'occhiata alle FAQ ufficiali!

Quanto è fruibile questo corso per un novizio?

Nonostante non sia un corso che ti tiene per mano, anzi è un corso che richiede una certa abilità analitica da parte dell'utente finale se non si hanno conoscenze pregresse, è abbastanza ampio da permetterti di toccare con mano il full-stack development per la prima volta se non l'hai mai fatto. Se gli argomenti ti appassionano è un ottimo modo per approcciarli. Essendo un corso estremamente pratico, il sistema di correzione è abbastanza complesso e può portare a dilatazioni temporali (vedi La mia repo non è stata corretta)

Di che conoscenze pregresse ho bisogno?

  • Un minimo di basi di utilizzo di una riga di comando (per usare git, installare ed aggiornare i tool necessari, ecc)
  • Un minimo di conoscenza di linux (lo sviluppo del progetto è incoraggiato su VM del prof, basata su Debian)
  • Concetti dell'esame di reti di calcolatori (?)
  • Paradigmi di programmazione

Posso usare la libreria y nel frontend?

Non si possono usare librerie che augmentano Vue o che aggiungono nuovi componenti, per il resto, sincerati che siano scritte in JS e non TS.

Posso usare typescript nel frontend?

No, questo è un corso di JavaScript non TypeScript, se vuoi i tipi puoi usare JSDoc dato che il language server di TS li supporta.

Come funziona l'orale?

L'orale si compone di una breve presentazione del progetto, guidata principalemente da te; piu' una o due domande. Le domande più comuni sono sui metodi del protocollo http (come ad esempio la differenza tra POST e PUT), su scelte di implementazione, su cosa significa ciò che è scritto nei Dockerfile.

Ho fatto tutto giusto su swagger ma la correzione OpenAPI mi da errore x, y, z

Swagger ha controlli limitati rispetto al config del professore, che è basata principalmente su ibm-openapi-validator, potete scaricare ibm-validator e settarlo per usare il config già fatto da Michele.

Ho implementato tutti gli endpoint ma la correzione dice che mancano (tutti o qualcuno)

  • Ricontrolla che i path corrispondano con quanto dichiarato all'interno di doc/api.yml e tra frontend e backend.
  • Se hai un path /users/{userId} che si aspetta un metodo POST devi mantenere coerenza nelle vari parti dell'applicazione.
  • Ricontrolla il casing delle lettere, il controllo è case-sensitive quindi se differiscono fallira'.

La mia repo non è stata controllata, ma ho committato tutto oggi.

Se hai pushato sulla repo il mercoledì, potrebbe non prenderla poiche' inizia le correzioni presto, anche se i risultati escono anche molto tardi. Se la skippa più di due volte, scrivigli.

Questa settimana non ho ricevuto correzioni

La settimana dopo gli orali salta la correzione.

Ogni quanto corregge?

Di norma, tutti i mercoledì, salvo festivi o casi eccezionali. La settimana prima dell'orale corregge tutti i giorni fino al GIOVEDÌ PRIMA (ovvero verranno corretti tutti push fatti fino al mercoledì sera).
Esempio: Ho l'orale mercoledi 22? riceverò correzioni da mercoledi 8 a mercoledi 15 tutti i giorni.

Da dove studio x, y, z?

Generalmente:

  • Documentazione della tecnologia che usi, fondamentale.
  • Il libro del prof copre il programma e fa vedere un progetto parallelo abbastanza utile, è relativamente stringato ma costa poco e può essere utile.

In specifico:

Come simulo il docker con gli stessi privilegi del professore?

Note

Questo serve ad evitare che a lui dia errori diversi dai tuoi

docker run --rm --user 1000 -p 3000:3000 <tag immagine>

Come posso verificare la correttezza delle parti del mio progetto?

Per verificarne la correttezza, o piu' semplicemente se non vuoi aspettare la correzione del prof, puoi usare dei linter.

Mi dice che ho hardcodato l'url a http://localhost:3000/al prof non va il backend, come lo sistemo?

Questi errori possono esser causati da il fatto che il prof runna il progetto s'una macchina, mentre apre il sito in un'altra, quindi localhost:3000 non sa dove andare a parare.
Quindi, per testarlo da te puoi fare la stessa cosa, prendendo l'IP dell'host e lo mettendolo nel browser d'un qualsivoglia altro dispositivo, come faresti da PC.

Ad esempio, se l'host ha IP 192.168.1.4 ti colleghi dall'altro dispositivo a http://192.168.1.4:8080.

Detto cio', ovviamente i due dispositivi devono essere sulla stessa rete, senno' non possono comunicare, quindi fai attenzione che stiano sulla stessa rete.

Se cio' non porta a nulla, controlla se hai quella stringa da qualche parte, la regex matcha tutto, commenti inclusi!

Linter

I linter servono a trovare errori e problemi prima che raggiungano la repo su github/gitlab, e di consequenza prima che il prof corregga, per cosi' avere piu' possibilita' di ricevere note sul progetto piuttosto che sugli errori di sintassi o typo.
Per ottere questo risultato, bisogna rispecchiare al piu' possibile la configurazione usata dal prof, proprio per cui Michele (@Michele 4384 su tg (senza spazio)) ha creato una serie di config che dovrebbero gestire proprio cio'.
Per installare sia linter che config, puoi seguire la mini-guida presente nel link soprastante.

Homework

Come funzionano gli homework?

Il corso, anche se diviso in homework, richiede in realtà la realizzazione di un app full-stack divisa in:

  1. Documento OpenAPI che descrive l'API REST
  2. Backend/implementazione dell'API
  3. Frontend con VueJS
  4. Container docker per simulare deploy

Il progetto va realizzato a partire dalla repository github di esempio del prof Bassetti (licenza MIT) fantastic-coffee, da cui è possibile creare fork o cloni, l'importante è che colleghiate la vostra repo al correttore del prof tramite chiave SSH seguendo le sue istruzioni.

Come mi approccio al progetto?

Note

Risposta fornita da Ionut Cicio (@CuriousCI su tg)

  1. Se hai fatto BD2, fai l'analisi del progetto, cosi' risolvi subito i problemi del tipo "cosa devo implementare?"
  2. Fai partire il codice e vedi se ti compila e funziona (c'e' scritto tutto nel README di fantastic-coffee)
  3. Scrivi l'API usando lo stile RESTful come suggerito dalle slide, tanto con le correzioni vedrai man mano i problemi che ci sono
  4. Progetta il DB (Tecnicamente lo potresti fare pure dopo, per implementare le funzionalita' potresti temporaneamente usare dati "finti"); se vedi il progetto che hai clonato c'e' una cartella database dove va messa questa roba
  5. Prendi una funzionalita' (tipo il login), e prova a implementarla
  6. Implementa le altre funzionalita' (per testare usa postman o simili, io mi sono fatto un script bash che usa jq per fare i test)
  7. Fai il front-end
  8. Scrivi due piccoli Dockerfile necessari ad avviare il progetto con Docker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment