Programmierprojekte: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
Zeile 154: Zeile 154:
 
** DB Timetables API - [https://developers.deutschebahn.com/db-api-marketplace/apis/node/26497 kostenfrei]
 
** DB Timetables API - [https://developers.deutschebahn.com/db-api-marketplace/apis/node/26497 kostenfrei]
 
*** https://pypi.org/project/deutsche-bahn-api/
 
*** https://pypi.org/project/deutsche-bahn-api/
 +
**** https://github.com/Tutorialwork/deutsche_bahn_api
 +
** Railway Station Pictures - [https://developers.deutschebahn.com/db-api-marketplace/apis/product/118510 kostenfrei]
  
 
== MediaWiki-Sync ==
 
== MediaWiki-Sync ==

Version vom 27. Juni 2024, 15:10 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

Mini-Dokumentenmanagementsystem

  • Status: Idee
  • Ziel: Einfache Volltextsuche auch gescannter Dokumente
  • Unterziele:
    • Keine Bindung an das Projekt, leichter Umstieg auf ein anderes (richtiges) DMS
    • Nutzung bisheriger Ordnerstruktur
  • Umsetzung
    • Es wird ein Erfassungs-Workflow geschaffen
      • Schritt 1: Sofern das Dokument in Papier vorliegt, muss es
        • gescannt
        • und per OCR erfasst werden
        • Es wird ein PDF in der bestehenden Ordnerstruktur erzeugt, das einen Textlayer hat.
      • Im Schritt 2 wird eine Text-Datei erzeugt,
        • die den kompletten Textinhalt der Datei enthält und
        • die im selben Ordner wie die Originaldatei liegt und
        • die als Dateinamen den Namen der ursprünglichen Datei einschließlich Endung mit der zusätzlichen Endung ".mdms.txt" erhält
    • Es gibt ein Suchskript über die .mdms.txt-Dateien
      • Basis wahrscheinlich ag statt ack oder grep (in Kombination mit find)
      • dies kann optional die gefundenen Dateien öffnen
        • xdg-open in Verbindung mit dem Dateinamen der mdms.txt-Datei, jedoch ohne .mdms.txt
  • Erweiterungen
    • Es werden nicht nur Scanns erfasst, sondern auch bestehende Dokumente, z.B.
      • mittels pdftotext bei PDFs, die aus einer Textverarbeitung stammen (also kein OCR benötigen)
      • DOC, DOCX, ODS, ODT-Dateien
    • Es braucht ein Erfassungsskript, das die mdms.txt-Dateien anlegt.
    • Bei in Textform bereits vorliegenden Formaten, braucht es keine mdms.txt-Dateien. Insoweit muss das Suchskript lediglich erweitert werden. Beispiele
      • Programmcode wie .js, .ts, .c , .cpp, .rs, .html
      • Markup wie Markdown .md, .markdown und Asciidoc .adoc
  • Alternativen
    • openpaper PaperWorks
      • unterstützt leider die bisherige Ordnerstruktur nicht.
    • https://github.com/darrenldl/docfd
      • docfd arbeitet in einem Terminalfenster und stellt eine Art halbgrafisches grep für unterschiedliche Dokumentenformate (u.a. PDF, DOCX) dar.

Füge PDF in Word-Dokument ein

Erzeuge PDF im Browser

  • Status: Idee
  • Ziel: Editor, der nach dem WYSIWG-Prinzip zumindest einfache Formatierungen des Texts erlaubt, die PDFs in einer Vorschau anzeigt, die PDFs zum Download anbietet, im Browser mit JavaScript und CSS arbeitet und in andere Anwendungen integriert werden kann.
  • Umsetzung
    • Darstellung mit drei Feldern:
      • Eingabe/Editor-Feld (in HTML/JavaScript bzw. TypeScript implementiert)
      • JSON-Feld, das den Text samt Formatierung ähnlich dem pdfmake.org-Format anzeigt
      • PDF-Feld, in dem das mit pdfmake.org erzeugte PDF mittels PDF.js in einem IFrame angezeigt wird
    • Features
      • Markieren, Löschen, Formatieren
      • Cut & Paste mit dem Systemclipboard

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.

PDF-Anmalen

  • Status: Idee
  • Ziel: User soll PDF-Dateien im Browser eines Tablets (wie z.B. Microsoft Surface) öffnen und mit handschriftlichen Anmerkungen versehen können.

Das Ziel wird bereits durch Desktop-Programme erreicht:


Siehe auch für die Zeichenschicht:

Siehe auch für die PDF-Anzeigeschicht:

Siehe auch für die PDF-Modifikation:

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. Das könnte noch durch OpenData-Bestände erweiter werden, z.B.
  • 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.


Verkehr

Sinnvoll wären auch Abfahrtstafeln nahe gelegener Bahnhöfe / Stationen.

Siehe auch

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


Mobiler Peer 2 Peer Dateiaustausch


Siehe auch

Vorhandene Alternativen

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 noch 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).

Mit GhostDriver, das in PhantomJS integriert ist, kann ein headless WebKit-basiertes System von Selenium ferngesteuert 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

Sicherer Chat

Ziel

Es soll ein sicherer Messenger geschaffen werden mit Hilfe von Open Source, Identifizierung an Hand von privaten / öffentlichen Schlüsseln (siehe auch Kryptographie) und dezentralen Chat-Servern, die ihrerseits die Namen der Teilnehmer nicht kennen, sondern lediglich die öffentlichen Schlüssel.

Anforderungen

Die Anforderungen orientieren sich ungefähr an einem einfachen Whatsapp-Dienst.

Whatsapp bietet

  • sofortige Kommunikation
  • leichtes Finden von Teilnehmern (über Telefonnummer aus Adressbuch)
  • niedrige Hürde der Kommunikation (keine Anrede, kein Betreff)
  • einfaches Nutzen von Gruppen
    • einfaches Hinzufügen
    • einfaches Austreten
  • so gut wie kein Spam (wahrscheinlich durch Identifikation der Absender mittels Telefonnummer und zentraler Kontrolle durch Whatsapp/Facebook)
  • Spaß durch Emoticons und sonstige Icons
  • Versenden von Bildern (zur Bandbreitenersparnis auch in niedrigerer Auflösung)
  • sichere Kommunikation (angeblich Ende-zu-Ende-Verschlüsselung)


Umsetzung

Use Cases

  • Ablauf des Versendens einer Nachricht
    • Nachricht wird auf Client A erstellt
    • Nachricht wird auf Client A mit privatem Schlüssel des A verschlüsselt
    • Nachricht wird auf Client A mit öffentlichem Schlüssel des B verschlüsselt
    • Nachricht wird an Server (oder Servercluster) mit Ziel (öffentlicher Schlüssel des) B übermittelt
  • Ablauf des Empfangens einer Nachricht
    • Mittels HTTP-Long-Poll oder Server-Push wird die an (den öffentlichen Schlüssel des) B adressierte Nachricht vom Server (oder Servercluster) heruntergeladen.
    • Nachricht wird auf Client B mit privatem Schlüssel des B entschlüsselt.
    • Nachricht wird auf Client B mit öffentlichem Schlüssel des A entschlüsselt
    • Nachricht wird auf Client B gelesen.
  • Senden an eine Gruppe
    • wohl Senden mehrerer Nachrichten durch Client????
    • oder Gruppenserver mit privatem/öffentlichem Schlüsselpaar???
  • Hinzufügen eines Gruppenteilnehmers
    • ???
  • Austreten aus einer Gruppe
    • ???
  • Ausschließen aus einer Gruppe
    • durch Gruppeneigentümer - gibt es so etwas??
  • Ausschließen des Empfangs von bestimmten Gruppenteilnehmern
  • Ausschließen von Spam
    • Nur durch Geheimhaltung öffentlicher Schlüssel zur Identifikation der Teilnehmer ????


  • Hinterlegung der öffentlichen Schlüssel der Gesprächspartner in lokalen Kontakten des Smartphones

Weiteres aus dem Umfeld

  • Möglicherweise ist XMPP ein Standard, auf den ein solcher sicherer Client aufgebaut werden kann.
  • Für Android hat G Data mit Secure Chat bereits einen Open Source-Client und -Server entwickelt (aber wohl noch nicht dezentrale Serverstruktur).


Luigis Smart Home

Luigi möchte die Heizung seines Appartements selbst steuern und vielleicht irgendwann weitere Smart Home-Funktionen nutzen. Siehe Luigis Smart Home.

Halbautomatische Buchhaltung

  • Idee: Kontoauszüge werden automatisch - aufgrund bestimmter Regeln oder Muster - bestimmten Kategorien und Unterkategorien zugeordnet.
    • Eine Zahlung (bzw. Teilzahlung) kann auch mehreren Kategorien zugeordnet sein.
    • Manche Kategorienarten (Sammlung von Kategorien) müssen der Zahlung zugeordnet sein (d.h. die Zahlung muss mindestens/genau einer der Kategorien der Kategorienart zugeordnet sein).
  • Umsetzung
    • Für die Konvertierung in ein gemeinsames Datenformat kann Apache Daffodil eingesetzt werden.