SZENT ISTVÁN EGYETEM KERTÉSZETTUDOMÁNYI KAR BUDAPEST
Intelligens keresőmotor agrár- és kézműves termékekhez
Domaföldi Ádám
Informatikus és szakigazgatási agrármérnök
Készült a Biometria és Agrárinformatika Tanszéken Tanszéki konzulens: Dr. Ladányi Márta Bírálók: ___________________________________________
Budapest, ________________________
___________________
__________________
tanszékvezető/szakirányfelelős
konzulens
1
TARTALOMJEGYZÉK 1. Bevezetés ................................................................................................................................ 4 2. Célkitűzés ................................................................................................................................ 5 3. Irodalmi áttekintés .................................................................................................................. 6 3.1 Mezőgazdasági őstermelők és mezőgazdasági kistermelők .............................................. 6 3.1.1 Tevékenységi kör ........................................................................................................ 6 3.1.2 A kistermelők értékesítési feltételei ........................................................................... 6 3.1.3 Helyi termelői piac ...................................................................................................... 7 3.1.4 Magyar gazdaságban betöltött szerep ....................................................................... 8 3.1.5 Regionális eloszlás ...................................................................................................... 9 3.1.6 Hagyományos és tájjellegű termékek szerepe .......................................................... 10 3.2 A fejlesztett webes alkalmazáshoz hasonló szolgáltatást nyújtó weboldalak .................. 11 3.2.1 Ötletek boltja ............................................................................................................ 11 3.2.2 Termelőtől.hu ........................................................................................................... 12 3.2.3 Meska.hu .................................................................................................................. 14 4. Anyag és módszer.................................................................................................................. 15 4.1 Anyag............................................................................................................................... 15 4.1.1 Felhasznált szoftverek .............................................................................................. 15 4.1.2 Felhasznált keretrendszerek ..................................................................................... 15 4.2 Módszer........................................................................................................................... 15 4.2.1 Szerveroldali kód és fejlesztési paradigmák.............................................................. 15 4.2.2 Megjelenés ............................................................................................................... 17 4.2.3 Haversine formula .................................................................................................... 17 4.2.4 Helymeghatározás .................................................................................................... 18 4.2.5 Kategória-fa .............................................................................................................. 19 4.2.6 Intelligens keresőmotor............................................................................................ 19 4.2.7 Termék címkék ......................................................................................................... 21 4.2.8 Kereső optimalizálás ................................................................................................. 21 5. Eredmények .......................................................................................................................... 22 5.1 Oldal elérhetősége .......................................................................................................... 22 5.2 MySQL és adatbázis-műveletek ....................................................................................... 22 5.3 Autentikáció és autorizáció ............................................................................................. 23 5.4 Termékek ......................................................................................................................... 24 5.5 Események ...................................................................................................................... 24 5.6 Eladók és termelők .......................................................................................................... 24
2
6. Következtetések .....................................................................................................................25 7. Összefoglalás ..........................................................................................................................27 8. Köszönetnyilvánítás ................................................................................................................28 9. Irodalomjegyzék .....................................................................................................................29 10. Mellékletek ..........................................................................................................................32
3
1. BEVEZETÉS A rendszerváltást követően a háztáji- és helyi élelmiszerek előállítása jelentősen csökkent a lakosság élelmiszerellátásában. A multinacionális kereskedelmi láncok megjelenésével pedig a kistermelők egyre inkább kimaradnak a beszállítók köréből, mert nem tudják teljesíteni a kereskedők által definiált feltételeket legfőképpen azokat, amelyek a termelési mennyiségekre vonatkoznak. A problémára megoldást kínál a TÉSZ (Termelői Értékesítő Szervezet), azonban a tőkehiányos kistermelők még ennek segítségével se képesek profitot realizálni. Ennek legfőbb oka, hogy a felvásárlási ár egyszerűen nem fedezi a termelési költségeket vagy nagyon alacsony haszonkulcsot jelent a termelőnek. Nem törvényszerű azonban, hogy a megtermelt áruk kiskereskedelmi boltokban kerüljenek értékesítésre. „Magyarországon hagyománya van a termelők és a vásárlók közötti közvetlen kapcsolaton alapuló helyi piaci értékesítésnek, ahogyan a gazdaudvarból történő forgalomba hozásnak is.”1 Ez a kölcsönös kapcsolat mindkét fél számára előnyös. A termelőnek nem kell az árrésen osztoznia a kereskedővel és a vásárló megismerheti a kistermelőt, támogathatja és élvezheti az általa biztosított közvetlen termékfelelősség adta előnyöket. Az eladó ugyanis személyesen felel az általa termelt termékekért, és amennyiben rossz minőségű áruval kereskedne, úgy annak hamar híre menne a piacon, amely jelentős bevétel kiesést eredményezne.2 „A kistermelői kör megerősödésének fontos szerepe van továbbá a helyi foglalkoztatottság javításában (különösen a falusi turizmussal összefogva), a vidéki életminőség és kultúra, valamint a nemzeti öntudat ápolásában, a vidéki élettér megbecsülésében és vonzóvá tételében, s a kultúrtáj fenntartásában.” 3 A helyben előállított élelmiszerek vásárlása továbbá kevésbé terheli a környezetünket a kisebb szállítási igényük okán. Az így termelt termékek gyakran organikusak és adalékanyag mentesek, amelyek ízvilága finomabb, mint a messzi országokból érkezett bolti megfelelőiknek.4 Egy közös webes platformon az ország kistermelői sokkal közelebb kerülhetnének a vásárlókhoz. A telephelyen, eseményeken és piacokon árult termékek ugyanis csak az oda látogatók számára elérhetők, és webes megjelenés hiányában ezek a termékek csak egy szűkebb vásárlói réteggel rendelkeznek. Fontos megvizsgálni a vásárló helyzetét is. A kiskereskedelmi boltok polcai sokkal egyszerűbben elérhetők és nagyobb kínálatokkal rendelkeznek, mint a gazdapiacok, emellett a külföldi beszállítók miatt egész évben biztosítani tudnak itthon szezonálisnak számító termékeket is. Kijelenthető tehát, hogy amennyiben közvetlenül egy kistermelőtől szeretnénk vásárolni, akkor az idő és energiaráfordítást igényel.
Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 3. http://elelmiszerlanc.kormany.hu/download/3/7e/50000/Kistermel%C5%91i%20t%C3%A1j%C3%A9koztat%C3%B3 %202013.pdf 2 Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 3. 3 Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 3. 4 Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 3. 1
4
Egy átlagos vásárló a következő kérdésekkel szembesülhet, amikor rászánja magát a vásárlásra:
mikor van egy termék szezonja?
ki foglalkozik effajta termék termelésével és értékesítésével?
milyen áron forgalmazzák ezeket a termékeket?
állandó vagy időszakos árusítóhelyeken forgalmazzák-e ezeket a termékeket?
van-e a termelőnek saját (állandó) árusítóhelye, ha van, hol, milyen messze?
milyen termékeket fog kivinni a termelő a piac(ok)ra/időszakos árusítóhely(ek)re?
hol találhatók ezek az piac(ok)/árusítóhely(ek)?
hogyan, mivel lehet megközelíteni a piaco(ka)t/árusítóhely(ek)et?
vannak-e más termelők, akik ugyanazt a terméket olcsóbban adják a régióban? Kívánatos lenne tehát, ha egyszerűen választ kaphatnánk ezekre a kérdésekre, azaz lenne egy
használható, naprakész információs felület a kézműves termékek forgalmazásáról a diszkontok és hipermarketek tömegáru-kínálata mellett. Az ilyen típusú felület alkalmas lenne arra is, hogy egy hétvégi kirándulás alkalmával tájékozódhassunk, hogy a közelben milyen – adott esetben tájjellegű – termékeket lehet beszerezni. Ezzel együtt azok pontos távolságát, árát és leírását is elérhetnénk, mindezt pedig egy olyan weboldalon, ahol a keresésnél a számunkra releváns termékeket listázza, valamint egy kattintásra pontos navigációs térképet is kínál.
2. CÉLKITŰZÉS Célunk a bevezetésben bemutatott probléma megoldására egy minden platformon használható webes alkalmazás fejlesztése. Egy olyan weboldaltét, amely hidat képez a webes megjelenéssel rendelkező és annak mellőzésével működő kistermelők között. Az egyes termelők hozzáadhatják az adatbázishoz a boltjaikat, a boltokhoz tartozó termékeiket, és azon termékeiket, amelyeket különböző piacokra is kivisznek. A szervezők feltölthetik az oldalra az eseményüket, leírással, pontos elérhetőségekkel, ezzel is népszerűsítve azt. A vásárlók áttekinthetik a termékeket, az eseményeket, és pontos képet kapnak arról, hogy tőlük mely termékek milyen messze találhatók és milyen árban. A keresési találatok listázása több szempont szerint történne annak érdekében, hogy a vásárlónak legfontosabb termékek kerüljenek előre.
5
3. IRODALMI ÁTTEKINTÉS 3.1 Mezőgazdasági őstermelők és mezőgazdasági kistermelők A mezőgazdasági őstermelő olyan nem egyéni vállalkozó, aki őstermelői igazolvánnyal5 rendelkezik és a 6. számú mellékletben6 felsorolt termékek előállításával foglalkozik. Termékek előállítása az általa termelt alapanyagokból - néhány kivételtől eltekintve - nem engedélyezett, csupán azok közvetlen értékesítése vagy saját célra történő felhasználása. 7 „A kistermelő olyan természetes személy, aki az általa kis mennyiségben termelt, betakarított, összegyűjtött és előállított élelmiszereket közvetlenül a végső fogyasztóknak és a kiskereskedelmi, vendéglátó, valamint közétkeztetési intézményeknek értékesíti.”8 A mezőgazdasági őstermelők közé tartozó mezőgazdasági kistermelők a vonatkozó jogszabályok értelmében az általa termelt alapanyagokat feldolgozhatja, és az így elkészült árucikkeket értékesítheti.
3.1.1 Tevékenységi kör „Mezőgazdasági
őstermelői
tevékenységnek minősül
a
saját
gazdaságban
történő
növénytermelés, ültetvénytelepítés, állattenyésztés, valamint a termékfeldolgozás is akkor, ha az saját gazdaságban történő alapanyag felhasználásával történik. Mezőgazdasági őstermelői tevékenységnek minősül továbbá a saját gazdaságban egyes mezőgazdasági termékek jogszabályba nem ütköző gyűjtése, valamint a saját tulajdonú földterületen végzett erdőgazdálkodás, mindezekre nézve akkor, ha az előállított termék vagy a tevékenység az Szja tv. 6. számú mellékletének II. pontjában felsoroltak valamelyikébe tartozik, ideértve a saját gazdaságban termelt gyümölcs felhasználásával bérfőzés keretében történő párlatkészítést (pálinkafőzést) is.”9
3.1.2 A kistermelők értékesítési feltételei A kistermelő a végső fogyasztónak:
nem állati eredetű alaptermékeket, mézet, méhészeti terméket és élő halat saját gazdaságának helyén, Magyarország területén működő valamennyi piacon, vásáron, rendezvényen és engedélyezett ideiglenes árusítóhelyen,
egyéb állati eredetű alaptermékeket, általa levágott baromfit és nyulat, általa kifogott halat, általa megtermelt alaptermékből előállított egyéb élelmiszert (sertés, juh, kecske, szarvasmarha, strucc és emu húsának kivételével) saját gazdaságának helyén, a régión belül (saját megye és Budapest) vagy a gazdaság helyétől légvonalban számított 40 km távolságon belül működő piacon, vásáron, rendezvényen és engedélyezett ideiglenes árusítóhelyen,
1995. évi CXVII. törvény a személyi jövedelemadóról. 3. bekezdés 18. pont b) 6. számú melléklet az 1995. évi CXVII. törvényhez 7 1995. évi CXVII. törvény a személyi jövedelemadóról. 3. bekezdés 18. pont 8 Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 7. 9 1995. évi CXVII. törvény a személyi jövedelemadóról. 6. melléklet 1. pont 5 6
6
saját gazdaságában nevelt és közfogyasztás céljára engedélyezett vágóhídon levágott sertés, juh, kecske, szarvasmarha, strucc és emu húsát saját gazdaságának helyén értékesítheti. 10 A piac fogalmába beletartozik a helyi termelői piac is, amely kifejezetten a kistermelők számára
létrehozott kereskedelmi fórum. „A kistermelő az előző pontokban felsorolt termékeit a régión belül (saját megye és Budapest) vagy a gazdaság helyétől légvonalban számítva 40 km távolságon belül működő kiskereskedelmi, vendéglátó és közétkeztetési létesítményeknek is értékesítheti.” 11 Az országos értékesítés és házhozszállítás nem engedélyezett, így a vásárlónak a közelben kell tartózkodnia vagy a piacot, esetleg helyi rendezvényt látogatnia, ahol a termelő is árusít. Ennek összehangolása rendkívül fontos lenne és egy átfogó, könnyen kezelhető és átlátható platform, amely elősegíthetné egy nagyobb vásárlói- és termelői réteg megszólítását. A kistermelők falusi vendégasztalt is üzemeltethetnek a gazdaságukba látogató turisták kiszolgálására, ahol családias körülmények között kézműves termékekkel láthatják vendégül látogatóikat. Az ott felszolgálásra kerülő termékek a saját maga előállított vagy más kistermelőktől vásárolt késztermékek felhasználásával készülhetnek.12
3.1.3 Helyi termelői piac „Több szempontból is különbözik az ismert „hagyományos” városi piactól, vagy vásártól, hiszen a helyi termelői piac olyan piac, ahol a kistermelő a piac fekvése szerinti megyében, vagy a piac 40km-es körzetében, vagy Budapesten fekvő piac esetében az ország területén bárhol működő gazdaságából származó mezőgazdasági-, illetve élelmiszeripari termékét értékesítheti.”13 A helyi piacon csak kistermelők értékesíthetik a saját gazdaságukban előállított mezőgazdasági és élelmiszeripari termékeiket. A kistermelő közvetlen felelősséggel tartozik az általa forgalomba hozott élelmiszer biztonságáért, minőségéért és dokumentálásáért. A 40 kilométeres értékesítési korlát – ami Budapestre nem vonatkozik – célja a helyi gazdaság fejlesztése. A megyehatárok ebben az esetben nem számítanak, így amennyiben a 40 km-es körzet átnyúlik más megyékbe, úgy ott is lehet árulni a termelői piacokon.14 Helyi termelői piac olyan területen rendezhető és tartható, amely területhasználati hozzájárulással rendelkezik illetve ahol az ott tartózkodó embereket és árult termékeket a környezetből származó káros jellegű szennyezés nem veszélyezteti. A termelői piacot bárki üzemeltethet, legyen magán személy, civil szervezeti képviselő vagy önkormányzat. 2012 óta könnyített higiéniai feltételeknek kell megfelelni az
Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 7. http://elelmiszerlanc.kormany.hu/download/3/7e/50000/Kistermel%C5%91i%20t%C3%A1j%C3%A9koztat%C3%B3 %202013.pdf 11 Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 7. 12 Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 7-9. 13 Vidékfejlesztési Minisztérium. Termelői Piacot Minden Településre!: 2 http://videkstrategia.kormany.hu/admin/download/5/f1/80000/termeloi_kepkeretes_vegso_130828.pdf 14 Vidékfejlesztési Minisztérium. Termelői Piacot Minden Településre!: 3 10
7
árusoknak, nem szükséges többé külön tisztító, fertőtlenítő berendezést biztosítani, de ivóvíz ellátást se biztosítani, amennyiben egyes folyamatok nem igénylik ezeket.15 A kormány ajánlása szerint a piac lehetőleg frekventáltabb helyen kerüljön megrendezésre. A helypénz ne legyen magas, annak érdekében, hogy a vásárlók a legkedvezőbb áron vásárolhassák meg a termelők árucikkeit. Legyenek kapcsolódó programok is, amelyek célja a gyerekek lekötése, így nekik is élmény lesz a vásárlás. A kóstolási lehetőség is fontos, így egy kóstoló asztal kialakítás is ajánlott, ahova leülve a vásárlók személyesen beszélni tudnak a termelővel. A piac meghirdetése megfelelő legyen, és a környező települések lakói is értesüljenek róla.16
3.1.4 Magyar gazdaságban betöltött szerep „A vállalkozások alapvető szerepet töltenek be a gazdasági folyamatokban és az értékteremtésben, tevékenységük befolyásolja az ország teljesítményét, ugyanis a bruttó hazai termékhez meghatározó részben járulnak hozzá, munkaadóként pedig széles körű társadalmi, gazdasági befolyásoló erejük van. Szervezeti jellemzőik területi összehasonlításban a foglalkoztatott létszám nagysága, valamint gazdasági ágak alapján jelentős különbséget mutatnak, amit a befektetett külföldi tőke is befolyásol.” 17
Mezőgazdasági őstermelők számának változása évekre lebontva 400 000 350 000 300 000 250 000 200 000 150 000 100 000 50 000 0 2008
2009
2010
2011
2012
2013
2014
2015
1. ábra Mezőgazdasági őstermelők számának változása évekre lebontva. Forrás: KSH A vállalkozások száma évente átlagosan 1,7%-os növekedést mutatott fel 2000 és 2007 között, majd 2008-ban a mezőgazdasági őstermelőket kötelezték adószám kiváltására, így az önálló vállalkozók száma 27%-kal kibővült.18 A KSH adatai (1. ábra) alapján látható, hogy az önálló vállalkozókhoz tartozó őstermelők száma 2008-tól egészen 2012-ig folyamatosan növekedett. 2013-ban „Az adószámmal rendelkező magánszemélyek között nyilvántartott őstermelők száma közel háromtizedével csökkent, mivel a mezőgazdasági őstermelői igazolványról szóló kormányrendelet szerint a 2009. január 1-je előtt kiállított
Vidékfejlesztési Minisztérium. Termelői Piacot Minden Településre!: 4 Vidékfejlesztési Minisztérium. Termelői Piacot Minden Településre!: 7 17 Központi Statisztikai Hivatal. 2013. A vállalkozások regionális sajátossága: 2. https://www.ksh.hu/docs/hun/xftp/idoszaki/regiok/orsz/vallalkregkul11.pdf 18 Központi Statisztikai Hivatal. 2013. A gazdasági folyamatok regionális különbségei,2013: 9. http://www.ksh.hu/docs/hun/xftp/gyor/gaz/gaz1512.pdf 15 16
8
igazolványok csak 2012. december 31-ig voltak érvényesek. Így aki nem gondoskodott új igazolvány kiváltásáról, annak igazolványa a jogszabály erejénél fogva érvénytelenné vált.”19 2015-ben 280 209 őstermelő volt bejelentve az ország egész területén. 20
3.1.5 Regionális eloszlás
2. ábra Az őstermelők aránya a regisztrált vállalkozásokon belül 2013 végén. Forrás: KSH21 „A települések tizedében a vállalkozások többsége őstermelő.”22 2013-ban az ország közel 314 településén a vállalkozások több mint felét őstermelők adták. „Az Alföld megyéiben természetesen lényegesen magasabb ez az arány, Szabolcs-Szatmár-Bereg településeinek 40%-a tartozott ebbe a kategóriába, a dél-alföldi megyékben, illetve Hajdú-Biharban 17–35%-uk.”23 Fontos megemlíteni azt, hogy egyedül Pest és Komárom-Esztergom megyékben nem volt olyan település, amelyben a vállalkozások több mint fele őstermelő lett volna.24
Központi Statisztikai Hivatal. 2014. A regisztrált gazdasági szervezetek száma, 2013. Statisztikai tükör 2014.03.21: 2. http://www.ksh.hu/docs/hun/xftp/gyor/gaz/gaz21312.pdf 20 Központi Statisztikai Hivatal. 2016. A regisztrált gazdasági szervezetek száma, 2015. Statisztikai tükör 2016.04.11: 1. http://www.ksh.hu/docs/hun/xftp/gyor/gaz/gaz1512.pdf 21 Központi Statisztikai Hivatal. 2013. A gazdasági folyamatok regionális különbségei,2013: 9. https://www.ksh.hu/docs/hun/xftp/idoszaki/regiok/debrecengazdfejl/debrecengazdfejl13.pdf 22 Központi Statisztikai Hivatal. 2013. A gazdasági folyamatok regionális különbségei,2013: 9. 23 Központi Statisztikai Hivatal. 2013. A gazdasági folyamatok regionális különbségei,2013: 9. 24 Központi Statisztikai Hivatal. 2013. A gazdasági folyamatok regionális különbségei,2013: 9. 19
9
3.1.6 Hagyományos és tájjellegű termékek szerepe „A globalizálódó világban is egyre többen ismerik fel a már-már elfelejtett hagyományok megőrzésének, felkutatásának, közkinccsé tételének a fontosságát. Különösképpen vonatkozik ez a hagyományos élelmiszerekre és agrártermékekre, hiszen a korszerű és egészséges táplálkozás iránti igény rohamos erősödése számos korábbi agrártermék rehabilitációját, régi értékének újrafelfedezését is eredményezte.”25 A fejlett nyugati országokban 1980-as években elinduló tendencia nyomán – mely a fogyasztói kereslet növekedését jelentette az adott régióban termelt hagyományos módon előállított termékek iránt – először Franciaországban hoztak létre gyűjteményt, amely magába foglalta a francia különleges élelmiszerek pontos leírását és előállításának módját. A munkálatokat a Francia kormány is támogatta és a projekt sikeres debütálását követően az Európai Bizottság Mezőgazdasági Főigazgatósága 1992-ben egy átfogó, az Európai Unió egészére kiterjedő program irányításával bízta meg a CNAC-ot (Kulináris Művészetek Nemzeti Tanácsa). A program célja egy európai gyűjtemény létrehozása, amely végül az EU 129 régiójának 4000 termékét foglalta magába.26 A programba Magyarország is bekapcsolódott a magyar mezőgazdaság- és élelmiszer-ipar-kultúra nagy múltú hírnevének köszönhetően. A magyar kollekció 300 hagyományos és tájjellegű élelmiszert tartalmaz, amelyek nem állítanak konkurenciát az európai tömegtermékeknek.27 „Az Európai Bizottság által elfogadott SAPARD-terv alapján megvalósuló vidékfejlesztési programjainkban, a vidék arculatának megőrzésében is fontos szerepet töltenek be a hagyományos és tájjellegű élelmiszerek.”28A SAPARD-terv keretében házi- és kézműipar termékinek fejlesztése és értékesítése, helyi tájspecifikus termékek kifejlesztése, valamint élelmiszer-feldolgozás technológiának és minőségének javítása a kis volumenű specifikus, jövedelem-kiegészítő funkciót betöltő vállalkozásokkal kapcsolatos beruházási tervekkel lehetett pályázni. A mezőgazdaság fejlesztése mellett a vidéki turizmus, termék- és szolgáltatásmarketing is kiemelt fontossággal bírt a program indulásakor.29 Az EU Közös agrárpolitikájának 1992. évi reformprogramjában két alapvető fontosságú rendelet jelent meg, amelyek célja a vidékfejlesztés volt. A két rendelet eredetvédelemről és különleges tulajdonság tanúsítási rendszeréről szóló 2081/92 és 2082/92 EGK számú rendeletek.30 „A mezőgazdasági termékek és élelmiszerek eredetmegjelöléseinek és földrajzi jelzéseinek védelmével foglalkozó 2081/92 számú EKG-rendelet célja a tagállamonként különböző nemzeti
Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 4 http://eredetvedelem.kormany.hu/download/3/40/f0000/hagyom%C3%A1nyok_%C3%ADzek_r%C3%A9gi%C3%B3k .pdf 26 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 3 27 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 3 28 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 3 29 http://sapard-avop-nvt.kormany.hu/sapard-program 30 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 5 25
10
eredetvédelmi rendszerek összehangolása a földrajzi árujelzők oltalmára vonatkozó jogi eszközök megteremtésével.”31 A rendelet a következő két védett jelölést különbözteti meg: eredetmegjelölés és földrajzi jelzés. Az eredetmegjelölést olyan termék esetben használható, amely különleges minősége a földrajzi eredet környezeti és emberi munka eredményeként jön létre. A pármai sonka említhető példaként. A földrajzi jelzést olyan termékekre lehet alkalmazni, amely hírneve közvetlenül a földrajzi származásának tulajdonítható. Ilyen lehet a skót bárány- vagy marhahús. „A definíciók alapján meghatározható, hogy az eredet-megjelölés meghatározása szigorúbb feltételeket támaszt az adott földrajzi hellyel való szoros kapcsolat bizonyításának követelménye miatt.”32 A való életben viszont mindként termék egyenlő védelemmel és marketing értékkel rendelkezik. A vásárlóknak a termékeken található speciális logó hívja fel a figyelmüket. Az EU-ban már több mint 500 olyan termék található, amely valamilyen jellegű védelemmel rendelkezik. Ezek között a legnagyobb számban sajtok, húsfélék, zöldségek és gyümölcsök szerepelnek. A származási helyük főleg Franciaország, Olaszország, Portugália és Görögország, amely oka az, hogy ezekben az országokban is bevezetésre kerültek nemzeti eredetvédelmi rendszerek. A 2082/92 számú EGK rendelet a hagyományos különleges tulajdonságot szabályozza. Ennek a megalkotásával a jogalkotók azt tűzték ki célul, hogy támogassák az elmaradott térségekben a hagyományos termelési módszereket alkalmazó termelőket, ezzel is segítve őket abban, hogy a globalizációból eredő piaci versenyben is fenntarthassák tevékenységüket. Amely továbbá, hozzájárul az adott tájegység hagyományainak megőrzéséhez, elősegíti a vidéki turizmus fellendülését és enyhíti a vidéki munkanélküliséget egyre nagyobb problémáját.33 „A hagyományos különleges tulajdonság tanúsítása a termék hagyományos jellegének az Európai Gazdasági Közösség által történő elismerését jelenti, amely magában foglalja a rendelet szerinti bejegyzést és az EU-ban elfogadott egységes tanúsító jel használatát.”34
3.2 A fejlesztett webes alkalmazáshoz hasonló szolgáltatást nyújtó weboldalak Az interneten keresve számos oldalt fellelhető, amely funkciója hasonlóságot mutat az általunk fejlesztett applikációval. Ezeket az oldalakat a következő szempontok szerint kerülnek bemutatásra: az oldal felülete, az oldal funkciója, a célcsoport és végül a hiányolt alapfunkciók.
3.2.1 Ötletek boltja35 A termékek főbb kategóriái a következők: táskák, ékszerek, ruhák kiegészítői, gyermek baba termékek, lakberendezés és natúrkozmetikumok. Az oldal által „alkotók”-nak nevezett eladók egy megadott havidíjért hirdethetik a termékeiket. Ezeket az alkotóknak párhuzamba lehet vonni a kistermelőkkel, hiszen mindkettő terméket állít elő, kis mennyiségben, önmaga árulja produktumát és nem a nagyobb üzletek
Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 5 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 5 33 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 5 34 Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek –Régiók: 5 35 http://www.otletekboltja.hu/ 31 32
11
polcain leljük fel őket. Az oldal egyfajta web-áruházként funkcionál, ahol az eladók feltöltik a termékeiket, majd a vásárlást követően felveszi az alkotó a vásárlóval a kapcsolatot és a vásárlási folyamat többi részét már nem kontrollálja az oldal. Az ötletek boltja egy letisztult, jól navigálható és áttekinthető felületet kínál. A kategóriák jól átgondoltak, viszont sem a kategóriákon belül, sem a keresésnél nincs lehetőség a találatokat rendezni vagy szűrni. Mobilnézet nincs tervezve az oldalhoz. A rendelt termékek átvétele történhet személyesen vagy postai úton. Az eladó összes adatát láthatjuk, bár a pontos címe nincs feltüntetve csupán a település neve.
3. ábra: Ötletek boltja főoldal.
3.2.2 Termelőtől.hu36 Az termelőtől.hu egy kereshető termelői adatbázis. Az oldal célja, hogy segítse az érdeklődőket abban, hogy megtalálják a hozzájuk legközelebb található termelőt és felvegyék vele a kapcsolatot. Az egyes termelők is beregisztrálhatnak vagy akár ismerősük is feltöltheti őket az oldal adatbázisába. A főoldalon a különböző kategóriák mellett a legújabb cikkeket olvashatjuk, melyek fő témája a különbféle aktuális agrártámogatások és termelői események. Az eseménynaptárban nem található jövőbeli esemény és az aktivitás hiánya érezhető a fórumban is, ahol a legnépszerűbb topik 48 hozzászólással
36
http://termelotol.hu/
12
rendelkezik. A kategóriákat böngészve mindössze egy alkategóriát lehet lenyitni és nincs lehetőség a kategóriákon belül keresni vagy a találatokat rendezni. A kereső is nehezen használható, rengeteg nem releváns tartalmat kapunk, amelyeket nem tudunk rendezni és az se kiköthető, hogy az egyes termékek, termelők vagy cikkek között szeretnénk csak keresni. Az oldal által használt minősítési rendszer egyáltalán nem mondható reprezentatívnak, köszönhetően annak, hogy nem követeli meg az értékelőtől, hogy hitelesítse magát és így a böngésző sütik törlésével újra lehetőség nyílik az értékelésre. A legjobb minősítést kapó termelők pedig általában egy értékeléssel rendelkeznek. A „Termelők a környékemen” oldalfunkció csak megye szinten tud szűrni és redundáns is egyben, mert a „Termelőt keresek” funkció település alapján is enged keresni és teljesen ugyanazt a szerepet hivatott betölteni. Az oldal felhasználói élménye mobilról nem megfelelő a mobilnézet hiányából adódóan, a navigálás nehézkes és nincs lehetőség az összes termelő kilistázására.
4. ábra: Termelőtől.hu főoldal. A fent említett negatívumok ellenére az oldalon rengeteg termelő megtalálható és jelentős mennyiségű helyi termelői piac is. A problémák gyökere abban rejlik, hogy az oldalt látszólag évek óta nem fejlesztették és a legtöbb funkció egyáltalán nem tölt be releváns szerepet. A hiányzó rendezés, szűrés lehetősége és a hatékonyan nem használható kereső is csak tovább rontja a felhasználó szolgáltatásról alkotott képét.
13
3.2.3 Meska.hu37 Az oldalon elsősorban képzőművészeti, iparművészeti vagy népművészeti technika alkalmazásával készített termékek találhatók. A vásárlás menete hasonló az Ötletek boltja szolgáltatásához, de itt az eladott termék és a termék feltöltése után fizet az eladó. A vásárlás végén a felek felveszik kapcsolatot egymással és értékelik egymást. Az átvétel lehet személyes vagy postai úton történő kézbesítéssel. Az oldal egyetlen negatívumaként a mobilnézet hiánya említhető meg. A korábban prezentált szolgáltatásokkal ellentétben az egyes találatokat lehet szűrni, valamint rendezni, és a kategóriák is nagyon jól áttekinthetők. Az oldal felülete letisztult és könnyen használható. Az alkotók adatlapját itt is megtekinthetjük és különböző szempontok szerint rendezhetjük is őket.
5. ábra: Meska.hu főoldal.
37
http://www.meska.hu/
14
4. ANYAG ÉS MÓDSZER 4.1 Anyag 4.1.1 Felhasznált szoftverek A szakdolgozatban található saját kód, legyen az kliens vagy szerver oldali az ATOM38 nyílt forráskódú és ingyenes szövegszerkesztő használatával készült. A weboldal egy Ubuntu 14.0439 alapú virtuális szerveren van üzemeltetve csak ingyenes és jogtiszta alkalmazásokat felhasználva. Az adatbázis MySQL 5.5.4740, a web szerver Apache 2.4.741, és php 5.5.942. A banner Inscape43 professzionális vektorgrafikus programmal készül, amely ingyenesen elérhető minden számítógépes platformra. A fejlesztés során a GitHub44 verziókövető alkalmazását is használtuk, amely lehetőséget biztosít arra, hogy nyomon követhessük az egyes fejlesztéseket és probléma esetén egy korábbi fejlesztési stádiumhoz visszaállhassunk.
4.1.2 Felhasznált keretrendszerek A szerveroldalhoz CakePHP45 3.2.2, a kliensoldalhoz Twitter Boostrap 3.046 és jQuery 2.247 keretrendszerek kerültek felhasználásra. Ezek ingyenes és nyílt forráskódú, mindenki számára elérhető projektek. Céljuk a fejlesztési idő redukálása és, hogy ugyanazokat a funkciókat, amelyek ismételődnek és nem jelentősek, ne kelljen újra meg újra lefejleszteni. Ilyen funkció lehet például az űrlap mezők adatainak validálása vagy az előre legyártott biztonsági mechanizmusok. A használatuk igényel további tanulást, de viszonylag lapos tanulási görbével rendelkeznek.
4.2 Módszer 4.2.1 Szerveroldali kód és fejlesztési paradigmák Az oldal üzleti logikája PHP-ban íródott CakePHP felhasználásával. A kód objektum orientált48, amelynek köszönhetően az egyes kódrészletek ismétlődése alacsony. A fontosabb metódusok összes paramétere fel van kommentelve beleértve a fontosabb kódrészleteket is. Nagy hangsúly volt fektetve az egyes bemenő adatok ellenőrzésére és az alapvető biztonsági szabályok, mint például az SQL injekció 49-, XSS támadások50 elleni védelem vagy a nem alaposan megtervezett átirányításokból eredő biztonsági
https://atom.io/ http://releases.ubuntu.com/14.04/ 40 https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-47.html 41 https://httpd.apache.org/download.cgi#apache24 42 http://php.net/releases/5_5_9.php 43 https://inkscape.org/en/ 44 https://desktop.github.com/ 45 http://cakephp.org/ 46 http://getbootstrap.com/ 47 https://jquery.com/ 48 http://www.iit.uni-miskolc.hu/iitweb/export/sites/default/users/krizsanz/Tantargyak/oop/bin/03_oopAlapelvek.pdf 49 https://www.owasp.org/index.php/Top_10_2013-A1-Injection 50 https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS) 38 39
15
rések. Ezen biztonsági problémákról az OWASP51 éves, mindenki számára ingyenesen hozzáférhető brosúrájából tájékozódtunk. A CakePHP egy MVC52 alapú keretrendszer és az üzleti logika a megjelenítéstől teljesen elszeparálva található. Ennek hiányát szokták felhozni a php szkriptnyelv legnagyobb gyengeségének, mert az sablon nyelvként is használható, keverve az üzleti logikát és az adatbázis lekérdezéseket a megjelenítéssel.
6. ábra: Egy tipikus CakePHP MVC kérés. Forrás: CakePHP53 Az MVC rövidítés a Model, View, Controller (modell, megjelenítés, vezérlés) szavakból áll össze, amelyek mind egy-egy réteget jelölnek a keretrendszerben. A modell réteg tartalmazza az alkalmazás üzleti logikáját. Ő felel az egyes adatok lekérdezéséért az adatbázisból, azok átalakításáért olyan formátumba, amely könnyen kezelhető az alkalmazásunk számára. Ezek a folyamatok magukba foglalják az adatkezelés, adatfeldolgozás, adatellenőrzést és minden olyan feladatot, amely kapcsolódik valamilyen jellegű adatfelhasználáshoz. Egy közösségi oldal esetében a modell a következőkért felelne: elmenteni a felhasználók adatait, tárolni- és lekérdezni fotókat és az ismerősök ajánlása. A megjelenítés réteg a modellből visszakapott adatokat jeleníti meg, ez a réteg teljesen elszeparált a modell rétegtől és nem csak sima szöveg vagy HTML alapú megjelenítésről beszélhetünk, hanem ez lehet akár JSON vagy XML is. A modell- és megjelenítési réteget a vezérlés réteg köti össze. A szerepét egyfajta ellenőrző rétegnek is tekinthetjük, ami azért felel, hogy a feladatokat a megfelelő metódusok végezzék el. Ellenőrzi a jogosultságokat, delegálja az egyes feladatokat és összeállítja az adatokat a megjelenítési réteg számára.54 Egy tipikus CakePHP kérés a felhasználó által kért oldal vagy erőforrással kezdődik (6. ábra). Ezt a kérést először a Dispatcher dolgozza fel, eldöntve, hogy melyik Controller (vezérlő) kezelje. Amikor a kérés megérkezik a Controllerbe, az kommunikál a Model réteggel és elmenti- vagy begyűjti a megfelelő adatokat. Ezt követően a Controller kiválasztja a megfelelő megjelenítési fájlt és átadja neki a Modell által generált értékeket. Miután ez megtörtént, az adatok megjelenítésre kerülnek a felhasználó számára.55
https://www.owasp.org/index.php/Top10#OWASP_Top_10_for_2013 https://msdn.microsoft.com/en-us/library/ff649643.aspx 53 http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html 54 http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html 55 http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html 51 52
16
Az MVC használata több előnnyel is jár. Ez egy kipróbált és bevált tervezési minta, amely egy karbantartható és bővíthető alkalmazást eredményez. A gyors prototípus gyártás mellett könnyen lehet újabb funkciókat hozzáadni és lehetővé teszi, hogy párhuzamosan dolgozzanak a programozók és a dizájnerek is ugyanazon projekt különböző rétegein.56
4.2.2 Megjelenés Az oldal grafikus felülete HTML557-ben íródott CSS358 stílusleíró nyelv formázásával. A reszponzív dizájn és a széleskörű használata miatt a Twitter Bootstrap HTML5 keretrendszere is felhasználásra került. A különféle módosítások a megjelenítésen egy másodlagos CSS fájl segítségével történtek, a kaszkád technológiából adódóan, mindig a legutoljára definiált tulajdonságok kerülnek megjelenítésre, felülírva a korábban deklarált tulajdonságokat az adott szelektorra. Az egyes effektek, térképek megjelenítése JavaScript59 kliensoldali szkriptnyelvben íródtak jQuery webes keretrendszer felhasználásával. A weboldalon található banner egy vektorgrafikus kép, így a nagyobb felbontású monitorokon és tableteken is teljes minőségben élvezhető. A vektorgrafikus formátum lehetővé tesz egy sokkal kisebb fájlméretű, ám sokkal könnyebben méretezhető kép megjelenítését. A web alkalmazás reszponzív60 felületű, így minden készüléken egyaránt ugyanaz a felhasználói élmény tapasztalható, legyen szó telefonról, tabletről, asztali pc-ről vagy okos TV-ről. A reszponzív dizájn alapja esetünkben egy rácsrendszer, amely a felbontást figyelve az egyes elemeket összehúzza vagy teljesen átrendezi azokat. A kliensoldal készítése közben hangsúly volt fektetve annak sebességére és használhatóságára is. A sebességről az Apache webszerverhez feltelepített Google PageSpeed 61 bővítmény gondoskodik.
4.2.3 Haversine formula A felhasználó pozíciója és a boltok, valamint események közötti légvonalbeli távolságot a Haversine formulával számítottuk ki a GPS koordináták alapján. A Haversine formula alapjait Don Jos´e de Mendoza y Rios fektette le, aki egy visszavonult ex-patrióta spanyol admirális volt. 1796-ban kerültek bemutatásra francia nyelven a hajózási csillagászattal és navigációs tudománnyal kapcsolatos elméletei, valamint komplex trigonometriai számításai. A Haversine formula egy olyan egyenlet, amely pontos ortodromikus távolságot ad meg két pont között egy gömb felületén. A gömbön nem találhatók egyenes vonalak, így a nem-euklideszi geometriában az egyenes vonalak geodetikus vonalakkal vannak helyettesítve. A geodetikus vonalak a gömb felszínén a fővonalak. A formula alkalmazása a Földre csak egy becslés mivel a föld alakja nem tökéletes gömb. A föld sugara 6356.752 km a pólusoktól az egyenlítőig, ahol 6378.137 km.62 Ebből következik, hogy a Haversine formula és a koszinusz törvénye nem garantálható http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html https://www.w3.org/TR/html5/ 58 https://developer.mozilla.org/en/docs/Web/CSS/CSS3 59 https://developer.mozilla.org/en-US/docs/Web/JavaScript 60 http://www.w3schools.com/html/html_responsive.asp 61 https://developer.mozilla.org/en-US/docs/Web/JavaScript 62 Dr. David R. Williams. Earth Fact Sheet. http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html 56 57
17
pontosabbnak, mint 0.3%.63 Precízebb függvények, amelyek feltételezik a föld elliptikusságát is léteznek, de ez a hibaszázalék elfogadható az alkalmazásunk esetében. 64 65
4.2.4 Helymeghatározás Az általunk készített webes szolgáltatás egyik sarkalatos pontja a helymeghatározás és a legtöbb szolgáltatás helyes működésének alapfeltétele is egyben. A helymeghatározás a HTML5 Geolocation 66 funkció felhasználásával történik (7. ábra). Ennek az igénybevételéhez egy rövidebb kliensoldali kódrészletre van szükségünk. Mivel a pontos helyzetünk személyes adatnak minősül, így a felhasználó dönthet arról, hogy engedélyezi-e a helymeghatározást vagy nem. A helymeghatározás minden korszerű böngészőben67 működik és asztali gépek esetén az IP cím alapján határozza meg a helyzetünket. Sokkal pontosabb eredményt kapunk az okos telefonok és tabletek esetén, ahol a GPS vevő bekapcsolásával akár 2-3 méteres pontosságra is szert tehetünk. A felhasználó koordinátái a munkamenet végén törlésre kerülnek. A különböző távolságokat elsősorban légvonalban számoltuk a Haversine formula segítségével, az egyes termékek és események adatlapjánál viszont a Google Maps API68-t használtunk, amely egy sokkal pontosabb, útra illesztett útvonaltervezést tesz lehetővé és a járművet is meghatározhatjuk.
7 ábra: HTML5 Geolocation használata JavaScript segítségével
http://www.movable-type.co.uk/scripts/latlong.html http://www.movable-type.co.uk/scripts/latlong.html 65 Joel Silverberg. 2006. New York. Nautical Astronomy: From the Sailings to Lunar Distances 18. 66 http://www.w3schools.com/html/html5_geolocation.asp 67 http://caniuse.com/#feat=geolocation 68 https://developers.google.com/maps/ 63 64
18
4.2.5 Kategória-fa A különböző termékek csoportosítása is fontos szerepet kapott az oldal fejlesztésénél. Egy olyan kategória fát fejlesztettünk, amely adatbázisban van eltárolva és 3 szint mélységű, tehát tartalmaz egy főés egy megadott mélységig alkategóriákat. Természetesen ez tovább bővíthető, bár nagyobb mélység esetén teljesítménybeli problémák léphetnek fel az egymásba ágyazott iterációk miatt. Az árucikkek több kategóriába és azon belül alkategóriákba tartozhatnak. A termékeket az egyes kategóriákra kattintva szűrhetjük és a találati listában kereshetünk is vagy rendezhetjük annak tartalmát. Megjegyezném, hogy az egyes kategóriák linkelhetők, sőt a bennük történt keresés és rendezések is, így az általunk leválogatott terméklistát könnyedén megoszthatjuk link formájában másokkal is. A kiválasztott kategóriát vagy alkategóriát fekete színnel jelöli az alkalmazás.
8. ábra: az oldalon lévő kategória-fa (baloldal) és a hozzá tartozó adatbázis tábla (jobboldal)
4.2.6 Intelligens keresőmotor Az oldal fő eleme a keresőmotor, amely több szempont szerint állítja össze a találati listát. Ezek a szempontok a következők: a bolt légvonalbeli távolsága a felhasználótól, ahol a termék fizikailag átvehető, a termék ára, a termék népszerűsége és amennyiben van keresett kifejezés, úgy az egyezés mértéke is számít. A termék és a felhasználó légvonalbeli távolságát a Haversine formulával számoljuk ki. A termék ára adott az adatbázisból, a népszerűségét pedig úgy határozzuk meg, hogy amennyiben egy felhasználó keres az oldalon és a keresési találatból megnézi egy termék adatlapját, annak népszerűsége automatikusan 1-el növekszik és a termék azonosítója eltárolódik egy session változóban annak érdekében, hogy a felhasználó ne tudja manipulálni az értéket, azzal, hogy újratölti az oldalt, vagy újra meglátogatja azt. Egy termék népszerűsége csak keresést követően növekedhet, hiszen feltételezhetjük, hogy a felhasználó megtalálta vagy legalábbis felkeltetette az érdeklődését a termék. A session változó 1 hónap alatt elavul, és utána újra növekedhet a termék népszerűsége ugyanazon felhasználó által. Az egyezés mértékét a keresett és a termék nevével egyező kifejezések és a termék nevében található szavak számának a hányadosával kapjuk meg. Például: amennyiben a felhasználó rákeres arra a kifejezésre, hogy
19
„kézműves kecskesajt” akkor a „metélőhagymás ízesítésű kézműves kecskesajt” termék az alábbi egyezési értéket kapja: 2/4 = 0.5 A kapott értékek változatossága miatt a végleges termékrang megállapítása előtt normalizálni kell azokat. Az értékeket egy tömbbe ($data) helyeztük majd megkerestük a legkisebb ($min) elemet ezt követően a legnagyobbat ($max). Ezután meghatároztuk a legnagyobb érték és a legkisebb érték különbségét ($max_min). Végig iterálva a korábban deklarált tömbünkön ($data) normalizáltuk azok értékeit úgy, hogy kivontuk belőlük egyesével a legkisebb elem értékét, majd a kapott eredmény elosztottuk a legnagyobb- és legkisebb érték különbségével. A kapott értékeket még súlyoztuk és így jött létre a termék végleges rangja. A súlyozások a következő képen alakulnak: egyezés (40%), ár (30%), távolság (15%), népszerűség (15%). A terméket listázásánál a rang szerint rendezve jelenítjük meg azokat csökkenő sorrendben.
9. ábra: Termékrang meghatározás egyezés, ár, távolság és népszerűség alapján A keresés szavankénti egyezésen alapul MySQL full-text search metódust használva, elkerülve a nagyon erőforrás igényes LIKE ’%keresési kifejezés%’ jellegű SQL lekérdezéseket. Az egyes keresési kifejezéseket, amelyekre megjelennek találatok eltároljuk az adatbázisba és felajánljuk őket, ha a felhasználó olyan kifejezésre keres, amire nem kap vissza találatot, mert nem pontosan egyezik a terméknevekkel. Pl. amennyiben a keresett kifejezés: „kecske”, akkor nem fog feljönni a „kecskesajt” kifejezés, hiszen szavankénti egyezést keresünk, annak érdekében, hogy minnél pontosabb találati listát adhassunk vissza. Ekkor az oldal felajánlja a „kecskesajt”- valamint a többi „kecske” kifejezést tartalmazó kulcsszavakat amelyre léteznek találatok az adatbázisban. Ezeknek a kifejezéseknek a száma folyamatosan növekszik és együtt változik az új- vagy törölt termékekkel.
20
4.2.7 Termék címkék
10. ábra: Termék címkék A terméknevek mellett közvetlenül többféle címke látható (10. ábra). A népszerű termékek zöld színű címkét kapnak, amelyek óránként frissülnek a háttérben. A narancssárga címkék azt mutatják, hogy a termék részt vesz-e eseményeken. Amennyiben igen, úgy minden egyes címke egy eseményt jelöl, valamint azok távolságát is kilométerben. A címkék generálása jelentős üzleti- és megjelenítési logikát igényel, így készítettünk egy külön Helpert69, amely feladata a címkék létrehozása a megjelenítésért felelő alkalmazásrétegben.
4.2.8 Kereső optimalizálás Az oldal nincs beküldve a különböző kereső motorokhoz, mint Google, Bing vagy Yahoo. Azonban minden ehhez szükséges fejlesztés megtörtént. XML alapú oldaltérkép automatikusan legenerálásra kerül és tartalmazza az összes termék-, esemény- és termelő adatlapját. Ezt az oldaltérképet csak hozzá kell adni a különböző keresőmotorok vezérlőpaneljén, és azt követően sokkal hamarabb visszaláthatjuk ezeket az oldalakat a keresési találatokban. További fontos szempont a különböző HTML meta tagek helyes megadása, amelyek az adatlapokkal generálódnak. Egyes oldalak több címről is elérhetőek a weboldalon, és annak érdekében, hogy ezek ne jelenjen meg többszörözve a Google találatokban HTML Canonical meta taget használtunk. A technikai feltételek is nagyon fontosak, mint a beszédes URL-ek, https kapcsolat, gyors oldalbetöltés, oldalméret és mobilnézet. Természetesen nélkülözhetetlen az is, hogy a tartalom értéket képviseljen és hasznos legyen az emberek számára, a technikai feltételek megteremtése önmagában közel sem elég.
69
http://book.cakephp.org/3.0/en/views/helpers.html
21
5. EREDMÉNYEK 5.1 Oldal elérhetősége A szakdolgozat eredményeként elkészült weboldal közvetlenül is megtekinthető az interneten, a https://szakdolgozat.domafoldi.hu címen.
5.2 MySQL és adatbázis-műveletek Az elkészített webes applikáció erőteljesen adatbázisra támaszkodik (11. ábra). Az adatbázis tervezésénél a CakePHP által javasolt névkonvenciókat követve minden táblának az elnevezése angolul történt a főnevek többes számát használva. Az angol elnevezések oka az, hogy a magyar nyelv nem tagja a germán nyelvcsaládnak és a többes számú főnevek végződése nem egységes. A többes szám a tábla példányosításánál játszik szerepet a modellekben. Az összes táblánál InnoDB70 tároló motort állítottam be, kivétel képez a products és companies táblák, melynek oka, hogy a szerveren lévő MySQL71 adatbázis verziója régebbi és nem támogatja a full-text search72 metódust, csak MyISAM73 tároló motornál. Egy későbbi frissítés esetén ez át lesz állítva InnoDB-re, amely fő erőssége a tranzakció biztos feldolgozás. A szakdolgozatban készített web alkalmazás nincs éles rendszerben üzemeltetve és nem éri jelentős terhelés, így ebben az esetben nincs jelentősége a tranzakció biztos feldolgozás meglétének, valamint a helyes indexek és optimalizált oszloptípusok beállításának. A táblák karakterkódolása utf8_hungarian_ci amely lehetővé teszi, hogy az egyes SQL rendezések helyesen a magyar abc szabályai szerint történjenek, és ne legyen probléma az ékezetes betűk pozíciójával mint az utf8_general_ci karakterkódolás esetében. Az egyes lekérdezések a CakePHP ORM74-en keresztül történnek, ami lehetővé tesz egy felhasználóbarát, biztonságos, hatékony, optimalizált adatbázis--műveletet. Az ORM75-et egyfajta absztarkciós rétegnek kell elképzelni az adatbázis és a PHP között. Egy SELECT * FROM products lekérdezés így néz ki tehát a vezérlőben76: $this->Products->find(’all’). Természetesen amennyiben egy komplex és több tábla mélységű lekérdezésre volt szükség, akkor a CakePHP query builder77 funkcióját használtam, amely nagyobb szabadságot biztosít a fejlesztőnek, mellőzve az ORM által nyújtott előnyöket. A gyakran használt lekérdezések gyorsító tárazva vannak a keretrendszer által.
https://dev.mysql.com/doc/refman/5.0/en/innodb-storage-engine.html http://dev.mysql.com/doc/refman/5.7/en/introduction.html 72 http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html 73 https://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html 74 http://book.cakephp.org/3.0/en/orm.html 75 Object-relational mapping a számítógépes tudományban használt programozási technika, amely átalakítja az adatokat két egymással nem kompatibilis rendszertípusnál, objektum orientált programozási nyelvek esetében. 76 CakePHP vezérlő rétegében lévő metódusbann futtatva 77 http://book.cakephp.org/3.0/en/orm/query-builder.html#namespace-Cake\ORM 70 71
22
11. ábra: A weboldal adatbázisa és a reláció az egyes táblák között
5.3 Autentikáció és autorizáció A legtöbb webes oldalhoz hasonlóan mi is készítettünk egy bejelentkező oldalt. Itt a termelők számára biztonságosan hozzáadhatják a vállalkozásukat és a hozzá tartozó boltokat, valamit a boltokban megtalálható termékeiket. A rendezvényszervezők pedig feltölthetnek eseményeket és megadhatnak nekik ismétlődést is. A felhasználók azonosítása különösképpen indokolt, amennyiben a szolgáltatásunk magába foglal olyan adatgyűjtést, amely könnyen manipulálható. Ilyen lehet például egy termék értékelő- vagy szavazó rendszer ahol fontos számunkra, hogy egy felhasználó lehetőleg ne vehesse igénybe többször a szolgáltatást. Az autentikáció – más néven hitelesítés – akkor megy végbe, amikor a felhasználó a felhasználónév és jelszó párosával belépést kísérel meg az oldalon. „A hitelesítés olyan folyamat, amely arra szolgál, hogy egy entitás bizonyítsa az önmagáról állítottak valódiságát.”78 Amennyiben az autentikáció sikeres volt, úgy rögtön megtörténik az autorizáció, más néven feljogosítás is, amely különböző szerepeken alapul, esetünkben három található: adminisztrátor, felhasználó és a nem bejelentkezett látogató. „A feljogosítás azon jogok megadása a szubjektumok részére, amelyekkel - az erőforrásokkal és adatokkal kapcsolatban - előre meghatározott szabályok szerint rendelkezhetnek.”79 Az adminisztrátornak korlátlan hozzáférése van minden oldalhoz, az eladónak és látogatónak pedig az előredefiniált oldalakhoz. Külön kiemelnénk az oldal átirányítás ellenőrző mechanizmusát, ami egy fehér listán alapszik és működését az 1. melléklet szemlélteti.
78 79
http://e-oktat.pmmf.hu/webgui/www/uploads/images/1514/4_Felhasznalo_azonositas.pdf http://e-oktat.pmmf.hu/webgui/www/uploads/images/1514/4_Felhasznalo_azonositas.pdf
23
5.4 Termékek Minden eladó rendelkezhet több bolttal is akár. A termékek hozzá vannak rendelve a boltokhoz és a boltok pedig az adott eladóhoz. Egy termék ezen kívül tartozhat több kategóriába is, amellyel a felhasználók szűkíthetik a listát. Minden termék légvonalbeli távolsága a felhasználó pozíciója- és a bolt koordinátái alapján kerül megállapításra kilométer mértékegységben, egy tizedes jegyre kerekítve (2. melléklet). A termékek rendelkeznek adatlappal is, amelyen minden fontosabb jellemzőt, valamint pontos útvonaltervet is láthatunk (4. melléklet). Minden termék rendelkezik népszerűséggel is, amely értéke befolyásolja a találati listákban elfoglalt helyüket és népszerűség szerint is rendezheti őket a felhasználó. Ez segíthet, amikor sok eladó is rendelkezik hasonló termékkel, és az árfekvés is közel megegyező (2. melléklet).
5.5 Események Az oldalra a helyi termelői piacok vagy más kistermelőkkel kapcsolatos események feltölthetők és lehetőség van ismétlődő események beállítására is (3. melléklet). A rendezvények adatlapján (5. melléklet) minden fontos információ megtalálható többek között az esemény pontos időpontjára, helyszínére, leírására, az ott értékesítésre kerülő termékek listájára vonatkozóan, valamint pontos térkép is szerepel, amely a felhasználó aktuális pozíciójától mutatja a rendezvény távolságát. A termelők összekapcsolhatják áruikat az egyes eseményekkel és a termékek oldalon is címkék jelzik azt, ha adott termék megtalálható az eladó telephelyén kívül még más piacokon is (2. melléklet). A felhasználó így látja, hogy az ország másik végében lévő termelő – aki egyébként túl messze lenne tőle – heti rendszerességgel árul budapesti termelői piacokon is. Egy termék ugyanis nem csak a kistermelő telephelyén, hanem számtalan más piacon vagy rendezvényen is eladásra kerülhet.
5.6 Eladók és termelők Az eladók menüpont alatt a látogató megtekintheti az összes eladót egy térképen és alatta egy táblázatban listázva is. A térkép Google Maps alapú és a piros markerek egy-egy termelő boltját jelölik. Egy termelőnek természetesen több boltja is lehet. A térkép kirajzolása JavaScripttel történt az adatbázisból PHP-val kilistázott koordináták alapján. A felhasználó helyzete a térkép középpontja, így mindenki először a hozzá közelebbi termelők csoportját látja. A piros markerekre kattintva láthatjuk, hogy az adott bolt mely termelőhöz tartozik. Az egyes termelők adatlapján megtekinthetők a boltok és az általa árult termékek, valamint események, amin részt vesz a kistermelő és nem utolsó sorban a pontos elérhetőségek is.
24
6. KÖVETKEZTETÉSEK Az elkészült webes alkalmazás egyfajta prototípus a szakdolgozatban taglalt problémára. Az irodalmi áttekintésben véleményezett szolgáltatásoknál az oldal egy teljesen másabb irányból közelítette meg a problémát, egy modernebb elképzelés megvalósításával. Az egyes termékek és események pontos távolságát egyik esetben sem láthatjuk, az egyes események, valamint az eladók termékei között sincsen ilyen jellegű szinergia. Természetesen további fejlesztések lennének kívánatosak. Hasznos lenne egy jól működő termékfeltöltő rendszert, amivel egyszerűen beköthetik a web áruházzal rendelkező kistermelők a termékeiket, amelyek ezután automatikusan megjelennek a találati listában. Az adatbázisok jobb optimalizálása és a Google Térkép szolgáltatások mélyebb integrálása is szükségszerű lenne a későbbi fejlesztések során. Az applikáció hatékony működéséhez a gazdálkodók érdeklődését is fel kell kelteni, és az oldal sikere inkább a felhasználókon múlik, hogy azok mennyire tartják frissen az adataikat és mennyire precízek a termékek feltöltése során. A szolgáltatás bevezetése tehát igényelne egy tudatos termelői és vásárlói réteget, amely látja az alkalmazás használatából fakadó előnyöket és hajlandó a saját javára fordítani azokat. Fontos lenne még olyan személyek – moderátorok – jelenléte, akik felelnek az adatintegritásért és fenntartják a rendet. A bevezetésben említett „termék szezonja” problémára nem készült megoldás. Ennek oka az, hogy ehhez egy állandóan frissülő adatbázis szükséges. Azonban aktív felhasználók esetén ez is megoldható és akár egyfajta eseménynek lehetne tekinteni pl. zöldség vagy gyümölcs szezonját. Egy professzionális naptár szolgáltatás integrációja is szükségszerű. Ezek a szolgáltatások sokkal nagyobb funkciógazdagság jellemzi, mint a szakdolgozatban létrehozott ezenkívül nagy felhasználó bázissal rendelkeznek, akiknek nem jelent problémát a használata valamint integrálni tudják az egyes eseményeket más szolgáltatásokba is. A termékeknél nincs lehetőség tömeg alapján rendezni. Ennek oka, hogy azok különböző mértékegységekben vannak megadva és egy átváltó algoritmus segítségével lehetne ezt csak megoldani. További fejlesztéseknél ez is szempont lehet. Lokalizálni is fontos lenne az oldalt, a termékeket és eseményeket, így a magyar nyelvet nem beszélő vásárlói réteget is megszólíthatnánk. Az oldal ebben a formájában nem termel bevételt. A legegyszerűbben ízlésesen elhelyezett reklámokkal lehetne gazdaságossá alakítani egy ilyen jellegű weboldalt. Az egyes termékek kiemelése és kedvezőbb pozicionálása is megoldható. Az intelligens keresőmotor apró továbbfejlesztésével a szponzorált termékek egy sokkal előkelőbb helyet foglalnának el a listákon, de akár külön kiemelve is meg lehetne
25
jeleníteni azokat az egyes kereséseknél. Véleményünk szerint ezeket a funkciókat akár non-profit módon is lehetne üzemeltetni, hiszen az igény igen-is valós, és közös érdekünk, hogy elősegítsük azt, hogy a háztáji és kézműves termékek fennmaradjanak és a vásárlók is egyszerűen vásárolhassanak.
26
7. ÖSSZEFOGLALÁS Munkák során egy olyan minden platformon használható webes alkalmazás fejlesztését tűztük ki, amely választ ad a vásárlónak a következő kérdésekre: 1. ki foglalkozik háztáji, házi vagy kézműves termék termelésével és értékesítésével? 2. milyen áron forgalmazzák ezeket a termékeket? 3. állandó vagy időszakos árusítóhelyeken forgalmazzák-e ezeket a termékeket? 4. van-e a termelőnek saját (állandó) árusítóhelye, ha van, hol, milyen messze? 5. milyen termékeket fog kivinni a termelő a piac(ok)ra/időszakos árusítóhely(ek)re? 6. hol találhatók ezek az piac(ok)/árusítóhely(ek)? 7. hogyan, mivel lehet megközelíteni a piaco(ka)t/árusítóhely(ek)et? 8. vannak-e más termelők, akik ugyanazt a terméket olcsóbban adják a régióban? A munkánk során elért fontosabb eredmények: 1. Minden platformon használható webes alkalmazás született, legyen az telefon, tablet vagy notebook, de a reszponzív megjelenés miatt az okos tévéken is kompromisszumok nélkül működik. 2. Letisztult, gyors megjelenéssel rendelkező, modern szabványokat követő,
könnyen
karbantartható- és tesztelhető szerveroldali kóddal rendelkező weboldal. 3. Áttekinthető listával szolgál a valós termelőkről, azok termékeiről és az eseményekről, amelyek választ adnak a célkitűzésben definiált kérdésekre. 4. A termékek összekapcsolhatók az egyes eseményekkel, így pontosan láthatjuk, hogy milyen eladók, milyen árucikkekkel jelennek meg a termelői piacon vagy rendezvényen. Ez fordítva is működik, az eladóknál is láthatjuk a hozzájuk tartozó termékeket, valamint a termékek oldalon is láthatjuk a különböző narancssárga címkéken, hogy az adott termék milyen eseményen fog részt venni. 5. Intelligens keresőmotorral rendelkezik, amely több szempont mellett figyelembe veszi a földrajzi pozíciónkat is és ennek fényében állítja össze a találati listákat. Amennyiben nincs találat a keresési kifejezésünkre, úgy az oldal felajánlj hasonló kulcsszavakat, amelyre garantáltan lesz találat. Ez a kulcsszó lista automatikusan frissül. 6. Három szint mélységű linkelhető kategória-fa tartozik a termékek szűréséhez, ezekben a kategóriákban is természetesen lehet keresni vagy rendezni. 7. Termék-, esemény- és termelő-adatlapok állnak rendelkezésre, ahol megjelenítésre kerülnek a legfontosabb adatok és egy Google Maps alapú térképen azonnal útvonalat is tervezhetünk és akár a közlekedésmód is megválasztható. 8. A felhasználó pontos helyzetét meghatározó algoritmus működik a háttérben, amelyből visszakapott eredmény szervesen integrált az egyes szolgáltatásokba. Ez az információ csak légvonalbeli távolságok meghatározásánál, valamint a Google Maps útvonaltervezéseknél kerül felhasználásra. 27
8. KÖSZÖNETNYILVÁNÍTÁS Szeretnék köszönetet mondani mindenek-előtt konzulensemnek, Dr. Ladányi Mártának a szakdolgozat elkészítésében nyújtott segítségéért, továbbá Domaföldi Gerdának az oldal bannerén végzett munkájáért. Köszönetemet fejezném még ki a nyílt forráskódú könyvtárak, alkalmazások és keretrendszerek fejlesztőinek, akik nélkül ez a weboldal ebben a formában nem valósulhatott volna meg. A weboldalon található termékek mind valósak, a kézműves sörök leírását a HörPint Kft. biztosította, amiért ez-úton is szeretnék köszönetet mondani Bajor Gergőnek, aki ezt listában összegyűjtve átadta nekem.
28
9. IRODALOMJEGYZÉK 1995. évi CXVII. törvény a személyi jövedelemadóról. 3. bekezdés 18. pont b) 1995. évi CXVII. törvény a személyi jövedelemadóról. 3. bekezdés 18. pont 1995. évi CXVII. törvény a személyi jövedelemadóról. 6. melléklet 1. pont 6. számú melléklet az 1995. évi CXVII. törvényhez Agrármarketing centrum, Földművelési és Vidékfejlesztési Minisztérium. 2002. Hagyományok – Ízek – Régiók: 3-5. http://eredetvedelem.kormany.hu/download/3/40/f0000/hagyom%C3%A1nyok_%C3%ADzek_r%C3%A9gi %C3%B3k.pdf Dr. David R. Williams. Earth Fact Sheet. http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html http://book.cakephp.org/3.0/en/orm/query-builder.html#namespace-Cake\ORM http://book.cakephp.org/3.0/en/views/helpers.html http://cakephp.org/ http://caniuse.com/#feat=geolocation http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html http://dev.mysql.com/doc/refman/5.7/en/introduction.html http://e-oktat.pmmf.hu/webgui/www/uploads/images/1514/4_Felhasznalo_azonositas.pdf http://getbootstrap.com/ http://php.net/releases/5_5_9.php http://releases.ubuntu.com/14.04/ http://termelotol.hu/ http://www.iit.uniiskolc.hu/iitweb/export/sites/default/users/krizsanz/Tantargyak/oop/bin/03_oopAlapelvek.pdf http://www.meska.hu/ http://www.movable-type.co.uk/scripts/latlong.html http://www.otletekboltja.hu/
29
http://www.w3schools.com/html/html_responsive.asp http://www.w3schools.com/html/html5_geolocation.asp https://atom.io/ https://desktop.github.com/ https://dev.mysql.com/doc/refman/5.0/en/innodb-storage-engine.html https://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-47.html https://developer.mozilla.org/en/docs/Web/CSS/CSS3 https://developer.mozilla.org/en-US/docs/Web/JavaScript https://developer.mozilla.org/en-US/docs/Web/JavaScript https://developers.google.com/maps/ https://httpd.apache.org/download.cgi#apache24 https://inkscape.org/en/ https://jquery.com/ https://msdn.microsoft.com/en-us/library/ff649643.aspx https://www.owasp.org/index.php/Top_10_2013-A1-Injection https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS) https://www.owasp.org/index.php/Top10#OWASP_Top_10_for_2013 https://www.w3.org/TR/html5/ Joel Silverberg. 2006. New York. Nautical Astronomy: From the Sailings to Lunar Distances 18. Központi Statisztikai Hivatal. 2013. A gazdasági folyamatok regionális különbségei,2013: 9. http://www.ksh.hu/docs/hun/xftp/gyor/gaz/gaz1512.pdf Központi Statisztikai Hivatal. 2013. A vállalkozások regionális sajátossága: 2. https://www.ksh.hu/docs/hun/xftp/idoszaki/regiok/orsz/vallalkregkul11.pdf Központi Statisztikai Hivatal. 2014. A regisztrált gazdasági szervezetek száma, 2013. Statisztikai tükör 2014.03.21: 2. http://www.ksh.hu/docs/hun/xftp/gyor/gaz/gaz21312.pdf
30
Központi Statisztikai Hivatal. 2016. A regisztrált gazdasági szervezetek száma, 2015. Statisztikai tükör 2016.04.11: 1. http://www.ksh.hu/docs/hun/xftp/gyor/gaz/gaz1512.pdf Vidékfejlesztési Minisztérium. Tájékoztató a kistermelők élelmiszer-előállítással kapcsolatos lehetőségeiről: 3,7-9. http://elelmiszerlanc.kormany.hu/download/3/7e/50000/Kistermel%C5%91i%20t%C3%A1j%C3%A9koztat %C3%B3%202013.pdf Vidékfejlesztési Minisztérium. Termelői Piacot Minden Településre!: 2-4,7. http://videkstrategia.kormany.hu/admin/download/5/f1/80000/termeloi_kepkeretes_vegso_130828.pdf
31
10. MELLÉKLETEK
1. melléklet: Egy tipikus, felhasználótól érkezett kérés végrehajtása az oldalon.
32
2. melléklet: Termékek oldal.
3. melléklet: Események oldal.
33
4. melléklet: Termék-adatlap.
34
5. melléklet: Esemény-adatlap.
35
A nyomtatvány a Tanulmányi és Vizsgaszabályzat 1/A Kertészettudományi Kar mellékletének 2/a. számú melléklete
SZAKDOLGOZAT LEADÁSI NYILATKOZAT
Alulírott Domaföldi Ádám (Neptun-kód: T52QWA) nyilatkozom, hogy az Intelligens keresőmotor agrár- és kézműves termékekhez címen benyújtott szakdolgozatom saját szellemi termékem. Tudomásul veszem, hogy a Dékáni Hivatalban határidőben történő bemutatás nem jelenti dolgozatom szakmai és tartalmi elfogadását.
Budapest, 2016 április 29.
____________________________ Hallgató aláírása
36