GSAK Wrapper evaluatie

advertisement
De GSAK Wrapper van Globalcaching.eu
Om macro bouw in GSAK te voorkomen, en de moeilijke filters en menu handelingen onder GSAK te
beperken is Globalcaching begonnen een GSAK Wrapper tool te maken die selecties mogelijk maakt
op GSAK databases. Omdat een GSAK database gelijk is aan een GDAK database, zou de Wrapper ook
een "GDAK Wrapper" genoemd kunnen worden. GDAK wordt op Global gesupport, GSAK eigenlijk
niet. De aansturing is analoog aan wat we van GAPP gewend zijn, met de volgende algemene handige
aanvullingen:
•
•
•
•
•
•
Meerdere sequences (grafische acties analoog aan de Action Builder in GAPP) kunnen in een
gezamelijke flow samengevat worden.
De Wrapper kan vanuit een opstart macro onder GSAK worden opgestart. Automatisch als
dat moet.
De Wrapper kan voor zowel flow als sequences een opstart macro installeren in GSAK.
Beloofd is een bredere en betere/snellere en vooral nieuwere functionaliteit te bieden dan
GSAK die momenteel biedt. Dat kan theoretisch niet omdat GSAK ook laag niveau sqllite
operaties op databases toelaat. Dit is het meest detaillistische en laagste niveau waarop ook
het meest bereikt kan worden. De Wrapper maakt hier ook gebruik van (ik denk dan ook aan
de GridTemp constructie in SQLLite). Geen duidelijke plus voor als nog dus. De macro taal
van GSAK is een functionele taal. De taalconstructies nabootsen in een ander pakket staat
gelijk aan nabouwen van GSAK. De Wrapper werkt meer vanuit grafisch gerepresenteerde
flows met simpele unaire en sequentiele acties, in plaats van moeilijke interacties met
bestaande GSAK menu's en filters. Een filter in GSAK Macro opbouwen vraagt nl nogal wat.
Dit is een heel ander en eigenlijk totaal onvergelijkbaar mechanisme om je in uit te drukken
en is per definitie onvergelijkbaar.
De live-api onder GSAK heeft een beschermde en gecodeerde api token (Global niet - is
onbeschermd), die derhalve niet vanuit GSAK macro's of de Wrapper direct op te vragen is
en zo te gebruiken is. In GSAK vindt dit plaats doordat GSAK de token "onzichtbaar" toevoegt
in lagere programma lagen in de GSAK applicatie stack (*). Toch bleek het mij mogelijk om
een live-api aanroep en response afhandeling vanuit een ander pakket onder bewind van
GSAK uit te voeren (commandline, browser, bat file, Java). Het moet dus ook mogelijk zijn
deze functionaliteit in de Wrapper gesynchroniseerd en inline in te bouwen ! Ik wacht dus op
functionele inbouw.
Overigens snap ik de "Not Done" opstelling van Global niet hun GAPP token niet aan GSAK of
de Wrapper ter beschikking te stellen, omdat deze token persoon/account gebonden is en
niet primair leverancier. De token eigenaar is nl niet Global (niet de eigenaar) maar de
Geocacher zelf (de eigenaar). Distribueren van een token buiten de scope van de eigenaar is
uiteraard NOT DONE.
(*) Deze architectuur aanpak is bewonderingswaardig en juist.
Export en import van flows naar een flowbestand is mogelijk zodat je flows kunt delen met
andere Geocachers. Erg handig lijkt me.
Al met al een handige tool, voor diegene die niet behept is met een programmeerstijl die
hanteerbaar is en ook nog tot de juiste resultaten leidt. Het project is interessant om te volgen, wat
ik dan ook van dag tot dag doe. Overigens, ondanks de conclusies en bevindingen: hulde voor de
formidabele inspanning die in korte tijd verricht is.
Nu heb ik zelf momenteel meer dan 135 functionele GSAK macro's operationeel, veel
geëxperimenteerd en zelf gebouwd, waarvan een groot aantal met bijzondere complexiteit en
bijzondere functionaliteit (zoals veld-koppelingen tussen databases, eigen databases, eigen extra
(tijdelijke) tabellen, eigen views, specialistischer sqllite gebruik ter versnelling, bijzondere
ondersteuning vanuit GSAK menu's en oproepbare topo kaarten bijvoorbeeld). Zo kon ik de exacte en
private huisadressen van cache loggers eenvoudig op een kaart/topo weergeven. Ik heb daarmee na
10 jaar GSAK programmeren best wel een aardig en goed onderbouwd idee hoe complex GSAK is,
hoe GSAK intern is opgebouwd en wat ik nu mis in de "GSAK Wrapper". Ook kan ik makkelijk
evalueren of de "GSAK Wrapper" meer en betere functionaliteit biedt zoals nu wel erg gemakkelijk
en eenzijdig geroepen wordt.
Er wordt nog voortdurend aan de Wrapper bijgebouwd. Op het gevaar dat dit document achterloopt
hierbij de volgende constateringen (versie 0.2.0.0, nog niet formeel gepubliceerd (GitHub repository),
dan wel versie 0.2.0.0 release (Web Download), status datum 6-11-2015, 16:00 uur):
•
•
•
•
•
•
Er is support voor Custom velden (zowel String en Tekst en Datum). Deze kunnen niet
separaat in een andere database benaderd worden. Noot: het datum formaat in SQL is zo
wie zo anders dan in GSAK. De veldselectie boxjes is niet gekoppeld aan de database zelf
(foutloos opvraagbaar via een selectie menu), zodat makkelijk een vervelende mismatch kan
ontstaan.
Er kunnen geen macro's onder GSAK worden aangeroepen, nog kunnen macro's onder GSAK
resultaten aan de Wrapper door of teruggeven. Dus als consequentie ook geen support voor
het samenstellen van bijvoorbeeld routes (GSAK macro).
Geen support voor genereren van HTML tabellen en HTML pagina's.
Er is geen support voor (inline) GS live-api aanroepen.
Er is geen support voor polygonen selecties (bv milieuzones in het ruhrgebied) en andere
grillige selectie methoden.
GPX export is extreem traag onder Windows 10. En met extreem bedoel ik extreem, 20
seconden per cache wp laat je een nacht lang wachten op resultaat. De beloofde
snelheidswinst zie ik dan ook even niet terug.
Ik constateer hier dezelfde problemen als GAPP heeft: het export format bevat een
welliswaar formeel geldige XML header die GSAK ten onrechte niet lust (die test nl ook op
wie de GPX heeft aangemaakt: GS, de rest wordt vervolgens vernacheld). Discussies in het
verleden met Global en GSAK leerde me dat beide partijen niet tot elkaar komen. Betekent
concreet voor jou: GSAK leest geen child waypoints in ook al zitten deze in de GPX. Ook
ontbreken de Custom velden. Die stopt GAPP op een andere plek (1.01 formaat biedt
hiervoor een container hiervoor zonder een verdere eenduidige format specificatie), maar je
zou bij gebrek aan echte standaardisering door GS toch beter het veel gebruikte GSAK
formaat kunnen aanhouden als je iets wilt bereiken in deze wereld (zeker als je hier
vervolgens ook nog een Wrapper voor maakt ???). Deze constatering beperkt het gebruik tot
doorsluizen naar GAPP (die de wp's wel leest) en omdat de GPS via de juiste GSAK macro's
wel voorzien kan worden van Custom veld info beperkt de aanpak verder gebruik. GGZ
formaat heb ik nog niet inhoudelijk bekeken, zal een mindere variant hiervan zijn. GSAK leest
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
GGZ nl niet. Is ook geen uitwisselingsformaat, maar iets om je GPS sneller te laten werken bij
grote aantallen caches in de interne GPS database.
De Wrapper installer deinstalleert niet, en onder Windows 10 update de installer (uit de
GitHub build genomen) de executable ook niet vanuit het installatiepakket. Dit was in
eerdere informele releases wel goed (de uitgebrachte 0.1.0.0 beta bv), maar gaat zo tot
vervelende verwarring leiden. Er volgt nl geen installatie foutmelding.
Geen support voor URL aanroepen en interfaces met andere systemen. Geen import vanuit
project-gc dus. Ook de Global services zitten er nog niet in, maar dat snap ik wel vanuit een
bepaald perspectief. Aan de andere kant: Global heeft er goed inkomen aan.
Wiki is nog leeg, documentatie ontbreekt op een filmpje na. Eerlijk: meeste is wel intuitief
begrijpbaar.
Kan velden van een database niet transporteren (mergen) naar en met een andere database.
Deze functionaliteit heb ik veelvuldig toegepast (of moeten toepassen als oplossing om
caches te verrijken met speciale gegevens) !
Geen support voor selectie polygonen/Arc's.
Kan de Macro vlag (interne variant op de User vlag) niet uitzetten, wel op checken. Nuttig is
dit dan ook niet. Je zou verwachten dat de Wrapper de vlag ook kan zetten (t.b.v.
toekomstige GSAK macro's).
Import vanuit andere formaten is niet mogelijk.
Export naar andere formaten anders dan GPX en GGZ is niet mogelijk.
Geen support voor extra tabellen. Hier maak ik veelvuldig gebruik van. Laatste geldt ook voor
een aantal van de beter macro's in het GSAK forum.
Conflicten mogelijk met GSAK transactiemanagement, welke niet op database niveau
geïmplementeerd is (de transactie scope) maar op applicatie niveau gedemarqueerd wordt.
Kan leiden in ergste geval tot onbedoelde herstart van GSAK, en vervolgens weer conflicten
opleveren met de Wrapper als de opstart van de Wrapper automatisch is vanuit GSAK.
Niet duidelijk of de integriteit in een GSAK database (op basis van interne Guids)
gewaarborgd blijft. Risico zit erin dat je database naar de knoppen gaat, child wp's of logs
verliest. In het ergste geval gaat GSAK automatisch een functionele stepdown
herstelprocedure aan (de panik herstart), wat uiteindelijk leidt tot compleet verlies aan alles
wat je hebt (in het bijzonder in het geval van geavanceerde highlights in GSAK). Maak dus
veel backups. Ik heb het helaas al bij de hand gehad.
Geen toegang tot de bijzondere databases in GSAK (en property bestanden) met instellingen,
filters, menu opties en allerlei andere handige zaken.
Geen interactie met interne en configureerbare highlight filters in GSAK (het minst goed
uitgewerkte en minst stabiele stuk functionaliteit in GSAK).
Geen support voor incidenteel wissen van de Uservlag in een andere database (alleen
eenmalig wissen is mogelijk).
De geselecteerde database in GSAK kan een andere zijn dan in de Wrapper, wat leidt tot
problemen. In ergste geval tot gelockte databases wat leidt tot automatische herstart van
GSAK als zowel GSAK en de Wrapper actief op dezelfde database draaien (incl integriteit
problemen).
Geen support voor wissen Ignore lijst.
Geen support voor uitlezen XML structuur uit interne GSAK api tabel.
•
Geen support voor maken tabellen en overzichten en excel exports uit database.
Samengevat:
Zowel aan de programmeermogelijkheden, het gebruik in advanced situaties en als interactie met
GSAK zie ik de nodige bezwaren kleven. Is ook logisch. Een pakket naast een pakket gaat niet werken
als beide ook nog intens en toekomstvast moeten samenwerken. Ik zie voor als nog geen nieuwe
functionaliteit die GSAK niet kent, laat staan waarvan ik roep: héé dat wil ik in GSAK nu ook eens
hebben. Wel is de tool handig voor de wat minder IT behepten en laat eenvoudiger selectie en
gebruik toe. Een doelgroep is er duidelijk. Parallel draaien van GSAK (ondanks dat de Wrapper
opstart vanuit GSAK) en de Wrapper is principieel niet aan te bevelen. Ook schrijven in de databases
is voorlopig niet aan te bevelen als je niet op vervelende en permanente database problemen wilt
stuiten, of runtime database lock problemen wilt forceren.
Mijn indruk: de Wrapper is vanuit een te beperkt inzicht in GSAK functionaliteit geschreven met
helaas alle con's van dien. Zou ik de Wrapper zelf gebruiken: zeker. Interessant project ook nog. Maar
dan buiten de rijke context van GSAK. Bv bij losse en afgezonderde GSAK/GDAK afslagen.
Addendum Versie 0.3.0.0 (7-11-2015, 15:00 uur)
Custom velden bleken verkeerd geïmplementeerd te zijn. Nu komt er wel een pulldown. De GSAK
type String, Integer, Float en Datum zijn in de Wrapper: Tekst, Nummer en Datum. Als je een
verkeerd type toepast, maalt de Wrapper er niet om. Er volgt geen foutmelding op een onzinnige
check als "theo is gek"<= 0.4.
Export GPX: getest op 4 caches met waypoints (1.0.2 wp's aangevinkt) en vervolgens laden in GAPP.
Slechts 1 cache komt binnen met 0 waypoints. Snelheid: memory issues lijken de oorzaak te zijn.
Het formaat 1.0.2 is soms niet selekteerbaar (of zichtbaar).
Download