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).