"Valakinek holnap le kell győzni a sötétséget
Mondd, te kit választanál?
Valakinek holnap át kell írni a régi meséket
Ó, mondd, te kit választanál?
Valakinek holnap meg kell váltani ezt a világot
Mondd, te kit választanál?"
Az első laborfeladat (szept. 23): a Prog1-beli első (humán genomos) védési feladatodat írd át C++ nyelvről Java-ra. Ez a bemelegítő feladat demonstrálja, hogy a Java, C# és társai valóban a "homokozó"... Természetesen magam is dobok egy megoldást, de ezt csak akkor nézd meg, ha önállóan nem sikerül!
Itt találod: http://www.inf.unideb.hu/~nbatfai/LZWBinFa.java
Egyszerűen fogtam a védési referencia z3a7.cpp forrást, s az eredeti kommenteket, kódot is meghagyva, egyszeri szekvenciális csipetenkénti átírással Java-ra alakítottam. Miért is és milyen szempontból "homokozó" ez? Lásd még az előadást majd a teljes képhez. de pl. a szereplő
public:
LZWBinFa ():fa (&gyoker)
{
}
~LZWBinFa ()
{
szabadit (gyoker.egyesGyermek ());
szabadit (gyoker.nullasGyermek ());
}
helyett elegendő ennyi:
public LZWBinFa() {
fa = gyoker;
}
hiszen itt nincs a megszokott (tag, referencia, pointer) csak a referencia, de mivel más nincs, így azt sem kell tudni, hogy ez referencia :-) s amit a programozó nem tud, az nem zavarja össze :-)))
20 pont annak az első 3-nak, aki ugyanígy magától átírja (s természetesen ugyanúgy működik), de a kód ne legyen nyilván ugyanaz, mint az enyém, hiszen azért még nem jár egy rúgóra az agyunk, tehát ne másoljuk, az enyémet csak végső elkeseredésben nyissuk ki! További 20 pont annak, aki átírja C#-ba is, s még további 20, aki Python-ba, ez esetekben is kérem a futás riportolását, hogy lássam első szűrőként, hogy ugyanúgy müxik.
Határidő: szept. 23., a labor., ahol ez lesz a hivatalos feladat is a labor-közösségnek.
Ki-kit választana?
Az előadás alatti ismerkedés meggyőzött, hogy a közösség képes lehet egy közös fejlesztést véghezvinni, ennek kapcsán itt az első házi feladat! Az alábbi használati esethez készíts pár Android tabletes, mobilos vagy webes kliens oldali képernyőtervet!
A pártválasztási preferencia (killer :) app használati esete
Intelligens polgári avatár/Pártválasztási preferencia
Ádám belép kedvenc közösségi portáljára és ott kitölt egy rövid kérdőívet, amivel anonim és implicit módon Éva pártválasztási preferenciáját próbálja prediktálni.
Lucifer mobiltelefonján közvetlenül a polgári avatár/pártválasztási preferenciával foglalkozó webes felületét keresi fel és kitölti az Éva pártválasztási preferenciáját implicite vizslató rövid kérdőívet.
Évának fülébe jut ismerősei ténykedése, de ő maga nem is foglalkozik ezzel egészen a választások előestéjéig, amikor is bosszantják a polgári avatár választási szimulációi alapján kialakulni látszó erőviszonyok, ezért most már ő maga is meghajtja a rendszert néhány ismerősének jellemzésével.
Másnap a választások eredménye alapján azt állapíthatjuk meg, hogy a polgári avatár pártválasztási szimulációi az idő előrehaladtával szépen konvergáltak a kapott eredményhez! Véleményünk szerint az intelligens polgári avatár pártválasztási preferencia alkalmazás „killer alkalmazás” lehet.
Határidő: szept. 23., a labor.
Te hogy készíted el?
Nem jönnek tömegesen a kétségbeesett kommentek, hogy keveset tudunk a fejlesztendő alkalmazás koncepciójáról a feladott képernyőskiccekhez... ennek oka az lehet, hogy még nem gondoltatok bele. Íme hát egy kis gondolatébresztő az elinduláshoz:
A legegyszerűbb az lenne, ha a felhasználó anonim maradna, viszont megadná, hogy az X Y nevű Z-beli U utca I házszám alatti lakos az O párt szavazója... Ő, azaz a felhasználó szerint. (Ennél már csak az lehetne kényelmesebb, ha az "Ő" is megadja az adatait...) Hoppá!
Próbáljuk meg hoppá nélkül, mert ez elég aggályosan hangzi, abból a szempontból, hogy börtön lehet a vége egy ilyen rendszernek - gondolom én, persze teljesen laikusként és nyilván azért túlozva-sarkítva. De az bizonyos, hogy ez a koncepció nem lenne elfogadható!
Szóval láthatóan a polgárokat leképezni a szoftverünk "polgári-avatárjába" lehetetlen...
Sokan ezzel lezártnak is tekinthetnék a fejlesztést, de mindig a lehetetlennek tartott dolgok egy elfogadható megoldása adja az innovációt, a felfedezés élményét; így ez a konklúzió minket ne tántorítson egy pillanatra sem. Sokkal inkább lássuk azt, hogy ez a fejlesztés biztosan nem a háromszög területének kiszámítása. De bajban vagyuk nem vitás, gondolkoznunk kell, mert a lehetetlen kifejleszteni érzést csak egy jó ötlettel tudjuk lelkesedésre változtatni, szóval hoppá nélkül:
Lássunk néhány agyvihart a leendő felhasználói követelmények tekintetében:
- a felhasználók teljesen anonimek legyenek, tehát a regisztrációkor nem kérünk be sem nevet, sem címet (hanem csak mondjuk egy tetszőleges emailt a sztenderd jelszóváltáshoz; talán egy város belefér, esetleg a fővárosban kerület)
- a felhasználók által jellemzett polgárok is teljesen anonimek legyenek, azaz itt se szerepeljen se név, se cím (sőt ide már a város sem kell)
- a felhasználók a saját lokális kapcsolati hálójukban (barátok, ellenségek, szomszédok stb.) mérnek
- a felhasználói mérés nem más, mint kijelentések tevése, pl. profilokba szervezve
Exem profil/
az exem egy "SZABAD SZAVAS SOREDITOR"
az exem "PÁRT CHOICE" szavazó
stb.
Szomszédok profil/
az alsó szomszédom egy "SZABAD SZAVAS SOREDITOR"
az alsó szomszédom "PÁRT CHOICE" szavazó
a bal oldali szomszédom egy "SZABAD SZAVAS SOREDITOR"
stb. - a fejlesztendő rendszer tudjon olyan térképes riportot generálni, amelyen az országtérképen a város és kerület felbontásban lászik a pártok százalékos megoszlása
Tehát ebben az értelmezésben a feladat kigondolni olyan attributumok összességét, amelyet a felhasználó hajlamos megadni egyrészt, másrészt alkalmasak arra, hogy valamilyen hatásfokkal velük a felhasználók és az általuk jellemzett polgárok megfeleltethetők anonim, de valóságos polgároknak, ami (városonként vett) leképezés alapján már triviálisan használható egy párteloszlás számolásához.
Tehát általánosan a fejlesztendő szoftver feladata a bevitt információkból, pontosabban azok redundanciájából egy "térképet" generálni éppen a redundanciák kiszűrésével (az X jobb szomszédú bal szomszédja X és tk. az Y is X p valséggel mert ugyanazok a leíró tulajdonságai és...)
Az iménti c. pont lokális hálójának felvitele lesz a laborok első lépése, íme a kapcsolódó feladatok:
az ehhez vezető első lépést vittem be a laborra, ezt nyomkodtuk a kurzus-tableten stb., de patetikusabban: a hallgatóság többségének ez volt az első Java programja! A kép a lokális kapcsolati-háló rajzoló verzióinak második lépését mutatja, amelyet a laboron kértem, hogy ne csak a csomópontokat, hanem az éleket is rajzolja ki. Ezek a lépések növekvő erősorrendben itt találhatóak (nyilván apránként töltöm fel, hogy az igényeseknek megmaradjon a saját megoldás adásának öröme). Az aktuális feladatok a következők:
- 3. lépés - a tabletet forgatva (emulátorban Ctrl+F11 az AVD ablakban) újraskálázva a koordinátákat helyesen rajzolja ki a gráfot /10 pont/
- (3.1 lépés - laboron volt, de már elfeleltettem, de még jó, hogy kommenteltek:) a húzásnak legyen nyoma /5 pt/ persze ezt a feature-t a saját app-otok felülírhatja, ha máshogy szervezitek meg a használatát, pl. nem akartok benne ilyen "vonszolást")
- 4. lépés - húzzon politikai profilt a gráfra: nálam az élek lesznek a "barátok, ellenségek, szomszédok" (pl. csajom, tesóm stb.), a csomópontok pedig a pártpreferencia, első lépésben több profilt egyelőre ne szuszakoljunk be életünk első Android progijába :) /20 pont/
- 5. lépés - a lehúzott csomópontokat és kapcsolatokat törölje /5 pt/
- 6. lépés - legyen pár gomb, például "Clear" illetve "Upload" stb. (utóbbi persze csak gomb, egyelőre funkcionalitás nélkül) /15 pt/
- 7. lépés - a lokális kapcsolati hálót mentse kilépéskor, belépéskor pedig töltse be /20 pt/
Kötelező olvasmány-csipet
Nyékyné Gaizler Judit [et al.], Java 2 : útikalauz programozóknak : 5.0 8. átdolg., bőv. kiad.
könyv első 55 oldalának értő-elolvasását kérem, s ebből írásban mindenki magának jelöljön meg szokásosan 3 olyan részt, ami nem világos, vagy kevésbé világos.
Pár szórakoztató kérdés zárásul:
milyen bitminával kezdődnek a Java bájtkódok? (Jávácska kérdés, csak 12 év alattiaknak, így erre 1 pontot adok, de aki nem tudja, annak -5 pontot :-)
Jöjjenek hát az éles kérdések, az alábbi prezi 17. feladatától van pár szórakoztató kvíz kérdés, kérdésenként adnék 5 pontot a válaszoló első három hallgatónak (figyelem ez most játék, nem laborkártya!) - azaz csak nyerni lehet vele..