DedSec Project

Gleam — Αναλυτικός οδηγός εξάσκησης — DedSec Project

Gleam — ρητός τύπος επιτυχίας ή αποτυχίας Επιστροφή Result από έλεγχο θύρας Για "8080" αναμένεται Ok(8080), για "abc" σφάλμα μετατροπής, ενώ για "70000" απόρριψη ορίου. Με Result ο καλών…

Gleam — ρητός τύπος επιτυχίας ή αποτυχίας

Επιστροφή Result από έλεγχο θύρας

import gleam/int

pub fn port(text: String) -> Result(Int, String) {
  case int.parse(text) {
    Ok(number) if number >= 1 && number <= 65535 -> Ok(number)
    Ok(_) -> Error("port out of range")
    Error(_) -> Error("not an integer")
  }
}

Για "8080" αναμένεται Ok(8080), για "abc" σφάλμα μετατροπής, ενώ για "70000" απόρριψη ορίου. Με Result ο καλών δεν μπορεί να αγνοήσει τη διάκριση επιτυχίας και αποτυχίας χωρίς δική του επιλογή. Έλεγξε τη σύνταξη guard στη συγκεκριμένη έκδοση Gleam.

Δοκίμασε parser και κανόνα ξεχωριστά

Εξέτασε "0", "-1", κενό string και 65535. Ένας αρνητικός αριθμός μπορεί να μετατραπεί σωστά ως ακέραιος αλλά δεν είναι έγκυρη θύρα. Δημιούργησε caller με case για Ok(value) και Error(reason).

Έλεγχος περιβάλλοντος

Σημείωσε gleam --version, target Erlang ή JavaScript και πραγματικό αποτέλεσμα build. Δεν δηλώνεται μεταγλώττιση του παραδείγματος εδώ.

Μην εξαφανίζεις διαφορετικές αποτυχίες

Αν ο caller μετατρέπει οποιοδήποτε Error(_) σε Ok(0), καταστρέφει τη διάκριση μεταξύ άκυρου κειμένου και έγκυρης αριθμητικής τιμής. Χρησιμοποίησε διαφορετικό μήνυμα προς τον χρήστη για parsing και όρια, διατηρώντας το αρχικό Result. Σχεδίασε πίνακα δοκιμών: "1" οδηγεί σε Ok(1), "65535" σε Ok(65535), "65536" σε σφάλμα ορίου και "12x" σε σφάλμα parsing. Αν η είσοδος έρχεται από JSON, πρέπει πρώτα να επαληθεύσεις ότι το πεδίο είναι String· οι στατικοί τύποι δεν ελέγχουν αυτόματα απρόβλεπτο εξωτερικό payload. Κατέγραψε test command και diagnostic της Gleam πριν δηλώσεις ότι λειτουργεί.

Gleam

Βασική ιδέα

Η Gleam είναι στατικά τυποποιημένη functional γλώσσα για Erlang και JavaScript, με pattern matching και results.

Μικρό εκπαιδευτικό απόσπασμα

pub fn double(n: Int) -> Int {
  n * 2
}

Άσκηση βασισμένη στη συγκεκριμένη συμπεριφορά

Φτιάξε συνάρτηση που επιστρέφει Result για μη έγκυρες τιμές και χειρίσου Ok/Error.

Διάγνωση και όρια

Το foreign-function interface ενός target δεν μεταφέρεται αυτόματα σε Erlang και JavaScript.

Κάνε την άσκηση με πραγματικά δοκιμαστικά δεδομένα και με έκδοση Gleam που ταιριάζει στον κώδικα. Σημείωσε μία αρχική πρόβλεψη και την πραγματική έξοδο. Για περίπλοκο ή μη διαθέσιμο runtime, παρουσίασε τη στατική ανάλυση ως τέτοια, όχι ως επιτυχημένη εκτέλεση. Δοκίμασε ξεχωριστά την κανονική περίπτωση και μία οριακή τιμή, χωρίς πραγματικά προσωπικά ή παραγωγικά δεδομένα.