Diferente pentru limeeval intre reviziile #18 si #37

Nu exista diferente intre titluri.

Diferente intre continut:

h1=. *LimeEval*
table{border-style: hidden}.
|\350/2^~.  * Este un evaluator gratuit pentru mediul Windows, care automatizeaza procesului de compilare si punctare a problemelor de natura algoritmica.
* Creat in special pentru a aduce suport schimbarilor necesare Olimpiadei Judetene de Informatica, *trecerea la compilatoare pe 32 de biti*
* Destinat OJI-ului si a concursurilor de informatica (interjudetene, pe clasa etc..) pentru a facilita o compilare si evaluare a concurentilor automatizata intr-un mediu sigur.
* Destinat elevilor si profesorilor care sustin o activitate de pregatire la informatica cu probleme de concurs
<br>
Linkurile de download sunt in dreapta.
Pentru a rula evaluatorul aveti nevoie de un sistem de operare Windows XP, si framework-ul .NET 2.0 instalat.
<br>
(toc){width:100px}* *{'Screenshots':limeeval#screenshots}*
* *{'Structura de fisiere a evaluatorului':limeeval#structura}*
* *{'Instructiuni de folosire':limeeval#instructiuni}*
** {'Tutorial 1 : Instalare si configurare compilatoare':limeeval#t1}
** {'Tutorial 2 : Creare si definire runda':limeeval#t2}
** {'Tutorial 3 : Compilarea si evaluarea unei runde definite anterior':limeeval#t3}
** {'Tutorial 4 : Consola grafica - warninguri si erori':limeeval#t4}
** {'Tutorial 5 : Rulare evaluator in mod consola':limeeval#t5}
* *{'Download runde':limeeval#dlrunde}*
* *{'Intrebari frecvente (FAQ)':limeeval#intrebari}*
* *{'Sursa verif':limeeval#verif}*
<br>
|-=. !limeeval?lime_logo.png!|
|^. (toc){width:340px}* *Versiune* :
** {'0.9.3.11':limeeval?lime.exe}
* *Framework .NET* :
** {'2.0':http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en}
* *Functii generale* :
** - mod consola / mod grafic
** - configurare completa din interfata
** - compilare automata surse concurenti (selectiva sau totala)
** - posibilitate de specificare a compilatoare multiple
** - directive custom de compilare
** - salvare output compilatoare pe fiecare sursa
** - xml generat cu rezultatele compilarii tuturor concurentilor
** - evaluare (selectiva sau totala) in mod sandbox
** - limitare de timp si limitare de memorie
** - evaluare test cu test, sau rapida
** - salvarea in fisier individual outputului produs de fiecare concurent pe fiecare test
** - salvare in fisier individual rezultate evaluare pe fiecare test (punctaj, timp, memorie, mesaj verif)
** - xml generat cu rezultatele totale ale evaluarii
** - curatare foldere concurenti \ filtrare surse \ redenumire surse
** - error reporting, exceptii, warninguri, erori, salvate in fisiere si afisate in consola grafica
* *To Do* :
** - clasament real time, si detasat din tab control
** - exportare borderouri in *.txt-uri individuale pentru fiecare concurent
** - exportare clasament in *.xls (Excel)
* *Buguri cunoscute* :
** - in timpul evaluarii in mod grafic (fara pauza), daca se tot face resize la tabel, aplicatia se blocheaza. (thread deadlock)
|
h5=. *Aceasta pagina are nevoie de o rescriere totala, pentru a fi actuala cu versiunea curenta a evaluatorului, corectat de buguri si cu new features. Pagina va fi rescrisa la lansarea versiunii 1.0*
<br><br>
Sunt ocupat cu bac-ul acuma, nu mai am timp sa curat sursa si sa o pun la liber, dar dupa BAC, am sa fac niste documentatie, si instructiuni de utilizare videouri etc.. si o sa lansez proiectul ca Open Source
h3(#screenshots). *Screenshots*
!limeeval?1.png!:http://i27.tinypic.com/2ljklxu.jpg
!limeeval?2.png!:http://i25.tinypic.com/14uvtwo.png
!limeeval?3.png!:http://i32.tinypic.com/mio3yq.png
!limeeval?4.png!:http://i31.tinypic.com/2vnnp00.png
!limeeval?5.jpg!:http://i29.tinypic.com/2mpyc95.jpg
!limeeval?6.jpg!:http://i28.tinypic.com/2u43qe0.jpg
Ultimul build e din /05/26, modificari la autodetectarea idurilor si functii de curatare. Enjoy.
<br><br><br>
 
h3(#structura). *Structura de fisiere a evaluatorului*
 
In folderul root al evaluatorului :
 
|\100. %{color:green}lime.exe% | Executabilul evaluatorului |
|\100. %{color:blue}compilatoare.xml% | Fisier de configurare a compilatoarelor |
|\100. %{color:#e67658}errlog.txt% | Fisier unde se scriu unele erori si warninguri |
 
*! Numele de mai jos sunt doar exemple nu sunt fixe, ele depind de configurarea fiecarei runde*
 
Undeva pe disc :
 
|\150. %{color:blue}fisier_runda.xml%|Fisier de configurare al unei runde|
|\150. %{color:#d1ac3b}/surse/%|Folder unde se vor pune folderele personale fiecarui id|
 
In surse se poate copia orice. Folderele si fisierele care nu sunt solutii la probleme si nu au extensiile valide
*vor fi sterse*
 
| %{color:#d1ac3b}/surse/1/% | Folderul id-ului nr 1 |
| %{color:#d1ac3b}/surse/2/% | Folderul id-ului nr 2 |
| %{color:#d1ac3b}/surse/3/% | Folderul id-ului nr 3 |
 
|\85. %{color:#d1ac3b}/teste/% | Folderul cu testele problemelor |
 
Pentru fiecare problema specificata in fisierul cu teste trebuie sa fie un folder cu numele acesteia. Acesta trebuie sa contina testele de intrare, testele de iesire corecte si un (verificator) %{color:green}verif.exe% - care verifica corectitudinea raspunsului concurentului pe out-ul produs de acesta. (mai multe in "Intrebari frecvente":(#intrebari) )
 
|\0. %{color:#d1ac3b}/teste/problema1/% | Folder pentru problema1 |
|\0. %{color:#d1ac3b}/teste/problema2/% | Folder pentru problema2 |
 
|\125. %{color:#d1ac3b}/bin/% | Aici se vor pune sursele compilate ale concurentilor |
 
Se va creea de catre evaluator pentru fiecare id un folder cu valoarea id-ului, si pentru fiecare compilator cu care s-au compilat sursele concurentului, va exista un folder si in fiecare folder va exista un executabil, cu numele problemei compilate (Daca compilarea a avut succes). Ex :
 
| %{color:#green}/bin/1/g++/problema1.exe% | Binarul creat pentru concurentul cu id-ul 1, pentru sursa sa la problema1, compilata cu g++ |
| %{color:#green}/bin/1/fpc/problema1.exe% |  Binarul creat pentru concurentul cu id-ul 1, pentru sursa sa la problema1, compilata cu fpc|
| %{color:#green}/bin/1/gcc/problema2.exe% |  Binarul creat pentru concurentul cu id-ul 1, pentru sursa sa la problema2, compilata cu gcc |
 
| %{color:#d1ac3b}/eval/% | Aici se vor evalua binarele concurentilor |
 
In acest folder se vor copia in mod repetat fisiere in, se vor redenumi, se vor copia binarele concurentilor, in acest folder se vor rula, aici se va rula verif-ul etc..
(Vezi : Cum se produce evaluarea? in "Intrebari frecvente":(#intrebari) )
 
| %{color:#d1ac3b}/rezultate/% | Acesta este folderul unde se vor scrie rezultate. In acest folder se vor creea 3 foldere |
| %{color:#d1ac3b}/rezultate/compilare/% | Aici se vor pune rezultatele compilarii |
| %{color:#d1ac3b}/rezultate/evaluare/% | Aici se vor pune rezultatele evaluarii|
| %{color:#d1ac3b}/rezultate/log/% | Aici se vor scrie loguri, cu probleme aparute in timpul compilarii si evaluarii |
 
Evaluatorul va crea (depinde de flagurile cu care este rulat), fisiere xml cu rezultatele totale ale compilarii si evaluarii
 
| %{color:blue}/rezultate/compilare/rezultat_compilare.xml% | Rezultate totale ale compilarii |
| %{color:blue}/rezultate/evaluare/rezultat_evaluare.xml% | Rezultate totale ale evaluarii |
 
 
In %{color:#d1ac3b}/rezultate/compilare/% se va creea pentru fiecare id, si pentru fiecare compilator folosit un folder, in care se vor pune fisiere de forma : "problema.compilator"  , in care va fi exact outputul produs de compilator.
 
De ex : g++-ul si gcc-ul, la o compilare reusita, scrie 2-3 linii noi. La o compilare gresita e stackul de erori.
Ex : %{color:#e67658}/rezultate/compilare/1/g++/problema.g++%
 
In %{color:#d1ac3b}/rezultate/evaluare/% pentru fiecare id si pentru fiecare compilator se vor creea fisiere de forma :
 
| %{color:#e67658}problemaQ.out% | contine exact raspunsul concurentului la acea problema pe testul Q |
| %{color:#e67658}problemaQ.rez% | contine rezultatul evaluarii.
                  Pe prima linie un intreg (punctajul obtinut pe test)
                           Pe a doua linie un intreg, memoria folosita pe acel test.
                           Pe a 3-a linie un intreg, punctajul obtinut pe test
                           Pe a 4-a lini eun mesaj (OK, Puntcaj Partial, Gresit, etc..) |
 
In %{color:#d1ac3b}/rezultate/log/% se vor crea :
 
| %{color:#e67658}compilare.txt% | Contine warninguri erori si exceptii aparute in timpul compilarii |
| %{color:#e67658}evaluare.txt% | Contine warninguri erori si exceptii aparute in timpul evaluarii |
 
<br>
 
h3(#instructiuni). *Instructiuni de folosire*
 
Instructiunile de folosire sunt sub forma de screenshoturi insotite de text explicativ si indicatii.
 
p(#t1). "*Tutorial 1* - Instalare si configurare compilatoare":http://www.flickr.com/photos/14249976@N07/sets/72157604092678918/
 
p(#t2). "*Tutorial 2* - Creare si definire runda":http://www.flickr.com/photos/14249976@N07/sets/72157604097029643/
 
p(#t3). "*Tutorial 3* - Compilarea si evaluarea unei runde definite anterior":http://www.flickr.com/photos/14249976@N07/sets/72157604097113831/
 
p(#t4). *Tutorial 4* - ConsolaGrafica - warninguri si erori
"img1":http://www.flickr.com/photos/14249976@N07/2325989309/  "img2":http://www.flickr.com/photos/14249976@N07/2325989433/
 
p(#t5). *Tutorial 5* - Rulare evaluator in mod consola
"img1":http://www.flickr.com/photos/14249976@N07/2326813878/
"img2":http://www.flickr.com/photos/14249976@N07/2325996707/
"img3":http://www.flickr.com/photos/14249976@N07/2325996831/
"img4":http://www.flickr.com/photos/14249976@N07/2325996911/
"img5":http://www.flickr.com/photos/14249976@N07/2326814246/
"img6":http://www.flickr.com/photos/14249976@N07/2325997073/
"img7":http://www.flickr.com/photos/14249976@N07/2326814388/
"img8":http://www.flickr.com/photos/14249976@N07/2325997195/
 
<br><br><br>
 
h3(#dlrunde). *Download runde*
 
<br><br><br>
 
h3(#intrebari). *Intrebari frecvente*
 
(toc){width:340px}* *1. Runde*
** {'1.1 Ce este o runda?':test}
** {'1.2 Prin ce se defineste o problema intr-o runda?':test}
** {'1.3. Prin ce se defineste un id valid?':test}
** {'1.4 Ce path-uri catre foldere specifice sunt intr-o runda?':test}
* *2. Compilatoare*
** {'2.1 Ce contine o configurare de compilatoare?':test}
* *3. Compilare*
** {'3.1 Cum se produce compilarea?':test}
* *4. Evaluare*
** {'4.1 Cum se produce evaluarea?':test}
** {'4.2 Ce trebuie sa indeplineasca \ implementeze un verificator?':test}
* *5. Runtime*
** {'5.1 Ce se intampla in cazul unei exceptii aparute la rularea solutiei concurentului?':test}
 
<br><br><br>
 
h3(#verif). *Sursa verif*
 
Verificatorul este necesar pentru a puncta fisierul OUT produs de concurent. Trebuie pus sub forma de executabil in fisierul cu testele problemei.
 
Mai jos este o sursa generala de verificator. Sursa are implementate functii de comparare bit la bit, si a numarului din fisier. Pentru probleme cu solutii multiple sau un alt mod de verificare vor trebui implementate si alte functii de verificare a rezultatului.
Shimbati #define-urile INFILE, OUTFILE, si OKFILE cu numele corespunzatoare.
 
== code(cpp) |
#include <stdio.h>
 
/* !!! schimba <problema> cu numele problemei */
#define INFILE "problema.in"
#define OUTFILE "problema.out"
#define OKFILE "problema.ok"
 
FILE *fIN, *fOUT, *fOK, *fV;
 
bool openFiles();        /* deschide fisierele si verifica existenta lor */
void closeHandles();     /* inchide fisierele */
bool compareBitByBit();  /* compara out si ok, bit la bit */
bool compareNumber();    /* compara numerele din out si ok */
 
int main()
{
    if(!openFiles()) return 0;
    if (compareBitByBit())
        fprintf(fV, "10\nCorect");
    else
        fprintf(fV, "0\nGresit");
    closeHandles();
 
    return 0;
}
 
bool openFiles()
{
    fIN = fopen(INFILE, "r");
    fOUT = fopen(OUTFILE, "r");
    fOK = fopen(OKFILE, "r");
    fV = fopen("punctaj.verif", "w");
    if (!fIN)
    {
        fprintf(fV, "0\nFisier IN lipsa.");
        closeHandles();
        return false;
    }
    if (!fOUT)
    {
        fprintf(fV, "0\nFisier OUT lipsa.");
        closeHandles();
        return false;
    }
    if (!fOK)
    {
        fprintf(fV, "0\nFisier OK lipsa.");
        closeHandles();
        return false;
    }
    return true;
}
 
void closeHandles()
{
    if (fIN) fclose(fIN);
    if (fOUT) fclose(fOUT);
    if (fOK) fclose(fOK);
    if (fV) fclose(fV);
}
 
bool compareBitByBit()
{
    char b1, b2;
    int ret1, ret2;
    while (1)
    {
        ret1 = fscanf(fOUT, "%c", &b1);
        ret2 = fscanf(fOK, "%c", &b2);
        if (ret1 > 0 && ret2 <= 0) return false;
        if (ret1 <= 0 && ret2 > 0)  return false;
        if (b1 != b2) return false;
        if (ret1 <= 0 && ret2 <= 0) return true;
    }
    return true;
}
 
bool compareNumber()
{
     int nr1, nr2;
     fscanf(fOUT, "%d", &nr1);
     fscanf(fOK, "%d", &nr2);
     if (nr1 != nr2) return false;
     return true;
}
==
 
h3. {'LimeEval - build 0.9.5.26 (build 0.9.5.26)':limeeval?lime_v0.9.5.26.zip}

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.