[rosedu-general] Format întrebare uq-translate

Razvan Deaconescu razvan at anaconda.cs.pub.ro
Wed Aug 29 16:55:01 EEST 2007


Salut!

Observ că sunt destul de multe discuţii/nelămuriri/sugestii legate de 
formatul întrebărilor pentru partea de uq-translate.

Drept urmare, deschid acest thread în speranţa că, la sfârşitul a 
câtorva zile de trudă, să stabilim once and for all formatul întrebărilor.

Formatul de până acum (aparţinând lui Vlad) este următorul:

---
@question (qotd|challenge)
@chapter <număr>
[@answers <număr>]
Text întrebare
+răspuns corect
!explicaţie
-răspuns incorect
!explicaţie
(repetat de atâtea ori cât trebuie)

alte întrebări
---


Se pune, în primul rând problema spaţiilor şi a liniilor libere. Pe 
moment, cred că este indicat să forţăm ca tag-urile ce încep cu @, 
răspunsurile şi comentariile să pornească de la începutul liniei

Astfel, va fi corect:
@chapter 3
@answers 5

dar nu va fi corect
   @chapter 3
@answers 5

Caracterul @ va fi urmat imediat de answers|chapter|question etc. 
Argumetul tag-ului (numărul) poate fi separat prin oricâte spaţii. 
Expresia regulată asociată ar fi

^@question[ \t]+(challenge|qotd)[ \t]*\n
^@chapter[ \t]+[0-9]+[ \t]*\n

Pot exista _oricâte_ linii libere între tag-uri. O linie liberă este 
definită de expresia regulată:

^[ \t]*\n

La fel pot exista linii libere până la enunţul întrebării.

Întrebarea se poate afla pe _oricâte_ rânduri. Asta din cauză că e 
posibil să avem nevoie de ceva de genul:

---
Ce efect are rularea comenzi:
<pre>
$ ps -H
</pre>
---

sau:

---
Fie următoarea rulare a unei comenzi:
<pre>
$ /sbin/ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0A:E4:A2:9C:E5
           inet addr:10.38.232.251  Bcast:10.38.255.255  Mask:255.255.0.0
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:41893 errors:0 dropped:0 overruns:0 frame:0
           TX packets:39248 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:18388660 (17.5 MiB)  TX bytes:4073616 (3.8 MiB)
           Interrupt:18 Base address:0xc800
</pre>
<br />
Ce puteţi spune despre comanda respectivă?
---

O întrebare se va încheia în momentul în care se întâlneşte un răspuns 
(adică un semn - sau + la început de rând).

Răspunsurile vor porni strict de la începutul liniei:

^(+|-)[ \t]*......

Un răspuns se poate găsi, de asemenea, pe mai multe linii. Un răspuns se 
va încheia în momentul găsirii unui alt răspuns, a unui tag (ultimul 
răspuns de întrebare) sau a sfârşitului fişierului (ultimul răspuns al 
ultimei întrebări).

Cred că tag-ul answers e mai mult o bătaie de cap decât o formă de 
ajutor. Putem forţa, dacă se doreşte, prezenţa a doar 4 răspunsuri şi 
unul corect fie intern (la qotd) fie prin transmiterea unui argument în 
momentul translatării.

Alte observaţii:

* nu văd de ce ar conta ordinea tag-urilor; e vreo problemă dacă apar în 
altă ordine?
* avem două abordări posibile pentru cazul în care nu se respectă 
standardul de format:
  - "reglăm" întrebarea (ignorăm liniile suplimentare sau care apar de 
două ori, etc.) şi o comitem în baza de date;
  - în momentul în care întâlnim o eroare/inconsistenţă transmitem un 
warning către utilizator cu întrebarea respectivă, renunţăm la ea şi 
căutăm următoarea întrebare (următorul set de tag-uri)

Eu sunt pro pentru a doua variantă întrucât o să ne scutească de multe 
probleme. Dacă nu e o întrebare bună, salt peste şi warning la 
utilizator. În plus, dacă va fi vreodată nevoie să adăugăm facilităţi 
suplimentare, vom putea accepta noile întrebări uşor prin "relaxarea" 
constrângerilor.

Propunerea mea este, aşadar, să forţăm constrângeri cât mai puternice. 
NU se acceptă nici o întrebare care nu este conformă cu standardul (un 
fel de XHTML versus HTML). Se trece la următoarea întrebare şi cel care 
a greşit-o o va putea reface. Mai mult, dacă avem bube în programul de 
translatare, mai degrabă nu băgăm o întrebare validă în baza de date, 
decât să băgăm o întrebare invalidă.

Alte observaţii ar ţine de limitele impuse pentru diverşii parametri. 
Sugerez existenţa unui fişier de configurare în care să impunem 
diversele limite pentru asigurarea corectitudinii fişierului:

numărul maxim de întrebări
numărul minim/maxim de răspunsuri
numărul minim/maxim de răspunsuri corecte
numărul minim/maxim al unui capitol
tipurile posibile de întrebări (tag-ul question).

Cam atât până aici. Revin dacă mai îmi trece prin cap ceva. Aştept 
observaţii.

Răzvan



More information about the rosedu-general mailing list