Μαθήματα: Προχωρημένα
Μεταφέροντας τις γνώσεις μας στο επόμενο επίπεδο, αυτά τα μαθήματα καλύπτουν τα προχωρημένα θέματα των Elixir και BEAM.
Είδαμε τις αφαιρέσεις της Elixir για το συγχρονισμό αλλά μερικές φορές χρειαζόμαστε μεγαλύτερο έλεγχο και για αυτό στρεφόμαστε στις συμπεριφορές OTP πάνω στις οποίες έχει χτιστεί η Elixir.
Σε αυτό το μάθημα θα εστιάσουμε στο σημαντικότερο κομμάτι: τους GenServers
Οι Επιτηρητές είναι εξειδικευμένες διεργασίες με ένα σκοπό: την επισκόπηση άλλων διεργασιών. Αυτοί οι επιτηρητές μας επιτρέπουν να δημιουργούμε ανεκτικές στα σφάλματα εφαρμογές με το να επανεκινούν τις διεργασίες παιδιά όταν αποτυγχάνουν.
Μπορούμε να τρέξουμε τις εφαρμογές μας elixir σε ένα σύνολο διαφορετικών κόμβων που κατανέμονται σε ένα ή και πολλούς διακομιστές. Η Elixir μας επιτρέπει να επικοινωνούμε μεταξύ αυτών των κόμβων μέσω μερικών διαφορετικών μηχανισμών τους οποίους θα δούμε σε αυτό το μάθημα.
Ο Μεταπρογραμματισμός είναι η διαδικασία της χρήσης κώδικα που γράφει κώδικα. Στην Elixir αυτό μας δίνει τη δυνατότητα να επεκτείνουμε τη γλώσσα ώστε να καλύπτει τις ανάγκες μας και να αλλάζει τον κώδικά μας δυναμικά. Θα ξεκινήσουμε βλέποντας πως η Elixir παρουσιάζεται κάτω από το καπώ, πως να την αλλάξουμε, και τέλος πως να χρησιμοποιήσουμε αυτή τη γνώση για να την επεκτείνουμε.
Προειδοποίηση: ο Μεταπρογραμματισμός είναι δύσκολος και θα πρέπει να χρησιμοποιείται μόνο όταν είναι απολύτως απαραίτητος Η υπερβολική χρήση είναι σχεδόν σίγουρο ότι θα οδηγήσει σε περίπλοκο κώδικα που θα είναι δύσκολο να καταλάβουμε και διορθώσουμε.
Μερικές φορές ένα project μπορεί να γίνει μεγάλο, ή και πολύ μεγάλο. Το εργαλείο χτισίματος Mix μας επιτρέπει να χωρίσουμε τον κώδικά μας σε πολλαπλές εφαρμογές και να κάνουμε τα Elixir projects μας πιο διαχειρίσιμα καθώς μεγαλώνουν.
Σε αυτό το μάθημα θα μάθουμε για τα συντακτικά @spec
και @type
. Το πρώτο είναι συμπληρωματικό συντακτικού για να γράφουμε τεκμηρίωση που μπορεί να αναλυθεί από εργαλεία. Το δεύτερο μας βοηθάει να γράφουμε πιο ευανάγνωστο και εύκολο στην κατανόηση κώδικα.
Στο προηγούμενο μάθημα μάθαμε για τις προδιαγραφές, σε αυτό θα μάθουμε πως να απαιτούμε από μία ενότητα να υλοποιεί αυτές τις προδιαγραφές. Στην Elixir, αυτή η λειτουργία αναφέρεται ως συμπεριφορές.
Σε αυτό το μάθημα θα δούμε τα Πρωτόκολλα, τί ακριβώς είναι, και πως τα χρησιμοποιούμε στην Elixir.