Programmvorstellung
Ich habe ja schon mal geschrieben, dass ich nachdem ich seit März praktisch ununterbrochen nur an den Büchern gearbeitet habe, ich nun wieder was anderes machen will. Ich habe mich einigen alten Programmierbaustellen zugewandt und in den letzten eineinhalb Wochen an einem älteren Programm von mir gearbeitet. Ich habe mir sogar etwas vorgenommen und durchgesetzt, was ich überhaupt nicht mag: Dokumentieren. Programmieren, das ist kreativ, herausfordernd, das macht Spaß, vermittelt Erfolgserlebnisse, aber Dokumentieren – betrachte ich als lästige Pflicht. Ich mach’s, wenn ich bei einem Kunden bin und einen Auftrag habe, meistens ungefragt und nebenher, vor allem weil ich diese Programme dann für Jahre nicht mehr sehe / benutze und ich so in die Hilfe reinschreiben kann, was das ganze eigentlich macht, oder warum ich bestimmte Dinge so gelöst habe. Das erlaubt es mir, mich schnell wieder einzuarbeiten und beim letzten Auftrag war es dann so, dass ich die Funktion der Programme besser verstand als die Leute die sie in den letzten Jahren benutzt haben.
Dokumentieren ist daher nützlich, auch weil ich dann die Programme durchgehe, Fehler entdecke oder zumeist sie verbessere, also ich schreibe in die Dokumentation, wie etwas funktionieren sollte und stelle dann fest, dass das Programm dann doch nicht so funktioniert oder es umständlich gelöst ist. So auch in diesem Fall: Neben drei neuen Funktionen habe ich zahlreiche Dinge geändert und verbessert. Allerdings, ein DAU-Programm ist es nicht geworden, sondern weil man vieles fein einstellen kann doch etwas komplexer. Also warum geht es?
Es geht um mein Programm Launchlog, dass ich an dieser Stelle mal vorstellen will. Ich setze es seit Jahren ein, um HTML Seiten mit Startübersichten für meine Website zu erstellen und inzwischen auch für meine Bücher zum selben Zweck. Es ist ein Programm, dass die Textliste „Launchlog.txt“ von Jonathan McDowellauswertet. Also für die Aktualität und Korrektheit der Daten ist er verantwortlich.
Ich will euch das mal kurz vorstellen indem ich an ein, zwei Beispielen einige Anwendungsmöglichkeiten zeige. Ladet zuerst mal das Programm herunter, einpackt es in einen Ordner (es muss nicht installiert werden, ihr könnt es auch aus dem Downloadordner starten). Danach solltet ihr als erstes die aktuelle Startliste herunterladen (STRG+L). Danach ist das nicht mehr nötig. Das Programm ist in der Oberfläche englisch (weil ich nichts fand, das ähnliches konnte habe ich es in englisch erstellt), aber ihr könnt die Ausgaben auf Deutsch umstellen (Settings → Output in German anklicken). Ihr seht nun, dass diese Liste alle Starts und Nutzlasten seit 1957 enthält, insgesamt über 9000. Das Programm macht nun nichts anderes als diese Menge zu reduzieren und zusammenzufassen. also fangen wir das mal an. Wählen sie „Edit → Select by Field“ (STRG+S) und geben „Intelsat“ ins Editfeld ein markieren die Haken bei „Exclude A-Satcat“ und „ignore Case“ und achten drauf, dass wir eine neue Selektion haben (das sollte beim Start schon eingestellt ein. In der ersten Liste „Field“ markieren wir „Payload“ (Sprache: Englisch) oder „Nutzlast“., Wenn wir nun auf „ok“ klicken weisen wir das Programm an:
Erstelle eine neue Tabelle. Suche in der alten Tabelle nach allen Einträgen bei denen die Spalte „Nutzlast“ den String „Intelsat“ (egal in welcher Schreibweise) enthält, aber keine Hilfsteile die auch in den Orbit gelangen (hier nur bei einem Space Shuttle Start die Befestigung des Intelsat). Die Tabelle reduziert sich auf 81 Einträge. Wir könnten diese nun exportieren (Export Table in HTML oder CSV), aber ich will gleich mal einige Auswertefunktionen zeigen, die Daten zusammenfassen. Eine Frage die wir uns stellen könnten ist z.B. – auf welchen Trägern starteten die Satelliten? Also gehen wir ins Summary Menü und wählen dort „Select by Field in HTML“ Im Folgenden Dialog können wir in der Linken Liste eine Spalte auswählen, die uns interessiert (hier: Model / Trägerfamilie) und rechts ein Gruppierungskriterium. Was nun gemacht wird: Für alle Zeilen die in denen in dieser Spalte derselbe Eintrag nach dem Gruppierungskriterium steht erhält man eine Zahl. Wie gruppiert wird, steht rechts. Da es sehr viele Subtypen von Trägerraketen gibt die sich irgendwo hinten im Namen unterscheiden kann man das fein justieren. Mit der Wahl der Spalte „Model“ oder Trägerfamilie (die im organalen Textfile nicht drin steckt und schon vom Programm erzeugt wurde um die Raketen in Familien zusammenzufassen) muss man aber keine Angabe machen. Also reicht „No Gruping„. Es kommen nun noch einige Dialoge in denen wir den HTML-Titel eintragen können bzw. festlegen ob wir in die Datei später noch reinschrieben wollen (dann erst den Header platzieren und beim letzten mal dann den Fuß), den Dateinamen und die Überschrift
Wir erhalten folgende Tabelle mit Grafik. Wir sehen auf welchen Trägern Starts erfolgten. Doch wann? Dazu wählen wir einfach „Summary by Date“ und nachdemselben Mustern (und denselben Abfragedialogen) kommt dann kommen wir zu folgender Seite. 1996 und 2002 fanden vier Starts statt, es gab aber auch Jahre ohne Start.
Wenn wir beide Informationen kombinieren – auf welchen Träger,n zu welcher Zeit, erhält man mit Summary by Field and Date. Doch weil eine Grafik mehr sagt, als eine Tabelle, Also erstellen wir nur eine Grafik zum schnellen Anschauen. Das geht über Punkt mit demselben Namen im Chart-Menü. Wir erhalten bei einer Balkengrafik z.B. diese Grafik.
Damit haben wir schon die wichtigsten Auswertefunktionen betrachtet. Nun noch zwei Spezialfunktionen. Es wird ja behauptet, das Erfolgsrisiko für jede neue Trägerrakete beträgt nur 50%. Stimmt das? Das kann uns die Funktion „Only first Entry of a column“ liefern. Wir restaurieren zuerst wieder die Basisdatenmenge (Restore Table) und rufen diesen Punkt auf.
Im folgenden Selektionsmenü sollten noch die alten Werte drin stehen (Trägerfamilie, No Grouping) und die können wir übernehmen. Wir erhalten eine Tabelle die folgendermaßen zustande kommt: Gehe durch die Tabelle, schaue in die gewählte Spalte nach, ob der dortige Eintrag sich von bisherigen Einträgen unterscheidet. Wenn ja so füge ihn dem Ergebnis hinzu. Folgende Vorkommen des Eintrags werden ignoriert. In diesem Falle haben wir also die Tabelle auf die Jungfernflüge aller neuen Trägerraketen (nicht Submodelle) reduziert. Das sind 45 Familien und tatsächlich scheiterten 18 (40%) davon. Übrigens ist die Bilanz auch nicht viel besser, wenn wir den letzten Eintrag nehmen (77,8%) das liegt daran, dass zahlreiche Träger nur einmal flogen oder nie erfolgreich waren (Europa I+II, Unha, VLS ….)
Okay und welche Träger waren dies nun, die beim Jungfernflug scheiterten? Dazu gehen wir wieder ins Selektionsmenü, wählen diesmal eine UND-Verknüpfung des Ergebnisses mit der Suche und wählen als Selektionskriterium „Erfolg“ bzw. „Success“ und als Abfrage ein „-“ (ein „x“ wäre erfolgreich). Der Dialog sollte so aussehen:
und er liefert folgende Tabelle:
Alle gescheiterten Jungfernflüge
Datum | Nutzlast | Trägerrakete | Startplatz |
---|---|---|---|
06.12.1957 | Vanguard | Vanguard | CC LC18A |
25.07.1958 | NOTS 1 | Project Pilot | F4D-1 747,NOTS RW -> |
17.08.1958 | Able I (Pioneer) | Thor Able I | CC LC17A |
27.10.1961 | Kosmos | Kosmos 63S1 | GTsP-4 Mayak-2 |
26.09.1966 | L-4S-1 | Lambda 4S | KASC L |
29.11.1968 | STV 1 | Europa I | WOO LA6A |
21.02.1969 | L-1S No. 3 11F92 | N-1 11A52 | NIIP-5 LC110R |
02.09.1970 | X-2 | Black Arrow | WOO LA5B |
10.08.1979 | Rohini RS-1 | SLV-3 | SHAR SLV |
13.04.1985 | GVM Tselina-2 | Zenit-2 | NIIP-5 – |
15.05.1987 | Polyus | Energiya | NIIP-5 LC250 |
15.08.1995 | Gemstar DSS-1 | LLV-1 | V SLC6 |
23.10.1995 | Meteor SM | Conestoga 1620 | WI LA0A |
02.11.1997 | SCD-2A | VLS-1 | ALCA VLS |
31.08.1998 | Kwangmyongsong 1 | Paektusan 1 | TONGH |
15.09.2002 | HTSTL-1 | KT-1 | TYSC |
24.03.2006 | Falconsat 2 | Falcon 1 | KMR OM |
25.08.2009 | STSat-2A | Naro-1 | NARO |
Gesamt | Starts | Erfolge | Erfolgreich [%] |
---|---|---|---|
Gesamt | 18 | 0 |
Die Und Verknüpfung nimmt die bisherigen Ergebnisse als Datenbasis und lässt nur die Einträge übrig bei denen das Kriterium zutrifft. Ich denke das ist logisch wie die Oder Verknüpfung (zur ergebnismenge die neuen Datensätze hinzufügen wobei Selektionsbasis die Grundmenge ist) und Nicht-Verknüpfung (entferne aus der Ergebnismenge alle Datensätze auf der die Selektion zutrifft).
Wie man sieht ist das Risiko vor allem bei Drittweltländern relativ groß. So und nun wollen wir noch ein bisschen Statistik über die Ariane 5 haben. Also eine neue Selektion, diesmal ohne Vorgabe. (Zur Übung) Sie sollten alle Starts der Ariane 5 als Trägerrakete erhalten. Das sind 62 zum Zeitpunkt der Herausgabe der Liste. (Wichtig: Sekundäre Nutzlasten deaktivieren, wir wollen nur Raketenstarts keine Nutzlasten). Wir können nun einige Datumstatistiken erhalten, indem wir bei Specials auf „Date Statistics in HTML“ klicken. Wir erhalten folgende Tabelle:
Parameter | Wert |
---|---|
Starts | 62 |
Misserfolge | 4 |
Zuverlässigkeit | 93,5 |
Bayes Abschätzung | 92,2 |
Einsatzzeitraum | 5824 d |
Anzahl der Flüge pro Jahr | 3,9 per Year |
Erster Start | 04.06.1996 |
Letzter Start | 15.05.2012 |
Maximale Starts pro Jahr(7) | 2009 |
Minimale Starts pro Jahr (mindestens einer)(1) | 1996,1997,1998,1999 |
Minimaler Startabstand | 25 d |
Maximaler Startabstand | 513 d |
Erster Fehlstart | 04.06.1996 |
Letzter Fehlstart | 11.12.2002 |
Erster Erfolg | 21.10.1998 |
Letzter Erfolg | 15.05.2012 |
Maximale Zeit zwischen Fehlstarts | 3443 d |
Maximale Zahl der Flüge zwischen Fehlstarts | 48 |
Minimale Zeit zwischen Fehlstarts | 517 d |
Minimale Zahl der Flüge zwischen Fehlstarts | 4 |
Ich denke das reicht als Einführung. Ich denke das Programm ist sehr nützlich für alle die schnell mal was nachschauen müssen. Ich habe zwei komplette Sektionen auf der Website damit erstellt: Die Startlisten und die Jahresübersichten (letztere gehen mit einem einzigen Menüpunkt!). Die Dokumentation findet ihr hier. Die englischen Beiträge sind veraltet, die Deutschen sind neu.
Mich würde interessieren ob euch das interessiert und ihr es brauchen könnt. Dann kann ich an dieser Stelle vielleicht noch das eine oder andere Programm vorstellen
Fehlen bei den gescheiterten Jungfernflügen nicht beide Versionen der Ariane 5?
Ansonsten: Schöne Sache!
Kai
Das liegt an der Abfrage, ich hatte ja geschrieben „Trägerfamilie“, nicht Submodell (primär damit die Ausgabe nicht zu lang ist und in den Blog passt). Wenn man Submodell wählt, dann kommt man auf folgendes: