This shows you the differences between two versions of the page.
sde:teme:tema_ro_1 [2019/01/30 19:16] razvan.serban |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tema 1 ====== | ||
- | <note> | ||
- | În urma feedback-ului, vă recomandăm următoarele: | ||
- | |||
- | **Studiați secțiunea de [[#cunostinte_evaluate|Cunoștințe evaluate]] și suportul agregat necesar temei.** | ||
- | |||
- | Daca aveti intrebari sau nelamuriri, folosiți issue-urile pe [[https://github.com/alexandruradovici/sde/issues|Git-ul Sd'E]] | ||
- | |||
- | Căutați pe pagina de issue-uri informația pe care doriți să o obțineți, înainte să puneți o întrebare. De cele mai multe ori, cineva a mai întrebat același lucru. | ||
- | |||
- | În cazul în care doriți să publicați un screenshot, recomandăm folosirea site-urilor pentru partajarea gratuită a imaginilor, precum [[http://imgur.com/|imgur]] sau [[http://www.makeuseof.com/tag/4-imgur-alternatives-for-uploading-sharing-images/|alternativele]] sale, publicând in issue-uri doar link către screenshot. | ||
- | |||
- | Urmăriți atât issue-urile cât și modificările aduse enunțului/checker-ului, modificări ce sunt publicate și explicate în paragrafele de mai jos. | ||
- | </note> | ||
- | |||
- | <note important> | ||
- | Folosiți cu încredere sectiunea de issue-uri de pe [[https://github.com/alexandruradovici/sde/issues|github.com/alexandruradovici/sde/issues]] pentru întrebări și neclarități legate de teme. | ||
- | |||
- | În timpul realizării temei, când vă loviți de probleme și aveți nevoie de suportul echipei de Sd'E, parcurgeți și lista de [[uso:teme:intrebari-frecvente|întrebări frecvente întâlnite în cadrul temelor]]. Să țineți cont, va rugăm, și de [[uso:regulament#recomandari_de_comunicare_electronica|recomandările de comunicare electronică]]. | ||
- | </note> | ||
- | |||
- | ===== Informații generale ===== | ||
- | |||
- | <note warning> | ||
- | Deoarece exista deja resurse la materia USO (aflata tot aici pe [[http://ocw.cs.pub.ro/|ocw.cs.pub.ro]]), vom folosi masinile virtuale si resursele existente acolo. Multe link-uri de pe aceasta pagina va vor indrepta acolo pentru nelamuriri, link-uri de download si diverse intrebari frecvente. | ||
- | </note> | ||
- | |||
- | <note important> | ||
- | Deadline: **XX X-ie, ora 23:55**\\ | ||
- | Timp de lucru: **X zile**\\ | ||
- | Punctaj: **X puncte** din nota finală\\ | ||
- | </note> | ||
- | |||
- | <note> | ||
- | Actualizări enunț:\\ | ||
- | |||
- | * **Nu există actualizări** | ||
- | </note> | ||
- | |||
- | <note> | ||
- | Actualizări checker:\\ | ||
- | Versiunea curentă: <color red>**versiunea 1.0.0**</color> | ||
- | |||
- | * **Nu există actualizări** | ||
- | </note> | ||
- | |||
- | |||
- | <note tip> | ||
- | Vă încurajăm ca atunci când găsiți soluția la o problemă pe care ați postat-o anterior pe issue-uri să postați și soluția găsită. De asemenea dacă știți răspunsul la întrebările colegilor sunteți încurajați să le răspundeți. | ||
- | |||
- | Singurul lucru de care trebuie să aveți grijă este să nu puneți pe issue-uri rezolvările taskurilor. Puteți să sugerați diferite abordări sau să dați idei celorlalți. Mai multe informații găsiți in [[uso:regulament#recomandari_de_comunicare_electronica|recomandările de comunicare electronică]]. | ||
- | </note> | ||
- | |||
- | |||
- | |||
- | ===== Cunoștințe evaluate ===== | ||
- | |||
- | * Instalarea, configurarea, rularea mașinii virtuale si utilizarea checkerului pentru Tema 1 la Sd'E | ||
- | * Navigarea in sistemul de fisiere | ||
- | * Folosirea utilitarului git | ||
- | * Compilarea programelor | ||
- | |||
- | |||
- | ===== Maşini virtuale Tema 1 Sd'E 2019 ===== | ||
- | |||
- | <note tip>Citiţi şi secţiunea despre maşini virtuale a USO 2018 - [[:uso:resurse:mv]] </note> | ||
- | <note tip>Username-ul si parola sunt cele de pe [[http://fils.curs.pub.ro|fils.curs.pub.ro]]</note> | ||
- | |||
- | * Versiune pe 32-bit, Debian 9, kernel 4.09: https://repository.grid.pub.ro/cs/uso/2018-2019/teme/USO-409-32bit-Debian9.ova | ||
- | * Versiune pe 64-bit, Ubuntu 18.04 LTS, kernel 4.19-rc8: https://repository.grid.pub.ro/cs/uso/2018-2019/teme/USO-419rc8-64bit-Ubuntu1804.ova | ||
- | |||
- | În funcţie de sistemul de operare pe care îl aveţi instalat pe calculator descărcaţi maşina virtuală aferentă. | ||
- | |||
- | <note important>**IMPORTANT**: dacă ştiţi că aveţi procesoare noi (e.g. AMD Ryzen, Intel CoffeLake, KabyLake etc.) sau pur şi simplu procesorul vostru este pe 64-bit şi aveţi Windows 10 instalat sau Ubuntu >= 16.04 descărcaţi maşina virtuală pe 64-bit. | ||
- | </note> | ||
- | |||
- | **Cum verific dacă sistemul meu e 32-bit sau 64-bit?** | ||
- | |||
- | Vă rugăm să parcurgeţi următoarele tutoriale în funcţie de sistemul de operare instalat pe calculatorul/laptop-ul vostru: | ||
- | |||
- | * [[https://support.microsoft.com/en-us/help/13443/windows-which-operating-system|Tutorial Windows 10]] | ||
- | * [[https://support.microsoft.com/en-us/help/827218/how-to-determine-whether-a-computer-is-running-a-32-bit-version-or-64|Tutorial Windows 8, 7, Vista, XP]] | ||
- | * [[https://www.tecmint.com/find-out-linux-system-is-32-bit-or-64-bit/|Tutorial Linux - câteva idei de comenzi]] - deschideţi un terminal şi rulaţi una din comenzile specificate aici. ''i386'' inseamnă sistem pe 32 biţi, ''amd64'' înseamnă sistem pe 64 biţi. | ||
- | |||
- | |||
- | ===== Testare ===== | ||
- | |||
- | <note tip> | ||
- | |||
- | **Instrucțiuni de utilizare a checkerului ''uso''** | ||
- | |||
- | * Pentru mai multe detalii referitoare la checkerul uso, consultați [[uso:teme:instructiuni-checker|instrucțiunile de utilizare]]. | ||
- | |||
- | </note> | ||
- | |||
- | <hidden> | ||
- | ** Descărcare mașină virtuală și informații despre aceasta** | ||
- | |||
- | * Mașina virtuală și link-ul de unde poate fi ea descărcată se găsesc pe pagina cu informații despre [[uso:resurse:mv|mașina virtuală]]. | ||
- | </hidden> | ||
- | |||
- | **Testarea temei** se va face doar pe mașina virtuală autentificat ca utilizator ''student'', folosind utilitarul ''uso''. Acesta poate fi executat în orice moment pentru a verifica dacă au fost rezolvate corect task-urile. Nu lucrați autentificat ca utilizator ''root'' în sistem, la nicio temă. Din acest motiv există posibilitatea să nu vă treacă testele. Pe de altă parte, nu este o metoda de siguranță să lucrați autentificat ca utilizator root din motive de securitate și/sau permisiuni. | ||
- | |||
- | Utilitarul ''uso'' implementează testele doar pentru task-urile temei curente. Pentru a folosi utilitarul ''uso'', primul pas este să porniți Tema 1 folosind comanda ''sudo uso start 1''. În caz contrar, nu veți avea actualizat checker-ul pentru tema curentă. | ||
- | |||
- | Verificați versiunea checker-ului, afișată la rularea comenzii ''sudo uso version''. Asigurați-vă că aveți ultima versiune înainte de a continua lucrul pentru temă. Versiunea actuală este specificată în secțiunea Informații generale prezentă în enunțul temei. Pentru situațiile în care nu dispuneți de ultima versiune a checker-ului, rulați ''sudo uso update''. | ||
- | |||
- | **Finalizarea temei** se realizează prin rularea comenzii ''sudo uso submit''. | ||
- | |||
- | |||
- | ===== Task-uri ===== | ||
- | |||
- | <note warning>Este interzisă publicarea pe sectiunea de issue-uri a comenzilor sau pozelor care fac parte din rezolvarea parțială sau integrală a temei ori a unui task. La prima abatere studentul primește un avertisment, iar punctajul obținut pe temă îi este redus cu valoarea punctajului pe task-ul respectiv. Începând cu a doua abatere, se va anula întregul punctaj pe tema curentă, temele anterioare sau cele viitoare nefiind afectate. Abaterile rămân valabile pe tot parcursul semestrului, acestea nefiind anulate în momentul în care se publică o temă nouă. Ori de câte ori se încalcă această regulă, se va ține cont de istoricul abaterilor. Abaterile vor fi actualizate în catalog.</note> | ||
- | |||
- | ==== Task 01 (0p) ==== | ||
- | |||
- | **Mașina virtuală USO** | ||
- | |||
- | Primul pas este să rulați mașina virtuală pusă la dispoziție. Informațiile necesare pentru a rula mașina virtuală se găsesc la link-ul de mai jos. | ||
- | |||
- | <note> | ||
- | Descriere și rulare mașină virtuală: https://ocw.cs.pub.ro/courses/sde/teme/tema_ro_1#masini_virtuale_tema_1_sd_e_2019 | ||
- | </note> | ||
- | |||
- | Verificați conexiunea la internet rulând comanda ''ping'' către un site și verificati că site-ul răspunde (Hint: ''man ping'') | ||
- | |||
- | <note warning> | ||
- | Pentru rezolvarea temei aveți nevoie în continuare de conexiune la Internet din interiorul mașinii virtuale, insa rezolvarea temelor nu necesita o conexiune permanenta la Internet. Pentru orice problemă, folosiți sectiunea de issue-uri de pe [[https://github.com/alexandruradovici/sde/issues|github.com/alexandruradovici/sde/issues]]. Nu treceti mai departe până nu sunteți siguri că puteți accesa Internetul din interiorul mașinii virtuale! | ||
- | </note> | ||
- | |||
- | ==== Task 02 (0p) ==== | ||
- | |||
- | În acest moment mașina virtuală are acces la Internet, și mașina fizică (//host//) poate comunica cu mașina virtuală (//guest//). Mașina virtuală poate porni într-un timp destul de mare, de până la 120 de secunde. Mașina virtuală are facută o regulă de //port forwarding// care permite connectarea ușoara între mașina fizică și mașina virtuală. | ||
- | |||
- | ==== Task 03 (0p) ==== | ||
- | |||
- | ** SSH ** | ||
- | |||
- | Scopul acestui task este să vă conectați de pe mașina fizică (denumită în continuare //host// sau //mașina gazdă//) către mașina virtuală (denumită în continuare //guest//) folosind protocolul [[https://en.wikipedia.org/wiki/Secure_Shell|SSH]]. Din Linux/macOS puteți folosi utilitarul ''ssh'' (''man ssh''), iar de pe Windows puteți folosi programul [[https://en.wikipedia.org/wiki/PuTTY|PuTTy]], pe care trebuie să-l descărcați de la adresa [[http://www.putty.org/]], secțiunea //Download PuTTy//. Din lista de programe disponibile la adresa anterior menționată, este suficient să alegeți //putty.exe// de sub secțiunea //For Windows on Intel x86//. | ||
- | |||
- | Pentru a finaliza acest task, aveți nevoie de următoarele: | ||
- | |||
- | * Username-ul mașinii //guest// (Implicit ''student'') | ||
- | * Parola username-ului mașinii //guest// (Implicit ''student'') | ||
- | * [[https://en.wikipedia.org/wiki/IP_address|IP-ul]] (adresa) interfeței la care ne conectăm : ''localhost'' (Hint: este ''localhost'' deoarece am folosit port forwarding) | ||
- | * Port-ul interfeței la care ne conectăm : ''2222'' | ||
- | |||
- | Vă puteți conecta de pe mașina //host// către mașina //guest// cu un număr nelimitat de instanțe ale programelor mai sus menționate (''ssh'' sau //PuTTy//). Pe Linux/macOS puteți face acest lucru deschizând pe mașina //host// un nou tab/terminal în care vă veți conecta la mașina //guest// prin SSH. Rulați comanda ''man ssh'' și căutați după parametrul ''-l'' (''L'' mic). Pe Windows puteți face acest lucru deschizând o nouă instanță de //PuTTy// și introducând ca IP ''localhost'' și ca port ''2222''. | ||
- | |||
- | ==== Task 04 (10p) ==== | ||
- | |||
- | ** Checkerul ** | ||
- | |||
- | Tema 1 Sd'E este verificata automat cu ajutorul unui checker, instalat pe mașina virtuală, sub forma executabilului ''uso''. Checkerul trebuie rulat într-un terminal și are nevoie de drepturi privilegiate (''sudo''). Citiți modul în care puteți folosi utilitarul ''uso'' conform [[uso:teme:instructiuni-checker|instrucțiunile de utilizare]]. | ||
- | |||
- | Pentru această temă trebuie să vă înregistrați username-ul și parola de pe [[http://fils.curs.pub.ro]] folosind utilitarul ''uso'' și urmand instructiunile din terminal (care vă vor conduce la [[http://temeuso.cs.pub.ro]]). | ||
- | |||
- | <note tip> | ||
- | |||
- | ''student@vm-uso ~ $ sudo uso'' | ||
- | </note> | ||
- | |||
- | <note warning> | ||
- | |||
- | ATENȚIE!!! Toate tastele introduse de la tastatură in mașina virtuală sunt înregistrate. Evitați să introduceți in aceasta orice fel de parole sau date sensibile/personale. | ||
- | </note> | ||
- | |||
- | După înregistrare, începeți lucrul la //Tema 1//. | ||
- | |||
- | <note tip> | ||
- | |||
- | ''student@vm-uso ~ $ sudo uso start 1'' | ||
- | </note> | ||
- | |||
- | Pentru a verifica dacă tema rulează corect, rulați checkerul. | ||
- | |||
- | <note tip> | ||
- | |||
- | ''student@vm-uso ~ $ sudo uso check'' | ||
- | </note> | ||
- | |||
- | Verificati dupa ca primele 4 task-uri sunt ''OK'' (ar trebui sa fie). | ||
- | |||
- | ==== Task 05 (35p) ==== | ||
- | |||
- | **[5p]** Clonați în directorul ''/home/student'' repository-ul disponibil la adresa ''https://github.com/alexandruradovici/sde''. Directorul creat după clonare trebuie să aibă numele ''sde''. | ||
- | |||
- | **[25p]** Adaugați în directorul ''sde'' următoarea structură de directoare și fișiere: | ||
- | <code bash> | ||
- | Halloween | ||
- | ├── The Nun/ | ||
- | │ ├── Monastery/ | ||
- | │ │ ├── Finit hic Deo | ||
- | │ │ ├── Crosses/ | ||
- | │ │ ├── Cemetery | ||
- | │ ├── Castle of the Dukes | ||
- | │ └── Evil $pirits | ||
- | ├── Anabelle/ | ||
- | │ ├── Motifs/ | ||
- | │ │ ├── Well.c | ||
- | │ │ ├── Scarecrow.c | ||
- | │ │ └── Staircase.c | ||
- | │ ├── Ghosts/ | ||
- | │ │ └── The Doll | ||
- | │ └── Favourite game/ | ||
- | │ └── Hide & Seek | ||
- | └── Hotel Transylvania/ | ||
- | ├── Holiday/ | ||
- | │ ├── Cruise: 'Legacy' | ||
- | │ ├── Island/ | ||
- | │ └── City of Atlantis | ||
- | ├── Instrument of destruction/ | ||
- | │ ├── Note_sheet.c | ||
- | │ └── Kraken | ||
- | └── Monsters/ | ||
- | ├── Skeleton | ||
- | ├── Mummy | ||
- | └── Werewolf | ||
- | |||
- | </code> | ||
- | |||
- | <note> | ||
- | Directoarele au după nume caracterul ''/'' (slash). | ||
- | </note> | ||
- | <note> | ||
- | Punctajul se ofera de la folderele radacina catre frunze. Asta inseamna ca s-ar putea sa faceti anumite foldere sau fisiere care sa fie in structura si checkerul sa nu le puncteze decat daca faceti intr-o anumita ordine structura. Nu este nici o problema. Atata timp cat intreaga structura va fi creata, puteti sa faceti fisierele sau folderele in orice ordine doriti si veti primi punctaj maxim. | ||
- | </note> | ||
- | |||
- | <note warning> | ||
- | După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ''~/sde/Halloween/''. Acesta trebuie să râmână în această formă pentru verificările ulterioare ale checkerului. Veți pierde punctele obținute pentru acest task dacă faceți modificări și va fi nevoie de refacerea taskului. | ||
- | </note> | ||
- | |||
- | |||
- | |||
- | ==== Task 06 (12p) ==== | ||
- | |||
- | **[12p]** Aflându-vă în directorul ''sde'', folosiți **o singură comandă** pentru fiecare dintre cerințele următoare: | ||
- | - Faceti o copie a folderului ''Halloween'' din folderul ''sde'' care sa se numeasca ''Copie'' si sa se afle tot in folderul ''sde'' (in folderul ''sde'' vor exista acum ambele foldere: ''Halloween'' si ''Copie''). | ||
- | - In folderul ''Copie'': Mutați fisierul ''Kraken'' din ''Instrument of destruction'' în ''Monsters''. | ||
- | - In folderul ''Copie'': Redenumiți ''Hide & Seek'' în ''Hide and Seek''. | ||
- | - In folderul ''Copie'': Redenumiți ''Evil $pirits'' în ''Evil Spirits''. | ||
- | - In folderul ''Copie'': Adaugați fisierul ''Hunted.c'' în directorul ''Ghosts''. | ||
- | |||
- | <note important> | ||
- | |||
- | Cerințele de mai sus trebuie rezolvate în ordine. | ||
- | </note> | ||
- | |||
- | <note warning> | ||
- | După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ''~/sde/Copie/''. Acesta trebuie să râmână în această formă pentru verificările ulterioare ale checkerului. Veți pierde punctele obținute pentru acest task dacă faceți modificări și va fi nevoie de refacerea taskului. | ||
- | </note> | ||
- | |||
- | |||
- | |||
- | ==== Task 07 (28p) ==== | ||
- | |||
- | <note warning> | ||
- | Pentru acest task aveți nevoie de fișierul ''boo.c'' aflat la adresa: | ||
- | |||
- | https://raw.githubusercontent.com/alexandruradovici/sde/master/tema1/boo.c | ||
- | |||
- | Hint: ''man wget'' | ||
- | |||
- | </note> | ||
- | |||
- | **[8p]** Creați directorul ''task4'' în directorul ''uso'', și descărcați în acesta fișierul ''boo.c''. | ||
- | |||
- | <note important> | ||
- | Veti avea nevoie de fisierele ''light.o'' ''sound.h'' si ''sound.c'', ce pot fi descarcate de la adresele \\ | ||
- | ''https://github.com/alexandruradovici/sde/raw/master/tema1/light.o'' \\ | ||
- | ''https://raw.githubusercontent.com/alexandruradovici/sde/master/tema1/sound.c'' | ||
- | ''https://raw.githubusercontent.com/alexandruradovici/sde/master/tema1/sound.h'' \\ | ||
- | </note> | ||
- | <note warning> | ||
- | Pentru cei cu masini virtuale pe **64 de biti**, fisierul ''light.o'' poate fi descarcat de la adresa \\ | ||
- | ''https://github.com/alexandruradovici/sde/raw/master/tema1/64/light.o'' \\ | ||
- | </note> | ||
- | |||
- | |||
- | **[10p]** Generati in directorul ''task7'' executabilul ''exec'', folosind atât fișierul obiect ''light.o'', cât și fisierul obiect ''sound.o'' obținut în urma compilării sursei ''sound.c'' implementată anterior. In final trebuie doar ca in directorul ''task7'' să fie generat fișierul executabil ''exec''. | ||
- | |||
- | **[5p]** Folositi comenzi de compilare care să creeze toate fisierele intermediare (denumite ''boo.o'', ''boo.s'') in urma compilarii fisierului sursa ''boo.c''. Aceste 2 fisiere trebuie sa se afle in final tot in directorul ''task7''. | ||
- | |||
- | |||
- | |||
- | ==== Task 08 (0p) === | ||
- | |||
- | Finalizați tema si asigurați-vă că ați submis tema cu ''sudo uso submit''. | ||
- | |||
- | <note tip> | ||
- | |||
- | ''student@usohomework ~ $ sudo uso submit'' | ||
- | </note> | ||
- | |||
- | |||
- | |||
- | ==== Avertisment === | ||
- | <note warning> | ||
- | Este interzis studenților să modifice parametrii de rulare ai mașinii virtuale. Orice tentativă malițioasă de modificare a fișierelor și executabilelor care fac mașina virtuală sa ruleze in parametrii optimi (fișierele si folderele ce nu țin de enunțul temei curente), ne conferă dreptul de a oferi 0 puncte pe temele respectivului student. | ||
- | </note> |