Zum Inhalt springen

el_pollo_diablo

Mitglieder
  • Gesamte Inhalte

    113
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    2

el_pollo_diablo hat zuletzt am 28. Dezember 2019 gewonnen

el_pollo_diablo hat die beliebtesten Inhalte erstellt!

1 Benutzer folgt

Letzte Besucher des Profils

2750 Profilaufrufe
  1. Nachdem ich mich seit einiger Zeit ebenfalls mit der Materie intensiver beschäftige, hier ein paar zusätzliche interessante Stellen, welche einen guten Einstieg in die Materie bieten und einem sehr schnell klarmachen, ob einem dieser Bereich überhaupt liegt: Videos: Auch wenn es sicherlich sehr kontroverse Ansichten zu seiner Person gibt, haben sich die knapp 15 Stunden mit The Cyber Mentor nicht wirklich verschwendet angefühlt und eine gute Übersicht und Einstieg in die Materie vermittelt. Enthalten ist hier z.B. auch eine mehrstündige Einführung in Python, welche sich in späteren Stadien definitiv bezahlt macht. https://www.youtube.com/watch?v=3Kq1MIfTWCE Die bereits angesprochene CTF-Challenge namens "Bandit" von OverTheWire kann ich ebenfalls wärmstens empfehlen, da sie einen auf eine spielerische Art an verschiedene Themen heranführt und auch die Grundlagen von Linux vermittelt. Diese Reihe war übrigens auch gut als Lernerfolgskontrolle für unsere beiden Azubis geeignet 😉 https://overthewire.org/wargames/ Der Versuch die nächste Challenge "Leviathan " zu knacken, hat dann relativ schnell zu LiveOverflow geführt. Hier werden tiefergehende Grundlagen zur Exploitentwicklung, dem damit verbundenem Reverse-Engineering und der generellen Funktionsweise von CPUs und dem Arbeitsspeicher sehr verständlich und anschaulich erklärt. https://www.youtube.com/watch?v=iyAyN3GFM7A&list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN Bis zu diesem Zeitpunkt drehte sich alles um normale LAN-Verbindungen. Wenn man nun aber wissen möchte, was man bei einer WLAN-Konfiguration beachten und vorallem unbedingt unterlassen, dem sei definitiv Vivek Ramachandran und seinen "Wireless LAN Security Megaprimer" ans Herz gelegt. Der Informationsgehalt ist wirklich sehr hoch und deckt auch die, inzwischen veralteter WIFI-Funktionalität ab. Daher ist es für mich nicht wirklich nachvollziehbar, weshalb eine gut gemachte Reihe nur wenige Views bekommt, zumal der relativ typische indische Enthusiasmus und das klischeehafte, obligatorische Hupen im Hintergrund, die teilweise etwas trockenen Themen herrlich auflockern. https://www.youtube.com/playlist?list=PLrrgFyE6PtlbhCflEC4QQKt6ZlQBVHq4z Wenn man dann nach sehr vielen Monaten intensiven Lernens und der Aneignung verschiedenster Grundlagen und manuellen Techniken, sich die Frage nach Automatisierung und weiterer persönlicher Entwicklung stellt, so kann man z.B. mal einen Blick auf "Cobalt Strike" werfen: https://www.youtube.com/watch?v=q7VQeK533zI Generell empfehle ich nur Bücher, welche ich selbst gelesen habe und nachdem ich mich erst relativ kurz auf Papier mit dem Thema beschäftige, ist die Liste hier sehr kurz und ich freue mich natürlich auf weitere Buchempfehlungen... Bücher: The Hacker Playbook 3: Practical Guide To Penetration Testing (ISBN-13: 978-1980901754 , https://www.amazon.de/Hacker-Playbook-Practical-Penetration-Testing/dp/1980901759) Persönlich habe ich mit Teil 3 dieser Bücherreihe begonnen und werde mir nach dem positiven Eindruck definitiv auch die anderen Teile besorgen. Warum nicht von Anfang an? Die Reihe ist gezielt so aufgebaut, dass das sie regelmäßig mit neuen Exploits, Techniken oder Tools geupdatet wird und dort auch der primäre Fokus des jeweiligen Teils liegt. Vergangene Themen werden zwar angeschnitten, aber für Details eben auf ältere Versionen der Reihe verwiesen, was ich persönlich durchaus legitim finde. Entsprechende Downloadlinks zu Labs, weiteren empfehlenswerten Tools und Verweise auf andere Seite, welche weiterführende Informationen bieten, runden das gute Gesamtbild ab. Hacking: The Art of Exploitation (ISBN-13: ‎978-1593271442 , https://www.amazon.de/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441) Dieses Buch geht sehr stark in die Richtung, welche auch LiveOverflow (siehe Videos oben) eingeschlagen hat und beschäftigt sich sehr tief mit dem Innenleben von Computersystemen und den jeweiligen Manipulationsmöglichkeiten. Obwohl der Titel bereits 2007 erschien, haben viele der beschriebenen Prinzipien immer noch Gültigkeit und aus diesem Grund eignet sich das Buch immer noch gut als Einstieg in diese Thematik oder wenn man einfach nur mal verstehen möchte, das denn so hinter dem Vorhang passiert...
  2. Es kommt komplett auf das Spiel, dessen Genre und das Gameplay an. Was Netzwerkprogrammierung im Bezug auf Spiele angeht, führt fast kein Weg an Glenn Fiedler und seiner Seite https://gafferongames.com/ vorbei. Dort wird mehr als anschaulich gezeigt, wie und vorallem warum man den Networkingpart umsetzen sollte und wie nicht. Auch die richtige Implementierung der Gameloop ist mehr als hilfreich. Die von @Whiz-zarD angesprochene "Snapshot-Interpolation" kommt überwiegend in First-Person-Shootern zum Einsatz. Was die meisten Titel jedoch gemeinsam haben ist die Tatsache, dass mit der Grundlage UDP große Teile der TCP-Funktionsweise nachgebaut werden und zwar unter der Berücksichtigung von Spiel-Charakteristika und dem Ausnutzen von Spielmechanik zur Vermeidung von Verzögerungen und Komprimierung. Im Bezug auf Pathfinding wird man früher oder später bei Recast & Detour ( https://github.com/recastnavigation/recastnavigation ) landen. Diese einfach zu integrierende und vorallem kostenfreie Library kommt auch in sehr vielen kommerziellen Titeln zum Einsatz. Hier sollte man sich nicht von der von @lessbess angesprochenen "mächtigen Serverhardware" verunsichern lassen, denn außerhalb von großen MMO-Titeln ist das relativ vernachlässigbar. Generell sollte man jedoch niemals nur den Clients vertrauen und natürlich, wie auch bei allen Anwendungen auch, Plausibilitätsprüfungen durchführen und entsprechendend reagieren. Für das angesprochene Gruppenverhalten, welches auch als "Flocking" bezeichnet wird, lege ich jedem interessierten Leser das Buch "Programming Game AI By Example" ( https://www.amazon.de/Programming-Example-Wordware-Developers-Library/dp/1556220782/ref=asc_df_1556220782 ) von Mat Buckland ans Herz. Der Nachfolger des Buches geht dann ziemlich stark in die Thematik neuronale Netze und ähnliche Themen, welche zwar generell interessant, für die meisten Spielarten jedoch viel zu aufwendig sind.
  3. Und nach diesem Erklärungsversuch zu Deinem eigentlichen Post: Da hast Du @bene98 leider falsch verstanden. Jede Deklaration einer Variablen reserviert einen Speicherbereich in der passenden Größe (abhängig vom Variablentyp). Was er meinte ist, dass ein Array, bzw. eine Liste zum einfachen Zugriff auf vielen Variablen des gleichen Typs verwendet wird. Oder anders gesagt, irgendwie musst Du dem Computer ja mitteilen, auf welche Variablen Du zugreifen möchtest... Ohne einen "Container" würde man für jede Variable einen eigenen Variablennamen angeben müssen und bei vielen hundert Variablen mal zig Zugriffen ist das dann doch "etwas" umständlich. Diese drei Zeilen würden vereinfacht so dargestellt werden: Der lila Bereich entspräche Deinem player-Array vom Typ PlayerCharacter mit einem einzigen Element. Der gelbe Bereich der Variablen population vom Typ PlayerCharacter. Hier zeigt sich bereits, dass ein simples Handling (z.B. für das die Ausgabe der beiden eigenständigen Objekte via Console.WriteLine()) zwei getrennte Befehle benötigen würde: Console.WriteLine(player[0]); Console.WriteLine(population); Viel bequemer geht dies dann natürlich unter Verwendung eines Arrays und über eine Schleife, z.B. die for-Variante, welche von Dir bereits gespostet worden ist. Ich hoffe nun wenigstens etwas Licht ins Dunkel des Speicherkellers gebracht zu haben 😉
  4. Vielleicht hilft es Dir beim Verständnis, wenn Du Dir die angehängten Bilder ansiehst, welche eine SEHR vereinfachte Darstellung des Arbeitsspeicher eines Computers zeigen (in allen Abbildungen durch die Tabelle repräsentiert): Variablen im Speicher: Wenn man Variablen erzeugt // Deklaration int i; // Deklaration und Initialisierung int i = 12345; werden deren Lebensräume (Speicherbereiche) durch das Betriebssystem möglichst effizent zur Verfügung gestellt, so dass spätere Zugriffe möglichst schnell erfolgen können. So belegt z.B. eine Variable vom Typ int 4 Bytes und lebt, ähnlich wie Menschen an einer bestimmten Adresse. Hierbei ist anzumerken, dass Adresse sich immer auf den Anfang des jeweiligen Speicherbereichs bezieht und die Größe des Typs die Länge des belegten Speichers angibt. Klassen im Speicher: Eine Klasse ist einfach nur ein zusammenhängender Speicherblock, welcher alle Klassenvariablen der Reihe nach enthält. Natürlich ist das in Wahrheit erheblich komplexer, wie @Whiz-zarD weiter oben bereits angedeutet hatte. Zum anfänglichen Verständnis sollte dies dennoch ausreichend sein. Für die Abbildung habe ich Deine PlayerCharacter-Klasse von weiter oben verwendet und das xxx (x) soll einfach nur weitere Membervariablen und deren Wert symbolisieren. Arrays im Speicher: Hier habe ich versucht ein Array des Typs PlayerCharacter im Speicher darzustellen. Die []-Klammern stellen dabei den Index für den Zugriff auf die jeweiligen Arrayelemente dar. Die restlichen Bestandteile wurden im vorherigen Punkt ausgeführt.
  5. Meine beiden Vorredner haben sehr viel bereits ausgeführt, aber was bedeutet das denn nun konrekt für Dein Codebeispiel? Habe an dieser Stelle einfach einmal versucht, das geschriebene Wissen in Deinem Code umzusetzen, Kommentare einzufügen und die entsprechenden Stellen möglichst einfach und hoffentlich einigermaßen verständlich zu erklären: using System; // Damit die Typ List erkannt wird, ist es nötig, deren Namespace dem Compiler bekannt zu machen using System.Collections.Generic; namespace Klassenprojekt2 { public class Program { public static void Main(string[] args) { var players = new List<PlayerCharacter> { // Achtung: Diese Variante des Erzeugen und Ausfüllen der Objekte funktioniert nur deshalb, weil in der Klasse PlayerCharacter die beiden Eigenschaften als public gekennzeichnet wurden! //new PlayerCharacter { name="aaa", age=111 }, //new PlayerCharacter { name="bbb", age=222 }, //new PlayerCharacter { name="ccc", age=333 }, }; var playerCharacter = new PlayerCharacter(); Console.WriteLine("Bitte den Charakternamen eingeben: "); playerCharacter.name = Console.ReadLine(); Console.WriteLine("Bitte das Alter deines Charakters eingeben: "); playerCharacter.age = int.Parse(Console.ReadLine()); players.Add(playerCharacter); // Anmerkung: Hier einfach mal googlen wie man die Methode ToString() überschreiben kann Console.WriteLine(players[0].name + " " + players[0].age); Console.ReadLine(); } } class PlayerCharacter { public string name; public int age; } } Ein paar Anmerkungen zu den Änderungen: Es wurde direkt eine Liste für die Speicherung der Objekte verwendet, weil zuvor schon festgestellt worden ist, dass ein Array eine feste Länge hat und erst umständlich vergrößert werden müsste. @bene98: Es ist hier übrigens nicht erforderlich einen Standardkonstruktor (leeren Konstruktor) in der Klasse PlayerCharacter zu definieren, da dieser beim Kompilieren durch den Compiler unter der Haube hinzugefügt wird. Ausblick für die weiteren notwendigen Änderungen und das weitere Lernen: Die Kommentare sollen bereits ein paar Anregungen für weitere mögliche Lernthemen gegeben haben. Aber an dieser Stelle sollte auch klar geworden sein, dass für das Hinzufügen einer variablen Anzalh von PlayerCharacter-Objekten und entsprechender Abfrage deren Daten vom Benutzer, wohl noch andere Sprachkonstrukte von Nöten sind (Lern-Stichpunkt: Schleifen/Loops).
  6. Der Artikel A1 aus Dept 456 ist doch auch nicht im Ergebnis enthalten?
  7. mal absehen davon, dass dieses Ergebnis vollkommen richtig ist, da deine Testdaten nun einmal drei Artikel mit dept 123 enthalten, wird für die Abfrage weder ein Subselect ala AND NOT article IN(SELECT article FROM correspondance WHERE dept = '456') noch irgendeine andere Einschränkung als where dept = '123' benötigt, da dies bereits alle anderen dept-werte ausschliesst. Hier vielleicht noch auf den Tabellenaufbau (Spaltentyp) und die Syntax des DBMS achten, ob man bei numerischen Werten überhaupt Anführungszeichen benötigt. Abhängig davon kann man dann auch einen Subselect verwenden, um gezielt die Artikeln mit verschiedenen dept-Werten zu selektieren: SELECT * FROM correspondance WHERE dept IN ('123', '987', '432')
  8. Dreimal ja 😉 In dem Ausschnitt aus der englischen Version, welchen ich bereits gepostet habe sieht man das auch optisch sehr gut.
  9. Als Übung zur Umrechnung von Dezimal nach Binär sicherlich brauchbar, als Antwort auf die gepostete Frage dennoch leider falsch, wie man auch dem, bereits geposteten, Link zu Wikipedia https://de.wikipedia.org/wiki/Netzklasse entnehmen kann... Und in der folgenden Tabelle finden sich dann die Präfixe der einzelnen Netzklassen (in Binär): Und in der zwei anderen Spalten noch die Netzmaske einmal als Adresse und einmal im CIDR-Format (/x). Noch deutlicher wird es, wenn man sich die englische Version der Seite ansieht:
  10. Spontan würde ich mich eher an die kompletten Netzklassen halten, als an die privaten Adressräume: https://de.wikipedia.org/wiki/Netzklasse ...
  11. Ok, Du hattest um die 15 Vorstellungsgespräche und was waren denn bisher Deine Antworten und/oder Gedanken zu den genannten Fragen, wie... ? Ich gehe einfach mal davon aus, dass Du nicht absolut teilnahmlos auf dem Stuhl gesessen und ins Leere gestarrt hast...
  12. Vielleicht kannst Du uns einfach mal Deine Antworten, bzw. Deine Gedanken zu den problematischen Fragen mitteilen, dann ist es möglich im Detail darauf einzugehen und zu diese zu diskutieren.
  13. Hmmm... es scheint ja irgendwie ein Teil eines größeren Projektes zu sein und andere mögliche Lösungsmöglichkeiten wurden wohl auch schon probiert... daher kommen wohl auch die Einschränkungen, wenn ich das richtig verstehe. Was sich mir nicht wirklich erschliesst ist, wie man das Sollkonzept offener beschreiben könnte und weshalb es vorentschieden klingt? Ich frage dies aus reinem Interesse, weil in näherer Zukunft bei mir die Betreuung eines Auszubildenden anstehen könnte und ich mich schon mal etwas mental wappnen will...
  14. Vielleicht helfen Dir ja auch die Erklärungen auf der Seite der Technischen Universität München: https://www-m9.ma.tum.de/graph-algorithms/spp-dijkstra/index_de.html Dort kann man verschiedene Algorithmen Schritt für Schritt mit jeweiliger Erklärung durchlaufen und sieht die Vorgehensweise visuell.
  15. Poste doch einfach mal einen Link zu Deinem GitHub-Bereich, dann können Leute von hier drüberschauen, ihre Meinungen abgeben und Du hast was zur Orientierung.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...