This is an old revision of the document!


Tema 1

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

Studiați secțiunea de Cunoștințe evaluate și suportul agregat necesar temei. Aceasta este valabilă la orice temă și se recomandă parcurgea sa.

Folosiți thread-urile de discuții existente în cadrul forumului, fără a crea altele, atât în forumul pentru Discuții Generale cât și în forumul temei. În consecință, thread-urile (subiectele de discuții) nou create vor fi șterse deoarece informația utilă va fi greu de urmărit.

Căutați pe forum 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 fiecare thread al forumului aveți informații despre cum puteți căuta în forum.

Î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 pe forum doar link către screenshot. Dorim să păstrăm o parcurgere ușoară a forumului, din acest motiv, orice poză inserată în răspunsuri, va fi ștearsă.

Urmăriți atât forumul cât și modificările aduse enunțului/checker-ului, modificări ce sunt publicate și explicate în paragrafele de mai jos.

Înainte și în timpul realizării temei, vă rugăm să parcurgeți indicațiile legate de realizarea temelor, încluzând ce înseamnă o temă copiată și cum penalizăm temele copiate. Folosiți cu încredere forumurile de pe acs.curs.pub.ro 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 USO, să țineți cont, va rugăm, de recomandările de comunicare electronică.

Informații generale

Deadline: 1 Noiembrie, ora 23:55
Timp de lucru: 7 zile
Punctaj: 0.6 puncte din nota finală
Formular pentru trimitere temă: https://goo.gl/UlkYBw

Actualizări enunț:

  • S-a actualizat cerinta task-ului 5

Actualizări utilitar uso:
Versiunea curentă: v16 - “Gold Blackbird”

  • Nu există actualizări

Actualizări checker:
Versiunea curentă: versiunea 4

  • S-a reparat un bug care putea cauza interpretarea gresita a task-ului 5 cand se modifica aparitia 100 a cuvantului the
  • Task05 user_experience++
  • Improved checks for Task05

Toți studenții care răspund la întrebările colegilor de pe forum vor fi recompensați cu până la 10 karma points în WoUSO pentru fiecare temă în funcție de gradul de implicare.

Vă încurajăm ca atunci când găsiți soluția la o problemă pe care ați postat-o anterior pe forum 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 forum 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 recomandările de comunicare electronică.

Cunoștințe evaluate

  • Navigarea in sistemul de fisiere
  • Folosirea utilitarului git
  • Compilarea programelor
  • Crearea de Makefile
  • Vim

Testare

Instrucțiuni de utilizare a checkerului uso

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 mașina virtuală.

Testarea temei se va face doar pe mașina virtulă (aici) 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. La fiecare temă nouă, pentru a folosi utilitarul uso, primul pas este să porniți tema folosind comanda sudo uso start. În caz contrar, nu veți avea actualizat checker-ul pentru tema curentă.

Verificați versiunea utilitarului uso cât și a checker-ului, afișată la rularea comenzii sudo uso start sau sudo uso check, pe prima linie a output-ului. 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 utilitarului uso sau checker-ului, rulați sudo uso update.

Finalizarea temei se realizează prin rularea comenzii sudo uso submit și încărcarea codului returnat de această comandă (32 de caractere alfanumerice), în formularul din secțiunea Informații generale. Pentru a evita transcrierea eronată a codului returnat de checker, recomandăm copierea acestuia din interfața mașinii host conectată prin SSH către mașina guest după cum urmează:

  • În cazul în care folosiți Linux sau macOS, copierea codului se realizează din terminal selectând codul emis și apăsând combinația de taste CTRL+SHIFT+C (copy)
  • În cazul in care folosiți Windows, copierea se realizează din PuTTy selectând codul codul emis (nu este nevoie să folosiți CTRL+SHIFT+C, codul fiind automat copiat la selectare).
  • După ce a fost copiat în clipboard codul emis de checker, il puteți lipi (paste) în formularul din secțiunea Informații generale

Task-uri

Este interzisă publicarea pe forum 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 (15p)

Clonați în directorul /home/student repository-ul disponibil la adresa https://github.com/systems-cs-pub-ro/uso. Directorul creat după clonare trebuie să aibă numele uso.

Adaugați în directorul uso următoarea structură de directoare și fișiere:

TW Warhammer/
├── Dwarfs/
│   ├── Baradun the Kin Lord/
│   └── The Slayer King Ungrim Ironfist/
└── Greenskins/
    ├── Azhag The Slaughterer/
    ├── Grimgor Ironhide/
    └── High King Thorgrim Grudgebearer/
        └── The Great Book of Grudges/
            └── book.c

Directoarele au după nume caracterul / (slash).

Adăugați în git toate directoarele și fișierele create și efectuați un commit cu mesajul initial commit (Hint: try.github.io și git-scm.com/doc)

Întreaga ierarhie creată să facă parte din commit! Aveți grijă la adăugarea de directoare! (Hint: https://git.wiki.kernel.org/index.php/GitFaq, empty directories)

Task 02 (15p)

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

  1. Mutați directorul High King Thorgrim Grudgebearer în Dwarfs.
  2. Redenumiți book.c în book-of-grudges.c.
  3. Redenumiți Baradun the Kin Lord în Baradin the Kin Lord.

Adăugați toate modificarile în git și efectuați un commit cu mesajul Settle Grudge.

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

După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ~/uso/TW Warhammer/. 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 03 (20p)

Pentru acest task aveți nevoie de fișierul obiect thorgrim.o aflat la adresa https://github.com/systems-cs-pub-ro/uso/blob/master/tema1/thorgrim/thorgrim.o?raw=true

Creați directorul ~/uso/task3/ și descărcați fișierul obiect thorgrim.o (Hint: man wget) în directorul creat anterior. Fișierul obiect thorgrim.o conține un apel al funcției intro_speech() de tip void. Funcția nu a fost implementată în fisierul obiect descărcat.

Fără a modifica fișierul obiect thorgrim.o, trebuie să implementați funcția void intro_speech() într-un fișier sursă quest.c. Funcția trebuie să afișeze textul Thorgrim before battle:

Fișierul quest.c se va compila în fișierul obiect quest.o și apoi se va genera executabilul battle folosind atât fisierul obiect theorgrim.o, cât si fișierul obiect quest.o. Pentru a vi se puncta acest task, trebuie ca fisierele thorgrim.o (nemodificat) , quest.c, quest.o și battle să existe în directorul ~/uso/task3.

Task 04 (25p)

Creați un fișier Makefile cu numele Makefile care generează executabilul battle, folosind atât fișierul obiect thorgrim.o, cât și fisierul obiect quest.o obținut în urma compilării sursei .c implementată anterior. La primirea oricăreia dintre comenzile make sau make build trebuie să se genereze fișierul executabil battle, iar în momentul rulării acestuia trebuie să se afișeze textul:

Thorgrim before battle: There are grudges to settle and new entries in the 'Book of Grudges' to write!

Textul se află pe o singură linie.

Adăugați o regulă în Makefile numită run care recompilează întreg programul, dacă este cazul, iar apoi îl rulează. De asemenea, adăugați și o regulă clean care șterge fișierele obiect create de voi și executabilul creat.

Acest task se punctează doar dacă se folosesc, oriunde este posibil, automatic variables.

Hint: http://lmgtfy.com/?q=make+automatic+variables

Task 05 (25p)

După rularea sudo uso check veți găsi în directorul ~/uso următoarele fișiere: origin-of-the-world.txt și edit_origin-of-the-world.txt. Scopul acestui exercițiu este de a vă familiariza cu editorul de text vim. Va trebui să editați în vim fișierul edit_origin-of-the-world.txt astfel încât să respecte următoarele criterii:

  1. Ștergeți liniile 4, 24, 42. Faceți acești pași în ordine, fiind vorba despre linia 24 de după prima ștergere, apoi linia 42 după cele două ștergeri.
  2. Înlocuiți apariția 100 a cuvântului the cu the one and only (exact match the).
  3. Înlocuiți apariția 10 a cuvântului Dwarfs cu Dwarfs(Tough Little Bastards).
  4. Modificați toate aparițiile cuvântului 'war' în warPeace.
  5. Aflați de câte ori apare cuvântul king în text, notați numărul de apariții în fișierul /home/student/uso/info_text, pe prima linie și înlocuiți cu MVP în text.

Pentru a primi punctajul trebuie să urmați task-urile în ordine!

Task obligatoriu pentru toate temele (0p)

Asigurați-vă că ați submis tema și ați încărcat codul aferent submisiei în formularul din secțiunea de Informații generale. Acest lucru este necesar ori de câte ori modificați tema și o submiteți din nou, până la termenul limită. În caz contrar, punctajul aferent temei va fi nul (0 puncte).

uso-ac/teme/tema-1.1477595093.txt.gz · Last modified: 2016/10/27 22:04 by acaciulescu
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