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

2 thoughts on “Programmvorstellung

  1. 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:

    Datum Nutzlast Trägerrakete Startplatz Nation
    06.12.1957 Vanguard Vanguard CC LC18A USA
    25.07.1958 NOTS 1 Project Pilot F4D-1 747,NOTS RW -> USA
    17.08.1958 Able I (Pioneer) Thor Able I CC LC17A USA
    23.09.1958 [AMS Luna] E-1 No. 1 Vostok-L 8K72 NIIP-5 LC1 Russia
    28.02.1959 Discoverer 1 Thor Agena A V 75-3-4 USA
    26.11.1959 P-3 Atlas Able CC LC14 USA
    26.02.1960 Midas 1 Atlas Agena A CC LC14 USA
    13.05.1960 Echo Thor Delta CC LC17A USA
    10.10.1960 [AMS Mars] Molniya 8K78 NIIP-5 LC1 Russia
    26.10.1960 Discoverer 16 Thor Agena B V 75-3-4 USA
    25.04.1961 Mercury MA-3 Atlas D CC LC14 USA
    27.10.1961 Kosmos Kosmos 63S1 GTsP-4 Mayak-2 Russia
    28.02.1963 OPS 0583 Thor SLV-2A Agena D V 75-3-5 USA
    01.09.1964 Titan 3A Fairing Titan IIIA CC LC20 USA
    26.09.1966 L-4S-1 Lambda 4S KASC L Japan
    08.04.1967 Kosmos-154 Proton-K/D NIIP-5 LC81/23 Russia
    19.09.1968 INTELSAT III F-1 Thor Delta M CC LC17A USA
    29.11.1968 STV 1 Europa I WOO LA6A Europe
    21.02.1969 L-1S No. 3 11F92 N-1 11A52 NIIP-5 LC110R Russia
    27.08.1969 TETR C Thor Delta L CC LC17A USA
    02.09.1970 X-2 Black Arrow WOO LA5B England
    25.09.1970 MS-F1 Mu-4S KASC M Japan
    05.11.1971 STV 4 Europa II CSG CECLES Europe
    18.09.1973 JSSW 1 Feng Bao 1 JQ LA2B China
    11.02.1974 Viking Dynamic Simulator Titan IIIE CC LC41 USA
    05.11.1974 FSW Chang Zheng 2 JQ LA2B China
    10.08.1979 Rohini RS-1 SLV-3 SHAR SLV India
    13.04.1985 GVM Tselina-2 Zenit-2 NIIP-5 – Russia
    31.05.1986 INTELSAT 514 Ariane 2 CSG ELA1 Europe
    24.03.1987 SROSS-A ASLV SHAR SLV India
    15.05.1987 Polyus Energiya NIIP-5 LC250 Russia
    20.09.1993 IRS-P1 PSLV SHAR PSLV India
    27.06.1994 STEP M1 Pegasus XL L-1011,V RW30/12 -> USA
    28.03.1995 Gurwin-1 Start GNIIP LC158 Russia
    15.08.1995 Gemstar DSS-1 LLV-1 V SLC6 USA
    23.10.1995 Meteor SM Conestoga 1620 WI LA0A USA
    04.06.1996 Cluster F3 Ariane 5G CSG ELA3 Europe
    02.11.1997 SCD-2A VLS-1 ALCA VLS Brazil
    27.08.1998 Galaxy 10 Delta 8930 CC LC17B USA
    31.08.1998 Kwangmyongsong 1 Paektusan 1 TONGH Northkorea
    05.07.1999 Raduga Proton-K/Briz-M GIK-5 LC81/24 Russia
    15.09.2002 HTSTL-1 KT-1 TYSC China
    11.12.2002 Hot Bird 7 Ariane 5ECA CSG ELA3 Europe
    21.12.2004 Demosat Delta 4H CC SLC37B USA
    21.06.2005 Cosmos-1 Volna K-496,BLA Russia
    24.03.2006 Falconsat 2 Falcon 1 KMR OM USA
    16.08.2008 IRSA Test Payload Safir SEM Iran
    24.02.2009 OCO Taurus 3110 V 576E USA
    05.04.2009 Kwangmyongsong-2 Unha-2 TONGH Northkorea
    25.08.2009 STSat-2A Naro-1 NARO Southkorea
    Gesamt Starts Erfolge Erfolgreich [%]
    Gesamt 50 0

Schreibe einen Kommentar zu Bernd Leitenberger Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.