Geocaching & GPS location based games

Thema anzeigen - Online-Tool zum Verwalten von gelösten Mysteries


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 82 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6 ... 9  Nächste


Autor Nachricht
BeitragVerfasst: Mo 24. Jan 2011, 17:56 
Offline
Geowizard

Registriert: Do 10. Jun 2010, 00:32
Beiträge: 1121
Wohnort: 45133 Essen
Ok, also doch mit "richtiger" Nutzerverwaltung und DB. Das Gute daran: den Code, um GPX-Dateien komplett mit allen Attributen, etc.pp., in eine SQL-DB zu füttern, hab ich eh schon. ;-) Für den Anfang würde ich ohnehin erstmal sqlite nehmen, wenn man später was größeres brauchen sollte, ist das ja überhaupt kein Problem.

Und: das, was ich zur Verfügung stelle, wird auf keinen Fall einfach so öffentlich zugängliche Koordinaten bieten. Die sieht nur der jeweilige Nutzer (und ich natürlich :p ).

_________________
Bild


Nach oben
   
 
BeitragVerfasst: Mo 24. Jan 2011, 18:12 
Offline
Geowizard
Benutzeravatar

Registriert: So 9. Sep 2007, 11:10
Beiträge: 1848
BriToGi hat geschrieben:
Sqlite wäre eine alternative, oder halt "selbst" irgendwie als textdatei, datenbank ist ja auch nix anderes :-)

wie gefällt dir die idee eines sql dumps?

Code:
CREATE tabellexy (
feldx ...,
feldy ...,
usw...
)

INSERT INTO tabellexy (feldx, feldy, ...) VALUES ("text", 47.12345, ...);
INSERT INTO tabellexy (feldx, feldy, ...) VALUES ("text", 47.12345, ...);
usw...


so kann man einfach die tabellen in seine datenbank die man verwendet laden und dann mittels query inserts und/oder joins das so hinbiegen wie man es gerne hätte?

andererseits könnte man das ergebniss einfach nur durch json_encode jagen und speichern, raus kriegt man es dann wieder mit json_decode. vorteil, json ist sehr schlank und einfach zu handhaben. sogar ein flag kennt es so das man statt ein objekt ein array kriegt wenn man denn lieber arrays hätte.

csv wäre auch eine möglichkeit mit allen bekannten vor und nachteilen z.B. das es probleme machen könnte bei mehrzeiligen feldern.

xml wäre mit SimpleXML auch kein grosser act um es zu schreiben und lesen, auch wieder mit den bekannten vor und nachteilen.

ich persönlich würde warscheinlich zu json greifen, da man das ganz einfach umsetzen kann:
dummycode:
Code:
$wpts = array();
while($wpt = fetch_array()) {
   array_push($wpts, $wpt);
}
json_encode($wpts);

_________________
Use http://coord.ch/ the Multi Waypoint Redirector
Bild Bild


Nach oben
   
 
BeitragVerfasst: Mo 24. Jan 2011, 18:29 
Offline
Geowizard

Registriert: Do 10. Jun 2010, 00:32
Beiträge: 1121
Wohnort: 45133 Essen
DunkleAura hat geschrieben:
ich persönlich würde warscheinlich zu json greifen, da man das ganz einfach umsetzen kann:

Naja, das ist ja das selbe, wie ich mit "pickle" vorgeschlagen hatte, eben einfach die Objekte serialisieren. Aber für eine persistente Datenbank mit vielen Tausen Einträgen und Nutzerverwaltung ist das eher nix (und außerdem schnarchlangsam).

Der Vorschlag, Datenbanken in CSV-Dateien zu speichern, ist dann schon eher von der komischen Sorte... :roll:

Aber mach mal, wir können das ja beide umsetzen. Für mich ist das eher Spielerei, und ich hab das auch nur angeboten, weil ich aus anderen Gründen eh schon tief in der Materie stecke. Du ja auch, jedenfalls hat meine Recherche vor ein paar Monaten darüber, wie man am besten GPX-Dateien mit GS-Extensions in Python parst, außer ein paar Anfragen von Dir in div. Foren und Python-Gruppen, nichts zutage gefördert. lxml ist ja ganz toll, aber damit scheint man an die Extensions nicht richtig heranzukommen. Hast Du inzwischen was besseres gefunden als xml.dom.minidom?

_________________
Bild


Nach oben
   
 
BeitragVerfasst: Mo 24. Jan 2011, 22:43 
Offline
Geowizard
Benutzeravatar

Registriert: So 9. Sep 2007, 11:10
Beiträge: 1848
Rupa hat geschrieben:
Hast Du inzwischen was besseres gefunden als xml.dom.minidom?

hmm nein, hab python für mich vorerst aufgegeben und mache es mit dem werkzeug das ich kenne, PHP.
damit erreiche ich mein gewünschtes ziel. sogar die groundspeak namespaces krieg ich sauber raus ohne string ersetzungen.

Rupa hat geschrieben:
Naja, das ist ja das selbe, wie ich mit "pickle" vorgeschlagen hatte, eben einfach die Objekte serialisieren. Aber für eine persistente Datenbank mit vielen Tausen Einträgen und Nutzerverwaltung ist das eher nix (und außerdem schnarchlangsam).

ja prinzipiell ja. nur kann man "pickle" auch in anderen sprachen als python deserialisieren?
was sowohl json, xml als auch notfalls csv erfüllen würde.

oder eben doch standard sql, portabel und universell einsetzbar.

_________________
Use http://coord.ch/ the Multi Waypoint Redirector
Bild Bild


Nach oben
   
 
BeitragVerfasst: Di 25. Jan 2011, 01:44 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 23. Aug 2010, 15:46
Beiträge: 1680
DunkleAura hat geschrieben:

Code:
CREATE tabellexy (
feldx ...,
feldy ...,
usw...
)

INSERT INTO tabellexy (feldx, feldy, ...) VALUES ("text", 47.12345, ...);
INSERT INTO tabellexy (feldx, feldy, ...) VALUES ("text", 47.12345, ...);
usw...


so kann man einfach die tabellen in seine datenbank die man verwendet laden und dann mittels query inserts und/oder joins das so hinbiegen wie man es gerne hätte?


Exakt so hätte ich das auch gelöst... Du hast die Tabelle aber erstmalig "manuell" erstellt und dann mit Werten gefüttert? Oder erstellst Du die Tabelle dynamisch und guckst später wie das ganze sortiert ist und pickst die Felder raus die Du brauchst?

DunkleAura hat geschrieben:
...mache es mit dem werkzeug das ich kenne, PHP.
damit erreiche ich mein gewünschtes ziel. sogar die groundspeak namespaces krieg ich sauber raus ohne string ersetzungen.

Code:
$wpts = array();
while($wpt = fetch_array()) {
   array_push($wpts, $wpt);
}
json_encode($wpts);



Du meinst mysql_fetch_array() ?

Ich würde es etwas anders machen - was aber wohl eher geschmackssache ist - und weil ich es so gelernt habe und mich heimischer fühle ;-)

Code:
$DBrows=mysql_num_rows($dbresult);

for($i=0,$dbobject=mysql_fetch_object($dbresult);$i<$DBrows;$i++,$dbobject=mysql_fetch_object($dbresult))
        {
        $_gpx[$dbobject->gc_code]['cache_name'] = $dbobject->cache_name;
        $_gpx[$dbobject->gc_code]['coord_north'] = $dbobject->coord_north;
        ...
        }


Ist ja aber das Gleiche in grün, nur so habe ich ein sauber strukturiertes Array und weiß im Kopf noch halbwegs was was ist... Aber wenn man da ist, ist man ja auch fast schon am Ziel.

Ein Codeschnipsel der aus der GPX-Datei erstmal ein sauber beschriftetes Array macht, um es überhaupt in die DB zu quetschen wäre echt das Größte!

:gott: :gott: :D


Rupa hat geschrieben:
... den Code, um GPX-Dateien komplett mit allen Attributen, etc.pp., in eine SQL-DB zu füttern, hab ich eh schon....


Nur in der falschen Sprache für mich :-(


Nach oben
   
 
BeitragVerfasst: Di 25. Jan 2011, 17:46 
Offline
Geowizard
Benutzeravatar

Registriert: So 9. Sep 2007, 11:10
Beiträge: 1848
BriToGi hat geschrieben:
Exakt so hätte ich das auch gelöst... Du hast die Tabelle aber erstmalig "manuell" erstellt und dann mit Werten gefüttert? Oder erstellst Du die Tabelle dynamisch und guckst später wie das ganze sortiert ist und pickst die Felder raus die Du brauchst?

ich würde ein create table mit ausgeben tut nicht weh, und es existiert eine brauchbare tabelle.
floats sind foats und nicht irgendwelche varchar felder.

die daten würde ich dann je nach anwendung per INSERT INTO ... SELECT ... in die gewünschte passform bringen.
das war nur dummycode der zufälligerweise ähnlichkeit mit php hatte.
BriToGi hat geschrieben:
Du meinst mysql_fetch_array() ?

Ich würde es etwas anders machen - was aber wohl eher geschmackssache ist - und weil ich es so gelernt habe und mich heimischer fühle ;-)

Code:
$DBrows=mysql_num_rows($dbresult);

for($i=0,$dbobject=mysql_fetch_object($dbresult);$i<$DBrows;$i++,$dbobject=mysql_fetch_object($dbresult))
        {
        $_gpx[$dbobject->gc_code]['cache_name'] = $dbobject->cache_name;
        $_gpx[$dbobject->gc_code]['coord_north'] = $dbobject->coord_north;
        ...
        }
ps: mysqli_result::fetch_object kann man auch in eine while schlife setzen, dann würdest du den unübersichtlichen, hässlichen und fehleranfälligen spaghetti code in der for schleife nicht brauchen.

ich dachte da eher an so etwas, da ich mysql nicht mehr verwende sondern nu noch mysqli. warum schau hier ganz unten warum.
code schnipsel ist ungetestet:
Code:
$result = $mysqli->query($sql);
while ($wpt = $result->fetch_array(MYSQLI_ASSOC)) {
   // Plan A:
   array_push($wpts, $wpt);
   // Plan B:
   // $wpts[$wpt['gccode']] = $wpt;
}

den umweg über ein mysqli_result::fetch_object würde ich mir da verkneifen auch wenn ich dies prinzipiell vorziehe.
aber warum sollte ich statt das ergeniss direkt passend anzufordern dies noch manuell passend konvertieren?
okay, ich gehe davon aus das die spalten in der tabelle auch brauchbare namen haben, wie ich es prinzipiell vorziehe.

BriToGi hat geschrieben:
Ein Codeschnipsel der aus der GPX-Datei erstmal ein sauber beschriftetes Array macht, um es überhaupt in die DB zu quetschen wäre echt das Größte!

ich hab sowas da, nur bei den attributen war ich bisher zu faul die noch mit rein zu nehmen.
ich ziehe mir nur die daten raus die ich brauche.
evtl. geb ich irgendwann wenn ich den code bereinigt habe auch raus. (zu viel inline doku und experimente ;) )

_________________
Use http://coord.ch/ the Multi Waypoint Redirector
Bild Bild


Nach oben
   
 
BeitragVerfasst: Do 27. Jan 2011, 12:41 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 23. Aug 2010, 15:46
Beiträge: 1680
DunkleAura hat geschrieben:
...wenn ich den code bereinigt habe auch raus. (zu viel inline doku und experimente ;) )


Tja, 60% des Codes beginnt mit

//test geht
...
// später ausprobieren
..

:D

Kommt mir bekannt vor...

Aber mal noch ne ganz andere Idee die mir beim Grübeln kam:

-Es wird vom User lediglich eine kleine Tabelle (in welcher Form auch immer) angelegt mit folgenden Inhalten:

-GC-Code
-Koordinaten (Final)
-z.B. Kommentar ("Checker ok", "Owner besätigt", "definitiv richtig", "vermutlich richtig", "Laut Checker: unten suchen, magnetisch"...

Dann:

Bookmarkliste mit gelösten Mysteries anlegen - also "Boardmittel nutzen" :roll: und als GPX exportieren

-simplexml_load_file
-Tabelle auslesen und Koordinaten im temporären "Array" ersetzen wenn sie im GPX waren (am GC-Code erkennen)
-Typ der betroffenen Caches als "APE-Cache" definieren (weil man hierfür auf dem Garmin z.B. das Icon "Gelöster Mysterie" hinterlegt hat und diese gleich sofort erkennt, siehe Beispiel unten links das Fragezeichen)
Bild
-Geändertes XML wieder wegschreiben als GPX (wobei ich hier auf die Schnelle keinen Befehl gefunden habe wie etwa simplexml_write_file)
-Den Kommmentar kann man ja als letztes Log mit reinquetschen oder so...

Das hätte den großen Vorteil:

-dass man die ganzen Daten nicht erst alle speichern muss
-dass man immer mit den neusten Daten arbeitet (ein kürzlich disabelter Cache fällt auf weil er in der letzten PQ mit als solcher gekennzeichnet ist, in der DB wäre die Info veraltet...
-dass man sich unter Umständen sogar seine Bookmarkliste sparen kann und pauschal alle seine GPX da durch jagen kann - denn alles was man gelöst hat (und in die Tabelle eingepflegt hat) ja automatisch ersetzt wird.


Nach oben
   
 
BeitragVerfasst: Sa 29. Jan 2011, 01:41 
Offline
Geowizard
Benutzeravatar

Registriert: Di 10. Feb 2009, 11:02
Beiträge: 1344
Mal ehrlich. Die meisten Koords meiner gelösten Mysteries habe ich auf einen Zettel geschrieben und habe diese irgendwann ins GPS gehackt oder vorort eingetippt falls nötig. Alternativ ne gpx-Datei in Mapsource, wo alle aktuellen Mysteries drinne sind.

Also wozu brauche ich da eure diskutierte online-Anwendung?


Nach oben
   
 
BeitragVerfasst: Sa 29. Jan 2011, 03:20 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 23. Aug 2010, 15:46
Beiträge: 1680
Wenn Du immer das gleiche Gerät (=Rechner/PC) benutzt und hauptsächlich zu Hause suchen gehst, vermutlich gar nicht :-)

Wenn Du hingegen wie am Anfang des Themas beschrieben ist, oft unterwegs bist und ständig einen anderen Rechner verwendest, und hauptsächlich KEIN Windows-Betriebssystem, sieht das anders aus :-)

Und wenn man Mysteries in einer Großstadt löst, sind diese manchmal 30km oder weiter entfernt, wenn wir irgendwo unterwegs sind - erstmal gucken ob man zufällig was einsammeln kann, manchmal liegt gleich um die Ecke was, ohne Planung, ganz spontan mal jetzt sofort ohne Vorbereitung gucken :-)


Nach oben
   
 
BeitragVerfasst: Di 15. Feb 2011, 23:52 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 23. Aug 2010, 15:46
Beiträge: 1680
Aus aktuellem Anlass hier mal mein Stand:

viewtopic.php?p=838537#p838537


Nach oben
   
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 82 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6 ... 9  Nächste


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Impressum