Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

06.05.2016, 12:49

Um das wirst du wohl leider nicht herumkommen... ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

22

06.05.2016, 13:15

Und wie wär's für das Block-Hashing am Ende der Datei anzufangen? Der Meta-Krempel liegt dann vorn. Die meisten inhaltlichen Unterschiede dürfte es doch ohnehin am Ende der Datei geben, oder? Natürlich ist es noch immer schwer zu sagen, ob zwei PDFs denselben Inhalt an sich haben, aber es ließe sich zumindest schon schnell bestimmen, dass sie auf keinen Fall denselben Inhalt enthalten.
Wieso kann es überhaupt auftreten, dass zwei PDFs mit verschiedenen Meta-Informationen dieselben Informationen enthalten? Kann das im vorliegenden Usecase tatsächlich passieren?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

23

06.05.2016, 13:27

Und wie wär's für das Block-Hashing am Ende der Datei anzufangen? Der Meta-Krempel liegt dann vorn. Die meisten inhaltlichen Unterschiede dürfte es doch ohnehin am Ende der Datei geben, oder? Natürlich ist es noch immer schwer zu sagen, ob zwei PDFs denselben Inhalt an sich haben, aber es ließe sich zumindest schon schnell bestimmen, dass sie auf keinen Fall denselben Inhalt enthalten.

Leider liegen diese Meta-Informationen (IMO willkürlich) mitten in der Datei, und nicht am Anfang/Ende.

Wieso kann es überhaupt auftreten, dass zwei PDFs mit verschiedenen Meta-Informationen dieselben Informationen enthalten? Kann das im vorliegenden Usecase tatsächlich passieren?

Darüber habe ich mich auch stark gewundert... Laut unserer Abteilung ist das absolut legitim, aber mich wundert es doch, was für ein Blödsinn das ist. Manchmal ist es nämlich 100% dieselbe Datei, manchmal ist nur der Content identisch, aber das Erstellungsdatum/ID nicht. Das liegt laut vorliegender Erklärung daran, dass dies ein Geschäftsvorgang mit unterschiedlichen Anhängen ist, die aber blödsinnigerweise dieselben sein können. Warum man mehrfach den gleichen Content als Anhang rein drückt, die Dateinamen und Vorgangsnummern aber völlig unterschiedlich sind, will mir nicht in den Kopf. Es handelt sich um die Bipro-Norm 430 afaik. Der Bipro "Standard" ist wirklich oft sehr sehr wage und jede Gesellschaft macht eig. sowieso was sie will. Dieses Problem haben wir nur bei einer von 10 Gesellschaften, aber anscheinend ist es legitim. Jedenfalls wurde mir das so gesagt und damit war die Sache gegessen und eine Lösung soll her...
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

24

06.05.2016, 16:23

Hmmm das tortoiseGIT DIFF gibt einem schon sehr differenzierte Informationen. Schonmal mit git diff --text versucht?
Ansonsten dürfte das Hashen unter Auslassung der Metadateien nat. deutlich effizienter sein. Immerhin sind das dann nur n Vorgänge und nicht n^2/2.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

25

06.05.2016, 17:09

Ah, --text war mir unbekannt. Damit geht es natürlich:

Quellcode

1
2
-/ID [<E01C1854D63A266A8C4226FFC177968B> <E01C1854D63A266A8C4226FFC177968B>]
+/ID [<2C5D8FEA473EF6F1A296840CA9226DCE> <2C5D8FEA473EF6F1A296840CA9226DCE>]


Danke, damit hab' ich nun zwei gute Möglichkeiten. :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

26

06.05.2016, 17:40

Na wenn sich nur der ID tag unterscheidet, dann dürfte das Rausfiltern beim Hashen ja nicht so kompliziert sein, oder unterscheiden sich "gleiche" Dateien an mehr Stellen/ist das von dir gepostete Beispiel der komplette Diff oder nur ein Teilauszug?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

27

06.05.2016, 17:44

War nur ein Teilauszug. Hier ist der komplette:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git "a/.\\a.pdf" "b/.\\b.pdf"
index b78621e..0178cf9 100644
--- "a/.\\a.pdf"
+++ "b/.\\b.pdf"
@@ -20477,7 +20477,7 @@ endobj
 28 0 obj
 <<
 /Creator (AFP2web SDK v4.0 [Built for Windows 2003/2008 32-bit on Sep  2 2010 at 17:18:34])
-/CreationDate (D:20160502122323Z)
+/CreationDate (D:20160502122324Z)
 /Producer (OXSEED C PDF Library V3.1)
 /Author (OXSEED AG)
 /Title (AFP2web SDK v4.0 [Built for Windows 2003/2008 32-bit on Sep  2 2010 at 17:18:34])
@@ -20521,7 +20521,7 @@ trailer
 /Size 29
 /Root 1 0 R
 /Info 28 0 R
-/ID [<E01C1854D63A266A8C4226FFC177968B> <E01C1854D63A266A8C4226FFC177968B>]
+/ID [<2C5D8FEA473EF6F1A296840CA9226DCE> <2C5D8FEA473EF6F1A296840CA9226DCE>]
 >>
 startxref
 920242


Da sich beide lediglich in /CreationDate und /ID unterscheiden, sind beide Dateien gleich. Fertig. :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

28

06.05.2016, 23:20

Die XMP Metadaten im PDF wie z.B. OriginalDocumentID oder DerivedFrom können dir nicht weiter helfen oder? (Geben natürlich keinen Aufschluss darüber ob die Dokumente gleichen Inhalt haben, aber ob sie das gleiche Dokument sind evtl. schon)
:love: := Go;

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

29

07.05.2016, 07:54

Mir sind da noch ein paar Dinge unklar, die aber wichtig wären. Musst du nur innerhalb der neuen Dateien nach Dopplungen suchen? Oder behaels t du alle Dateien und suchst auch in den alten danach? Ist es wichtig das die Stellen, die sich unterscheiden später noch abgespeichert sind? Oder kannst du die Stellen auch verwerfen und durch was Anderes ersetzen? Musst du später noch wissen, wieviel Dateien ankamen und was sich wo gedoppelt hat oder kann man das wegschmeissen? Je nachdem würde ich das so machen:

1. In jeder neu ankommenden Datei nach ID und CreationDate suchen und das durch einen festen Wert von dir ersetzen.
2. Hash erzeugen.
3. In einer Datenbank ablegen, dass die Datei x empfangen wurde wie sie im Original hiess und wo du ihre Kopie speicherst.
4. Beim Ablegen in der DB speicherst du auch Hash und Grösse.
5. Dabei siehst du direkt, ob Dateien mit gleichem Hash und Grösse in der DB sind, wenn du diese Daten als Index hast.
6. Jetzt kannst du die Dateien so vergleichen wie momentan.
7. Wird eine Doppelung festgestellt, brauchst du nur noch den Platz der Kopie anpassen und den Hash aus der DB löschen.

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

30

07.05.2016, 10:07

@TGGC
Doppelte Dateien kann es nur innerhalb eines neuen Abrufs geben. Also Dateien, die aus anderen Abrufen kommen sind nicht mehr zu vergleichen, nur die bis zu 100 neuen die pro Abruf ankommen.

@H5::
Sowas wie OriginalDocumentID oder DerivedFrom findet sich überhaupt nicht in den PDF's, die ich jetzt testweise verwende. o.O
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige