turistautak.hu térképrészleteK+ jelzés GPS-szel
[ english
Előzmények

petrot81hozzászólásai | válasz erre | 2019.02.21 12:43:49 (2247)
Egyetértek, most egy láda teljes adatlapjához 5 hívás kell:

- alapadatok
- logok
- képek
- pontok (multipontok infói)
- megtalálás állapota

Bár én a geoládák appban 100%-ban az új apit használom már, de egyetértek abban, hogy a régi összetettebb lekérdezéseket könnyebb volt használni.

Nálam pl. a látható térképterület ládáit le lehet tölteni, ilyenkor azért sok ez az 5x-ös szorzó. OK, hogy kevesebb egy lekérés SQL igénye, de 5x annyi kapcsolatot kell megnyitni/lezárni.

Mindazonáltal én a jelenlegi formában nem bolygatnám nagyon az API-t, Gusty rengeteget dolgozott vele. Legközelebb akkor látnám értelmét hozzányúlni, ha az egész GC.hu oldal kapna egy 21.századi felületet a hozzá való szabványos REST API-val, ahol maga az oldal is azt használja.
[előzmény: (2244) bigmick, 2019.02.20 22:03:15]

bigmickhozzászólásai | válasz erre | 2019.02.20 22:03:15 (2244)
Alaposan végigelemeztem (a teszt API-ban) a lehetőségeket, és hogy hogyan tudnám leghatékonyabban alkalmazni őket a mobil appban.

3 kritikus szitut találtam:

1. az elsőt már említettem: ha a láda adatok között letölthető lenne egy olyan adat, ami a láda logjaiban bekövetkezett utolsó lényegi változás (új log beküldés ill. meglevő log módosítás) időpontját tükrözi, akkor erre alapozva az egyszer már letöltött adatok későbbi frissítésekor sok felesleges /logsbycache hívást meg lehetne spórolni

2. Egy hosszabb (akár több napos) ládázás előtt az ember letölti a célterületen szóba jöhető ládákat, leírással, a legutolsó logokkal (ez nálam az utolsó 10 logot jelenti).
Egy ilyen akció során a szóba jöhető ládák száma akár több száz is lehet.
A régi API-val megoldható volt, hogy a ládadatok letöltésével egy menetben a logokat is megkapja a hívó. Így viszonylag kevés API hívással lejöttek a kért ládák adatai, logokkal együtt. 100 láda összes adatát (logokkal együtt) le tudtam kérni néhány (nagyságrendileg mondjuk 5) API hívással, és mindez elég gyors is volt.
Az új API-val viszont az nem megy. Ha van egy API hívással lekért 100 láda a kütyün, akkor az 100 újabb API hívást jelent, hogy mindegyikhez hozzájussak a logokhoz is.
Jelentősen több időbe telik így. Nem csoda, 20-szoros az overhead a szükséges http hívások felépítése/lebonyolítása során és ugyanekkora nagyságrend a szerveren az adatbáziskezelőnek is ennyi SELECT request-nek a felépítése/lezárása.
Ha itt megoldható lenne, hogy az API egy /logsbycaches hívással több láda logjait is le tudja kérni egyetlen hívással (cache_id lista alapján), akkor az megint egy nagyságrenddel gyorsítani tudná a logok letöltését

3. Az előzőhöz teljesen hasonló a helyzet a láda leíráshoz tartozó kép adatok letöltésénél is.
Itt is sokat gyorsítana egy /cachesimages hívási lehetőség (szintén cache_id lista alapján), amivel egyszerre több ládához tartozó képeket is le lehetne tölteni (a mezőlista is bővítendő ez esetben a cache_id-vel)

@gusty: látsz esélyt ezeknek a kéréseknek a megvalósítására?
[előzmény: (2240) bigmick, 2019.02.19 20:33:59]

bigmickhozzászólásai | válasz erre | 2019.02.19 20:33:59 (2240)
Akkor elkezdem:
1. Már betöltött ládaadatok frissítésekor első körben id lista alapján kötegben le tudom kérni, hogy az egyes ládák adatai mikor frissültek utoljára.
Ezt összehasonlítva a lokálisan eltárolt adatokkal le lehet szűrni, melyik ládák változtak, elég csak az ő adataikat lekérni egy újabb körben, részletesen, az összes mezőre kiterjedően.
Ez így remekül működik.
Jó lenne valami hasonló a logokra vonatkozóan is.
A geoládáknál lekérhető egy utolsolog nevű mező, amiről azt gyanítom, hogy a ládához utoljára beküldött log létrehozási dátuma lehet. Valami ilyesmire lenne szükség, de mivel egy logot lehet utólag is szerkeszteni (akár API-n keresztül is), igazából azt kellene tudni, hogy az adott láda logjaiban mikor volt az utolsó módosulás (ami lehetett akár új log beküldés, akár korábbi log módosítása, akár még log törlés is).
Ennek az adatnak a birtokában lehetne igazából biztonsággal eldönteni, hogy az adott ládánál kell-e frissíteni a letöltött logokat, vagy sem.

Jelenleg hiába tudom, hogy a ládához az utolsó log 1 napja (v. 1 hete) került be az adatbázisba, adatfrissítéskor akkor is minden esetben le fogom tölteni a logokat minden egyes ládához, mert hátha változott valamelyik log tartalma, ami adott esetben fontos infót tartalmazhat.
Mozgó ládáknál pl. tipikus, hogy az újrarejtésről szóló infót nem új logba írják a megtalálók, hanem a megtalálás logot egészítik ki később (esetleg napok, ne adj isten hetek múlva).
Másik jellemző szitu, hogy normál ládához a helyszínen appon keresztül logolnak egy gyors Megtaláltam/Nem találtam/Jelszó nélküli logot, majd később (este otthon, vagy a szálláson, vagy több napos túra befejeztével hazulról kényelmesen) leírják az egyéb, adott esetben a későbbi keresők számára lényeges információkat is.

Tehát: a cache lekéréseknél jó lenne, ha lenne lehetőség egy mondjuk logsmodified nevű mezőben megkapni, hogy az adott láda logjaiban mikor történt az utolsó érdemi módosulás. Ha a törölt logokról nem marad elérhető infó (a törlés időpontja), az nem akkora nagy baj, de ha legalább az új log kreálásokat és a log módosításokat figyelembe tudná venni, az szuper lenne.
[előzmény: (2222) gusty, 2019.02.13 00:54:19]

gustyhozzászólásai | válasz erre | 2019.02.13 00:54:19 (2222)
Küldhetsz példát, hogy mire lenne szükség, mit tudsz csak sok hívással megoldani, s megnézem. Az lenne a jó, ha a régit teljesen ki tudnánk váltani.
Igazából több cél volt:
- az egyik a gyors válasz
- a strukturált naprakész adatletöltés
- a letöltendő felesleges adatmennyiség minimalizálása

Nyilván minél több kapcsolt táblával kell dolgozni, annál nagyobb a terhelés, a válaszidő
Mondjuk a közeli ládák listázásakor felesleges lehúzni a sok leírást, logot, ezt elég a kiválasztott láda esetén megtenni, és lehet, hogy a képek se érdekelnek mindenkit.
[előzmény: (2221) bigmick, 2019.02.12 23:28:16]

bigmickhozzászólásai | válasz erre | 2019.02.12 23:28:16 (2221)
Nagyon remélem, hogy nem.
Jó pár dolgot meg lehet benne csinálni egyetlen gyors hívással, ami az új API-ban csak sok-sok egyedi hívás egymás utáni végrehajtásával működik.

Ha jó tudom, az volt az elv az új API kapcsán, hogy lehetőleg csak egy-egy táblát érintő, egyszerű lekérdezésekkel ki lehessen szolgálni a kéréseket. Ami végül is sikerült, de szerintem ettől nem lett alacsonyabb a szerver terhelése.
Egy nagyobb, mondjuk 20 egységnyi terhelést okozó lekérdezés adatmennyiségét az új API-val úgy tudom csak összevadászni, hogy indítok 1 egységnyi lekérdezésből 100-at.
Sok éves (nem GC) mobil app fejlesztési gyakorlatomban is az volt a tapasztalat a cégnél, hogy a user összességében jobban járt a komplexebb, de sokkal kevesebb lekérdezéssel, mint a sok-sok egyszerűbbel.
A szerver össz terhelése is így volt alacsonyabb.
[előzmény: (2220) petrot81, 2019.02.12 21:06:34]

petrot81hozzászólásai | válasz erre | 2019.02.12 21:06:34 (2220)
A régi API nem fog megszűnni?
[előzmény: (2214) bigmick, 2019.02.09 18:40:43]

bigmickhozzászólásai | válasz erre | 2019.02.09 18:40:43 (2214)
Menjünk sorban.

hogy van tartózkodási hely bekapcsolva, bepipálva hogy a közelben lévőket,...10km-en belül, mégis letöltött...
Ha a Láda kód mező elejére automatikusan kitöltött GC karaktereket kitörölve használod a ládaletöltés funkciót, akkor egy programhiba folytán sajnos simán előfordulhatott ilyen szituáció :(
Erre nemrég hívta fel a figyelmemet Hev ugyanezen a fórumon. Az 1.6.2f verzióban ezt már javítottam, szerintem pár héten belül kikerül a Googla Play-re is.

A mozgókat pedig nem frissíti,
A mozgók frissítése sajnos jóval lassabb lett, mióta a legfrissebb API-t használom (főleg a logbeküldési tudása miatt).
Ha épp olyan helyen vagy, ahol lassú a mobilnet, akkor a mozgók frissítése akár fél-egy percig is eltarthat.
A program most készülő utódjában megpróbálom a régi és az új API-t kombinálva használni úgy, hogy az újnak a funkcionalitását is kihasználjam, lehetőleg a régi sebessége mellett...

A térképen viszont csak azokat a ládákat látom, amit még nem találtam meg
Ha a ládalista menüben a Megtaláltakat mutat/elrejt funkcióval elrejted a megtalált ládákat, és utána választod a Térképre funkciót, akkor a térképen sem fognak megjelenni a megtalált ládák.
[előzmény: (2212) stmester, 2019.02.09 09:42:36]

stmesterhozzászólásai | válasz erre | 2019.02.09 09:42:36 (2212)
Sziasztok nekem az a gondom frissítés után 1.6.1x-re, hogy van tartózkodási hely bekapcsolva, bepipálva hogy a közelben lévőket, csak a kereshetőeket, csak a még meg nem találtakat 10km-en belül, mégis letöltött 2049-et és azt összest is, amit már régen megtaláltam. A mozgókat pedig nem frissíti, netem van, mielőtt azt mondanátok. A térképen viszont csak azokat a ládákat látom, amit még nem találtam meg. Mit nem kapcsoltam ki vagy be androidos telefonon?


Bejelentkezés név:  jelszó:   tárolás [regisztráció]

Felhasználónevedet és jelszavadat a geocaching.hu oldalon is használhatod!

[ kezdőlap ] [ térkép ] [ + felmérések ~ ] [ + útvonalak ~ ] [ + poi ~ ] [ belépés ] [ faq ] [fórum] [email]

A weboldal működése és tartalma folyamatos fejlesztés alatt áll, köszönettel vesszük az észrevételeket a fejlesztési ötletek oldalon.
A turistautak.hu-ra feltöltött track-eket és a letölthető térképeket, azaz térképi adatbázist az ODbL licencnek megfelelően bárki használhatja.
Minden egyéb anyag előzetes írásbeli engedély nélkül csak magáncélra használható fel. jogi tudnivalók