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 curs.upb.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, parcurgeți și lista de întrebări frecvente întâlnite în cadrul temelor. Să țineți cont, va rugăm, și de recomandările de comunicare electronică.

Dacă utilitarul uso vă afișează eroarea: “Nu ai conexiune la internet” urmați pașii de mai jos:

  1. Verificați dacă aveți conexiune la Internet.
    1. Rulați comanda ping 8.8.8.8.
    2. Dacă vă apare eroarea: “connect: Network is unreachable” nu aveți conexiune la Internet.
      1. Rulați comanda sudo dhclient <nume_interfață>. Numele interfeței default este ens33. Pentru a inspecta numele interfeței rulați ip link show
    3. Dacă nu primiți eroarea de mai sus, mergeți la pasul 2.
  2. Verificați dacă merge DNS-ul.
    1. rulați comanda ping google.com
      1. Dacă primiți o eroare, editați fișierul /etc/resolv.conf. Veți avea nevoie de sudo
      2. Adăugați la finalul fișierului următoarele 2 linii: nameserver 8.8.8.8 și nameserver 1.1.1.1
      3. Salvați modificările

Informații generale

Deadline: 11 Noiembrie 2023 ora 23:55
Timp de lucru: 21 zile
Punctaj: 0.8 puncte din nota finală

Actualizări enunț:

  • Nu există actualizări

Actualizări checker:
Versiunea curentă: versiunea 1.0.0

  • Ultima actualizare: 26 octombrie 2023
  • Rulati sudo uso update

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 în sistemul de fișiere
  • Interacțiunea cu fișiere în linia de comandă
  • Interacțiunea cu editoarele de text
  • Redirectări
  • Arhive
  • Variabile de mediu

Testarea și finalizarea temei

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. La fiecare temă nouă, pentru a folosi utilitarul uso, primul pas este să porniți tema folosind comanda sudo uso start <numar_tema>. Î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 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 (26p)

Andrei și Maria sunt studenți la Facultatea de Automatica și Calculatoare. Prima provocare a acestora este să își organizeze sistemul de fișiere astfel încât să se poată descurca la fiecare materie în parte. În cele ce urmează, voi trebuie să îi ajutați cu următoarele aspecte:

[26p] Pentru început, Andrei și Maria își doresc să aibă directoarele și fișierele bine organizate pentru a putea naviga foarte ușor între materialele fiecărei materii. În acest sens, voi trebuie să realizați următoarea structură în /home/student:

Facultatea de Automatica si Calculatoare/
|----- Anul 1/
|       |----- Utilizarea sistemelor de operare/
|       |      |-----Sisteme de fisiere
|       |      |-----Instalarea si utilizarea aplicatiilor
|       |      |-----Investigare > securitatea sistemului  
|       |----- Programarea calculatoarelor/
|       |      |-----Instructiunile limbajului C/
|       |      |-----Alocarea dinamica a memoriei.c/
|       |      |      |----- Vectori.c
|       |      |      |----- Matrice.c
|       |      |-----Parametrii liniei de comanda`/
|       |      |      |----- Preprocesorul
|       |      |      |----- Vectori.cpp
|       |      |      |----- Blocuri.c
|       |----- Proiectare logica/
|              |-----Logica combinationala/
|              |-----$Logica secventiala$/
|----- Anul 2/
|        |----- Programare orientata pe obiecte/
|        |       |----- | Constructori | si referinte
|        |       |----- Mostenire\/
|        |----- IOCLA/
|        |----- Teoria sistemelor/
|----- Anul 3/
|----- Anul 4/

Directoarele au după nume caracterul / (slash).

Punctajul se ofera de la folderele rădăcină către frunze. Asta înseamnă că s-ar putea să faceți anumite foldere sau fișiere care să fie în structură și checkerul să nu le puncteze decât dacă faceți într-o anumită ordine structura. Nu este nicio problemă. Atâta timp cât întreaga structură va fi creata, puteți să faceți fișierele sau folderele în orice ordine doriți și veți primi punctaj maxim.

Task 02 (12p)

Pentru a nu lucra direct în ierarhia de fișiere menționată anterior, Andrei și Maria preferă să aibă anumite copii ale unor directoare și/sau fișiere pe care să le folosească până în momentul în care aceștia sunt siguri că rezolvările/materialele lor sunt corecte. De asemenea aceștia observă și faptul că au greșit numele și/sau poziționarea unor directoare/fișiere.

Astfel, aflându-vă în directorul Facultatea de Automatica și Calculatoare datoria voastră este să îi ajutați folosind câte o singură comandă pentru fiecare din cerințele acestui task:

[2p] Faceți o copie a directorului Programarea calculatoarelor (cu tot ceea ce conține acesta) care să aibă numele Copie PC și amplasați-o ca direct descendent al folderului Facultatea de Automatică și Calculatoare.

Următoarele cerințe se referă la directorul Copie PC (nu schimbați directorul în care vă aflați):

  1. [2p] Copiați fișierul Vectori.c din cadrul directorului Alocarea dinamica a memoriei.c, amplasați aceasta copie în folderul Instructiunile limbajului C si redenumiți fișierul Vectori.c din folderul Instructiunile limbajului C în Arrays.c;
  2. [2p] Copiati fisierul Matrice.c din cadrul directorului Alocarea dinamica a memoriei.c și amplasați aceasta copie în folderul Instructiunile limbajului C;
  3. [2p] Ștergeți folderul Parametrii liniei de comanda`;
  4. [2p] Adăugați fișierul | Segmentation Fault în directorul Alocarea dinamica a memoriei.c;
  5. [2p] Ștergeți fișierul Matrice.c din cadrul directorului Alocarea dinamica a memoriei.c.

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

După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ~/Facultatea de Automatică și Calculatoare/Copie PC/. 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 task-ului.

Task 03 (10p)

Andrei și Maria lucrează de-a lungul anului pentru a finaliza mai multe teme la USO. În acest sens, pentru a face temele mai greu accesibile pentru o persoană din exterior și în același timp pentru a nu șterge fișierele/directoarele din greșeală, doresc să le ascundă. Un fișier sau director este ascuns atunci când nu apare în mod normal în ierarhia de fișiere. Cu alte cuvinte, atunci când executăm într-un director comanda ls, acesta nu apare.

Următoarele subpuncte trebuie realizate în ordine pentru a primi punctajul pentru acest task.

[1p] Pentru a îi ajuta, creați în directorul /home/student directorul ascuns - Teme USO.

[2p] În cadrul acestui director creați trei fișiere ascunse intitulate: prima parte, a doua parte și a treia parte.

[2p] În fiecare dintre fișierele menționate anterior scrieți textul Aceasta este partea X din tema curenta., unde X reprezintă numarul fișierului în care se află textul.

[5p] În directorul /home/student creați fișierul task_3.txt în care atașați pe câte un rând separat conținutul celor 3 fișiere create la subpunctul anterior (în ordinea în care sunt menționate anterior).

Hint: append to file (»)

Task 04 (10p)

O legătură este o scurtătură către un fișier sau un director. Acestea sunt necesare atunci când nu vrem să parcurgem toată ierarhia de fișiere. Astfel, trebuie să îi ajutați pe cei doi studenți să iși faciliteze căutarea unui anumit fișier.

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

[5p] Creați în directorul /home/student două legături simbolice cu numele partea1 și partea2 care să conducă spre fișierul ascuns prima parte și respectiv a doua parte corespunzătoare task-ului anterior.

[5p] Pentru a verifica buna funcționare a legăturilor simbolice create anterior, atașați pe rând conținutul celor două fișiere în fișierul task_4.txt (creat de voi în /home/student).

Task 05 (10p)

Cei doi vor să salveze outputul unor comenzi undeva astfel încât să nu fie nevoie să îl copieze, să creeze un fișier nou sau să folosească unul deja existent, să îl deschidă, să lipească textul în el și să salveze modificările. Trecerea prin toți acești pași durează și devenim ineficienți în lucrul în terminal.

[10p] Astfel, realizați următoarele cerințe, aflându-vă în directorul /home/student și folosind câte o singură comandă:

  1. Salvați ierarhia tuturor fișierelor din directorul /home/student in fisierul /home/student/ierarhie1.txt
  2. Salvați ierarhia tuturor fișierelor din directorul /boot (fără a modifica directorul în care vă aflați) în fișierul /home/student/ierarhie2.txt;
  3. Salvați conținutul fișierului /etc/group în fișierul /home/student/utilizatori_si_grupuri.txt;
  4. Salvați eroarea care apare în momentul în care încercați să afișați conținutul fișierului nu_exista.txt în fișierul /home/student/eroare.txt;
  5. Anexați pe rând conținutul tuturor fișierelor create la subpunctele anterioare (în ordinea în care sunt create) în fișierul /home/student/task_5.txt.

  • Hint1: append to file (»)
  • Hint2: ierarhie de fișiere = similar cu ceea ce ați creat la task 01
  • Hint3: ierarhiile conțin fișiere ascunse

Task 06 (12p)

La finalul semestrului, Andrei și Maria au adunat multe fișiere și materiale pe care le-au organizat conform task-urilor anterioare. Acum, aceștia iși doresc ca fișierele/directoarele create anterior să ocupe mai puțin spațiu, deci să le comprime. Comprimarea este o arhivare mai specială pentru că micșorează dimensiunea fișierului rezultat. Rezultatul este similar: agregarea într-un singur fișier.

În directorul /home/student realizați următoarele:

[4p] Adăugați directorul Facultatea de Automatică și Calculatoare și toate fișierele conținute în două arhive cu numele archive1.tar și respectiv archive2.tar, de tip tar;

După rezolvarea cerințelor acestui task, nu ștergeți sau modificați conținutul directorului ~/Facultatea de Automatică și Calculatoare/. Acesta trebuie să râmână în această formă pentru verificările ulterioare ale checker-ului. Veți pierde punctele obținute pentru task-ul 1 dacă faceți modificări și va fi nevoie de refacerea taskului.

[4p] Adăugați în arhiva creată anterior, archive2.tar cele cinci fișiere realizate la task-ul 05 (ierarhie1.txt, ierarhie2.txt, utilizatori_și_grupuri.txt, eroare.txt și task_5.txt);

[4p] Realizați comprimarea de tip tar.gz a directorului Facultatea de Automatică și Calculatoare și a tuturor fișierelor conținute într-o nouă arhivă cu numele archive1.tar.gz (nu ștergeți arhiva creată la punctul 1).

Task 07 (20p)

Cei doi vor să afle dacă într-o ierarhie de fișiere se găsește un anumit fișier și, dacă există, să descopere unde anume se află acesta. Voi trebuie să îi ajutați. De asmenea, cei doi au aflat despre existența variabilelor de mediu și vor să le modifice pentru ca terminalul lor să afișeze informațiile de care au nevoie în modul în care aceștia își doresc:

[5p] Căutați toate fișierele (fără directoare) care se termină în .c pornind de la Facultatea de Automatica și Calculatoare și redirectați toate căile în fișierul cautare.txt. Acesta trebuie să se afle în /home/student;

[5p] Anexați pe câte un rând în fișerul final.txt calea către utilitarele: cat, rm și vim (în această ordine). Acest fișier trebuie să se afle tot în /home/student;

[5p] Modificați valoarea variabilei de mediu PS1 astfel încât promptul să conțină următoarele culori: roșu pentru username, verde pentru hostname și mov pentru calea către directorul curent. Atenție, caracterele speciale trebuie să rămână albe. Realizați modificările necesare în așa fel încât configurația variabilei PS1 menționată mai devreme să fie persistentă la restart. Ulterior, puneți valoarea acesteia în fișierul prompt.txt amplasat tot în /home/student;

În final, după modificarea variabilei PS1, prompt-ul trebuie să aibă următorul format: username@hostname:calea_către_directorul_curent $ .

Acest lucru poate fi obesrvat în exemplul din imaginea următoare
 Exemplu prompt

Codurile de culori pe care trebuie să le folosiți conform documentației PS1:

  • Roșu: 31
  • Verde: 32
  • Mov: 35

  • Hint: analizati fisierul ~/.bashrc

[5p] Modificați valoarea variabilei de mediu TZ astfel încât promptul să afișeze la fiecare afișare a variabilei de mediu, data în care ne aflăm după următorul format: ll/zz/aa. Realizați modificările necesare în așa fel încât configurația variabilei TZ menționată mai devreme să fie persistentă la restart. Ulterior, puneți valoarea acesteia în fișierul data.txt amplasat tot în /home/student.

De exemplu, după afișarea variabilei de mediu TZ pe directorul home, output-ul în terminal ar trebui să fie următorul:
 Exemplu prompt

Putem observa faptul că output-ul se afișează direct la introducerea în terminal a șirului de caractere: $TZ și nu este nevoie de o comandă de genul echo $TZ

Observați că acum s-a schimbat ierarhia din /home/student deci și rezultatul vostru în cadrul task-ului 05. Rezolvați această problemă.

Task obligatoriu pentru toate temele (0p)

Finalizați tema si asigurați-vă că ați submis tema cu 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.

uso/teme/tema-1.txt · Last modified: 2023/10/26 14:25 by calin_stefan.ureche
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