Ich erstelle ein Multiplayer-Battleship-Spiel mit einem Apache/PHP-Server (ja, ich weiß, dass Node dafür viel besser wäre, aber ich werde es später lernen). Wie auch immer, ich bin an dem Punkt angelangt, an dem beide Spieler ihre Spielbretter hochladen, um das Spiel zu starten. Während mein clientseitiges JavaScript die Boards natürlich ordnungsgemäß kompiliert und validiert, bevor es sie an den Server sendet, ist dies immer noch anfällig für Betrug, sodass der Server dies ebenfalls überprüfen muss. Auf dem Server kommt es jedoch vor allem auf Geschwindigkeit und Effizienz an.
Derzeit folgt mein Server folgendem Prozess:
Der Server empfängt das Board als JSON-codiertes mehrdimensionales Array über eine AJAX-Anfrage.
Im Array stehen die Zahlen null bis fünf für Leerzeichen, Flugzeugträger-, Schlachtschiff-, Kreuzer-, U-Boot- und Zerstörer-Kacheln. Ich zähle jeweils die richtige Menge.
Mit genügend Arbeit hätte ich Schritt fünf abschließen können, aber es wäre äußerst ineffizient gewesen, alles wiederholt zu durchlaufen. Abschließend: Wie kann ich das, was ich entworfen habe, effizienter machen und wie schließe ich den letzten Schritt (5) zur Validierung des hochgeladenen Boards ab?
Ich erstelle ein Multiplayer-Battleship-Spiel mit einem Apache/PHP-Server (ja, ich weiß, dass Node dafür viel besser wäre, aber ich werde es später lernen). Wie auch immer, ich bin an dem Punkt angelangt, an dem beide Spieler ihre Spielbretter hochladen, um das Spiel zu starten. Während mein clientseitiges JavaScript die Boards natürlich ordnungsgemäß kompiliert und validiert, bevor es sie an den Server sendet, ist dies immer noch anfällig für Betrug, sodass der Server dies ebenfalls überprüfen muss. Auf dem Server kommt es jedoch vor allem auf Geschwindigkeit und Effizienz an.
Derzeit folgt mein Server folgendem Prozess:
[list] [*]Der Server empfängt das Board als JSON-codiertes mehrdimensionales Array über eine AJAX-Anfrage.
[code]$board = json_decode($_REQUEST["board"]); [/code] [*]Server validiert die Struktur der übergebenen Eingabe.
[code]$validate = array(gettype($board) == "array", count($board) == 10); for($i = 0; $i < count($board); $i++) { array_push($validate, count($board[$i]) == 10); for($ii = 0; $ii < count($board[$i]); $ii++) { array_push($validate, gettype($board[$i][$ii]) == "integer"); } } if(in_array(0, $validate)) throwError(); [/code] [*]Im Array stehen die Zahlen null bis fünf für Leerzeichen, Flugzeugträger-, Schlachtschiff-, Kreuzer-, U-Boot- und Zerstörer-Kacheln. Ich zähle jeweils die richtige Menge.
[code] $valueCount = array_count_values(array_merge($board[0], $board[1], $board[2], $board[3], $board[4], $board[5], $board[6], $board[7], $board[8], $board[9])); $template = array("0"=>83,"1"=>5, "2"=>4, "3"=>3, "4"=>3, "5"=>2); if($template != $valueCount) throwError(); [/code] [*]Ich muss sicherstellen, dass Schiffskacheln nur vertikale oder horizontale Linien sind.
Mit genügend Arbeit hätte ich Schritt fünf abschließen können, aber es wäre äußerst ineffizient gewesen, alles wiederholt zu durchlaufen. Abschließend: Wie kann ich das, was ich entworfen habe, effizienter machen und wie schließe ich den letzten Schritt (5) zur Validierung des hochgeladenen Boards ab?
Ich habe einen großen JSON, den ich nicht in den Speicher laden möchte. Ich möchte es gegen ein JSON -Schema in einer Streaming -Modus validieren. Alle Bibliotheken, die ich bisher finden konnte,...
Ich habe derzeit ein Test -Framework (Java/Gucumber/testNG/Restasured), und ich möchte meine SQL -Abfrage nur einmal mit java.sql.statement ausführen. Im Moment wird jedes Mal, wenn ich versuche,...