OptaPlanner hilft bei verteilten Schulstandorten (Teil 2/5)

Nachdem der erste Teil dieser Blogserie das fachliche Problem beschreibt, folgt hier der erste Teil der Modellierung.

Modellierung des Problems

In unserem Beispiel muss der Stundenplan nicht komplett neu erstellt werden. Wir können von einem bereits erstellten Stundenplan ausgehen und diesen optimieren. Zur Erstellung der Stundenpläne wird am ONG das weit verbreitete Stundenplanprogramm Untis genutzt. Der damit von der Schulleitung erstellte Stundenplan wird den Schülern und Lehrern u.a. über einen HTML-Export zur Verfügung gestellt. Zur Weiterverarbeitung in externen Programmen stellt das Modul Infostundenplan einen sogenannten Datenbank-Export zur Verfügung.
Weiterlesen

OptaPlanner hilft bei verteilten Schulstandorten (Teil 1/5)

Aufgrund von Baumaßnahmen muss der Unterricht an einer Berliner Schule auf zwei Standorte aufgeteilt werden. Die Wechsel zwischen den Standorten führen zu einer zusätzlichen Belastung des Lehrkörpers. Die Software, die für die Erstellung der Stundenpläne eingesetzt wird, kann diese Wechsel leider nicht minimieren. Als wir das hörten, kamen wir schnell auf die Idee, die Java Planning Engine OptaPlanner darauf anzusetzen.

In dieser Blogserie berichten wir davon, welche Schritte notwendig waren, um das Problem mit OptaPlanner angehen zu können und wie wir somit letztendlich eine Verbesserung um 70% erreichen konnten.

Weiterlesen

Renewal einer Legacy-UI mit Vaadin und HTML5 postMessage

Bestehenden „Legacy“-Anwendungen lässt sich neue Frische einhauchen, indem man sie Stück für Stück in eine neue Struktur überführt. Damit lässt sich einer immer weiter sinkenden Effizienz in der Wartung begegnen. Allerdings ist das per se vor allem in der Benutzeroberfläche schwierig. Mit HTML5 postMessage steht ein neuer, pragmatischer und einfacher Weg bereit, um dennoch genau dieses Ziel Wirklichkeit werden zu lassen. Dieser Artikel zeigt an einem Beispiel, wie die schrittweise Erneuerung einer Anwendung mit Hilfe von postMessage gelingen kann.

Weiterlesen

Vaadinator: Tutorial zu (mobilen) Anwendungen mit vaadin – Teil 1: Einstieg

Vaadinator generiert eine auf vaadin basierende Benutzeroberfläche (für mobile Geräte wie für Desktop), das Backend und die Infrastruktur für Tests aus einer annotierten Domänen-Klasse. Dies ist sehr stark an Domain Driven Design angelehnt. Unsere Idee ist, Sie schnell mit vaadin produktiv werden zu lassen und Sie für vaadin zu begeistern – auch wenn Sie vaadin noch gar nicht kennen. Vaadinator ist frei verfügbar und open source (Lizenz ist Apache 2.0)

Weiterlesen

Vaadin unter Last – Teil 4: Performance-Verbesserung durch Lazy-Loading

Wir hatten in den ersten drei Teilen (1, 2, 3) der Serie eine Vaadin-Anwendung ausführlich unter Last gesetzt und vor allem ein Bottleneck festgestellt: das fehlende Paging (man könnte auch sagen: Lazy Loading) im Backend der Anwendung. Dieser Artikel diskutiert nun die Umsetzung von Lazy Loading in Vaadin und stellt die Test-Ergebnisse mit und ohne Lazy Loading gegenüber.

Es lassen sich drei Aspekte von Lazy Loading im Kontext von Server-seitigen Frameworks wie Vaadin unterscheiden:

  1. Nur wirklich nötige Zeilen zwischen Server und Client synchronisieren
  2. Nur wirklich nötige Zeilen auf Server-Seite ermitteln und laden
  3. Fähigkeit der Datenbank, einen Ausschnitt der Relation zu liefern

Die folgende Darstellung verdeutlicht die Problemstellung:

vaadin-lazy

Weiterlesen

Cross-Browser und Cross-Device-Tests (Teil 1 von 3)

Die Diversität der Endgeräte erhöht sich jeden Tag. Ein Usability Professional steht hier vor den Fragen: „Wie teste ich meine Anwendungen und wann bin ich damit fertig?“ Aufwandsprojekte und Festpreisprojekte unterscheiden sich zudem stark im zeitlichen Umfang der Evaluation, sollen aber gleichwertig im Endergebnis sein. Welche Werkzeuge brauche ich als Usability Professional um effizient im Projektablauf die Qualität meiner Anwendungen zu gewährleisten? Praxiserfahrungen aus Festpreisprojekten sollen Usability Professionals helfen, die richtigen Fragen zu stellen und sich das eigene (physische oder virtuelle) „Testlabor“ zusammenzustellen.

Wir erläutern in diesem Beitrag unseren Workflow für das Cross-Browser und Cross-Device Testen. Im ersten Teil zeigen wir Möglichkeiten auf, günstig mit den Cross-Browser bzw. Cross-Device-Tests zu starten. Tests auf echten Geräten werden wir im zweiten Beitrag betrachten – Schlagwort synchronisiertes Cross-Browser/Cross-Device Testen. Im letzten Beitrag benennen wir relevante Entscheidungskriterien für Tools und Methoden und schließen mit der Vorstellung unseres Setup (Testlabor) sowie Erkenntnissen aus Festpreisprojekten.

Weiterlesen

PostgreSQL: Partitionierung großer Tabellen – Teil 2

Neben verschiedenen Indexstrategien bietet PostgreSQL ein weiteres Feature, um mit sehr großen Datenmengen umzugehen: Das Splitten von Tabellen mit Vererbung. Dieses Aufteilen der Daten einer Tabelle auf Tochtertabellen wird bei PostgreSQL „Partitionierung“ genannt.

Im ersten Teil wurden die Vor- und Nachteile dieser Variante zur Performanzsteigerung dargestellt und die Bedingungen für einen sinnvollen Einsatz beschrieben. Der nachfolgende zweite Teil dieses Artikels beschreibt die einzelnen Konfigurationsschritte für eine funktionierende Partitionierung. Der vorgestellte Weg wurde in einer PostgreSQL Version 9.2 Datenbank produktiv eingesetzt. Ein dritter Post zeigt die Besonderheiten in einem Projekt mit Hibernate.
Weiterlesen