AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung GUID nicht unique unter iOS / Android
Thema durchsuchen
Ansicht
Themen-Optionen

GUID nicht unique unter iOS / Android

Ein Thema von AndyDF · begonnen am 17. Mär 2016 · letzter Beitrag vom 20. Mär 2016
Antwort Antwort
Seite 2 von 2     12   
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#11

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 10:59
Bei mir ändert sich nur der erste Block der Guid, die folgenden 4 Blöcke sind immer identisch.

685A3F45-F8EC-E511-8447-C538D3A710A6
DAFA4045-F8EC-E511-8447-C538D3A710A6
Philip
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#12

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 11:02
Vielleicht erzeugt Delphi einfach nur zu schnellen Code

Du kannst ja mal versuchen, ein Sleep(1) zwischen die Generierung zu setzen. Bei 100 GUIDs hast du dann eine Verzögerung von 100 ms. Das ist zwar nicht schön, aber besser als kollidierende GUIDs.
Der RFC behandelt den Fall "zu schneller" Aufrufe innerhalb eines System Time Intervals mit einer "Muss"-Anforderung:

Zitat:
If a system overruns the generator by requesting too many UUIDs
within a single system time interval, the UUID service MUST either
return an error, or stall the UUID generator until the system clock
catches up.
Entweder der Generator ist nicht RFC-compliant (das ist eher unwahrscheinlich) oder der Fehler liegt woanders.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 15:16
Das macht man aber auch nur, wenn man weiss, dass dort ein Problem bestehen kann. Und wer weiss das (außer uns paar hier) jetzt?
Das wäre ein gutes Beispiel, wo ein Kommentar im Quellcode sinnvoll ist, damit der nächster Programmierer weiß, warum man das Sleep eingebaut hast.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 15:25
Ich hab mir hierzu halt so etwas gebastelt:

Delphi-Quellcode:
class function TSysUtils.CreateGuidList(const ACount: Integer): IWGList<TGUID>;
{$IF DEFINED(MSWINDOWS)}
var
  i: Integer;
{$ENDIF}
begin
  Result := TWGList<TGUID>.Create;

{$IF DEFINED(iOS) or DEFINED(ANDROID)}
  while Result.Count < ACount do
  begin
    Sleep(5);
    Result.AddIfNotExists(TGUID.NewGuid);
  end;
{$ELSE}
  for i := 0 to ACount-1 do
    Result.Add(TGUID.NewGuid);
{$ENDIF}
end;
Muss jetzt nur jedes mal, wenn ich mehr als eine GUID benötigte daran denken, über die Funktion mir die GUID´s zu holen...

Ich gehe natürlich davon aus, dass irgendwann schon eine GUID kommt die noch nicht generiert wurde. Sonst macht mir die while-Schleife irgendwann ein Problem.
Andreas Blenk
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#15

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 15:57
und was machst Du senn das Programm neu gestartet wird? Alle guid der Datenbank abfragen?
Philip
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 16:07
und was machst Du senn das Programm neu gestartet wird? Alle guid der Datenbank abfragen?
Durch Tests bin ich darauf gekommen, dass es wohl an der Zeit liegt. Und Kollisionen nur entstehen, wenn sehr kurz hintereinander GUID generiert werden.
Ich hoffe einfach mal, dass 2h nach der letzten GUID nicht wieder die gleiche GUID kommt. Wenn dass der Fall sein sollte, kann ich meine App ohnehin direkt wieder löschen.
Andreas Blenk
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#17

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 18:03
Und was ist mit Multithreading
Die obige implementierung gibt in 2 Threads mitunter identische/überlappende listen raus. Vllt was, was man per CriticalSection locken sollte?(Nicht unbedingt für deinen UseCase aber generell)
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#18

AW: GUID nicht unique unter iOS / Android

  Alt 18. Mär 2016, 20:31
Ganz blöd nur wenn man mehrere User an einer DB hängen hat. Und PKs Guids sind. Noch blöder wirds wenn man für die App Geld verlangt. Am blödsten wirds dann wenn die App auch noch genutzt wird....

Habe jetzt die offline Lauffähigkeit deaktiviert und meinem Datasnap-Server (windows &#128521 ne Funktion getGuid spendiert....
Philip
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: GUID nicht unique unter iOS / Android

  Alt 19. Mär 2016, 09:00
Und was ist mit Multithreading
Die obige implementierung gibt in 2 Threads mitunter identische/überlappende listen raus. Vllt was, was man per CriticalSection locken sollte?(Nicht unbedingt für deinen UseCase aber generell)
Ja. Blöd.
Auch die Tatsache, dass mehrere Benutzer gleichzeitig meine App verwenden und dann Daten in eine zentrale Datenbank synchronisieren ist nicht gerade angenehm.

Edit: Glaube mehrere Geräte ist doch kein Problem, da der restliche Teil der GUID (die nicht-Zeit) ja auf Basis der Mac-Adresse generiert wird.

Will eigentlich nicht die GUID vom Server generieren müssen. Diese Aufrufe würde ich mir gerne sparen.
Andreas Blenk

Geändert von AndyDF (19. Mär 2016 um 09:08 Uhr)
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#20

AW: GUID nicht unique unter iOS / Android

  Alt 20. Mär 2016, 13:36
Indirekt kann man doch durch den Bug Rückschlüsse auf das Gerät ziehen. Vorallem weiss ich jetzt welche User sich Geräte teilen oder mehrere Geräte haben... Ist das Datenschutzmäsdig erlaubt? Egal ob man das auswertet oder nicht.
Philip
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz