This shows you the differences between two versions of the page.
poo-is-ab:resurse:02 [2025/10/01 10:17] adrian.ciobanu1906 created |
poo-is-ab:resurse:02 [2025/10/04 16:08] (current) adrian.ciobanu1906 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Startup guide - WSL, VSC si GitHub ===== | + | ===== Startup guide - VSC, WSL și GitHub ===== |
**Autor: Dănuț Ciobanu** | **Autor: Dănuț Ciobanu** | ||
Line 5: | Line 5: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | **Visual Studio** este | + | Pentru acest curs, folosirea WSL (Windows Subsystem for Linux) și Visual Studio Code (VS Code) vă va ajuta enorm. Gândiți-vă la această combinație ca la un banc de lucru universal, care vă asigură că toți veți lucra într-un mediu identic, standardizat, la fel ca profesioniștii. Cu WSL, chiar dacă aveți Windows, veți putea rula un mediu Linux autentic, eliminând astfel problemele de compatibilitate și diferențele de configurare dintre voi. Veți avea acces direct la aceleași unelte și compilatoare (cum ar fi G++ pentru C++) pe care le veți întâlni și în industrie. În același timp, VS Code vă oferă o interfață modernă, prietenoasă și gratuită, unde puteți scrie și depana codul mult mai ușor. |
- | ==== Pasul 1 - Descărcarea installer-ului ==== | + | ==== Pasul 1 - Instalarea WSL ==== |
- | Prin accesarea [[https://visualstudio.microsoft.com/vs/community/|paginii oficiale]] a celor de la Microsoft vi se va deschide următoarea pagină web: | + | Pentru a instala WSL, primul pas este deschiderea aplicației "**PowerShell**" ca administrator, precum în poza de mai jos: |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_2_-_descarcare_initial.png?direct&600 |}} | + | {{ :poo-is-ab:resurse:poza_powershell_admin.png?direct&300 |}} |
- | Unde puteți apăsa pe butonul de „Download” și descărcarea installer-ului va începe, precum în imaginea: | + | Urmatorul pas este rularea comenzii ''%%wsl --install%%'' in terminalul ce se va deschide și realizarea setărilor necesare: |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_3_-_descarcare_final.png?direct&600 |}} | + | {{ :poo-is-ab:resurse:poza_terminal_instalare_wsl.png?direct&600 |}} |
- | ==== Pasul 2 - Instalarea efectivă și alegerea opțiunilor ==== | + | ==== Pasul 2 - Instalarea Visual Studio Code și plugin-uri ==== |
- | Prima data când se va deschide fișierul descărcat la pasul 1 veți fi înâmpinați de următorul ecran: | + | Prin accesarea [[https://code.visualstudio.com/|paginii oficiale]] a celor de la Microsoft vi se va deschide următoarea pagină web: |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_4_-_prompt_initial.png?direct&350 |}} | + | {{ :poo-is-ab:resurse:poza_website_vsc.png?direct&600 |}} |
- | Aici apăsați pe butonul de „Continue” și, odată ce s-a terminat instalarea se va deschide meniul de unde veți selecta pachetele ce trebuie alese pentru realizarea laboratoarelor din cadrul acestei materii: | + | Aici faceți click pe butonul de "Download" și descărcați executabilul pentru instalarea Visual Studio Code. Rulați executabilul și instalați aplicația, lasând setările default (puteți schimba totuși locația de instalare a acestuia, dacă preferați). După ce veți deschide aplicația, veți ajunge la următorul ecran: |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_6_-_pachetele_necesare.png?direct&700 |}} | + | {{ :poo-is-ab:resurse:clean_vsc.png?direct&600 |}} |
- | În acest meniu cele mai importante selecții de făcut sunt: | + | Următorul pas este instalarea extensiilor apăsând pe ultimul buton de jos, cel cu bloculețe, din meniul din stânga. Extensiile de care vom avea nevoie sunt: |
- | * **Desktop development with C++** în cadrul ecranului principal | + | |
- | * **Windows 10 SDK** și **Windows 11 SDK** (cele mai recente versiuni) din meniul din partea dreaptă | + | |
- | * Selectarea locației de instalare din partea de jos a ferestrei | + | |
- | Odată terminată selectarea opțiunilor se va apăsa butonul „Install” și se va deschide următoarea (și ultimă) fereastră din procesul de instalare: | + | {{ :poo-is-ab:resurse:ext1_vsc.png?direct&500 |}} |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_7_-_descarcare_si_instalare_vs.png?direct&700 |}} | + | {{ :poo-is-ab:resurse:ext2_vsc.png?direct&500 |}} |
- | ==== Extra 1 - Crearea unui proiect folosind Visual Studio ==== | + | Acum este recomandat ca terminalul default din Visual Studio Code să fie WSL, pentru ușurință. Facem acest lucru prin apăsarea sucesiunii de taste ''%%CTRL + SHIFT + P%%'' și apoi scrierea în text box a ''%%Preferences: Open User Settings%%'', astfel ajungând la următorul ecran: |
- | Pentru a crea un proiect, când se deschide aplicația Visual Studio, inițial o să apară următorul ecran: | + | {{ :poo-is-ab:resurse:cautare_vsc.png?direct&800 |}} |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_8_-_creare_proiect.png?direct&500 |}} | + | Aici, scrieți în search box-ul de sus ''%%terminal.integrated.defaultProfile.windows%%'', veți vedea un dropdown cu setarea inițială **null**, dați click pe ea și selecați **Ubuntu (WSL)**, ca în imagine: |
- | Apăsăm pe butonul de „Create a new project” și mai departe se va deschide următoarea fereastră: | + | {{ :poo-is-ab:resurse:terminal_wsl.png?direct&800 |}} |
- | {{ :poo-is-ab:resurse:vs_resursa_poza_9_-_alegere_template.png?direct&600 |}} | + | Acum de fiecare dată când veți deschide un terminal, acesta va fi de tip WSL direct și nu veți mai da comenzi greșite în terminale nepotrivite. |
- | Pentru realizarea exercițiilor din cadrul laboratoarelor vom folosi template-ul ”Console App” care poate fi căutat fie aplicând filtrele **C++** pentru limbajul de programare și **Windows** pentru sistemul de operare, fie căutând direct în căsuța de căutare din partea de sus a meniului. | + | ==== Pasul 3 - Pregătirea de folosire a WSL ==== |
- | Apăsând pe butonul „Next” o să apară: | + | Prima data rulați comenzile ''%%git --version%%'' și ''%%g++ --version%%'' pentru a verifica că aveți pachetele necesare instalate, astfel: |
+ | {{ :poo-is-ab:resurse:wsl_versiuni_check.png?direct&600 |}} | ||
+ | |||
+ | Dacă vreuna nu este instalată sau este o versiune mai veche, rulați ''%%sudo apt install git%%'' pentru **Git** și ''%%sudo apt install g++%%'' pentru **G++**, astfel: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:wsl_updates.png?direct&600 |}} | ||
+ | |||
+ | ==== Pasul 4 - Adaugare utilizator (pentru calculatoarele din sală) ==== | ||
+ | |||
+ | În următorii pași vom fi nevoiți să generăm o pereche de cheie publică + cheie privată pentru a putea interacționa mult mai ușor cu Git. Aceste perechi de chei sunt unice fiecărui profil de utilizator din WSL și, dacă sunt suprascrise, se va pierde metoda de conectare la Git. Astfel, cea mai bună și sigură metodă de a face acest lucru în cadrul laboratorului ** MAI ALES PENTRU CEI CARE LUCREAZĂ PE CALCULATOARELE DIN SALĂ** (dacă lucrati pe laptopul personal, puteți folosi utilizatorul vostru sau puteți urmări pasul acesta pentru a crea un utilizator specific laboratorului de POO) este să creăm un alt utilizator, specific nouă. Pentru a face acest lucru trebuie rulate câteva comenzi în terminalul de WSL: | ||
+ | *''%%sudo adduser ceNumeDeUtilizatorVreți%%'' -> după rularea comenzii vi se va cere parola de la contul curent, întrebați asistentul de laborator să vă asiste în cazul ăsta | ||
+ | *Aceasă comanda va crea noul utilizator | ||
+ | *''%%sudo usermod -aG sudo ceNumeDeUtilizatorVreți%%'' -> această comandă va da drepturi de sudo utilizatorului nou creat | ||
+ | *''%%su ceNumeDeUtilizatorVreți%%'' -> această comandă vă va autentifica pe profilul noului utilizator creat | ||
+ | *''%%cd /home && ll%%'' -> această comanda vă va schimba directorul curent în cel de **/home** și va apela comanda **ll** ce va lista toate fișierele din directorul curent | ||
+ | *Folosind această comandă, vedem numele fișierelor din directorul home și, implicit, utilizatorii creați curent pe dispozitiv, printre care ar trebui să se găsească și noul utilizator creat de voi | ||
+ | |||
+ | {{ :poo-is-ab:resurse:wsl_new_user.png?direct&600 |}} | ||
+ | |||
+ | ==== Pasul 4 - Generare și adăugare cheie publica la GitHub ==== | ||
+ | |||
+ | Odată ce v-ați autentificat pe **contul dorit** (**ATENȚIE** să nu fiți pe root sau contul default de "student", "user" etc, dacă sunteți în sala de laborator) se rulează comanda ''%%ssh-keygen%%'' pentru a genera cheia publică ce o vom încărca pe GitHub. Lăsați locația și passphrase goale apăsând tasta ENTER. Rulați comanda ''%%cat ~/.ssh/numeFișier.pub%%'' (**ATENȚIE** "numeFișier" este un placeholder pentru exemplificare, trebuie înlocuit cu id_rsa, id_ed25519 etc după cazul fiecăruia, **dar păstrată terminația de .pub**): | ||
+ | |||
+ | {{ :poo-is-ab:resurse:wsl_ssh.png?direct&600 |}} | ||
+ | |||
+ | Intrați pe [[https://github.com/|GitHub]] și autentificați-vă pe conturile voastre. Dați click pe poza voastră de profil din dreapta-sus și apoi click pe "Settings": | ||
+ | |||
+ | {{ :poo-is-ab:resurse:github_settings.png?direct&600 |}} | ||
+ | |||
+ | Apoi dați click pe "SSH and GPG Keys" din meniul din stânga și "New SSH Key" în dreapta-sus: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:github_ssh.png?direct&600 |}} | ||
+ | |||
+ | În fereastra nou apărută copiați cheia publică **în toată întregimea sa (început "ssh-rsa" sau "ssh-ed25519" etc cât și terminația ce reprezintă numele de utilizator și numele dispozitivului "nume@dispozitiv")** și puneți-i un nume corespunzător astfel încât să o puteți identifica cât mai ușor pe viitor: | ||
+ | {{ :poo-is-ab:resurse:github_new_ssh.png?direct&600 |}} | ||
+ | |||
+ | Se poate vedea și în poză că este strict necesar începutul cu "ssh-". | ||
+ | |||
+ | Revenind în terminalul WSL din Visual Studio Code, ar fi o idee bună să pregătim și configurația pentru Git. Pentru a face asta vom rula comenzile ''%%git config --global user.name "username_GitHub"%%'' și ''%%git config --global user.email johndoe@example.com%%'' (înlocuiți numele de utilizator și adresa de email cu ale voastre). Rulând comanda ''%%git config --list%%'' vom putea verifica dacă am facut modificările corecte și ar trebui să arate astfel, dar cu datele voastre: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:git_config.png?direct&600 |}} | ||
+ | |||
+ | Acum aceste setări vor fi salvate global pentru acest utilizator pentru comenzile următoare de Git. | ||
+ | |||
+ | ==== Pasul 5 - Primul repository și cod ==== | ||
+ | |||
+ | Intrați pe [[https://github.com/|GitHub]] și apăsați pe butonul de "+" din dreapta-sus: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:github_new_repo.png?direct&600 |}} | ||
+ | |||
+ | Apoi dați-i un nume și recomandat este să îl faceți privat atâta timp cât nu vreți ca oricine extern să vă poată vedea repository-ul respectiv și salvați-l: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:repos_settings.png?direct&600 |}} | ||
+ | |||
+ | Acum salvați link-ul de tip **SSH** în clipboard deoarece îl vom folosi imediat: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:github_ssh_repo.png?direct&600 |}} | ||
+ | |||
+ | Revenind în Visual Studio Code, dați click pe "**File**" din stânga-sus și pe "**Open Folder...**" apoi selectați folderul unde doriți sa lucrați: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:vsc_open_folder.png?direct&600 |}} | ||
+ | |||
+ | **ATENȚIE: Acum interfața s-a resetat și terminalul de WSL precedent s-a închis deci TREBUIE SĂ NE AUTENTIFICĂM PE PROFIULUL PERSONAL DIN NOU** | ||
+ | |||
+ | Dați click pe "Terminal" în stânga sus și apoi pe "New Terminal" pentru a-l redeschide: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:vsc_new_terminal2.png?direct&600 |}} | ||
+ | |||
+ | În poza de mai sus se observă 2 lucruri importante: | ||
+ | - **Utilizatorul s-a resetat la cel default, autentificarea este necesară** | ||
+ | - Lângă combinația numeUtilizator@numeDispozitiv se poate vedea, cu albastru, path-ul către folderul curent, deci deja suntem în folderul dorit după ce am dat "Open Folder..." înainte, e bine | ||
+ | |||
+ | Următorul pas este clonarea repository-ului creat pe GitHub pe dispozitivul local. Asta se realizează folosind comanda ''%%git clone linkSshCopiatAnterior%%''. "Git clone" este practic o succesiune de 4 comenzi individuale de Git: | ||
+ | * **git init** -> creează repository-ul local | ||
+ | * **git remote add** -> adaugă link-ul către repository-ul de pe GitHub | ||
+ | * **git fetch** -> scoate toate modificările aduse repository-ului de pe GitHub | ||
+ | * **git checkout** -> creează efectiv fișierele pe dispozitivul local | ||
+ | |||
+ | **ATENȚIE: deci nu mai este nevoie sa rulăm ''%%git init%%'' separat.** | ||
+ | |||
+ | {{ :poo-is-ab:resurse:git_clone_bun.png?direct&600 |}} | ||
+ | |||
+ | În poza de mai sus se observă 3 lucruri importante, din nou: | ||
+ | - **Când s-a realizat clonarea, S-A CREAT UN FOLDER NOU CU DENUMIREA ACESTUI REPOSITORY** | ||
+ | - Noi trebuie să lucrăm în folderul ce conține "**.git**" deci trebuie sa folosim comanda ''%%cd%%'' pentru a ne muta în directorul corespunzător și în WSL -> Repository-ul folosit de mine se numește "LabOCW" și se poate vedea comanda ''%%cd LabOCW%%'' pentru a mă afla în folderul corect pentru când va fi necesară compilarea și rularea fișierelor | ||
+ | - La prima conectare prin SSH, este necesară adăugarea domeniului "github.com" în lista de "gaze cunoscute" ("known hosts" în negleză) pentru a putea facilita accesul în viitor. Asta se realizează scriind "**yes**" când se cere. | ||
+ | |||
+ | {{ :poo-is-ab:resurse:small_test_bun.png?direct&600 |}} | ||
+ | |||
+ | În poza de mai sus: | ||
+ | * Am creat 3 fișiere folosind comanda ''%%touch%%'' direct din terminalul WSL pentru a mă asigura că sunt create unde trebuie și nu într-un folder superior | ||
+ | * Am scris un cod foarte simplu strict pentru a exemplifica comenzile de rulare si executare a codului direct din terminal | ||
+ | * Se poate observa că cele 3 fișiere acum sunt verzi și apare "U" lângă ele, asta înseamnă că sunt în folderul potrivit și Git-ul detecteaza modificări | ||
+ | |||
+ | Pentru a compila codul scris, voi folosi comanda ''%%g++ functions.cpp main.cpp -o exec%%''. Pe bucăți, reprezintă: | ||
+ | - **g++** este compilatorul de cod C++ instalat în primii pași | ||
+ | - **functions.cpp main.cpp** reprezintă lista de fișiere .cpp ce vor fi compilate (**ATENȚIE doar fișierele .cpp se compilează, fișierele .h se includ pentru referințe ce trebuie transmise între fișiere, ACESTEA NU SE COMPILEAZĂ**) | ||
+ | - **-o** reprezintă opțiunea pentru a crea un executabil ce poate fi rulat | ||
+ | - **exec** numele executabilului | ||
+ | |||
+ | Pentru a rula executabilul se folosește sintaxa ''%%./numeFișier%%'', care este general valabilă în Linux pentru a rula fișiere ce pot fi executate. În cazul nostru: ''%%./exec%%''. | ||
+ | |||
+ | {{ :poo-is-ab:resurse:exec_test.png?direct&600 |}} | ||
+ | |||
+ | ==== Pasul 6 - Încărcare pe GitHub ==== | ||
+ | |||
+ | Pentru a realiza trimiterea fișierelor către repository din GitHub trebuie executate următoarele comenzi: | ||
+ | - **git add fișier** -> se adaugă fiecare fișier | ||
+ | - **git commit -m "mesaj"** -> se pregătesc fișierele pentru commit împreună cu un mesaj relevant | ||
+ | - **git status** -> e o preferință personală pentru a verifica dacă am uitat fișiere și că totul este în regulă | ||
+ | - **git push** -> deoarece am clonat prin SSH, toate informațiile necesare au fost primite încă de la început si toate modificările adăugate în commit pot fi "împinse" pe GitHub direct, fără parole sau alte configurații necesare | ||
+ | |||
+ | Concret: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:git_example.png?direct&600 |}} | ||
+ | |||
+ | Și rezultatul de pe GitHub: | ||
+ | |||
+ | {{ :poo-is-ab:resurse:github_repo_commited.png?direct&600 |}} | ||
+ | |||
+ | Se poate vedea că fișierele au fost încărcate cu succes și cu mesajul corespunzător. |