Aktuelle technische Projekte

Nachdem mein Blog auch von meinen Kunden häufiger frequentiert wird, stelle ich auf dieser Seite ein paar Informationen über aktuelle technische Projekte und Aufgaben zusammen, die Linux- oder PHP/Ajax-lastig sind. Auf Projekte, die dem IT-Consulting für IT-Prozess- und Projektmanagement, dem IT-Qualitätsmanagement/ITSM/ISM sowie dem Thema Angebots-Erstellung/-Reviews für öffentliche Auftraggeber zuzurechnen sind, gehe ich in diesem Blog dagegen nicht ein.

Also, womit befasse ich mich technisch z.Z. gerade:

2015: Tests zu Linux-Firewalls auf KVM-Hosts mit Private/Public Bridges

Aus projektbezogenen Diskussionen über KVM-Hosts für virtualisierte Entwicklungssysteme heraus, ergab sich ein spontanes Interesse für die Frage, in wieweit der Einsatz von iptables-Firewall-Regeln auf dem Host selbst hinreichend und überhaupt vernünftig ist. Unter Berücksichtigung des Ethernet-Layers ergeben sich hier nämliche eine Reihe von potentiellen Problemen bei ARP-Spoofing- und nachfolgenden Sniffing- bzw. mitm-Angriffen von virtualisierten Gastsystemen aus. Die Isolation von Gastsystemen oder virtuellen LAN-Bereichen gegeneinander ist dann in Frage gestellt. Insbesondere der Einsatz eines reinen iptables-Paket-Filters (Layer 3/4) ohne Berücksichtigung von ebtables und arptables-Regeln für den Layer 2 ist mehr als problematisch, wenn conntrack-basierte zustandsorientierte Filter eingesetzt und entsprechende iptables-Regeln "blind" über Werkzeuge wie FWBuilder erzeugt werden.

Zur Untersuchung von potentiellen Angriffsszenarien und der Wirksamkeit von standardisierten libvirt-Filterregeln, die die ganze Bandbreite der Netfilter-Suite nutzen, soll ein Kali-System auf einem virtualisierten Gastsystem eines KVM-Test-Hosts eingesetzt werden. Entsprechende Kenntnisse sind für Sicherheitsanalysen und Sicherheitsberatung von Firmen, die wie wir selbst KVM-Virtualisierung einsetzen, von Nutzen.


2015: Aufsetzen zweier LAMP-Entwicklungsserver

Im Rahmen von 2 Kundenprojekten waren zwei gehostete Linux-LAMP-Testsserver aufzusetzen. Kennzeichen:
- Opensuse 13.1
- Apache2, PHP 5.4, MariaDB
- iptables
- Zugang zu verschiedenen Test-Sub-Domainen nur unter HTTPS
- Alle Ports bis auf einen verschobenen SSH-Port waren zu schließen.
- Authentifizierung von Admin, SFTP-, SVN- und Datenbank-Nutzern über SSH-Private/Public-Keys
- kein SSH-Zugang für Root
- kein Login von Entwicklern auf Shell-Ebene
- PhpMyAdmin- und SSH-Tunnel-Zugang zu Datenbanken mit unterschiedlichen Berechtigungsstufen
- Chroot-SFTP-Zugang zu unterschiedlichen Test-Domain-Verzeichnissen mit unterschiedlichen Berechtigungsstufen für zwei Entwicklergruppen und Entwicklungsleiter
- SVN+SSH-Zugang zu 2 SVN-Repositories

Eine klassische, runde Sache, bei der die sshd-Konfiguration sehr weitgehend auszunutzen ist.


2015: Entwicklung und Durchführung eines 5-Tages-Kurses über "Strukturierte Ajax-Entwicklung mit Javascript, JSON und PHP"

Dieser praxisorientierte Kurs war auf Englisch für ausgebildete PHP-/Javascript-Entwickler zu halten. Ein wichtiger Schwerpunkt war auf Kundenwunsch auf die Strukturierung und das SW-Design auf der Javascript-Seite zu legen. Elemente eines maximal objektorientierten Vorgehens waren an praktischen Beispielen, die die Kursteilnehmer programmieren mussten, zu diskutieren. Die vollständige Steuerung von UI- und Ajax-Events durch adäquate "Methoden" von JS-Objekten sowie die Kontrolle des Ajax-Informationsflusses auf der JS wie auf der PHP-Seite wurden behandelt. Das gelernte wurde auf komplexe, kundenbezogene Szenarien übertragen.

Ich kann den Kurs auch für andere Kunden und auf Deutsch als Inhouse-Schulung anbieten.

Themenliste:

- Prototype Chain und Objektorientierung in Javascript
- Funktionen als Objekte unter Javascript und resultierende Möglichkeiten
- Injection Pattern vs. Inheritance Pattern, Factory-Pattern - Analogien und Unterschiede in der Umsetzung zu PHP
- Events und Phasen der Event-Behandlung in JS

- Definierte user-Interaktionsbereiche von WEB-UIs und deren potentielle Beziehungen
- Umsetzung von MVC-Strategien unter JS: Control-Objekte für die Steuerung von definierten Web-UI-Interaktionsbereichen und internen wie externen Informationsflüssen

- strukturierte Abbildung von HTML-Objekten auf Variable und "Methoden" von Control-Objekten
- Dispatcher-Objekte und die Interaktion von Control-Objekten
- Context-Wechsel und this-Operator
- Einsatz von jQuery (Grundlegendes, Event-Behandlung, proxy-Mechanismus)
- Komplette Übernahme der UI-Event-Behandlung durch Methoden der "Control"-Objekte
- typische "Methoden" der JS-Control-Objekte für die WEB-UI-Steuerung

- Ajax-Kommunikationsfluss zwischen JS-Objekten und PHP-Programmen - Steuerungsmöglichkeiten auf beiden Seiten
- Potentielle Fehlersituationen im Ajax-Kommunikationsfluss - Konsequenzen für die Fehlerbehandlung
- Ajax und JSON(P)
- jQuery und die Kontrolle von Ajax-Interaktionen
- erforderliche "Methoden" der JS-Control-Objekte für die Steuerung von Ajax-Interaktionen
- Strukturierung der Daten für den Server, GET/POST und Kombinationen, Encoding

- erforderliche Strukturen und Objekte für die Behandlung von Ajax-Interaktionen auf der PHP-Seite
- Strukturierte Behandlung, Prüfung, erforderliche Character-Kodierung und -Dekodierung von Daten auf der PHP/MySQL-Seite
- Einsatz des PHP-Output-Buffers im Ajax-Kontext
- Strukturierung zu transferierender JSON-Informationen - insbes. Status und Fehlermeldungen
- Überwachung des Datenverkehrs - Fehlerreaktionen am Client
- Aufbereitung von eingehenden JSON-Informationen durch Control-Objekte auf der JS-Seite

- Spezielle Anwendungen :
    * Komplexe, verkettete Ajax-Interaktionen und Timer-Loops
    * Ajax Status-Polling für lang laufende PHP-Jobs
    * verkettete Datei-Uploads, Upload-Queues und deren Steuerung unter Ajax
    * Datenfilter und Ajax


2013 - 2015: PHP und Ajax-Kunden-Projekt: Supply Chain Netzwerke und statistische Berechnungen

In diesem Projekt entwickle ich Erweiterungen zu einem von mir für den Kunden entwickelten PHP-basierten Simulationsverfahren für Supply Chain Netzwerke. Das bereits erstellte Simulationsverfahren mit zeitlichen Backward- und Forward-Berechnungen für komplexe Netzwerke mit mehreren tausend Knoten soll nun durch statistische Berechnungen ergänzt werden, in die heuristische Daten und/oder eben vorab gewonnene Simulationsdaten eingehen.

Die technischen Herausforderungen liegen hier einerseits auf der Ajax- und jQuery-Seite der Web-Clients, da Anwender auf ein und derselben Webseite

  • eine Sequenz voneinander abhängiger Dateien mit Input-Daten sowie zugehörige Steuerparameter für die Dateiverarbeitung hochladen sollen,
  • über die Ergebnisse zu Konsistenzprüfungen aktuell hochgeladener Dateien der Sequenz mit Daten anderer Files der Upload-Sequenz vor Beginn der eigentlichen Berechnungen informiert werden sollen,
  • die eigentlichen statistischen Berechnungsläufe auf Basis der hochgeladenen Daten starten können sollen
  • Rückmeldungen zum zwischenzeitlichen Status der berechnunsgjobs erhalten sollen.
  • Berechnungsergebnisse u.a. über erzeugte Dateilinks (zip-Dateien) herunterladen können sollen.

Zu dieser durchaus interessanten Thematik werde ich in diesem Blog einige Aspekte der grundlegenden entwicklungstechnischen Ansätze diskutieren.

Andererseits liegt eine weitere essentielle Herausforderung dieses Projektes in der schieren Menge der zu behandelnden Daten: Einige Tabellen können mehrere 10 Millionen Einträge umfassen. Wir werden uns auf einer MySQL-Datenbank langsam in diesen interessanten Bereich herantasten. Sicher machen wir hierbei interessante Erfahrungen mit der Performance, auf die wir ggf. auch in diesem Blog eingehen werden.


2014/2015: PHP und Ajax-Projekt : (Weiter-) Entwicklung eines CMS

Wie einige der von uns betreuten Kunden wissen, haben wir mit Hilfe unserer eigenen Frameworks für hierarchisch organisierte, online pflegbare Daten etliche Web-Applikationen realisiert, die sich in bereits vorhandene Web-Sites einbinden lassen. Die zuletzt zu erfüllenden Anforderungen gingen dabei immer mehr in Richtung vollständige CMS-Funktionalität:

U.a. haben wir es einem Unternehmen ermöglicht, sein Dienstleistungsspektrum und zugehörige Webseiten für die einzelnen, hierarchisch organisierten Leistungen kosteneffizient in einem zentralen unternehmensweiten Katalog zu pflegen, ohne dabei die Möglichkeit zu verlieren, die für einzelne Filialen geltende Listen des Dienstleistungs-Portfolios einzuschränken und die Beschreibungen wie das Layout in bestimmten Punkten an lokale Gegebenheiten anzupassen. Die Kataloginhalte und deren Darstellung in Form von generierten Webseiten können jederzeit von zentraler Seite für die Filialen ausgespielt werden; je nach Berechtigungseinstellungen können bestimmte Webseiteninhalte durch die Filiale modifiziert und dann gegen Änderungen durch zentrale Katalogausspielungen geschützt werden. Umgekehrt können Filialen neue Leisungen aus dem Katalog gezielt importieren sowie inhaltlich und bzgl. des Layouts modifizieren.

Die Anforderungen an die Logik-Steuerung sowie die Generatoren für Pflege- und Präsentations-Webseiten waren in diesem Projekt sehr weitgehend. So liegt es nahe, nun endlich die notwendigen Schritte zu unternehmen, um auf Basis der erweiterten Klassen unseres ixCMF-Frameworks ein eigenes geschlossenes CMS für mittelgroße Web-Sites zu erstellen. Wir berichten in einer Artikelserie unter
http://ixcmf.anracom.com/category/the-ixcmf-cms-project/
fortlaufend über diese Arbeiten.


2015: Internes Linux-Projekt: Umzug unserer Server-Dienste auf KVM-Instanzen - Bereitstellung eines aktuellen Kolab-Servers

Wie einige unserer Kunden wissen, haben wir im letzten Jahr unsere internen Serverfunktionalitäten von einem Standard-SLES-Server auf mehrere virtualisierte KVM-Systeme eines Linux-Hosts transferiert. Die Umstellung ist u.a. für die Dienste

  • DHCP, DNS, LDAP, Samba, NFS, Apache, MySQL, Postgres, Postfix, Cyrus IMAP, SVN

bereits vollständig erfolgt. In einem letzten Schritt steht noch ein Wechsel von einem OX 6 Server auf einen Kolab Groupware Server aus. Aus diesem Projekt werden sich sicher Punkte ergeben, die in diesen Blog Einzug halten.


2015: HTML, CSS: Unterstützung bei der Erstellung von Templates für Web-Seiten mit Fluid und Responsive Design

In einem Web-Projekt meiner Frau für einen norwegischen Kunden ist eine Kombination aus fluidem und responsivem Design für ein Multi-Column Layout gefordert. Ein guter Anlass, sich ein paar grundsätzliche Gedanken zum Aufbau entsprechender Templates zu machen.