DokuWiki

It's better when it's simple

User Tools

Site Tools


playground:playground

Photo editing

Photo editing is the process of modifying a photograph to achieve a desired output. Photo editing was one of the many topics that was covered during the orientation course. We specifically worked with digital photographs using an editing tool to help us alter our photos. The main tool we used was GIMP, which is an image manipulation program, but we also used RawTherapee to process our raw images first.

Contents
Row 1 col 1
Row 2 Col 1
Row 3 Col 1

Before utilizing any software, we learned about different raw file formats, their extensions, and image data. We also learned about EXIF data, “which is short for Exchangeable Image File, a format that is a standard for storing interchange information in digital photography image files using JPEG compression.exifdata

When using GIMP, we learned the effect image compressing has on the quality of the image. When preparing a photo for the web, finding a balance between compression, and quality is important. In addition to image compression, Scaling is also important so the image looks proportional. All of this can be done with GIMP, and when optimizing the image we can set the file type according to the use of the image.

Einleitung

Um die neuen Use-Cases des Pattern Editors zu erfüllen, muss der Pattern Endpunkt einzelne Pattern laden können und speichern/aktualisieren. Die beiden Standard Cases sind:

  1. Ein Pattern wird mithilfe des Editors erstellt und soll in der Datenbank abgelegt werden
  2. Ein Pattern wird aus der Datenbank geladen und im Editor verändert und danach erneut gespeichert werden

Anforderungen

IST-Zustand

Der Endpunkt kann keine Pattern speichern/aktualisieren. Der Endpunkt kann keine einzelnen einzelnen Pattern Gruppen laden.

SOLL-Zustand

Der Endpunkt pattern.controller.ts soll um die folgenden Punkte erweitert werden:

Diese Methoden sind über folgende Endpunkt erreichbar:

get pattern/user/{eMail}/{patternIdentifier} ---> getUserPattern
get pattern/role/{userRoleName}/{patternIdentifier} ---> getUserRolePattern
get pattern/default/{patternIdentifier} ---> getDefaultPattern
put pattern/ {email}/{patternIdentifier} ---> saveUserPattern
put pattern/{userRoleName}/{patternIdentifier} ---> saveUserRolePattern
put pattern/default/{patternIdentifier} ---> saveDefaultPattern

Umsetzung

Ablauf

Save/Update

  1. Der Endpunkt wird aufgerufen
  2. Es wird geprüft, ob sich bereits ein Pattern mit den übergebenen Kriterien in der Datenbank befindet, sollte dieser Fall eintreten
  3. Das übergebende Pattern wird in eine PatternBuilder importiert
  4. Anhand der übergebenen Parameter wird das Pattern erweitert, sodass es möglich ist es an den PatternToNeo4j Parser zu übergeben
  5. Das erzeugte Cypher wird mithilfe des neo4j service ausgeführt

Diagramm ablauf_save_pattern.wsd einbinden

Get

  1. Der Endpunkt wird aufgerufen
  2. Anhand des PatternIdentifiers wird ein Pattern erstellt, das die betroffene Element lädt
  3. Mithilfe der Parameter wird das Pattern um entscheidende Wert angereicht. Dieser Werte können Benutzer Email oder Benutzerrollen Name sein
  4. Das erzeugte Cypher wird mithilfe des neo4j service ausgeführt

Schritt 1

Erstellen der Endpunkt. Die Endpunkt müssen wie in dem oben zu sehenden Diagramm umgesetzt werden. Dabei sollen 6 neue Endpunkt entstehen. Diese sollen mit einem e2e Test versehen werden, ob die über die angedachte URL verfügbar sind.

Schritt 2

Die Klasse patternIdentifierToNeo4j.parser.ts muss refakturiert werden. Innerhalb der Klasse muss der gemeinsame Code der Methoden createUserCypher und createUserRolePattern zusammengefasst werden. Dazu ist es nötig, den PatternBuilder um eine weitere Methode zu erweitern. Diese Methode soll den Index eines Knoten anhand des Namen wiedergeben. <WRAP center round important 60%> Hier verstehe ich das “wozu” nicht? Kannst du das erläutern? </WRAP>

Schritt 3

Die Methoden getUserPattern, getUserRolePattern, getDefaultPattern der Klasse pattern.service.ts werden zu öffentlichen Methoden und müssen eine eigenständige Testabdeckung erhalten. Auch ist es nötig, dass die Testdaten erweitert werden.

Schritt 4

Es müssen acht neue Klassen erstellt werden. Diese haben folgende Aufgaben:

  1. Laden von Pattern
  2. Umwandeln eines Graph Results in ein PatternDto[]
  3. Entscheiden, ob create oder update
  4. Erstellen eines Patterns zum Createn
  5. Erstellen eines Patterns zum Updaten
  6. Createn von Pattern in der Datenbank
  7. Updaten vom Pattern in der Datenbank

Schritt 5

Der pattern.loader.ts stellt kann dazu verwendet werden Pattern anhand ihrere Identifiers aus der Datenbank zu laden. Seine Methoden geben ein oder mehrere PatternDto wieder.

Schritt 6

Der pattern.converter.ts konvertiert ein GraphResult zu einem PatternDto oder einem Array von PatternDto.

Schritt 7

Der pattern.saveActionDecisionMaker.ts trifft die Entscheidung, ob ein Pattern aktualisiert werden muss oder es sich um ein neues Pattern handelt und es in der Datenbank neu erstellt werden muss.

Schritt 8

Der pattern.createStoredPatternPatternCreator.ts erzeugt mithilfe seiner Parameter ein Pattern, das einen neuen Pattern Knoten in der Datenbank hinterlegt.

Schritt 9

Der pattern.updateStoredPatternPatternCreator.ts erzeugt mithilfe seiner Parameter ein Pattern, das einen neuen Pattern Knoten in der Datenbank hinterlegt.

Schritt 10

Der pattern.creator.ts ist dafür verantwortlich ein Pattern neue Pattern zu beziehen.

Schritt 11

Der pattern.updater.ts ist dafür verantwortlich ein Pattern zu aktualisieren.

<WRAP center round important 60%> Anstatt hier viele einzelne Klassen zu sehen, hätte ich lieber ein Diagramm mit alle drin, in dem auch Abhängigkeiten sichtbar sind. </WRAP>

playground/playground.txt · Last modified: 2018-10-04 19:45 by amanuela