This shows you the differences between two versions of the page.
programare:teme_2017:proiect_2017_ca [2017/12/06 23:50] darius.neatu [Proiect - Alocator de memorie] |
programare:teme_2017:proiect_2017_ca [2017/12/18 16:56] (current) darius.neatu [Regulament] |
||
---|---|---|---|
Line 10: | Line 10: | ||
**Autor inițial:** [[stefan.bucur@gmail.com|Ștefan Bucur]] | **Autor inițial:** [[stefan.bucur@gmail.com|Ștefan Bucur]] | ||
- | **Deadline hard:** **15.12.2017** | + | **Deadline hard:** **18.12.2017** |
======Actualizări====== | ======Actualizări====== | ||
Line 17: | Line 17: | ||
* **02.12.2017** - Adăugarea unui schelet de cod în sectiunea [[http://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca?&#schelet | Schelet ]]. | * **02.12.2017** - Adăugarea unui schelet de cod în sectiunea [[http://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca?&#schelet | Schelet ]]. | ||
* **02.12.2017** - Am adăugat sectiunea [[https://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca#q_a | Q&A]]. | * **02.12.2017** - Am adăugat sectiunea [[https://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca#q_a | Q&A]]. | ||
- | * **06.12.2017** - Am adăugat un **warning** mare (cu rosu) în secțiunea [[https://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca#testare|Testare]]. Acest update este pentru cei care nu au reușit să ruleze checkerul. NU s-a schimbat checkerul, dacă ați reușit să îl folosiți, atunci ignorați acest update. | + | * **06.12.2017** - Am adăugat un **warning** mare (cu rosu) în secțiunea [[https://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca#testare|Testare]]. Acest update este pentru cei care nu au reușit să ruleze checkerul. NU s-a schimbat checkerul, dacă ați reușit să îl folosiți, atunci ignorați acest update. Dacă nu sunteți sigur că ați reușit să îl folosiți, recitiți secțunea menționată. |
- | * **06.12.2017**- Am adăugat în secțiunea [[https://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca#q_a | Q&A]] întrebarea "./reference => nu se poate rula". NU s-a schimbat checkerul, dacă ați reușit să îl folosiți, atunci ignorați acest update. | + | * **06.12.2017**- Am adăugat în secțiunea [[https://ocw.cs.pub.ro/courses/programare/teme_2017/proiect_2017_ca#q_a | Q&A]] întrebarea "./reference => nu se poate rula" |
+ | * **14.12.2017**- Am amânat deadline-ul. Deadline-ul final este pe 18 Decembrie. Decizie finală. ** ATENTIE! Este hard! Nu mai se accepta rezolvari dupa aceasta data. ** | ||
<note warning> | <note warning> | ||
- | Atenție! Proiectul nu are un deadline soft, ci doar unul hard. NU se mai acceptă submisii dupa data de 15.12.2017 ora 23:55. | + | Atenție! Proiectul nu are un deadline soft, ci doar unul hard. NU se mai acceptă submisii dupa data de 18.12.2017 ora 23:55. |
În prima săptămână de după vacanța de iarnă, proiectul se va susține în fața celor doi responsabili. Această dată va fi specificată ulterior în enunț și pe forum. | În prima săptămână de după vacanța de iarnă, proiectul se va susține în fața celor doi responsabili. Această dată va fi specificată ulterior în enunț și pe forum. | ||
Line 466: | Line 467: | ||
* Proiectul se va implementa DOAR în limbajul **C**. Va fi compilat și testat DOAR într-un mediu **LINUX**. Nerespectarea acestor reguli aduce un punctaj NUL. | * Proiectul se va implementa DOAR în limbajul **C**. Va fi compilat și testat DOAR într-un mediu **LINUX**. Nerespectarea acestor reguli aduce un punctaj NUL. | ||
- | * Proiectuk va fi trimis DOAR pe [[https://elf.cs.pub.ro/vmchecker/|vmchecker]], sub forma unei arhive **ZIP**. Nerespectarea acestei reguli aduce un punctaj NUL pe temă. | + | * Proiectul va fi trimis DOAR pe [[https://elf.cs.pub.ro/vmchecker/|vmchecker]], sub forma unei arhive **ZIP**. Nerespectarea acestei reguli aduce un punctaj NUL pe temă. |
* Fișierele proiectului trebuie OBLIGATORIU împachetate într-o arhiva de tip '.zip', cu numele **Grupa_NumePrenume_Proiect.zip** (exemplu: **316CA_PopescuGigel_Proiect.zip**). | * Fișierele proiectului trebuie OBLIGATORIU împachetate într-o arhiva de tip '.zip', cu numele **Grupa_NumePrenume_Proiect.zip** (exemplu: **316CA_PopescuGigel_Proiect.zip**). | ||
Line 542: | Line 543: | ||
Pentru verificarea memory leaks relevante sunt liniile urmatoare: | Pentru verificarea memory leaks relevante sunt liniile urmatoare: | ||
- | - total heap usage: 31 allocs, 31 frees, 5,253 bytes allocated | + | - **total heap usage: 31 allocs, 31 frees, 5,253 bytes allocated** (mi se confirma ca am facut 31 de alocari si 31 de free-uri) |
- | (mi se confirma ca am facut 31 de alocari si 31 de free-uri) | + | - **All heap blocks were freed -- no leaks are possible** (deoarece numerele sunt egale - am eliberat tot ce am alocat - nu am memory leaks) |
- | + | ||
- | - All heap blocks were freed -- no leaks are possible | + | |
- | (deoarece numerele sunt egale - am eliberat tot ce am alocat - nu am memory leaks) | + | |
P.S. Valgrind poate fi util si pentru alte situatii. Un exemplu foarte util este detectarea acceselor invalide la memorie (daca as fi avut as fi vazut multe mesaje de tip eroare inainte de HEAP SUMMARY). Rezolvarea acestor probleme m-ar putea scuti de situatia neplacuta in care obtin X puncte local si Y puncte pe vmchecker (Y << X). | P.S. Valgrind poate fi util si pentru alte situatii. Un exemplu foarte util este detectarea acceselor invalide la memorie (daca as fi avut as fi vazut multe mesaje de tip eroare inainte de HEAP SUMMARY). Rezolvarea acestor probleme m-ar putea scuti de situatia neplacuta in care obtin X puncte local si Y puncte pe vmchecker (Y << X). | ||
+ | |||
+ | * Q: "./reference => nu se poate rula" | ||
+ | A: | ||
+ | |||
+ | Ce este reference? La ce e util? | ||
+ | Unul dinstre autori a implementat tema, a compilat-o pe OS 32bit (conditiile de pe vmchecker). Dacă lucrați pe 64 de biți, este posibil să nu aveți instalate toate bibliotecile necesare pentru a rula executabile compilate pe 32 de biți. | ||
+ | |||
+ | Încercați să reproduceți exemplul următor (după ce ați dezarhivat arhiva cu checkerul): | ||
+ | |||
+ | {{programare:teme_2017:project_2017:ref.jpg}} | ||
+ | |||
+ | Dacă ați reușit să rulați ca în exemplu, atunci aveți instalat tot ce trebuie pentru checker. | ||
+ | |||
+ | Dacă întâmpinați erori (ex. "No such file" - pare absurd, dar așa apare), atunci încercați una din soluțiile menționate pe acest link: [[https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit| How to run 32-bit app in Ubuntu 64-bit? ]]. | ||
+ | |||
+ | * soluție 1 (**recomandată**) | ||
+ | <code bash> | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install multiarch-support | ||
+ | </code> | ||
+ | |||
+ | * soluție 2 | ||
+ | <code bash> | ||
+ | sudo dpkg --add-architecture i386 | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 | ||
+ | </code> | ||
+ | | ||
+ | Încercați pe rând câte o soluție. După fiecare soluție încercați să rulați **reference** ca în exemplul anterior. | ||
+ | |||
+ | Dacă nu ați reușit cu soluțiile menționate mai sus (sau pe acel link), **postați pe forum un mesaj în care includeți și un printscreen cu terminal când rulați** (pentru a ne da seama mai repede ce problemă aveți). | ||
+ | |||
+ | Otherwise... Google it's your best friend FIXME! (after Gigel 8-) ) | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | |||