[SAMMELTHREAD] Kleine Coding Fragen

  • @tomson


    Guck dir Mal die "Marker" von der Google Maps API an, da kannst du quasi eigene Marker mit Icon usw. Definieren musst dann halt nur die Route anzeigen bzw. die Karte in X Intervallen aktualisieren. Aber Achtung, bei ~ 500 Markern auf einer Map wird's langsam.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Ich bräuchte mal einen kleinen Tipp: Also erstmal, es geht um Java.


    Ich habe eine Klasse "Bericht" mit einigen Attributen, darunter eine Liste mit "Seiten". Diese Seiten enthalten jeweils eine Liste an "Objekten", und diese wieder eine Liste an "Konfigurationen". (Das sind alles JPA-Entitäten)
    Also Bericht -> Seite[n] -> Objekt[e] - Konfiguration[en]. Aus diesem Objekt "Bericht" möchte ich nun eine Prüfsumme berechnen, damit ich anhand dieser Summe überprüfen kann, ob sich eine Eigenschaft im Bericht geändert hat,
    eine neue Seite hinzugefügt wurde, eine vorhandene Seite editiert wurde, ein Objekt, oder dessen Konfiguration angepasst wurde, o.Ä.. Diese Prüfsumme wird zum Abgleich in eine Datenbank gespeichert.


    Nun bräuchte ich einen Tipp, wie ich das realisieren kann. Ich wäre sehr dankbar.
    Wenn das mit einer Prüfsumme nicht geht, oder ein anderer Weg sogar effizienter / besser ist, dann wäre mir das auch recht. Ich möchte bloß Änderungen erkennen können in meiner Software.

  • Zwischenfrage: Wie willst du darauf reagieren ob Änderungen vorgefallen sind? Also im laufenden Betrieb oder erst bei einem Ereignis?


    Prinzipiell würde ich einfach mit Timestamps arbeiten und daran entscheiden, ob du eine Aktualisierung für deinen Bericht vornehmen musst. Am besten lässt sich sowas mit einem Database listener realisieren, bei welchem du mit einer Art "Background worker" die Aktualisierungen deiner verschiedenen Attribute vornimmst.


    Bin jetzt nicht wirklich vertieft in Java, aber das wäre eine Möglichkeit vorzugehen.

  • Ein solcher Bericht kann von beliebigen Usern erstellt / verändert werden. Sobald ein solcher Bericht in der Datenbank vorhanden ist, hat man die Möglichkeit, diese in eine PDF-Datei zu konvertieren und herunterzuladen, oder per Mail zugeschickt zu bekommen. Nachdem nun so ein Bericht konvertiert wurde, und die PDF-Datei vorhanden ist, kommt irgendein User an und erweitert diesen Bericht um zusätzliche Objekte. Da der Bericht dann nicht mehr mit der generierten PDF übereinstimmt, möchte ich, dass man diesen Bericht neu konvertieren muss, bevor man die Datei weiter herunterladen kann o.Ä.. Daher dachte ich, das man das eventuell anhand einer Prüfsumme ermitteln kann. Ich hoffe, es ist verständlich, was ich meine.

  • Und wieso möchtest du unbedingt mit einer Prüfziffer arbeiten? Das ist meines Erachtens nach nicht der Sinn einer Prüfziffer. Du kannst doch ganz einfach, für den Bericht ein Timestamp in die Datenbank hinzufügen und überprüfen ob dieser aktueller ist, als der derzeitig verwendete.


    Sprich, sobald User A abspeichert, aktualisierst du den Timestamp in deiner Datenbank. Wenn jetzt User B den Bericht herunterladen möchte, prüfst du die Timestamps ab und forderst den User B bei bedarf auf, den Bericht neu konvertieren zu lassen.


    # Unter Umständen musst du noch eine Art Sperre hinzufügen, nicht dass es zu dem Fehler kommt, das Benutzer A noch bearbeitet und Benutzer B gleichzeitig herunterlädt.

  • Wie gesagt bin ich mir selber nicht sicher, daher meinte ich ja, dass mir effizientere / bessere Vorschläge recht wären. Das mit der Timestamp ist natürlich eine gute, simple Idee. Dummerweise (peinlicherweise) ist mir sowas gar nicht in den Sinn gekommen. Dann werde ich es mal so versuchen, statt mir unnötig den Kopf zu zerbrechen. Danke!

  • Würde auch gerne hier die Frage stellen:
    Es gibt ja unterschiedliche Möglichkeiten bzw. Programmiersprachen Andoid-Apps zu programmieren bspw. mit Java oder C++.
    Jedoch würde es mich mal interessieren welche Sprache ihr bevorzugen würdet unabhängig der Funktionen der APP. Ist Java generell die bessere Wahl oder doch lieber eine andere im Bezug auf Performance und "Schönheit" der Programmiersprache.


    (Am Handy verfasst)

  • Wenn man das macht, sollte man nicht vergessen, dass es sein kann das Google die Java APIs in Android entfernen muss.


    Es gibt aber auch andere Sprachen außer C++/Java mit denen man eine Android App entwickeln kann.
    Du solltest das wählen, mit dem du deiner Meinung nach am besten umgehen kannst.


    Ich würde an dieser Stelle auf jedenfall von C++ abraten, ist viel zu mächtig für eine "kleine" App und man kann dort auch schnell viel falsch machen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • @Akino Kiritani Danke für die Information.
    Es geht mir nicht direkt darum, mit welcher ich am besten umgehen kann. Ich kann von Java und von C++ Grundlagen und würde mich dementsprechend genauer einlesen.
    Soweit ich weiß, unterstützt Android C++, Java und Kotlin, daher würde es mich Interessieren, welcher dieser 3 die beste ist bzw. was für Vor- und Nachteile es hat.


    Und wenn ich fragen darf, wieso sollte Google die Java APIs entfernen müssen? Android wurde (soweit ich weiß) auch in Java geschrieben bzw. basiert auf Linux.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Android wurde (soweit ich weiß) auch in Java geschrieben bzw. basiert auf Linux.

    Es bassiert auf einem Linux Kernel, aber dieser basiert nicht auf Java.
    Das einzige was an Android Java ist/war ist die API, die genutzt wird um Apps zu schreiben.


    Damit ist nicht die API die Google mit Android bereitstellt gemeint, sondern die die Google vom Java SDK hat.


    Und wenn ich fragen darf, wieso sollte Google die Java APIs entfernen müssen?

    Es gibt da einen Rechtsstreit... Lizenzen und son Kram...
    https://www.golem.de/news/orac…fair-use-1803-133557.html


    ich sagte nicht, dass Java evtl. entfernt werden muss, sondern die Java API.



    Um deine Ursprüngliche Frage zu beantworten, ich würde Kotlin wählen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ok vielen Dank, nachdem was du gesagt hast wäre es Sinnvoll sich mit allen drei Programmiersprachen zu beschäftigen und sich dann je Gebiet zu entscheiden.
    Mein Plan wäre wie folgt:
    1. Java (aufgrund da ich noch ein Buch für App-Programmierung besitze)
    2. Kotlin
    3. C++


    Mal sehen was daraus wird :D


    (Am Handy verfasst)

  • Android verwendet schon seit einigen Versionen die API von OpenJDK. Da muss überhaupt nichts mehr entfernt werden. Es geht bei dem Rechtsstreit eigentlich nur noch um den Schadensersatz für die älteren Versionen sowie ein Stück weit ums Prinzip. Kotlin hin oder her: Java wird noch für viele Jahre die bevorzugte Sprache zur Entwicklung nativer Android Apps bleiben. Da wirst du gerade als Einsteiger auch mit Abstand den meisten Support und am ehesten Hilfe erhalten.

  • Android verwendet schon seit einigen Versionen die API von OpenJDK. Da muss überhaupt nichts mehr entfernt werden. Es geht bei dem Rechtsstreit eigentlich nur noch um den Schadensersatz für die älteren Versionen sowie ein Stück weit ums Prinzip. Kotlin hin oder her: Java wird noch für viele Jahre die bevorzugte Sprache zur Entwicklung nativer Android Apps bleiben. Da wirst du gerade als Einsteiger auch mit Abstand den meisten Support und am ehesten Hilfe erhalten.

    Danke für die ausführliche Erklärung, dann werde ich an meinem Plan festhalten und erst einmal mit Java anfangen :)


  • Ich hab selber einige Apps entwickelt in allen möglichen Sprachen, darunter alles mögliche von enterprise applications, kleine Spiele, AR-Apps ... .


    Nach meinen Erfahrungen nach ist die Frage was du halt zum Schluss erreichen möchtest ?
    Btw: Das Gerücht das Google von Java abspringen möchte wegen Lizenz-Rechten ist eher nicht denkbar, da es zahlreiche Android Apps gibt die mit Java entwickelt wurden und Google ist in dieser hinsicht nicht so aggressiv wie Apple.


    Aber zurück zum Thema wenn es dir darum geht in das Thema reinzuschnuppern und mit Android anfangen willst kann ich dir nur Java empfehlen zwar ist es etwas schwierig neuere Tutorials zu finden (in bezug auf berechtigungsvergabe hat sich da einiges geändert), aber es wird wahrscheinlich keine Problemstellung geben was nicht irgendwann mal gelöst wurde und zahlreiche Tutorials in alle Varianten. Als Tipp am rande hierzu nutze am besten android studio und dein eigenes gerät zum testen der app - das geht schneller ;).


    Falls du das Ziel hast damit mal Geld zu verdienen würde ich zu C# und Unity wechseln um damit Apps zu entwickeln, damit kannst du ios, windows phone und android abdecken und es gibt so gut wie fast jede library oder Kit als Unity Plugin. Der andere Ansatz wäre hierbei cross-platform zu gehen mit React-Native oder Nativescript hierbei ist es später sinnvoll eigene plugins zu entwickeln weswegen du swift oder objective C beherrschen solltest weswegen C++ der bessere ansatz wäre anzufangen.


    Desweiteren gibt es noch hybrid-apps oder progressiv web apps => PWA falls du dir das auch mal anschauen möchtest :)

  • Neben PWAs gibts aber auch noch cordova bzw. ionic oder aber react-native usw. Damit baust du dir quasi die App in Javascript & Co. zusammen. So laufen sind aktuell auch in meiner Feder einige Apps entstanden, sei es die Hetzner Cloud App oder die Hetzner Status App.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Aber zurück zum Thema wenn es dir darum geht in das Thema reinzuschnuppern und mit Android anfangen willst kann ich dir nur Java empfehlen zwar ist es etwas schwierig neuere Tutorials zu finden (in bezug auf berechtigungsvergabe hat sich da einiges geändert), aber es wird wahrscheinlich keine Problemstellung geben was nicht irgendwann mal gelöst wurde und zahlreiche Tutorials in alle Varianten. Als Tipp am rande hierzu nutze am besten android studio und dein eigenes gerät zum testen der app - das geht schneller ;).

    Danke für die Info, habe auch noch ein Buch spezifisch für Android-Studio und Android 5.1.
    Die Dokumentation hier ist auch ganz gut, werde mich auch mit dieser beschäftigen :)



    Neben PWAs gibts aber auch noch cordova bzw. ionic oder aber react-native usw. Damit baust du dir quasi die App in Javascript & Co. zusammen. So laufen sind aktuell auch in meiner Feder einige Apps entstanden, sei es die Hetzner Cloud App oder die Hetzner Status App.

    Danke für die Info, werde es mir mal ansehen.

  • Irgendwie halte ich mich an diesem Problem zu lange auf, es geht um SQL (MySQL)


    Zwei Tabellen: in einer Tabelle A finden sich alle Daten wieder, in der anderen Tabelle B finden sich abgeänderte Einträge der Tabelle A des Benutzers wieder, welche sich eindeutig durch eine ID identifizieren lassen. Jetzt soll der Benutzer (z.B. auf der Startseite) alle Daten sehen können inklusive den Daten, die er geändert hat.


    Also auf der Startseite müssen jetzt sozusagen alle neutralen Daten der Tabelle A wiederfinden inklusive den Abänderungen aus der Tabelle B.


    Tabelle A


    id farbe preis
    1 NULL 13,50
    2 Blau 14,00




    Tabelle B ( Benutzeränderungen)



    id farbe preis user
    1 Gruen 13,50 test




    Ergebnis auf der Startseite des Benutzers test



    id farbe preis
    1 Gruen 13,50
    1 Blau 14,00




    Ergebnis auf der Startseite des Benutzers Hallo


    id farbe preis
    1 NULL 13,50
    2 Blau 14,00






    Wäre sehr dankbar über ein paar Denkanstöße, meistens war es bei mir so, dass sobald ich den Benutzer abgefragt habe nur noch die Daten angezeigt wurden, welche er bearbeitet hatte und nicht alle weiteren.

  • @Devine_ einfachste Lösung wäre ein UNION zu machen, also erst alle des Nutzers, dann alle die nicht vom Nutzer sind. Alternativ kannst du ja theoretisch auch zweimal auf eine Tabelle Joinen nur das du dann die ON Clause umdrehst.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Ok probiere ich mal aus, mal wieder viel zu kompliziert gedacht. Aber hätte ich bei zwei JOINs nicht auch den Fall, dass sobald ich den Benutzer Abfrage, nur Resultate des Benutzers angezeigt werden? Hatte echt schon fast alles probiert (COALESCE, FULL OUTER JOIN etc.).