[so] Rezultate examen SO 7 iunie

2018-06-08 Fir de Conversatie Costin Lupu via so
Salutare,

Au fost publicate rezultatele examenului de ieri, 7 iunie, în catalog
[1]. Contestațiile se vor rezolva astăzi, 8 iunie, începând cu ora
15:00, în sala PR204 din clădirea PRECIS.

Felicitări tuturor celor care s-au străduit și mult succes în continuare!

[1] https://ocw.cs.pub.ro/courses/so/meta/catalog

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 5][Linux] Trimitere fisiere statice

2018-05-20 Fir de Conversatie Costin Lupu via so
On 05/20/2018 09:21 PM, Alexandru Militaru via so wrote:
> Salut,
> 
> Nu înțeleg foarte bine cum ar trebui integrat header-ul HTTP cu fișierul
> de pe disc. Se spune despre fișierele statice că trebuie trimise
> folosind sendfile, care primește un file descriptor și trimite către un
> alt file descriptor. Dacă aș fi folosit un send normal, aș fi putut să
> atașez conținutul fișierului la header, dar nu îmi dau seama cum ar
> trebui să fac asta folosind sendfile.
> 
> Sau ar trebui ca server-ul să răspundă practic cu 2 mesaje la o cerere
> HTTP validă? Primul mesaj trimis cu send - header-ul, după care fișierul
> propriu-zis, trimis cu sendfile?

E exact așa. Atenție, cele 2 mesaje de care spui sunt de fapt "mesaje"
TCP (protocol peste care e HTTP), împreună alcătuind un singur mesaj HTTP.

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema 5][Linux]

2018-05-20 Fir de Conversatie Costin Lupu via so
On 05/20/2018 11:37 AM, Alexandru via so wrote:
> Buna ziua,
> 
> Care at putea fi cauza agatarii programului la primul test de wget, desi
> rulat de mana (folosind comanda din script in terminal) se creeaza
> fisierul ce datele corecte?

Găsești la [1] o listă cu posibile cauze, găsite în anii trecuți.

[1] https://www.mail-archive.com/search?q=wget=so%40cursuri.cs.pub.ro


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 5] Neclaritati enunt

2018-05-17 Fir de Conversatie Costin Lupu via so
Salutare, Cătălin,

On 05/17/2018 09:13 PM, Catalin Neagu via so wrote:
> Salut,
> 
> Am cateva intrebari legate de enuntul problemei.
> 
> 1.1 Din cate am inteles din enunt, cererile vor fi siruri de caractere
> care respecta protocolul http. Ca si informatie utila din aceaste
> cereri, mai e ceva pe langa request path-ul pentru fisier?

Nu, doar request path-ul e de interes.

> 1.2 Ne vor trebui si alte functii de callback pe care sa le includem in
> http_parser_settings pentru http_parser_execute?

Nu, e suficientă extragerea path-ului.

> 2.1 Cum anume va trebui sa fie raspunsul pentru o cerere valida? Trimit
> pur si simplu fisierul si apoi trimit un mesaj de genul "HTTP/1.0 200
> OK\r\n"? Sau trebuie sa integrez continutul fisierului intr-un sir de
> caractere care are pe langa si alte campuri cum ar fi "Content-Length:"
> si altele asemenea?

Ca în orice mesaj HTTP, mai întâi trimiți header-ul și apoi payload-ul
(în cazul ăsta conținutul fișierului). Evident că header-ul va conține
și câmpul "Content-Length". Ai câte un exemplu de răspuns HTTP în
directoarele 'samples' din repo.

> 2.2 Cum anume va trebui trimis un fisier folosind mecanismul de
> zero-copy? Referitor la intrebarea de mai sus. Acesta nu prea poate fi
> adus in memoria procesului pentru acea integrare intr-un mesaj de tip
> HTTP din cate imi dau seama.

Dacă ai trimis header-ul, după aceea payload-ul îl poți trimite cum vrei
(cu sau fără zero-copy).

> 2.3 Cum anume arata o cerere invalida? O cerere care are un path care nu
> duce catre nici un fisier si atat? Sau mai sunt si alte campuri din
> cerere de care trebuie tinut cont?

Dacă header-ul e invalid, atunci va da eroare la parsare. Dacă e valid,
atunci va trebui să verifici doar path-ul, așa cum ai menționat.


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 4][Linux] Functii permise

2018-05-08 Fir de Conversatie Costin Lupu via so
On 05/08/2018 09:59 PM, Corina Palade via so wrote:
> Hey,
> 
> Ce functii avem voie sa folosim in implementarea temei? Este ok daca
> folosim pthread_create, sau trebuie sa il implementam si pe el de la 0?
> Dar pthread_join? Putem sa folosim orice fel de functii legate de lucrul
> cu semafoare si alte mecanisme de sincronizare?

Ideea temei e să vă familiarizați cu funcțiile pthread_*. Deci sub nici
o formă nu trebuie să reimplementați funcționalitățile oferite de aceste
funcții. Ăsta și e unul din obiectivele temelor pe Linux, de
familiarizare și aprofundare a funcțiilor POSIX.

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] Publicare note Tema 2 - Mini-shell

2018-04-30 Fir de Conversatie Costin Lupu via so
Salutare,

Am publicat notele pentru tema 2, pe care le găsiți pe vmchecker [1].
Găsiți în catalog [2] punctele karma pentru temele foarte bune.

Felicitări tuturor celor care au luat punctaje maxime! Suntem conștienți
că e o temă anevoioasă, prin urmare îi felicităm și pe ceilalți care
s-au străduit, sperăm să vă autodepășiți la următoarele teme.

Vă rugăm să citiți atent feedback-ul dat de echipa de SO și să țineți
cont de el în rezolvarea următoarelor teme. Pentru orice
probleme/neclarități referitoare la corectare sau punctaj, vă rugăm să
urmăriți pașii din pagina de contestații [3].

*ATENȚIE*: Toate mesajele legate de contestații se trimit la adresa
so-t...@cs.pub.ro așa cum e specificat și în pagina de contestații [3].

[1] https://vmchecker.cs.pub.ro/ui/#SO
[2]
https://docs.google.com/spreadsheets/d/1yPqBInqovnjfBeInI3yZdS20KC1h75UcnU_YWWc_V6Y/edit#gid=45=364:364
[3] https://ocw.cs.pub.ro/courses/so/teme/contestatii

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema3] [Linux] Test 9

2018-04-30 Fir de Conversatie Costin Lupu via so
On 04/30/2018 04:40 PM, Raluca Radu via so wrote:
> Buna ziua, 
> 
> In afara de testul 9 celelate teste imi trec. Iar la testul 9, dupa 17 mapari 
> corecte de pagina, programul se blocheaza pur si simplu fara sa dea seg 
> fault. Vreo idee de unde ar putea fi problema? 

Ce înseamnă se blochează? Face exit? Intră în buclă infinită? Ai băgat
debugger-ul?

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 3][Linux]Testul 9

2018-04-29 Fir de Conversatie Costin Lupu via so
On 04/29/2018 10:44 AM, Andrei Bratu via so wrote:
> Buna ziua,
> 
> Atunci cand rulez testul 9, tratez corect 20 de fault-uri, iar apoi primesc 
> segmentation fault la o adresa ce nu face parte din segmentele programului 
> (0x20297073 pe masina mea, 0x810 pe masina virtuala). Am incercat sa rezolv 
> problema, insa nu am reusit. Celalalte teste imi trec, si de aceea nu pot sa 
> imi dau seama unde este greseala. Am incarcat codul pe gitlab si as fi 
> recunoscator daca s-ar putea uita cineva.

Ai băgat debugger-ul? Cel mai probabil la al 20-lea fault ai un acces
invalid în handler-ul tău. Rulează cu gdb că ar trebui să-ți spună
direct de unde vine problema. Asigură-te înainte că ai compilat cu
suport de debug (flag-ul -g).

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema3][Linux]

2018-04-28 Fir de Conversatie Costin Lupu via so
Salutare, Gheorghiță,

On 04/28/2018 12:53 PM, Gheorghita Caulea via so wrote:
> Salut!
> 
> Este in regula daca am folosit 'mmap' peste fisier si astfel nu am mai
> folosit in prealabil alocarea unei pagini goale in care mai apoi sa
> copiez din fisier(deci nu am mai folosit MAP_FIXED asa cum scria in
> enunt)?

Dacă nu folosești MAP_FIXED cum garantezi că adresa virtuală pe care o
va accesa programul încărcat va fi cea din ELF? Fără acest flag kernelul
va putea ignora primul parametru al funcției 'mmap'. Scrie și în manual
că primul parametru al 'mmap' e doar o sugestie.

> De asemenea, este in regula sa ofer permisiunile necesare direct din
> apelul 'mmap' sau folosirea lui 'mprotect' este obligatorie?

Sunt situații în care e nevoie să se copieze datele din executabil și
apoi să se seteze permisiunile care pot fi fără drept de scriere.

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema3][Windows] Permisiuni segment

2018-04-28 Fir de Conversatie Costin Lupu via so
Salutare, Adrian,

On 04/28/2018 12:13 PM, Adrian Pop via so wrote:
> Buna ziua!
> Am o intrebare cu privirile la permisiunile pe care trebuie trebuie sa i
> le ofer paginii cand o mapez. Pe Linux, de exemplu, am folosit seg->perm
> direct asa (in cadrul mprotect). Pe Windows dupa cateva zeci de minute
> de debug, am descoperit ca nu este chiar un corespondent direct si nu
> pot folosi direct forma seg->perm.
> 
> De exemplu, daca seg->perm == 1 => folosesc PAGE_READONLY, seg->perm ==
> 6 => folosesc PAGE_EXECUTE_READWRITE etc. Ca sa imi fac tabelul de
> corespondenta, am folosit tabelul de aici [1] si m-am jucat cu
> flag-urile PERM_[R|W|X] din care e compus seg->perm.
> 
> Intrebarea mea este daca procedez corect cu aceasta translatare sau mi-a
> scapat ceva, intrucat in enunt ni se spune ca interfata de lucru cu
> executabilul este una comuna (desi, da, nu spune ca si neaparat 100%
> compatibila).

Frumos ar fi să ai o translatare atât pe Windows, cât și pe Linux. E
doar o coincidență că s-au nimerit valorile din 'seg->perm' cu
flag-urile pentru 'mmap'.

> [1] 
> https://msdn.microsoft.com/en-us/library/windows/desktop/aa366786(v=vs.85).aspx

Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema2][Linux][descriptori inchisi]

2018-03-28 Fir de Conversatie Costin Lupu via so
Salutare,

Dacă e funcționalitate implementată în plus atunci nu se depunctează.
Dacă în schimb ascunde vreo hibă atunci se depunctează.

Costin

On 03/28/2018 06:31 PM, Alexandru via so wrote:
> Buna ziua,
> 
>  
> 
> Am vazut pe o alta discutie urmatoarea afirmatie: “Tema nu cere să
> 
> închideți file descriptorii STD{IN,OUT,ERR}”. Este vreo problema daca in
> functia shell_exit ii inchidem si pe acestia, vom fi depunctati pentru
> acest lucru?
> 
>  
> 
>  
> 
> Sent from Mail  for
> Windows 10
> 
>  
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] [Tema2][General] ANUNT Extindere deadline

2018-03-27 Fir de Conversatie Costin Lupu via so
Salutare,

Din cauza unei greșeli personale și asumate (n-am căscat bine ochii când
m-am uitat în calendarul temelor) am publicat datele incorecte pentru
deadline-ul temei 2. Deadline-ul soft se extinde cu o săptămână, așa cum
trebuia să fie inițial.

Așadar termenele limită pentru tema 2 sunt:

* Deadline soft:  *4 Aprilie 2018, ora 23:55*
* Deadline hard: *11 Aprilie 2018, ora 23:55*

Am updatat vmchecker-ul și pagina temei 2 [1].

Cu scuzele de rigoare, vă doresc spor la debugging!


[1] https://ocw.cs.pub.ro/courses/so/teme/tema-2


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] valgrind - File descriptor deschisi

2018-03-27 Fir de Conversatie Costin Lupu via so
În testele tale, valgrind îți raportează de fiecare dată că file
descriptorii standard rămân deschiși. Când faci redirectare-restaurare
valgrind știe să-ți spună și unde s-a inițializat ultima oară file
descriptorul stdout. În rest îți zice că i-ai moștenit din părinte, mai
multe informații nu-ți poate da.

Deci e o raportare firească. Ba mai mult, indică un comportament corect,
că stdout-ul a fost redirectat-restaurat.

Costin

On 03/27/2018 07:54 PM, Alex Albu wrote:
> Salut.
> 
> Mersi pentru raspunsul rapid!
> 
> Exact asta ma nelamureste - faptul ca valgrind practic imi raporteaza un
> fd standard si o face ca urmarea a apelului dup2. Nu imi e clar daca se
> intampla pentru ca e un comportament normal al valgrind sau pentru ca
> intr-adevar nu inchid un fd. Si spun asta pentru ca in celelalte teste
> unde nu fac procesul asta de redirectare-restaurare std fd nu apar
> deschise decat fd-uri mostenite de la parinte.
> 
> 
> *Alex Albu*
> +40 747 288 154*
> *
> 
> 
> 2018-03-27 19:47 GMT+03:00 Costin Lupu  >:
> 
> Salutare, Alex,
> 
> Din ce văd eu e vorba despre file descriptorul 1. Tema nu cere să
> închideți file descriptorii STD{IN,OUT,ERR}. Unde e problema?
> 
> 
> Costin
> 
> On 03/27/2018 07:09 PM, Alex Albu via so wrote:
> > Salut.
> >
> > Intampin urmatoarea problema la rularea testelor cu valgrind - la
> > restaurarea stdout in urma unei redirectari este raportat ca ramanand
> > deschis un fd care arata fie catre /dev/null fie ...testxx.in 
> 
> > 
> >
> > In urma verificarilor, in special la testul 5 care este cel mai simplu
> > si nu implica procese aditionale, pare ca nu se inchide fd-ul
> > corespunzator copie de back-up a stdout desi close-ul e scris si nu pare
> > sa dea eroare. Testand in afara checkerului este raportat ca inca
> > deschis terminalul.
> >
> > Codul cu pricina se afla in cmd.c, linia 161 pe userul de gitlab 
> tmp_stud19.
> >
> > As aprecia orice sugestie :)
> >
> > Multumesc,
> >
> > Alex Albu
> >
> >
> >
> >
> > ___
> > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
> >
> 
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] valgrind - File descriptor deschisi

2018-03-27 Fir de Conversatie Costin Lupu via so
Salutare, Alex,

Din ce văd eu e vorba despre file descriptorul 1. Tema nu cere să
închideți file descriptorii STD{IN,OUT,ERR}. Unde e problema?


Costin

On 03/27/2018 07:09 PM, Alex Albu via so wrote:
> Salut.
> 
> Intampin urmatoarea problema la rularea testelor cu valgrind - la
> restaurarea stdout in urma unei redirectari este raportat ca ramanand
> deschis un fd care arata fie catre /dev/null fie ...testxx.in
> 
> 
> In urma verificarilor, in special la testul 5 care este cel mai simplu
> si nu implica procese aditionale, pare ca nu se inchide fd-ul
> corespunzator copie de back-up a stdout desi close-ul e scris si nu pare
> sa dea eroare. Testand in afara checkerului este raportat ca inca
> deschis terminalul.
> 
> Codul cu pricina se afla in cmd.c, linia 161 pe userul de gitlab tmp_stud19.
> 
> As aprecia orice sugestie :)
> 
> Multumesc,
> 
> Alex Albu
> 
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][TEMA 2]Propria tema anul precedent

2018-03-26 Fir de Conversatie Costin Lupu via so
Salutare,

A mers cum ți-a indicat Ricardo în mail-ul anterior?
Dacă nu, cum ai instalat VirtualBox? E posibil ca versiunea de
VirtualBox să nu fie inline cu versiunea de kernel de pe sistemul tău.

Costin

On 03/26/2018 11:25 PM, Ricardo Ungureanu via so wrote:
> Salut,
> 
> Daca nu reusesti sa bootezi aceasta masina, poti incerca sa faci mount
> virtual disk-ului unde se afla tema ta pe o noua masina care functioneaza.
> Pasii sunt cei prezentati aici [1].
> 
> Succes,
> Ricardo
> 
> [1]
> https://unix.stackexchange.com/questions/105430/mounting-another-vms-vdi-in-virtualbox
> 
> 
> 
> Pe 26 martie 2018, 19:39, Nastasiu Ciprian via so  > a scris:
> 
> Buna ziua ,
> 
> Numele meu este Nastasiu Ciprian Marius , student in grupa 335CC, am
> o problema cu masina virtuala pe care am lucrat in aceeasi perioada
> a anului trecut . Din cauza faptului ca am lucrat pe alta masina
> virtuala pe alt laptop , acum la accesarea masinii vechi imi apare o
> eroare (atasez fisierul de log si print-screen cu eroarea acestui
> email ) . Si acum am incercat sa accesez acea masina virtuala doar
> sa imi pot lua tema 2 la Sistem de Operare , pe care anul trecut
> 2016-2017 am trimis-o si a fost punctata. 
> 
> Va rog daca ma puteti ajuta ,daca este posibil , cu arhiva temei pe
> care am trimis-o anul trecut , sau daca imi puteti da un sfat cum
> imi pot recupera informatiile de pe masina virtuala care da eroare.
> 
> Va multumesc ! 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
> 
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema2][fprintf]

2018-03-26 Fir de Conversatie Costin Lupu via so
Salutare,

E în regulă cu fprintf pentru testul 18.

Costin

On 03/26/2018 12:32 PM, Placinta Alexandru via so wrote:
> Buna ziua,
> 
> Putem folosi fprintf pentru a afisa mesajul pentru testul18 la stderr
> sau trebuie neaparat sa folosim posix si pentru acest lucru?
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Windows][Creare procese]

2018-03-25 Fir de Conversatie Costin Lupu via so
În cazul ăsta ai nevoie de un design diferit pe windows. Doar frunzele
arborelui ar apela CreateProcess (analog fork+exec). Alternativ, ai
putea folosi thread-uri ca alți colegi, însă cu mare atenție pentru a
evita depunctările în cazul utilizării incorecte a API-ului.

Costin

On 03/25/2018 10:21 PM, Alexandru Militaru wrote:
> Voiam să continui să folosesc același cod în copil și să reapelez
> funcția parse_command. M-ar ajuta pentru parcurgerea arborelui de
> comenzi.
> 
> 2018-03-25 21:53 GMT+03:00 Costin Lupu :
>> Salutare,
>>
>> Posibil ar fi, permis nu. Ce problemă întâmpini?
>>
>> Costin
>>
>> On 03/25/2018 08:23 PM, Alexandru Militaru via so wrote:
>>> Salut,
>>>
>>> E cumva posibil ca pe Windows să obținem un comportament asemănător
>>> comenzii fork()? Adică să creăm un proces care păstrează codul
>>> părintelui, fără a încărca un alt executabil.
>>> ___
>>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>>>
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2] Depunctare procese multe

2018-03-25 Fir de Conversatie Costin Lupu via so
Salutare, Alex,

Situația ta este cea menționată și secțiunea de FAQ [1] referitor la
numărul optim de pipe-uri. Deci e în regulă ce faci la pipe-uri. Pe de
altă parte la operatorul paralel nu prea pare în regulă. Problema
principală e inconsecvența.

[1] https://ocw.cs.pub.ro/courses/so/teme/tema-2#faq

Costin

On 03/25/2018 06:57 PM, Alex Albu via so wrote:
> Salut.
> 
> Practic e un proces in plus pentru fiecare pipe (pe langa cele 1/2 de
> executie ale comenzii simple). N-as spune ca e abuz, dar nu e nici cea
> mai eleganta solutie.
> 
> Pot sa revin si cu exemplu daca e mai relevant.
> 
> Multumesc
> 
> On Sun, Mar 25, 2018, 18:49 Mihai Barbulescu  > wrote:
> 
> Salut. 
> 
> Ce înseamnă număr ușor mai mare, ne poți ajuta cu un exemplu concret
> pe unul din testele cu pipe-uri? 
> 
> Dacă creezi un proces în plus nu aș considera depunctare. Dacă îți
> bați joc de sistem e alta discuție :) 
> 
> On Sun, Mar 25, 2018, 15:44 Alex Albu via so  > wrote:
> 
> Salut.
> 
> As vrea sa va intreb daca se va depuncta crearea unui numar usor mai
> mare de procese decat ar fi nevoie in anumite cazuri.
> E vorba de do_pipe din tema-linux/cmd.c (linia 432+) la userul
> tmp_stud19 in caz ca puteti sa va uitati pe GitLab.
> 
> Multumesc
> 
> Alex Albu
> +40 747 288 154
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Windows][Creare procese]

2018-03-25 Fir de Conversatie Costin Lupu via so
Salutare,

Posibil ar fi, permis nu. Ce problemă întâmpini?

Costin

On 03/25/2018 08:23 PM, Alexandru Militaru via so wrote:
> Salut,
> 
> E cumva posibil ca pe Windows să obținem un comportament asemănător
> comenzii fork()? Adică să creăm un proces care păstrează codul
> părintelui, fără a încărca un alt executabil.
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema 2][Windows] Echo,bad file descriptor

2018-03-25 Fir de Conversatie Costin Lupu via so
On 03/24/2018 05:49 PM, Alexandru Militaru wrote:
> Salut, 
> 
> Am aceeași problemă. Oricum aș încerca să fac append, primesc ”bad file
> descriptor”. O problemă ciudată apare și când fac redirectare simplă (>)
> într-un fișier de mai multe ori la rând. Un "cat f.txt" dat după un "pwd
>> f.txt; ls > f.txt" va afisa output-ul comenzii ls + niște reminiscențe
> nesuprascrise din comanda pwd.

Ce fel de comandă este 'pwd > f.txt ; ls > f.txt'? Ai implementat-o? Eu
rulez comenzile separat pe tema ta și se comportă cum trebuie:
> pwd > f.txt
> ls > f.txt

> Închid Handle-urile și deschid fișierele cu permisiuni, zic eu, bune.
> Care ar putea fi problema?
> 
> Am încărcat tema pe gitlab. Userul meu este cmilitaru2501.

Again, fă niște debugging. Pe windows puteți folosi debugger-ul din
Visual Studio. Pașii ar fi următorii:

1) Creați un proiect nou în Visual Studio urmărind indicațiile de aici
[1]. Adăugați fișierele existente (headere, surse) la proiect.
Build-uiți proiectul.

2) Localizați unde s-a creat executabilul și porniți-l din consola de
cygwin. De obicei executabilul e pus în subdirectorul 'Debug' din
directorul proiectului.

3) În Visual Studio aveți opțiunea de a vă atașa la un proces existent
(Debug -> Attach to process ...). Identificați mini-shell-ul în lista de
procese afișată și atașați-vă la el.

4) Rulați comenzile problematice în mini-shell și urmăriți ce se
întâmplă din debugger.


[1]
https://ocw.cs.pub.ro/courses/so/laboratoare/laborator-01#b_creare_proiect_nou_1p


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] Răsp.: Re: [SO][Tema2][Linux] Problema variabila mediu

2018-03-24 Fir de Conversatie Costin Lupu via so
Salutare,

Mulțumim de notificare. Se dorește tratat și cazul în care valoarea
conține referiri. Am modificat precizarea respectivă din enunțul temei.

Costin

On 03/24/2018 04:04 PM, Todea Darius via so wrote:
> 
> Salut,
> 
> In enuntul temei [0] se precizeaza urmatoarele:
> - definirea variabilelor se face sub forma NUME_VARIABILA=valoare
> -nu trebuie tratat cazul in care _valoare_ contine referiri la alte
> variabile de mediu
> 
> Totusi, in test apare MYGROUP=$USER-group si se verifica ca in output2
> sa apara "student-group", deci sa aiba loc interpretarea $USER.
> 
> Cum se doreste sa se procedeze, pana la urma?
> 
> [0] Tema 2 Mini-shell [CS Open CourseWare]
> 
>   
> 
>   
> 
> 
> Tema 2 Mini-shell [CS Open CourseWare]
> 
>   
> 
> 
> 
> Multumesc,
> Darius
> 
> Pe dum. mar. 18, 2018 la 11:52, Darius Mihai via so
>  a scris:
> Am testat tema pe ambele mașini virtuale (atât cea veche, cât și cea
> nouă),
> și nu funcționează pe niciuna. Nu îmi dau seama cum la tine ar
> funcționa, dar
> din ce văd din cod nu ții cont că variabilele se pot seta în funcție
> de alte variabile.
> 
> Pentru debug îți recomand să rulezi manual în shell-ul tău comenzile
> din input
> și vezi dacă se comportă la fel ca în bash.
> 
> Darius
> 
> 2018-03-18 11:16 GMT+02:00 Darius Mihai  >:
> >
> > Da, este OK acum.
> >
> > Ca mențiune, eu vreau să văd dacă este o problemă la testare;
> > pentru karma te rog să îi adaugi pe responsabilii de temă.
> >
> > Darius
> >
> > 2018-03-18 11:09 GMT+02:00 Catalin Neagu
> >:
> >>
> >> Salut,
> >>
> >> Ai dreptate, gresisem eu. Am facut acum pasii de la punctul 2 si
> am reusit sa te adaug.
> >> Poti vedea proiectul meu acum?
> >>
> >> Multumesc de ajutor,
> >> Catalin
> >>
> >> Pe 18 martie 2018, 10:43, Darius Mihai  > a scris:
> >>>
> >>> Salut,
> >>>
> >>> Oh... Ai greșit link-ul. Ar trebui să fie [1], așa cum este
> >>> specificat și pe wiki [2].
> >>>
> >>> [1]: https://gitlab.cs.pub.ro/
> >>> [2]: https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab
> >>>
> >>> Darius
> >>>
> >>> 2018-03-18 10:36 GMT+02:00 Catalin Neagu
> >:
> 
>  Salut,
> 
>  Da, am trimis aseara invitatia pe mail.
>  Poate am gresit eu ceva cand am facut contul de Gitlab...
>  N-as crede totusi, pentru ca aici(screenshot) pare fi totul in
> regula...
> 
> 
>  On Mar 18, 2018 9:33 AM, "Darius Mihai"  > wrote:
> >
> > Salut,
> >
> > Proiectul tău încă nu îmi apare în listă pe gitlab. Ești sigur
> că ai dat corect acces?
> >
> > Darius
> >
> > 2018-03-18 2:11 GMT+02:00 Catalin Neagu
> >:
> >>
> >> Salut,
> >>
> >> Te-am adaugat.
> >>
> >> Multumesc,
> >> Catalin
> >>
> >> Pe 18 martie 2018, 01:29, Darius Mihai
> > a scris:
> >>>
> >>> Salut,
> >>>
> >>> Nu văd vreun motiv evident pentru care s-ar întâmpla. Te rog
> să îmi dai acces pe GitLab pentru a putea să testez câteva lucruri
> (ID darius.mi...@stud.acs.upb.ro ).
> >>>
> >>> Darius
> >>>
> >>> 2018-03-18 0:40 GMT+02:00 Catalin Neagu via so
> >:
> 
>  Buna seara,
> 
> 
>  Testul 8("Testing environment variables") pica pe
> VMChecker, dar pe masina virtuala de pe ocw trece. Care ar putea fi
> cauzele?
> 
>  Multumesc,
>  Catalin
> 
>  Virus-free. www.avast.com
> 
>  ___
>  http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> >>>
> >>>
> >>
> >
> >>>
> >>
> >
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Linux] Problema checker redirectare

2018-03-17 Fir de Conversatie Costin Lupu via so
În primul rând, să dai te rog reply-all de fiecare dată la discuțiile de
pe listă.

În al doilea rând, vmchecker-ul folosește aceeași mașină virtuală. Deci
ori nu folosești mașina care trebuie, ori ai bușit-o între timp.

Este vorba despre mașina virtuală pe care o găsești aici [1] (NEW VM).

[1] https://ocw.cs.pub.ro/courses/so/info/mv

Costin

On 03/17/2018 02:34 PM, Vlad Ştefănescu wrote:
> Problema e ca la mine pe masina virtuala (cea pusa la dispozitie de
> echipa de SO) nu imi trece acel test 3. Intr-adevar, nu am incercat sa
> pun inca tema pe vmchecker, deoarece m-am gandit ca e rulata pe aceasi
> masina virtuala si cu acelasi checker.
> 
> Intr-adevar imi trece testul 3 pe vmchecker, dar nu ma ajuta cu nimic
> daca nu pot testa si local.
> 
> 2018-03-17 14:13 GMT+02:00 Costin Lupu <costin@gmail.com>:
>> Eu unul nu înțeleg ce nu-ți merge de fapt. Zici că ai rulat comenzile
>> anterioare în mașina virtuală și merg ok. Ți-am rulat și eu tema în
>> mașina virtuală și văd că trece testul 3. Pe vmchecker tema nu e
>> uploadată. Deci unde e problema de fapt?
>>
>> Costin
>>
>> On 03/17/2018 01:07 PM, Vlad Ştefănescu wrote:
>>> Am dat deja drept de "Reporter" la toti membrii mentionati. Contul meu
>>> de cs.curs este: vlad.stefanescu
>>>
>>>
>>>
>>> 2018-03-17 12:53 GMT+02:00 Costin Lupu <costin@gmail.com>:
>>>> Încă n-avem acces la proiectul tău. La pagina cu indicații, secțiunea
>>>> [1] punctul 7 îți zice cum să dai acces membrilor echipei de teme.
>>>>
>>>> [1] 
>>>> https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou
>>>>
>>>> Costin
>>>>
>>>> On 03/17/2018 12:28 PM, Vlad Ştefănescu wrote:
>>>>> Done!
>>>>>
>>>>> 2018-03-17 11:26 GMT+02:00 Costin Lupu <costin@gmail.com>:
>>>>>> Dacă e cum zici înseamnă că problema e în altă parte. Pune te rog tema
>>>>>> pe gitlab [1] ca să vedem mai exact unde ar fi problema. Indicațiile
>>>>>> despre cum să folosești gitlab sunt aici [2].
>>>>>>
>>>>>> [1] https://gitlab.cs.pub.ro/
>>>>>> [2] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab
>>>>>>
>>>>>> Costin
>>>>>>
>>>>>> On 03/17/2018 11:17 AM, Vlad Ştefănescu wrote:
>>>>>>> Salut,
>>>>>>>
>>>>>>> Multumesc pentru raspuns!
>>>>>>>
>>>>>>> Am incercat sa dezactivez buffering-ul si, din nou, obtin rezultatul
>>>>>>> corect. Toate fisierele se creeaza si in ele este scris ce trebuie.
>>>>>>>
>>>>>>> Vlad
>>>>>>>
>>>>>>> 2018-03-17 11:08 GMT+02:00 Costin Lupu <costin@gmail.com>:
>>>>>>>> Salutare,
>>>>>>>>
>>>>>>>> Încearcă te rog și cu buffering-ul dezactivat folosind comanda stdbuf:
>>>>>>>>
>>>>>>>> $ stdbuf -i 0 ./mini-shell < test_03.txt
>>>>>>>>
>>>>>>>> Costin
>>>>>>>>
>>>>>>>> On 03/16/2018 11:22 PM, Vlad Ştefănescu wrote:
>>>>>>>>> Buna seara,
>>>>>>>>>
>>>>>>>>> Am si eu exact aceeasi problema. Am incercat sa rulez executabilul si
>>>>>>>>> prin redirectare, dupa cum ati sugerat. Rezultatul este cel corect (ca
>>>>>>>>> si cum as fi rulat comenzile manual).
>>>>>>>>>
>>>>>>>>> Multumesc,
>>>>>>>>> Vlad
>>>>>>>>>
>>>>>>>>> 2018-03-16 22:35 GMT+02:00 Costin Lupu via so <so@cursuri.cs.pub.ro
>>>>>>>>> <mailto:so@cursuri.cs.pub.ro>>:
>>>>>>>>>
>>>>>>>>> On 03/16/2018 09:42 PM, Cristian Viorel Popa via so wrote:
>>>>>>>>> > Buna ziua,
>>>>>>>>> >
>>>>>>>>> > Dupa ce am implementat toate tipurile de redirectari, am 
>>>>>>>>> incercat sa
>>>>>>>>> > rulez checkerul si am observat ca nu primesc punctaj pe testul 
>>>>>>>>> 3. Asa
>>>>>>>

Re: [so] [Tema 2][Linux] Problema checker redirectare

2018-03-17 Fir de Conversatie Costin Lupu via so
Eu unul nu înțeleg ce nu-ți merge de fapt. Zici că ai rulat comenzile
anterioare în mașina virtuală și merg ok. Ți-am rulat și eu tema în
mașina virtuală și văd că trece testul 3. Pe vmchecker tema nu e
uploadată. Deci unde e problema de fapt?

Costin

On 03/17/2018 01:07 PM, Vlad Ştefănescu wrote:
> Am dat deja drept de "Reporter" la toti membrii mentionati. Contul meu
> de cs.curs este: vlad.stefanescu
> 
> 
> 
> 2018-03-17 12:53 GMT+02:00 Costin Lupu <costin@gmail.com>:
>> Încă n-avem acces la proiectul tău. La pagina cu indicații, secțiunea
>> [1] punctul 7 îți zice cum să dai acces membrilor echipei de teme.
>>
>> [1] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou
>>
>> Costin
>>
>> On 03/17/2018 12:28 PM, Vlad Ştefănescu wrote:
>>> Done!
>>>
>>> 2018-03-17 11:26 GMT+02:00 Costin Lupu <costin@gmail.com>:
>>>> Dacă e cum zici înseamnă că problema e în altă parte. Pune te rog tema
>>>> pe gitlab [1] ca să vedem mai exact unde ar fi problema. Indicațiile
>>>> despre cum să folosești gitlab sunt aici [2].
>>>>
>>>> [1] https://gitlab.cs.pub.ro/
>>>> [2] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab
>>>>
>>>> Costin
>>>>
>>>> On 03/17/2018 11:17 AM, Vlad Ştefănescu wrote:
>>>>> Salut,
>>>>>
>>>>> Multumesc pentru raspuns!
>>>>>
>>>>> Am incercat sa dezactivez buffering-ul si, din nou, obtin rezultatul
>>>>> corect. Toate fisierele se creeaza si in ele este scris ce trebuie.
>>>>>
>>>>> Vlad
>>>>>
>>>>> 2018-03-17 11:08 GMT+02:00 Costin Lupu <costin@gmail.com>:
>>>>>> Salutare,
>>>>>>
>>>>>> Încearcă te rog și cu buffering-ul dezactivat folosind comanda stdbuf:
>>>>>>
>>>>>> $ stdbuf -i 0 ./mini-shell < test_03.txt
>>>>>>
>>>>>> Costin
>>>>>>
>>>>>> On 03/16/2018 11:22 PM, Vlad Ştefănescu wrote:
>>>>>>> Buna seara,
>>>>>>>
>>>>>>> Am si eu exact aceeasi problema. Am incercat sa rulez executabilul si
>>>>>>> prin redirectare, dupa cum ati sugerat. Rezultatul este cel corect (ca
>>>>>>> si cum as fi rulat comenzile manual).
>>>>>>>
>>>>>>> Multumesc,
>>>>>>> Vlad
>>>>>>>
>>>>>>> 2018-03-16 22:35 GMT+02:00 Costin Lupu via so <so@cursuri.cs.pub.ro
>>>>>>> <mailto:so@cursuri.cs.pub.ro>>:
>>>>>>>
>>>>>>> On 03/16/2018 09:42 PM, Cristian Viorel Popa via so wrote:
>>>>>>> > Buna ziua,
>>>>>>> >
>>>>>>> > Dupa ce am implementat toate tipurile de redirectari, am incercat 
>>>>>>> sa
>>>>>>> > rulez checkerul si am observat ca nu primesc punctaj pe testul 3. 
>>>>>>> Asa
>>>>>>> > ca am setat valoarea "DO_CLEANUP" din "run_test.sh" la "yes" si am
>>>>>>> > verificat fisierele de output asteptate. Fisierul "out_01.txt" nu
>>>>>>> > apare deloc in folderul de output, iar fisierele "out_02.txt" si
>>>>>>> > "out_03.txt" sunt goale. As dori sa mentionez urmatoarele:
>>>>>>> >
>>>>>>> > 1. Am rulat manual secventa de comenzi din fisierul de input
>>>>>>> > "test_03.txt", iar outputul este cel corect.
>>>>>>> > 2. Mai mult, am incercat sa rulez checkerul pe o alta masina 
>>>>>>> virtuala,
>>>>>>> > pe 64 de biti. Acolo, primesc punctajul pentru testul mentionat.
>>>>>>> >
>>>>>>> > Este posibil sa fie o problema de la checker, avand in vedere ca,
>>>>>>> > ruland manual secventa de comenzi, obtin ceea ce trebuie?
>>>>>>>
>>>>>>> Ai început investigația foarte bine activând DO_CLEANUP. Ce trebuie 
>>>>>>> să
>>>>>>> faci în continuare e să testezi redirectând fișierul de input
>>>>>>> mini-shell-ului, așa cum face checker-ul:
>>>>>>>
>>>>>>> $ ./mini-shell < test_03.txt
>>>>>>>
>>>>>>> Să ne și zici te rog ce problemă vei descoperi și care este soluția.
>>>>>>>
>>>>>>>
>>>>>>> Costin
>>>>>>> ___
>>>>>>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>>>>>>> <http://ocw.cs.pub.ro/courses/so/info/lista-discutii>
>>>>>>>
>>>>>>>
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Linux] Problema checker redirectare

2018-03-17 Fir de Conversatie Costin Lupu via so
Încă n-avem acces la proiectul tău. La pagina cu indicații, secțiunea
[1] punctul 7 îți zice cum să dai acces membrilor echipei de teme.

[1] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou

Costin

On 03/17/2018 12:28 PM, Vlad Ştefănescu wrote:
> Done!
> 
> 2018-03-17 11:26 GMT+02:00 Costin Lupu <costin@gmail.com>:
>> Dacă e cum zici înseamnă că problema e în altă parte. Pune te rog tema
>> pe gitlab [1] ca să vedem mai exact unde ar fi problema. Indicațiile
>> despre cum să folosești gitlab sunt aici [2].
>>
>> [1] https://gitlab.cs.pub.ro/
>> [2] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab
>>
>> Costin
>>
>> On 03/17/2018 11:17 AM, Vlad Ştefănescu wrote:
>>> Salut,
>>>
>>> Multumesc pentru raspuns!
>>>
>>> Am incercat sa dezactivez buffering-ul si, din nou, obtin rezultatul
>>> corect. Toate fisierele se creeaza si in ele este scris ce trebuie.
>>>
>>> Vlad
>>>
>>> 2018-03-17 11:08 GMT+02:00 Costin Lupu <costin@gmail.com>:
>>>> Salutare,
>>>>
>>>> Încearcă te rog și cu buffering-ul dezactivat folosind comanda stdbuf:
>>>>
>>>> $ stdbuf -i 0 ./mini-shell < test_03.txt
>>>>
>>>> Costin
>>>>
>>>> On 03/16/2018 11:22 PM, Vlad Ştefănescu wrote:
>>>>> Buna seara,
>>>>>
>>>>> Am si eu exact aceeasi problema. Am incercat sa rulez executabilul si
>>>>> prin redirectare, dupa cum ati sugerat. Rezultatul este cel corect (ca
>>>>> si cum as fi rulat comenzile manual).
>>>>>
>>>>> Multumesc,
>>>>> Vlad
>>>>>
>>>>> 2018-03-16 22:35 GMT+02:00 Costin Lupu via so <so@cursuri.cs.pub.ro
>>>>> <mailto:so@cursuri.cs.pub.ro>>:
>>>>>
>>>>> On 03/16/2018 09:42 PM, Cristian Viorel Popa via so wrote:
>>>>> > Buna ziua,
>>>>> >
>>>>> > Dupa ce am implementat toate tipurile de redirectari, am incercat sa
>>>>> > rulez checkerul si am observat ca nu primesc punctaj pe testul 3. 
>>>>> Asa
>>>>> > ca am setat valoarea "DO_CLEANUP" din "run_test.sh" la "yes" si am
>>>>> > verificat fisierele de output asteptate. Fisierul "out_01.txt" nu
>>>>> > apare deloc in folderul de output, iar fisierele "out_02.txt" si
>>>>> > "out_03.txt" sunt goale. As dori sa mentionez urmatoarele:
>>>>> >
>>>>> > 1. Am rulat manual secventa de comenzi din fisierul de input
>>>>> > "test_03.txt", iar outputul este cel corect.
>>>>> > 2. Mai mult, am incercat sa rulez checkerul pe o alta masina 
>>>>> virtuala,
>>>>> > pe 64 de biti. Acolo, primesc punctajul pentru testul mentionat.
>>>>> >
>>>>> > Este posibil sa fie o problema de la checker, avand in vedere ca,
>>>>> > ruland manual secventa de comenzi, obtin ceea ce trebuie?
>>>>>
>>>>> Ai început investigația foarte bine activând DO_CLEANUP. Ce trebuie să
>>>>> faci în continuare e să testezi redirectând fișierul de input
>>>>> mini-shell-ului, așa cum face checker-ul:
>>>>>
>>>>> $ ./mini-shell < test_03.txt
>>>>>
>>>>> Să ne și zici te rog ce problemă vei descoperi și care este soluția.
>>>>>
>>>>>
>>>>> Costin
>>>>> ___
>>>>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>>>>> <http://ocw.cs.pub.ro/courses/so/info/lista-discutii>
>>>>>
>>>>>
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Linux] Problema checker redirectare

2018-03-17 Fir de Conversatie Costin Lupu via so
Dacă e cum zici înseamnă că problema e în altă parte. Pune te rog tema
pe gitlab [1] ca să vedem mai exact unde ar fi problema. Indicațiile
despre cum să folosești gitlab sunt aici [2].

[1] https://gitlab.cs.pub.ro/
[2] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab

Costin

On 03/17/2018 11:17 AM, Vlad Ştefănescu wrote:
> Salut,
> 
> Multumesc pentru raspuns!
> 
> Am incercat sa dezactivez buffering-ul si, din nou, obtin rezultatul
> corect. Toate fisierele se creeaza si in ele este scris ce trebuie.
> 
> Vlad
> 
> 2018-03-17 11:08 GMT+02:00 Costin Lupu <costin@gmail.com>:
>> Salutare,
>>
>> Încearcă te rog și cu buffering-ul dezactivat folosind comanda stdbuf:
>>
>> $ stdbuf -i 0 ./mini-shell < test_03.txt
>>
>> Costin
>>
>> On 03/16/2018 11:22 PM, Vlad Ştefănescu wrote:
>>> Buna seara,
>>>
>>> Am si eu exact aceeasi problema. Am incercat sa rulez executabilul si
>>> prin redirectare, dupa cum ati sugerat. Rezultatul este cel corect (ca
>>> si cum as fi rulat comenzile manual).
>>>
>>> Multumesc,
>>> Vlad
>>>
>>> 2018-03-16 22:35 GMT+02:00 Costin Lupu via so <so@cursuri.cs.pub.ro
>>> <mailto:so@cursuri.cs.pub.ro>>:
>>>
>>> On 03/16/2018 09:42 PM, Cristian Viorel Popa via so wrote:
>>> > Buna ziua,
>>> >
>>> > Dupa ce am implementat toate tipurile de redirectari, am incercat sa
>>> > rulez checkerul si am observat ca nu primesc punctaj pe testul 3. Asa
>>> > ca am setat valoarea "DO_CLEANUP" din "run_test.sh" la "yes" si am
>>> > verificat fisierele de output asteptate. Fisierul "out_01.txt" nu
>>> > apare deloc in folderul de output, iar fisierele "out_02.txt" si
>>> > "out_03.txt" sunt goale. As dori sa mentionez urmatoarele:
>>> >
>>> > 1. Am rulat manual secventa de comenzi din fisierul de input
>>> > "test_03.txt", iar outputul este cel corect.
>>> > 2. Mai mult, am incercat sa rulez checkerul pe o alta masina virtuala,
>>> > pe 64 de biti. Acolo, primesc punctajul pentru testul mentionat.
>>> >
>>> > Este posibil sa fie o problema de la checker, avand in vedere ca,
>>> > ruland manual secventa de comenzi, obtin ceea ce trebuie?
>>>
>>> Ai început investigația foarte bine activând DO_CLEANUP. Ce trebuie să
>>> faci în continuare e să testezi redirectând fișierul de input
>>> mini-shell-ului, așa cum face checker-ul:
>>>
>>> $ ./mini-shell < test_03.txt
>>>
>>> Să ne și zici te rog ce problemă vei descoperi și care este soluția.
>>>
>>>
>>> Costin
>>> ___
>>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>>> <http://ocw.cs.pub.ro/courses/so/info/lista-discutii>
>>>
>>>
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Linux] Problema checker redirectare

2018-03-17 Fir de Conversatie Costin Lupu via so
Salutare,

Încearcă te rog și cu buffering-ul dezactivat folosind comanda stdbuf:

$ stdbuf -i 0 ./mini-shell < test_03.txt

Costin

On 03/16/2018 11:22 PM, Vlad Ştefănescu wrote:
> Buna seara,
> 
> Am si eu exact aceeasi problema. Am incercat sa rulez executabilul si
> prin redirectare, dupa cum ati sugerat. Rezultatul este cel corect (ca
> si cum as fi rulat comenzile manual).
> 
> Multumesc,
> Vlad
> 
> 2018-03-16 22:35 GMT+02:00 Costin Lupu via so <so@cursuri.cs.pub.ro
> <mailto:so@cursuri.cs.pub.ro>>:
> 
> On 03/16/2018 09:42 PM, Cristian Viorel Popa via so wrote:
> > Buna ziua,
> >
> > Dupa ce am implementat toate tipurile de redirectari, am incercat sa
> > rulez checkerul si am observat ca nu primesc punctaj pe testul 3. Asa
> > ca am setat valoarea "DO_CLEANUP" din "run_test.sh" la "yes" si am
> > verificat fisierele de output asteptate. Fisierul "out_01.txt" nu
> > apare deloc in folderul de output, iar fisierele "out_02.txt" si
> > "out_03.txt" sunt goale. As dori sa mentionez urmatoarele:
> >
> > 1. Am rulat manual secventa de comenzi din fisierul de input
> > "test_03.txt", iar outputul este cel corect.
> > 2. Mai mult, am incercat sa rulez checkerul pe o alta masina virtuala,
> > pe 64 de biti. Acolo, primesc punctajul pentru testul mentionat.
> >
> > Este posibil sa fie o problema de la checker, avand in vedere ca,
> > ruland manual secventa de comenzi, obtin ceea ce trebuie?
> 
> Ai început investigația foarte bine activând DO_CLEANUP. Ce trebuie să
> faci în continuare e să testezi redirectând fișierul de input
> mini-shell-ului, așa cum face checker-ul:
> 
> $ ./mini-shell < test_03.txt
> 
> Să ne și zici te rog ce problemă vei descoperi și care este soluția.
> 
> 
> Costin
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> <http://ocw.cs.pub.ro/courses/so/info/lista-discutii>
> 
> 
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Linux] Problema checker redirectare

2018-03-16 Fir de Conversatie Costin Lupu via so
On 03/16/2018 09:42 PM, Cristian Viorel Popa via so wrote:
> Buna ziua,
> 
> Dupa ce am implementat toate tipurile de redirectari, am incercat sa
> rulez checkerul si am observat ca nu primesc punctaj pe testul 3. Asa
> ca am setat valoarea "DO_CLEANUP" din "run_test.sh" la "yes" si am
> verificat fisierele de output asteptate. Fisierul "out_01.txt" nu
> apare deloc in folderul de output, iar fisierele "out_02.txt" si
> "out_03.txt" sunt goale. As dori sa mentionez urmatoarele:
> 
> 1. Am rulat manual secventa de comenzi din fisierul de input
> "test_03.txt", iar outputul este cel corect.
> 2. Mai mult, am incercat sa rulez checkerul pe o alta masina virtuala,
> pe 64 de biti. Acolo, primesc punctajul pentru testul mentionat.
> 
> Este posibil sa fie o problema de la checker, avand in vedere ca,
> ruland manual secventa de comenzi, obtin ceea ce trebuie?

Ai început investigația foarte bine activând DO_CLEANUP. Ce trebuie să
faci în continuare e să testezi redirectând fișierul de input
mini-shell-ului, așa cum face checker-ul:

$ ./mini-shell < test_03.txt

Să ne și zici te rog ce problemă vei descoperi și care este soluția.


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] [Tema2][General] Publicare Tema 2 - Mini-shell

2018-03-15 Fir de Conversatie Costin Lupu via so
Salutare,

Tema de casă numărul 2 este disponibilă pe wiki [1] pentru rezolvare și
presupune implementarea unui mini-shell. Este indicat să vă apucați din
timp de rezolvare deoarece nivelul de dificultate este în mod cert mai
ridicat decât în cazul temei 1. Termenele limită pentru temă sunt:

* Deadline soft: 28 Martie 2018, ora 23:55
* Deadline hard: 4 Aprilie 2018, ora 23:55

Vă recomandăm să citiți cu atenție *toate* informațiile de pe pagina
temei [1] și să parcurgeți indicațiile prezentate acolo pentru o
implementare cât mai completă.

Materialele ajutătoare sunt disponibile *doar* în repo-ul de pe Github
[2]. Acolo veți găsi scheletele de cod, checker-ul și sursele
parser-ului. Dacă ați folosit repo-ul și la tema 1, nu uitați să vă
updatați clonele locale (cu comanda 'git pull'). Materialele ajutătoare
au rolul de a vă ușura munca: vă recomandăm să investiți timp în a
înțelege utilizarea parserului pus la dispoziție.

Nu uitați să testați implementarea voastră în mașinile virtuale [3]
înainte de a uploada pe vmchecker [4]. Problemele semnalate de vmchecker
se vor manifesta și în mașinile virtuale, unde veți rezolva eventualele
defecte din implementare.

Studenții care și-au creat un repo în Gitlab [5] pentru rezolvarea
temelor își pot updata clonele locale re-executând scriptul
'so-create-repo.sh' pentru cele mai recente modificări. Reiterăm
utilitatea folosirii repo-urilor *private* din Gitlab: pe lângă
controlul ridicat al versiunilor surselor voastre, un alt avantaj util
îl reprezintă faptul că ne puteți indica pe listă link-ul către
implementarea voastră cu precizie până la indicarea liniei de cod
problematice.

Mult spor!

[1] http://ocw.cs.pub.ro/courses/so/teme/tema-2
[2] https://github.com/systems-cs-pub-ro/so-assignments
[3] http://ocw.cs.pub.ro/courses/so/info/mv
[4] https://vmchecker.cs.pub.ro
[5] https://gitlab.cs.pub.ro/


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Linux] [Tema5] Diferenta rulare in teminal Vs checker

2017-05-24 Fir de Conversatie Costin Lupu via so
On Wed, 2017-05-24 at 18:47 +0300, Radu Codescu wrote:
> Salut,
> 
> 
> Am incercat sa rulez manual asa si nu este nimic schimbat.
> 
> Chiar si cu gdb nu afiseaza nimic:
> ./_test/sockop_preload.so gdb ./aws
> Segmentation fault (core dumped)

Se pare că nu ne înțelegem. Comenzile sunt astea:

rulare_normală$ LD_PRELOAD=./_test/sockop_preload.so ./aws
debugging$ LD_PRELOAD=./_test/sockop_preload.so gdb ./aws

ATENȚIE: E un 'LD_PRELOAD=' (variabilă de mediu) acolo, nu se execută
biblioteca, ci executabilul!!!

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Linux] [Tema5] Diferenta rulare in teminal Vs checker

2017-05-24 Fir de Conversatie Costin Lupu via so
On Wed, 2017-05-24 at 18:24 +0300, Radu Codescu wrote:
> Salut,
> 
> 
> Aceeasi problema o am si eu.
> Am testat si daca rulez _test/sockop_preload.so ./aws primesc seg
> fault, dar nu porneste procesul aws. Nu intra deloc, nici in main.
> 
> 
> Nu stiu care ar fi problema.

Salutare, Radu,

Nici eu nu știu care ar fi problema. Dar gdb te-ar ajuta cu siguranță în
cazul ăsta.

$ LD_PRELOAD=./_test/sockop_preload.so gdb ./aws
(gdb) run
Program received signal SIGSEGV, Interrupt.
(gdb) bt
#0  0x77bdb4b8 in aici_e_functia_problema() in myfile.c:123
...
#3  0x0040118c in main ()

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Linux] [Tema5] Diferenta rulare in teminal Vs checker

2017-05-24 Fir de Conversatie Costin Lupu via so
On Wed, 2017-05-24 at 17:23 +0300, Costin Lupu wrote:
> On Wed, 2017-05-24 at 12:20 +0300, Andrei Simion-Constantinescu via so
> wrote:
> > Buna ziua,
> > 
> > Am terminat de implementat transmiterea de fisiere statice si intampin
> > umatoarea problema. Daca rulez separat continutul unui test in
> > terminal, descarcarea fisierului are loc cu succes. De exemplu pentru
> > testul 16, ruleze ./aws iar in alt terminal dau comanda: wget -t 1
> > "http://localhost:/static/small00.dat; -O small00.dat, transferul
> > fisierului avand loc cu succes. Insa daca rulez ./_test/run_test.sh
> > 16, wget iese cu codul de eroare 4, adica network failure. Nu pot sa
> > imi dau seama ce gresesc, nu stiu ce mai face checkerul in plus in
> > afara executiei comenzii din functia aferenta testului (initializarea
> > mediului nu este reprezentata doar de pornirea server-ului)? Aveti
> > idee care ar putea fi problema?
> 
> Presupun că rulezi './_test/run_test.sh' din directorul checker-ului. Ai
> acolo (link către) executabilul server-ului? Eroare pare să-ți apară din
> cauză că serverul nu e pornit.

Ca diferență, checker-ul lansează serverul în execuție folosind comanda:
$ LD_PRELOAD=_test/sockop_preload.so ./aws

Asta înseamnă că apelurile send/recv/sendfile sunt definite în
biblioteca sockop_preload.so. Deci ar mai fi nevoie să verifici că
folosești apelurile send/recv/sendfile corect (aka verifică ce-ți
returnează).

Pentru debugging de scripturi, în cazul în care vrei să vezi toate
comenzile executate de un shell script, poți folosi opțiunea '-x' a
bash-ului:
$ bash -x ./myscript

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema5][Linux][Dimensiune buffer citire fisiere dinamice]

2017-05-23 Fir de Conversatie Costin Lupu via so
On Tue, 2017-05-23 at 15:58 +0300, Theodor Stoican via so wrote:
> Salutare,
> 
> 
> Exista o limita a buffer-ului de citire in cazul fisierelor dinamice?
> Mie imi trec toate testele cu un buffer de 400k pe vmchecker (cu
> testul 33 in 6-7s). Am ales dimensiunea asta, dupa ce am facut putin
> "profiling" pentru mai multe dimensiuni, tinand cont de mai multi
> parametri. Exista vreo restrictie in acest sens?

Nu e o restricție, dar ne-ar interesa cum ai ajuns la acea dimensiune:
ce ai urmărit, ce efecte ai văzut și de ce ai ajuns la concluzia că asta
ar fi dimensiunea optimă a buffer-ului. Pune informațiile astea în
README.

Super tare ar fi dacă ai trasa un grafic cu durata descărcării aceluiași
fișier pentru mai multe dimensiuni ale buffer-ului. Ai putea parametriza
dimensiunea buffer-ului (argument în linie de comandă pentru server) și
automatiza sesiunile cu un script.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 5] nc -q

2017-05-21 Fir de Conversatie Costin Lupu via so
On Sun, 2017-05-21 at 18:01 +0300, Relu Dragan wrote:
> Salut,
> 
> 
> Oricat as seta numarul de secunde tot nu mi se afiseaza mesajul. 
> Nu cred ca e o problema de performanta, reply-ul imi ajunge in mai
> putin de o secunda fara optiunea -q.

Hmm, vezi și cu opțiunea -vv pentru verbosity la nc să vezi ce-ți
afișează. Mai încearcă și cu nc pe post de server ca să te asiguri că nu
e o problemă cu nc:

server$ cat http-rsp
HTTP/1.1 200 OK
Content-Length: 4
Connection: close

foo
server$ cat http-rsp | nc -l -p 
client$ echo -ne "GET /dynamic/foo HTTP/1.0\r\n\r\n" | \
   nc -vv -q 1 localhost 

Dacă nu se comportă dubios nc, cel mai probabil e din implementare.
Asigură-te că verifici ce-ți returnează send.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 5] nc -q

2017-05-21 Fir de Conversatie Costin Lupu via so
On Sun, 2017-05-21 at 17:47 +0300, Relu Dragan via so wrote:
> Salut,
> 
> Dupa ce pornesc serverul, daca ma conectez cu un client cu comanda
> echo
> -ne "GET cale_catre_fisier HTTP/1.0\r\n\r\n" | nc  localhost 
> 
> primesc http reply in format corect si imi este afisat la stdout-ul
> clientului. Insa, daca ma conectez cu comanda echo -ne "GET
> cale_catre_fisier HTTP/1.0\r\n\r\n" | nc  -q 1 localhost 
> 
> desi serverul trimite pe socketul clientului mesajul corespunzator,
> acesta nu este printat la stdout. Care ar putea fi problema?

Ai încercat să mărești numărul de secunde (valoarea opțiunii -q)? Ai
măsurat cât durează recepționarea răspunsului HTTP când folosești fără
opțiunea -q (la prima comandă mă refer).

Se poate întâmpla să ai delay-uri în mașină virtuală, primirea
răspunsului să dureze mai mult de o secundă. Pe de altă parte e posibil
și să ai delay-uri din cauza implementării temei.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema5] Problema vmchecker

2017-05-20 Fir de Conversatie Costin Lupu via so
On Sat, 2017-05-20 at 20:08 +0300, Andrei Robert Baronescu via so wrote:
> Salut,
> 
> Am terminat de implementat tema 5 și local îmi trec toate testele,
> insă atunci când rulez pe vmchecker nu-mi arată ce se intamplă după
> testul 25. E posibil să fie din cauza vmchecker-ului?

Nu e din cauza vmchecker-ului. Testează în mașina virtuală [1].

[1] https://ocw.cs.pub.ro/courses/so/info/mv

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema5] Bug exasperant

2017-05-13 Fir de Conversatie Costin Lupu via so
On Sat, 2017-05-13 at 18:02 +0300, Andrei Mardale wrote:
> Salut!
> 
> 
> Multumesc mult pentru sfaturi! Am rezolvat in mare parte. Acum am o
> alta problema: uneori, la ultimul test (cel cu ambele tipuri de
> fisiere) se intampla urmatorul lucru: primesc o cerere pentru un
> fisier, trimit fisierul corect, insa dupa un timp, primesc din nou o
> cerere pentru acelasi fisier. A doua oara, parserul gaseste o cale
> gresita, ex ./static/large07.datt . Astfel ca cel mai probabil se
> trimite un 404 Not Found si se suprascrie fisierul initial trimis cu
> un fisier gol ( 0 K) .

N-am înțeles prea bine care e problema, dar dacă serverul primește
request pentru fișierul './static/large07.datt' înseamnă că iar ai o
problemă cu inițializarea - de data asta a buffer-ului în care se
salvează calea request-ului. Uitându-mă în codul tău văd că presupunerea
mea e întemeiată - folosești mereu fără să cureți request_path-ul
înainte:

memcpy(request_path, buffer, buffer_len)

Pe lângă tema 5 îți mai dau 2 teme:
1) De analizat diferențele dintre memcpy și strcpy. Asta e și întrebare
de interviu pentru joburi entry-level.
2) Învață să folosești debugger-ul gdb [1]. Nu vei avea mereu oameni
care să-ți răspundă la întrebări, mai ales că pe viitor problemele vor
fi din ce în ce mai complexe. Dacă nu te împaci cu gdb-ul în linie de
comandă, atunci folosește-l în IDE-ul tău preferat. Majoritatea
IDE-urilor pentru dezvoltare C pe Linux au un frontend grafic pentru
gdb. Personal când am nevoie de un frontend grafic folosesc Eclipse CDT.
Găsești tutoriale pe net pentru toate. Spre exemplu aici [2] găsești un
tutorial video pentru debugging Java în Eclipse (pentru debugging C în
Eclipse CDT abordarea e aceeași).

> Ma gandesc ca ar putea fi din cauza modului in care inchid conexiunea
> in cazul fisierelor statice? Eu apelez functia 'connection_remove()',
> in care se inchide socket-ul, se schimba starea in
> STATE_CONNECTION_CLOSED si se face free(con) . 

[1] https://ocw.cs.pub.ro/courses/so/laboratoare/resurse/gdb
[2] https://www.youtube.com/watch?v=9gAjIQc4bPU

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2] Contestatie

2017-05-13 Fir de Conversatie Costin Lupu via so
On Sat, 2017-05-13 at 11:08 +0300, Andrei Simion-Constantinescu via so
wrote:
> Salut,
> 
> 
> Azi am observat ca nu am primit puncte Karma pentru tema rapida,
> implementarea pentru Linux, pe care am trimis-o cu 16 zile inainte de
> deadline. Imi cer scuze ca semnalez cam tarziu problema, dar pana acum
> nu am apucat sa verific situatia detaliata a punctelor Karma din
> catalog.

Pe wiki [1] scrie că primesc karma "primii 30 care trimit tema
respectivă corect și complet (corect și complet == să treacă toate
testele și să nu aibă depunctări la corectare)". Ori tema ta pe Linux
are depunctări.

Tot pe wiki [2] scrie ca mesajele pentru contestații se trimit la adresa
'so-t...@cs.pub.ro'.

[1] https://ocw.cs.pub.ro/courses/so/meta/karma#cum_se_acorda
[2] https://ocw.cs.pub.ro/courses/so/teme/contestatii

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema5] Bug exasperant

2017-05-13 Fir de Conversatie Costin Lupu via so
On Sat, 2017-05-13 at 13:52 +0300, Ioana Ciornei via so wrote:
> Redirectez mesajul către lista de so.
> 
> 
> 
> On May 13, 2017 12:11, "Andrei Mardale" 
> wrote:
> Salut,
> 
> 
> Am inceput sa lucrez tema 5, AWS. Aproape am terminat, insa
> imi pica ultimele 4 teste uneori (de la 31 .. 35). Testul 31
> pica constant.. Am facut debugging si am observat ca nu se
> incepe transferul al doilea. Asta pentru ca, desi folosesc
> connection_remove(conn); si rc = w_epoll_remove_ptr(epollfd,
> conn->efd, conn); dupa ce termin de transferat pentru primul
> client, cumva, conexiunea nu este eliminata... astfel ca la
> urmatoarea notificare de la epoll, tot pentru acea conexiune
> sunt datele.. astfel ca programul se blocheaza in functia
> wait_aio(conn); ...

Următorul event de input este cel pentru network (data available for
receive). Însă îl tratezi eronat ca fiind event de input pentru citirile
de pe disk. ATENȚIE: un file descriptor invalid are o valoare mai mică
decât 0 (0 e valoare validă, vezi STDIN_FILENO). Inițializează-ți
*toate* câmpurile structurii când creezi o conexiune nouă.

> Chiar nu imi dau seama de ce se intampla asta... de asemenea,
> voiam sa intreb daca acel eventfd pentru fiecare conexiune, ar
> trebui adaugat cu w_epoll_add_fd sau w_epoll_add_ptr_in si sa
> fie legat la conexiunea curenta?

Semantica e aceeași pentru ambele apeluri. Doar în cazul lui
'w_epoll_add_ptr_in' mai adaugi niște informație în plus pentru a
identifica ulterior mai punctual evenimentul primit. Asta înseamnă că e
de folosit când același file descriptor este asociat cu mai multe
entități (a se citi conexiuni în cazul temei 5).

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema 3] Portabilitate

2017-04-25 Fir de Conversatie Costin Lupu via so
On Mon, 2017-04-24 at 19:39 +, Darius-Florentin Neatu via so wrote:
> Salut,
> 
> 
> Am incercat sa fac tema portabila. Am creat wrappere peste functiile
> de sistem si am acelasi cod in vmsim.c.
> Diferenta intre cele doua sisteme de operare este folosirea fisierului
> wrapper_lin.c, respectiv wrapper_win.c (din Makefile selectez doar un
> singur fisier care va fi compilat).
> 
> 
> Am cateva nelamurari.
> 
> 
> 1. Pentru a se considera o implementare portabila mai este necesar sa
> fac ceva? (Ex. sa reunesc cele doua fisiere in wrapper.c. Am
> considerat ca este mai bine sa am doua fisiere mai mici, decat sa am
> unul foarte mare.)

E în regulă așa. De fapt asta e abordarea recomandată.

> 2. Deoarece compilatoarele sunt diferite (gcc vs cl), dar si sistemele
> de make (make vs nmake), am doua fisiere Makefile (Makefile.lin si
> Makefile.win - fiecare foloseste un singur fisier wrapper-???.c).
> 
> Pentru a decide ce Makefile trebuie sa folosesc in functie de SO, am
> folosit o solutie de pe stackoverflow[1] - am creat fisierul Makefile.
> Se putea obtine o solutie de compilare mai buna? 

Helăăău, ce stackoverflow? Zice la SO în lab 01 [3] și tema 1 [4]
(remember?) să folosești GNUmakefile pentru Linux și Makefile pentru
Windows. Așa ai doar 2 makefile-uri în loc de 3.

> 3. Momentan in arhiva bag toate fisierele (surse, 1xREADME,
> 3xMakefile). Cu aceeasi arhiva trec testele pe vmchecker pe ambele
> sisteme.
> Este ok daca las arhiva asa cum este? (sa nu impart in doua arhive, sa
> nu fac 2 README-uri :D).

E în regulă așa. Așa ar trebui să fie, mai puțin makefile-urile (vezi
observația 2 de mai sus).

> P.S. Atasez link-ul de pe GitLab[2] pentru a putea arunca o privire
> peste cod, daca este cazul.
> 
> 
> [1] 
> http://stackoverflow.com/questions/8270391/use-the-same-makefile-for-make-linux-and-nmakewindows/30906085#30906085
> [2] https://gitlab.cs.pub.ro/darius.neatu1995/SO

[3] https://ocw.cs.pub.ro/courses/so/laboratoare/laborator-01
[4] https://ocw.cs.pub.ro/courses/so/teme/tema-1#precizari_vmchecker


Costin



___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2] Semnare surse

2017-04-05 Fir de Conversatie Costin Lupu via so
On Wed, 2017-04-05 at 09:54 +0300, Alexandru Elisei via so wrote:
> Daca am folosit scheletul pus la dispozitie, semnam doar fisierele pe
> care le-am modificat?

Da.

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux]Intrebari expandare si redirectionare

2017-04-05 Fir de Conversatie Costin Lupu via so
On Wed, 2017-04-05 at 09:30 +0200, Stefanca Stefan wrote:
> 2017-04-04 22:51 GMT+03:00 Costin Lupu :
> On Tue, 2017-04-04 at 18:54 +0200, Stefanca Stefan via so
> wrote:
> > Salut,
> >
> >
> > Am rezolvat tema si am vazut cam in ce constau testele.
> >
> >
> > 1) Se verifica expandarea si in alte parti decat argumentele
> > comenzilor externe?
> > (e.g. in redirectionari, in comanda, in toate partile
> comenzilor
> > interne)
> 
> Expandarea trebuie să meargă pe oricare cuvânt al comenzii.
> Înțeleg că
> nu folosești scheletul de cod? 
> 
> 
> Folosesc scheletul de cod.
> 
> 
> Sa consideram inputul:
> 
> 
> MYDIR=.
> MYFILE1=ls1
> MYFILE2=ls2
> MYARG=-l
> MYCOM=ls
> 
> 
> $MYCOM $MYARG &>$MYDIR/$MYFILE1
> 
> 
> cat <$MYDIR/$MYFILE1 >$MYDIR/$MYFILE2
> 
> 
> Din cate inteleg eu, un astfel de test verifica functionalitati
> cerute. Dar nu se gaseste nimic similar in suita de teste.

E foarte adevărat.

> Se poate adauga in suita de teste ceva similar? 

O să avem în vedere pentru anul viitor.

> > 2) Este posibil sa avem mai multe parti care sa trebuiasca
> expandate
> > in cadrul aceluiasi cuvant?
> 
> Și în cazul ăsta scheletul de cod ar trebui să-și facă treaba.
> 
> > 3) In teste am observat ca se verifica redirectionarea pe
> comenzile
> > interne. Sunt aceste verificari relevante? Nu trec un test
> din acest
> > motiv.
> 
> Nu înțeleg la ce te referi când zici "relevante". Pentru
> punctajul
> temei, cred că e evident. Pentru un shell în general, la fel e
> relevant
> deoarece comanda internă ar putea afișa ceva ce-aș vrea
> redirectat
> într-un fișier (vezi comanda internă 'pushd' în bash). Ce se
> vrea prin
> această cerință este o generalizare a redirectărilor
> indiferent de
> natura comenzii (internă/externă). 
> 
> 
> Ma refer la faptul ca nu s-a cerut nici un fel de output sau input
> pentru cd/exit/quit. Trebuie sa afisez ceva pentru fiecare comanda? Le
> implementez pentru orice eventualitate?

În cazul mini-shell-ului, comenzile interne nu trebuie să afișeze nimic.
E nevoie doar să se creeze fișierele pentru redirectare.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO] [Tema2] [Windows] Sources check fail

2017-04-04 Fir de Conversatie Costin Lupu via so
Încă o dată: folosește lista de discuții pentru orice întrebare legată
de teme (vezi CC).

Costin

On Tue, 2017-04-04 at 22:32 +0300, Andrei Mihalea wrote:
> Dupa ce am folosit wrapper-ul inca imi dadeau erorile.
> 
> 
> Am rezolvat astfel: Open with Visual Studio > File > Advanced Save
> Options > Line Endings: Unix(LF).
> 
> Probabil imi aparuse o data cand am deschis fisierul acel pop-up cu
> "Inconsistent line endings" si din neatentie am setat pentru Windows.
> 
> 
> 2017-04-04 19:13 GMT+03:00 Costin Lupu :
> On Tue, 2017-04-04 at 18:54 +0300, Andrei Mihalea wrote:
> > Salut,
> >
> >
> > Primesc fail la testul de coding style si nu stiu de ce.
> Orice
> > comentariu pe mai multe linii da eroarea.
> > ../skel-windows/cmd.c:2: ERROR:TRAILING_WHITESPACE: trailing
> > whitespace.
> 
> Ai folosit wrapper-ul [1] peste checkpatch ca să verifici doar
> sursa
> 'cmd.c'?
> 
> PS: Folosește lista de discuții pentru orice întrebare legată
> de teme.
> Dacă vrei să ne arăți și codul folosește Gitlab [2].
> 
> [1]
> 
> https://github.com/systems-cs-pub-ro/so-assignments/blob/master/checkpatch_wrapper.sh
> [2] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab
> 
> Costin
> 
> 
> 
> 


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux]Intrebari expandare si redirectionare

2017-04-04 Fir de Conversatie Costin Lupu via so
On Tue, 2017-04-04 at 18:54 +0200, Stefanca Stefan via so wrote:
> Salut,
> 
> 
> Am rezolvat tema si am vazut cam in ce constau testele.
> 
> 
> 1) Se verifica expandarea si in alte parti decat argumentele
> comenzilor externe?
> (e.g. in redirectionari, in comanda, in toate partile comenzilor
> interne)

Expandarea trebuie să meargă pe oricare cuvânt al comenzii. Înțeleg că
nu folosești scheletul de cod?

> 2) Este posibil sa avem mai multe parti care sa trebuiasca expandate
> in cadrul aceluiasi cuvant?

Și în cazul ăsta scheletul de cod ar trebui să-și facă treaba.

> 3) In teste am observat ca se verifica redirectionarea pe comenzile
> interne. Sunt aceste verificari relevante? Nu trec un test din acest
> motiv.

Nu înțeleg la ce te referi când zici "relevante". Pentru punctajul
temei, cred că e evident. Pentru un shell în general, la fel e relevant
deoarece comanda internă ar putea afișa ceva ce-aș vrea redirectat
într-un fișier (vezi comanda internă 'pushd' în bash). Ce se vrea prin
această cerință este o generalizare a redirectărilor indiferent de
natura comenzii (internă/externă).

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Parametru CreatePipe

2017-04-04 Fir de Conversatie Costin Lupu via so
On Tue, 2017-04-04 at 16:56 +0300, Cotet Teodor Mihai via so wrote:
> Mersi pentru raspunsul detaliat.
> Cu toate astea sa inteleg ca aceasta abordare stil laborator (unde
> aveam doar comenzi simple care aveau nevoie de un singur executabil)
> merge si la operatorul de paralelizare? (fara threaduri, doar cu
> createprocess)

Simplul fapt că încă nu s-a discutat despre threaduri la laborator ar
trebui să indice că tema se poate rezolva fără threaduri. Temele sunt
sincronizate cu laboratoarele. O să vină și vremea threadurilor la tema
4.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO] [Tema2] [Windows] Sources check fail

2017-04-04 Fir de Conversatie Costin Lupu via so
On Tue, 2017-04-04 at 18:54 +0300, Andrei Mihalea wrote:
> Salut,
> 
> 
> Primesc fail la testul de coding style si nu stiu de ce. Orice
> comentariu pe mai multe linii da eroarea.
> ../skel-windows/cmd.c:2: ERROR:TRAILING_WHITESPACE: trailing
> whitespace.

Ai folosit wrapper-ul [1] peste checkpatch ca să verifici doar sursa
'cmd.c'?

PS: Folosește lista de discuții pentru orice întrebare legată de teme.
Dacă vrei să ne arăți și codul folosește Gitlab [2].

[1]
https://github.com/systems-cs-pub-ro/so-assignments/blob/master/checkpatch_wrapper.sh
[2] https://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema2][Linux]Diferente output checker vs. rulare "de mana"

2017-04-04 Fir de Conversatie Costin Lupu via so
On Tue, 2017-04-04 at 12:52 +0300, Andreea Dobroteanu via so wrote:
> Buna, 
> 
> 
> Da, spre exemplu, pentru testul 10: am luat fiecare comanda in
> mini-shell, pe rand, iar output-ul obtinut este cel asteptat.

Până la testul 10, localizează ce comandă nu este tratată corect în
testul 9. Este clar că nu ai implementat corect 'single pipe command'.
Primele 4 comenzi din testul 9 verifică funcționalitatea de bază în
cazul operatorului pipe.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2] system() calls

2017-04-03 Fir de Conversatie Costin Lupu via so
On Mon, 2017-04-03 at 14:04 +0300, Vlad Popa via so wrote:
> Salut,
> 
> 
> In implementarea temei, pentru comenzile simple (parse_simple) am
> folosit metoda system(cmd) care in spate face tot fork() si exec(),
> dar am observat ca se mentioneaza prin cerinta despre system() ca
> fiind "API forbidden".
> 
> 
> Este okei folosirea lui system() doar pentru comenzile simple?

Nu, nu e ok. Interzis înseamnă deloc.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Parametru CreatePipe

2017-04-03 Fir de Conversatie Costin Lupu via so
On Mon, 2017-04-03 at 10:48 +0300, Theodor Stoican wrote:
> Pe 3 aprilie 2017, 10:01, Costin Lupu  a scris:
> On Mon, 2017-04-03 at 09:42 +0300, Theodor Stoican via so
> wrote:
> > Salut,
> >
> >
> >
> > > Aici e o problemă. Subcomenzile a, b și c *trebuie* să
> ruleze în
> > > paralel. De altfel ne putem gândi la operatorul '|' ca la
> un operator de
> > > paralelizare, cu diferența că subcomenzile comunică între
> ele
> >
> >
> > Se vrea acest comportament doar pentru comenzile externe? Nu
> vad cum
> > ai putea respecta acest comportament pentru cd, fara sa
> deschizi
> > thread-uri.
> 
> Fix ca în cazul operatorului de paralelizare, și pentru
> operatorul pipe
> procesele pornesc în paralel și se pot termina în orice
> ordine. Nu ai
> nevoie de thread-uri. Nu înțeleg de unde vine nelămurirea ta,
> mai am
> nevoie de niște clarificări în sensul ăsta.
> 
> Ia spre exemplu comanda: 'cd | echo foo'. Subcomanda 'echo
> foo' nici
> măcar nu citește de la stdin.
>  
> Nu inteleg cum poti lansa cele 2 procese in paralel fara sa pornesti
> threaduri. 

Păi și thread-urile alea nu tot secvențial le pornești?

> Singura varianta pe care o vad e sa transformi functia intr-un
> executabil si sa i-l dai ca parametru lui CreateProcess. Altfel
> parcurgerea arborelui e inerent secventiala. Imi scapa ceva?

Cred că tu te gândești să pornești procesele fix în același timp. Ori
asta ar fi posibil doar pe sistemele multiprocesor și doar dacă
kernel-ul ți-ar furniza un astfel de syscall (de care eu n-am auzit).
Ori mini-shell-ul (ca și bash-ul) pornește comenzi în paralel indiferent
de numărul de procesoare de pe sistem.

Costin



___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Parametru CreatePipe

2017-04-03 Fir de Conversatie Costin Lupu via so
On Mon, 2017-04-03 at 09:42 +0300, Theodor Stoican via so wrote:
> Salut,
> 
>  
> 
> > Aici e o problemă. Subcomenzile a, b și c *trebuie* să ruleze în 
> > paralel. De altfel ne putem gândi la operatorul '|' ca la un operator de 
> > paralelizare, cu diferența că subcomenzile comunică între ele
>  
> 
> Se vrea acest comportament doar pentru comenzile externe? Nu vad cum
> ai putea respecta acest comportament pentru cd, fara sa deschizi
> thread-uri.

Fix ca în cazul operatorului de paralelizare, și pentru operatorul pipe
procesele pornesc în paralel și se pot termina în orice ordine. Nu ai
nevoie de thread-uri. Nu înțeleg de unde vine nelămurirea ta, mai am
nevoie de niște clarificări în sensul ăsta.

Ia spre exemplu comanda: 'cd | echo foo'. Subcomanda 'echo foo' nici
măcar nu citește de la stdin.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] File descriptor valgrind.log

2017-04-02 Fir de Conversatie Costin Lupu via so

On 04/02/2017 03:46 PM, Adrian-Eduard PANDELICĂ (66891) via so wrote:

Salut.


Atunci cand rulez checkerul cu optiunea de verificare cu valgrind, in
fisierul de log apare ca la exit am un file descriptor open si anume:


==15794== FILE DESCRIPTORS: 1 open at exit.
==15794== Open file descriptor 3:
/home/eduard/Anul3/SO/Tema2Linux/skel-linux/valgrind.log
==15794==

Am descoperit ca acesta este file descriptorul fisierului valgrind.log
(am rulat fara optiunea de fisier de log). Trebuie sa tratam si cazul
acesta sau nu se considera un memory-leak?


Nu trebuie să-ți bați capul cu acest caz. Mai mult decât atât, nu e 
nevoie să închizi nici file descriptorii pentru standard IO (0..2).


Și apropo, ăsta nu e un memory-leak, ci o raportare a faptului că file 
descriptor-ul 3 a rămas deschis pe toată durata execuției procesului.


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Parametru CreatePipe

2017-04-02 Fir de Conversatie Costin Lupu via so

On 04/02/2017 04:48 PM, Darius-Florentin Neatu wrote:

Din pacate nu am folosit la inceput acel script si mi-a facut eu un repo
manual. Nu mi-a mers din cateva incercari autentificarea din script, asa
ca am renuntat. O sa adaug manual responsabilii pentru tema.
Ti-am dat drepturi de *reporter* acum. Nu vazusem ca pentru *guest* nu
poti accesa codul. Imi poti confirma daca ai access? Daca nu, ce level
ar trebui sa iti acord?


E în regulă, am acces acum. M-am uitat pe cod, pare ok. Am și rulat tema 
ta și are comportament nedeterminist (uneori merge, alteori nu). Deci 
sunt ceva bug-uri p-acolo. Mai depanează și revino cu soluția pe care o 
să o găsești.


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema 2] Portabilitate

2017-04-02 Fir de Conversatie Costin Lupu via so

On 04/02/2017 03:54 PM, Darius-Florentin Neatu via so wrote:

Salut,

As vrea sa stiu daca are sens sa incerc sa fac tema portabila (in cazul
implementarii mele).

Nu am gandit bine acest lucru de la inceput si am ajuns in urmatoarea
situatie: am cateva functii care au complet alta implementare pe cele 2
sisteme (open_file, do_redirect, do_in_paralel, do_on_pipe - 50% din
aceasta functie), dar in rest structura temei e la fel pe ambele sisteme.

E ok sa am o abordare simpla de genul: daca sunt pe linux se compileaza
cu implementarea X, altfel cu implementarea Y pentru fiecare dintre
functii? (adica mult cod diferit)


Pe scurt: nu. Ideea cu portabilitatea e să izolezi codul specific 
platformei de codul care conține logica de aplicație. Mă aștept la o 
implementare portabilă să aibă funcțiile do_in_parallel și do_on_pipe 
identice pe Linux și Windows.



Nu m-am gandit la implementarea de Windows decat dupa ce am terminat pe
Linux. Se putea obtine o structura a temei care sa aiba mai putin cod
specific platformei.

Pentru unele functii pot sa sa pun directive de preprocesare pentru
anumite bucati de cod din interiorul functiei (de ex. do_on_pipe). In
cazul asta o sa fie functia mai lunga, dar per total tot e codul mai
scurt, pentru ca nu fac duplicate partilor comune. Este ok si asta?


Nu. Repet, do_on_pipe trebuie să fie la fel pe ambele platforme.


Nu stiu daca mai am timp sa fac tema portabila (pentru ca mai am si alte
teme), dar as vrea sa stiu pentru urmatoarele teme.


Personal cred că tema 2 e cea mai dificilă din punctul de vedere al 
portabilității și nu recomand, mai ales că mai sunt teme și la alte 
materii. Următoarele teme SO sunt mai abordabile din perspectiva asta.


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Parametru CreatePipe

2017-04-02 Fir de Conversatie Costin Lupu via so

On 04/02/2017 03:44 PM, Darius-Florentin Neatu wrote:

Eu intrebasem despre limita pentru nSize de la Pipe pentru ca in
implementarea de pe Windows fac a | b | c serial. Adica dupa ce s-a
terminat a, b incepe sa citeasca. Dupa ce s-a terminat b, c incepe sa
citeasca.


Aici e o problemă. Subcomenzile a, b și c *trebuie* să ruleze în 
paralel. De altfel ne putem gândi la operatorul '|' ca la un operator de 
paralelizare, cu diferența că subcomenzile comunică între ele.



Cu limita cel putin 2000 pentru nSize trec toate testele local &
vmchecker (doar 2 teste au nevoie de limita > cea default), dar as vrea
imi iasa pipe-ul eficient si pe windows.


Ce te faci dacă între a, b și c se transferă mai mult de 20MB? Ai avut 
noroc că nu e cazul în suita de teste.



Am o varianta in care fac paralel. Ex: a | b (b sa poate citi din pipe
imediat dupa ce a face primul write).


Asta e varianta pe care trebuie s-o implementezi.


In do_on_pipe fac 2 threaduri:
- thread 1: redirect, CreateProcess("a", ..), undo redirect (inchide
handle de fisiere deschisi in redirect sau veniti de la comanda parinte
pentru pipe  - deci inchide write handle din pipe)
- thread 2: redirect, CreateProcess("b", ...)  si nu se opreste


E clar aici că procesul b așteaptă să citească ceva pentru că celălalt 
capăt (cel de scriere) nu a fost închis.



Cand rulez a | b apare in terminal tot rezultatul comenzii "a | b", am
pus printuri in program: thread 1 asteapta procesul copil corespunzator
lui a, face close la capatul de write, da ExitThread(cod_copil), iar
parintele il asteapta cu success.


Ideea e să închizi în părinte capătul de scriere de îndată ce nu mai 
nevoie de el, adică după CreateProcess și înainte de terminarea 
procesului a. Deci ordinea ar fi:

1. CreateProcess(a)
2. CloseHandle(hWrite)
3. WaitProcess(a)


Cu toate acestea comanda b ramane in asteptare. Eu ma asteptam ca
aceasta abordare sa fie corecta: procesul b sa se opreasca deoarece s-a
terminat procesul a si in thread1 am inchis capatul de write. Deci cand
el termina de citit tot din pipe.

As vrea sa stiu daca logica mea e buna. Am tot modificat configurarile,
in niciuna nu se opreste b.


Logica pare ok. Din păcate nu pot să mă uit pe codul tău pentru că n-am 
access la fișiere. Folosește uneltele de care ți-a zis și Mihai pentru a 
vedea ce handle-uri rămân agățate.



Implementarea se gaseste pe Gitlab[1]. Diferenta intre cele 2 abordari
de la pipe o face linia 552.
// #define PIPE_WITH_THREADS
Afecteaza doar comportamentul functiei do_on_pipe.

P.S. Am dat access pentru Costin si Razvan. Unde gasesc lista cu
resposabilii de la tema X? (sa le pot da access tuturor pentru etapa de
corectare)


Am acces la proiect, dar n-am acces la fișiere. Vezi că e scriptul de 
care ți-a zis și Mihai mai devreme și care dă acces la toată echipa de teme.


Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Parametru CreatePipe

2017-04-02 Fir de Conversatie Costin Lupu via so

On 04/02/2017 03:33 AM, Darius-Florentin Neatu via so wrote:

Salut,

Vom fi depunctati daca punem o valoare mare pentru numarul maxim de
bytes care se pot afla la un moment dat in pipe? (parametrul nSize de la
CreatePipe).

Ex. 20MB


Darius, de ce ar fi asta o problemă? Uite ce scrie în documentație [1] 
pentru nSize: "The size is only a suggestion; the system uses the value 
to calculate an appropriate buffering mechanism". Deci nu veți fi 
depunctați pentru așa ceva.


[1] 
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365152%28v=vs.85%29.aspx



Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Bug-uri in scheletul de cod

2017-03-26 Fir de Conversatie Costin Lupu via so
Salutare, Sebastian,

Am făcut merge-ul în master și în consecință ai primit și 2 karme pentru
cele 2 buguri fixate. Îți mulțumim de ajutor!

Să faceți, vă rog, update în clonele locale (cu comanda 'git pull')
pentru ultimele modificări ce conțin bugfix-urile lui Sebastian.

Costin


On Sun, 2017-03-26 at 15:06 +, George-Sebastian PÎRTOACĂ (66847)
wrote:
> Salut!
> 
> 
> Am modificat.
> 
> 
> Spor,
> 
> Pirtoaca George Sebastian
> 
> 
> 
> __
> From: Costin Lupu 
> Sent: Sunday, March 26, 2017 3:21:11 PM
> To: George-Sebastian PÎRTOACĂ (66847)
> Cc: Sisteme de Operare
> Subject: Re: [so] [Tema2][Windows] Bug-uri in scheletul de cod 
>  
> Salutare, Sebastian,
> 
> Am făcut review la modificările tale. Două din cele trei commit-uri au
> nevoie de modificări [1].
> 
> [1] https://github.com/systems-cs-pub-ro/so-assignments/pull/2
> 
> Costin
> 
> 
> On Fri, 2017-03-24 at 22:20 +0200, Mihai Barbulescu via so wrote:
> > Excelent și mulțumim! 
> > 
> > 
> > Va urma code review :) și eventual instrucțiuni suplimentare 
> > 
> > On 24 Mar 2017 22:16, "George-Sebastian PÎRTOACĂ (66847)"
> >  wrote:
> > Done! 
> > 
> > 
> > Pirtoaca George Sebastian
> > 
> > 
> > 
> >
> __
> > From: Mihai Barbulescu 
> > Sent: Friday, March 24, 2017 9:43:03 PM
> > To: Sisteme de Operare; George-Sebastian PÎRTOACĂ (66847)
> > Subject: Re: [so] [Tema2][Windows] Bug-uri in scheletul de
> > cod 
> >  
> > Fă-ți un fork la so-assignments. Dai push in remote-ul care
> > linkeaza către fork tău și apoi va genera un link pe care
> > apeși și se face pull request  
> > 
> > 
> > In fork tău ar trebui să ai automat drept de write.
> > 
> > 
> > După procesul de review al bug-ului îl mergeuim noi
> > 
> > On 24 Mar 2017 21:35, "George-Sebastian PÎRTOACĂ (66847) via
> > so"  wrote:
> > Salut,
> > 
> > 
> > Am gasit niste bug-uri in scheletul de cod de pe
> > Windows si am incercat sa fac un branch nou urmat de
> > un pull request pe github (so-assignments).  Din
> > pacate, nu am permisiuni sa dau push cu noul branch
> > (si deci nu am pe ce sa fac pull request). Pot primi
> > permisiuni sa fac push (username-ul meu de pe github
> > este sebisebi)?
> > 
> > 
> > Spor,
> > 
> > Pirtoaca George Sebastian
> > 
> > 
> > 
> > ___
> > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> > ___
> > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> 
> 
> 


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2] Operatorul de paralelism "&"

2017-03-26 Fir de Conversatie Costin Lupu via so
On Fri, 2017-03-24 at 19:18 +0200, Alexandru Elisei via so wrote:
> Din enunt:
> 
> "de exemplu, expr1 & expr2 va avea ca efect execuția comenzilor
> expr1 și a comenzilor expr2 în paralel"
> 
> In cazul urmator:
> 
> sleep 10 & ls
> 
> este in regula daca asteptam cele 10 secunde pentru a putea introduce
> o noua comanda? 
 
Este în regulă dacă aștepți, mai ales dacă vrei să implementezi o temă
portabilă.

> Daca nu, se accepta sa nu asteptam procesele copil in acest caz?

Oricum ar fi, trebuie să aștepți cel puțin terminarea celei de-a doua
subcomenzi, adică 'ls'.

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows] Bug-uri in scheletul de cod

2017-03-26 Fir de Conversatie Costin Lupu via so
Salutare, Sebastian,

Am făcut review la modificările tale. Două din cele trei commit-uri au
nevoie de modificări [1].

[1] https://github.com/systems-cs-pub-ro/so-assignments/pull/2

Costin


On Fri, 2017-03-24 at 22:20 +0200, Mihai Barbulescu via so wrote:
> Excelent și mulțumim! 
> 
> 
> Va urma code review :) și eventual instrucțiuni suplimentare 
> 
> On 24 Mar 2017 22:16, "George-Sebastian PÎRTOACĂ (66847)"
>  wrote:
> Done! 
> 
> 
> Pirtoaca George Sebastian
> 
> 
> 
> __
> From: Mihai Barbulescu 
> Sent: Friday, March 24, 2017 9:43:03 PM
> To: Sisteme de Operare; George-Sebastian PÎRTOACĂ (66847)
> Subject: Re: [so] [Tema2][Windows] Bug-uri in scheletul de
> cod 
>  
> Fă-ți un fork la so-assignments. Dai push in remote-ul care
> linkeaza către fork tău și apoi va genera un link pe care
> apeși și se face pull request  
> 
> 
> In fork tău ar trebui să ai automat drept de write.
> 
> 
> După procesul de review al bug-ului îl mergeuim noi
> 
> On 24 Mar 2017 21:35, "George-Sebastian PÎRTOACĂ (66847) via
> so"  wrote:
> Salut,
> 
> 
> Am gasit niste bug-uri in scheletul de cod de pe
> Windows si am incercat sa fac un branch nou urmat de
> un pull request pe github (so-assignments).  Din
> pacate, nu am permisiuni sa dau push cu noul branch
> (si deci nu am pe ce sa fac pull request). Pot primi
> permisiuni sa fac push (username-ul meu de pe github
> este sebisebi)?
> 
> 
> Spor,
> 
> Pirtoaca George Sebastian
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Windows] Probleme Vmchecker

2017-03-21 Fir de Conversatie Costin Lupu via so
On Tue, 2017-03-21 at 13:57 +, Robert Radu wrote:
> Nu am reusit sa testez cu masina virtuala de windows deoarece imi
> crapa dupa ce o deschideam(am incercat multiple reinstalari).

Personal mă surprinde că nu folosiți lista de discuții și pentru astfel
de probleme. Din proprie experiență știu că nu e trivial să instalezi
VMware pe Linux (depinde de distribuție, de versiunea de Linux și de
versiunea de VMware).

Folosiți lista de discuții pentru a semnala problemele întâmpinate în
instalarea mașinilor virtuale. De asemenea, răspundeți colegilor voștri
care au probleme pe care le-ați întâmpinat și voi la rândul vostru și
ați reușit să le rezolvați.

>  Intr-adevar problema provenea de unde ai specificat si am fost indus
> in eroare de warning-ul din cygwin. 

PS: Folosește, te rog, lista de discuții (vezi CC) ca să vadă și colegii
tăi soluțiile/deznodământul problemelor întâmpinate.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Windows] Probleme Vmchecker

2017-03-21 Fir de Conversatie Costin Lupu via so
On Tue, 2017-03-21 at 11:17 +, Robert Radu via so wrote:
> Salut!
> 
> Am intampinat dificultati in momentul in care am uploadat tema pentru
> versiunea de Windows. Mai exact primesc eroarea: Setting environment
> for using Microsoft Visual Studio 2010 x86 tools, 

Mesajul ăsta nu reprezintă o eroare.

> urmata de un numar de erori din cod. Banuiesc ca problema provine de la
> Makefile pe care l-am facut urmand indicatiile din laboratorul 1 si as
> dori sa primesc un hint legat de rezolvarea acestora.

Pun întrebarea asta ca hint pentru a 1000-a oară: ai compilat pe mașina
virtuală de Windows de aici [1] ?

Ai citit ce erori îți dă la compilare? Ai încercat să le înțelegi? Hai
să o luăm ca exemplu pe a doua (că prima pare criptică la prima vedere):
"tema1.c(52) : error C2065: 'i' : undeclared identifier". Pare ciudat că
nu recunoaște variabila 'i' deși e declarată chiar acolo. Problema apare
pentru că compilatorul 'cl' de Windows vrea declarațiile variabilelor la
începutul funcției (situație cu care trebuie să te fi întâlnit deja la
laborator).

Poți replica comportamentul ăsta și cu 'gcc' folosind opțiunea
'-std=c89'.

[1] https://ocw.cs.pub.ro/courses/so/info/mv

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema1][Windows]

2017-03-20 Fir de Conversatie Costin Lupu via so
On Mon, 2017-03-20 at 13:15 +0200, Mihaela Dobre via so wrote:
> Bună ziua,
> 
> Am rulat tema local atât pe linux, cat și pe Windows și funcționează.
> Însă pe vmchecker îmi rulează doar testele pe linux. Pe Windows
> rulează doar testul 0. Ce pot face ?

Ai rulat pe mașina virtuală de Windows de aici [1] ?

[1] https://ocw.cs.pub.ro/courses/so/info/mv

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2] Append si write normal in acelasi fisier

2017-03-17 Fir de Conversatie Costin Lupu via so
On Fri, 2017-03-17 at 13:40 +, George-Sebastian PÎRTOACĂ (66847) via
so wrote:
> Salut,
> 
> 
> Este in regula daca semnalam un comportament de genul cmd >> file 2>
> file ca eroare? Deoarece nu se poate sa scriem in acelasi timp la o
> pozitie si sa facem si append in acelasi fisier iar rezultatul sa aiba
> sens.

Hmm, de ce nu se poate? Cine stabilește dacă are sens sau nu? Ai
verificat ce face bash?

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2] Redirectari multiple output

2017-03-16 Fir de Conversatie Costin Lupu via so
On Thu, 2017-03-16 at 21:46 +0200, Olaru Catalin via so wrote:
> Buna seara,
> 
> 
> Am o intrebare in legatura cu cazul in care apar redirectari multiple.
> S-a spus in enunt despre cazul in care avem comanda >out1 >out2 ca
> alegem oricare fisier pentru a redirecta outputul. 

Unde mai exact în enunț ai văzut această informație?

> Cu toate acestea, daca avem ceva in genul comanda >out1 >>out2,
> parserul pune ambele fisiere in out si seteaza io_flags pe
> IO_OUT_APPEND. In cazul acesta, nu mai este chiar corect sa redirectam
> outputul in oricare fisier, dar nici nu putem sa ne(eu, cel putin) dam
> seama pentru care fisier se aplica modul append si pentru care nu.

Pentru situația ta firesc ar fi ca 'out1' să fie doar creat, iar în
'out2' să se facă scrierea (vezi bash ca referință).

> Cum vom proceda intr-o astfel de situatie?

O astfel de situație nu este cerută de enunțul temei (sau cel puțin nu
găsesc eu unde anume ar fi). De asemenea nu e nici în teste. N-are rost
să-ți bați capul cu o situație de acest gen.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] Restrictie execv pe tema

2017-03-15 Fir de Conversatie Costin Lupu via so
On Wed, 2017-03-15 at 20:50 +0200, Stefan-Adrian Popa via so wrote:
> Salut,
> 
> Am o intrebare referitoare la restrictia de a nu apela *execv()* pe
> executabilul temei pentru a rula o parte din arbore independent.
> 
> As vrea sa stiu daca o abordare de tipul: *fork()* + apelul functiei
> *parse_command()* in copil (fara a face efectiv *execv()*) este
> acceptata. O astfel de abordare duce practic tot la rularea unei parti
> din arbore independent, insa nu se apeleaza *execv()*, asa ca nu imi
> dau seama daca se incadreaza sau nu in restrictia de mai sus.

Abordarea ta este permisă. Tot în secțiunea FAQ a temei 2 [1] se
regăsește o întrebare (cea cu numărul optim de fork-uri) care are
legătură cu problema lansată de tine și care implicit indică faptul că
'fork' este permis pentru rularea unei părți din arbore.

Atenție: această abordare nu va putea fi folosită pe Windows.

[1] https://ocw.cs.pub.ro/courses/so/teme/tema-2#faq

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Linux] Seq Fault Checker local si Vmchecker

2017-03-14 Fir de Conversatie Costin Lupu via so



On 03/15/2017 12:40 AM, Andrei Tulus via so wrote:

Salut,

Am si eu o problema pe testul 29 pentru comanda invalida.


Atenție: Seg Fault se generează pentru testul 30, nu 29. Mai întâi se 
afișează eroarea, după care urmează statusul testului.



Eu am folosit functia DIE care returneaza un mesaj in cazul in care
nu primesc o comanda cunoscuta, una din cele implementate. Pe
checker-ul local primesc punctaj la fel si pe Vmchecker dar nu
afiseaza mesajul returnat de DIE cu Success, afiseaza Seq Fault la o
linie din script care e ceva de genu : $Exec_name 1 input > output.

Daca nu tratez cazul comenzii invalide da in continuare Seq Fault dar
nu imi mai da punctaul. Practic am 90 dar cu un mesaj de Seq Fault.
Am incercat sa folosesc altceva in afara de DIE si acelasi lucru se
intampla. Ma puteti ajuta cu ceva in cazul acesta?


PS: Să folosești, te rog, convenția precizată și în enunțul temei [1] 
pentru forma subiectului (vezi Subject).


[1] 
https://ocw.cs.pub.ro/courses/so/teme/tema-1#suport_intrebari_si_clarificari



Costin
___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1]Diferenta masina virtuala windows - checker windows

2017-03-14 Fir de Conversatie Costin Lupu via so
On Mon, 2017-03-13 at 23:17 +, Roxana-Georgiana MACARIE (67116) via
so wrote:
> Buna,
> 
> 
> Pe masina virtuala de windows imi trec toate testele (inclusiv 7,8)
> dar pe vmchecker acestea pica. Am rulat testele pe masina virtuala de
> mai multe ori si nu primesc niciodata segfault sau alta eroare.

Sigur folosești mașinile virtuale de aici [1] ?

> Imi puteti spune care ar putea fi cauza? Am verificat si nu am memory
> leaks si am adaugat si "\0" la strtok. De asemenea nu am gasit o
> solutie pe lista pana acum. 

Cu ce ai verificat memleaks-urile? Cu valgrind? Sigur ai tratat toate
erorile semnalate de valgrind (e.g. accese invalide la memorie)?

[1] https://ocw.cs.pub.ro/courses/so/info/mv


Costin



___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Platforma] Problema checker local

2017-03-12 Fir de Conversatie Costin Lupu via so

Salutare, Alex,

Nu înțeleg exact ce se întâmplă. Mai am nevoie de niște detalii.

Se comportă corect rularea celor două comenzi de mai jos?

$ ./tema1 1 _test/inputs/test1.in > test1.out
$ cat test1.out
vincent


Costin


On 03/12/2017 03:48 PM, Alexandru Craciun via so wrote:

Salut. Am la checkerul local o problema in sensul ca daca rulez de mana
primul test afiseaza cuvantul adaugat in terminal ceea ce e ok insa cand
rulez scriptul fisierul de output este gol. Am observat ca scrierea in
fisier se face prin redirectare asa ca am incercat si sa redirectez
output-ul catre un fisier pentru a vedea daca merge si a functionat. De
asemenea nici pe vmchecker nu merge. Vreo idee de la ce ar putea fi?
Multumesc.


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema2] Schimbarea directorului

2017-03-11 Fir de Conversatie Costin Lupu via so
On Sat, 2017-03-11 at 21:45 +0200, Olaru Catalin wrote:
> Salut,
> 
> Am o nelamurire in privinta temei 2.

> Cand se da comanda interna cd, e ok sa folosesc chdir? Alternativa ar
> fi sa tin minte path-ul curent si sa il modific tot timpul, dar ar fi
> problematic la unele comenzi.

Eu nu văd altă opțiune în afară de chdir.

Așa cum se precizează și în introducerea laboratorului 3 [1], 'current
directory' este o informație asociată procesului curent și face parte
din PCB-ul menținut de kernel pentru fiecare proces. Fiind la nivel de
kernel, această informație se modifică doar printr-un apel de sistem
(chdir).

PS: Folosește, te rog, lista de discuții (vezi CC) pentru întrebări
legate de teme. Așa vor vedea și colegii tăi soluțiile la problemele
întâmpinate. Nu dăunează dacă tema încă nu e anunțată. Cu atât mai bine,
putem rezolva eventualele neclarități, iar colegii tăi nu se vor mai
înfrunta cu aceleași probleme.

[1]
https://ocw.cs.pub.ro/courses/so/laboratoare/laborator-03#prezentare_concepte


Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Windows] Warning comentarii

2017-03-11 Fir de Conversatie Costin Lupu via so
On Sat, 2017-03-11 at 18:31 +, Florentina PETCU (66939) via so
wrote:
> Buna seara
> 
> Pe vmchecker, pe Windows, primesc urmatorul warning: 
> sal.h(109) : warning C4001: nonstandard extension 'single line
> comment' was used

Presupun că folosești opțiunea /Za pentru cl. De ce?

> Se depuncteaza si acest tip de warning?

Se depunctează *orice* warning. La build, output-ul trebui să conțină 0
(zero) warning-uri.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Windows] warning C4001 si optiunea /Za

2017-03-11 Fir de Conversatie Costin Lupu via so
On Sat, 2017-03-11 at 21:58 +0200, Andrei Mihalea via so wrote:
> 
> Îmi apare următorul warning la compilare:
> "C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\sal.h(109) :
> warning C4001: nonstandard extension 'single line comment' was used". 
> 
> Menționez că am folosit opțiunea "/Za" la compilare. De asemenea, dacă
> întroduc un comentariu de forma "//comment" în una din sursele mele,
> warningul nu apare. 

De ce folosești opțiunea /Za ?

> În secțiunea de "Indicații generale teme"[1], se precizează că se
> depunctează pentru warning-uri de compilare. Trebuie neapărat să
> folosesc şi opțiunea "/Za", sau este suficient doar "/W3"? 

/W3 este suficient.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][General] Reminder rezolvare code-style

2017-03-11 Fir de Conversatie Costin Lupu via so
On Sat, 2017-03-11 at 14:57 +0200, Alexandru Elisei wrote:
> 2017-03-11 14:30 GMT+02:00 Costin Lupu via so <so@cursuri.cs.pub.ro>:
> > Am observat că există submisii ale temei 1 pe vmchecker [3] care încă nu
> > trec testul 0, deși toate celelalte teste trec. În acest caz nota maximă
> > va fi 9.5 în loc de 10, deoarece testul 0 valorează 5/100 puncte.
> 
> Salutare,
> 
> Din documentatia pentru kernelul linux, fisierul submitting-patches.rst [1]:
> 
> "Note, though, that the style checker should be viewed as a guide, not
> as a replacement for human judgment. If your code looks better with a
> violation then its probably best left alone."
> 
> Sa inteleg ca la so nu se accepta nicio deviatie de la *ghidul* de
> coding style al kernelului, pe cand in kernel se accepta?

Ai înțeles corect. Ne dorim să aplicăm aceleași reguli pentru toată
lumea. Este destul de dificil să acceptăm excepții de la coding style
pentru că ar fi nevoie să le aplicăm într-un mod echitabil, aceleași
pentru toată lumea. Ori management-ul acestor excepții nu este scalabil,
ținând cont de numărul de teme submise (sunt aproximativ 400 teme).

Ce putem face însă este să extindem lista de verificări ignorate (vezi
variabila IGNORE_FLAGS) [2] în urma propunerilor argumentate venite de
la voi.

> [1] 
> https://github.com/torvalds/linux/blob/master/Documentation/process/submitting-patches.rst
[2]
https://raw.githubusercontent.com/systems-cs-pub-ro/so-assignments/master/checkpatch_wrapper.sh

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1] Eroare checkpatch.pl

2017-03-11 Fir de Conversatie Costin Lupu via so
Salutare, Alex,

Bine punctat! Este, să zicem, mai degrabă o inconsistență. Când rulezi
checkpatch.pl pe toate sursele din director îți afișează doar prima
eroare per fiecare sursă. Dacă o rezolvi pe prima, la următoarea rulare
o să ți-o afișeze și pe următoarea, șamd.

Ca să vezi toate erorile pe o sursă poți să folosești wrapper-ul [3] din
repo-ul de pe github.

Exemplu de rulare:
$ ./checkpatch_wrapper.sh hashtable.c

PS: Folosește, te rog, lista de discuții (vezi CC) pentru problemele
legate de teme. Așa vor vedea și colegii tăi soluțiile la problemele
întâmpinate. Nu e nevoie să îți faci griji în privința privacy-ului
repo-ului de pe gitlab. Doar asistenții SO au acces la repo-ul tău.

On Sat, 2017-03-11 at 14:51 +0200, Alexandru Elisei wrote:
> Buna ziua,
> 
> Ma numesc Alexandru Elisei, sunt student la grupa 333CC. Cred ca este
> o eroare la scriptul care verifica coding style-ul.
> 
> Mie imi da urmatoarea eroare la linia [1]:
> 
> ERROR:SPACING: space required before that '*' (ctx:VxO)
> 
> dar am exact acelasi cod la linia [2] si acolo nu primesc nicio eroare.
> 
> [1] 
> https://gitlab.cs.pub.ro/alexandru-elisei/so-tema1/blob/master/hashtable.c#L253
> [2] 
> https://gitlab.cs.pub.ro/alexandru-elisei/so-tema1/blob/master/hashtable.c#L48
[3]
https://raw.githubusercontent.com/systems-cs-pub-ro/so-assignments/master/checkpatch_wrapper.sh


Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] [Tema1][General] Reminder rezolvare code-style

2017-03-11 Fir de Conversatie Costin Lupu via so
Salutare,

Vă reamintim că testul 0 se ia în considerație în evaluarea punctajului
final al fiecărei temei [1,2]. 

Am observat că există submisii ale temei 1 pe vmchecker [3] care încă nu
trec testul 0, deși toate celelalte teste trec. În acest caz nota maximă
va fi 9.5 în loc de 10, deoarece testul 0 valorează 5/100 puncte.

[1] 

Re: [so] [Tema1][Windows] Eroare compilare vmchecker

2017-03-10 Fir de Conversatie Costin Lupu via so
Salutare, Vlad,

Tema se compilează pe Windows folosind compilatorul cl, nu gcc.

Costin

On Sat, 2017-03-11 at 00:49 +0200, Vlad Popa via so wrote:
> In urma compilarii pe vmchecker pe platforma Windows cu comanda:
> 
> 
> gcc -std=c99 main.c -o tema1.exe -L. -lhash
> 
> 
> primesc urmatoarea eroare:
> 
>   ./hash.lib: error adding symbols: File in wrong format
> 
> 
> Target-urile din makefile sunt aceleasi ca fisierul original din
> directorul tema1-utils, am adaugat doar regula de build de mai sus.
> 
> 
> Care ar putea fi problema?
> 
> 
> Multumesc anticipat.
> 
> 
> 
> 
> ___
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Memorie Virutuala][Ce determina Segmentation fault]

2016-04-08 Fir de Conversatie Costin Lupu via so
Salutare, Tiberiu,

On Thu, 2016-04-07 at 17:46 +, Tiberiu IORGULESCU (25243) via so
wrote:
> Am o intrebare:
> Cum se prinde sistemul de operare daca sa dea sau nu sigsegv (sau ce
> se intampla de fapt in spate atunci cand se aloca o pagina?).
> 
> De exemplu, daca eu aloc o zona de memorie, ea nu se afla nici in
> memoria fizica (datorita "demand paging"), nici in memoria secundara,
> deci in tabela de pagini presupun ca flag-ul de validitate ar trebui
> sa fie invalid. Si atunci de unde stie daca a fost alocata de mine?
> Sau care e diferenta intre asta si cazul in care pur si simplu incerc
> sa scriu la o adresa oarecare din spatiul meu virtual, fara sa fi
> alocat nimic acolo?

Secretul care îți răspunde la întrebarea ta vine de la faptul că pe
Linux apelul de sistem 'mmap' nu creează pe loc, imediat, maparea între
pagina virtuală și pagina fizică, ci doar creează o intrare/informație
în gestiunea internă kernelului pentru memoria virtuală asociată
procesului care apelează 'mmap'. Astfel, primul acces ulterior la acea
pagină va avea același efect ca în cazul accesului la o pagină care nu
îi aparține procesului pentru că nu există încă maparea în tabelul de
pagini.

Puțin background: De fiecare dată când un proces accesează memorie care
nu îi aparține (a se citi "pentru care nu are o intrare în tabela de
pagini"), __hardware-ul__ va semnala eroarea generând o întrerupere
(cunoscută ca 'trap') care va fi tratată de kernel. Deci, și în cazul în
care accesul s-a făcut pentru o pagină alocată cu 'mmap' (vorbim de
primul acces la o astfel de pagină), hardware-ul va genera trap-ul.

Trap-ul, repet, este tratat de kernel. Acum, kernel-ul trebuie să
decidă:
a) Este cumva o pagină alocată cu 'mmap', dar accesată prima dată?
Atunci creează maparea efectivă (noua intrare în tabela de pagini a
procesului) și îi dă controlul înapoi procesului. Asta se mai cheamă
"minor page fault" (vezi laboratorul 6 [1]).
b) Este o pagină care nu îi aparține procesului? Atunci îi va trimite
acestuia SIGSEGV. 

Am simplificat mult aici arborele de decizie al kernelului în cazul unui
page-fault. Mai multe informații găsești în "Understanding the Linux
Kernel", ediția 3, [2], o carte care intră în bibliografia cursului
Sisteme de Operare 2, anul IV. Ai acolo:
- secțiunea '16.2.2. Creating a Memory Mapping', p791, îți descrie în
detaliu ce face 'mmap'; secțiunea '16.2.4. Demand Paging for Memory
Mapping', p793, subliniază faptul că maparea nu se face în momentul
apelului 'mmap', ci ulterior
- secțiunea '9.4. Page Fault Exception Handler', p457, prezintă în
detaliu arborele de decizie și pașii urmați de kernel în tratarea unui
'page fault'

Observații:
Asta este politica Linux-ului. Ar fi putut crea la apelul 'mmap'
mapările necesare și astfel nu s-ar fi mai generat page fault-uri la
primele accesări ale paginilor alocate. Însă abordarea Linux-ului are
avantajul că păstrează memoria cât mai puțin ocupată: va aloca pagini
'on demand', doar atunci când procesul o va cere prin accesare
(citire/scriere/execuție). Dezavantajul evident este tot acest overhead,
deciziile pe care trebuie să le ia kernel-ul și parcurgerea aceluiași
arbore de decizie ca în cazul unui acces invalid normal. Se consideră
totuși că page fault-urile sunt evenimente rare și în consecință nu
costă foarte mult sistemul.

[1] 
http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-06#exercitiul_6_-_page_fault-uri_05p
[2] https://elf.cs.pub.ro/so2/res/doc/lin-kernel/O%27Reilly%20-%
20Understanding%20The%20Linux%20Kernel%20-%203rd%20Edition.pdf

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2] Enunt gresit

2016-03-31 Fir de Conversatie Costin Lupu via so
Bună, Andra,

On Thu, 2016-03-31 at 20:09 +, Andra-Denis IONESCU (25089) via so
wrote:
> Buna, 
> 
> 
> As vrea sa stiu de ce ati specificat in enunt aceasta ordine de
> prioritate a operatorilor?
> 
> 
> Prioritatea operatorilor de execuție este, de la cel mai prioritar la
> cel mai puțin prioritar:
> 
> operatorul |
> operatorii de execuție condiționată
> operatorul de paralelism
> operatorul de secvențiere
> 
> In shell-ul din linux paralelismul este pe locul 2.

Unde/cum putem găsi și noi această informație?

> Arborele din schelet face fix ordinea pe care ati specificat-o si din
> aceasta cauza imi pica testele 16 si 17.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] Numarul de fork-uri necesare pentru implementarea pipe-ului

2016-03-29 Fir de Conversatie Costin Lupu via so
Da, e o confuzie aici. Analizăm situația simplă: 'cmd1 | cmd2'.

Vezi răspunsurile mele inline.

On Tue, 2016-03-29 at 16:36 +0300, Teodor Ciuraru wrote:
> Într-adevăr, este puțin mai greu de înțeles ce vreau să zic fără sursă
> în sine. :P
> 
> 
> În link-ul acesta, folosește două fork-uri (dar aici face clar
> referire referire la pipe-uri multiple).
> http://stackoverflow.com/questions/3642732/using-dup2-for-piping
> 
> Două fork-uri în răspunsul cel mai de jos:
> http://stackoverflow.com/questions/8082932/connecting-n-commands-with-pipes-in-a-shell
> 
> La fel:
> http://stackoverflow.com/questions/2589906/unix-piping-using-fork-and-dup
> http://stackoverflow.com/questions/13417278/piping-in-a-basic-shell-implementation

Situația cu 2 fork-uri:
- fork+exec pt cmd1
- fork+exec pt cmd2
- mini-shell-ul rulează în continuare, deci mai poate primi comenzi


> Primul răspuns din link-ul acesta prezintă un singur fork:
> http://stackoverflow.com/questions/21914632/implementing-pipe-in-c
> 
> Un singur fork:
> http://stackoverflow.com/questions/8082932/connecting-n-commands-with-pipes-in-a-shell

Situația cu 1 fork:
- fork+exec pt cmd1
- exec pt cmd2
- mini-shell-ul nu mai există, imaginea lui a fost înlocuită cu imaginea
pt cmd2, deși e același proces (pid); comanda compusă 'cmd1 | cmd2' se
va executa cu succes, însă mini-shell-ul nu mai poate primi comenzi

Clar abordarea asta nu te ajută cu nimic la temă. M-a pus pe gânduri
totuși când ai zis că îți merge și cu 1 singur fork. Noroc că ai codul
pe gitlab și am văzut despre ce era vorba. La implementarea ta curentă,
pe care presupun că o cataloghezi ca având 2 fork-uri, de fapt ai 4:

do_on_pipe(cmd1, cmd2):
- fork pt cmd1; parse_simple(cmd1)
- fork pt cmd2; parse_simple(cmd2)

parse_simple(cmd):
- fork pt cmd

Total: 4 fork-uri

Asta îmi spune că implementarea ta cu "un singur fork", de fapt are 3
fork-uri. De-aia îți trece testele. Dacă aveai cu adevărat un singur
fork, după primul pipe ți s-ar fi terminat sesiunea de mini-shell.

Concluzie: dacă vrei să mai ai mini-shell-ul running după ce rulezi
'cmd1 | cmd2', nu poți folosi doar 1 fork.

> Este clar că fac o confuzie referitor la problemă și sper să o
> rezolvăm.
> 
> > Nu înțeleg ce vrei să zici nici prin "un singur fork()", nici prin
> > "fork-uri întrepătrunse". Care sunt link-urile unde ai găsit aceste
> > informații?
> > 
> > > Am încercat ambele variante și testele 9 și 10 trec în ambele
> > > cazuri.
> > > 
> > > Aș dori să știu de ce îmi trec testele, atât având un singur
> > > fork() la nivelul funcției do_on_pipe(), cât în cazul celor două
> > > fork-uri.
> > > 
> > > Singura diferență pe care am sesizat-o la implementarea cu un
> > > singur fork() este că, cu toate că testele trec, rulând o comandă
> > > cu operatorul pipe îmi închide mini-shell-ul deschis (ceea ce ar
> > > putea fi cauzat de altceva, dar în cazul altor comenzi nu se
> > > întâmplă).
> > > 
> > > Care este varianta corectă de implementare?

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] Numarul de fork-uri necesare pentru implementarea pipe-ului

2016-03-29 Fir de Conversatie Costin Lupu via so
Salutare, Teodor,

On Tue, 2016-03-29 at 16:02 +0300, Teodor Ciuraru via so wrote:
> Salut!
> 
> Legat de implementarea pipe-ului, am observat că pe Internet (pe Stack, cel 
> puțin) sunt două tabere, tabară celor care prezintă implementarea pipe-ului 
> cu un singur fork() și cea a celor care implementează cu două fork-uri, 
> întrepătrunse.

Nu înțeleg ce vrei să zici nici prin "un singur fork()", nici prin
"fork-uri întrepătrunse". Care sunt link-urile unde ai găsit aceste
informații?

> Am încercat ambele variante și testele 9 și 10 trec în ambele cazuri.
> 
> Aș dori să știu de ce îmi trec testele, atât având un singur fork() la 
> nivelul funcției do_on_pipe(), cât în cazul celor două fork-uri.
> 
> Singura diferență pe care am sesizat-o la implementarea cu un singur fork() 
> este că, cu toate că testele trec, rulând o comandă cu operatorul pipe îmi 
> închide mini-shell-ul deschis (ceea ce ar putea fi cauzat de altceva, dar în 
> cazul altor comenzi nu se întâmplă).
> 
> Care este varianta corectă de implementare?

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows][ problema rulare]

2016-03-28 Fir de Conversatie Costin Lupu via so
On Mon, 2016-03-28 at 20:23 +, Barbuceanu Malin Andrei via so wrote:
> Salut,
> 
> 
> Incerc sa rulez tema din masina virtuala. Am toate fisierele din
> scheletul de cod, impreuna cu executabilul si fisierele din checker
> (_test, run_all.sh) in acelasi director. Pentru a rula, dau nmake din
> powershell ul visual studio, apoi ./run_all.sh 
> 
> 
> Primesc erori de acest gen:
> 02) Testing commands with arguments.failed
>  [ 0/90]
> ./_test/run_test.sh: line 114: ../test_03.in: Permission denied
> ./_test/run_test.sh: line 114: ../test_03.in: Permission denied
> 03) Testing simple redirect operators...passed
>  [05/90]
> ./_test/run_test.sh: line 114: ../test_04.in: Permission denied
> ./_test/run_test.sh: line 114: ../test_04.in: Permission denied
> 
> 
> iar in final obtin 81/90 - total aiurea, mult prea mult :))
> 
> 
> Care ar fi problema?

Problema e că nu ai acces la fișierele de input. Și dacă ștergi cu totul
'_test/inputs' o să ai același rezultat. Nu e nici o diferență între ce
produce/outputează executabilul de referință (bash) versus mini-shell-ul
tău pentru că nici unul nu are acces la input, deci mini-shell-ul tău se
comportă ca bash pentru 81/90 de teste.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] Problema pipe fisiere mari

2016-03-28 Fir de Conversatie Costin Lupu via so
Ok, urmărește cele 3 puncte din mail-ul meu anterior și revino cu
răspuns.


# PS: La toate mail-urile de interes general (aka via
# so@cursuri.cs.pub.ro), butonul de "Reply All"/"Group Reply"/șamd, este
# sfânt. Toate discuțiile legate de probleme întâmpinate la teme se 
# desfășoară pe lista de discuții.


Costin

On Mon, 2016-03-28 at 21:02 +0300, Bogdan Basuc wrote:
> Comanda eșuează in sensul ca prompt-ul rămâne blocat un timp destul de
> lung, iar ca rezultat nu generează niciun fișier (asta pe fișierele
> mari).
> 
> În data de luni, 28 martie 2016, Costin Lupu  a
> scris:
> On Mon, 2016-03-28 at 19:40 +0300, Bogdan Basuc via so wrote:
> > Salut,
> >
> >
> > Am observat ca daca am un fisier mare (~10M) comanda
> >
> > cat big_file | cat > out
> >
> > esueaza. Mentionez ca urmatoarele comenzi se executa cu
> succes:
> >
> > cat big_file
> > cat big_file > out
> >
> > Si de asemenea daca am un fisier intr-o anumita limita
> comanda
> >
> > cat small_file | cat > out
> >
> > se executa cu succes. Am inteles ca pipe-urile nu au o
> problema cu
> > limitarea, dar as dori sa stiu care ar putea fi problema.
> 
> Nu-mi dau seama exact ce ar putea să fie acolo. Eșuează în ce
> sens? Se
> blochează, se termină cu eroare sau e diferență între big_file
> și out?
> 
> 1) În primul rând asigură-te că e chiar o eroare și nu doar o
> problemă
> de prompt. E posibil să nu ți se afișeze promptul, dar comanda
> să fi
> terminat de executat.
> 
> 2) Asigură-te că închizi capetele nefolosite ale pipe-ului:
> ambele în
> procesul părinte, capătul de read în producător, capătul de
> write în
> consumator.
> 
> 3) Am căutat în discuțiile din anii trecuți și am dat peste
> asta [1]. Pe
> scurt, pentru comanda
> 
> cmd1 | cmd2
> 
> ar putea ajuta să pornești cmd2 înainte și cmd1 după.
> 
> Revino cu mail să ne zici cum ai rezolvat.
> 
> [1]
> 
> http://thread.gmane.org/gmane.education.region.romania.operating-systems/4913/focus=4914
> 
> Costin
> 
> 


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] Problema pipe fisiere mari

2016-03-28 Fir de Conversatie Costin Lupu via so
On Mon, 2016-03-28 at 19:40 +0300, Bogdan Basuc via so wrote:
> Salut,
> 
> 
> Am observat ca daca am un fisier mare (~10M) comanda
> 
> cat big_file | cat > out
> 
> esueaza. Mentionez ca urmatoarele comenzi se executa cu succes:
> 
> cat big_file
> cat big_file > out
> 
> Si de asemenea daca am un fisier intr-o anumita limita comanda
> 
> cat small_file | cat > out
> 
> se executa cu succes. Am inteles ca pipe-urile nu au o problema cu
> limitarea, dar as dori sa stiu care ar putea fi problema.

Nu-mi dau seama exact ce ar putea să fie acolo. Eșuează în ce sens? Se
blochează, se termină cu eroare sau e diferență între big_file și out?

1) În primul rând asigură-te că e chiar o eroare și nu doar o problemă
de prompt. E posibil să nu ți se afișeze promptul, dar comanda să fi
terminat de executat.

2) Asigură-te că închizi capetele nefolosite ale pipe-ului: ambele în
procesul părinte, capătul de read în producător, capătul de write în
consumator.

3) Am căutat în discuțiile din anii trecuți și am dat peste asta [1]. Pe
scurt, pentru comanda

cmd1 | cmd2

ar putea ajuta să pornești cmd2 înainte și cmd1 după.

Revino cu mail să ne zici cum ai rezolvat.

[1]
http://thread.gmane.org/gmane.education.region.romania.operating-systems/4913/focus=4914

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux] Pipe multiplu pe fisiere mari

2016-03-27 Fir de Conversatie Costin Lupu via so
On Sun, 2016-03-27 at 20:05 +0300, Alexandru Balan via so wrote:
> Salut,
> 
> 
> Intampin urmatoarea problema. Am 2 fisiere, sa le numim small si big.
> Fisierul small are putin continut(cateva zeci de linii de text) in
> timp ce fisierul big este un fisier cu foarte mult continut.
> 
> 
> Atunci cand rulez comanda: cat < small | cat | cat | cat  | cat ,
> outputul apare fara probleme. Daca incerc cat < big | cat | cat (este
> suficient cu 2 pipe-uri ca sa nu mai mearga), se blocheaza tot
> shell-ul. 

Dar pentru 'cat < big' merge?

> Aveti idee ce ar putea determina acest comportament? Este o dimensiune
> maxima pe care o poate suporta un pipe?

Nu are nici o importanță implementarea internă a pipe-ului în situația
asta. Gândește-te că ar trebui să-ți meargă și comanda:

cat /dev/urandom | cat | cat

Dacă nu te-am ajutat cu nimic, mai revino cu detalii.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Linux] Return value diferit in masina virtuala

2016-03-26 Fir de Conversatie Costin Lupu via so
Salutare, Bogdan,

On Sat, 2016-03-26 at 19:44 +0200, Bogdan Stefan via so wrote:
> 
> Am urmatoarea problema: imi pica un test(13) pe vmchecker, in timp ce
> pe local nu.

Am rulat mini-shell-ul tău local la mine. Guess what? Pică testul 13. O
să te rog să faci debugging pe mașina virtuală. M-am uitat pe codul tău
din Gitlab și am văzut că ai mai multe probleme (buguri) în
implementare.

> Problema este return value-ul unei comenzi cu pipe.
> Mai precis, pe masina virtuala, comanda "ls | grep ceva || echo NU"
> afiseaza "NU", desi nu ar trebui.

Ai verificat ce valori returnezi în cazul comenzii de mai sus?

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [SO][Tema2][Linux] Output dublat la rularea in masina virtuala - test16

2016-03-25 Fir de Conversatie Costin Lupu via so
Salutare, Michel,

On Fri, 2016-03-25 at 13:02 +0200, Michel Cojocaru via so wrote:
> Update la problema mea:
> Se pare ca am introdus gresit comenzile. 
> Outputul in masina virtuala este cel bun:
> 1
> 3
> 4
> 2
> Mentionez ca am folosit doar exit() in tema, nu si _exit().
> Problema persista, testele 16,17 picand in continuare.

Ok, deci problema e că nu e output-ul bun (adică 1 2 3 4), am înțeles
bine?

Comun între testele 16 și 17 este doar faptul că se testează și
operatorul de paralelizare. De fapt, testul 16 verifică implementarea
corectă a operatorului &.

Presupunerea mea e că nu lansezi comenzile în paralel, ci secvențial. E
nevoie de debugging pe un caz mai simplu decât al testului 16:

sleep 5 && echo '5' & sleep 0.1 && echo '0.1'

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2][Windows][Operatorul &]

2016-03-22 Fir de Conversatie Costin Lupu via so
Salutare,

On Tue, 2016-03-22 at 15:44 +, Gabriel-Eugen VĂDUVA (25137) via so
wrote:
> Salut,
> 
> Pot folosi thread-uri (CreateThread) ca sa implementez operatorul de
> paralelism & ?

Este permisă folosirea thread-urilor cu CreateThread pentru operatorul
&.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Windows][Pipe cu redirectare out]

2016-03-21 Fir de Conversatie Costin Lupu via so
Salutare,

On Mon, 2016-03-21 at 19:28 +0200, Alexandru Jercaianu via so wrote:
> Salut,
> 
> Am urmatoarea problema: la comanda "ls | grep mini" imi afiseaza la
> stdout toate fisierele care contin mini, insa comanda "ls | grep mini
> > out" imi creeaza fisierul out, insa acesta este gol. 
> Mentionez ca o comanda precum ls > out imi redirecteaza corect
> outputul. 
> Are cineva vreo idee de la ce ar putea fi?

1) Ai testat dacă îți merg redirectările de stdin și stdout pentru o
aceeași comandă?

> ls > out ; grep mini < out > out2 ; diff out out2

Nu cumva suprascrii handle-ul de input dacă ai și redirectare de output?

2) Dacă situația de mai sus merge cum trebuie, cel mai probabil ar fi că
"uiți" de redirectarea input-ului venit din pipe când te-apuci să scrii
în 'out'.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][General]

2016-03-19 Fir de Conversatie Costin Lupu via so
On Thu, 2016-03-17 at 20:07 +0200, Mihai Cristian via so wrote:
> Rulez valgrind si incerc sa fac debug de vreo 2-3h..



Tool-ul consacrat pentru debug pe Linux e gdb. Valgrind-ul doar îți
oferă niște informații despre ce s-ar putea întâmpla. Când e insuficient
nu-ți rămâne decât să faci stepping prin cod cu debugger-ul (gdb e
debugger pur, valgrind nu). Investește timp în a înțelege cum se
folosește gdb-ul [1] și îți garantez că o să găsești bug-urile mult mai
repede. Dacă nu-ți place în linie de comandă, încearcă-l cu
front-end-uri grafice [2]. Personal, găsesc Eclipse CDT [3] un IDE
destul de user-friendly pentru debugging cu interfață grafică.

[1] http://ocw.cs.pub.ro/courses/so/laboratoare/resurse/gdb
[2] https://sourceware.org/gdb/wiki/GDB%20Front%20Ends
[3] http://www.eclipse.org/cdt/


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][Linux][Test 5][Comanda cd]

2016-03-19 Fir de Conversatie Costin Lupu via so
Salutare,

On Fri, 2016-03-18 at 22:35 +0200, Mihai Catalin Arsenescu via so wrote:
> Buna ziua/seara / Salut,
> Imi pica testul 5 pe linux, iar cand iau operatiile "la mana"
> programul meu face ce trebuie(din punctul meu de vedere). Am
> urmatoarele nelamuriri:
> 1) O diferenta intre programul meu si bash este eroarea data de o
> comanda "cd _director_", unde _director_ nu exista. Bash-ul afiseaza
> no such file or directory, iar eu observ ca chdir() intoarce -1 si
> afisez un mesaj de eroare propriu. Aici este problema ?

Nope, nu aici e problema. La testul 5 nu se iau în considerare mesajele
de eroare. Deci poți să afișezi ce mesaj vrei.

> 2) Bash la o comanda "cd _director_ > out.txt", creeaza fisierul
> out.txt chiar daca nu are nimic de scris. 

Aici e problema, de aici vine diferența.

> Din enuntul temei si
> separarea comenzii cd ca fiind o comanda interna inteleg ca nu trebuie
> implementata ca o comanda simpla(cu fork()), ci trebuie apelata o
> functie care schimba directorul de lucru al procesului(e.g. chdir()).
> Am inteles bine? 

Da, ai înțeles bine.

> Daca da, trebuie sa suport redirectari pe comenzi
> interne(mai specific cd) ? 

Da, așa cum face și bash-ul.

> Daca da, de ce se mai face separarea,  de
> ce nu e cd o comanda ca toate celelalte?

Știi vreun binar/executabil care să se numească 'cd' și să facă 'change
current directory'? Întreb și pentru Linux și pentru Windows.

Directorul current (sau current working directory - CWD) are sens doar
în contextul unui proces. Structura care conține informațiile procesului
(PCB - Process Control Block) conține și CWD [1]. Deci e caracteristic
procesului curent.

Dacă aș avea un 'cd.exe' nu m-ar ajuta prea tare, pentru că eu -
procesul curent - tot trebuie să-mi modific CWD-ul din PCB-ul meu, care
stă în kernel, printr-un apel de sistem (chdir).

Pentru orice comandă se procesează redirectările mai întâi, fie că avem
comandă internă (shell builtin), fie că avem comandă externă. E o
generalizare. Comanda 'cd' e un shell builtin. Un shell builtin poate să
output-eze ceva (vezi comanda 'pushd ~' în bash) și asta înseamnă că mie
ca utilizator îmi este utilă și redirectarea.

[1]
http://ocw.cs.pub.ro/courses/so/laboratoare/laborator-03#prezentare_concepte

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Gitlab]Adaugare in README

2016-03-19 Fir de Conversatie Costin Lupu via so
Salutare,

On Sat, 2016-03-19 at 14:30 +, Horia STOENESCU via so wrote:
> 
> In ultima versiune a temei 1 de la SO, pe care am incarcat-o pe
> vmchecker, am uitat sa adaug in README, link-ul catre repository-ul de
> pe gitlab. As dori sa adaug faptul ca le-am dat drepturi de acces
> persoanelor mentionate pe ocw[1]. Este vreo problema in acest caz?

Nu e nici o problemă.

> [1]:
> http://ocw.cs.pub.ro/courses/so/teme/folosire-gitlab#creare_proiect_nou

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema 2] Mesaje de eroare

2016-03-18 Fir de Conversatie Costin Lupu via so
Salutare, Tudor,

On Fri, 2016-03-18 at 07:45 +, Tudor PARASCHIV (3725) via so wrote:
> Ce mesaje se scriu la stderr in cazul in care nu se trec sanity checks? Vad 
> ca singurul mesaj predefinit este ERR_ALLOCATION.

Singurul mesaj impus este pentru cazul în care comanda/executabilul nu
există. Mesajul în sine este indicat de testul 18.

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Windows]Oprirea testelor

2016-03-15 Fir de Conversatie Costin Lupu via so
On Mon, 2016-03-14 at 22:46 +0200, Mihai Barbulescu via so wrote:
> 2016-03-14 22:43 GMT+02:00 Ailin Menabil :
> > Buna,
> >
> > am intampinat si eu aceeasi problema atunci cand testez tema pe windows. Pe
> > vmchecker mi se opreste la testul 13. Pe linux, imi trec toate testele.
> > Aveti vreo sugestie pt a putea rezolva problema?
> >
> > Pt debugging, incerc sa rulez testele pe masina virtuala, utilizand cygwin,
> > insa nu reusesc sa ma mut in folderul corespunzator. Aparent nu imi gaseste
> > niciun alt folder in /home/Student/
> >
> 
> Buna,
> 
> In cygwin, daca ai ceva in directorul C:\Users\ceva\sub\altceva faci asa:
> 
> cd /cygdrive/c/Users/ceva/sub/altceva

În cygwin merge și asta (atenție, calea Windows e între _apostrofuri_):
$ cd 'C:\Users\ceva\sub\altceva'

> Sau vezi in Installed Programs unde e instalat Cygwin si ai acolo
> home-ul lui student unde iti poti muta tema.

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][General] Coding style - checkpatch.pl

2016-03-13 Fir de Conversatie Costin Lupu via so
Salutare, Iulian,

On Sun, 2016-03-13 at 17:45 +0200, Iulian Matesica via so wrote:
> Salut,
> 
> Cand am rezolvat tema am folosit pentru indentare tab care era
> configurat ca doua spatii. In urma rularii scriptului de verificare
> primesc o gramada de warninguri de forma:
> - WARNING:LEADING_SPACE: please, no spaces at the start of a line
> -  WARNING:SUSPECT_CODE_INDENT: suspect code indent for conditional statements
> - ERROR:CODE_INDENT: code indent should use tabs where possible
> 
> Chiar trebuie sa modific toata tema sa pun tab-uri normale? 

Nu e musai. Dacă ai folosit peste tot cum zici, 2 spații în loc de tab,
e în regulă. Ideea e să fii consecvent.

> Imi pica
> testul 0 de pe vmchecker din aceasta cauza.

Testul 0 are un rol consultativ. Nu e musai să faci tema să-l treacă,
dar destul de posibil să îți arate problemele pentru care ai putea fi
depunctat.

> 
> Also, mai primesc si urmatoarea eroare:
> - ERROR:SPACING: space required before the open parenthesis '('
> 
> Daca mie nu imi place sa pun spatii acolo unde zice el voi fi depunctat?

Așa cum e precizat și în pagina de indicații pentru teme [1], nu e
obligatoriu să adopți coding style-ul din Linux kernel. Dar e
obligatoriu să fii consecvent, să te ții de stilul pe care l-ai abordat.

Spațiile au rolul de a "aerisi" codul, de a-l face mai lizibil.
Asigură-te că livrezi cod ușor de citit și pentru alte persoane.

[1] http://ocw.cs.pub.ro/courses/so/teme/general#recomandari

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][General] Intrebari Enunt

2016-03-13 Fir de Conversatie Costin Lupu via so
Salutare, Vlad,

On Sat, 2016-03-12 at 22:52 +, Vlad MUSCALU via so wrote:
> Salut,
> Am câteva întrebări legate de Tema 2 - Mini-shell:
> 1. Enunțul  de pe ocw[1] este definitiv? Se poate să fie
> schimbat până pe 17 Martie?

Cerința temei e definitivată. E posibil să mai adaugăm
sugestii/recomandări.

> 2. Putem implementa folosind C++ și concepte OOP?

C++ nu, OOP da.

> 3. Avem voie să folosim directive ca #ifdef _WIN32?

Da.

> 4. Putem folosi structuri de date din std?

Dacă te refereai la std-ul din C++ (std::*), nu.

> [1] http://ocw.cs.pub.ro/courses/so/teme/tema-2

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema2][General] Modificare hash.c si hash.h

2016-03-12 Fir de Conversatie Costin Lupu via so
On Sat, 2016-03-12 at 18:50 +, Alexandru ŞORODOC via so wrote:
> Salut,
> 
> Avem voie sa modificam fisierele hash.c si hash.h fara a schimba
> comportamentul functiei de hash?
> Doresc sa adaug un typedef pentru tipul hash-ului si sa scot partea cu
> "hash % hash_length" pentru ca este irelevanta in implementarea mea.

Discutăm despre Tema 1 (vezi subject)?

Poți să adaugi în fișierele hash.{h,c}. Dar funcția de hash *trebuie* să
rămână aceeași. Chiar dacă folosești încapsulare într-un tip de date
creat de tine, tot trebuie să faci pe undeva "hash % hash_length". Deci
implementează astfel încât funcția hash să rămână neatinsă.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1] Variabile globale

2016-03-11 Fir de Conversatie Costin Lupu via so
On Fri, 2016-03-11 at 20:06 +, George-Bogdan OPREA (25340) via so
wrote:
> Salut,
> 
> 
> Sunt permise variabilele globale? As prefer sa declar hash-ul si
> dimensiunea lui globale ca sa nu le trimit ca parametri tuturor
> functiilor.

De ce nu folosești încapsulare [1]? Remember POO?

[1] https://en.wikipedia.org/wiki/Encapsulation_%28computer_programming%
29

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Windows]Problema rulare teste

2016-03-08 Fir de Conversatie Costin Lupu via so
On Tue, 2016-03-08 at 21:42 +, Horia STOENESCU via so wrote:
> 
> Buna seara,
> 
>Am o problema in legatura cu rularea temei pe o masina virtuala
> cu Windows 7 (mentionez ca tema este functionala pe o masina de Linux
> ). In momentul cand compilez cu cl.exe ( powershell ) , executabilul
> generat nu citeste de la stdin si astfel toate testele legate de
> acesta pica. Daca rulez cu gcc pe windows ( in cygwin ), acestea
> functioneza si obtin toate cele 90 de puncte.
> 
> Cum as putea rezolva problema si , de asemenea, pot incarca pe
> vmchecker arhiva care compileaza cu gcc pe Windows?

Salutare, Horia,

Eu sunt un pic nelămurit dacă tema ta rulează pe Windows când o
compilezi cu cl. Apropos de asta, cu gcc *compilezi*.

Also, verifici codul de eroare returnat când citești de la stdin? Ce-ți
returnează? Crapă cumva când vrei să citești de la stdin și dacă da, ai
făcut debugging?

Și nu, nu poți încărca arhiva care compilează cu gcc pe Windows.
Makefile-ul de Windows trebuie să folosească doar cl.

Spor!

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] [Tema1][General] Precizare linii goale in fisiere referinta

2016-03-07 Fir de Conversatie Costin Lupu via so
Salutare,

Revin cu o precizare legată de problema semnalată de colegii voștri.
Fișierele de referință din arhivele de teste conțin linii goale deoarece
soluția folosită de noi pentru generarea lor afișează un '\n' în plus
după fiecare din comenzile 'print', 'print_bucket' sau 'find'.

Nu este nevoie să reproduceți acest comportament deoarece comparațiile
între fișierele generate de programul implementat de voi și fișierele de
referință sunt făcute cu comanda 'diff -B' pentru ignorarea liniilor
goale. Așadar tema voastră nu este afectată dacă nu afișați acel extra
'\n'.

Dacă totuși vă pică testele doar pentru motivul că nu generați liniile
goale, verificați comportamentul opțiunii '-B' al comenzii 'diff'. A
existat un bug legat de această opțiune în versiunile mai vechi ale
comenzii 'diff'.

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Linux] Teste

2016-03-07 Fir de Conversatie Costin Lupu via so
On Mon, 2016-03-07 at 09:19 +0200, Alexandros Dimos wrote:
> Poate nu am inteles exact cum trebuie, dar in test18.in nu vad linii
> goale.
> La fel si testele 21,22 si inca vreo doua.

Ai înțeles bine, eu am răspuns greșit și te-am indus în eroare. Scuze!

Soluția de referință mai afișează un '\n' după comenzile de print,
print_bucket și find. Oricum, implementările voastre nu sunt afectate de
această potențială diferență întrucât testele rulează diff-uri ce ignoră
liniile goale.

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

Re: [so] [Tema1][Linux] Teste

2016-03-06 Fir de Conversatie Costin Lupu via so
On Sun, 2016-03-06 at 16:29 +0200, Igor Parvan via so wrote:
> Imi puteti spune, va rog, de ce unele fisiere .ref au linii libere?
> 
> Exemplu fisierul test18.ref:
> albertina picasso ashlee philippine sharleen sofia june
> 
> june picasso

Din enunțul temei:
"Liniile goale din fișierul de intrare trebuie ignorate (programul nu
face nimic și trece la linia următoare)".

Costin


___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii

[so] Verificare code style

2016-03-05 Fir de Conversatie Costin Lupu via so
Salutare,

Repo-ul pentru temele de SO [1] a fost updatat cu script-ul
'checkpatch_wrapper.sh' - un wrapper peste scriptul checkpatch.pl.
Puteți folosi acest wrapper pentru a vă verifica sursele înainte de a
uploada o temă. Wrapper-ul dezactivează verificările considerate
irelevante de echipa SO pentru sursele temelor și este sincronizat cu
checker-ele din repo [1], de pe vmchecker și de pe wiki [2].

Exemplu de utilizare pentru o singură sursă:
$ checkpatch_wrapper.sh mysource.c

Studenții care deja și-au creat un repo în Gitlab [3] pentru rezolvarea
temelor își pot updata repo-urile re-executând scriptul
'so-create-repo.sh'.

[1] https://github.com/systems-cs-pub-ro/so-assignments
[2] http://ocw.cs.pub.ro/courses/so/teme/tema-1#materiale_ajutatoare
[3] https://gitlab.cs.pub.ro/

Costin

___
http://ocw.cs.pub.ro/courses/so/info/lista-discutii