From 109c50285947a0a87f93e4cffd098f287cca1dcf Mon Sep 17 00:00:00 2001 From: Emmanouil Papaioannou <51127063+ManosPapaioannou@users.noreply.github.com> Date: Fri, 13 Sep 2019 14:15:55 +0200 Subject: [PATCH] Create 172_el_locale Fixed the typos in Greek language. --- 172_el_locale | 1549 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1549 insertions(+) create mode 100644 172_el_locale diff --git a/172_el_locale b/172_el_locale new file mode 100644 index 0000000..1be208e --- /dev/null +++ b/172_el_locale @@ -0,0 +1,1549 @@ +head: + title: BetterDocs + metatags: + description: Βασικός προγραμματισμός με παραδείγματα Ruby και αναφορές. Καλύπτει + θέματα, τις ΣΤΑΘΕΡΈΣ αρχές, τα σχέδια σχεδιασμού, τις δομές δεδομένων, τους + αλγορίθμους. + keywords: Better docs, Ruby, Θεμελιώδεις αρχές, Βασικά στοιχεία προγραμματισμού + του Ruby. Ruby gotchas, Λειτουργικός προγραμματισμός, Μεταπρογραμματισμός, Νήματα, + αρχές Ruby με παραδείγματα, Σχέδια σχεδιασμού Ruby με παραδείγματα, Αλγόριθμοι + Ruby με παραδείγματα, Δομές δεδομένων Ruby με παραδείγματα. +content: + menu: + open: Άνοιγμα Μενού + close: Κλείσιμο Μενού + +sidebar: + - title: Αλγόριθμοι + url: algorithms + submenus: + - key: sorting + submenus: + - bubble_sort + - insertion_sort + - selection_sort + - shell_sort + - heap_sort + - merge_sort + - quick_sort + - key: searching + submenus: + - binary_search + - knuth_moriss_pratt_search + - title: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ + url: data_structures + submenus: + - key: axioms + submenus: + - fetch_store + - elementary_operations + - call_method + - calculating + - object + - example + - key: implementations + submenus: + - stack + - queue + - deque + - singly_linked_list + - doubly_linked_list + - ordered_list + - hash_table + - binary_tree + - binary_search_tree + - b_tree + - binary_heap + + - title: Σχεδιαστικά πρότυπα + url: design_patterns + submenus: + - key: creational + submenus: + - abstract_factory + - builder + - factory + - prototype + - singleton + - key: structural + submenus: + - adapter + - composite + - decorator + - facade + - flyweight + - proxy + - key: behavioral + submenus: + - chain_of_responsobility + - command + - interpreter + - iterator + - mediator + - observer + - state + - strategy + - template + - visitor + - title: Λειτουργικός Προγραμματισμός + url: functional_programming + submenus: + - pure_functions + - closures + - applying + - title: Gotchas + url: gotchas + submenus: + - surprising + - quotes + - twue + - symbols_and_strings + - string_or_nothing + - constants + - equals + - operations + - priority + - sensitive + - onto + - variables + - initialize + - superman + - regexp + - any + - undef + - freeze + - one_is_one + - bang + - array + - hash + - rescue + - to_str + - missing + - exception + - private + - braces + - module + - title: Ερωτήσεις συνέντευξης + url: interview_questions + - title: Metaprogramming + url: meta_programming + submenus: + - dynamic_dispatch + - dynamic_method + - dynamic_proxies + - title: Σταθερές αρχές + url: solid_principles + submenus: + - single + - open_close + - liskov + - segregation + - di + - title: Γίνετε Ruby Meister + url: ruby_meister + - title: Νήματα + url: threads + submenus: + - green + - gil + - mutex + - fibers + - rails + - config +pages: + wiki: Διαβάστε το wiki + credits: Πιστώσεις + page404: + title: Η σελίδα δεν βρέθηκε :( + description: Η σελίδα που ζητήσατε δεν βρέθηκε. + page500: + title: "Something was going wrong :(" + algorithms: + title: Αλγόριθμοι + complexity: + best: Καλύτερος + average: Μέση τιμή + worst: Χειριστός + sorting: + title: Ταξινόμηση + description: Ένας αλγόριθμος ταξινόμησης είναι ένας αλγόριθμος που τοποθετεί περιεχόμενα + μιας λίστας με μια συγκεκριμένη σειρά. Οι πιο χρησιμοποιούμενες εντολές είναι + η αριθμητική σειρά και η λεξικογραφική σειρά. Η αποτελεσματική ταξινόμηση είναι + σημαντική για τη βελτιστοποίηση της χρήσης άλλων αλγορίθμων (όπως αλγορίθμων + αναζήτησης και συγχώνευσης) που απαιτούν δεδομένα εισόδου να είναι σε ταξινομημένες + λίστες. είναι επίσης συχνά χρήσιμο για κανονικοποίηση δεδομένων και για παραγωγή + αναγνώσιμων από άνθρωπο εξόδων. + bubble_sort: + title: Τύπος φυσαλίδας + description: Το είδος φυσαλίδας έχει πολλές από τις ίδιες ιδιότητες με το είδος + εισαγωγής, αλλά έχει ελαφρώς υψηλότερη επιβάρυνση. Στην περίπτωση των δεδομένων + που έχουν ταξινομηθεί με σχεδόν διαχωρισμό, η τύχη των φυσαλίδων παίρνει το + O (n) , αλλά απαιτεί τουλάχιστον 2 περάσματα + μέσω των δεδομένων (ενώ το είδος εισαγωγής απαιτεί κάτι μονάχα 1 + πέρασμα). + insertion_sort: + title: Ταξινόμηση εισαγωγής + description: Αν και είναι ένας από τους στοιχειώδεις αλγόριθμους ταξινόμησης + με τον O (n 2 ) χειρότερο χρόνο, + ο τύπος εισαγωγής είναι ο αλγόριθμος επιλογής είτε όταν τα δεδομένα είναι + σχεδόν ταξινομημένα (επειδή είναι προσαρμοστικά) είτε όταν το μέγεθος του + προβλήματος είναι μικρό (επειδή έχει χαμηλό γενικό κόστος). Για τους λόγους + αυτούς και επειδή είναι επίσης σταθερός, το είδος εισαγωγής χρησιμοποιείται + συχνά ως αναδρομική βασική περίπτωση (όταν το μέγεθος του προβλήματος είναι + μικρό) για ανώτερους αλγόριθμους ταξινόμησης και κατακράτησης, + όπως merge sort ή quick sort. + selection_sort: + title: Ταξινόμηση επιλογής + description: Από τη σύγκριση που παρουσιάζεται εδώ, θα μπορούσε κανείς να συμπεράνει + ότι το Ταξινόμηση επιλογής δεν πρέπει ποτέ να χρησιμοποιηθεί. Δεν προσαρμόζεται + στα δεδομένα με οποιονδήποτε τρόπο (παρατηρήστε ότι τα τέσσερα κινούμενα σχέδια + παραπάνω τρέχουν σε lockstep), οπότε ο χρόνος εκτέλεσης είναι πάντα τετραγωνικός. + Ωστόσο, το είδος επιλογής έχει την ιδιότητα να ελαχιστοποιεί τον αριθμό των + ανταλλαγών. Σε εφαρμογές όπου το κόστος ανταλλαγής αντικειμένων είναι υψηλό, + η ταξινόμηση επιλογής μπορεί να είναι ο αλγόριθμος επιλογής. + shell_sort: + title: Ταξινόμηση φλοιού + description: Η πολυπλοκότητα χειρότερης περίπτωσης της ταξινόμησης του φλοιού + εξαρτάται από την ακολουθία αύξησης. Για τις προσαυξήσεις 1 4 13 40 121 ..., + η οποία είναι αυτό που χρησιμοποιείται εδώ, ο χρόνος πολυπλοκότητα είναι O(n3/2) + Για άλλες προσαυξήσεις, πολυπλοκότητα χρόνου είναι γνωστό ότι είναι O(n4/3) και + ακόμη και O(n·lg2(n)). Ούτε + τα σφιχτά ανώτερα όρια σχετικά με την πολυπλοκότητα του χρόνου ούτε η καλύτερη + ακολουθία αύξησης είναι γνωστά. Επειδή το είδος του φλοιού βασίζεται στο + είδος εισαγωγής, το είδος φλοιού κληρονομεί τις προσαρμοστικές ιδιότητες + του είδους εισαγωγής. Η προσαρμογή δεν είναι τόσο δραματική επειδή η ταξινόμηση + του φλοιού απαιτεί μία διέλευση από τα δεδομένα για κάθε αύξηση, αλλά είναι + σημαντική. Για την ακολουθία αύξησης που παρουσιάζεται παραπάνω, υπάρχουν + βήματα log 3 (n) , επομένως η + χρονική πολυπλοκότητα για σχεδόν ταξινομημένα δεδομένα είναι O + (n·log3(n)) . Λόγω της χαμηλής επιβάρυνσης, της σχετικά + απλής εφαρμογής, των προσαρμοστικών ιδιοτήτων και της υποταγιακής πολυπλοκότητας + του χρόνου, το είδος του φλοιού μπορεί να είναι μια βιώσιμη εναλλακτική + λύση στους αλγόριθμους ταξινόμησης O(n·lg(n)) + για ορισμένες εφαρμογές, όταν τα προς ταξινόμηση δεδομένα είναι όχι πολύ μεγάλο. + heap_sort: + title: Ταξινόμηση στοιβάδας + description: Ταξινόμηση στοιβάδας είναι απλή στην εφαρμογή, εκτελεί ένα O + (n · lg (n)) είδος, αλλά δεν είναι σταθερό. Ο πρώτος βρόχος, η φάση + θ (n) "heapify", θέτει τη συστοιχία + σε σειρά σωρών. Ο δεύτερος βρόχος, η φάση O (n · + lg (n)) «ταξινόμησης», επαναλαμβάνει επανειλημμένα το μέγιστο και επαναφέρει + τη σειρά σωρών. Η λειτουργία sink γράφεται αναδρομικά για μεγαλύτερη σαφήνεια. + Έτσι, όπως φαίνεται, ο κώδικας απαιτεί Θ (lg (n)) + χώρο για την επαναλαμβανόμενη στοίβα κλήσεων. Ωστόσο, η επαναφορά ουράς στο + sink () μετατρέπεται εύκολα σε επανάληψη, η οποία αποδίδει τον δεσμό Ο (1) . Και οι δύο φάσεις είναι ελαφρώς προσαρμοστικές, + αν και όχι με ιδιαίτερα χρήσιμο τρόπο. Στην σχεδόν ταξινομημένη περίπτωση, + η φάση heapify καταστρέφει την αρχική σειρά. Στην αντίστροφη περίπτωση, η + φάση heapify είναι όσο το δυνατόν γρηγορότερη από τη στιγμή που ο πίνακας + ξεκινάει με τη σειρά σωρών, αλλά στη συνέχεια η τυπική φάση ομαδοποίησης. + Στις λίγες περιπτώσεις κλειδιά, υπάρχει κάποια επιτάχυνση, αλλά + όχι τόσο όσο στο είδος του φλοιού ή τη τριπλή γρήγορη ταξινόμηση. + merge_sort: + title: Ταξινόμηση συνγχώνευσης + description: 'Το είδος συγχώνευσης είναι πολύ προβλέψιμο. Κάνει μεταξύ των 0,5lg(n) και lg(n) + συγκρίσεις ανά στοιχείο, και μεταξύ lg(n) + και 1.5lg(n) ανά στοιχείο. Τα ελάχιστα επιτυγχάνονται για ήδη ταξινομημένα δεδομένα. + τα μέγιστα επιτυγχάνονται, κατά μέσο όρο, για τυχαία δεδομένα. Αν η χρήση + του Θ (n) επιπλέον χώρου δεν ενδιαφέρει, + τότε η συγχώνευση είναι μια εξαιρετική επιλογή: Είναι απλή στην εφαρμογή και + είναι ο μόνος σταθερός αλγόριθμος ταξινόμησης O + (n · lg (n)) . Σημειώστε ότι κατά την ταξινόμηση των συνδεδεμένων λιστών, + η συγχώνευση απαιτεί μόνο θ (lg (n)) επιπλέον + χώρο (για την επανάληψη). Η συγχώνευση είναι ο αλγόριθμος επιλογής για μια + ποικιλία καταστάσεων: όταν απαιτείται σταθερότητα, κατά την ταξινόμηση των + συνδεδεμένων λιστών η πρόσβαση είναι πολύ πιο ακριβή από τη διαδοχική πρόσβαση + (για παράδειγμα, η εξωτερική ταξινόμηση σε ταινία) .Υπάρχουν γραμμικοί χρόνοι + επί τόπου αλγόριθμοι συγχώνευσης για το τελευταίο βήμα του αλγορίθμου, αλλά + είναι και οι δύο δαπανηροί και περίπλοκοι. όπως η εξωτερική ταξινόμηση όταν + ο θ (n) επιπλέον χώρος δεν είναι διαθέσιμος.' + quick_sort: + title: Γρήγορη ταξινόμηση + description: Όταν εφαρμόζεται προσεκτικά, η γρήγορη ταξινόμηση είναι γερό και έχει χαμηλή + επιβάρυνση. Όταν δεν απαιτείται σταθερή ταξινόμηση, η γρήγορη ταξινόμηση είναι ένα + εξαιρετικό είδος γενικής χρήσης - αν και θα έπρεπε να χρησιμοποιείται πάντοτε + η 3-διαχωριστική έκδοση. Ο παραπάνω κωδικός διαχωρισμού δύο γραμμών γράφεται + για λόγους σαφήνειας και όχι για βέλτιστη απόδοση. παρουσιάζει κακή τοποθεσία + και, κριτικά, εμφανίζει O (n 2 ) + χρόνο όταν υπάρχουν λίγα μοναδικά κλειδιά. Μια πιο αποτελεσματική και ισχυρή + μέθοδος 2-way partitioning δίνεται στη γρήγορη ταξινόμηση είναι Optimal από τον Robert + Sedgewick και τον Jon Bentley. Ο ισχυρός διαχωρισμός παράγει ισορροπημένη + αναδρομή όταν υπάρχουν πολλές τιμές ίσες με τον άξονα, δίνοντας πιθανολογικές + εγγυήσεις του χρόνου O (n · lg (n)) και του + O (lg (n)) για όλες τις εισόδους. Με τα δύο + υπο-είδη να εκτελούνται αναδρομικά, η γρήγορη ταξινόμηση απαιτεί O + (n) επιπλέον χώρο για τη στοίβα ανακύκλωσης στη χειρότερη περίπτωση + όταν η αναδρομή δεν είναι ισορροπημένη. Αυτό είναι εξαιρετικά απίθανο να συμβεί, + αλλά μπορεί να αποφευχθεί με την ταξινόμηση της μικρότερης υπο-συστοιχίας + αναδρομικά πρώτα. το δεύτερο είδος υπο-συστοιχιών είναι μια ουρά αναδρομική + κλήση, η οποία μπορεί να γίνει με την επανάληψη αντί. Με αυτή τη βελτιστοποίηση, + ο αλγόριθμος χρησιμοποιεί O (lg (n)) επιπλέον + χώρο στη χειρότερη περίπτωση. + other: Άλλοι αλγόριθμοι ταξινόμησης + additional: Πρόσθετη ανάγνωση + searching: + title: Αναζήτηση + binary_search: + title: Δυαδική αναζήτηση + description: Στην επιστήμη των υπολογιστών, η δυαδική αναζήτηση, επίσης γνωστή + ως αναζήτηση μισού διαστήματος ή λογαριθμική αναζήτηση, είναι ένας αλγόριθμος + αναζήτησης που βρίσκει τη θέση μιας τιμής στόχου μέσα σε μια ταξινομημένη + συστοιχία. Συγκρίνει την τιμή στόχο με το μεσαίο στοιχείο του πίνακα. αν είναι + άνισες, το εξάμηνο στο οποίο ο στόχος δεν μπορεί να βρεθεί εξαλείφεται και + η αναζήτηση συνεχίζεται στο υπόλοιπο μισό μέχρι να πετύχει. + knuth_moriss_pratt_search: + title: Αναζήτηση Knuth-Morris-Pratt + description: Στην επιστήμη των υπολογιστών, ο αλγόριθμος αναζήτησης αλφαριθμητών + Knuth-Morris-Pratt (ή ο αλγόριθμος KMP) αναζητά περιστατικά μιας \"λεξης\"Λ + μέσα σε μια κύρια \"συμβολοσειρά κειμένου\" Σ χρησιμοποιώντας την + παρατήρηση ότι όταν συμβαίνει μια αναντιστοιχία, πληροφορίες για να προσδιοριστεί + πού θα μπορούσε να ξεκινήσει ο επόμενος αγώνας, παρακάμπτοντας έτσι την επανεξέταση + των προηγουμένως αντιστοιχισμένων χαρακτήρων. + other: + title: Άλλοι αλγόριθμοι αναζήτησης + dijkstra: Αλγόριθμος του Dijkstra + kruskal: Ο αλγόριθμος του Kruskal + longest: Μεγαλύτερη αυξανόμενη αλληλουχία + telephone_number: Αριθμός τηλεφώνου σε λέξεις + credits: 'Κωδικός και άρθρα λήφθηκαν από πηγές:' + data_structures: + title: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ + description: Στην επιστήμη των υπολογιστών, χρησιμοποιείται μεγάλη ταξινόμηση Ο + για την ταξινόμηση αλγορίθμων με βάση τον τρόπο με τον οποίο αντιδρούν στις αλλαγές + στο μέγεθος της εισόδου, όπως για παράδειγμα το πώς ο χρόνος επεξεργασίας ενός + αλγορίθμου αλλάζει καθώς το μέγεθος του προβλήματος γίνεται εξαιρετικά μεγάλο. + Στην θεωρία του αναλυτικού αριθμού χρησιμοποιείται για να εκτιμήσει το "σφάλμα + που διαπράττεται" αντικαθιστώντας το ασυμπτωτικό μέγεθος μιας αριθμητικής + συνάρτησης με την τιμή που παίρνει σε ένα μεγάλο πεπερασμένο επιχείρημα. Ένα διάσημο + παράδειγμα είναι το πρόβλημα της εκτίμησης του υπολοίπου όρου στο θεώρημα του + πρώτου αριθμού. + axioms: + title: Βασικά αξιώματα των δομών δεδομένων. + description: Η απόδοση του χρόνου εκτέλεσης του χρόνου εκτέλεσης της κοινής γλώσσας + δίδεται από ένα σύνολο αξιωμάτων τα οποία θα υποθέσουμε τώρα. + fetch_store: + title: Χρόνος λήψης και αποθήκευσης. + description1: Ο χρόνος που απαιτείται για την ανάκτηση μίας αναφοράς σε ένα + αντικείμενο από τη μνήμη είναι μια σταθερά, T_fetch + και ο χρόνος που απαιτείται για την αποθήκευση μίας αναφοράς σε ένα αντικείμενο + στη μνήμη είναι μια σταθερά, T_store + description2: Σύμφωνα με το αξίομα, η εντολή ανάθεσης έχει χρόνο εκτέλεσης T_fetch + T_store . Δηλαδή, ο χρόνος που απαιτείται + για την ανάκτηση της αναφοράς αντικειμένου από τη μεταβλητή x είναι T_fetch και ο χρόνος που απαιτείται για την αποθήκευση + αυτής της αναφοράς αντικειμένου στη μεταβλητή y είναι T_store + . + description3: Επίσης έχει χρόνο εκτέλεσης T_fetch + + T_store . Για να δείτε για ποιά περίπτωση είναι, θεωρήστε ότι + η σταθερά 1 ορίζει ένα αντικείμενο Fixnum + με τιμή ένα. Επομένως, μπορούμε να αναμένουμε ότι το κόστος της παραλαβής + της αναφοράς στο αντικείμενο που ονομάζεται 1 είναι το ίδιο με το κόστος της + ανάληψης αναφοράς σε οποιοδήποτε άλλο αντικείμενο. + elementary_operations: + title: Στοιχειώδης χρόνος αριθμητικών λειτουργιών + description1: Οι χρόνοι που απαιτούνται για την εκτέλεση στοιχειωδών αριθμητικών + λειτουργιών, όπως η προσθήκη, η αφαίρεση, ο πολλαπλασιασμός, η διαίρεση και + η σύγκριση, είναι όλες σταθερές. Αυτοί οι χρόνοι σημειώνονται με T_ + +, T_-, T_ /, T_ *, T_ <, αντίστοιχα. + description2: Μπορούμε να προσδιορίσουμε το χρόνο μιας δήλωσης όπως το 2 * T_fetch + T_ + + T_store . Αυτό οφείλεται στο + γεγονός ότι πρέπει να φέρουμε δύο αναφορές αντικειμένων από τις μεταβλητές + y και 1. εκτελέστε την προσθήκη δίνοντας ένα νέο αντικείμενο της οποίας η + αξία είναι το άθροισμα. και, αποθηκεύστε μια αναφορά στο νέο αντικείμενο στη + μεταβλητή y. + description3: Υποθέτουμε ότι η εναλλακτική λύση απαιτεί ακριβώς τον ίδιο χρόνο + εκτέλεσης με την αρχική δήλωση. + call_method: + title: Χρόνος μεθόδου κλήσης + description1: Ο χρόνος που απαιτείται για την κλήση μιας μεθόδου είναι μια σταθερή + τιμή T_call και ο χρόνος που απαιτείται για + την επιστροφή από μια μέθοδο είναι μια σταθερά T_return + Το σκεπτικό για την πραγματοποίηση της επιβάρυνσης που σχετίζεται με την παράμετρο + που περνάει το ίδιο με το χρόνο αποθήκευσης μιας αναφοράς αντικειμένου είναι + ότι η παράδοση ενός επιχειρήματος είναι εννοιολογικά η ίδια με την εκχώρηση + της πραγματικής τιμής παραμέτρου στην τυπική παράμετρο της μεθόδου. + description2: Σύμφωνα με το Axiom, ο χρόνος εκτέλεσης της εντολής θα είναι T_fetch + 2 * T_store + T_call + T_f (x) , όπου + T_f (x) είναι ο χρόνος εκτέλεσης της μεθόδου + f για την είσοδο x. Το πρώτο από τα δύο καταστήματα οφείλεται στο πέρασμα + της παραμέτρου x στη μέθοδο f. το δεύτερο προκύπτει από την εκχώρηση στη μεταβλητή + y. + calculating: + title: Χρόνος υπολογισμού + description1: Ο χρόνος που απαιτείται για τον υπολογισμό της διεύθυνσης που + συνεπάγεται μια συνδρομητική λειτουργία πίνακα, π.χ. a[i] + , είναι μια σταθερά, T_[] . Αυτή τη φορά + δεν περιλαμβάνεται ο χρόνος για τον υπολογισμό της έκφρασης του δείκτη, ούτε + και ο χρόνος για την πρόσβαση στο στοιχείο του πίνακα. + description2: 'Αυτό είναι 3 * T_fetch . Απαιτούνται + τρείς τελεστέες λήψεις: η πρώτη για να παραλάβει μια αναφορά στο αντικείμενο + πίνακα a; η δεύτερη για να παραλάβει μια αναφορά στο αντικείμενο ευρετηρίου + i. και η τρίτη για να φέρουμε μια αναφορά στο στοιχείο πίνακα a + [i] .' + object: + title: Χρόνος δημιουργίας αντικειμένου + description1: Ο χρόνος που απαιτείται για τη δημιουργία μιας νέας παρουσίας + αντικειμένου μιας κλάσης είναι μια σταθερά, T_new + . Αυτή τη φορά δεν περιλαμβάνεται ο χρόνος που απαιτείται για την αρχικοποίηση + του αντικειμένου. Με την εφαρμογή των Axioms μπορούμε να καθορίσουμε ότι ο + χρόνος εκτέλεσης της δήλωσης. + description2: T_new + T_fetch + 2 * T_store + T_call + + T_fixnum_init , όπου T_fixnum_init + είναι ο χρόνος εκτέλεσης της μεθόδου initialize της κλάσης Fixnum. + example: + title: Παράδειγμα + description: Σε αυτή την ενότητα εφαρμόζουμε το Axioms, την ανάλυση του χρόνου + λειτουργίας ενός προγράμματος για τον υπολογισμό της ακόλουθης αθροιστικής + σειράς αριθμητικών σειρών. + implementations: + title: Εκτέλεση + stack: + title: Στοίβα + description: Η στοίβα είναι ο αδελφός της ουράς. Μιμείται μια στοίβα πραγματικής + ζωής (π.χ. χαρτιού). Είναι FILO (πρώτος-τελευταίος-out), έτσι ώστε όταν τα + αντικείμενα ανακτώνται από τη στοίβα, επιστρέφονται με την αντίστροφη σειρά + της προσθήκης τους. Και πάλι, οι Ruby Arrays παρέχουν ένα τέλειο δοχείο. Όπως + και με την ουρά, θα μπορούσε επίσης να εφαρμοστεί χρησιμοποιώντας μια συνδεδεμένη + λίστα. + as_array: Στοίβα ως παράταξη. + as_linked_list: Στοίβα ως συνδεδεμένη λίστα + queue: + title: Ουρά + description: Μια ουρά είναι μια απλή δομή με βάση δομή που μιμείται μια ουρά + πραγματικής ζωής (π.χ. αναμονή σε γραμμή στη τράπεζα). Είναι FIFO (first-in-out-out), + που σημαίνει ότι όταν ανακτάτε στοιχεία από την ουρά, επιστρέφονται με τη + σειρά που εισήγαγαν. Οι Ruby Arrays παρέχουν μεθόδους που καθιστούν την εφαρμογή + Queue ασήμαντη εύκολη αλλά το έχουν ονομάσει κατάλληλα και περιέχονται σε + μια τάξη ευκολίας αξίζει να δουν ότι υλοποιούνται και επειδή άλλες δομές θα + κληρονομήσουν από αυτή. Μια εναλλακτική εφαρμογή θα μπορούσε να γίνει χρησιμοποιώντας + μια συνδεδεμένη λίστα. + as_array: Η ουρά ως παράταξη + as_linked_list: Ουρά ως συνδεδεμένη λίστα + deque: + title: και + description: Το Deque είναι μια ουρά που επιτρέπει την προσθήκη και την αφαίρεση + στοιχείων και στα δύο άκρα. + as_array: Και ως μια ουρά + as_linked_list: Deque ως συνδεδεμένη λίστα + singly_linked_list: + title: Ιδιαίτερα συνδεδεμένη λίστα + description: Οι απλά συνδεδεμένες λίστες περιέχουν κόμβους που έχουν ένα πεδίο + δεδομένων καθώς και ένα 'επόμενο' πεδίο, το οποίο δείχνει στον επόμενο + κόμβο στη γραμμή των κόμβων. Οι λειτουργίες που μπορούν να εκτελεστούν σε + ξεχωριστά συνδεδεμένες λίστες περιλαμβάνουν εισαγωγή, διαγραφή και μετάβαση. + doubly_linked_list: + title: Λίστα διπλής σύνδεσης + description: Σε μια λίστα διπλών συνδέσμων, κάθε στοιχείο λίστας περιέχει δύο + αναφορές - μία για τον διάδοχό του και μία για τον προκάτοχό του. + ordered_list: + title: Ταξινομημένη λίστα + description: Μια ταξινομημένη λίστα είναι ένας κατάλογος στον οποίο η σειρά + των στοιχείων είναι σημαντική. Ωστόσο, τα στοιχεία σε μια ταξινομημένη λίστα + δεν είναι απαραίτητα ταξινομημένα. Συνεπώς, είναι δυνατό να αλλάξετε τη σειρά + των στοιχείων και να έχετε ακόμα μια έγκυρη λίστα. + as_array: Λίστα ταξινομημένων ως παράταξη + hash_table: + title: Πίνακας Hash + description: Ένας πίνακας hash είναι ένα δοχείο με δυνατότητα αναζήτησης. Ως + εκ τούτου, παρέχει μεθόδους για την τοποθέτηση αντικειμένου στο δοχείο, την + εύρεση αντικειμένου στο δοχείο και την αφαίρεση ενός αντικειμένου από το δοχείο. + binary_tree: + title: Δυαδικό δένδρο + description: Ένα δυαδικό δέντρο είναι ένα δέντρο στο οποίο κάθε κόμβος μπορεί + να έχει μέχρι δύο παιδιά. Τα παιδιά ορίζονται αριστερά και δεξιά. + binary_search_tree: + title: Δυαδικό Δέντρο αναζήτησης + description: 'Στην επιστήμη των υπολογιστών, δυαδικά δέντρα αναζήτησης (BST), + μερικές φορές αποκαλούμενα εντοπισμένα ή ταξινομημένα δυαδικά δέντρα, είναι + ένας ιδιαίτερος τύπος δοχείων: δομές δεδομένων που αποθηκεύουν \'αντικείμενα\' + (όπως αριθμούς, ονόματα κ.λπ.) στη μνήμη. Επιτρέπουν γρήγορη αναζήτηση, προσθήκη + και αφαίρεση στοιχείων και μπορούν να χρησιμοποιηθούν για την υλοποίηση είτε + δυναμικών ομάδων αντικειμένων είτε πίνακες αναζήτησης που επιτρέπουν την εύρεση + ενός στοιχείου με το κλειδί του (π.χ. εύρεση του αριθμού τηλεφώνου ενός ατόμου + με το όνομα)' + b_tree: + title: B-δέντρο + description: Στην επιστήμη των υπολογιστών, ένα B-δέντρο είναι μια δομή δεδομένων + δένδρων που εξισορροπεί τη φύση και διατηρεί τα δεδομένα ταξινομημένα και + επιτρέπει αναζητήσεις, διαδοχική πρόσβαση, εισαγωγές και διαγραφές σε λογαριθμικό + χρόνο. Το B-δέντρο είναι μια γενίκευση ενός δυαδικού δέντρου αναζήτησης, επειδή + ένας κόμβος μπορεί να έχει περισσότερα από δύο παιδιά (αντίθετα με τα δυαδικά + δέντρα αναζήτησης που εξισορροπούν την αυτονομία, το B-tree είναι βελτιστοποιημένο + για συστήματα που διαβάζουν και γράφουν μεγάλα μπλοκ δεδομένων.) B- τα δέντρα + είναι ένα καλό παράδειγμα δομής δεδομένων για την εξωτερική μνήμη. Χρησιμοποιείται + συνήθως σε βάσεις δεδομένων και συστήματα αρχείων. + binary_heap: + title: Δυαδική στοιβλαδα + description: Μια δυαδική στοιβάδα είναι ένα πλήρες δυαδικό δέντρο που έχει παραγγείλει + σωρούς, το οποίο υλοποιείται χρησιμοποιώντας μια συστοιχία. Σε μια στοιβάδα το + μικρότερο κλειδί βρίσκεται στη ρίζα και αφού η ρίζα εντοπίζεται πάντοτε στην + πρώτη θέση της συστοιχίας, η εύρεση του μικρότερου κλειδιού είναι μια τετριμμένη + λειτουργία σε μια δυαδικη στοιβάδα. + credits: 'Κωδικός και άρθρα λήφθηκαν από πήγες:' + source: Αυτή η σελίδα περιέχει τον κώδικα Ruby από το βιβλίο \"Data Structures and Algorithms with Object-Oriented Design Patterns in Ruby\" του Bruno + R. Preiss. Πνευματικά δικαιώματα (c) 2004 από τους Bruno R. Preiss, P. Eng. + Ολα τα δικαιώματα διατηρούνται. + design_patterns: + title: Σχεδιαστικά πρότυπα + creational: + title: Δημιουργικά πρότυπα + description: Στη μηχανική λογισμικού, τα σχέδια δημιουργικής σχεδίασης είναι μοτίβα + σχεδίασης που ασχολούνται με μηχανισμούς δημιουργίας αντικειμένων, προσπαθώντας + να δημιουργήσουν αντικείμενα με τρόπο κατάλληλο για την κατάσταση. Η βασική + μορφή της δημιουργίας αντικειμένων μπορεί να οδηγήσει σε προβλήματα σχεδιασμού + ή σε πρόσθετη πολυπλοκότητα του σχεδιασμού. Τα μοντέλα σχεδίασης δημιουργίας + λύουν αυτό το πρόβλημα ελέγχοντας με κάποιο τρόπο αυτήν τη δημιουργία αντικειμένου. + Τα σχέδια δημιουργικού σχεδιασμού αποτελούνται από δύο κυρίαρχες ιδέες. Το ένα + είναι η ενθυλάκωση της γνώσης σχετικά με τις συγκεκριμένες κατηγορίες που χρησιμοποιεί + το σύστημα. Ένα άλλο κρύβει πώς δημιουργούνται και συνδυάζονται οι περιπτώσεις + αυτών των συγκεκριμένων τάξεων. + abstract_factory: + title: Λογισμικο αφηρημένου μοτίβου + description: Το λογισμικό αφηρημένου μοτίβου παρέχει έναν τρόπο να ενσωματώνει + μια ομάδα μεμονωμένων εργοστασίων που έχουν ένα κοινό θέμα χωρίς να προσδιορίζουν + τις συγκεκριμένες κατηγορίες τους. Στην κανονική χρήση, το λογισμικό πελάτη + δημιουργεί μια συγκεκριμένη εφαρμογή του λογισμικού αφηρημένου μοτίβου και στη συνέχεια + χρησιμοποιεί τη γενική διεπαφή του λογισμικού για τη δημιουργία των συγκεκριμένων + αντικειμένων που αποτελούν μέρος του θέματος. Ο πελάτης δεν γνωρίζει (ή φροντίζει) + ποια συγκεκριμένα αντικείμενα παίρνει από κάθε ένα από αυτά τα εσωτερικά εργοστάσια, + αφού χρησιμοποιεί μόνο τις γενικές διεπαφές των προϊόντων τους. Αυτό το μοτίβο + διαχωρίζει τις λεπτομέρειες της εφαρμογής ενός συνόλου αντικειμένων από τη + γενική χρήση τους και βασίζεται στη σύνθεση αντικειμένων, καθώς η δημιουργία + αντικειμένων εφαρμόζεται σε μεθόδους που εκτίθενται στην εργοστασιακή διεπαφή. + builder: + title: Σχέδιο κατασκευής + description: Το σχέδιο κατασκευής είναι ένα σχέδιο κατασκευής λογισμικού δημιουργίας + αντικειμένου. Σε αντίθεση με το λογισμικό αφηρημένου μοτίβου και το πρότυπο + της εργοστασιακής μεθόδου, η πρόθεση του οποίου είναι να επιτρέψει τον πολυμορφισμό, + η πρόθεση του σχεδίου κατασκευής είναι να βρεθεί λύση στο τηλεσκοπικό + δομοστοιχειωτό κατασκευαστή. Το τηλεσκοπικό κατασκευαστή παρουσιάζεται + όταν η αύξηση του συνδυασμού παραμέτρων κατασκευαστή αντικειμένου οδηγεί σε + μια εκθετική λίστα κατασκευαστών. Αντί να χρησιμοποιήσει πολυάριθμους κατασκευαστές, + το πρότυπο κατασκευής χρησιμοποιεί ένα άλλο αντικείμενο, μια κατασκευη, η οποία + λαμβάνει κάθε βήμα εκκίνησης κάθε βήμα προς βήμα και στη συνέχεια επιστρέφει + το προκύπτον κατασκευασμένο αντικείμενο ταυτόχρονα. + factory: + title: Λογισμικό + description: Στον προγραμματισμό που βασίζεται στην τάξη, το πρότυπο μεθόδου + εργοστασίου είναι ένα σχέδιο δημιουργίας που χρησιμοποιεί τις εργοστασιακές + μεθόδους για να αντιμετωπίσει το πρόβλημα της δημιουργίας αντικειμένων χωρίς + να χρειάζεται να προσδιορίσει την ακριβή κλάση του αντικειμένου που θα δημιουργηθεί. + Αυτό γίνεται με τη δημιουργία αντικειμένων καλώντας μια εργοστασιακή μέθοδο + - είτε προσδιορίζεται σε μια διεπαφή και υλοποιείται από τάξεις παιδιού, είτε + υλοποιείται σε μια βασική κλάση και προαιρετικά αντικαθίσταται από παράγωγες + κλάσεις - αντί να καλεί έναν κατασκευαστή. + prototype: + title: Πρωτότυπο σχέδιο + description: Το πρωτότυπο σχέδιο είναι ένα σχέδιο δημιουργίας κατά μήκος των + γραμμών του εργοστασίου. Το κόλπο με το πρωτότυπο είναι ότι δημιουργείτε νέα + αντικείμενα αντιγράφοντας ένα κύριο αντικείμενο. Αλλαγή αυτού του κύριου αντικειμένου + και όλων των επόμενων αντικειμένων που δημιουργείτε θα πάει στη ζωή με ένα + αντίγραφο της αλλαγής. + singleton: + title: Σχέδιο Singleton + description: Βεβαιωθείτε ότι μια τάξη έχει μόνο μία παρουσία και παρέχει ένα + παγκόσμιο σημείο πρόσβασης σε αυτήν. Αυτό είναι χρήσιμο όταν απαιτείται ένα + ακριβώς αντικείμενο για τον συντονισμό των ενεργειών στο σύνολο του συστήματος. + Η ιδέα γενικεύεται μερικές φορές σε συστήματα που λειτουργούν πιο αποτελεσματικά + όταν υπάρχει μόνο ένα αντικείμενο ή περιορίζουν την παράσταση σε ένα ορισμένο + αριθμό αντικειμένων. + not_covered: + title: Μη καλυμένα σχέδια' + lazy: Λανθασμένη προετοιμασία + multiton: Multiton + pool: Υποκατηγορία αντικειμένων + resource: Η απόκτηση πήγων είναι το ξεκίνημα + structural: + title: Δομικά σχέδια + description: Στη μηχανική λογισμικού, τα σχέδια δομικής σχεδίασης είναι σχεδιαστικά + μοτίβα που διευκολύνουν το σχεδιασμό, προσδιορίζοντας έναν απλό τρόπο για να + πραγματοποιήσουν σχέσεις μεταξύ οντοτήτων. + adapter: + title: Σχέδιο προσαρμογέα + description: Στη μηχανική λογισμικού, το μοτίβο προσαρμογέα είναι ένα μοτίβο + σχεδιασμού λογισμικού που επιτρέπει τη χρήση της διεπαφής μιας υπάρχουσας + κλάσης ως άλλη διεπαφή. Συχνά χρησιμοποιείται για να κάνει τις υπάρχουσες + τάξεις να δουλεύουν με άλλους χωρίς να τροποποιήσουν τον πηγαίο κώδικα τους. + composite: + title: Σύνθετο μοτίβο + description: Το σχέδιο σύνθετου σχεδιασμού είναι ένα δομικό σχέδιο που χρησιμοποιείται + για να αντιπροσωπεύει αντικείμενα που έχουν μια ιεραρχική δομή δέντρου. Επιτρέπει + την ομοιόμορφη αντιμετώπιση τόσο των ατομικών κόμβων των φύλλων όσο και των + κλάδων που αποτελούνται από πολλούς κόμβους. + decorator: + title: Σχέδιο διακοσμητή + description: Στον αντικειμενοστραφή προγραμματισμό, το μοτίβο διακοσμητή (γνωστό + και ως Wrapper, μια εναλλακτική ονομασία που μοιράζεται με το μοτίβο προσαρμογέα) + είναι ένα μοτίβο σχεδίασης που επιτρέπει την προσθήκη συμπεριφοράς σε ένα + μεμονωμένο αντικείμενο είτε στατικά είτε δυναμικά, χωρίς να επηρεάζεται η + συμπεριφορά άλλων αντικείμενα από την ίδια κλάση. Το μοτίβο διακοσμητή είναι + συχνά χρήσιμο για την τήρηση της Αρχής της Ενιαίας Ευθύνης, καθώς επιτρέπει + τη διάρθρωση των λειτουργιών μεταξύ των κλάσεων με μοναδικές περιοχές ενδιαφέροντος. + facade: + title: Πρότυπο πρόσοψης + description: Το μοτίβο σχεδιασμού προσόψεων χρησιμοποιείται συχνά όταν ένα σύστημα + είναι πολύ περίπλοκο ή δύσκολο να κατανοηθεί επειδή το σύστημα έχει μεγάλο + αριθμό αλληλοεξαρτώμενων τάξεων ή ο πηγαίος κώδικας του δεν είναι διαθέσιμος. + Αυτό το μοτίβο κρύβει τις πολυπλοκότητες του μεγαλύτερου συστήματος και παρέχει + μια απλούστερη διεπαφή στον πελάτη. Συνήθως περιλαμβάνει μια ενιαία κλάση + περιτυλίγματος που περιέχει ένα σύνολο μελών που απαιτούνται από τον πελάτη. + Αυτά τα μέλη έχουν πρόσβαση στο σύστημα για λογαριασμό του πελάτη της πρόσοψης + και αποκρύπτουν τις λεπτομέρειες εφαρμογής. + flyweight: + title: Flyweight μοτίβο + description: Στον προγραμματισμό υπολογιστών, το flyweight είναι ένα μοτίβο + σχεδιασμού λογισμικού. Το flyweight είναι ένα αντικείμενο που ελαχιστοποιεί + τη χρήση της μνήμης, μοιράζοντας όσο το δυνατόν περισσότερα δεδομένα με άλλα + παρόμοια αντικείμενα. είναι ένας τρόπος να χρησιμοποιούμε αντικείμενα σε μεγάλους + αριθμούς όταν μια απλή επαναλαμβανόμενη αναπαράσταση θα χρησιμοποιούσε μια + μη αποδεκτή ποσότητα μνήμης. Συχνά ορισμένα τμήματα της κατάστασης του αντικειμένου + μπορούν να μοιραστούν και είναι συνηθισμένη η πρακτική να τα κρατάτε σε εξωτερικές + δομές δεδομένων και να τα μεταφέρετε προσωρινά στα flyweight αντικείμενα όταν + χρησιμοποιούνται. + proxy: + title: Σχέδιο proxy + description: 'Ένα proxy, στην πιο γενική του μορφή, είναι μια τάξη που + λειτουργεί ως διεπαφή σε κάτι άλλο. Ο διακομιστής μεσολάβησης μπορεί να συνδεθεί + με οτιδήποτε: μια σύνδεση δικτύου, ένα μεγάλο αντικείμενο στη μνήμη, ένα αρχείο + ή κάποιος άλλος πόρος που είναι ακριβός ή αδύνατος να αντιγραφεί. Με λίγα + λόγια, ένας διακομιστής μεσολάβησης είναι ένα αντικείμενο περιτυλίγματος ή + παράγοντα που καλείται από τον πελάτη για να αποκτήσει πρόσβαση στο πραγματικό + αντικείμενο που εξυπηρετεί πίσω από τις σκηνές. Η χρήση του διακομιστή μεσολάβησης + μπορεί απλά να προωθεί το πραγματικό αντικείμενο ή μπορεί να παρέχει πρόσθετη + λογική. Στην πρόσθετη λειτουργικότητα του διακομιστή μεσολάβησης μπορεί να + παρέχεται, για παράδειγμα η προσωρινή αποθήκευση όταν οι λειτουργίες στο πραγματικό + αντικείμενο είναι εντατικές ή η επαλήθευση των προϋποθέσεων πριν την επίκληση + των πράξεων στο πραγματικό αντικείμενο. Για τον πελάτη, η χρήση ενός αντικειμένου + μεσολάβησης είναι παρόμοια με τη χρήση του πραγματικού αντικειμένου, επειδή + και οι δύο εφαρμόζουν την ίδια διεπαφή.' + protection_proxy: + title: Proxy προστασίας + description: Proxy προστασίας. Εργάζεστε σε ένα MNC; Αν ναι, ίσως να γνωρίζουμε + καλά τον διακομιστή μεσολάβησης που μας παρέχει πρόσβαση στο Διαδίκτυο περιορίζοντας + την πρόσβαση σε κάποιους τύπους ιστοτόπων όπως το δημόσιο ηλεκτρονικό ταχυδρομείο, + την κοινωνική δικτύωση, την αποθήκευση δεδομένων κλπ. Η διοίκηση πιστεύει + ότι είναι προτιμότερο να εμποδίζουμε κάποιο περιεχόμενο και παρέχει μόνο ιστοσελίδες + που σχετίζονται με την εργασία. Ο διακομιστής μεσολάβησης κάνει αυτήν την + εργασία. Αυτός είναι ένας τύπος μοτίβου σχεδιασμού μεσολάβησης + virtual_proxy: + title: Εικονικό proxy + description: Εικονικό proxy. Αντί για ένα περίπλοκο ή βαρύ αντικείμενο, χρησιμοποιήστε + μια παράσταση σκελετού. Όταν μια υποκείμενη εικόνα είναι τεράστια σε μέγεθος, + απλώς την αντιπροσωπεύει χρησιμοποιώντας ένα εικονικό αντικείμενο proxy και + φορτίο κατά παραγγελία το πραγματικό αντικείμενο. Γνωρίζετε ότι το πραγματικό + αντικείμενο είναι ακριβό από την άποψη της δημιουργίας στιγμιότυπων και έτσι + χωρίς την πραγματική ανάγκη δεν πρόκειται να χρησιμοποιήσουμε το πραγματικό + αντικείμενο. Μέχρι να προκύψει η ανάγκη θα χρησιμοποιήσουμε τον εικονικό πληρεξούσιο. + remote_proxy: + title: Απομακρυσμένο proxy + description: Απομακρυσμένο proxy Στην επικοινωνία κατανεμημένου + αντικειμένου, ένα τοπικό αντικείμενο αντιπροσωπεύει ένα απομακρυσμένο αντικείμενο + (το οποίο ανήκει σε διαφορετικό χώρο διευθύνσεων). Το τοπικό αντικείμενο είναι + ένας διακομιστής μεσολάβησης για το απομακρυσμένο αντικείμενο και η επίκληση + μεθόδων στο τοπικό αντικείμενο οδηγεί σε απομακρυσμένη κλήση μεθόδου στο απομακρυσμένο + αντικείμενο. Σκεφτείτε μια εφαρμογή ΑΤΜ, θα διατηρήσει αντικείμενα διακομιστή + μεσολάβησης για τραπεζικές πληροφορίες που υπάρχουν στον απομακρυσμένο διακομιστή. + not_covered: + title: Μη καλυμένα σχέδια:' + callback: Υποσημειωμένο callback + bridge: Γέφυρα + data_bus: Δίαυλος δεδομένων + role: Αντικείμενο ρόλου + behavioral: + title: Σχέδια συμπεριφοράς + description: Στη μηχανική λογισμικού, τα σχέδια συμπεριφοράς είναι σχεδιαστικά + μοτίβα που προσδιορίζουν κοινά πρότυπα επικοινωνίας μεταξύ αντικειμένων και + υλοποιούν αυτά τα πρότυπα. Με αυτόν τον τρόπο, αυτά τα πρότυπα αυξάνουν την + ευελιξία στην πραγματοποίηση αυτής της επικοινωνίας. + chain_of_responsobility: + title: Πρότυπο αλυσίδας ευθύνης + description: Σε αντικειμενοστραφή σχεδιασμό, το μοτίβο αλυσίδας ευθύνης είναι + ένα μοτίβο σχεδιασμού που αποτελείται από μια πηγή αντικειμένων εντολών και + μια σειρά αντικειμένων επεξεργασίας. Κάθε αντικείμενο επεξεργασίας περιέχει + λογική που καθορίζει τους τύπους αντικειμένων εντολών που μπορεί να χειριστεί. + τα υπόλοιπα μεταφέρονται στο επόμενο αντικείμενο επεξεργασίας στην αλυσίδα. + Υπάρχει επίσης ένας μηχανισμός για την προσθήκη νέων αντικειμένων επεξεργασίας + στο τέλος αυτής της αλυσίδας. + command: + title: Σχέδιο εντολών + description: Το μοτίβο εντολών είναι ένα σχέδιο σχεδιασμού συμπεριφοράς που + χρησιμοποιείται για την αποθήκευση των πληροφοριών που απαιτούνται για την + κλήση μεθόδων σε μια μελλοντική χρονική στιγμή. Η εντολή είναι απλά ένα σύνολο + ενεργειών που τυλίγονται σε ένα αντικείμενο. Με το ρουμπίνι, μπορούμε να χρησιμοποιήσουμε + το Procs για να κάνουμε το ίδιο πράγμα χωρίς να χρειάζεται να δημιουργήσουμε + ένα ξεχωριστό αντικείμενο. Αυτή είναι μια καλή επιλογή όταν η ενέργεια είναι + απλή και δεν απαιτεί την αποθήκευση πληροφοριών κατάστασης, διαφορετικά, μια + τάξη εντολών είναι η καλύτερη επιλογή. + interpreter: + title: Πρότυπο διερμηνέα + description: Στον προγραμματισμό υπολογιστών, το πρότυπο διερμηνείας είναι ένα + πρότυπο σχεδιασμού που καθορίζει τον τρόπο αξιολόγησης των προτάσεων σε μια + γλώσσα. Η βασική ιδέα είναι να υπάρχει μια κλάση για κάθε σύμβολο (τερματικό + ή μη τερματικό) σε μια εξειδικευμένη γλώσσα υπολογιστή. Το δέντρο σύνταξης + μιας πρότασης στη γλώσσα είναι μια παρουσία του σύνθετου σχεδίου και χρησιμοποιείται + για την αξιολόγηση (ερμηνεία) της πρότασης για έναν πελάτη. + iterator: + title: Μοντέλο Iterator + description: Το μοτίβο σχεδιασμού του iterator παρέχει διαδοχική πρόσβαση σε + στοιχεία εντός ενός container χωρίς να εκθέτει τον τρόπο με τον οποίο το container + αντιπροσωπεύει πραγματικά τα στοιχεία. Ο iterator μπορεί να θεωρηθεί ως ένας + κινητός δείκτης που επιτρέπει την πρόσβαση σε στοιχεία που έχουν εγκλωβιστεί + μέσα σε ένα δοχείο. + external_iterator: + title: Εξωτερικό μοτίβο iterator + description: 'Εξωτερικός iterator: Η λογική επανάληψης περιέχεται σε ξεχωριστή + κλάση. Η κλάση επανάληψης μπορεί να γενικευθεί για να χειριστεί πολλούς τύπους + αντικειμένων εφόσον επιτρέπουν την κατάταξη. Απαιτεί την πρόσθετη κλάση + να κάνει την πραγματική αλλαγή, αλλά επιτρέπουν μεγαλύτερη ευελιξία επειδή + μπορείτε να ελέγξετε την επανάληψη, ποια στοιχεία επαναλαμβάνονται και με + ποια σειρά.' + internal_iterator: + title: Εσωτερικό πρότυπο iterator + description: 'Εσωτερικός iterator: όλη η λογική της επαναληψης εμφανίζεται μέσα + στο συγκεντρωτικό αντικείμενο. Χρησιμοποιήστε ένα μπλοκ κώδικα για να περάσετε + τη λογική σας στο σύνολο, το οποίο στη συνέχεια καλεί το μπλοκ για κάθε στοιχείο + του.' + mediator: + title: Πρότυπο διαμεσολαβητή + description: Συνήθως ένα πρόγραμμα αποτελείται από μεγάλο αριθμό τάξεων. Έτσι, + η λογική και ο υπολογισμός κατανέμονται μεταξύ αυτών των τάξεων. Ωστόσο, καθώς + αναπτύσσονται περισσότερες κατηγορίες σε ένα πρόγραμμα, ειδικά κατά τη διάρκεια + συντήρησης ή / και refactoring, το πρόβλημα της επικοινωνίας μεταξύ αυτών + των τάξεων μπορεί να γίνει πιο περίπλοκο. Αυτό καθιστά το πρόγραμμα πιο δύσκολο + να διαβαστεί και να διατηρηθεί. Επιπλέον, μπορεί να γίνει δύσκολη η αλλαγή + του προγράμματος, καθώς οποιαδήποτε αλλαγή μπορεί να επηρεάσει τον κώδικα + σε πολλές άλλες κατηγορίες. Με το πρότυπο διαμεσολαβητή, η επικοινωνία μεταξύ + αντικειμένων ενθυλακώνεται με ένα αντικείμενο μεσολαβητή. Τα αντικείμενα δεν + επικοινωνούν πλέον άμεσα μεταξύ τους, αλλά επικοινωνούν μέσω του διαμεσολαβητή. + Αυτό μειώνει τις εξαρτήσεις μεταξύ των αντικειμένων επικοινωνίας, μειώνοντας + έτσι τη ζεύξη. + Momento: + title: Πρότυπο Momento + description: 'Το πρότυπο Momento υλοποιείται με τρία αντικείμενα: τον δημιουργό, + έναν επιστάτη και ένα momento. Ο δημιουργός είναι κάποιο αντικείμενο που έχει + εσωτερική κατάσταση. Ο επιστάτης πρόκειται να κάνει κάτι στον συντάκτη, αλλά + θέλει να είναι σε θέση να αναιρέσει την αλλαγή. Ο θεματοφύλακας πρώτα ρωτά + τον δημιουργό για ένα αντικείμενο momento. Στη συνέχεια, κάνει οποιαδήποτε + ενέργεια (ή ακολουθία πράξεων) που θα κάνει. Για να επιστρέψετε στην κατάσταση + πριν από τις λειτουργίες, επιστρέφει το αντικείμενο momento στον δημιουργό. + Το ίδιο το momento αντικείμενο είναι ένα αδιαφανές αντικείμενο (το οποίο ο + συντηρητής δεν μπορεί, ή δεν πρέπει να αλλάξει). Όταν χρησιμοποιείτε αυτό + το μοτίβο, πρέπει να είστε προσεκτικοί εάν ο δημιουργός μπορεί να αλλάξει + άλλα αντικείμενα ή πόρους - το μοτίβο momento λειτουργεί σε ένα μόνο αντικείμενο.' + observer: + title: Πρότυπο παρατηρητή + description: Το πρότυπο παρατηρητή είναι ένα μοτίβο σχεδιασμού λογισμικού στο + οποίο ένα αντικείμενο, που ονομάζεται θέμα, διατηρεί μια λίστα των εξαρτώμενων + από αυτόν, που ονομάζονται παρατηρητές, και τους ειδοποιεί αυτόματα για οποιεσδήποτε + κρατικές αλλαγές, συνήθως καλώντας μία από τις μεθόδους τους. Χρησιμοποιείται + κυρίως για την εφαρμογή συστημάτων διανομής συμβάντων. Το μοτίβο Observer + είναι επίσης ένα βασικό μέρος του αρχιτεκτονικού μοντέλου οικείου μοντέλου-ελεγκτή + (MVC). Το πρότυπο παρατηρητή εφαρμόζεται σε πολλές βιβλιοθήκες και συστήματα + προγραμματισμού, συμπεριλαμβανομένων σχεδόν όλων των GUI εργαλείων. + state: + title: Πρότυπο κατάστασης + description: Το πρότυπο κατάστασης είναι ένα σχέδιο σχεδιαστικής συμπεριφοράς + λογισμικού που υλοποιεί μια μηχανή κατάστασης με έναν αντικειμενοστραφή τρόπο. + Με το πρότυπο κατάστασης, υλοποιείται μια μηχανή κατάστασης, εφαρμόζοντας + κάθε μεμονωμένη κατάσταση ως παράγωγη κλάση της διεπαφής κατάστασης του κράτους + και εφαρμόζοντας μεταβάσεις κατάστασης, επικαλούμενοι μεθόδους που ορίζονται + από την υπερκλάση του προτύπου. + strategy: + title: Σχέδιο στρατηγικής + description: Η στρατηγική επιτρέπει στον αλγόριθμο να διαφέρει ανεξάρτητα από + τους πελάτες που το χρησιμοποιούν. Η στρατηγική είναι ένα από τα μοντέλα που + περιλαμβάνονται στα σχεδιαγράμματα επιρροής του βιβλίου από τους Gamma et + al. που διαφήμισε την έννοια της χρήσης μοτίβων για την περιγραφή του σχεδιασμού + του λογισμικού. Για παράδειγμα, μια κλάση που εκτελεί επικύρωση στα εισερχόμενα + δεδομένα μπορεί να χρησιμοποιήσει ένα πρότυπο στρατηγικής για να επιλέξει + έναν αλγόριθμο επικύρωσης βάσει του τύπου δεδομένων, της πηγής των δεδομένων, + της επιλογής του χρήστη ή άλλων παραγόντων διακριτικής μεταχείρισης. Αυτοί + οι παράγοντες δεν είναι γνωστοί για κάθε περίπτωση μέχρι την ώρα εκτέλεσης + και μπορεί να απαιτούν ριζικά διαφορετική επικύρωση. Οι στρατηγικές επικύρωσης, + ενσωματωμένες χωριστά από το αντικείμενο επικύρωσης, μπορούν να χρησιμοποιηθούν + από άλλα επικυρωτικά αντικείμενα σε διαφορετικές περιοχές του συστήματος (ή + ακόμη και σε διαφορετικά συστήματα) χωρίς επικάλυψη κώδικα. + template: + title: Πρότυπο μεθόδου προτύπου + description: Στον αντικειμενοστραφή προγραμματισμό, δημιουργείται πρώτα μία + κλάση που παρέχει τα βασικά βήματα ενός σχεδιασμού αλγορίθμου. Αυτά τα βήματα + υλοποιούνται χρησιμοποιώντας αφηρημένες μεθόδους. Αργότερα, οι υποκατηγορίες + αλλάζουν τις αφηρημένες μεθόδους για να εφαρμόσουν πραγματικές ενέργειες. + Έτσι ο γενικός αλγόριθμος αποθηκεύεται σε ένα σημείο αλλά τα συγκεκριμένα + βήματα μπορούν να αλλάξουν από τις υποκατηγορίες. + visitor: + title: Πρότυπο επισκεπτών + description: Στον αντικειμενοστραφή προγραμματισμό και στην τεχνολογία λογισμικού, + το σχέδιο σχεδιασμού του επισκέπτη είναι ένας τρόπος διαχωρισμού ενός αλγορίθμου + από μια δομή αντικειμένου στην οποία λειτουργεί. Ένα πρακτικό αποτέλεσμα αυτού + του διαχωρισμού είναι η δυνατότητα προσθήκης νέων λειτουργιών σε υπάρχουσες + δομές αντικειμένων χωρίς τροποποίηση αυτών των δομών. Είναι ένας τρόπος να + ακολουθήσουμε την ανοικτή / κλειστή αρχή. Στην ουσία, ο επισκέπτης επιτρέπει + σε κάποιον να προσθέσει νέες εικονικές λειτουργίες σε μια οικογένεια τάξεων + χωρίς να τροποποιεί τα ίδια τα μαθήματα. Αντίθετα, δημιουργείται μια κατηγορία + επισκεπτών που εφαρμόζει όλες τις κατάλληλες εξειδικεύσεις της εικονικής λειτουργίας. + Ο επισκέπτης παίρνει την αναφορά του στιγμιότυπου ως είσοδο και υλοποιεί το + στόχο με διπλή αποστολή. + not_covered: + title: Μη καλυμένα σχέδια:' + hierarchical: Ιεραρχικός επισκέπτης + credits: 'Κωδικός και άρθρα λήφθηκαν από πηγές:' + functional_programming: + title: Λειτουργικός προγραμματισμός + description: 'Η χρήση μιας γλώσσας σε λειτουργικό στυλ υποδηλώνει ότι έχετε πρόσβαση + σε μερικά βασικά χαρακτηριστικά που αναφέρονται παρακάτω:' + axioms: + immutable: 'Αμετάβλητες τιμές: αφού οριστεί μια μεταβλητή, δεν μπορεί + να αλλάξει. Στον Ruby, αυτό σημαίνει ότι πρέπει να αντιμετωπίζετε αποτελεσματικά + μεταβλητές όπως οι σταθερές.' + side_effects: 'Δεν υπάρχουν παρενέργειες: όταν περάσει μια δεδομένη τιμή, μια + λειτουργία πρέπει πάντα να επιστρέφει το ίδιο αποτέλεσμα. Αυτό συμβαδίζει με + την ύπαρξη αμετάβλητων αξιών. μια συνάρτηση δεν μπορεί ποτέ να πάρει μια τιμή + και να την αλλάξει, καθώς αυτό θα προκαλούσε μια παρενέργεια που είναι εφαπτόμενη + στην επιστροφή ενός αποτελέσματος.' + pure_functions: 'Λειτουργίες υψηλότερης τάξης: αυτές είναι λειτουργίες που επιτρέπουν + λειτουργίες ως επιχειρήματα ή χρησιμοποιούν λειτουργίες ως αξία επιστροφής. + Αυτό είναι, αναμφισβήτητα, ένα από τα πιο κρίσιμα χαρακτηριστικά κάθε λειτουργικής + γλώσσας.' + applying: 'Currying: ενεργοποιείται από τις λειτουργίες υψηλότερης τάξης, το currying + μετατρέπει μια συνάρτηση που παίρνει πολλαπλά επιχειρήματα σε μια συνάρτηση + που παίρνει ένα όρισμα. Αυτό συμβαδίζει με την εφαρμογή μερικής λειτουργίας, + η οποία μετασχηματίζει μια συνάρτηση πολλαπλών παραδειγμάτων σε μια συνάρτηση + που παίρνει λιγότερα επιχειρήματα, τότε έκανε αρχικά.' + recursion: 'Επανασύνδεση: looping καλώντας μια λειτουργία από μέσα της. Όταν δεν + έχετε πρόσβαση σε μεταβλητά δεδομένα, η υποτροπή χρησιμοποιείται για τη δημιουργία + και την αλυσίδα δεδομένων. Αυτό συμβαίνει επειδή το looping δεν είναι μια λειτουργική + ιδέα, καθώς απαιτεί μεταβλητές που πρέπει να περάσουν γύρω για να αποθηκεύσουν + την κατάσταση του βρόχου σε μια δεδομένη στιγμή.' + lazy: 'Lazy-αξιολόγηση ή καθυστερημένη αξιολόγηση: καθυστερεί την επεξεργασία + των τιμών μέχρι τη στιγμή που είναι πραγματικά απαραίτητη. Εάν, για παράδειγμα, + έχετε κάποιο κωδικό που δημιούργησε τον κατάλογο των αριθμών Fibonacci με ενεργοποιημένη + την τεχνητή αξιολόγηση, αυτό δεν θα επεξεργάζεται και θα υπολογίζεται μέχρις + ότου μια από τις τιμές στο αποτέλεσμα απαιτηθεί από μια άλλη λειτουργία, όπως + το puts.' + pure_functions: + title: Αμιγές λειτουργίες + description: Μπορείτε να δείτε ότι αυτή η λειτουργία υπολογίζει το αποτέλεσμα + χρησιμοποιώντας μόνο τα επιχειρήματά της. + closures: + title: Τερματισμός + description: Η Lambda επιβάλλει επίσης ένα τερματισμό και έτσι είναι σε θέση να + κρατήσει το πλαίσιο τους σε αντικείμενα. + applying: + title: Μερική εφαρμογή και μεταφορά + description: Ας καταλάβουμε πρώτα ποιες είναι αυτές οι δύο διαφορετικές εφαρμογές + λειτουργιών. Η εφαρμογή μερικής λειτουργίας ονομάζει μια συνάρτηση με κάποιο + αριθμό επιχειρημάτων, προκειμένου να πάρει μια λειτουργία πίσω που θα πάρει + ότι πολλά λιγότερα επιχειρήματα. Η κάθαρση παίρνει μια συνάρτηση που παίρνει + n επιχειρήματα, και χωρίζοντάς την σε n λειτουργίες που παίρνουν ένα επιχείρημα. + proc: Προκειμένου να σας δώσουμε μια σαφέστερη ιδέα για το τι θα κάνει μια από + τις δύο αυτές πράξεις, ας πάρουμε ένα παράδειγμα Proc. + partial: Η μερική εφαρμογή αυτής της συνάρτησης θα επέστρεφε, εάν περάσαμε στα + δύο πρώτα επιχειρήματα, τα ακόλουθα ενσωματωμένα Procs. + curry: .curry επιστρέφει ένα κρυφό + proc. Εάν δίνεται το προαιρετικό όρισμα arity, καθορίζει τον αριθμό των επιχειρημάτων. + Ένας κακοποιημένος proc παίρνει κάποια επιχειρήματα. Αν παρέχεται ένας επαρκής + αριθμός επιχειρημάτων, διαβιβάζει τα παρεχόμενα επιχειρήματα στον αρχικό proc + και επιστρέφει το αποτέλεσμα. Διαφορετικά, επιστρέφει ένα άλλο κακόβουλο proc + που παίρνει τα υπόλοιπα επιχειρήματα. + gotchas: + title: "Gotchas" + description1: Οι περισσότεροι αρχάριοι Ruby on Rails γίνονται ενθουσιασμένοι από + το πλαίσιο και ξεκινούν να επεξεργάζονται εφαρμογές χωρίς να γνωρίζουν τη γλώσσα. + Και αυτή είναι η μαγεία του RoR. + description2: Σε κάποιο σημείο τα πράγματα αρχίζουν να γίνονται σοβαρά. Μερικοί + χρειάζονται χρόνο και προσπάθεια για να εξερευνήσουν τα μυστικά του Ruby + on Rails, ενώ άλλοι γυαλίζουν και γίνονται ανώτεροι προγραμματιστές με σχεδόν + μηδενική γνώση της γλώσσας. + description3: Εν πάση περιπτώσει, αργά ή γρήγορα, αρχάριοι ή έμπειροι προγραμματιστές, + όλοι τρέχουμε στο αποκαλούμενο Ruby Gotchas - αυτές τις μικρές γλωσσικές λεπτές + αποχρώσεις που κρύβονται από το site μας για ώρες σκληρών σφαλμάτων. + description4: Εδώ είναι ένας κατάλογος δημοφιλών Ruby gotchas και των περιγραφών + που οι προγραμματιστές πρέπει να γνωρίζουν. Για κάθε περίπτωση, υπάρχει ένα παράδειγμα + σύγχυσης και / ή σφάλματος-επιρρεπείς κώδικα. + description5: Έρχονται μαζί με καλές πρακτικές, που θα σας εμποδίσουν να κάνετε + απλά (αλλά δύσκολο να βρείτε) λάθη και να απλοποιήσετε τη ζωή σας (και τη συντήρηση + του κώδικα σας). + surprising: + title: Η Ruby μπορεί να κρύβει εκπλήξεις + description: Αν και κατασκευασμένη για να μεγιστοποιήσει την ευτυχία του + προγραμματιστή, με την αρχή της ελάχιστης έκπληξης, η Ruby + εξακολουθεί να έχει gotchas. Αυτή η παρουσίαση θα προχωρήσει από τα newbie trivial + gotchas, σε πιο εξελιγμένα και πολύπλοκα. + quotes: + title: Χωρίς να είμαι σίγουρος αλλά... + description: String παρεμβολής (συμπεριλαμβανομένων των ειδικών χαρακτήρων όπως + \n αποτυγχάνει με 'ενιαία' + εισαγωγικά - απαιτεί "διπλά" εισαγωγικά. Ακριβώς + όπως στις περισσότερες γλώσσες με παρεμβολή συμβολοσειράς. Για να αποφύγετε + τη χρήση διπλώνει όποτε είναι πρακτικό. + twue: + title: Είναι twue! Είναι twue! + description: 'Μόνο δύο πράγματα είναι ψεύτικα: false + και nil . Όλα τα υπόλοιπα είναι τραγικά, + ακόμη και 0 (ψευδής στο C), "" + (ψευδής στο JS), [] κλπ. Εκπαιδεύει ανθρώπους + από το C, JS, κλπ. Όπου μερικές από αυτές είναι ψευδείς.' + symbols_and_strings: + title: Κρέμασμα συμβολικά. + description: 'Symbol != String. Ακόμη και αν + το ίδιο όταν εκτυπώνεται. Θυμηθείτε ποια να χρησιμοποιήσετε για args. Στην ιδανική + περίπτωση, πάρτε είτε και χρησιμοποιήστε αυτό που μια μέθοδος αναμένει: "Να + είστε φιλελεύθερος σε αυτό που αποδέχεστε και συντηρητικό σε αυτό που στέλνετε". + Νόμος του Postel.' + string_or_nothing: + title: Συμβολοειρά ... ή τίποτα! + constants: + title: Σταθερές δεν υφίστανται + description: Η αρχική κεφαλαία σημαίνει σταθερή, στο Ruby. Προσπαθήστε να αλλάξετε + μια σταθερά. Ooooh έχετε ένα ΠΡΟΕΙΔΟΠΟΙΗΣΗ! BFD. Ακόμη και το πάγωμα δεν λειτουργεί + για τα Fixnums. Λειτουργεί για συστοιχίες (είδος) και για τα περισσότερα άλλα + αντικείμενα ... δήλωσε προμηνευτικά + equals: + title: Μερικοί είναι πιο ίσοι από τους άλλους + description: == είναι η συνηθισμένη ίδια τιμή, + .eql? είναι η τιμή και η κλάση (1 είναι Fixnum, + 1.0 είναι Float), .equal? είναι το ίδιο αντικείμενο. + Είναι στην πραγματικότητα πολύ πιο χαλαρή. + operations: + title: "> ===! = ==!" + description: === είναι "ισότητα των περιπτώσεων", + όπως και στις δηλώσεις περίπτωσης. Ένα καλύτερο όνομα μπορεί να είναι. .describes? , ή υπερφόρτωση .includes? + . Και πάλι, είναι στην πραγματικότητα πολύ πιο χαλαρή? ανατρέξτε στα έγγραφα + του αντικειμένου κλάσης. Παίρνει άτομα από γλώσσες όπου === + είναι ταυτότητα αντικειμένου ή ίδια τιμή και κλάση. + priority: + title: and != &&, or != || + description: '&& έχει υψηλότερη προτεραιότητα + από το = , έτσι x + = true && false σημαίνει x = (true + && false) και έχει χαμηλότερη προτεραιότητα, έτσι x + = true and false σημαίνει (x = true) and false + . Οδηγός στυλ Ruby: Χρησιμοποιήστε &&, || + για εκφράσεις boolean, and, or για ροή ελέγχου.' + sensitive: + title: Μην είσαι τόσο ευαίσθητος! + description: Whitespace αναισθησία; ΌΧΙ ΠΑΝΤΑ! Ο προγραμματιστής σκέφτεται + ότι είναι μια έκφραση, όπως ένα arg, αλλά (1, 2) + δεν είναι μια έγκυρη έκφραση Ruby! (Όλα λειτουργούν καλά με 1 επιχείρημα). + usage: 'Με πολλαπλά args:
- Χωρίς παρενέργειες, κανένα πρόβλημα.
- + Γονείς χωρίς χώρο, εντάξει.
- Παρέντες και χώρος, ΟΧΙ!' + methods: 'method / num είναι ένα unended regex + ή string! Η Ruby νομίζει ότι δίνετε ένα επιχείρημα στη μέθοδο. Γενική αρχή: + χρησιμοποιήστε ισορροπημένο κενό. και οι δύο πλευρές ή και οι δύο.' + arguments: 'one -2 κάνει την Ruby να πιστεύει + ότι δίνετε ένα επιχείρημα -2 στη μέθοδο ένα. + Ίδια για +2 ή ακόμα και * + 2 . Και πάλι: χρησιμοποιήστε τα ισορροπημένα κενά, και τις δύο πλευρές + ή και τα δύο.' + stubby: \"Stabby\" lambdas (1.9+) Παρενθέσεις προαιρετικά Διάστημα πριν + από τα args χωρίς γονείς, Εντάξει. Χώρος μετά από γονείς, εντάξει. Και πάλι, + χώρος πριν από τους γονείς, ΟΧΙ! UPDATE: Σταθερό σε 2.0!" + onto: + title: "Ang onto yer @!" + description: 'Η απόλυτη τιμή γίνεται μια προσωρινή τοπική μεταβλητή! Λύση: θυμηθείτε + το @! (Ή "αυτο." Ή χρησιμοποιήστε + attr_writer, attr_accessor .) Παίρνει ανθρώπους + από Java / C ++, όχι τόσο Python (που χρειάζεται επίσης "εαυτό."). + "Συνεχίζετε να χρησιμοποιείτε αυτήν τη μεταβλητή. Δεν νομίζω ότι σημαίνει + αυτό που νομίζετε ότι σημαίνει". Δεν είναι Inigo Montoya.' + variables: + title: Προσοχή, είναι @@! + description: Κοίτα τι γεμίζει το κενό; Δεν @@value του γονέα πριν το ελέγξουμε, ούτε το παιδί καθόλου! Ή μήπως; + @@variables μοιράζονται με υποκατηγορίες + - όχι μόνο ότι υπάρχουν, αλλά και οι ίδιες οι μεταβλητές! Η διαπίστωση της @@values του παιδιού άλλαξε την τιμή + του γονέα και συμπεριλαμ- βανόταν ότι το παιδί άλλαξε το Child's.ut, + είναι @@! + initialize: + title: Με προετοιμασία ή χωρίς + description: Η προετοιμασία του γονέα εκτελείται αυτόματα μόνο εάν δεν έχει κανένα + παιδί. Αλλιώς, οι γονείς πρέπει να κληθούν να τρέξουν. + superman: + title: Superman εναντίον του αόρατου ανθρώπου + description: 'super με λίστα χωρίς arg στέλνει + τι καλούντα πήρε super με ρητά args στέλνει + αυτά τα args για να στείλει NO args, χρήση κενών παρενθέσεων: super() .' + regexp: + title: Πότε θα τελειώσει; (Ή ξεκινήστε;) + description: 'Στα πρότυπα regexps: ^ είναι η αρχή + και το $ είναι το τέλος ολόκληρης της συμβολοσειράς. + Οι επαναλήψεις της Ruby σε προεπιλεγμένη γραμμή, έτσι: ^ + είναι αρχή και $ είναι τέλος οποιασδήποτε γραμμής! + \ A είναι αρχή και \ + Z είναι το τέλος ολόκληρης της συμβολοσειράς. (Ή \ z για να συμπεριλάβετε + οποιαδήποτε νέα γραμμή ... η οποία είναι άλλη μια!' + any: + title: Λαμβάνωντας .any; + description: '.any? δεν σημαίνει "κανένα + στοιχείο;"! Με το μπλοκ: "κάνουμε οποιοδήποτε κάνει το μπλοκ αληθινό;". + Χωρίς: "είναι οποιαδήποτε τεχνική;" Έχει σιωπηρή δέσμευση: { |element| element } .' + undef: + title: "(Un) Def Leppard" + description: Οι μεταβλητές που δηλώνονται σε μπλοκ που μεταβιβάζονται στους iterators + (π.χ. φορές ή καθένα) είναι ασαφείς στην κορυφή κάθε επανάληψης! Οι επαναληπτικές + κλήσεις επαναλαμβάνουν το μπλοκ επανειλημμένα, έτσι ώστε οι βάρκες να βρεθούν + ξανά εκτός πεδίου μετά από κάθε κλήση. Ενσωματωμένα κατασκευάσματα βρόχου (π.χ., + ενώ ή για) είναι εντάξει. (Ή δηλώστε vars πριν από το μπλοκ.) + freeze: + title: Πάγωμα (Ar) ray + description: Η κατάψυξη ενός πίνακα (ή ενός κατακερματισμού) παγώνει, όχι τα στοιχεία + που περιέχει. Οι χορδές μπορούν να τροποποιηθούν στη θέση τους. Με αυτόν τον + τρόπο, μπορείτε να τροποποιήσετε μια συγκεκριμένη υποδοχή σε μια παγωμένη σειρά + συστοιχιών. + one_is_one: + title: 1 είναι 1 ... και όλο και πάντα έτσι θα ΄ναι! + description: 'Η αλλαγή του Fixnum σε νέα τιμή σημαίνει ένα νέο αντικείμενο. Δεν + μπορούν να τροποποιηθούν στη θέση τους! Επομένως, δεν μπορείτε να τροποποιήσετε + μια παγωμένη συστοιχία Fixnums. (Τα Fixnums και τα Ακαταστήματα δεν έχουν μεθόδους + bang για να δοκιμάσουν με demo). BTW: το object_id του Fixnum + είναι value * 2 + 1' + bang: + title: "(to! || ! to!) == ?" + description: Το bang χαρακτηρίζει τη μέθοδο ως επικίνδυνη. Γιατί; Συχνά, μπορεί + να τροποποιήσει τον παραλήπτη, έναντι της μη τροποποιητικής έκδοσης χωρίς έκρηξη. + ΜΗΝ ΤΑ ΕΜΠΙΣΤΕΎΣΤΕ ΝΑ ΕΠΙΣΤΡΕΨΟΥΝ ΤΗΝ ΙΔΙΑ ΑΞΙΑ, ΩΣ ΕΚΔΗΛΩΣΗ ΜΗ ΜΠΑΝΓΚ! Πολλοί + επιστρέφουν χωρίς να χρειάζεται αλλαγή! + array: + title: Μια σειρά Νέων Γκότσας + description: Η προεπιλεγμένη τιμή που δίνεται ως αντικείμενο είναι το ίδιο αντικείμενο + για κάθε υποδοχή! Η μεταλλαγή μεταλλάζει την προεπιλογή για όλους. Η αρχική + τιμή που δίνεται ως μπλοκ υπολογίζεται ξεχωριστά για κάθε υποδοχή. Χρησιμοποιήστε + αυτό το για να δημιουργήσετε νέες λέξεις για κάθε ένα. + hash: + title: Κάνοντας ένα Hash από αυτό + description: 'Κυρίως το ίδιο πρόβλημα (και λύση) με τους πίνακες. ΠΕΡΙΣΣΟΤΕΡΑ + GOTCHAS: δημιουργεί ένα νέο αντικείμενο σε κάθε πρόσβαση στην κενή υποδοχή! + Μπορεί να δημιουργήσει υπερβολικό αριθμό νέων αντικειμένων. ερείπια ελέγχου + "πραγματικών" περιεχομένων ή μέτρησης (μηδενικός έλεγχος, μέγεθος, + κλπ.).' + rescue: + title: Με διάσωση, ρίξτε ένα σκοινί, Θα προσπαθήσω να το πιάσω! + description: Στη Ruby, το throw and catch δεν είναι για εξαιρέσεις! Πρόκειται + για προηγμένο έλεγχο ροής, για έξοδο από βαθιά φωλιά. Η Ruby χρησιμοποιεί αύξηση + και διάσωση για εξαιρέσεις. + to_str: + title: to_s VS to_str + description: 'to_s ορίζεται σε κάθε αντικείμενο + και πάντα θα επιστρέφει κάτι. to_str ορίζεται + μόνο σε αντικείμενα που έχουν συμβολοσειρά. Για παράδειγμα, το Symbol + έχει to_str αλλά το Array + δεν το κάνει. Έτσι, μπορείτε να χρησιμοποιήσετε το obj.respond_to?(:to_str) αντί για κάτι σαν obj.is_a?(String) + αν θέλετε να επωφεληθείτε από την πληκτρολόγηση πάπιας χωρίς να ανησυχείτε για + το αν η τάξη με την οποία εργάζεστε είναι μια υποκατηγορία του String + δεν.' + missing: + title: Πρέπει να συντονιστείτε με το method_missing και answer_to_missing; + description: 'Όταν κανετε override method_missing, + θυμηθείτε να παρακάμψετε respond_to_missing; + επισης. Όταν χρησιμοποιείτε τη μέθοδο method_missing για να έχετε ένα αντικείμενο + να επιστρέψει κάτι σε μια κλήση μεθόδου, βεβαιωθείτε πάντοτε ότι επαναπροσδιορίσατε + το answer_to_missing ;. Αν δεν το κάνετε, τίποτα δεν θα σπάσει με μια πρώτη + ματιά, αλλά τελικά θα αντιμετωπίσετε προβλήματα. Εξετάστε αυτήν την κατηγορία:' + respond_to: 'Πολλοί κώδικες (gems ή δικοί σας) βασίζονται στο answer_to; + (για έναν καλό λόγο). Χρειάζεται να διορθώσετε την απάντηση_εξέτασης; επισης:' + exception: + title: διάσωση από StandardError, όχι Εξαίρεση + description: 'Μην διασώζετε την εξαίρεση, τη διάσωση του StandardError Πριν από + τη ρητή διάσωση της Εξαίρεσης θα διασώσει ακόμη και τα μη ανακτήσιμα σφάλματα + όπως SyntaxError, LoadError και Interrupt. Εάν παραλείψετε τον τύπο εξαίρεσης, + τότε η Ruby θα πιάσει μόνο το StandardError, το οποίο είναι πιθανόν αυτό που + θέλετε:' + private: + title: Τα ιδιωτικά δεδομένα δεν είναι πραγματικά, και δεν είναι καθόλου w / class + μεθόδους + description: Υπάρχει ένας τρόπος για να κάνετε τις μεθόδους τάξης ιδιωτικές + στη Ruby, απλά πρέπει να περάσετε από κάποιες δυσκολίες. Eεε, εννοώ τη χρήση της + class << self σύνταξης. Αυτή η ιδιαιτερότητα + ωθεί ένα δείγμα singleton στην τάξη δημιουργώντας αποτελεσματικά μεθόδους τάξης. + braces: + title: Braces vs. do-end + description: Η γενική σύμβαση είναι να χρησιμοποιείτε do .. end για μπλοκ πολλαπλών γραμμών και σγουράκια για μπλοκ μονής γραμμής, + αλλά υπάρχει επίσης μια διαφορά μεταξύ των δύο που μπορούν να απεικονιστούν. + Αυτό σημαίνει ότι το {} έχει υψηλότερο προβάδισμα + από ό, do .. end, οπότε κρατήστε αυτό κατά + νου όταν αποφασίζετε τι θέλετε να χρησιμοποιήσετε. + module: + title: Κλάση Foo :: Bar, που ορίζεται έξω από το Module Foo, δεν θα δει μέσα στο + Foo' + description: Μπορείτε να σκεφτείτε κάθε εμφάνιση του module + Something , class Something ή def + something ως "πύλη" σε ένα νέο πεδίο. Όταν η Ruby ψάχνει για τον + ορισμό ενός ονόματος που έχει παραπεμφθεί, εξετάζει πρώτα το τρέχον πεδίο (τη + μέθοδο, την κλάση ή την ενότητα) και αν δεν βρεθεί πού θα πάει πίσω από το καθένα + που περιέχει "πύλη" και αναζήτηση το πεδίο εφαρμογής. + credits: 'Κωδικός και άρθρα λήφθηκαν από πόρους:' + meta_programming: + title: Μεταπρογραμματισμός + description: Ο μεταπρογραμματισμός είναι η σύνταξη προγραμμάτων ηλεκτρονικών υπολογιστών + που γράφουν ή χειρίζονται άλλα προγράμματα (ή τους ίδιους) ως δεδομένα τους ή + που κάνουν μέρος του έργου κατά τη μεταγλώττιση που διαφορετικά θα γινόταν κατά + το χρόνο εκτέλεσης. Σε πολλές περιπτώσεις, αυτό επιτρέπει στους προγραμματιστές + να κάνουν περισσότερα κατά το ίδιο χρονικό διάστημα που θα χρειαζόντουσαν για + να γράψουν ολόκληρο τον κώδικα με το χέρι, ή δίνει μεγαλύτερη ευελιξία στα προγράμματα + για να χειριστούν αποτελεσματικά νέες καταστάσεις χωρίς αναδιπλασιασμό. Το μεταγραμματισμό + εγγράφει κώδικα που γράφει τον κώδικα κατά τη διάρκεια του χρόνου εκτέλεσης για + να διευκολύνει τη ζωή σας. + dynamic_dispatch: + title: Δυναμική αποστολή + description: Σας επιτρέπει να στέλνετε μηνύματα subject.public_send + (message, * arguments) + dynamic_method: + title: Δυναμική μέθοδος + description: 'Επιτρέπει τη δυναμική δημιουργία μεθόδων define_method: + method_name {block που γίνεται body method}' + ghost_methods: + title: Μέθοδοι φάσματος + description: Πιάνοντας "μεθόδους φάσματος" και προωθώντας τους σε μια + άλλη μέθοδο Ενώ πιθανώς προσθέτοντας λογική γύρω από την κλήση. Χρησιμοποιεί + τη μέθοδο αποδοχής + dynamic_proxies: + title: Δυναμικά proxies + description: 'Για παράδειγμα, μπορείτε να δώσετε φανταστικές μεθόδους χρησιμοποιώντας + τη μέθοδο method_missing για να αναλύσετε το + εισερχόμενο μήνυμα (π.χ. get_name, get_age + ) και να μεταβιβάσετε σε άλλη μέθοδο όπως get (:data_type) + όπου :data_type είναι :name ή :age .' + more: Αν (μετά την ανάλυση) εντοπίσετε ένα ζήτημα απόδοσης με τη χρήση της μεθόδου + method_missing μπορείτε να χρησιμοποιήσετε την + τεχνική "Δυναμική μέθοδος" για να δημιουργήσετε μια πραγματική μέθοδο + μετά την παραλαβή του μηνύματος από την `method_missing` την πρώτη φορά. + solid_principles: + good: Καλός! + bad: Κακό! + title: Σταθερές αρχές + description: Στον προγραμματισμό υπολογιστών, το SOLID (ατομική ευθύνη, ανοικτή + κλειστή, υποκατάστατο Liskov, διαχωρισμός διεπαφών και αντιστροφή εξάρτησης) είναι + ένα μνημονικό ακρωνύμιο που εισήγαγε ο Michael Feathers για τις "Πρώτες Πέντε + Αρχές" που ο Robert C. Martin στις αρχές της δεκαετίας 2000 για πέντε βασικές + αρχές αντικειμενοστρεφούς προγραμματισμού και σχεδίασης. Η πρόθεση είναι ότι αυτές + οι αρχές, όταν εφαρμοστούν μαζί, θα κάνουν πιο πιθανό ότι ένας προγραμματιστής + θα δημιουργήσει ένα σύστημα που είναι εύκολο να διατηρηθεί και να επεκταθεί με + την πάροδο του χρόνου. Οι αρχές του SOLID είναι κατευθυντήριες οδηγίες που μπορούν + να εφαρμοστούν κατά την επεξεργασία λογισμικού για την κατάργηση των μυρωδιών + του κώδικα προκαλώντας τον προγραμματιστή να επαναπροσδιορίσει τον πηγαίο κώδικα + του λογισμικού έως ότου είναι τόσο ευανάγνωστο και εκτάσιμο. Είναι μέρος μιας + συνολικής στρατηγικής ευέλικτης και προσαρμοστικής ανάπτυξης λογισμικού. + single: + title: Αρχή της ενιαίας ευθύνης + description: Η Αρχή της Ενιαίας Ευθύνης είναι η πιο αφηρημένη από τη δέσμη. Βοηθάει + στην διατήρηση των τάξεων και των μεθόδων μικρών και συντηρητικών. Εκτός από + τη διατήρηση μικρών και εστιασμένων κλάσεων, διευκολύνεται επίσης η κατανόησή + τους. Ένα παράδειγμα αυτού του γεγονότος μπορεί να είναι η προσθήκη υποστήριξης + για την αποστολή μιας περίληψης ηλεκτρονικού ταχυδρομείου για τις προμήθειες + ενός συγκεκριμένου ατόμου μετά από την επισήμανση μιας συναλλαγής που έχει υποστεί + επεξεργασία. Το γεγονός ότι μπορούμε να εντοπίσουμε πολλούς λόγους αλλαγής σημάτων + αποτελεί παραβίαση της αρχής της ενιαίας ευθύνης. + open_close: + title: Ανοικτή / κλειστή αρχή + description: Η Αρχή Ανοικτού / Κλειστού αναφέρει ότι οι κλάσεις ή οι μέθοδοι θα + πρέπει να είναι ανοικτές για επέκταση, αλλά κλειστές για τροποποίηση. Αυτό μας + λέει ότι θα πρέπει να προσπαθήσουμε για αρθρωτά σχέδια που μας επιτρέπουν να + αλλάξουμε τη συμπεριφορά του συστήματος χωρίς να κάνουμε αλλαγές στις ίδιες + τις τάξεις. Αυτό επιτυγχάνεται γενικά με τη χρήση προτύπων όπως το σχέδιο στρατηγικής. + after: Με αυτό το refactoring έχουμε κάνει δυνατή την προσθήκη νέων παραμέτρων + χωρίς να αλλάξουμε κανέναν κωδικό. Οποιαδήποτε πρόσθετη συμπεριφορά θα απαιτήσει + μόνο την προσθήκη νέου χειριστή. Αυτό κάνει το FileParser επαναχρησιμοποιήσιμο + και σε πολλές περιπτώσεις θα μας κρατήσει σε συμμόρφωση με την Αρχή της Ενιαίας + Ευθύνης καθώς και μας ενθαρρύνει να δημιουργήσουμε μικρότερες πιο εστιασμένες + τάξεις. + liskov: + title: Αρχή αντικατάστασης του Liskov + description: Η αρχή του Liskov τείνει να είναι το πιο δύσκολο να κατανοηθεί. Η + αρχή ορίζει ότι θα πρέπει να μπορείτε να αντικαταστήσετε τυχόν παρουσίες μιας + μητρικής τάξης με μια παρουσία ενός από τα παιδιά της χωρίς να δημιουργήσετε + τυχόν απροσδόκητες ή λανθασμένες συμπεριφορές. + segregation: + title: Αρχή εξαρτημένης αναστροφής + description: 'Η αρχή ορίζει ότι ένας πελάτης δεν πρέπει να αναγκάζεται να εξαρτάται + από μεθόδους που δεν χρησιμοποιεί. Σε αυτό το παράδειγμα, υπάρχουν κλάσεις υπολογιστών, + προγραμματιστών και τεχνικών. Τόσο ο προγραμματιστής όσο και ο τεχνικός χρησιμοποιούν + τον υπολογιστή με διαφορετικό τρόπο. Ο προγραμματιστής χρησιμοποιεί τον υπολογιστή + για πληκτρολόγηση, αλλά ο τεχνικός γνωρίζει πώς να αλλάξει το σκληρό δίσκο του + υπολογιστή. Ποια αρχή διαχωρισμού διασύνδεσης (ISP) επιβάλλει είναι ότι μια + τάξη δεν πρέπει να εξαρτάται από τις μεθόδους που δεν χρησιμοποιεί. Στην περίπτωσή + μας, ο προγραμματιστής συνδέεται άσκοπα με τη μέθοδο # change_hard_drive του + υπολογιστή επειδή δεν το χρησιμοποιεί, αλλά οι αλλαγές κατάστασης που επιβάλλει + αυτή η μέθοδος μπορούν να επηρεάσουν τον προγραμματιστή. Ας επαναπροσδιορίσουμε + τον κώδικα για να υπακούσουμε στο LSP.' + after: Μετά από αυτό τον ανασχηματισμό ο Τεχνικός χρησιμοποιεί ένα διαφορετικό + αντικείμενο από τον τύπο ComputerInternals που είναι απομονωμένο από την κατάσταση + του Υπολογιστή. Η κατάσταση του αντικειμένου του υπολογιστή μπορεί να επηρεαστεί + από τον προγραμματιστή, αλλά οι αλλαγές δεν θα επηρεάσουν τον τεχνικό με οποιονδήποτε + τρόπο. + di: + title: Αρχή εξαρτημένης αναστροφής + description: Η Αρχή εξαρτημένης αναστροφής έχει να κάνει με αντικείμενα υψηλού επιπέδου + (think business logic) που δεν εξαρτώνται από τις λεπτομέρειες υλοποίησης χαμηλού + επιπέδου (think database querying και IO). Αυτό μπορεί να επιτευχθεί με δακτυλογράφηση + και την αρχή της εξάρτησης από την εξάρτηση. Συχνά αυτό το πρότυπο χρησιμοποιείται + για την επίτευξη της ανοιχτής / κλειστής αρχής που συζητήσαμε παραπάνω. Στην + πραγματικότητα, μπορούμε να ξαναχρησιμοποιήσουμε το ίδιο παράδειγμα ως επίδειξη + αυτής της αρχής. Τώρα υπάρχει μια κλάση μορφοποίησης, αλλά έχω το hardcoded + στην κλάση Report, δημιουργώντας έτσι μια εξάρτηση από την αναφορά στο JSONFormatter. + Δεδομένου ότι η αναφορά είναι μια πιο αφηρημένη έννοια (υψηλού επιπέδου) από + την JSONFormatter, διασπάμε αποτελεσματικά το DIP. + after: Με αυτόν τον τρόπο η αναφορά δεν εξαρτάται από το JSONFormatter και μπορεί + να χρησιμοποιήσει οποιονδήποτε τύπο μορφοποιητή που έχει μια μέθοδο που ονομάζεται + μορφή (αυτή είναι γνωστή ως πληκτρολόγηση πάπιας). Ένα άλλο πράγμα που πρέπει + να σημειωθεί είναι ότι έχουμε χρησιμοποιήσει για άλλη μια φορά ένεση εξάρτησης + για την επίλυση ενός προβλήματος. Αυτή η τεχνική είναι πολύ ισχυρή όταν ο στόχος + μας είναι η αποσύνδεση αντικειμένων και παρόλο που έχει τα ίδια αρχικά με την + αρχή της αντιστροφής εξάρτησης (ενάντια στο μοντέλο εγχύσεων εξάρτησης), είναι + τελείως διαφορετικές έννοιες. + threads: + example: Παράδειγμα + title: Νήματα + description: 'Σημείωση σχετικά με τον παραλληλισμό και την ταυτότητα: Η κύρια διαφορά + μεταξύ της χρήσης διαδικασιών έναντι των νημάτων είναι ο τρόπος με τον οποίο χειρίζεται + η μνήμη. Σε υψηλό επίπεδο, επεξεργάζεται μνήμη αντιγραφής, ενώ τα νήματα μοιράζονται + μνήμη. Αυτό καθιστά τη διαδικασία ωοτοκία πιο αργή από το νήμα αναπαραγωγής και + οδηγεί σε διαδικασίες που καταναλώνουν περισσότερους πόρους μόλις τρέξει. Συνολικά, + τα θέματα συνεπάγονται λιγότερα έξοδα από τις διαδικασίες. Αυτό το API Thread + είναι ένα API Ruby. Έχω υπαινίξει ότι οι διαφορετικές υλοποιήσεις του Ruby έχουν + διαφορετικές υποκείμενες συμπεριφορές σπειρώματος.' + green: + title: Πράσινα νήματα + description: Το Ruby 1.9 αντικατέστησε τα πράσινα νήματα με φυσικά νήματα. Ωστόσο, + το GIL εξακολουθεί να εμποδίζει τον παραλληλισμό. Τούτου λεχθέντος, η συνοχή + έχει βελτιωθεί χάρη στον καλύτερο προγραμματισμό. Το νέο χρονοδιάγραμμα καθιστά + πιο αποδοτικές τις αποφάσεις μεταγωγής περιβάλλοντος, ουσιαστικά μετακινώντας + τους σε ξεχωριστό νήμα, γνωστό ως νήμα χρονοδιακόπτη. + gil: + title: GIL - Κλειδαριά παγκόσμιου ερμηνευτή + description: Το MRI έχει μια παγκόσμια κλειδαριά ερμηνείας (GIL). + Είναι μια κλειδαριά γύρω από την εκτέλεση του κώδικα Ruby. Αυτό σημαίνει ότι + σε ένα περιβάλλον πολλαπλών σπειρωμάτων, μόνο ένα νήμα μπορεί να εκτελέσει τον + κώδικα Ruby οποιαδήποτε στιγμή. Έτσι εάν έχετε 8 νήματα που δουλεύουν δυναμικά + σε μια 8-πυρήνα μηχανή, μόνο ένα νήμα και ένας πυρήνας θα είναι απασχολημένοι + οποιαδήποτε στιγμή . Το GIL υπάρχει για να προστατεύσει τα εσωτερικά του Ruby + από συνθήκες φυλής που θα μπορούσαν να καταστρέψουν τα δεδομένα. Υπάρχουν επιφυλάξεις + και βελτιστοποιήσεις, αλλά αυτό είναι το βασικό. + example: Αυτό το απλό γεγονός είναι αυτό που κάνει τα νήματα τόσο ισχυρά, αλλά + και αυτά που τα καθιστούν δύσκολα να δουλέψουν. Έχω ήδη δώσει μια ιδέα για το + γιατί τα νήματα είναι καλά. εδώ είναι ένα απλό πρόγραμμα για να απεικονίσει + τη δυσκολία τους. Εδώ μπορείτε να δείτε ότι έχουμε 10 + * 10000 στοιχεία σε πίνακα. Σημειώστε ότι το διαφορετικό ρουμπίνι μπορεί + να εμφανίσει ένα διαφορετικό αποτέλεσμα. Το GIL υπάρχει μόνο σε ρουμπίνι MRI. + mutex: + title: Mutex - Αμοιβαία Εκτέλεση + description: Τα mutexes παρέχουν έναν μηχανισμό για πολλαπλά νήματα για τον συγχρονισμό + πρόσβασης σε ένα κρίσιμο τμήμα του κώδικα. Με άλλα λόγια, βοηθούν να φέρουμε + κάποια τάξη, και κάποιες εγγυήσεις, στον κόσμο του πολυ-σπειρωτού χάους. Το + όνομα «mutex» είναι συντομογραφία για «αμοιβαίο αποκλεισμό». Αν τυλίξετε κάποια + ενότητα του κώδικα σας με ένα mutex, εγγυάστε ότι δεν μπορούν να εισέλθουν ταυτόχρονα + δύο ενότητες. Τα mutexes παρέχουν έναν μηχανισμό για πολλαπλά νήματα για τον + συγχρονισμό πρόσβασης σε ένα κρίσιμο τμήμα του κώδικα. Βοηθά να φέρει κάποια + τάξη και κάποια εγγύηση στον κόσμο του πολυ-σπειρωμένου χάους. + example: Σε αυτό το πρόγραμμα, δεδομένου ότι οποιοδήποτε νήμα πρέπει να κλειδώσει + το mutex προτού να μπορέσει να σπρώξει προς το Array, υπάρχει εγγύηση ότι δεν + θα πραγματοποιηθούν ταυτόχρονα δύο σπειρώματα. Με άλλα λόγια, αυτή η λειτουργία + δεν μπορεί πλέον να διακοπεί πριν ολοκληρωθεί. Μόλις ένα νήμα αρχίσει να σπρώχνει + προς τον πίνακα, κανένα άλλο νήμα δεν θα μπορεί να εισάγει αυτό το τμήμα του + κώδικα μέχρι να ολοκληρωθεί το πρώτο νήμα. Αυτή η λειτουργία είναι τώρα ασφαλής + για τα νήματα. Εδώ μπορείτε να δείτε ότι έχουμε 10 + * 10000 στοιχεία σε πίνακα. Τώρα όλα είναι τα ίδια, λόγω του mutex. Ο + mutex ορίζει τα ίδια όρια για το νήμα. Το πρώτο νήμα που αγγίζει αυτό το κομμάτι + κώδικα θα κλειδώσει το mutex. τότε γίνεται ο ιδιοκτήτης αυτού του mutex. Μέχρι + να ξεκλειδώσει το κύριο πηνίο το mutex, κανένα άλλο νήμα δεν μπορεί να το κλειδώσει. + fibers: + title: Ίνες + description: Οι ίνες είναι πρωτόγονα για την εφαρμογή ελαφρού συνεταιρισμού συνάθροισης + σε Ruby. Βασικά, είναι ένα μέσο για τη δημιουργία μπλοκ κώδικα που μπορούν να + σταματήσουν και να επαναληφθούν, σαν σπειρώματα. Η κύρια διαφορά είναι ότι δεν + έχουν προληφθεί ποτέ και ότι ο προγραμματισμός πρέπει να γίνει από τον προγραμματιστή + και όχι από τον VM. Σε αντίθεση με άλλα μοντέλα ελαφρών μοντέλων αδράνειας, + κάθε ίνα έρχεται με μια μικρή στοίβα των 4KB. Αυτό επιτρέπει την παύση της ίνας + από βαθιά ενσωματωμένες κλήσεις λειτουργίας μέσα στο μπλοκ ινών. + rails: + title: "Rails thread-safety" + description: Το πρόβλημα με αυτό είναι ότι δεν υπάρχει ένας απλός τρόπος να πούμε + με απόλυτη βεβαιότητα αν μια εφαρμογή ως σύνολο είναι ασφαλής για τα νήματα. + global_variables: Οι συνολικές μεταβλητές είναι παγκόσμιες. Αυτό σημαίνει ότι + μοιράζονται μεταξύ των νημάτων. Αν δεν ήσασταν πεπεισμένος ότι δεν χρησιμοποιείτε + τις μεταβλητές μέχρι τώρα, εδώ είναι ένας άλλος λόγος να μην τις αγγίξετε ποτέ. + Εάν θέλετε πραγματικά να μοιραστείτε κάτι παγκοσμίως σε μια εφαρμογή, είναι + πολύ πιθανό να εξυπηρετηθείτε καλύτερα από μια σταθερή (αλλά δείτε παρακάτω), + ούτως ή άλλως. + class_variables: Μεταβλητές κλάσης. Για τους σκοπούς μιας συζήτησης σχετικά με + τα θέματα, οι μεταβλητές κλάσης δεν διαφέρουν πολύ από τις παγκόσμιες μεταβλητές. + Μοιράζονται σε όλα τα θέματα με τον ίδιο τρόπο. Το πρόβλημα δεν αφορά τόσο τη + χρήση μεταβλητών τάξης, αλλά και τη μετάλλαξή τους. Και αν δεν πρόκειται να + μεταλλάξετε μια τάξη μεταβλητή, σε πολλές περιπτώσεις μια σταθερά είναι πάλι + μια καλύτερη επιλογή. + instance_variables: Μεταβλητές στιγμιότυπων. Ίσως έχετε διαβάσει ότι + θα πρέπει πάντα να χρησιμοποιείτε μεταβλητές τάξης τάξης αντί για μεταβλητές + τάξης στο Ruby. Λοιπόν, ίσως πρέπει, αλλά είναι εξίσου προβληματικές για προγράμματα + με σπείρωμα, όπως μεταβλητές κλάσης. + memoization: 'Η απομνημόνευση από μόνη της δεν αποτελεί θέμα ασφάλειας νήματος. + Συχνά χρησιμοποιείται για την αποθήκευση δεδομένων σε μεταβλητές κλάσης ή μεταβλητές + κλασσικών στιγμιότυπων (δείτε τα προηγούμενα σημεία). Ο τελεστής || + = είναι, στην πραγματικότητα, δύο πράξεις, οπότε υπάρχει πιθανός μετασχηματισμός + περιβάλλοντος στο μέσον του, προκαλώντας μια κατάσταση κούρσας μεταξύ των νημάτων. + Επομένως, ακόμα κι αν χρησιμοποιείτε μόνο μεταβλητές instance, μπορεί να καταλήξετε + σε συνθήκες αγώνα με απομνημόνευση. Μην αναμνημονεύσετε μεταβλητές κλάσης ή + μεταβλητές κλασσικών στιγμιότυπων. Αν πρέπει να θυμηθείτε κάτι σε επίπεδο κλάσης, + χρησιμοποιήστε αντ' αυτού τοπικές μεταβλητές νήματος (Thread.current + [: baz). Προσέξτε, ωστόσο, ότι εξακολουθεί να είναι μια παγκόσμια + μεταβλητή.' + config: + title:: Διαμόρφωση της ασφάλεια του νήματος !? + description: Η κλήση αυτής της μεθόδου ορίζει τέσσερις επιλογές στη διαμόρφωση + της εφαρμογής μας. Ας περάσουμε από κάθε επιλογή και να μιλήσουμε για το τι + κάνει. + frameworks: 'Πλαίσια προφόρτωσης: Η πρώτη επιλογή @preload_frameworks κάνει σχεδόν + αυτό που λέει, αναγκάζει το πλαίσιο Rails να φορτωθεί ανυπόμονα στην εκκίνηση. + Όταν αυτή η επιλογή δεν είναι ενεργοποιημένη, οι κλάσεις πλαισίων φορτώνονται + λείο μέσω autoload. Σε περιβάλλοντα με πολλαπλά σπειρώματα, το πλαίσιο πρέπει + να φορτωθεί με ανυπομονησία πριν από τη δημιουργία οποιωνδήποτε κλωστών λόγω + προβλημάτων ασφαλείας με νήματα με αυτόματη μετακίνηση. Γνωρίζουμε ότι η φόρτωση + του πλαισίου δεν είναι threadsafe, οπότε η στρατηγική είναι να φορτώσει όλα + πριν από οποιαδήποτε θέματα είναι έτοιμα να χειριστούν τα αιτήματα.' + cache: 'Κλάση προσωρινής αποθήκευσης: Η επιλογή @cache_classes ελέγχει εάν οι + κατηγορίες επαναφορτώνουν ή όχι. Θυμηθείτε όταν κάνετε "TDD" στην + αίτησή σας; Αλλάζετε έναν ελεγκτή και, στη συνέχεια, φορτώνετε ξανά τη σελίδα + για να "το δοκιμάσετε" και να δείτε ότι τα πράγματα άλλαξαν; Ya, αυτό + ελέγχει αυτή η επιλογή. Όταν αυτή η επιλογή είναι ψευδής, όπως και στην εξέλιξη, + οι κλάσεις σας θα φορτωθούν ξανά όταν τροποποιηθούν. Χωρίς αυτήν την επιλογή, + δεν θα μπορούσαμε να κάνουμε το "F5DD" μας (ναι, αυτό είναι το F5 + Driven Development). Στην παραγωγή, γνωρίζουμε ότι τα μαθήματα δεν πρόκειται + να τροποποιηθούν με τη σειρά τους, οπότε η δουλειά για να καταλάβουμε αν θα + ξαναφορτώσουμε τα μαθήματα απλώς σπαταλάει πόρους, οπότε είναι λογικό να μην + επαναφορτωθούν οι ορισμοί των τάξεων.' + di: 'Φόρτωση εξαρτήσεων: Αυτή η επιλογή, @dependency_loading, ελέγχει την φόρτωση + του κώδικα όταν υπάρχουν ελλείψεις σταθερών. Για παράδειγμα, ένας ελεγκτής αναφέρει + το μοντέλο χρήστη, αλλά η σταθερά χρήστη δεν έχει οριστεί. Σε αυτή την περίπτωση, + εάν η @dependency_loading είναι αληθής, το Rails θα βρει το αρχείο που περιέχει + τον χρήστη σταθερό και θα φορτώσει αυτό το αρχείο. Έχουμε ήδη μιλήσει για το + πώς η φόρτωση του κώδικα δεν είναι ασφαλής για τα νήματα, οπότε η ιδέα εδώ είναι + ότι πρέπει να φορτώσουμε το πλαίσιο, να φορτώσουμε όλοι τον κωδικό χρήστη και + στη συνέχεια να απενεργοποιήσουμε τη φόρτωση εξάρτησης. Μόλις απενεργοποιηθεί + η φόρτωση εξάρτησης, θα πρέπει να φορτωθεί ο κωδικός πλαισίου και ο κωδικός + εφαρμογής και όλες οι ελλείπουσες σταθερές θα αυξήσουν μόνο μια εξαίρεση παρά + την προσπάθεια φόρτωσης κώδικα. Εμείς δικαιολογούμε την απενεργοποίηση αυτής + της επιλογής στην παραγωγή επειδή (όπως αναφέρθηκε προηγουμένως) η φόρτωση του + κώδικα δεν είναι threadsafe, και αναμένουμε ότι θα έχει φορτωθεί όλος ο κώδικας + πριν οποιαδήποτε θέματα μπορούν να χειριστούν τα αιτήματα.' + concurrency: 'Επιτρέποντας ταυτόχρονο: Η επιλογή @allow_concurrency ελέγχει εάν + το μεσαίο λογισμικό Rack :: Lock χρησιμοποιείται ή όχι στη στοίβα σας. Rack + :: Lock κλειδώνει ένα mutex γύρω από το αίτημά σας. Η ιδέα είναι ότι αν έχετε + κώδικα που δεν είναι threadsafe, αυτό το mutex θα εμποδίσει τα πολλαπλά threads + να εκτελούν τον κωδικό ελεγκτή σας ταυτόχρονα. Όταν προστατεύετε το νήμα! έχει + οριστεί, το ενδιάμεσο λογισμικό έχει αφαιρεθεί και ο κωδικός ελεγκτή μπορεί + να εκτελεστεί παράλληλα.' + credits: 'Κωδικός και άρθρα λήφθηκαν από πήγες:' + ruby_meister: + title: Γίνετε Ruby Meister + description: Σε αυτή τη συζήτηση, θα εξετάσουμε το μακρύ ταξίδι από το να είσαι + αρχάριος του Ruby στην επίτευξη πραγματικής μάστερ του Ruby και θα προσπαθήσουμε + να το συντομεύσουμε λίγο για σας, μοιράζοντας κάποια σημαντική εικόνα. Ένας κύριος + ρουμίστας έχει ένα μεγάλο θεωρητικό υπόβαθρο, βασίζεται σε μια εκτενή εργαλειοθήκη, + έχει βαθιά κατανόηση των βασικών αξιών και αρχών του Ruby και πάντα τινάζει τις + δεξιότητές τους. Ίσως να λέτε στον εαυτό σας "Πω πω, αυτό είναι πολύ αόριστο". + Αλλά αν παρακολουθήσετε αυτή τη σύνοδο, σας υπόσχομαι ότι θα είστε διαφωτισμένοι, + διασκεδασμένοι και θα το απολαύσετε απόλυτα! Ακούγεται καλό? Τα σπουδαία βιβλία + θα είναι μέρος των πόρων που θα πρότεινα στους ανθρώπους να βελτιώσουν τις δεξιότητές + τους. + video: Το μακρύ ταξίδι για την κατάκτηση της Ruby από τον Bozhidar Batsov. + computer_science_fundamentals: + title: Βασικές αρχές της Πληροφορικής + articles: + - name: inside_machine + title: 'Inside the machine: Εικονογραφημένη εισαγωγή σε μικροεπεξεργαστές και + αρχιτεκτονική υπολογιστών' + description: Οι υπολογιστές εκτελούν αναρίθμητες εργασίες που κυμαίνονται + από την κρίσιμη για την ψυχαγωγία επιχείρηση, αλλά ανεξάρτητα από το πόσο + διαφορετικά μπορεί να φαίνονται και να συμπεριφέρονται, είναι όλοι εκπληκτικά + παρόμοιοι στη βασική λειτουργία. Μόλις καταλάβετε πώς λειτουργεί η μικροεπεξεργαστή + ή η κεντρική μονάδα επεξεργασίας (CPU), θα έχετε μια σταθερή αντίληψη των + θεμελιωδών εννοιών στην καρδιά όλων των σύγχρονων υπολογιστών. + - name: code + title: 'Κωδικός: Η κρυμμένη γλώσσα του υλικού και του λογισμικού του υπολογιστή' + description: Τι κάνουν οι φανοί, η βρετανική εισβολή, οι μαύρες γάτες και + οι τέντες με τους υπολογιστές; Στο CODE, μας δείχνουν τους έξυπνους τρόπους + με τους οποίους χειριζόμαστε τη γλώσσα και επινοούμε νέα μέσα επικοινωνίας + μεταξύ μας. Και μέσω του CODE, βλέπουμε πως αυτή η εφευρετικότητα και ο + πολύ ανθρώπινος καταναγκασμός μας να επικοινωνήσουμε οδήγησαν τις τεχνολογικές + καινοτομίες των τελευταίων δύο αιώνων. + - name: concrete_math + title: 'Συγκεκριμένα Μαθηματικά: Ένα θεμέλιο Πληροφορικής' + description: Αυτό το βιβλίο εισάγει τα μαθηματικά που υποστηρίζουν τον προηγμένο + προγραμματισμό υπολογιστών και την ανάλυση αλγορίθμων. Ο πρωταρχικός στόχος + των γνωστών συγγραφέων του είναι να προσφέρει μια σταθερή και σχετική βάση + μαθηματικών δεξιοτήτων - τις δεξιότητες που απαιτούνται για την επίλυση + σύνθετων προβλημάτων, την αξιολόγηση φρικτών ποσών και την ανακάλυψη λεπτών + προτύπων στα δεδομένα. Είναι ένα αναπόφευκτο κείμενο και αναφορά όχι μόνο + για τους επιστήμονες υπολογιστών - οι ίδιοι οι συγγραφείς βασίζονται σε + αυτό! - αλλά για τους σοβαρούς χρήστες των μαθηματικών σε σχεδόν κάθε πειθαρχία. + - name: sicp + title: Δομή και ερμηνεία προγραμμάτων ηλεκτρονικών υπολογιστών + description: 'Η διάρθρωση και η ερμηνεία των προγραμμάτων ηλεκτρονικών υπολογιστών + είχαν δραματική επίδραση στα προγράμματα σπουδών των υπολογιστών κατά την + τελευταία δεκαετία. Αυτή η πολυαναμενόμενη αναθεώρηση περιέχει αλλαγές σε + όλο το κείμενο. Υπάρχουν νέες εφαρμογές των περισσότερων από τα σημαντικότερα + συστήματα προγραμματισμού στο βιβλίο, συμπεριλαμβανομένων των διερμηνέων + και των μεταγλωττιστών, και οι συγγραφείς έχουν ενσωματώσει πολλές μικρές + αλλαγές που αντανακλούν την εμπειρία τους διδάσκοντας το μάθημα στο MIT + από την πρώτη έκδοση. Έχει εισαχθεί ένα νέο θέμα το οποίο τονίζει τον κεντρικό + ρόλο που διαδραματίζουν οι διαφορετικές προσεγγίσεις στην αντιμετώπιση του + χρόνου στα υπολογιστικά μοντέλα: αντικείμενα με κατάσταση, παράλληλο προγραμματισμό, + λειτουργικό προγραμματισμό και τεμπέλη αξιολόγηση και μη καθοριστικό προγραμματισμό.' + - name: design_programms + title: 'Πώς να σχεδιάσετε προγράμματα: Εισαγωγή στον προγραμματισμό και τον + υπολογισμό' + description: Αυτή η εισαγωγή στον προγραμματισμό τοποθετεί την επιστήμη των + υπολογιστών στον πυρήνα μιας φιλελεύθερης εκπαίδευσης των τεχνών. Σε αντίθεση + με άλλα εισαγωγικά βιβλία, επικεντρώνεται στη διαδικασία σχεδιασμού του + προγράμματος. Αυτή η προσέγγιση ενθαρρύνει μια ποικιλία κριτικών δεξιοτήτων, + αναλυτικής σκέψης, δημιουργικής σύνθεσης και προσοχής στη λεπτομέρεια - + που είναι σημαντικές για όλους, όχι μόνο για τους μελλοντικούς προγραμματιστές + υπολογιστών. Το βιβλίο εκθέτει τους αναγνώστες σε δύο θεμελιωδώς νέες ιδέες. + Πρώτον, παρουσιάζει κατευθυντήριες γραμμές σχεδιασμού προγράμματος που δείχνουν + στον αναγνώστη πώς να αναλύει μια δήλωση προβλήματος. πώς να διατυπώσουμε + συνοπτικούς στόχους. πώς να δημιουργήσετε παραδείγματα. πώς να αναπτύξετε + μια περίληψη της λύσης, με βάση την ανάλυση; πώς να τελειώσετε το πρόγραμμα? + και πώς να δοκιμάσετε. + - name: algorithm_manual + title: Το Εγχειρίδιο Σχεδιασμού Αλγορίθμων. + description: Αυτή η πρόσφατα αναπτυγμένη και ενημερωμένη δεύτερη έκδοση του + κλασικού κλασικού μοντέλου συνεχίζει να λαμβάνει το "μυστήριο" + από το σχεδιασμό αλγορίθμων και την ανάλυση της αποτελεσματικότητας και + της αποδοτικότητάς τους. Με την επέκταση της πρώτης έκδοσης, το βιβλίο χρησιμεύει + τώρα ως το κύριο βιβλίο επιλογής για μαθήματα σχεδιασμού αλγορίθμων διατηρώντας + παράλληλα την κατάστασή του ως κορυφαίου πρακτικού οδηγού αναφοράς στους + αλγόριθμους για προγραμματιστές, ερευνητές και φοιτητές. + - name: cormen + title: Εισαγωγή στους αλγορίθμους, 3η έκδοση (The MIT Press) + description: Ορισμένα βιβλία σχετικά με τους αλγόριθμους είναι αυστηρά αλλά + ελλιπή. άλλοι καλύπτουν μάζες υλικού αλλά στερούνται αυστηρότητας. Η εισαγωγή + στους Αλγόριθμους συνδυάζει μοναδικά την αυστηρότητα και την πληρότητα. + Το βιβλίο καλύπτει ένα ευρύ φάσμα αλγορίθμων σε βάθος, αλλά κάνει το σχεδιασμό + και την ανάλυσή τους προσιτή σε όλα τα επίπεδα των αναγνωστών. Κάθε κεφάλαιο + είναι σχετικά αυτοτελές και μπορεί να χρησιμοποιηθεί ως μονάδα σπουδών. + Οι αλγόριθμοι περιγράφονται στα Αγγλικά και σε έναν ψευδοκώδικα σχεδιασμένο + για να είναι αναγνώσιμος από οποιονδήποτε έχει κάνει λίγο προγραμματισμό. + Οι εξηγήσεις κρατήθηκαν στοιχειώδεις χωρίς να θυσιαστεί το βάθος της κάλυψης + ή η μαθηματική αυστηρότητα. + - name: compilers + title: 'Συγγραφείς: αρχές, τεχνικές και εργαλεία (2η έκδοση)' + description: 'Οι μεταγλωττιστές: Αρχές, Τεχνικές και Εργαλεία, γνωστά σε καθηγητές, + φοιτητές και προγραμματιστές παγκοσμίως, όπως το βιβλίο "Dragon Book", + διατίθενται σε μια νέα έκδοση. Κάθε κεφάλαιο έχει αναθεωρηθεί πλήρως για + να αντικατοπτρίζει τις εξελίξεις στην τεχνολογία λογισμικού, τις γλώσσες + προγραμματισμού και την αρχιτεκτονική υπολογιστών που έχουν συμβεί από το + 1986 όταν δημοσιεύθηκε η τελευταία έκδοση. Οι συγγραφείς, αναγνωρίζοντας + ότι λίγοι αναγνώστες θα συνεχίσουν να κατασκευάζουν έναν μεταγλωττιστή, + διατηρούν την εστίασή τους στην ευρύτερη σειρά προβλημάτων που αντιμετωπίζει + ο σχεδιασμός λογισμικού και η ανάπτυξη λογισμικού.' + - name: c_lang + title: Γ γλώσσα προγραμματισμού, 2η έκδοση + description: Οι συγγραφείς παρουσιάζουν τον πλήρη οδηγό για τον πρότυπο προγραμματισμό + γλωσσών C της ANSI. Γράφηκαν από τους προγραμματιστές του C, αυτή η νέα + έκδοση βοηθάει τους αναγνώστες να συμβαδίζουν με το οριστικοποιημένο πρότυπο + ANSI για το C, ενώ δείχνει πώς μπορούν να επωφεληθούν από την πλούσια δέσμη + φορέων της C, την οικονομία της έκφρασης, τη βελτιωμένη ροή ελέγχου και + τις δομές δεδομένων. Το 2 / E έχει ξαναγραφεί πλήρως με πρόσθετα παραδείγματα + και σύνολα προβλημάτων για να διευκρινιστεί η εφαρμογή δύσκολων γλωσσικών + δομών. Για χρόνια, οι προγραμματιστές C έχουν αφήσει την K & R να τους + καθοδηγήσει για την δημιουργία καλά δομημένων και αποδοτικών προγραμμάτων. + Τώρα, αυτή η ίδια βοήθεια είναι διαθέσιμη σε όσους εργάζονται με τους μεταγλωτιστές + ANSI. Περιλαμβάνει λεπτομερή κάλυψη της γλώσσας C συν το επίσημο εγχειρίδιο + αναφοράς γλωσσών C για άμεση βοήθεια με τη σύνταξη συμβολισμό, δηλώσεις, + αλλαγές ANSI, κανόνες εφαρμογής και ο κατάλογος συνεχίζεται. + oop: + title: Αντικειμενοστραφής προγραμματισμός + articles: + - name: growing + title: Ανάπτυξη αντικειμενοστρεφούς λογισμικού, με καθοδήγηση από δοκιμές + description: 'Η εξέλιξη με γνώμονα τις δοκιμές (TDD) είναι τώρα μια καθιερωμένη + τεχνική για την ταχύτερη παροχή καλύτερου λογισμικού. Το TDD βασίζεται σε + μια απλή ιδέα: Γράψτε τις δοκιμές για τον κώδικα πριν γράψετε τον ίδιο τον + κώδικα. Ωστόσο, αυτή η "απλή" ιδέα απαιτεί ικανότητα και κρίση + για να κάνει καλά. Τώρα υπάρχει ένας πρακτικός οδηγός για το TDD που σας + μεταφέρει πέρα από τις βασικές έννοιες. Βασιζόμενοι σε μια δεκαετία εμπειρίας + που δημιουργεί συστήματα πραγματικού κόσμου, δύο πρωτοπόροι της TDD δείχνουν + πώς να επιτρέψουν στις δοκιμές να καθοδηγήσουν την ανάπτυξη και να «αναπτύξουν» + λογισμικό που είναι συνεπές, αξιόπιστο και διατηρήσιμο.' + - name: domain_driven + title: 'Σχεδίαση που βασίζεται σε τομέα: Αντιμετώπιση της πολυπλοκότητας στην + καρδιά του λογισμικού' + description: Αυτό είναι ένα σοβαρό βιβλίο σχετικά με τη μοντελοποίηση τομέα + στο σχεδιασμό λογισμικού. Η κοινωνία ανάπτυξης λογισμικού ζει από ένα κύμα + υπερφυσικού χαρακτήρα σε ένα άλλο. OOP, πρότυπα, XP, TDD, CI / CD, BigData, + DevOps - αυτό είναι μόνο για να αναφέρουμε μερικά. Αυτό το βιβλίο προέρχεται + από την χρυσή εποχή του OOP. Ο συγγραφέας παραδέχεται ότι το παραδειγματικό + προσανατολισμό δεν είναι το μόνο διαθέσιμο αλλά η προκατάληψη προς το OOP + / OOD είναι προφανής (και δικαιολογημένη). Αυτό το βιβλίο αναφέρει πώς να + κάνετε το μοντέλο των βασικών συστατικών λογισμικού "με τον σωστό τρόπο". + ruby: + title: know you lang + articles: + - name: well_grounded + title: "The Well-Grounded Rubyist" + description: "The Well-Grounded Rubyist", Δεύτερη Έκδοση απευθύνεται τόσο + στους νεοφερμένους στη Ruby όσο και στους προγραμματιστές Ruby που θέλουν + να εμβαθύνουν την κατανόησή τους στη γλώσσα. Αυτή η όμορφα γραμμένη και + πλήρως αναθεωρημένη δεύτερη έκδοση περιλαμβάνει την κάλυψη των χαρακτηριστικών + που είναι καινούργια στο Ruby 2.1, καθώς και την εκτεταμένη και ενημερωμένη + κάλυψη πτυχών της γλώσσας που έχουν αλλάξει. + - name: programming_ruby + title: 'Programming Ruby: Ο πρακτικός οδηγός προγραμματιστών, δεύτερη + έκδοση' + description: 'Η Ruby είναι μια ολοένα και πιο δημοφιλής, πλήρως αντικειμενοστρεφής + δυναμική γλώσσα προγραμματισμού, χαιρετισμένη από πολλούς ασκούμενους ως + την ωραιότερη και πιο χρήσιμη γλώσσα που διατίθεται σήμερα. Όταν ο Ruby + ξεσηκώθηκε για πρώτη φορά στη σκηνή του δυτικού κόσμου, οι πραγματικοί προγραμματιστές + ήταν εκεί με το οριστικό εγχειρίδιο αναφοράς, Programming Ruby: The Pragmatic + Programmer's Guide.' + - name: ruby_programming + title: 'The Ruby Programming Language: Όλα όσα πρέπει να ξέρετε' + description: 'Αυτό το βιβλίο ξεκινά με ένα διδακτικό πρόγραμμα γρήγορης έναρξης + στη γλώσσα και στη συνέχεια εξηγεί τη γλώσσα λεπτομερώς από κάτω προς τα + επάνω: από τη λεξική και τη συντακτική δομή έως τα δεδομένα σε εκφράσεις + και δηλώσεις και σε μεθόδους, μπλοκ, lambdas, κλεισίματα, ενότητες. Το βιβλίο + περιλαμβάνει επίσης μια μακρά και εμπεριστατωμένη εισαγωγή στο πλούσιο API + της πλατφόρμας Ruby, αποδεικνύοντας - με κώδικα παραδείγματος που σχολιάζει + έντονα - τις εγκαταστάσεις της Ruby για επεξεργασία κειμένων, αριθμητικούς + χειρισμούς, συλλογές, είσοδο / έξοδο, δικτύωση και ταυτόχρονη λειτουργία. + Ένα ολόκληρο κεφάλαιο αφιερώνεται στις δυνατότητες μεταπρογραμματισμού του + Ruby.' + interview_questions: + title: Ερωτήσεις συνέντευξης + description: Αυτή η ενότητα διατηρεί συνδέσμους πόρων για την ανάγνωση και την προετοιμασία + συνέντευξης + list: + - name: 'Toptal: Πώς να μισθώσετε έναν καλό Ruby Developer' + link: "https://www.toptal.com/ruby#hiring-guide" + - name: 'Toptal: 21 Essential Ruby Interview Questions' + link: "https://www.toptal.com/ruby/interview-questions" + - name: 'Hookops: 35 + Ruby and Rails Ερωτήσεις και απαντήσεις για συνέντευξη' + link: "https://lab.hookops.com/ruby-interview-prep.html" + - name: 'Educba: 15 πιο σημαντικές ερωτήσεις συνέντευξης Ruby και απάντηση' + link: "https://www.educba.com/ruby-interview-questions/" + - name: 'Ruby Garage: Πώς να παρετε συνέντευξη εναν Ruby on Rails Προγραμματιστή' + link: "https://rubygarage.org/blog/how-to-interview-your-ruby-on-rails-developer" + - name: 'RyanSobol: 15 ερωτήσεις που πρέπει να ρωτήσετε κατά τη διάρκεια μιας συνέντευξης Ruby' + link: "https://gist.github.com/ryansobol/5252653" + - name: 'Toptal: 9 βασικές Ruby on Rails ερωτήσεις συνέντευξης' + link: "https://www.toptal.com/ruby-on-rails/interview-questions" + index: + title: Τι είναι τα Better Docs + description: Αυτός ο ιστότοπος είναι το διαδικτυακό αναλογο γραφείο + προσαρμογής Github Ruby.Fundamental + που συγκέντρωσε πολλά αστέρια και μεταφράστηκε στην κινεζική γλώσσα. Τα Better + Docs σάς επιτρέπουν να βρείτε γρήγορα μια βέλτιστη πρακτική που συλλέχθηκε σε + ένα αποθετήριο. Ακριβώς εσείς αυτό το repo σαν τον πόρο προετοιμασίας αναφοράς + ή συνέντευξης. + oss: + title: Χάρη στο Open Source + description: Τα Better Docs δημιουργήθηκαν ενώ εργαζόταν και ανακαλύφθηκε + σχετικά με τις βέλτιστες πρακτικές και τις γνώσεις σχετικά με τη Ruby, μια + μηχανή ανοιχτού κώδικα για εφαρμογές ανάπτυξης ιστού γραμμένες σε Ruby. + thanks: Αν η Better Docs σας βοήθησε με οποιονδήποτε τρόπο, σκεφτείτε να μας δώσετε + ένα αστέρι στο Github + (μας βοηθά να φτάσουμε σε περισσότερους προγραμματιστές) ή να συνεισφέρουμε + στα έργα μας.