VIKWiki-vita:Kvíz

A VIK Wikiből

Levlista, 2013. 01. 07.

Ötlet

Van egy jobb javaslatom, legyenek a kvízek egy-egy külön wikioldalon, és ne egy abszolút külön weboldalon. Egy darab javascript programot kéne írni, amit a wikire egyszer kéne feltölteni, statikusan lehetne linkelni, és az tudna egy-egy wikioldalt "kikérdezőprogrammá" átalakítani.

Olyan megvalósításra gondolok, hogy a wikioldalt, amit kvízesíteni akarnánk, valami sztenderd formátumban kéne megírni, pl.

{{Kvízkérdés
|kérdés=Mi 2 négyzetgyöke?
|jóválasz=A|
{{Válasz|jel=A|szöveg=1,4142}}
{{Válasz|jel=B|szöveg=4}}
}}

{{Kvízkérdés
|kérdés=Mennyi 1+1?
|jóválasz=B|
{{Válasz|jel=A|szöveg=1}}
{{Válasz|jel=B|szöveg=2}}
}}

(OK, ennél lehet, egyszerűbb/jobb sablont is kitalálni hozzá, de most legyen a fenti a példa.)

Ezt a wiki motorja át tudja alakítani majdnem tetszőleges, javascriptben könnyen feldolgozható objektummá, aminek az lenne a feladata, hogy ha olyan oldallal találkozik, amin vannak kvízkérdések, akkor azt az oldalt automatikusan átalakítsa egy annak megfelelő interaktív felületté. Vagyis egyszerre egy random kérdést jelenítene meg, hozzá kattintható gombokat rakna, jelezné, hogy jó-e a válasz, rövid százalékos statisztikát vezetne, ilyesmi.

Olyan előnyei lennének ennek, hogy - A kérdések és válaszok ugyanolyan könnyen szerkeszthetők, kibővíthetőek lennének, mint bármely más wikioldal - Az autentikáció technikailag eleve megoldott, mert a wikire épülne a kvízek szerkesztése - Biztonságos, mert a hozzá tartozó javascript kódot csak az adminok tudnák szerkeszteni, az egyszerű halandók csupán a kvízkérdéseket.

Ami ebből a melórész, az egy használható, egyszerű sablon kitalálása, amit a wikioldalakon lehet csinálni, és a javascript-kód megírása, ami a wikioldalon a sablon szerint megadott adatokat kvízkérdésekké alakítja. Szerintem nem nagy meló, és vizsgák után valószínűleg tudnám is vállalni a dolog technikai megvalósítását, csináltam már hasonlókat.

Üdv – Boldi (vita)

Re:

Nekem is tetszik az integráció ötlete, viszont az egyedi leíró nyelv helyett én javasolnám továbbra is a JSONt, mert annak a kifejezőereje tudna igazodni az esetleges tesztprogram módosításokhoz, anélkül, hogy az esetleges wiki parsert is móodsítani kelljen. Mellesleg szerintem a JSON is kellőképp (sőt nekem még jobban) megérthető, mint a wikitext.

Természetesen azért security szempontból arra vigyázni kell, hogy a json is parsolva legyen és véletlen se futtatva (ellenben a mostani megoldással).

(Koczka Tamás)

Re: Re:

Igen, a leírónyelvnél fontos szempont, hogy egyszerűen érthető legyen, de ha wikioldalra akarjuk építeni a dolgot, akkor csak a wikitext az, amit a wiki motorja is fel tud dolgozni, és nem tudom, hogy nem ütköznénk-e mindenféle váratlan dolgokban, ha egy másik leírónyelven (JSON, CSV, akármi) akarunk benne adatokat tárolni. És akkor ugye az adatokat a wiki API-ján keresztül kell külön betölteni szerintem, de ez mondjuk nem nagy gond. De szerintem ha csak az egyszerűség a szempont, akkor (pár sablon segítségével) elég jól lehet definiálni egy nagyon egyszerűen kézzel is írható és akár géppel is egyszerűen feldolgozható leírónyelvet.

(Boldi (vita))

VIKWiki:Ötletláda

Tesztprogram

Az igazhamis illetve feleletválasztós zh-kra tudjunk ezen keresztül gyakorolni: lesz rá egy beilleszthető sablon

Ki csinálja, és hogy áll vele?
Koza Boldi
JavaScript engedélyezésre várunk.
Új megvalósítási ötlet kell, javascriptet nem akarunk globálisan
A következőt tudom javasolni: Csináljatok egy-egy példa sablont a megfelelő kérdés-válasz típusokhoz (igen-nem, többől egyet választós, többől több választós). Ha ezek a html kódban jól elkülöníthetően jelennek meg, akkor Javascript-el be lehet parse-olni őket és onnantól már könnyű összekötni a Kocka Tomi féle programmal vagy akár újból megírni azt. Egy db konkrét js fájlt, pedig be lehet rakni az összes oldal fejlécébe, így ahol a js érzékeli, hogy van kikérdezős rész, ott automatikusan átalakítja az oldal azon részét kikérdezős résszé. Így nem para a JS kezelés, mert a userek nem írhatnak JS kódot, csak egy fix kód van. Itt van pár példa: Szerkesztő:Pairg
Megjegyzések
Szerintem ez ne beillesztés legyen wikire, vagy ha beillesztés, akkor iframe legyen.. Beágyazás eléggé tönkre tud baszni, ha rosszt a kód! az erégi wikin is para volt.
Tudtommal a régi wikin jól működött, legalábbis azokon az oldalakon, amit én láttam - Koza

Pairg ötlete

Három kérdés típus van:

  • I/N: Igen / Nem
  • radio: többől egyet választhatsz
  • checkbox: többől többet választhatsz

Ezt kell teljesítenie a sablonnak:

  • A különböző feladatok elkülönülnek (kérdés-válasz párok)
  • A kérdés és a lehetséges válaszok elkülönülnek
  • Mindegyik kérdésnél meg kell adni a kérdés típust valamilyen formában
  • Mindegyik válasznál meg kell adni, hogy jó-e az a válasz
  • Kell lennie egy kezdő és egy záró karaktersorozatnak, ami egyértelműen azonosítja a kikérdező program elejét és végét

Itt van pár példa a lehetséges szintaxisokra, de nyugodtan találjatok ki újat, bővítsétek, variáljátok:

Kikérdező

Ez itt egy kérdés?
Típus:I/N
I: Nem
Ez itt egy kérdés?
Típus:radio
Ez egy rossz válasz. - N
Az egyetlen jó válasz. - I
Másik rossz válasz. - N
Ez itt egy kérdés?
Típus:checkbox
I:Ez az egyik jó válasz.
N:Ez az egyik rossz válasz.
I:Ez a másik jó válasz.
N:Ez a másik rossz válasz.

Kikérdező vége

lennon ötlete

Ha gondolod, tudok segíteni benne, JavaScriptben nagyon okos/hasznos frameworkök vannak, amik direktben támogatják az ilyen kliensoldali alkalmazásokat, és még valamilyen tervezési mintát is megvalósítanak (MVC, MVVM. Tudom ajánlani a KnockoutJS-t, támogatja a deklaratív kötéseket (gyakorlatilag nincs a View mögötte code-behind), tudja a kliensoldali templatelést.

A JQuery-t használom, mivel már ismerem, és gyárilag van telepítve a MediaWikihez, ezért nem kell fölöslegesen plusz egy könyvtáraz betölteni. Boldi (vita) 2013. január 23., 14:14 (CET)

Más. Jó lenne, ha az egyes emberek elmenthetnék a saját eredményüket (illetve ez automatikusan történne), erre a localStorage adja magát. Szerveroldalon ez nem kerül semmibe, de az emberek figyelemmel tudnák kísérni hosszabb távon is a statisztikájukat az egyes témakörökből.

Rendben, majd belenézek a dologba, de ez egyelőre nem prioritás abban az értelemben, hogy előbb szeretnék egy működő verziót kiadni, és csak utána foglalkozni ezzel. Boldi (vita) 2013. január 23., 14:14 (CET)

Nem tudom van-e már rá elfogadott sablon/konvenció, de én ilyesmi struktúrában gondolkoznék:

{{Kvíz:Eleje|cím=milyen kikérdező is ez}}
{{Kvíz:IgazHamis|kérdés=szöveg|I}}
{{Kvíz:IgazHamis|kérdés=szöveg|H}}
{{Kvíz:Sima|kérdés=szöveg|megold=1|válasz1|válasz2|válasz3[|válasz4[...]]}}
{{Kvíz:Kombó|kérdés=szöveg|megold=1,4|válasz1|válasz2|válasz3[|válasz4[...]]}}
{{Kvíz:Kitöltendő|kérdés=szöveg|válasz=konkrét válasz}}
{{Kvíz:Vége}}

Nem tudom mennyire okos a wiki a paraméterbehelyettesítés szempontjából, de szerintem ez a minimum kontent, ami kellhet. Az explicit Eleje/Vége sablonnal akár azt is meg lehetne oldani, hogy az egyes kérdések rögtön valami JSON objektummá változzanak, és az előbbi két sablon pont úgy zárja ezeket közre, hogy a kikérdezőprogi el tud indulni.

A Palotasb/Kvíz/Tesztkérdések oldalon lévő sablont használom, ami lényegében alig tér el egy rendes wikioldaltól, de ez is a cél. Feldolgozni nem sokkal nehezebb a DOM alapján JQuery-ben, mint egy a tiedhez bonyolultabb sablont (korábban amúgy én is olyanban gondolkodtam, lásd a fenti levlistás ötletet), de így sokkal kényelmesebben szerkeszthető és hozható létre egy-egy (gyakorlatilag tetszőleges wikiformátumú) kvíz, ami hosszabb távon sokkal fontosabb szerintem. Nemsokára közzéteszem az eddig kódot, mert már eléggé használható a dolog. Boldi (vita) 2013. január 23., 14:14 (CET)

Ha már esetleg eldőlt a dolog menete, akkor bocsi :). lennon(vita) 2013. január 21., 19:40 (CET)