Beiträge von timtim

    Nö, für die Verwendung von htmlspecialchars in Kombination mit mysqli_real_escape_string gibt es keinen Anwendungsfall-

    PHP
    1. <?php
    2. $string = "Arne's Haus";
    3. $db = new mysqli('localhost','root',null);
    4. $value = htmlspecialchars($db->real_escape_string($string),ENT_QUOTES);
    5. echo "<button data-value='$value' onclick='alert(this.getAttribute(\"data-value\"))'>Zeige Escapeten Wert!</button>";

    8o never say never

    Arne Drews Siehe Edit

    Hi Basti,


    die Frage ist immer was du erreichen möchtest.

    Wenn du HTML in der DB suchen möchtest und du das auch beim schreiben in die DB machst, dann 'ja' weil sonst nach <p>hallo<p> gesucht wird, in der DB aber der Escapete wert steht. Ob es sinnvoll ist, das ganze escaped in die DB zu schreiben ist eine andere Frage.


    Aber auch hier wieder, Anwendungsfall.


    In dem speziellen Fall, nach den Inhalten würde ich sagen nein.


    Edit: Schlimmer noch, es wird ja erst der Escape ausgeführt und dann das htmlspecialchars, ich habe gerade keine zeit das zu testen, aber das macht ggf. kompletten murks, da auch ' escaped wird, was ggf. von mysql_real_escape vorher escaped wird. Ich kann gerade nicht prüfen wie, aber ich glaube damit bekommst dann neue Möglichkeiten für injections.


    Grüße


    Timo

    Hallo Kevin,


    für die Softwareentwicklung brauchst du weder eine Ausbildung noch eine Zertifizierung oder ähnliches. Wenn du die Softwareentwicklung in dem bereich beherrschst in die du möchtest, steht dir nichts im Weg dich als Softwareentwickler zu bewerben oder dich damit Selbständig zu machen.


    Je nachdem in welchen bereich du möchtest, musst du aber einen Arbeitgeber und/oder Kunden davon überzeugen das du der richtige für das vorhaben bist und da können Zertifikate / Ausbildung / Studium helfen (Ab einer bestimmten Berufserfahrung sieht das wieder anders aus).


    Zertifikate gibt es sehr viele, die man machen könnte, aber ob diese von den AG als gut oder brauchbar angesehen werden, ist schwer vorherzusagen. Ich selbst mache jedes Jahr mehrere Zertifikate, diese aber meist gezielt für bestimmte Software, Vorgehensweisen (immer abhängig an was und mit was gerade gearbeitet wird). Diese Zertifikate sind gerne gesehen da diese oft mit dem Partnerstatus (z.B. Bronze- / Silber- /Gold-Partner Status) zusammenhängen oder Kunden bestimmte Zertifikate voraussetzen (Projektmanagement, Software, Testing).


    Ich habe regelmäßig Bewerbungen vor mir liegen und wenn es um Berufseinsteiger / Quereinsteiger geht, achte ich besonders darauf, was die Leute zu einem davor gemacht haben (Gibt es da einen Bezug zur Informatik / Softwareentwicklung oder den Fachlichen Themen die wir betreuen) zum anderen was gibt er als Kenntnisse an (sind da dinge drin, welche wir im unternehmen nutzen) da es sehr viele verschiedene bereiche gibt, in die man bei der Softwareentwicklung gehen kann.


    Wenn man nun keine Ausbildung in dem bereich hat und auch keine Projekte die man referenzieren kann, gibt es aber weitere Möglichkeiten, schon vorher zu zeigen was man so kann (gerade bei Quereinsteigern ist das interessant). z.B. der Bewerbung einen GitHub (o.ä.) Account hinzuzufügen in dem du Sachen umgesetzt hast (als Referenz deiner Fähigkeiten).


    Xing oder Linkedin Profile sind auch sehr nützlich vor allem wenn man schon Berufserfahrung hat (je nachdem was man da drin hat, schreiben einen pro Woche 1-20 Headhunter an).


    Da Entwickler in DE aktuell sehr gefragt sind, kann man, sofern man einiges beherrscht, darauf hoffen, von den Firmen angeschrieben zu werden. Aber gerade das Thema Quereinsteiger ist in dem bereich so häufig, das man sich da nicht viel sorgen machen muss komisch angesehen zu werden. Die Frage ist, wieviel zeit du hast und ob du ggf. 2 Jahre Investieren möchtest um die Ausbildung zum Fachinformatiker noch machen möchtest (das alter ist fast egal, bei mir hatten wir das alter von 16-49 in dem Jahrgang).


    Soweit mal meine Ansichten zu dem Thema :)


    Viele grüße


    Timo

    Ich vermute aber, wenn es funktioniert, wäre es gut wenn jeder deiner Kollegen darauf zugreifen kann und am besten über die gleichen Daten verfügt.

    Da macht ein zentraler Server natürlich mehr sinn, als die indexedDb im Browser (die könntest du dann ja komplett ungenutzt lassen). Du musst ggf. auch bedenken wenn sich die URL ändert oder jemand sein Profil löscht, sind die Daten ja alle weg, also die indexedDb als einzigen Speicherort ist für eine Software die in einer Firma laufen soll und vermutlich auch gebackuped, eher schlecht ;).


    Grüße


    Timo

    Hallo Bernhard,


    so macht das schon mehr sinn.


    Zu deinem festplatten Problem, wenn es Windows eigen sein soll, würde ich dir vorschlagen mit Powershell das auslesen des Ordners zu machen, da bekommst du auch alle Daten (z.B. auch erstellt von, zuletzt bearbeitet usw). Powershell ist ein Windows eigenes Tool, daher sollte es vorhanden sein.


    Zu deiner zweiten Anwendung, das über lokale Dateien zu machen, würde ja bedeuten das du jedesmal die JSON Datei in den Browser laden musst und danach die Datei wieder "herunterladen" das ist schon eher unelegant. Aber ich würde dir raten, das erstmal so zu schreiben, wenn das funktioniert, lässt sich die JSON Datei ja einfach gegen einen z.B. in PHP geschriebenen Service der Json zurück gibt, ersetzten (Stichwort WebApi / Rest).


    Ich glaube wenn die Software euch die Arbeit vereinfacht und du aufzeigen kannst, was ihr dabei an Zeit = Geld spart, sollte man dann ggf. auch mit den verantwortlichen sprechen können, damit da ein Server bereitgestellt wird oder das lokal installiert werden kann. Das mit der Wartbarkeit ist auch kein Argument mehr wenn man aufzeigt wie es Dokumentiert wird und das die Implementierung "standards" benutzt welche fast alle Entwickler verstehen :)


    Grüße


    Timo

    Hi Knieshot,


    das mit der abgrenzung verstehe ich, darf ich erstmal rein aus interesse fragen was für eine Software du versuchst zu erstellen? Ggf. ist die IndexedDb dann auch begrenzt.

    - um die Daten evtl. mit anderen Browsern zu teilen gibt es eine extra-Abteilungs-Netzwerkfestplatte (die ist leider etwas zugemüllt und die Suche dauert etwas)

    - Zwar kann man mit Windows Ordner und Dateien indexieren, aber leider nur die vom PC


    Deshalb wäre IndexedDB eine richtig gute Lösung gewesen um ein wenig Licht ins Dunkel zu bringen. Leider wird hier wohl ein Server benötigt.

    Das hier macht mich etwas stutzig, es hört sich an als wolltest du mit dem Programm die Dateien durchsuchen?


    Je nachdem was es "ungefähr" ist (ich weiß das meist nicht zu viel Informationen zu Internen Projekten geteilt werden dürfen), aber wenn man es abstrakt genug formuliert geht das aber meist :)


    Grüße


    Timo

    Hi Knieshot,


    da es eher untypisch ist, lokale Anwendungen für den Browser in JS/HTML zu erstellen und das auf längere Sicht zu mehr Problemen führt, würde ich nochmal nachfragen, ob ein Server komplett ausgeschlossen ist, oder ob hier auf dem Rechner eine zusätzliche Software installiert werden darf mit NodeJs oder ggf. Electron kannst du das ganze per JS/Html schreiben und dennoch nur lokal laufen lassen.


    Alternativ, kannst du stat der IndexDb den LocalStorage nutzen, der läuft auch bei Dateien im FileSystem: https://developer.mozilla.org/…b/API/Window/localStorage.


    Aber auch hier hast du die Daten nur im aktuellen Browser, zwar auf lange zeit, aber um die Daten zu exportieren oder zwischen verschiedenen Programmen/Browsern zu teilen, musst du dir eine eigene Logik bauen.


    Wenn das eine Software sein soll, die von mehreren Leuten benutzt wird oder die in Zukunft weiterentwickelt werden soll, dann sollte man sich eher dran machen dem Chef / der IT klar zu machen, warum ein Server oder ein lokales Programm hier der richtige weg ist.


    Grüße


    Timo

    Hallo Mike218,


    der Code ist auch fast komplett korrekt. Du hast aber einen Syntax-Fehler im Code (ein Zeichen an einer falschen stelle).


    Diesen sollte man auf zwei Wege leicht finden:


    1. IDE: Worin schreibst du den JS-Code? Ich würde dir ein Editor empfehlen der dich ein wenig bei den Syntaxfehlern und bei den richtigen Key-Wörtern unterstützt. VS-Code ist für JS meine empfehlung.


    2. Konsole des Browser: Wenn du F12 drückst und dort in der Console schaust, werden die Fehler (gerade Syntax-Fehler) angezeigt. Schaue dort mal nach was für ein Fehler auftaucht ;).


    Mit den zwei Punkten oben, sollten die Fehler schnell gefunden sein ;)


    Grüße


    Timo

    Hi, m.scatello,

    Ich denke, diese Meinung hast du relativ exklusiv

    Falls ja, würde es erklären, warum ich so häufig schlecht ausgebildete und unmotivierte Entwickler treffe. Ich Trainiere Anfänger - Profis und unterstütze häufig Anfänger in der Software-Entwicklung, ich bin da bisher ganz gut unterwegs.


    Klar, wenn man sich nicht um Sicherheit, Erweiterbarkeit, etc. kümmert,

    Diese aussage trifft auf jegliche Software zu und das ist ein Thema für Fortgeschrittene Entwickler. Ich fange bei Anfängern nicht mit Clean-Code an, ohne das Sie das Werkzeug und das Handwerk verstanden haben.


    Da gibt es deutlich bessere Projekte für Anfänger.

    Nochmal, das beste Projekt für einen Anfänger, ist das, worauf er lust hat. Um nochmal die Referenz mit den Trainings die ich durchführe einzubringen. Die meisten Entwickler die Anfänger-Tutorials durch machen sich noch ein Buch kaufen aber weder Kreativität noch die Motivation haben, eigens überlegte Probleme zu lösen oder eigene Konzepte/Ideen umzusetzen, haben es meisten schwer. Am erfolgreichsten bin ich meist mit denen, die auf etwas lust haben, die wissen dann warum sie bestimme Sachen lernen... Versuchen im RPG-Maker mit Ruby Logik zu entwickeln, Minecraft-Mods in Java, ein PHP-Code weil sie unbedingt ein Browsergame schreiben wollen.. alles nicht "typische Anfänger-Themen" aber die Leute haben meist eine Motivation und Grund es zu lernen.


    Mein erstes Programm war ein Text-Adventure in Windows-Bash und direkt danach mit PHP und HTML versucht ein Browsergame-RPG zu erstellen (so Semi-erfolgreich). Weder Sicherheit, noch Erweiterbarkeit noch Performance hat da eine rolle gespielt. Aber wenn du an etwas Arbeitest was du verfolgst, dann wirst du irgendwann lernen wollen, wie das mit der Sicherheit, Erweiterbarkeit usw. läuft.


    Irgendwie brauchen wir eine Funktion, die teile aus Beiträgen in ein "Der Meta-Thread" schieben können :D


    Grüße


    Timo

    Ich halte ein Chat für ein gutes Anfänger-Programm.


    Die meisten Leute verstehen was Chats können müssen, weil es etwas ist, was jeder kennt und man hat genügend beispiele was für Funktionen es gibt.

    Weiter ist es zum lernen essentiell ein Projekt zu haben, das einem Spaß macht, ob das nun fertig wird oder am ende überhaupt sauber funktioniert, ist in der lern Phase ja fast egal.


    Chats gehören bei mir auch noch heute zu jedem "Hallo World"-Programm, welches ich in neuen Sprachen oder neuen Frameworks entwickle um Netzwerk-Funktionalitäten auszutesten.


    Daher würde ich dir ( CuzImCloud ) damit weiterzumachen, auch wenn du den Chat nicht unbedingt öffentlich bereitstellen solltest. Aber um damit zum Spaß mit ein paar freunden oder so zu schreiben, sollte nichts im Wege stehen ;).


    Grüße


    Timo

    Hi CuzlmCloud,


    dadurch wie Http funktioniert, können wir leider nicht herausfinden ob jemand was neues geschrieben hat, bzw. nur sehr schwer. In den meisten fällen lässt man einfach eine Zeit-gesteuerte schleife laufen, welche alle x Millisekunden die Datei neu lädt.


    Was du suchst ist per JS möglich über setInterval oder setTimeout, schau dir diese Funktionen mal an.


    Viele grüße


    Timo

    Hi Visierrunter,


    um das mit der Systemzeit oder dem Seed zu verstehen, muss man wissen, wie Zufallszahlen in Computern / Programmen erzeugt werden. Das Problem ist, das Computer sehr gut Sachen berechnen und dabei immer das gleiche Ergebnis produzieren. Was Computer nicht können, ist etwas "Zufällig" zu erzeugen. Also nutzt man hier auch Berechnungen.


    Wenn man etwas wie rand() aufruft läuft im Hintergrund eine Berechnung los mit srand() kann man den Random-Generator "seeden". Anhand des Seeds wird die Zufallszahl berechnet. D.h. wenn man immer den gleichen Seed einträgt, bekommt man immer die gleichen "Zufallszahlen" (welche damit dann nicht mehr zufällig wäre). Damit man vorher nun schwerer weiß, welche zufällige zahl herauskommt, versucht man beim Aufruf jedesmal einen anderen seed mit zu geben. Etwas das sich dafür eignet ist die Systemzeit in Millisekunden, da diese ja "jede" Millisekunde anders ist. (wenn man srand() vorher nicht aufruft, nutzt die Funktion rand() die System zeit im Standard).


    Um das zu testen:


    PHP
    1. <?php
    2. $r = srand(123);
    3. echo rand()."<br/>";
    4. echo rand()."<br/>";
    5. echo rand()."<br/>";
    6. ?>

    Wird immer folgende Ausgabe liefern:


    Code
    1. 1495656191
    2. 1531059894
    3. 614479551


    Da der Seed am Anfang der gleiche ist (Man bekommt zwar nach jedem Aufruf von rand eine andere zufällige zahl, aber diese zufälligen zahlen bleiben in der Reihenfolge gleich).


    Nun stellen sich zwei Möglichkeiten:

    1. Ich will vorher nie wissen welche zufällig zahl ich bekomme, deshalb seede ich rand() jedesmal mit einen neuen wert (z.B. der Systemzeit).

    2. Ich möchte immer die gleichen Zufallszahlen (in der Reihenfolge) erzeugen also nutze ich z.B. die ID des Users (Ein einfaches beispiel ist hier schwer, aber nehmen wir z.B. Computer-Spiele, welche Zufällig generierte Karten haben, wenn ich einen Seed selbst angeben kann, bekomme ich zwar immer eine zufällige karte, aber ich kann diese immer wieder gleich generieren, was z.B. ein vorteil ist, wenn ich dies mit anderen Leuten teilen möchte).


    Grüße


    Timo

    Das Passwort kann verschlüsselt werden.

    Das ist zwar richtig, aber du erlaubst dennoch jedem, solange das Token gültig ist, über den eingetragenen SMTP, Mails zu versenden. Was du hier einbindest ist ja nicht nur ein Package, dahinter steht ja ein Service der genutzt wird. Hier wird eben der Request mit den Zugangsdaten an smtpjs (Server) gesendet und die senden dann Mails über dein smtp Server.

    Im gleichen Zuge könntest du auch selbst z.B. ein PHP-Script hosten welches Mails versendet und du es über eine API ansprechen kannst. Da hast ggf. noch mehr Sicherheit :D


    Grüße


    Timo

    Arne Drews


    Da es um eine Code-Competition geht, geht es hier ja eher darum etwas neues zu entwickeln und dabei bestimmte Technologien zu verwenden. Meist müssen diese weder Sicher noch Performant sein (Es sei denn, das ist das Thema :P)


    In den seltensten fällen erblickt glaub ich sowas den Produktiven Einsatz.


    Weiter ist die smtp.js eigentlich für den Einsatz auf nodeJs gedacht, daher kommt da ja der Client nicht dran. Oder wenn für Interne Systeme dann ist es egal, aber die seite hat nur 2 bereiche, etwas drunter kannst du auch den Sec-Token hinterlegen. Wie gesagt, es ist eher nicht für Public-websites gedacht :).


    Stef

    Nachdem was ich da gelesen habe, wird NodeJS erlaubt sein, genauso wie PHP, solange du eine einfache Installation hin bekommst. Was ja durch ein Docker-Container möglich wäre.

    Arne Drews Ich hatte da auch nochmal nachgefragt, die Competition erlaubt noch einiges mehr. Das mit dem reinen JS ist nicht ganz korrekt. JAVA und Python wären auch erlaubt. Genauso wie Docker, PackageManager und Buildsysteme wie Maven, NPM usw.


    Ich hatte auch überlegt ob ein Docker mit Apache und PHP ok ist, aber die wollen JAVA, Python oder JS und der Buildprozess muss auf Linux/Mac laufen.


    Nur so zur info :)

    Hi Jonathan,


    das mit 4 zu 5 müsste gehen, da 4 den fa Präfix nutzt und 5 fab.


    Mein Vorschlag wäre es, zunächst die 5er version zu laden und dann die 4er damit "gleiche" klassen durch die 4er Version überschrieben werden.

    Und dort wo du 5er Icons nutzen willst, nutzt du das fab prefix und bei den anderen fa. Mit laden meine ich, einfach beide einzubinden ;).


    Gib gerne Rückmeldung ob das Funktioniert.


    Das einschränken des Scopes ist hier nicht möglich und auch nicht so einfach zu tun, falls du das nur für "bestimmte" divs möchtest, wären wohl Iframes die "einzige" möglichkeit, wenn man sonst kein komisches Scope-Konstrukt bauen möchte.


    Grüße


    Timo

    Hi Stef,


    wenn nur JS erlaubt ist als Sprache, dann kannst du als Server NodeJS nutzen. Ein Webserver ist mit NodeJS sehr schnell mit express aufgesetzt. Schau dir mal an wie das damit funktioniert. (NodeJs, NPM und express sind die schlüsselwörter). Wenn auch das ablegen der Daten nur mit JS gemacht werden soll, würde ich vorschlagen die Daten einfach in JSON-Dateien auf dem Server zu speichern.


    Für die API kannst du dir dann auch etwas simples überlegen. Falls du hierzu weitere Fragen hast, sag einfach bescheid :)


    Viele grüße,


    Timo

    Hi dsaZeus,


    die Frage ist etwas schwer zu beantworten da man nicht genau weiß was du versuchst, aber es hört sich ggf. "Falsch" an im Bezug auf die Normalisierung von Datenbanken/Tabellen (googel mal nach dem Stichwort).


    Ohne Internes wissen würde ich sagen, mach eine neue Tabelle und schreibe dort die Ergebnisse rein, aber dann weißt du ggf. nicht, woher die kommen, daher wäre eine allgemeinere Anforderung (was du versuchst zu erreichen) hilfreich (gibt wie immer viele Möglichkeiten sowas zu lösen).


    Weiter glaube ich du solltest für neue Fragen neue Themen eröffnen, aber da bin ich mir nicht sicher wie das in dem Thread gehandelt wird.


    Grüße


    Timo