flightxpress - virtual airline
Bereiche
> News
> Blog
> Flotte
Artikel
IVAO Touren 2018
Winterflugplan
Umstrukturierung Cargoflotte
weitere Flottenaenderung
By By B767
Cargoflotte mit neuem Flugplan
PICas und P3D v4
Flugplananpassung
Sommerflugplan Sky-Sunliner
Sommerflugplan
neuer AI-Traffic 2017
neue Repaints
Hub Amsterdam komplett
B767 nach Amsterdam
Hub in Palma fertiggestellt
Buchungsproblem CRJ beseitigt
Buchungsproblem CRJ
Winterflugplan 2015/16
Erste TRs bestanden
neuer AI-Traffic
Flottenaenderung
Neue Regeln Teil 3
TR Regeln Version 2
Neue TR-Regeln
Sommerflugplan Cargo
Flottenzuwachs
Cargoflotte
Ende der Australien-Tour
Das Regelwerk
Änderung FSPassenger
Flugbuchung
neue Texturen
B767-300ERF Boston
ATR fliegt wieder
Flugplanwechsel
2.Tourteil Australien online
Cargoliner Triple-7
B737-400
Umzug Website
Winterflugplan Boston
Änderung Teamspeak 2
Neuer alter Flugbetriebsleiter Cargo
Newsletter 1/2013
777, die Zweite
Repaint für PMDG 777-200LR
Auf in die Karibik
Urlaub!
Änderung Teamspeak
Flugplan Sunliner
Awards nachgereicht
Reparatur beendet
B767 OE-LSH gegroundet
Keine TRs
IVAO Touren
Teamspeak [LIVE]
Februarupdate
1. Tour 2013
2012. Ein Jahr geht zu Ende
Weihnachten
Update 3.055 [live]
Cargohub Boston
Scandinavientour Teil 2
Hubmanager Boston
Update 3.05
Ausfall Website
Was gerade passiert.
Der Sommer bei der FXPAir
Tour 2012: Skandinavien
Newsletter 02/2012
Update (19:30 local)! Verbinungsprobleme Multiplayer-Server
Serverwartung
Bostoner Sommer
(kleines) Treffen auf unserem Multiplayer-Server in Bhutan
Typeratings upgedatet
IFR-A Zeiten upgedatet
Sommerflugplan 2012
eingeschränkte Buchungsmöglichkeit
Neues vom Online Server
Release & Update 1.05
Buchungsproblem gelöst
Buchungsprobleme über neue Webseite
Kartenlayout
Zweiter A380
Neues Tutorial
Karte 2.0 [accomplished]
B747-8F
Kängurus hüpfen wieder
10 Jahre (und ein paar Monate) FXP-AIR
Online Server
Karte 2.0
Frohe Weihnachten!
Stand der Dinge!
Fonts!
IVAO visualisiert!
(Not) Lost in Performance
Einblicke und Ausblicke - Part 2
PICas 3.0 - Episode 3
Einblicke und Ausblicke - Part 1
Signaturen
Flugplan 2011/2012
Bericht aus dem Paintshop
Testzeit
kleines großes Update für den A380
FXPAir Desktop Outfit
Neue Karten braucht das Land!
Unser Blog ganz Allgemein
Online-Tutorial Teil 2 fertig
multiplayer server wird noch besser
Let's blog it!

Einblicke und Ausblicke - Part 1

von Emmanuel Kurz geschrieben am 07.10.2011 12:51

Wir haben jetzt 10 Jahre hinter uns und die Website hat sich nun langsam den Ruhestand verdient, allerdings noch ist es nicht soweit aber wir gehen demnächst in die nächste Testrunde wo wir ein paar der letzten kritischen Systeme testen werden. Hierbei handelt es sich um die Sonderflüge und die Typeratings (genauer: die Buchung derer), diese sind ziemlich komplex und habe ich mir fürs Ende aufgespart.

Dieser Blogeintrag wird in 2 Parts geteilt, im ersten möchte ich euch ein paar Einblicke geben was wir im Hintergrund geändert haben und ein bisschen was wir auf Benutzerebene geändert haben. Außerdem sind mir während der Entwicklung einige Dinge aufgefallen die ausgemerzt werden müssen aber deren Zeit mir im Moment fehlt und auch die nötigen Vorraussetzung auf der untersten Schicht, quasi dem Backbone oder Rückgrat in dem alle Kernfunktionen laufen. Aber dazu komme ich noch etwas später.

Was haben wir nun im Hintergrund geändert?

Vor allem Performance! Die Website ist, durch Anpassung und Optimierung einiger Prozesse, deutlich schneller geworden und sorgt für mehr Spaß beim Klicken durch die Seiten :)!

Generell ist die Website eine komplett neue Entwicklung und ist nicht mehr mit der alten zu vergleichen! Das Menü, die Authentifizierung, das Rendering (anzeigen der Seite am Bildschirm), bearbeiten von Benutzeranfragen, usw. usf. ist alles neu. Auch läuft alles weitestgehend stabiler, sicherer und effizienter.
Ich habe nur in manchen Fällen ein paar Logiken von der alten Seite genommen, jedoch der Code dafür wurde wieder gänzlich neu geschrieben.

Ein weiterer Punkt ist die Zentralisierung von Programmcodes.
Ich habe mich bemüht viel in die Bibliotheken hineinzupacken damit jedes Skript auf diese Funktionen zugreifen kann. Das hat generell den Vorteil, dass ich nicht alles doppelt und dreifach programmieren muss und das bei Änderungen an einer Stelle, alle anderen Skripte davon profitieren können. Eine deutliche Arbeitsreduktion also und Minimalisierung von Fehlerquellen.

Weiters habe ich die Logiken effizient versucht umzusetzen und das hat auch prima funktioniert, der Code ist nicht nur wesentlich übersichtlicher geworden sondern in den meisten Fällen auch kürzer ausgefallen!
Ich konnte vieles im Hintergrund verbessern und neu strukturieren und die neue Website profitiert sehr gut davon. Für euch dann am Besten sichtbar bei den Ladezeiten!

Und was haben wir nun im Vordergrund geändert?

Na ja das war wohl eines der schwierigsten Unterfangen bei der neuen Seite. Wir haben wirklich monatelang, im Managementteil des Forums, über das Layout der neuen Website diskutiert. Zwar war ein grober Aufbau immer schnell gefunden aber meist haben dann nicht die Feinheiten mitgespielt oder gewisse Elemente, die wir haben wollten, konnte man nicht vernünftig unterbringen. Aber im Endeffekt sind wir jetzt mit unserer Entscheidung sehr zufrieden! :)

Wir haben aber generell versucht einige bekannte Elemente der jetzigen Website in der neuen zu übernehmen und das ist uns auch gut gelungen. Die neue Startseite ist ein schöner Mix aus bisherigen Elementen und Neuen. Vor allem bei letzteren war das Ziel, dass diese Elemente etwas Dynamik in die Seite bringen aber sich nicht zu sehr aufdrängen.

Auch das Menü ist nun moderner und komplexer aber trotzdem sehr einfach zu bedienen.

Usability war beim Gestalten der Seite ein sehr sehr großer Punkt. Wir haben immer versucht viel Komplexität hineinzubringen aber immer mit den Hintergedanken, dass es einfach zu bedienen sein sollte. Ich bin sehr glücklich darüber, dass uns das eigentlich überall gelungen ist.

Neben den neuen Pilotenprofilen hat aber vermutlich die Flugbuchung die größte Änderung erfahren. Dafür haben wir uns das Forum angesehen und vergangene Meinungen eingeholt und uns diese als Ziel gesetzt. Herausgekommen ist ein mächtiges Tool um Flüge zu suchen.

Das neue Konzept besteht darin, dass wir auf die Registrierungen komplett verzichtet haben und wirklich nur die Flüge angezeigt werden die auch tatsächlich geflogen werden können. Dabei sucht ihr nach Flügen indem ihr über Filter die Suchparameter anpassen könnt.

Dafür gibt es 3 Kategorien: Modus (Realo oder Funny), Abteilung (Skyliner, Sunliner, ...), Typeratings ( bei Funny auch die, die ihr nicht besitzt! ). Diese könnt ihr frei kombinieren und wegen Einsatz von JQuery (einer JavaScript Bibliothek), muss nicht einmal mehr die Website neu geladen werden! Von dieser Entwicklung hat zum Beispiel auch die neue (moving) Map profitiert!

Der Grund für das Weglassen der Registrierungen ist damit zu erklären das wir über 100 Flugzeuge im Einsatz haben und wir die nicht alle auflisten können. Warum auch? Jetzt wird euch angezeigt das dieser Typ von A nach B fliegt und ihr den auch buchen könnt. Ihr müsst euch nicht mehr durchklicken welcher Typ nun gerade besetzt ist usw. Wenn er in der Liste aufscheint, könnt ihr ihn garantiert fliegen (sofern ihr schnell seid im buchen ;) ). Welche Registrierung ihr dann allerdings fliegt, wird im Hintergrund beim Buchungsprozess ausgeknobelt.

Neben der Flugbuchung haben wir auch die Pilotenprofile einer Überholung unterzogen. Es ist übersichtlicher und wird in Zukunft eine zentralere Rolle als bisher spielen. Informationen der VA zum Beispiel, werden euch direkt dort angezeigt und sind nur für euch sichtbar. Die Verwaltung des Profils bekommt eine neue Bedeutung zugeschrieben und soll den Weg bereiten für zukünftige VA Features. Auch die Statistiken werden informativer und auch netter zum Ansehen ;).

Aber nun zu den Problemen ...

Oftmals hatte ich Schwierigkeiten gewisse Dinge zu implementieren musste im Kreis programmieren, Ausgaben hinbiegen sodass sie von anderen Programmteilen verstanden werden usw. usf.. Teilweise wird auch wieder Doppelgleisig gefahren was mich absolut stört.

Zum Beispiel gibt es 2 Bibliotheken die ich entworfen habe, eine in der Programmiersprache PHP und die andere in JavaScript. In beiden gibt es eine Funktion die einfach nur die Distanz zwischen 2 Koordinaten ausrechnet. Das ist eine relativ, lange mathematische Formel aber das ist nicht das Problem. Das eigentliche Problem ist, dass ich es 2x programmieren musste und nicht zusammenlegen kann. Wenn ich jetzt eine Änderung durchführen möchte dann muss ich es an 2 Orten erledigen. Wenn ich eine vergesse und die ist wichtig, dann kann es zum Beispiel sein, das der Dispatch den Fuel zu gering ansetzt und euch geht in der Luft der Treibstoff aus. :)

Aber das sind Dinge die lösen sich nicht so einfach, bzw. ich denke diese eine Doppelgleisigkeit ist verschmerzbar. Es soll jedoch ein Beispiel dafür sein mit welchen Problemen wir hier zu tun haben. Doppelt programmieren ist nicht lustig und sehr fehleranfällig, solche Sachen müssen gelöst werden und davon haben wir (leider) ein Paar.

Auch gibt es öfters das Problem das gewissen Ausgaben für einen bestimmten Zweck programmiert worden sind, wenn jetzt nun allerdings ein anderes Skript auf diese Funktionalität zurückgreifen möchte und sagt "ja aber da hätte ich schon noch gerne das Feld XY", dann ist dieser Konflikt meist nicht einfach zu lösen. Oft bedeutet dieses eine Feld ne Menge arbeit, ist verstrickt mit 3 anderen Tabellen und die Daten sind nicht immer die, die was man gerne hätte.

Auch in der untersten Schicht (Datenbankverbindung, ...) gibt es so einige Mängel die bereinigt werden müssen. Zum Beispiel ist eine Fehlerbehandlung im Moment nur properitär eingebaut und nicht in den Grundfesten einzementiert, wie es eigentlich sein sollte. Vor allem das (nach) Laden von Daten, mittels JavaScript (siehe moving map) bereitete mir schon größere Probleme, da das in der Architektur nie vorgesehen war. Der Grund dafür ist, dass ich mich recht spät für diese Art der Webseitengestaltung entschieden habe und nicht gesehen habe, wie wichtig das eigentlich für uns ist, bzw. für mich als Programmierer. Viele Dinge lassen sich recht einfach und schnell realisieren und die Komplexität die damit erreicht werden kann ist beeindruckend.

"Der Dispatch zeigt das wirklich sehr gut, denn es ist eigentlich eine Software (Flugplanungstool/Website) in der Software (Browser)."

Es zeigt sich also, das nach dem Release der Website, diese nocheinmal umgebaut wird.

Ich konnte es allerdings nicht schon vorher richtig machen, da mir gewisse Zusammenhänge erst im Entwicklungsprozess klar wurden und da war es schon zu spät. Und an diesem Zeitpunkt nochmal was zu ändern hätte einfach zu viel Zeit gebraucht und der Release wäre nochmal um einige Monate zurückgefallen.
Stattdessen habe ich jetzt viele Dinge schonmal so programmiert das sie mir beim Einziehen der neuen Layer/Schichten ( siehe Part 2 ) etwas Arbeit ersparen.

Kurz gesagt: Einer der Layer wird eine Schicht ganz unten bilden die wirklich die Kernfunktionen bereitstellen (Datenbankzugriff, Fehlerbehandlung, zugriff aufs Dateisystem, ...), darüber werden nur die Daten aufbereitet und Logiken verarbeitet und darüber setzen dann die ganzen grafischen Oberflächen an.

Ich werde dafür ein Gerüst modifizieren das ich bereits sehr erfolgreich in anderen Projekten eingesetzt habe und damit schon viele Erfahrungen gesammelt habe. Für euch wird sich wahrscheinlich nur minimal etwas ändern, womöglich werden ein paar Seiten schneller abgearbeitet werden aber auf jedenfall wird die Entwicklungszeit kürzer. Dazu aber mehr im Part 2.
Auf jedenfall ist aber dieser Schritt nötig, sonst haben wir wieder das selbe Problem wie jetzt.

Damit endet dieser Blogeintrag, wir sehen uns hoffentlich in Part 2 wieder! :) Danke fürs Lesen!