Beiträge von Andosius

    nicht seinen Spaß gönnen

    Kevin neigt dazu über Geld zu verfügen, über das er keine Gewalt hat und finanziert so Sachen, die er praktisch gar nicht braucht.

    Wir gönnen ihm seinen Spaß, nur versuchen wir ihn manchmal vor sich selbst zu schützen, auch wenn das oftmals schwierig ist.

    respekt für die Investierte zeit die ich seit 2009 darin gesteckt habe

    Respekt beruht auf Gegenseitigkeit. Hier muss dir keiner auch nur irgendwie Respekt entgegen bringen, du kannst das ja selbst nicht einmal.

    Und es würde sehr viel zeit investierung kosten den Ganzen Bot umzuschreiben denn ich müsste dafür eine Neue Sprache lernen und das ist in meinem Alter nicht mehr möglich.

    "Ich bin zu alt dafür", so ein Schwachsinn. Du tust so, als ob du in zwei Wochen einfach umkippen würdest, mach dich bitte nicht lächerlich. Ich habe genügend Leute kennengelernt, die mit 40 in die Software-Entwicklung eingestiegen sind und vorher noch nie etwas damit zu tun hatten - von all den Quereinsteigern in allen anderen Bereichen muss ich ja wohl kaum sprechen.

    wieso rechtfertige ich mich eigentlich hier...

    Deine Art mit Menschen umzugehen ist einfach widerlich, abwertend und auf vielen Ebenen nichts anderes als zynisch.

    Du versuchst eine einfache Lösung für ein komplexes Problem zu kriegen. Die einzige Person, die hier delusioniert ist, bist ganz alleine du.


    Dir fehlt sämtliches Verständnis dafür, dass wir hier ein HILFEFORUM sind. Wir sind nicht hier um dir das Gefühl zu vermitteln, dass dein Programm spitzenklasse ist oder dir sonstigen Selbstwert zu geben. Wir arbeiten mit Fakten und du mit Gefühlen deiner alten Arbeit gegenüber.


    Abgesehen davon: Dateizugriffe sind im Vergleich zu Datenbanken um ein vielfaches langsamer, das wurde dir schon mehrfach gesagt. Nur, weil du das nicht akzeptieren möchtest, musst du nicht so tun, als ob wir alle inkompetent sind.

    Habe erstmal die paar Sachen umgesetzt und das sieht deutlich besser aus.

    Es ist nicht besonders schön aber hey, es funktioniert wie es soll. Es wäre vermutlich auch deutlich schneller, wenn ich nicht über das Netzwerk darauf zugreifen müsste. xD


    Bezüglich PostgreSQL: Ich sehe bereits seit Jahren viele Menschen darauf umsteigen. Vielleicht ist es dann auch mal für mich Zeit dem Strom zu folgen und sich mal langsam einzulesen. :=)

    Absolut kein Thema, das sind gute Fragen. Persönlich kenne ich noch kein schönes SQL-Framework. Mit JSON hatte ich vorher schonmal gearbeitet, deshalb war das für mich nicht so befremdlich.

    Eigentlich hast du auch Recht. Ich kann doch im Mainthread mit ArchiveParser::GetQueueSize die verbleibenden Objekte abfragen und in ArchiveParser::ProcessElement ein mutex locken und direkt pushen.


    Dann ganz einfach die main-While-Schleife anpassen, dass die mit GetQueueSize() > 0 arbeitet und wenn die Queue Size auf 0 ist für 2 Sekunden sleepen. Hört sich zumindest sinnvoll an xD?



    Kannst du eventuell eine MariaDB-Bibliothek empfehlen? :/

    Der MariaDB Connector soll - soweit ich das zumindest lesen konnte - ziemlich schlecht sein.

    Gude allerseits,


    um mein Problem erklären zu können, folgt erstmal die Beschreibung meines derzeitigen Projekts.

    Einigen unter euch wird möglicherweise die Seite "mtaupload.com" etwas sagen. Diese Seite ist langsam des Grauens und macht mich wahnsinnig. Deshalb möchte ich eine eigene Lösung implementieren, wofür ich eine Datenbank brauche.

    Das Projekt, mit dem ich diese Datenbank anfertige, möchte ich der Community zur Verfügung stellen.


    Dort habe ich mir jetzt etwa 6700 Maps per Script heruntergeladen (natürlich mit Einverständnis der Administration).

    Da es ein Haufen an Maps ist und man da sehr schnell den Faden verliert, habe ich natürlich auch ein Programm geschrieben, welches das Archiv nach der meta.xml durchsucht und anschließend den Mapnamen + den Pfad in eine .json-Datei schreibt.

    Hier kommen wir zum Problem: Solche intensiven IO-Zugriffe sorgen für ordentlich Lag, weshalb ich das Programm auf Multithreading umgeschrieben habe. Der 9:30 Minuten Prozess dauert nun nurnoch knapp 2 Minuten, was wirklich deutlich schneller ist.


    Nur gibt es ein Problem: Durch die Erweiterung auf MT kommt das Problem hinzu, dass ich ~6700 Future-Objekte beherberge.

    Die Überprüfung der Objekte dauert so lange, dass in dieser Zeit keine Status-Updates in der Konsole folgen können.


    Hat jemand eine Idee was ich tun kann, um den Code in ArchiveParser::CheckResults() deutlich zu beschleunigen?


    Ich bin über jede Hilfe glücklich. :)



    Github: https://github.com/Andosius/MapListGenerator

    Problemzeile: https://github.com/Andosius/Ma…5161fa18/src/main.cpp#L22

    Habe eben in der Dokumentation nachgeschaut und wenn ich die Logs richtig interpretiere, versuchst du PlayerPedId() serverseitig zu verwenden, obwohl es zum client API-Set gehört.


    Schau mal, ob „source“ nicht bereits der Spieler ist, das würde vom Funktionsaufbau verdammt viel Sinn machen. :)

    Wie du vllt am Inhalt meines Beitrages lesen kannst (das wünsche ich dir), gebe ich dir einen allgemeinen Programmierhinweis, wie man eine Sprache einfach und effizient erlernen kann + Ressourcen und habe sogar jemanden verlinkt der sehr viel Erfahrung in diesem Gebiet hat.


    Zusätzlich ist diese Webseite aufgrund ihres Aufbaus meine Empfehlung für HTML, CSS und vanilla JS + einige Frameworks und Libraries. Für kleinere JS Projekte habe ich hier auch mal zurückgegriffen.

    Dass du dir die Seite aber nicht einmal anschauen würdest, bevor du so etwas peinliches von dir gibst, hätte ich ahnen müssen.

    Ich kann dir nur einen Rat mitgeben: Ließ dich in die Grundlagen ein und ignoriere alle möglichen Tutorial-Ressourcen, bis du kleinere Projekte schreiben kannst.


    Für den Anfang ist W3Schools ein guter Einstieg.



    Lerne die grundlegenden Bedeutungen von HTML & CSS Objekten/Befehlen, schaue dir fremde Projekte an und baue auch eigene einfache Webseiten.

    Versuche erst gar nicht eine riesige Webseite innerhalb der ersten Wochen aufzubauen. Du wirst dich nur selbst demotivieren. Fang klein an, verbessere alten Code und steigere dich so.


    Es ist mit HTML/CSS quasi so, als würdest du eine Programmiersprache lernen und dort fängt man ja auch mit Basistypen an, orientiert sich um diese, ersetzt diese ggf irgendwann und lernt dabei neues.

    Das gilt logischerweise auch für JavaScript, da habe ich aber keine Erfahrung mit weil ich ein Backend-Typ bin. (CC LeonMrBonnie vllt hast du ja Ratschläge?)



    Wenn du Fragen hast, google diese einfach. Versuche aber zu verstehen, was genau passiert, wenn du Zeile X hinzufügst!

    Es wird ein langer Prozess aber wenn du konsequent am Verständnis und nicht ausschließlich an einem Projekt arbeitest, ist dir der Erfolg garantiert. :)

    Um das, was du vorhast, irgendwie sicher und anständig umsetzen zu können, musst du auf jeden Fall fortgeschrittene Kenntnisse in C# haben und tendenziell sogar eine API mit erstellen, sonst hast du keine Chance.

    Sonst könnte jeder, der den Keybinder besitzt, alles mögliche tun.


    Das ist für den Server ein enormes Sicherheitsrisiko. Lerne zuerst die Sprache, verstehe warum das sicherheitstechnisch ein Problem sein könnte (siehe Reverse Engineering) und setze das Projekt dann erst um, wenn du auch verstehst, wie du extern die Befehle verifizieren und ausführen kannst.

    Das ist quasi der wichtigste Teil des Ganzen.



    Unterschätze ein Overlay nicht. Du musst, falls es dafür keine fertige Bibliothek gibt, die Grafikfunktionen des Spiels hooken. Das ist für einen Anfänger unrealistisch, das erfordert nämlich ein gutes Verständnis von Windows, wie der Arbeitsspeicher funktioniert und in dem Fall DirectX 9 und Gamehacking.

    Das sind Sachen, die du als Anfänger in den ersten 2 Jahren lernen kannst, tendenziell braucht man sogar länger, wenn man bei 0 beginnt. Das wird allerdings hart und kostet viel Disziplin und ob es am Ende des Tages das wirklich Wert ist, wage ich stark zu bezweifeln.



    Vielleicht solltest du über AutoHotKey nachdenken, das könnte mehr Sinn machen und ist technisch auch deutlich anspruchsloser.