This shows you the differences between two versions of the page.
uso-ac:teme:tema-1 [2016/10/27 15:19] acaciulescu [Informații generale] |
uso-ac:teme:tema-1 [2017/10/21 17:14] (current) tudor_cosmin.visan |
||
---|---|---|---|
Line 12: | Line 12: | ||
Î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 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ă__. | Î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 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. | + | 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. |
</note> | </note> | ||
<note important> | <note important> | ||
- | Înainte și în timpul realizării temei, vă rugăm să parcurgeți [[uso-ac:regulament#realizarea_temelor|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 [[http://acs.curs.pub.ro/|acs.curs.pub.ro]] pentru întrebări și neclarități legate de teme. | + | Înainte și în timpul realizării temei, vă rugăm să parcurgeți [[uso:regulament#realizarea_temelor|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 [[http://cs.curs.pub.ro/|cs.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 [[uso-ac:regulament#recomandari_de_comunicare_electronica|recomandările de comunicare electronică]]. | + | În timpul realizării temei, când vă loviți de probleme și aveți nevoie de suportul echipei de USO, 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> | </note> | ||
Line 24: | Line 24: | ||
<note important> | <note important> | ||
- | Deadline: **1 Noiembrie, ora 23:55**\\ | + | Deadline: **27 Octombrie 2017, ora 23:55**\\ |
Timp de lucru: **7 zile**\\ | Timp de lucru: **7 zile**\\ | ||
- | Punctaj: **0.6 puncte** din nota finală\\ | + | Punctaj: **0.8 puncte** din nota finală\\ |
- | Formular pentru trimitere temă: https://goo.gl/UlkYBw\\ | + | Formular pentru trimitere temă: https://goo.gl/oRrx2P\\ |
</note> | </note> | ||
- | <note> | ||
- | Actualizări enunț:\\ | ||
- | |||
- | * S-a actualizat cerinta task-ului 5 | ||
- | </note> | ||
<note> | <note> | ||
Line 45: | Line 40: | ||
<note> | <note> | ||
Actualizări checker:\\ | Actualizări checker:\\ | ||
- | Versiunea curentă: <color red>**versiunea 3**</color> | + | * **Actualizat checker la versiunea 3 ** |
- | + | Adaugat test pentru a verifica tipul arhivei. | |
- | * 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++ | + | |
</note> | </note> | ||
<note tip> | <note tip> | ||
- | 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. | 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. | ||
Line 67: | Line 58: | ||
* Vim | * Vim | ||
- | ===== Testare ===== | + | ===== Testarea și finalizarea temei ===== |
- | + | ||
- | {{section>uso-ac:teme:testare&noheader&nofooter}} | + | |
+ | {{section>uso:teme:testare&noheader&nofooter}} | ||
===== Task-uri ===== | ===== Task-uri ===== | ||
Line 77: | Line 67: | ||
==== Task 01 (15p) ==== | ==== Task 01 (15p) ==== | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | ** ATENTIE! ** | ||
+ | Dupa prima rulare a comenzii sudo uso check, trebuie sa dati comanda ''sudo reboot''! | ||
+ | |||
+ | </note> | ||
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''. | 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''. | ||
Line 82: | Line 79: | ||
Adaugați în directorul ''uso'' următoarea structură de directoare și fișiere: | Adaugați în directorul ''uso'' următoarea structură de directoare și fișiere: | ||
<code bash> | <code bash> | ||
- | TW Warhammer/ | + | Star Wars |
- | ├── Dwarfs/ | + | ├── First Galactic Empire/ |
- | │ ├── Baradun the Kin Lord/ | + | │ ├── Deathstar/ |
- | │ └── The Slayer King Ungrim Ironfist/ | + | │ └── TIE Fighter/ |
- | └── Greenskins/ | + | └── Rebel Alliance/ |
- | ├── Azhag The Slaughterer/ | + | ├── Millenium Falcon/ |
- | ├── Grimgor Ironhide/ | + | │ ├── chewie.c |
- | └── High King Thorgrim Grudgebearer/ | + | │ └── han.c |
- | └── The Great Book of Grudges/ | + | ├── X-Wing/ |
- | └── book.c | + | │ └── luke.c |
+ | └── Y-Wing/ | ||
</code> | </code> | ||
Line 97: | Line 96: | ||
Directoarele au după nume caracterul ''/'' (slash). | Directoarele au după nume caracterul ''/'' (slash). | ||
</note> | </note> | ||
- | |||
- | Adăugați în //git// toate directoarele și fișierele create și efectuați un commit cu mesajul ''initial commit'' (Hint: [[https://try.github.io|try.github.io]] și [[http://git-scm.com/doc|git-scm.com/doc]]) | ||
<note> | <note> | ||
- | Î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'') | + | Adaugati directorul Star Wars si toate fisierele continute intr-o arhiva cu numele archive.tar.gz, de tip gzip compressed care sa se afle in directorul ''uso''. |
+ | (Hint: man tar) | ||
</note> | </note> | ||
+ | |||
+ | |||
+ | |||
+ | |||
==== Task 02 (15p) ==== | ==== Task 02 (15p) ==== | ||
Aflându-vă în directorul ''uso'', folosiți **o singură comandă** pentru fiecare dintre cerințele următoare: | Aflându-vă în directorul ''uso'', folosiți **o singură comandă** pentru fiecare dintre cerințele următoare: | ||
- | - Mutați directorul ''High King Thorgrim Grudgebearer'' în ''Dwarfs''. | + | - Mutați fisierul ''luke.c'' din ''X-Wing'' în ''Millenium Falcon''. |
- | - Redenumiți ''book.c'' în ''book-of-grudges.c''. | + | - Redenumiți ''chewie.c'' în ''chewbacca.c''. |
- | - Redenumiți ''Baradun the Kin Lord'' în ''Baradin the Kin Lord''. | + | - Redenumiți ''TIE Fighter '' în ''TIE Advanced''. |
- | Adăugați toate modificarile în git și efectuați un commit cu mesajul ''Settle Grudge''. | ||
<note important> | <note important> | ||
+ | |||
Cerințele de mai sus trebuie rezolvate în ordine. | Cerințele de mai sus trebuie rezolvate în ordine. | ||
</note> | </note> | ||
<note warning> | <note warning> | ||
- | 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. | + | După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ''~/uso/Star Wars/''. 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> | </note> | ||
Line 121: | Line 123: | ||
<note warning> | <note warning> | ||
- | Pentru acest task aveți nevoie de fișierul obiect ''thorgrim.o'' aflat la adresa | + | Pentru acest task aveți nevoie de fișierul obiect ''force.c'' aflat la adresa: |
- | https://github.com/systems-cs-pub-ro/uso/blob/master/tema1/thorgrim/thorgrim.o?raw=true | + | |
+ | https://raw.githubusercontent.com/systems-cs-pub-ro/uso/master/tema1/force.c | ||
+ | |||
+ | Hint: ''man wget'' | ||
</note> | </note> | ||
+ | Creați directorul ''task3'' în directorul ''uso'', și descărcați în acesta fișierul ''force.c''. | ||
- | 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. | + | Folosind o singură comanda, compilați fisierul sursă ''force.c'' în executabilul ''force'' și păstrați toate fisierele intermediare (''force.i'', ''force.o'' si ''force.s''). |
+ | |||
+ | Păstrați argumentul/argumentele comenzii într-un fișier separat, numit ''options.txt''. | ||
+ | <note> | ||
+ | **NU** dați argumentul/argumentele direct în linia de comanda (hint @). | ||
+ | </note> | ||
- | 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) ==== | ==== 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: | + | <note important> |
- | <note> | + | Veti avea nevoie de fisierele ''light.o'' ''sound.h'' si ''sound.c'', ce pot fi descarcate de la adresele \\ |
- | Thorgrim before battle: There are grudges to settle and new entries in the 'Book of Grudges' to write! | + | ''https://github.com/systems-cs-pub-ro/uso/raw/master/tema1/light.o'' \\ |
+ | ''https://raw.githubusercontent.com/systems-cs-pub-ro/uso/master/tema1/sound.c'' | ||
+ | ''https://raw.githubusercontent.com/systems-cs-pub-ro/uso/master/tema1/sound.h'' \\ | ||
</note> | </note> | ||
- | <note important>Textul se află pe **o singură linie**.</note> | ||
- | 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. | + | Creați un fișier Makefile cu numele ''Makefile'' in directorul ''task3'' care generează executabilul ''fight'', 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. La primirea oricăreia dintre comenzile ''make'' sau ''make build'' trebuie să se genereze fișierul executabil ''fight''. |
+ | Adăugați de asemenea o regulă numită ''optim'' care să genereze un executabil optimizat la nivelul O2 (Hint ''man gcc'' ). | ||
+ | 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. | ||
+ | <note> | ||
+ | Programul trebuie sa fie recompilat doar dacă fisierele date sunt modificate! | ||
+ | </note> | ||
<note> | <note> | ||
Acest task se punctează **doar** dacă se folosesc, oriunde este posibil, ''automatic variables''. | Acest task se punctează **doar** dacă se folosesc, oriunde este posibil, ''automatic variables''. | ||
Line 149: | Line 165: | ||
==== Task 05 (25p) ==== | ==== 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: | + | După rularea ''sudo uso check'' veți găsi în directorul ''~/uso'' următoarele fișiere: ''timeline.txt'' și ''edit_timeline.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_timeline.txt'' astfel încât să respecte următoarele criterii: |
- Ș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. | - Ș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. | ||
- | - Înlocuiți apariția 100 a cuvântului ''the'' cu ''the one and only'' (exact match ''the''). | + | - Înlocuiți apariția 74 a cuvântului ''is '' cu ''is sadly'' (exact match ''is''). |
- | - Înlocuiți apariția 10 a cuvântului ''Dwarfs'' cu ''Dwarfs(Tough Little Bastards)''. | + | - Înlocuiți apariția 20 a cuvântului ''Sith'' cu ''Sith(for now)''. |
- | - Modificați toate aparițiile cuvântului 'war' în ''warPeace''. | + | - Modificați toate aparițiile cuvântului ''BBY'' în ''BeforeBY''. |
- | - 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. | + | - 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. |
- | <note warning> | + | <note important> |
- | Pentru a primi punctajul trebuie să urmați task-urile în ordine! | + | Pentru a primi punctaj trebuie sa urmati task-urile in ordine! |
</note> | </note> | ||
- | |||
==== Task obligatoriu pentru toate temele (0p) === | ==== 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 [[#informatii_generale|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). | Asigurați-vă că ați submis tema și ați încărcat codul aferent submisiei în formularul din secțiunea de [[#informatii_generale|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). |