Hello! 👋
ca057 / kirjanystaevaet Goto Github PK
View Code? Open in Web Editor NEWRepository for semester project @ University of Bamberg
Repository for semester project @ University of Bamberg
Hello! 👋
Welche Felder sollten von Open Search betroffen sein? Wirklich alle?
Ich würde vorschlagen:
Author
Title
Category
ISBN
Description
Ich bitte um eure Meinung!
Wie geht das richtig?
User können auch ohne Adresse existieren, daher muss vor einer Bestellung gecheckt werden, dass eine Adresse existiert.
Erläuterungen schreiben. Wenn Interface vorhanden, Javadoc dort schreiben und nicht in der Impl.
Vorgehensweise: Siehe E-Mail.
Thomas hat vorgeschlagen, anstatt Exceptions zu werfen, wenn möglich Errorcode-Enums zu verwenden.
D.h.: Wenn man etwas löschen will, was nicht vorhanden ist, wird das CategoryError.DoesNotExist Enum zurckgegeben.
Die Rückgabe kann dann eine Ebene drüber geprüft werden und dementsprechend darauf reagiert werden.
Was haltet ihr davon?
Kann es sein, dass Einträge mehrfach in der Datenbank vorhanden sind? Wenn man z.B. BookService.getBookByIsbn aufruft, kann es sein, dass das Ergebnis der Datenbankabfrage zweimal dasselbe Item enthält, was eigentlich nicht sein darf. Die ISBN ist doch der Key Oo
Zu diesem Orderproblem in der Datenbank.
Es soll dem Nutzer ermöglicht werden, seine Bestellungen, die er getätigt hat, einzusehen.
Problem: Ändern sich Daten in Book (Preis!), ändern die sich auch in der Order. Das sollte nicht sein.
Lösungsidee:
Es wird eine weitere Tabelle "Bestellliste" (Namensvorschläge gerne gehört) zwischen Book und Order gelegt. Die enthält als Identifizierer die Ordernumber, außerdem die ISBN (um wieder auf alle Daten von Book zu kommen), dann den Preis (Preis von Book zum Zeitpunkt der Bestellung) und die Anzahl des bestellten Produkts.
Order widerum enthält mehrere Bestelllisten (Name nicht gut gewählt, was haltet ihr von Orderitems?).
Zur Veranschaulichung seht eine Skizze des Schemas im Anhang.
Die Frage ist: Was außer Preis muss außerdem "archiviert" werden. Meiner Meinung nach nichts. Ändern sich andere Daten (Autor, Titel) dann haben wir auch ein anderes Bookobjekt mit einer anderen ISBN. Und Beschreibung und Bild empfinde ich nicht als wichtig genug zum Archivieren, weshalb da immer auf die Daten des aktuellen Bookobjekts zugeriffen werden sollte.
Ich bitte um ein Feedback, was ihr von diesem Schema haltet.
siehe Anforderungskatalog
Ich habe festgestellt, dass es zu Fehlern kommt, wenn man z.B. in der View auf Java klickt.
Das lässt sich auf folgendes zurückführen:
Es wird wohl CategoryService.getAllCategories aufgerufen.
Diese Methode ist jedoch nicht implementiert.
Es ist nur eine CategoryService.getAllCategoryNames implementiert, die eben alle CategoryNames liefert (als List)
Die Frage hier: Was braucht ihr an der Stelle? Wenn die Strings, verwendet bitte die entsprechende Methode.
Wofür soll die andere Methode sein? Um die IDs zu bekommen? Oder die Categories als Objekte (List)? Sagt, was hier sinnvoll wäre (wenn überhaupt) und ich implementiere das!
Wird bei der Suche Preis berücksichtigt?
Bzw. gleich die allgemeine Frage: Werden bei der Suche ALLE Searchfields zur Verfügung gestellt.
Wie bei Preis? Über einen exakten Wert, oder über einen Range mit Fancy-Schiebereglern?
Leere Liste?
Nach ein paar Minuten: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source
Damit wir dran denken:
Da Zugriffe auf alle statischen Ressourcen (/css/..
, /img/..
, /js/..
) keinerlei Authentifizierung erfordern, dürfen wir (falls es welche geben sollte) Nutzerbilder nicht in diesen Ordnern ablegen. Wir müssen uns irgendeinen Bereich schaffen, in dem wir diese "sensiblen" Informationen ablegen können.
Momentan werden in einem Objekt der Services immer derselbe Builder verwendet -> ungut. Lösung über lookup method injection?
Die Standardimplementierung für Spring-Security habe ich eingebaut, damit sollte ein Login eigentlich möglich sein. Derzeit ist das allerdings nicht möglich aufgrund der folgenden Fehlermeldung:
HTTP Status 403 - Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
→ Habe ich bei der Implementierung etwas übersehen?
→ Fehlt noch etwas?
Setzen der Setter sowie des Default constructors auf private
Lösungsansatz vll hier: http://stackoverflow.com/questions/26208087/spring-boot-oauth-2-0-userdetails-user-not-found
Das ist die Description
(Getestet habe ich das mit Autor:in (darauf bezieht sich im folgenden der "Datensatz")): Lege ich einen neuen Datensatz an und lade die Seite neu, existiert dieser in der Datenbank (siehe Autor:innen
löschen in der Dropdown-Liste). Ich kann mich auch aus- und einloggen, und der Datensatz ist weiterhin vorhanden. Falls aber der Security Context gecleart wird (siehe Console in STS, passiert nach einiger Zeit oder wenn man schnell oft neu lädt (so erscheint es mir zumindest)), ist nach einem erneuten Login (muss gemacht werden, weil man rausgeschmissen wird) der Datensatz nicht mehr vorhanden. Da wird also irgendwas noch nicht so absolut richtig abgespeichert.
Bei der Implementierung der getBooksByMetadata-Methode sind einige Fragen für mich offen:
Do not show these ugly spring error pages
Wie sehen die einzelnen Logins aus? Entsprechend sollten die Views definiert werden.
Der Nutzer muss eine Email eingeben? Als input-type email verwenden etc.
Es würde sich für die Views anbieten, die Services abzuändern. Vermutlich reicht es, wenn wir mit einem weiterarbeiten und dann z.B. eine Methode getAll(Enum entity) haben. MMn würde sich das auch vom Abstraktionslevel auf dieser Ebene anbieten.
Einschränken der Sichtbarkeit von Methoden / Variablen so weit wie möglich -> package private bzw. private
Variablen als final markieren, falls möglich und sinnvoll
Parameterabfrage einbauen
Aktuell stehen alle Seiten, die ohne Authentifizierung aufgesucht werden können, in der Security-Config drin. Um diese Liste nicht jedes Mal ergänzen zu müssen, kann man das über Annotationen oder Aspect Oriented Programming lösen?
siehe Kommentare in SecurityConfig
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.