Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:teme-new:tema-2 [2019/03/13 22:50]
razvan.crainea [Precizări Linux]
so:teme-new:tema-2 [2019/03/14 10:57] (current)
razvan.crainea [Testare]
Line 59: Line 59:
 Să se realizeze o implementare minimală a bibliotecii stdio, care să permită lucrul cu fișiere. Biblioteca va trebui să implementeze structura SO_FILE (similar cu FILE din biblioteca standard C), împreună cu funcțiile de citire/​scriere. De asemenea, va trebui să ofere funcționalitatea de buffering. Să se realizeze o implementare minimală a bibliotecii stdio, care să permită lucrul cu fișiere. Biblioteca va trebui să implementeze structura SO_FILE (similar cu FILE din biblioteca standard C), împreună cu funcțiile de citire/​scriere. De asemenea, va trebui să ofere funcționalitatea de buffering.
  
-Rezolvarea temei va trebui să genereze o bibliotecă dinamică numită ''​libso_stdio.so''/''​so_stdio.dll''​. +Rezolvarea temei va trebui să genereze o bibliotecă dinamică numită ''​libso_stdio.so''/''​so_stdio.dll'' ​care implementează header-ul 
 +[[https://​github.com/​systems-cs-pub-ro/​so-assignments/​blob/​master/​2-stdio/​util/​so_stdio.h|so_stdio.h]]. În acest header găsiți semnăturile functiilor exportate de biblioteca generată de voi.
 ===== SO_FILE =====  ===== SO_FILE ===== 
  
Line 210: Line 210:
   *În implementarea ''​popen'',​ înainte de a apela ''​CreateProcess'',​ trebuie să marcați ca nemoștenibil capătul de pipe nefolosit de către procesul copil. În acest scop, puteți folosi funcția ''​SetHandleInformation''​.   *În implementarea ''​popen'',​ înainte de a apela ''​CreateProcess'',​ trebuie să marcați ca nemoștenibil capătul de pipe nefolosit de către procesul copil. În acest scop, puteți folosi funcția ''​SetHandleInformation''​.
   *Pentru a detecta EOF la citirea dintr-un pipe trebuie ca ''​ReadFile''​ să întoarcă ''​FALSE'',​ iar ''​GetLastError''​ să întoarcă ''​ERROR_BROKEN_PIPE''​.   *Pentru a detecta EOF la citirea dintr-un pipe trebuie ca ''​ReadFile''​ să întoarcă ''​FALSE'',​ iar ''​GetLastError''​ să întoarcă ''​ERROR_BROKEN_PIPE''​.
 +
 +===== Testare =====
 +
 +  *Pentru simplificarea procesului de corectare a temelor, dar și pentru a reduce greșelile temelor trimise, corectarea se va realiza automat cu ajutorul testelor publice indicate în secțiunea de materiale ajutătoare.
 +  *Există 33 teste. Se pot obține maxim 9.5 puncte prin trecerea testelor. Se acordă 0.5 puncte din oficiu.
 +  ***Testul 0** din cadrul checker-ului temei verifică automat coding style-ul surselor voastre folosind [[https://​www.kernel.org/​doc/​Documentation/​process/​coding-style.rst | stilul de coding din kernelul Linux]]. Acest test valorează **5 puncte** din totalul de 100. Pentru mai multe informații despre un cod de calitate citiți [[so:​laboratoare:​resurse:​c_tips | pagina de recomandări]].
 +  *Din punctajul temei se vor scădea automat puncte pentru întârzieri și pentru warning-uri. La revizia temei, se poate scădea suplimentar pentru nerespectarea criteriilor scrise la secțiunea de [[so:​teme:​general#​lista_depunctari | depunctări]] ale temelor.
 +  *În cazuri excepționale se poate scădea mai mult decât este menționat mai sus.
 +
 +<note important>​
 +Înainte de a [[https://​vmchecker.cs.pub.ro/​ui/​ | uploada]] tema, asigurați-vă că implementarea voastră trece testele pe [[so:​info:​mv | mașinile virtuale]]. Dacă apar probleme în rezultatele testelor, acestea se vor reproduce și pe [[https://​vmchecker.cs.pub.ro/​ui/​ | vmchecker]].
 +</​note>​
 +
 +<note tip>
 +Pentru a inspecta diferențele între output-ul bibliotecii voastre și fișierele de referință ale checker-ului setați ''​DO_CLEANUP=no''​ în scriptul [[https://​github.com/​systems-cs-pub-ro/​so-assignments/​blob/​master/​2-stdio/​checker/​_test/​run_test.sh | run_test.sh]].
 +</​note>​
 +
 +===== Materiale ajutătoare =====
 +Cursuri utile:
 +  *[[so:​cursuri:​curs-01 | Curs 1]]
 +  *[[so:​cursuri:​curs-02 | Curs 2]]
 +  *[[so:​cursuri:​curs-03 | Curs 3]]
 +
 +Laboratoare utile:
 +  *[[so:​laboratoare:​laborator-01 | Laborator 1]]
 +  *[[so:​laboratoare:​laborator-02 | Laborator 2]]
 +  *[[so:​laboratoare:​laborator-03 | Laborator 3]]
 +
 +Resurse:
 +  * Header-ul [[https://​github.com/​systems-cs-pub-ro/​so-assignments/​blob/​master/​2-stdio/​util/​so_stdio.h|so_stdio.h]] expus de biblioteca ''​so_stdio''​.
 +
 +Pagina de Upload:
 +  *[[https://​elf.cs.pub.ro/​vmchecker/​ui | vmchecker]]
 +
 +<note important>​
 +[[https://​github.com/​systems-cs-pub-ro/​so-assignments|Repo-ul de pe Github]] conține și un script Bash care vă ajută să vă creați un repository privat pe instanța de [[https://​gitlab.cs.pub.ro|Gitlab]] a facultății,​ unde aveți la dispoziție 5 repository-uri private utile pentru teme. Urmăriți indicațiile din README și de pe [[:​so:​teme:​folosire-gitlab|wiki-ul SO]].
 +
 +În plus, responsabilii de teme se pot uita mai rapid pe [[https://​gitlab.cs.pub.ro|Gitlab]] la temele voastre pentru a vă ajuta în cazul în care întâmpinați probleme/​bug-uri. Este mai ușor să primiți suport în rezolvarea problemelor implementării voastre dacă le oferiți responsabililor de teme acces la codul sursă pe [[https://​gitlab.cs.pub.ro|Gitlab]].
 +
 +**Dacă ați folosit [[https://​gitlab.cs.pub.ro|Gitlab]] pentru realizarea temei, indicați în README link-ul către repository. Asigurați-vă că responsabilii de teme au drepturi de citire asupra repo-ului vostru**.
 +
 +</​note>​
 +
 +===== Suport, întrebări și clarificări =====
 +
 +Pentru întrebări sau nelămuriri legate de temă folosiți [[:​so:​info:​lista-discutii|lista de discuții]] sau [[:​so:​info:​documentatie#​social_media|canalul de IRC]].
 +
 +<note important>​
 +Orice intrebare pe mailing list e recomandat să aibă subiectul de forma ''​[Tema2][Platforma] Titlul problemei''​. Exemple de așa da: 
 +
 +   * [Tema2][Linux] Biblioteca nu se generează
 +   * [Tema2][Windows] No makefile found
 +   * [Tema2][General] Neclaritate enunt: Dimensiune buffer
 +
 +Exemple de așa nu: 
 +
 +   * Problema la tema 2
 +   * eroare tema 2
 +   * eroare la dimensiuni
 +
 +Revedeți și secțiunea de [[:​so:​info:​lista-discutii|guidelines pentru lista de discuții SO]]
 +
 +</​note>​
so/teme-new/tema-2.1552510244.txt.gz · Last modified: 2019/03/13 22:50 by razvan.crainea
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