Nodediff

Aus Fidopedia
Wechseln zu: Navigation, Suche

Nodediff

Die Nodediff ist eine Differenz Datei zur Nodelist, dem Telefonbuch aller FidoNet Teilnehmer.

In den frühen Jahren von FidoNet als der Begriff Internet noch nicht bekannt war, gab es noch Technik die mit geringster Bandbreite Daten über die Telefonleitung transportiert hat.

Also das FidoNet anwuchs, und in der wöchentlichen Nodelist mehr und mehr Systeme eingetragen wurden oder Änderungen an den vorhandenen Eintragungen durchgeführt werden mussten, hatte man sehr schnell das Problem, das ein grosser Teil des Telefonbuchs sich nicht veränderte, und der Anteil der Veränderungen immer weniger wurde im Gesamtverhältnis zur Gesamtgrösse des Telefonbuchs. Daher wurde ein Verfahren entwickelt, wie die Änderungen von einem zum anderen System bei geringstmöglicher Datenübertragungsmenge bewerkstelligt werden konnte.

  • Beispiel:
 Aufgabe: Füge 3 neue Nodezeilen hinzu
 Add(iere) 3 neue Zeilen mit nachfolgenden 3 Zeilen Inhalt
 Node 1 Daten
 Node 2 Daten
 Node 3 Daten

 Aufgabe: Lösche 2 nicht mehr gültige Einträge aus dem Telefonbuch
 D(elete)2 - Lösche 2 Zeilen

 Aufgabe: Kopiere die ersten 50 Zeilen ohne Änderungen
 C(opy)50

Für das Hinzufügen neuer Zeilen müssen die Zeilen komplett übertragen werden. Zum Löschen reicht aber der Befehl (D für Löschen, engl. Delete) und der Anzahl der zu löschenden Zeilen, im Beispiel 2 Zeilen sollen gelöscht werden, aus.

Sollte stattdessen die gesamte Datei übertragen werden, müssten 3 neue Zeilen + 50 kopierte Zeilen, das entspricht etwa ca. 53 * 80 Zeichen = ca. 4240 Zeichen bei der Übertragung der Gesamt Nodelist gegenüber der Befehlsfolge: "'A3' (2 Zeichen) + '3 * 80 Zeichen je Zeile = 240 Zeichen' + 'D2' (2 Zeichen) + 'C50' (3 Zeichen)" = ca. 247 Zeichen in einer Differenz Datei über eine Telefonleitung übertragen werden. Der Unterschied: statt 4240 Zeichen nur 247 Zeichen übertragen zu müssen hat bei einer sehr geringen Datenübertragungsleistung einen erheblichen Vorteil. Nun sind die Nodelisten nicht nur 4000 Zeichen lang, sondern zumeist wesentlich grösser. In 1996 war die Nodelist einmal 3,5 Mb gross. Im Vergleich dazu betrug die Länge einer Nodediff gerade mal 1% der Gesamtlänge der Nodelist. Also konnte in 1% der Zeit die gleiche Information über die Leitung geschickt werden, als wenn die gesamte Nodelist verschickt worden wäre.

Nun muss aber nach einer Übertragung auf der anderen Seite die neue Nodelist auch wieder zusammengebaut (kompiliert) werden. Hier kommt als Standard Programm das Programm EditNL zum Einsatz.

Mit Hilfe der "alten" Nodelist und der neuen Nodediff kann daraus die neue Nodelist erstellt werden indem das Programm EditNL die Befehle, die in der Nodediff enthalten sind gegenüber der alten Nodelist nacheinander abarbeitet. Füge Zeilen hinzu, lösche Zeilen, kopiere Zeilen. Das Endergebnis ist ein Duplikat des Telefonbuchs, das auch beim anderen System vorliegt.

Damit das Programm EditNL unterschiedliche Nodediff's auseinanderhalten kann und nicht fälschlicherweise eine alte Nodediff zur Verarbeitung heranzieht, oder eine Verarbeitung ein zweites mal laufen lässt, was sicherlich zu einem interessanten Ergebnis führen würde, enthält die Nodelist sowie die Nodediff am Anfang eine sogenannte administrative Verwaltungszeile mit der Angabe, für welche Nodelist das Nodediff bestimmt ist, für welches Ausgabedatum und eine CRC Prüfsumme.

Mit dieser Prüfsumme ist EditNL am Ende seiner Arbeit in der Lage zu sagen, ob die Verarbeitung erfolgreich durchgeführt wurde, oder ob es bei der Verarbeitung ein Problem gegeben hat. In der Vergangenheit gab es schon häufiger Fehler in der Verarbeitung, so das mehrere Nodediff's verteilt wurden. Aufgrund der CRC konnte dann ermittelt werden, ob man nun die richtige Version vorliegen hatte oder nicht wenn in der darauffolgenden Woche auf einmal eine Nodediff mit einer anderen CRC auftauchte.

Zum Abgleich mit der aktuellen Nodelist auf die eine Nodediff aufsetzt, wird die administrative erste Zeile in der Nodediff immer mit ausgegeben. Danach wird diese administrative Zeile gelöscht, eine neue administrative Zeile hinzugefügt, und zwar die von der neuen Nodelist. Damit sind die ersten 4 Zeilen einer Nodediff immer ähnlich:

  • Beispiel:
 ;A FidoNet Nodelist for Friday, June 7, 1996 -- Day number 159 : 57283
 D22
 A22
 ;A FidoNet Nodelist for Friday, June 14, 1996 -- Day number 166 : 27211
 ;A
  • Und hier noch ein Beispiel mitten aus einer Nodediff:
 C4
 D1
 A1
 ,80,WHQ_W95Net,NL,Hennes_Eliveld,31-514-603693,9600,XA,CM,V42B,H16,VFC,V32T,V34
 C1
 D1
 A1
 ,137,WHQ_IFDNet,NL,Hennes_Eliveld,31-514-603693,9600,XA,CM,V42B,H16,VFC,V32T
 C157
 D1
 A1
 ,626,culture_crew_whq,Kristianstad,magnus_johansson,46-44-211080,9600,CM,XA,H16
 C54
 D1
 A1
 Hold,233,Kyron_Dome,Solna,Peter_Johansson,46-8-830336,9600,V34,VFC,V32T,H16,CM
 C35

Diff Files

Differenz Dateien kommen heute übrigens noch sehr oft vor bei Programmierprojekten, bei denen jede Menge Code Zeilen bei einer Qualitätsüberprüfung verglichen werden müssen, und der Software Entwickler der einen Code kontrollieren soll schnell einen Überblick braucht, was hat sich jetzt eigentlich in dem Code alles geändert? Hier kommt nicht mehr EditNL zum Einsatz, aber Programme wie GIT DIFF sind dem einen oder anderen geläufig. Damit sind grössere Programmier Projekte, bei denen mehrere oder eine Vielzahl an Software Programmierern dran arbeiten besser pflegbar und wartbar. Ein Diff File, und ich sehe was der Kollege gestern an Änderungen durchgeführt hat.

Eine andere Bezeichnung für Differenz Files ist noch Delta Files. Die Bezeichnung Delta ist aus der Mathematik übernommen, die Differenz zwischen zwei Werten zu definieren. Bsp. Das Delta (Griechische Symbol: Δ (grosses Delta) oder δ (kleines Delta)) aus 3 und 5 ist 2.