DedSec Project

hack — συγκεντρωτικός οδηγός — DedSec Project

hack — συγκεντρωτικός οδηγός Hack Διαφορά από την PHP Η Hack είναι γλώσσα με ελέγχους τύπων στο οικοσύστημα HHVM. Ένα αρχείο με <?hh δεν είναι πρόγραμμα για PHP CLI· η εκτέλεση με php δεν…

Hack

Διαφορά από την PHP

Η Hack είναι γλώσσα με ελέγχους τύπων στο οικοσύστημα HHVM. Ένα αρχείο με <?hh δεν είναι πρόγραμμα για PHP CLI· η εκτέλεση με php δεν αποτελεί δοκιμή της Hack. Ο type checker απορρίπτει ασύμβατους τύπους, αλλά κανόνες όπως «ο αριθμός να μην είναι αρνητικός» απαιτούν ξεχωριστό έλεγχο.

Μικρό εργαστήριο για ρυθμισμένο έργο HHVM

Αποθήκευσε ως lesson.hack. Το <<__EntryPoint>> δηλώνει τη συνάρτηση εκκίνησης. Έλεγξε την έκδοση HHVM και τις ρυθμίσεις του έργου πριν επιλέξεις εντολή εκτέλεσης.

<?hh
function double_positive(int $n): int {
  if ($n < 0) {
    throw new \InvalidArgumentException('negative');
  }
  return $n * 2;
}
<<__EntryPoint>>
function main(): void {
  echo double_positive(4), "\n";
  try {
    double_positive(-1);
  } catch (\InvalidArgumentException $_) {
    echo "rejected\n";
  }
}

Αναμενόμενη έξοδος, χωρίς εκτέλεση εδώ: 8 και έπειτα rejected. Ο τύπος int δεν εγγυάται μη αρνητική τιμή· αυτή η απαίτηση επιβάλλεται από τον έλεγχο μέσα στη συνάρτηση.

Διάγνωση προβλημάτων

Διαδρομή κατάκτησης

  1. Με πραγματικά εργαλεία Hack, σημείωσε εκδόσεις HHVM και type checker, εκτέλεσε το πρόγραμμα και κράτησε τις δύο γραμμές εξόδου.
  2. Άλλαξε προσωρινά την πρώτη κλήση σε double_positive("4"), πρόβλεψε το σφάλμα τύπου και επανέφερε ακέραιο όρισμα.
  3. Έλεγξε μηδέν, ένα και αρνητικό αριθμό. Εξήγησε γιατί η μη αρνητικότητα είναι κανόνας κατά την εκτέλεση και όχι εγγύηση του int.
  4. Σύγκρινε εξαίρεση και ρητή αναπαράσταση αποτελέσματος για API που καλεί άλλο πρόγραμμα. Τεκμηρίωσε πώς γίνεται η ανάκαμψη από αποτυχία.

Επαλήθευση: μόνο στατική ανασκόπηση εδώ· το HHVM δεν είναι εγκατεστημένο. Μην δηλώσεις επιτυχημένη εκτέλεση χωρίς πραγματικό έλεγχο. Πηγή: https://docs.hhvm.com/hack/

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

Πραγματικό αρχικό δείγμα

<?hh
<<__EntryPoint>>
function main(): void {
  echo "Hello, Ada!\n";
}

Περιβάλλον: Run with HHVM in a configured Hack project.. Επιβεβαίωσε ότι έχεις το σωστό compiler, host ή simulator πριν θεωρήσεις την έξοδο αξιόπιστη. Για scripts με πρόσβαση σε προσωπικά αρχεία ή ρυθμίσεις, χρησιμοποίησε προσωρινά και read-only δεδομένα.

Συγκεκριμένος στόχος υλοποίησης

Χρησιμοποίησε typed collections και shape για JSON-like input στη Hack. Σύγκρινε nullable types και runtime checks του HHVM.

Κρίσιμο λάθος που πρέπει να αναγνωρίζεις

Η Hack/HHVM δεν είναι απλή PHP 8· έλεγξε typed mode και διαθέσιμο HHVM.

Hack — Διαδρομή ουσιαστικής εξάσκησης

Πρακτικές εργασίες

  1. Φτιάξε προσβάσιμη φόρμα με ετικέτα και μήνυμα σφάλματος.
  2. Μοντελοποίησε ένα αίτημα και απάντηση μέσω HTTP API ή προσομοιωτή.
  3. Απόρριψε λανθασμένη είσοδο και κωδικοποίησε το κείμενο πριν την εισαγωγή σε HTML.

Ερωτήσεις ουσίας