Dann wird er wohl irgendwo in einer Datei oder in der Datenbank speichern muss, dass es diesen Monat bereits ausgeführt wurde
Dann evtl mit einem Timestamp und dann den Monat vergleichen
Dann wird er wohl irgendwo in einer Datei oder in der Datenbank speichern muss, dass es diesen Monat bereits ausgeführt wurde
Dann evtl mit einem Timestamp und dann den Monat vergleichen
Man hätte auch einfach NodeJS nach und nach verbessern können. Aber whatever.
Nein, da eben viele grundlegende Designentscheidungen von NodeJS verbessert werden müssten, und das kann man nicht einfach machen wenn etwas so weit verbreitet ist und verwendet wird.
Diese Änderungen sind halt viel mehr als nur "Breaking changes" deswegen kann man das nicht einfach so in NodeJS selber implementieren.
Moin,
heute möchte ich euch mal auf etwas neues aufmerksam machen; Deno. Da Deno vor kurzer Zeit offiziell mit der Version 1.0 released ist, denke ich ist es mal an der Zeit, dass einige Leute aufgeklärt werden, was Deno denn überhaupt ist.
Was ist Deno?
Deno ist wie die Webseite selber sagt eine simple, moderne und besonders sichere JavaScript Runtime. Deno ist sehr ähnlich wie NodeJS, und der Ziel von Deno ist es auch NodeJS zu ersetzen. Ähnlich wie NodeJS läuft Deno auf der V8 JavaScript Engine. Es ist aber in Rust geschrieben, NodeJS ist in C++ geschrieben.
Deno ist von dem Entwickler Ryan Dahl, welcher auch der originale Entwickler von NodeJS ist.
Die Besonderheiten von Deno im Vergleich zu NodeJS sind besonders der native TypeScript Support, die Sicherheitsfeatures, die mitgelieferten Tools und die dezentralisierten Packages. Aber auf diese Features, gehe ich gleich auch noch einmal genauer ein.
Es gibt doch schon NodeJS, wofür brauch man jetzt also Deno?
Das Ziel von Deno ist es, wie NodeJS zu sein, aber alles gute von NodeJS zu nehmen und zu verbessern und alles schlechte wegzulassen.
Das größte Problem von NodeJS ist nämlich die Sicherheit. Jeder der schon einmal ein etwas größeres Projekt mit NodeJS umgesetzt hat, welches auf anderen Third-Party Libraries basiert, der weiß genau wie riesig der node_modules Ordner wird. Denn jede Library verwendet andere Libraries, und die verwenden auch wieder andere Libraries und es geht immer so weiter. Deswegen hat eine Library manchmal unglaublich viele Dependencies, und jede dieser Dependencies kann ein Sicherheitsproblem darstellen. Denn dieser Gedanke, dass eine Library von jemand übernommen wird der damit Schabernack treibt, ist leider schon oft Realität geworden. Du hast mit NodeJS Zugriff auf sehr viel, ohne dass man irgendwelche besondere Rechte angibt, kann NodeJS einfach Dateien löschen oder verschieben. Und genau das ist schon einige male passiert, irgendeine große Library hat eine kleine Dependency, welche von jemand übernommen wird, der dann dort irgendetwas einbaut, was man eigentlich gar nicht in seinem Code haben will.
Dezentralisierte Packages
Und dieses Problem will Deno beheben, denn bei Deno gibt es kein NPM.
Das klingt erstmal natürlich schlecht, soll ich jetzt einfach alles selber schreiben oder was?! Nein. Deno lädt nämlich Packages einfach direkt von einer URL aus, und nicht aus einer lokalen Datei.
Um beispielweise das offizielle Deno Package für einen HTTP Server zu importieren benutzt man einfach folgendes:
Diese Datei wird natürlich nicht bei jedem Start neu heruntergeladen, sonst würde das starten von einer Deno Applikation ja jedes mal unglaublich lange dauern, die Dateien werden beim ersten importieren in einem Cache gespeichert, damit es beim nächsten mal lokal geladen wird.
Durch diesen Weg Packages zu importieren wird das ganze dezentralisiert. Denn wir haben nichtmehr einen einzigen Ort von dem wir unsere Packages beziehen (NPM), sondern jeder kann seine Packages selber dort hosten wo man will.
Explizite Rechtevergabe
Das nächste wichtige Feature welches Deno sehr viel sichererer als NodeJS macht ist, dass Deno nicht automatisch alle Rechte hat.
Wenn du also ein Deno Programm welches z.B. einen HTTP Server startet einfach mit Deno startest, dann wird das nicht funktionieren. Man erhält einen Fehler dass die Berechtigungen fehlen und die Applikation beendet sich.
Du musst also Deno immer explizit Zugriff geben auf genau die Features welche du benötigst, warum sollte meine Deno Applikation auch Zugriff auf das Dateisystem erhalten, wenn es garkeine Dateien liest oder schreibt?
Diese Rechte sind sogar weiter konfigurierbar, z.B. dass die Applikation nur auf gewisse Ordner oder Dateien Zugriff hat. Oder dass externe Anfragen nur auf eine bestimmte URL gemacht werden können.
Und durch diese Sicherheitsfeatures, ist es nicht möglich für einen Angreifer einfach ungewollten Code in eine externe Library zu packen, denn jeder kann es sehen wenn eine weitere Permission hinzugefügt wird, die diese Library eigentlich garnicht brauch.
Nativer TypeScript Support
Wie man in dem Beispielcode gesehen hat, wird eine .ts Datei importiert, wie jeder weiß endet eine JavaScript Datei aber mit .js, was ist das also? Deno unterstützt nativ TypeScript. TypeScript ist ein Superset von JavaScript, welches es ermöglicht statische Typen anzugeben, denn Variablen und ähnliches in JavaScript haben keinen festgelegten Typ, sie können eine Zahl sein, oder ein String oder ein Objekt. TypeScript ist aber nur ein Superset, das heißt also dass man TypeScript Dateien compilen muss, und zwar werden TypeScript Dateien in normale JavaScript Dateien umgewandelt, die jeder JavaScript Interpreter versteht.
Aber um genau herauszufinden was TypeScript ist, empfehle ich einfach mal zu googlen.
In NodeJS war es also nun immer der Fall, dass man erstmal einen TypeScript Compiler aufsetzen muss, der den geschriebenen TypeScript Code in JavaScript Code compiled, damit man dann den resultierenden Code mit NodeJS laufen lassen kann.
Das ist in Deno nicht so, denn Deno hat einen eingebauten TypeScript Compiler, um den man sich nicht kümmern muss. Es gibt keine Configs und nichts, sondern du erstellst eine TypeScript Datei mit der .ts Endung, und startest diese mit Deno, Deno compiled diese TypeScript Datei dann automatisch für dich und läuft wie gewohnt!
Falls man aber trotzdem seine eigene TypeScript Konfiguration verwenden will, ist das natürlich auch möglich, die muss man dann beim starten nur angeben.
Mitgelieferte Tools
Jede erfolgreiche NodeJS Applikation verwendet viele verschiedene Tools um den Code zu gut wie möglich zu halten, wie z.B. ein Debugger, ein Formatter, ein Bundler und ein Dependency Inspector.
Aber bei diesen Tools gibt es keinen offiziellen Standard, z.B. gibt es zig verschiedene Formatter wie Prettier, Standard, Beautify und sehr viele mehr.
Das heißt dass der Code zwar "schön" ist und sich an einen Standard hält, aber es gibt nicht nur einen einzigen Standard, und das ist halt eigentlich gar nicht der Sinn von so einem Standard.
Genau deswegen liefert Deno all diese verschiedenen Tools die ein Entwickler für seine Applikation brauch einfach mit. Du brauchst einen Formatter? Einfach den mitgelieferten Formatter mit einem einzelnen Befehl ausführen, und fertig, der Code wurde "verschönert".
Du willst deine Applikation debuggen? Kein Problem, Deno liefert einen Debugger mit.
Und das waren natürlich noch nicht alle hilfreichen Tools die Deno mitliefert, in der Dokumentation findet man sie alle aufgelistet und wie man sie verwendet.
Einen Standard für all diese Tools zu haben ist gut, denn dadurch ist es auch wirklich ein Standard, der von allen verwendet wird.
Offizielle Packages
Genauso wie NodeJS bietet Deno auch offizielle Packages an, wie z.B. für einen HTTP Server, für das verwenden des Dateisystems, zusammensetzen von Pfaden etc.
Das sind Packages die eine besonders hohe Qualität haben und ständig verbessert und erweitert werden, da diese vom offiziellen Deno Team geschrieben sind.
Auf diese Packages kann man sich also immer verlassen, dass diese funktionieren, keine Bugs oder Sicherheitslücken beinhalten und dass man diese immer verwenden kann.
Fazit über Deno
Deno ist definitiv für jeden NodeJS Entwickler ein Newcomer, welchen man genau im Auge behalten sollte.
Ich finde Deno ist definitiv super, und ein sehr großer Schritt in die richtige Richtung. Es wird wahrscheinlich noch sehr lange weiterhin NodeJS regieren, aber vielleicht sieht man dann ja doch irgendwann dass Deno weit genug fortschreitet um den Markt zu übernehmen und den Platz von NodeJS einzunehmen.
Definitiv sehr interessant, und ich bin gespannt wie es in der Zukunft mit Deno weiter geht.
Die Features welche Deno bietet, besonders im Bereich der Sicherheit sind einfach etwas womit NodeJS nicht mithalten kann, aber dadurch dass Deno leider halt noch relativ unbekannt ist, wird es wohl noch einige Zeit dauern bis Deno zum Mainstream gehört.
Ich bedanke mich bei jedem der sich die Zeit genommen hat diesen riesigen Text zu lesen, und ich hoffe dass ich vielleicht ein paar Leute neugierig gemacht habe, damit sie sich Deno mal genauer anschauen.
Euer (endlich mal wieder einen normalen Thread verfassender) Leon,
xoxo
Du gibst 40€ PP und möchtest 50€ PSC haben?
So wie ich das verstehe, andersrum.
Kannst du erläutern was das Ausrufezeichen vor dem PVar Namen zu bedeuten hat?
Cringe, einfach nur cringe
Nein, das ist nicht möglich. Linux ist auch nicht zum Spiele spielen ausgelegt.
Also die Idee sich an den alten SA:MP Feelings zu orentieren finde ich gut, aber ist hier meiner Meinung nach zu extrem umgesetzt. Bisher ist es einfach nur ein normaler SA:MP Server in GTA V. Die ganzen schönen Technologien und Möglichkeiten von GTA V scheinen bisher garnicht genutzt zu werden, und das ist schade, denn genau das ist der Vorteil der GTA V gegenüber SA:MP hat.
RageMP oder alt:V?
Virtualizor ist einfach besser und promox mag ich nicht. Was soll ich mehr sagen
1A argumentiert, danke.
Jetzt wissen wir die genauen Punkte warum Proxmox schlechter ist.
Echt nett von dir dass du uns das so genau sagst.
Naja wegen der Maskenpflicht und der Hygienepflicht sehe ich das irgendwie jz etwas lockerer.
Das sind natürlich auch gute Maßnahmen, aber Zuhause bleiben ist am effektivsten.
Und jeden Tag jz auch zuhause zu gammeln ist auch nicht gesund würde ich mal jz behaupten.
Vielleicht für dich persönlich ist das nicht so gesund, aber da muss jetzt jeder durch. Jeder muss sich ein bisschen aufopfern, damit andere halt nicht sterben.
Die wichtigere Frage ist ob man das sollte; Und da ist die Antwort Nein, man sollte definitiv jetzt nicht irgendwo hinfahren, sondern einfach wie jeder andere Zuhause bleiben. Die Ausgangssperre hat ihren Grund
Unten rechts in VSC kannst du die Textkodierung der Datei umstellen.
Du musst die Zeile 47 ausklammern, indem du ein // davor setzt.
Gebe ich auch zu da ich mir das Script angucke.
War kein Vorwurf, sondern nur ein Tipp um bei weiteren Fragen auch schnelle akkurate Antworten zu kriegen.
Das wäre ja dann in der session.js der adapter oder?
Wo genau das ist, weiß ich nicht mehr. Das sollte aber richtig sein, ja.
Da ich weiß dass es das alte LYD UCP ist kann ich es dir beantworten. Aber das nächste mal schreib es doch direkt dazu.
Du musst in den Einstellungen vom UCP entweder den Session Store von Redis auf Standard setzen, oder du setzt einen Redis Server auf
Ich freue mich sehr auf die neuen Moderatoren!