Programmierprojekte: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
 
Zeile 157: Zeile 157:
  
 
=== Umsetzung ===
 
=== Umsetzung ===
Soweit möglich soll auf APIs der Anbieter zurückgegriffen werden. Im Übrigen wird auf die normalen Webseiten zugegriffen. Dabei wird auf das [[Open Source]]-Projekt [[Selenium]] zurückgegriffen um Browser fernzusteuern.  
+
Soweit möglich soll auf APIs der Anbieter zurückgegriffen werden. Im Übrigen wird auf die normalen Webseiten zugegriffen. Dabei wird auf das [[Open Source]]-Projekt [[Selenium]] zurückgegriffen um Browser fernzusteuern (Alternativen:
 +
* direkter Zugriff auf HtmlUnit (Vorteil: headless; Nachteil: schwächerer [[JavaScript]]-Support)
 +
* [https://github.com/ariya/phantomjs/wiki/Quick-Start PhantomJS] (Vorteil: headless, Webkit-basiert; Nachteil: JavaScript-, aber keine [[Java]]-API).  
  
 
Die Browser können in einem virtuellen X-Server, z.B. [http://en.wikipedia.org/wiki/Xvfb Xvfb], laufen, um Ressourcen zu sparen (fraglich, weil dann ja auch die Fähigkeiten des Grafikprozessors nicht genutzt werden).
 
Die Browser können in einem virtuellen X-Server, z.B. [http://en.wikipedia.org/wiki/Xvfb Xvfb], laufen, um Ressourcen zu sparen (fraglich, weil dann ja auch die Fähigkeiten des Grafikprozessors nicht genutzt werden).

Version vom 16. September 2013, 12:55 Uhr

Siehe oldCt:Informationstechnik#Programmierprojekte

KommunenViewer


Mail-Nachschau

  • Idee: Während des Schreibens einer Mail sollte (ähnlich einem Vorschaufenster) automatisch die letzte Korrespondenz mit den Empfängern angezeigt werden.
  • Umsetzung: z.B. als Plugin für Thunderbird

PDF-Maschine

  • Status: Idee
  • Ziel: Zurverfügungstellung eines virtuellen Netzwerkdruckers auf dem lokalen PC, der die Druckausgaben in PDFs umwandelt.
  • Umsetzung: Linux-Server mit CUPS, PDF-Druckertreiber und Samba. Der PDF-Drucker sollte die PDFs in ein öffentliches Verzeichnis des Linux-Servers ablegen, auf das (Windows)-Clients zugreifen können. Der Linux-Server wird in einer (kleinen) virtuellen Maschine mittels Virtual Box aufgesetzt. Diese Virtuelle Maschine sollte beim Booten automatisch gestartet werden.

Farbname-App

  • Status: Idee
  • Ziel: Mit Hilfe der Kamera eines Smartphones wird dem Benutzer die Farbe eines Objekts in Klarschrift/Sprachsynthese mitgeteilt. Das könnte eine Hilfe für Farbenblinde sein.

LED-Licht-Webpage

  • Status: Idee
  • Ziel: Bildschirm kann in einer frei einstellbaren Farbe leuchten. Am einfachsten wohl Umsetzung über eine HTML-Seite im Browser.
  • Umsetzung: drei kleine Regler rechts unten für die Farbkomponenten, Umsetzung mit CSS und javaScript
  • Erweiterungen:
    • Speichern der Farbe in Cookie (Versionsnummer der Cookie-Ablage auch mit abspeichern)
    • Popupfenster für gesamten Bildschirm ohne Rand mit Schließen-Button
    • Festlegung einer Abfolge von Farben mit Zeitdauer der jeweiligen Farben
    • Weiterer Regler zur Helligkeit (dieser ändert dann alle Farbkomponenten gleichzeitig)

MyPortal

  • Status: Idee
  • Ziel: Auf einer Website werden Inhalte anderer Webseiten vereinigt. Diese kann der Nutzer frei vorgeben, z.B. indem er eine URL samt XPATH zum abzubildenden Element mitgibt.
  • Umsetzung: Zu verwenden wäre wohl die IFRAME-Technik. Als Alternative kann der Portalserver die entsprechenden Elemente laden und weitergeben.
    • Zur Auswahl des abzubildenden Elements kann man evtl. die Technik, die bei Zoho für die Einbindung fremder Inhalte in Tabellen verwendet wird, nutzen.

MediaWiki-Sync

  • Status: Idee
  • Ziel: Synchronisation eines MediaWikis mit einem Offline-MediaWiki, so dass Änderungen z.B. auf einem Laptop wieder ins Haupt-MediaWiki eingespeist werden können, ohne dass Änderungen auf dem Laptop noch auf dem Hauptserver verloren gehen.
  • Umsetzung: Nutzen des XML-Outputs von Mediawiki (Über Seite Spezial:Export);
    1. Herunterladen des kompletten Wikis auf den Laptop
    2. Änderungen auf Laptop und Server vornehmen
    3. Maschinelles Überprüfen, ob auf dem Laptop neuere Versionen als auf dem Server vorhanden sind; dann einspeisen auf dem Server (über Spezial:Import)
    4. Anschließend wieder komplettes Herunterladen auf den Laptop nötig.
  • Weitere Infos:

SimpleServerEditor

Kalenderwoche-Rechner

  • Status: Beginn der Umsetzung (s. Google Gadget Kalenderwoche)
  • Ziel:
    1. Auf einer Webseite soll als Information neben dem aktuellen Datum die aktuelle Kalenderwoche ausgegeben werden.
    2. Mittels zwei Eingabefelder soll zu einer bestimmten Kalenderwoche (Wochennummer + Jahr) das entsprechende Datum ausgegeben werden.
    3. Umgekehrt soll zu einem bestimmten Datum das Jahr ausgegeben werden.
    4. Evtl. als Yahoo/Google-Gadget zu implementieren.
  • Lösungsansatz: Definition der wikipedia:Kalenderwoche (Woche beginnt am Montag, die erste Woche beinhaltet den 4. Januar), s. auch Kalender. Hier findet sich ein eleganter Algorithmus zur Berechnung der Kalenderwoche und des Kalenderjahrs auf Basis der Erkenntnis, dass der
    1. erste Donnerstag eines Kalenderjahres immer in der ersten Kalenderwoche sich befindet und
    2. dass alle Donnerstage jeweils in dem Kalenderjahr liegen, zu dem auch die entsprechende Kalenderwoche gehört.
  • Ziel Nr. 1 ist erfüllt, (s. Google Gadget Kalenderwoche)

P2P-Backup

  • Status: Idee
  • Ziel:
    1. Private Rechner, die heutzutage über DSL ins Netz gehen, könnten auch der ideale Backup-Ort für Freunde sein. Wichtig ist dabei allerdings, dass selbst die "Freunde" nicht die zu backupenden Daten einsehen können. Außerdem sollte von vornherein bestimmt werden, wieviel Backup-Platz anderen zur Verfügung gestellt wird.
    2. Weitergehend könnte dies zu einer Art Community ausgebaut werden. Jeder bekommt Speicherplatz in Abhängigkeit von dem vom ihm zur Verfügung gestellten Platz/von seiner Erreichbarkeit.
    3. Überflüssiger/zu kleiner Speicherplatz könnte monetär abgerechnet werden.
    4. Möglich wären auch zweifach-/mehrfach-Sicherungen, wenn mehrere Rechner zur Verfügung stehen. Möglich wäre auch einzelne Backups auf mehrere Rechner zu verteilen (Vorteil insbesondere die Wiederherstellung müsste schneller gehen).
  • Lösungsansätze:
    1. Auf Remote Rechner sollte ein Image fester Größe angelegt werden, das mit einem verschlüsselnden Filesystem beschrieben wird. Der Remote Rechner sollte eine feste IP-Adresse haben oder per Dynamisches DNS zu erreichen sein. Der Remote Rechner müsste wohl einen SSH-Zugang zulassen (Zugriff sollte aber auf das genannte Image plus notwendige Programme wie sshd und z.B. rsync begrenzt werden). Der lokale Rechner muss z.B. durch einen Cron-Job mit ping feststellen, ob er einen Backup starten kann (Alternative: Anmeldung der Rechner an einer zentralen Stelle im Netz).
    2. Auf Remote Rechner läuft ein FTP-, WebDAV-Server oder ähnliches. Die Verschlüsselung erfolgt auf dem lokalen Rechner. Der Remote Rechner sollte eine feste IP-Adresse haben oder per Dynamisches DNS zu erreichen sein. Der lokale Rechner muss z.B. durch einen Cron-Job mit ping feststellen, ob er einen Backup starten kann (Alternative: Anmeldung der Rechner an einer zentralen Stelle im Netz).
    3. Variante: Es gibt einen festen Zwischenspeicher im Netz (z.B. freier WebDAV-Server von GMX). Darauf werden durch lokalen Rechner nach und nach Teile des Backups abgelegt. Der Remote Rechner holt dann nach und nach die Teile ab und gibt wieder Bereiche im Zwischenspeicher frei.
      • Lokaler Rechner: Erstellen der Backup-Datei (z.B. mit tar)
      • Lokaler Rechner: Verschlüsseln der Backup-Datei
      • Lokaler Rechner: Aufteilen der Backup-Datei in kleine Snippets (z.B. mit split)
      • Lokaler Rechner: Hochladen der Snippets zum Zwischenspeicher
      • Remote Rechner: Herunterladen der Snippets

Weitere Schritte:

  • Lokaler Rechner übermittelt Löschen-Befehl an Remote Rechner für alte Backup-Dateien
  • Lokaler Rechner übermittelt RESTORE Befehl an Remote Rechner, obiger Backup-Vorgang wird umgekehrt


BGH-Leitsätze

Allgemeines

  • Status: Idee
    • Analyse der BGH-Urteilsdatenbank
    • Sortieren nach Gesetzen, innerhalb von Gesetzen nach Artikeln/Paragraphen, anschließend nach Absätzen/Nummern/etc. (keine weitere Aufteilung)
  • Ähnliches:
    • OpenJur - Portal, in das Gerichtsentscheidungen eingestellt werden.
  • Vorgehen:
    • Schritt 1: Abrufen der PDFs (ausreichend zunächst aktuelle Entscheidungen)
    • Schritt 2: Konvertieren in Text (evtl. schon Aufnahme in Datenbank)
    • Schritt 3a: Analyse I
      • Leitsatz / -sätze
      • Datum
      • Aktenzeichen
      • LawRefFull
      • Link zur BGH-Seite
    • Schritt 3b: Analyse II
      • LawRef aus LawRefFull
        • Gesetze
        • Paragraphen/Artikel
        • künftig Absätze / Nummern
        • weitere Konkretisierungen (Sätze, Nummern etc.)
    • Schritt 4: Veröffentlichung
      • Einfügen in Datenbank
      • HTML-Output (z.B. über PHP)

Einzelfälle von BGH-Leitsatzentscheidungen

Einzelprobleme / Use Cases für Unit-Tests:


Mietwagen-Meta-Suchmaschine

Ziel

Das Projekt soll es ermöglichen, Mietwagenangebote zu finden. Dabei soll es auf die Angebote der verschiedenen Mietwagenanbieter, auch von Weiterverkäufern/-vermittlern wie ADAC oder billiger-mietwagen.de zurückgreifen. Persönliche Vorlieben sollen berücksichtigt werden, wie z.B.

  • Winterreifen
  • Zusatzfahrer
  • Mitgliedschaften (z.B. Miles & More, ADAC, Kreditkarten)

Umsetzung

Soweit möglich soll auf APIs der Anbieter zurückgegriffen werden. Im Übrigen wird auf die normalen Webseiten zugegriffen. Dabei wird auf das Open Source-Projekt Selenium zurückgegriffen um Browser fernzusteuern (Alternativen:

  • direkter Zugriff auf HtmlUnit (Vorteil: headless; Nachteil: schwächerer JavaScript-Support)
  • PhantomJS (Vorteil: headless, Webkit-basiert; Nachteil: JavaScript-, aber keine Java-API).

Die Browser können in einem virtuellen X-Server, z.B. Xvfb, laufen, um Ressourcen zu sparen (fraglich, weil dann ja auch die Fähigkeiten des Grafikprozessors nicht genutzt werden).

APIs von Mietwagenanbietern

  • Hotwire, REST, straight forward, API key nötig
  • AMADEUS bietet für seine API keine öffentlich zugänglichen Informationen.
  • Carsolize ist ein kommerzieller Anbieter u.a. von Mietwagenreservierungs-APIs.
  • Expedia bietet derzeit nur eine API für Hotelreservierungen, nicht für Mietwagen an (Stand: 3.1.2013; Neuigkeiten auf dem Partner-Blog).

Weitere Infos