Tema 1 - Utilizare de Linux

În urma feedback-ului, vă recomandăm următoarele:

Studiați secțiunea de Cunoștințe evaluate și suportul agregat necesar temei.

Daca aveti intrebari sau nelamuriri, folosiți issue-urile pe 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 imgur sau 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.

Folosiți cu încredere sectiunea de issue-uri de pe github.com/upb-fils/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 întrebări frecvente întâlnite în cadrul temelor.

Informații generale

Deoarece exista deja resurse la materia USO (aflata tot aici pe 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.

Deadline: 01 Martie, ora 23:55
Timp de lucru: 12 zile

Actualizări enunț:

  • Nu există actualizări

Actualizări checker:
Versiunea curentă: versiunea 1.0.0

  • Nu există actualizări

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.

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

Citiţi şi secţiunea despre maşini virtuale - Machine Virtuelle

Username-ul si parola sunt cele de pe fils.curs.pub.ro

În funcţie de sistemul de operare pe care îl aveţi instalat pe calculator descărcaţi maşina virtuală aferentă.

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.

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:

Testare

Instrucțiuni de utilizare a checkerului uso

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

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.

Task 01 (0p)

Mașina virtuală Sd'E

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.

Verificați conexiunea la internet rulând comanda ping către un site și verificati că site-ul răspunde (Hint: man ping)

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 github.com/upb-fils/sde/issues. Nu treceti mai departe până nu sunteți siguri că puteți accesa Internetul din interiorul mașinii virtuale!

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 SSH. Din Linux/macOS puteți folosi utilitarul ssh (man ssh), iar de pe Windows puteți folosi programul 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)
  • 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 (25p)

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 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).

student@usohomework ~ $ sudo uso

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.

După înregistrare, începeți lucrul la Tema 1.

student@usohomework ~ $ sudo uso start 1

Pentru a verifica dacă tema rulează corect, rulați checkerul.

student@usohomework ~ $ sudo uso check

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/upb-fils/sde. Directorul creat după clonare trebuie să aibă numele sde.

[25p] Adaugați în directorul sde următoarea structură de directoare și fișiere:

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

Directoarele au după nume caracterul / (slash).

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.

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.

Task 06 (12p)

[12p] Aflându-vă în directorul sde, folosiți o singură comandă pentru fiecare dintre cerințele următoare:

  1. 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).
  2. In folderul Copie: Mutați fisierul Kraken din Instrument of destruction în Monsters.
  3. In folderul Copie: Redenumiți Hide & Seek în Hide and Seek.
  4. In folderul Copie: Redenumiți Evil $pirits în Evil Spirits.
  5. In folderul Copie: Adaugați fisierul Hunted.c în directorul Ghosts.

Cerințele de mai sus trebuie rezolvate în ordine.

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.

Task 07 (28p)

Pentru acest task aveți nevoie de fișierul boo.c aflat la adresa:

https://raw.githubusercontent.com/upb-fils/sde/master/devoir/devoir1/boo.c

Hint: man wget

[8p] Creați directorul task7 în directorul sde, și descărcați în acesta fișierul boo.c.

Pentru cei cu masini virtuale pe 64 de biti, fisierul light.o poate fi descarcat de la adresa
https://github.com/upb-fils/sde/raw/master/devoir/devoir1/64/light.o

[15p] 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.

student@usohomework ~ $ sudo uso submit

Avertisment

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.

Instrucțiuni de folosire a checkerului

Actualizări:

  • 12 Octombrie 2018, 23:55 - Publicare

Descriere

Mașina virtuală pusă la dispoziție oferă toate setările necesare pentru efectuarea temei precum și setări necesare pentru colectarea de statistici privind dificultatea temei (pentru echilibrarea dinamică a acestora).

Orice folosire a utilitarului uso se va face doar prin intermediul utilizatorului student, însă cu drepturi privilegiate (folosind sudo în fața comenzii). Singura excepție este valabilă pentru comanda uso version, care nu necesită folosirea drepturilor privilegiate.

Executabilul uso va fi folosit pentru a obține checkerul fiecărei teme, pentru a verifica temele și pentru a submite codul final în momentul terminării acestora.

Sintaxă

Sintaxa folosită de checker este uso [OPTION]…, unde [OPTION]… reprezintă o listă de parametri opţionali şi poate avea una dintre valorile de mai jos. În cazul în care nu s-a specificat niciun parametru OPTION, acțiunea implicită este de a rula parametrul check.

  • version : Afișează versiunea curentă a executabilului uso.
  • check : Verifică tema curentă în întregime și afișează punctajele aferente fiecărui task
  • check N : Unde N reprezintă numărul task-ului din enunțul
  • update : Actualizează atât checkerul temei curente cât și executabilul uso. Recomandarea este să efectuați update de fiecare dată când se anunță pe forum faptul că a fost actualizat checker-ul.
  • start N : Descarcă executabilele necesare funcționării unei noi teme. Poate restaura o temă la configurația inițială, doar dacă este specificat în cerința temei.
    • O temă este formată din mai multe taskuri.
    • Nu trebuie rulat uso start înaintea fiecărui task.
    • Nu puteți începe să lucrați la o temă nouă fără a rula uso start în prealabil.
  • submit : Finalizează tema.

Exceptând parametrii version și check, toate celelalte necesită prezența unei conexiuni de Internet.

Finalizarea temei cu ajutorul comenzii uso submit este obligatorie!

Chiar și după ce ați încărcat codul, NU modificați fișierele corespunzătoare temei! Dacă vor exista probleme în corectarea temei, iar fișierele au fost modificate după submiterea codului, contestațiile NU vor mai fi luate în considerare. Puteți în schimb să lucrați pe mașina virtuală fără nicio problemă, atâta timp cât nu sunt alterate fișierele ori condițiile de funcționare a oricărui task din tema precedentă.

Pași

Rețineți că orice folosire a utilitarului uso se va face doar prin intermediul utilizatorului student, însă cu drepturi privilegiate (folosind sudo în fața comenzii). Singura excepție este valabilă pentru comanda uso version, care nu necesită folosirea drepturilor privilegiate.

În acest moment considerăm că mașina virtuală este înregistrată corespunzător cu contul de utilizator corespunzător fiecărui student. Dacă această condiție este îndeplinită cu succes, pașii uzuali de lucru pentru o temă se regăsesc mai jos.

  1. se pornește tema cu uso start N unde N este tema curenta
  2. se verifică tema cu uso check
    1. pentru verificarea unui singur task putem folosi comanda uso check N, unde N reprezinta numărul task-ului
    2. exemplu: uso check 4
  3. dacă rezultatele de la pasul anterior nu sunt ok, se repetă pasul 2 și 3
    1. altfel, se finalizează tema folosind uso submit.
  4. se păstrează fișierele aferente temei - nu se șterg fișiere (pentru o eventuală contestație, dacă va fi necesar)
  5. dacă după trimiterea temei se fac modificări asupra exercițiilor, se repetă pasul 2, 3, 4, 5 și 6
    1. acest lucru este permis doar dacă nu a fost depășit deadline-ul temei
  6. oricând pe parcursul ciclului de mai sus, se poate rula uso update.

Puteți submite tema (pasul 3.a) ori de câte ori doriți (în cazul în care faceți modificări asupra temei), însă doar înainte de de deadline-ul temei. Se va lua în considerara doar ultimul cod submis înainte de deadline. Orice submisie după deadline nu va fi luată în considerare.

sde/teme/tema_ro_1.txt · Last modified: 2020/02/18 17:47 by razvan.serban
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0