Σπίτι Ανάπτυξη Ταχεία απόκριση: αποκατάσταση βάσεων δεδομένων και δημιουργία προφίλ στη διάσωση

Ταχεία απόκριση: αποκατάσταση βάσεων δεδομένων και δημιουργία προφίλ στη διάσωση

Anonim

Από το προσωπικό της Techopedia, 15 Μαρτίου 2017

Takeaway: Ο οικοδεσπότης Eric Kavanagh συζήτησε την απομάκρυνση δεδομένων και τη δημιουργία προφίλ με τους Dr. Robin Bloor, Dez Blanchfield και τον Bert Scalzo της IDERA.

Δεν έχετε εισέλθει αυτήν τη στιγμή. Συνδεθείτε ή εγγραφείτε για να δείτε το βίντεο.

Eric Kavanagh: Εντάξει, κυρίες και κύριοι, είναι 4:00 ώρα Ανατολής την Τετάρτη και φυσικά αυτό σημαίνει.

Robin Bloor: Δεν μπορώ να ακούσω, Eric.

Eric Kavanagh: Ήμουν εδώ μέρες πριν, έτσι δεν είστε μόνοι. Αλλά έτσι το θέμα σήμερα είναι πραγματικά ενδιαφέροντα πράγματα. Είναι το είδος που θέλετε να βεβαιωθείτε ότι συμβαίνει στο παρασκήνιο της επιχείρησής σας, εκτός αν είστε το άτομο που το κάνει, οπότε θέλετε να βεβαιωθείτε ότι το κάνετε σωστά. Επειδή μιλάμε για σφάλμα. Κανείς δεν του αρέσει τα σφάλματα, κανείς δεν του αρέσει όταν το λογισμικό σταματά να λειτουργεί - οι άνθρωποι παίρνουν αναστατωμένοι, οι χρήστες δυσκολεύονται. Αυτό δεν είναι καλό. Έτσι, πρόκειται να μιλήσουμε για την "Ταχεία απόκριση: Επεξεργασία και αποτύπωση σφαλμάτων βάσεων δεδομένων στη διάσωση".

Υπάρχει μια θέση για την αληθινή σας, χτύπησε με επάνω στο Twitter, @eric_kavanagh φυσικά.

Αυτό το έτος είναι ζεστό. Και το σφάλμα θα είναι ζεστό, δεν έχει σημασία τι. Είναι πραγματικά ένα από αυτά τα προβλήματα που δεν πρόκειται ποτέ να πάει μακριά, ανεξάρτητα από το πόσο καλά παίρνουμε σε αυτά τα πράγματα, πάντα θα υπάρχουν ζητήματα, έτσι το κλειδί είναι πώς θα φτάσετε εκεί που μπορείτε να επιλύσετε αυτά τα θέματα γρήγορα; Στην ιδανική περίπτωση, έχετε σπουδαίους προγραμματιστές, σπουδαία περιβάλλοντα, όπου δεν πάει πάρα πολύ λάθος, αλλά όπως λέει η παλιά παροιμία, «Τα ατυχήματα συμβαίνουν στις καλύτερες οικογένειες». Και το ίδιο ισχύει και για τις οργανώσεις. Έτσι, αυτό το πράγμα συμβαίνει, πρόκειται να συμβεί, το ερώτημα είναι τι θα είναι η λύση σας για την αντιμετώπιση και την επίλυση αυτών των προβλημάτων;

Θα ακούσουμε από τον Δρ. Robin Bloor, στη συνέχεια το δικό μας Dez Blanchfield από κάτω και, φυσικά, τον καλό φίλο μας, τον Bert Scalzo, από την IDERA. Και στην πραγματικότητα πρόκειται να παραδώσω τα κλειδιά στον Robin Bloor, να το πάρω μακριά. Το πάτωμα είναι δικό σου.

Robin Bloor: Εντάξει. Αυτό είναι ένα ενδιαφέρον θέμα. Σκέφτηκα γιατί ο Dez πιθανώς θα συνεχίσει να κάνει τις πραγματικές τεχνικές και τις ιστορίες πολέμου για το σφάλμα. Νόμιζα ότι θα έπρεπε να κάνω μια συζήτηση στο παρασκήνιο, έτσι ώστε να έχουμε μια πλήρη στρογγυλή εικόνα του τι συμβαίνει. Το έκανα εδώ και πολύ καιρό, και υπήρξα κωδικοποιητής και έτσι ήμουν σχεδόν πειρασμένος με αυτήν την παρουσίαση για να ξεκινήσω να κάνω λυρικά για την ιδέα της ανοιχτής πηγής, αλλά σκέφτηκα ότι θα το αφήσω σε κάποιον άλλο.

Ακολουθεί μια λίστα με τα διάσημα σφάλματα, και τα περισσότερα από αυτά μπαίνουν στον κορυφαίο κατάλογο κανενός, βασικά, όλα, εκτός από τα τελευταία δύο, κοστίζουν τουλάχιστον 100 εκατομμύρια δολάρια. Ο πρώτος ήταν ο Mars Climate Orbiter, χάθηκε στο διάστημα και ήταν εξαιτίας ενός προβλήματος κωδικοποίησης, όπου οι άνθρωποι μπερδεύουν μετρικές μονάδες με (γέλια) πόδια και ίντσες. Το Ariane Five Flight 501 υπήρξε μια αναντιστοιχία μεταξύ ενός κινητήρα που τοποθετήθηκε και των υπολογιστών που έπρεπε να εκτελούν τον πυραύλο όταν ξεκίνησε. Πολλές αποτυχίες του υπολογιστή, εκρήγνυται πυραύλων, επικεφαλής ειδήσεις. Σοβιετικός αγωγός φυσικού αερίου το 1982, που λέγεται ότι είναι η μεγαλύτερη έκρηξη στην ιστορία του πλανήτη. Δεν είμαι σίγουρος αν είναι. Οι Ρώσοι έκλεψαν κάποιο αυτοματοποιημένο λογισμικό ελέγχου και η CIA συνειδητοποίησε ότι επρόκειτο να το πράξουν και να βάλει σφάλματα σε αυτό, και τα Σοβιέτ το εφάρμοσαν χωρίς δοκιμές. Λοιπόν, έσκαψε έναν αγωγό επάνω, σκέφτηκε ότι ήταν διασκεδαστικό.

Το σκουλήκι Morris ήταν ένα πείραμα κωδικοποίησης, το οποίο ξαφνικά έγινε ένας αδίστακτος σκουλήκι που γύρισε όλους - προφανώς προκάλεσε ζημιά αξίας 100 εκατομμυρίων δολαρίων. αυτό είναι μια εκτίμηση φυσικά. Η Intel έκανε ένα διάσημο λάθος με ένα τσιπ μαθηματικών μαθημάτων - μια διδασκαλία μαθηματικών για το τσιπ Pentium το 1993 - που υποτίθεται ότι είχε κοστίσει πάνω από 100 εκατομμύρια δολάρια. Το πρόγραμμα των Χαρτών της Apple είναι πιθανώς η χειρότερη και πιο καταστροφική εκκίνηση οτιδήποτε έχει κάνει ποτέ η Apple. Οι άνθρωποι που προσπάθησαν να το χρησιμοποιήσουν ήταν, εννοώ, κάποιος οδηγούσε κατά μήκος 101 και ανακάλυψε ότι ο Χάρτης της Apple είπε ότι βρισκόταν στη μέση του κόλπου του Σαν Φρανσίσκο. Έτσι, οι άνθρωποι άρχισαν να αναφέρουν την εφαρμογή Apple Maps ως iLost. Η πιο μεγάλη διακοπή μας το 1990 - είναι απλώς ενδιαφέρουσα από την άποψη του κόστους κάτι τέτοιο - η AT & T βγήκε για περίπου εννέα ώρες και κοστίζει περίπου 60 εκατομμύρια δολάρια σε υπεραστικές κλήσεις.

Και βρισκόμουν σε μια ασφαλιστική εταιρεία του Ηνωμένου Βασιλείου και στη βάση δεδομένων, εφάρμοσαν μια νέα έκδοση της βάσης δεδομένων και άρχισαν να σβήνουν τα δεδομένα. Και το θυμάμαι πολύ καλά, γιατί ήμασταν καλεσμένοι αργότερα για να λάβω μέρος σε κάποια επιλογή βάσης δεδομένων εξαιτίας αυτού. Και ήταν πολύ ενδιαφέρον το γεγονός ότι είχαν πάρει μια νέα έκδοση της βάσης δεδομένων και είχαν μια σειρά δοκιμών που έκαναν για νέες εκδόσεις της βάσης δεδομένων που πέρασαν όλες τις δοκιμές. Βρήκε έναν πολύ συγκεχυμένο τρόπο για να σκουπίσει τα δεδομένα.

Έτσι, έτσι κι αλλιώς. Νόμιζα ότι θα μιλήσω για την αναντιστοιχία της σύνθετης αντίστασης και την έκδοση του SQL. Είναι ενδιαφέρον το γεγονός ότι οι σχεσιακές βάσεις δεδομένων αποθηκεύουν δεδομένα σε πίνακες και κωδικοποιητές τείνουν να χειρίζονται δεδομένα σε δομές αντικειμένων που πραγματικά δεν χαρτογραφούν πολύ καλά στους πίνακες. Και λόγω αυτού, παίρνετε αυτό που ονομάζεται αναντιστοιχία σύνθετης αντίστασης, και κάποιος πρέπει να ασχοληθεί με αυτό με κάποιο τρόπο ή άλλο. Αλλά τι συμβαίνει πραγματικά, επειδή ένα μοντέλο, το μοντέλο του κωδικοποιητή και η βάση δεδομένων ένα άλλο μοντέλο, δεν είναι ιδιαίτερα ευθυγραμμισμένα. Παίρνετε σφάλματα που δεν θα συνέβαιναν αν η βιομηχανία είχε κατασκευάσει πράγματα που λειτουργούν μαζί, τα οποία πιστεύω ότι είναι ξεκαρδιστικά. Έτσι, βασικά, από την πλευρά των κωδικοποιητών, όταν παίρνετε ιεραρχίες μπορεί να είναι τύποι, μπορεί να έχει ως αποτέλεσμα σύνολα, μπορεί να είναι κακή ικανότητα API, μπορεί να είναι πολλά πράγματα που απλά να ρίχνουν τα πράγματα σε όρους αλληλεπίδρασης με τη βάση δεδομένων. Αλλά το πράγμα που είναι περισσότερο για μένα, πραγματικά ενδιαφέρον? πάντα με εξέπληξε ότι είχατε αυτό το φράγμα SQL που είναι επίσης ένα είδος σύνθετης αντίστασης με τρόπο που οι κωδικοποιητές και η βάση δεδομένων συνεργάζονται μεταξύ τους. Έτσι, η SQL έχει αναγνώριση δεδομένων, η οποία είναι καλή και έχει DML για την επιλογή, το έργο και το join, κάτι που είναι καλό. Μπορείτε να ρίξετε πολλές δυνατότητες όσον αφορά τη λήψη δεδομένων από τη βάση δεδομένων με αυτό. Αλλά έχει πολύ λίγη μαθηματική γλώσσα για να κάνει πράγματα. Έχει ένα κομμάτι από αυτό και αυτό, και έχει πολύ λίγο χρόνο με βάση τα πράγματα. Και εξαιτίας αυτού, το SQL είναι ένα ατελές, αν θέλετε, μέσο λήψης των δεδομένων. Έτσι, οι τύποι της βάσης δεδομένων που χτίστηκαν αποθηκευμένες διαδικασίες για να ζήσουν στη βάση δεδομένων και ο λόγος των αποθηκευμένων διαδικασιών που ζούσαν εκεί ήταν ότι δεν ήθελες πραγματικά να ρίχνεις δεδομένα πέρα ​​δώθε σε ένα πρόγραμμα.

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

Σκέφτηκα ότι θα μιλήσω επίσης για την απόδοση της βάσης δεδομένων, επειδή τα σφάλματα απόδοσης συχνά θεωρούνται σφάλματα, αλλά βασικά μπορείτε να έχετε ένα κενό στη CPU, στη μνήμη, στο δίσκο, στο δίκτυο και να έχετε προβλήματα απόδοσης λόγω κλειδώματος . Η ιδέα είναι ότι ο κωδικοποιητής δεν χρειάζεται πραγματικά να ανησυχεί για τις επιδόσεις και ότι η βάση δεδομένων στην πραγματικότητα θα αποδώσει ικανοποιητικά. Υποτίθεται ότι σχεδιάζεται έτσι ώστε ο κωδικοποιητής να μην χρειάζεται να γνωρίζει. Ωστόσο, παίρνετε κακό σχεδιασμό βάσης δεδομένων, παίρνετε κακό σχεδιασμό του προγράμματος, παίρνετε ταυτοχρόνως στην ανάμιξη φόρτου εργασίας, η οποία μπορεί επίσης να οδηγήσει σε προβλήματα επιδόσεων. Παίρνετε εξισορρόπηση φορτίου, έχετε προγραμματισμό χωρητικότητας, αύξηση δεδομένων - που μπορεί να προκαλέσει τη διακοπή ή την επιβράδυνση της βάσης δεδομένων. Είναι ενδιαφέρον, όταν οι βάσεις δεδομένων γίνονται σχεδόν πλήρεις, επιβραδύνουν. Και μπορείτε να έχετε ζητήματα στρώματος δεδομένων όσον αφορά την αναπαραγωγή και την ανάγκη αναπαραγωγής και την ανάγκη να κάνετε backup και ανάκτηση. Εν πάση περιπτώσει, αυτή είναι μια γενική επισκόπηση.

Το μόνο που θα ήθελα να πω είναι ότι η απομάκρυνση της βάσης δεδομένων μπορεί να είναι τόσο δαπανηρή και μη τετριμμένη - και το λέω αυτό επειδή έχω κάνει πολλά από αυτά - και συχνά θα ανακαλύψετε ότι όπως όλες οι καταστάσεις που εντοπίζονται στο debugging που έχει βιώσει ποτέ είναι, είναι το πρώτο πράγμα που βλέπετε ποτέ είναι ένα χάος. Και πρέπει να προσπαθήσετε και να πάτε από το χάος για να επεξεργαστείτε πώς έφτασε το χάος. Και συχνά, όταν κοιτάζετε σε ένα θέμα βάσης δεδομένων, όλα όσα κοιτάζετε είναι διεφθαρμένα δεδομένα και σκέφτεστε, "Πόσο έκανες να συμβεί αυτό;"

Εν πάση περιπτώσει, θα περάσω στον Dez, ο οποίος πιθανότατα θα πει περισσότερα λόγια σοφίας από ό, τι βγήκα. Δεν ξέρω πώς να περάσω τη μπάλα, Dez.

Eric Kavanagh: Θα το περάσω, παραμονή, κρατήστε πατημένο.

Αυτόματη φωνή: Οι γραμμές των συμμετεχόντων σίγασαν.

Eric Kavanagh: Εντάξει, κρεμάστε σε ένα δευτερόλεπτο, επιτρέψτε μου να δώσω την μπάλα Dez.

Dez Blanchfield: Σας ευχαριστώ, Eric. Ναι, κύριε Robin Bloor, είσαι όντως πιο σωστός: αυτό είναι ένα θέμα, ένας διάβολος για όλη τη ζωή, αν χάσεις τη λέξη, λυπάμαι που δεν μπορούσα να βοηθήσω τον εαυτό μου σε αυτό. Ας ελπίσουμε ότι μπορείτε να δείτε την πρώτη οθόνη μου εκεί, συγνώμη για το πρόβλημα μεγέθους γραμματοσειράς στην κορυφή. Το θέμα των σφαλμάτων είναι μια ημερήσια διάλεξη, σε πολλές περιπτώσεις από την εμπειρία μου. Είναι ένα τόσο ευρύ και ευρύ θέμα, επομένως πρόκειται να επικεντρωθώ σε δύο βασικούς τομείς, και συγκεκριμένα στην έννοια του τι θεωρούμε ως ένα σφάλμα, αλλά ως ζήτημα προγραμματισμού. Νομίζω ότι αυτές τις μέρες η εισαγωγή ενός σφάλματος per se γενικά παίρνει picked από τα ολοκληρωμένα περιβάλλοντα ανάπτυξης, αν και μπορεί να είναι μακροχρόνια σφάλματα. Αλλά συχνά είναι περισσότερο μια περίπτωση κωδικοποίησης κώδικα και είναι δυνατόν να γράψετε κώδικα που λειτουργεί, αυτό θα πρέπει να είναι ένα σφάλμα. Έτσι, ο τίτλος μου διαφάνεια εδώ, είχα πραγματικά ένα αντίγραφο αυτού σε πολύ υψηλή ανάλυση A3, αλλά δυστυχώς καταστράφηκε σε μια κίνηση του σπιτιού. Αλλά αυτή είναι μια χειρόγραφη σημείωση σε ένα φύλλο προγραμματισμού από περίπου το 1945, όπου υποτίθεται ότι κάποιοι φοιτούν στο Πανεπιστήμιο του Χάρβαρντ στις ΗΠΑ, τη δεύτερη κατασκευή τους από μια μηχανή που ονομάζεται Mark II. Προέβλεπαν κάποιο πρόβλημα, σε κοινή γλώσσα, αλλά προσπαθούσαν να βρουν κάποιο λάθος και αποδείχθηκε ότι κάτι διαφορετικό από το υλικό και το υποθετικά πρόβλημα λογισμικού ήρθε μαζί.

Έτσι, ο αστικός μύθος είναι ότι γύρω στις 9 Σεπτεμβρίου 1945 μια ομάδα στο Πανεπιστήμιο του Χάρβαρντ τραβούσε ένα μηχάνημα, συναντούσαν κάτι που ονόμαζαν "ρελέ εβδομήντα" - εκείνες τις μέρες ο προγραμματισμός έγινε με φυσική έννοια, πληρώσατε κωδικό γύρω από ένα διοικητικό συμβούλιο και αυτό ήταν το πώς προγραμματίσατε πραγματικά το μηχάνημα - και βρήκαν αυτόν τον αριθμό ρελέ εβδομήντα, υπήρχε κάτι λάθος με αυτό, και αποδεικνύεται ότι ο πραγματικός όρος "σφάλμα" ήρθε περίπου επειδή κυριολεκτικά ήταν ένα σκώρος - υποτίθεται ότι υπάρχει ήταν ένα σκώρος σφηνωμένο ανάμεσα σε ένα κομμάτι χάλκινου σύρματος που πηγαίνει από το ένα μέρος στο άλλο. Και η ιστορία πηγαίνει ότι ο θρυλικός Grace Hopper ως αυτή η λεζάντα, για τη διαφάνεια τίτλου μου, "πρώτη πραγματική περίπτωση ενός σφάλματος που βρέθηκε" παραθέτω unquote.

Αλλά όπως ο Robin υπογράμμισε νωρίτερα στην πρώτη του διαφάνεια, η έννοια ενός σφάλματος πηγαίνει τόσο μακριά όσο μπορούμε να φανταστούμε ότι οι άνθρωποι κάνουν υπολογισμό, έννοιες όπως ένα έμπλαστρο. Ο όρος "έμπλαστρο" προέρχεται από ένα πραγματικό κομμάτι ταινίας που έχει κολληθεί πάνω από μια τρύπα σε μια κάρτα διάτρησης. Αλλά το όλο θέμα, είναι ότι ο όρος "debugging" βγήκε από αυτή την έννοια της εύρεσης ενός σφάλματος σε μια φυσική μηχανή. Και από τότε, χρησιμοποιήσαμε αυτή την ορολογία γύρω από την προσπάθεια αντιμετώπισης των ζητημάτων, είτε όχι τόσο ως κωδικοποίηση των προβλημάτων σε ένα πρόγραμμα που δεν καταρτίζεται, αλλά ως ένα πρόγραμμα που δεν τρέχει καλά. Και ειδικά δεν έχει προφίλ μόνο βρείτε πράγματα όπως ποτέ δεν τελειώνει βρόχους που πηγαίνουν πουθενά.

Αλλά έχουμε και ένα σενάριο, και σκέφτηκα ότι θα έβαλα μερικές αστείες διαφάνειες πριν να μπω σε λίγο περισσότερες λεπτομέρειες. Εδώ είναι το κλασικό κινούμενο σχέδιο, που ονομάζεται XKCD στο διαδίκτυο, και ο γελοιογράφος έχει κάποιες πολύ αστείες απόψεις για τον κόσμο. Και αυτό είναι για ένα παιδί που ονομάζεται "Little Bobby Tables" και υποτίθεται ότι οι γονείς του ονόμασαν αυτό το νεαρό αγόρι Robert ")? ΠΙΝΑΚΑΣ ΔΙΠΛΩΜΑΤΩΝ Φοιτητές - και λέγεται, και το είδος "Γεια σου, αυτό είναι το σχολείο του γιου σας που έχει κάποιο πρόβλημα στον υπολογιστή", και ο γονέας απαντά: "Ω αγαπητέ, έσπασε κάτι;" Και ο δάσκαλος λέει, κατά κάποιον τρόπο, "και ο δάσκαλος ρωτάει, " αναφέρατε πραγματικά τον γιο σας Robert "); ΠΙΝΑΚΑΣ ΔΙΠΛΩΜΑΤΟΣ Φοιτητές - - "Και ο γονέας λέει, " Ω ναι, λίγο Bobby Tables τον αποκαλούμε. "Τέλος πάντων, συνεχίζουν να λένε ότι έχουν χάσει τώρα τα αρχεία φοιτητών του έτους, ελπίζω να είστε χαρούμενοι. Και η απάντηση είναι: "Λοιπόν, πρέπει να καθαρίσετε και να απολυμάνετε τις εισροές της βάσης δεδομένων σας". Και χρησιμοποιώ πολλές φορές για να μιλήσω για μερικά από τα προβλήματα που έχουμε να βρούμε πράγματα στον κώδικα, που συχνά ο κώδικας δεν εξετάζει τα δεδομένα επισης.

Ένα άλλο αστείο, δεν ξέρω αν αυτό είναι πραγματικό ή όχι - υποψιάζομαι ότι είναι μια παρωδία - αλλά και πάλι, αγγίζει επίσης αστείο μου κόκαλο. Κάποιος που αλλάζει την πινακίδα κυκλοφορίας στο μπροστινό μέρος του αυτοκινήτου τους, σε μια παρόμοια δήλωση που προκαλεί την πτώση των βάσεων δεδομένων στις κάμερες ταχύτητας και ούτω καθεξής που καταγράφουν τις πινακίδες κυκλοφορίας των αυτοκινήτων. Και πάντα αναφέρομαι σε αυτό, καθώς αμφιβάλλω ότι οποιοσδήποτε προγραμματιστής προέβλεψε ένα χτύπημα και την εκτέλεση του κώδικα τους από ένα πραγματικό αυτοκίνητο, αλλά ποτέ δεν υποτιμούμε αυτό - τη δύναμη ενός θυμωμένου geek.

(Γέλιο)

Αλλά αυτό με οδηγεί στο βασικό μου σημείο, υποθέτω, και αυτό είναι ότι μια φορά κι έναν καιρό, θα μπορούσαμε να εντοπίσουμε και να κωδικοποιήσουμε τον κώδικα ως απλούς θνητούς. Αλλά είμαι πολύ της άποψης ότι ο χρόνος αυτός έχει περάσει, και ανεκδοτικά στην εμπειρία μου, το πρώτο μου - και αυτό θα με μεγαλώσει τρομερά, είμαι σίγουρος. Robin, είστε ευπρόσδεκτοι να μου γελάσετε για αυτό - αλλά ιστορικά έχω έρθει από ένα ιστορικό σε ηλικία 14 ετών που περιπλανιέται στο τέλος της πόλης και χτυπάει την πόρτα ενός κέντρου δεδομένων που ονομάζεται "Data Com" στη Νέα Ζηλανδία και ρωτούσα αν θα μπορούσα να κερδίσω χρήματα στο σχολείο, παίρνοντας το σπίτι αργά το λεωφορείο, περίπου 25 χιλιόμετρα καθημερινής μετακίνησης, τοποθετώντας χαρτί σε εκτυπωτές και ταινίες σε ταινίες και απλώς γενικός διαχειριστής. Και περίεργα μου έδωσαν δουλειά. Αλλά με την πάροδο του χρόνου, κατάφερα να βρω τον εαυτό μου στο προσωπικό και να βρω τους προγραμματιστές και συνειδητοποίησα ότι μου άρεσε η κωδικοποίηση και πέρασε τη διαδικασία εκτέλεσης σεναρίων και εργασιών παρτίδας, οι οποίες στο τέλος της ημέρας εξακολουθούν να είναι κώδικες. Πρέπει να γράψετε σενάρια και εργασίες δέσμης που μοιάζουν με μίνι προγράμματα και στη συνέχεια να περάσετε όλη τη διαδικασία συνεδρίασης σε ένα τερματικό γράψιμο 3270 κώδικα με το χέρι.

Στην πραγματικότητα, η πρώτη μου εμπειρία ήταν σε τερματικό τηλετύπου, ο οποίος ήταν φυσικός φυσικός εκτυπωτής με 132 στήλες. Ουσιαστικά, σκεφτείτε σαν μια πολύ παλιά γραφομηχανή με χαρτί που κυλούσε μέσα από αυτό, γιατί δεν είχαν σωλήνα CRT. Και ο κώδικας εντοπισμού σφαλμάτων σε αυτό ήταν ένα πολύ μη τετριμμένο ζήτημα, οπότε τείνετε να γράφετε όλο τον κώδικα με το χέρι και στη συνέχεια να ενεργείτε σαν δακτυλογράφος, κάνοντας το καλύτερό σας για να μην πάρετε λάθη για να γλιστρήσετε, γιατί είναι εξαιρετικά απογοητευτικό να πρέπει να πείτε ο επεξεργαστής μιας γραμμής για να μεταβείτε σε μια συγκεκριμένη γραμμή και στη συνέχεια να εκτυπώσετε τη γραμμή και στη συνέχεια να την πληκτρολογήσετε ξανά. Αλλά μια φορά και έναν καιρό, έτσι γράψαμε τον κώδικα και έτσι ξεκαθαρίσαμε και πήραμε πολύ, πολύ καλό σε αυτό. Και στην πραγματικότητα, μας ανάγκασαν να έχουμε πολύ καλές τεχνικές προγραμματισμού, γιατί ήταν μια πραγματική ταλαιπωρία για να το διορθώσουμε. Αλλά το ταξίδι έπειτα πέρασε - και όλοι μας το γνωρίζουμε - πήγε από την εμπειρία τερματικού 3270 στον κόσμο μου, στον Ψηφιακό Εξοπλισμό VT220 όπου θα μπορούσατε να δείτε τα πράγματα στην οθόνη, αλλά και πάλι κάνατε το ίδιο πράγμα κάνατε στην χαρτοταινία τυπωμένη μορφή μόνο σε ένα CRT, αλλά μπορείτε να διαγράψετε πιο εύκολα και δεν είχατε αυτόν τον ήχο "dit dit dit dit".

Και τότε ξέρετε, τα τερματικά Wyse - όπως το Wyse 150, ίσως το αγαπημένο μου περιβάλλον εργασίας με έναν υπολογιστή ποτέ - και στη συνέχεια το PC και στη συνέχεια το Mac, και στη συνέχεια αυτές τις μέρες σύγχρονα GUIs και ταυτότητες που βασίζονται στο web. Και μια σειρά από προγράμματα μέσω αυτού, τον προγραμματισμό σε ένα και το assembler και PILOT και το λογότυπο και Lisp και Fortran και Pascal και γλώσσες που θα μπορούσαν να κάνουν τους ανθρώπους να χτυπήσουν. Αλλά αυτές είναι οι γλώσσες που σε ανάγκασε να γράψεις καλό κώδικα. δεν σας άφησαν να ξεφύγετε από κακές πρακτικές. C, C ++, Java, Ruby, Python - και φτάνουμε σε αυτό το στάδιο προγραμματισμού, παίρνουμε περισσότερο σενάριο, πλησιάζουμε και πλησιάζουμε στη δομημένη γλώσσα ερωτημάτων και σε γλώσσες όπως η PHP που στην πραγματικότητα χρησιμοποιούνται για την επίκληση SQL. Το σημείο που σας λέει ότι προέρχεται από το υπόβαθρό μου ήταν αυτοδίδακτος με πολλούς τρόπους και εκείνοι που με βοήθησαν να μάθω, μου διδάσκουν πολύ καλές πρακτικές προγραμματισμού και πολύ καλές πρακτικές γύρω από το σχεδιασμό και τις διαδικασίες για να βεβαιωθώ ότι δεν το έκανα εισαγάγετε κώδικα buggy.

Οι μέθοδοι προγραμματισμού αυτές τις μέρες, πράγματα όπως, για παράδειγμα, Δομημένη γλώσσα ερωτήματος, SQL, είναι μια πολύ ισχυρή και απλή γλώσσα ερωτήσεων. Αλλά το έχουμε μετατρέψει σε γλώσσα προγραμματισμού και δεν πιστεύω πραγματικά ότι το SQL σχεδιάστηκε ποτέ για να είναι μια σύγχρονη γλώσσα προγραμματισμού, αλλά το έχουμε στρεβλώσει για να γίνει αυτό. Και αυτό εισάγει μια ολόκληρη σειρά θεμάτων, γιατί όταν σκεφτόμαστε από δύο απόψεις: από την άποψη της κωδικοποίησης και από την άποψη της DBA. Είναι πολύ εύκολο να έρθετε μαζί και να εισαγάγετε σφάλματα για πράγματα όπως απλά κακές τεχνικές προγραμματισμού, τεμπέληδες προσπάθειες στο γράψιμο κώδικα, έλλειψη εμπειρίας, το κλασικό pet peeve που έχω για παράδειγμα με τους ανθρώπους SQL άλματα στο Google και ψάχνοντας για κάτι και βρίσκοντας έναν ιστότοπο πήρατε ένα παράδειγμα και κάνατε ένα αντίγραφο και επικόλληση του υπάρχοντος κώδικα. Και στη συνέχεια να αναπαραγάγει μια κακή κωδικοποίηση, κακή πρακτική και να την θέσει σε παραγωγή, επειδή συμβαίνει μόνο να τους δώσει τα αποτελέσματα που θέλουν. Έχετε λοιπόν άλλες προκλήσεις, για παράδειγμα, αυτές τις μέρες σπεύδουμε προς την κατεύθυνση αυτή, αυτό που αποκαλούμε μηδέν: προσπαθούμε να κάνουμε τα πάντα τόσο φθηνά και τόσο γρήγορα, ότι έχουμε ένα σενάριο όπου δεν χρησιμοποιούμε χαμηλότερα -πληρωμένο προσωπικό. Και δεν το εννοώ με τρόπο ασήμαντο, αλλά δεν προσλαμβάνουμε εμπειρογνώμονες για κάθε δυνατή δουλειά. Μια φορά κι έναν καιρό οτιδήποτε με τους υπολογιστές ήταν η επιστήμη πυραύλων. εμπλέκονταν σε πράγματα που έσπευσαν και ήταν πολύ δυνατά ή πήγαιναν στο διάστημα ή οι μηχανικοί ήταν άτομα με υψηλά προσόντα που είχαν κάνει πτυχία και είχαν αυστηρές εκπαιδευτικές ικανότητες που τους εμπόδισαν να κάνουν τρελά πράγματα.

Αυτές τις μέρες, υπάρχουν πολλοί λαοί που μπαίνουν στην ανάπτυξη και το σχεδιασμό και τη βάση δεδομένων που δεν είχαν χρόνια εμπειρίας, δεν είχαν απαραίτητα την ίδια εκπαίδευση ή υποστήριξη. Και έτσι τελειώνετε με ένα σενάριο μόνο του παραδοσιακού ερασιτέχνη έναντι του εμπειρογνώμονα. Και υπάρχει μια περίφημη γραμμή, δεν μπορώ πραγματικά να θυμηθώ ποιος δημιούργησε το απόσπασμα, η γραμμή πηγαίνει: "Αν νομίζετε ότι είναι δαπανηρή η πρόσληψη ενός ειδικού για να κάνετε μια δουλειά, περιμένετε μέχρι να μισθώσετε μερικούς ερασιτέχνες που δημιουργούν ένα πρόβλημα και εσείς πρέπει να το καθαρίσετε ". Και έτσι η SQL έχει αυτό το θέμα και είναι πολύ εύκολο να μάθει, είναι πολύ εύκολο στη χρήση. Αλλά δεν είναι, κατά τη γνώμη μου, μια τέλεια γλώσσα προγραμματισμού. Είναι πολύ εύκολο να κάνετε πράγματα όπως να κάνετε ένα επιλεγμένο αστέρι από όπου και να τραβήξετε όλα αυτά σε μια γλώσσα προγραμματισμού που είστε πιο άνετα, όπως PHP και Ruby ή Python, και να χρησιμοποιήσετε τη γλώσσα προγραμματισμού με την οποία είστε εξοικειωμένοι, να το κάνετε το χειρισμό δεδομένων, αντί να κάνει ένα πιο περίπλοκο ερώτημα στο SQL. Και το βλέπουμε πολύ, και τότε οι άνθρωποι αναρωτιούνται γιατί η βάση δεδομένων τρέχει αργά. είναι επειδή ένα εκατομμύριο άνθρωποι προσπαθούν να αγοράσουν ένα εισιτήριο από ένα ηλεκτρονικό σύστημα έκδοσης εισιτηρίων, όπου κάνει ένα επιλεγμένο αστέρι από οπουδήποτε.

Τώρα, αυτό είναι ένα πολύ ακραίο παράδειγμα, αλλά εσείς παίρνετε το σημείο από όλα αυτά. Έτσι, για να πιάσετε πραγματικά αυτό το σημείο στο σπίτι, εδώ είναι ένα παράδειγμα που φέρνω γύρω πολλά. Είμαι μεγάλος φίλος των μαθηματικών, αγαπώ τη θεωρία του χάους, μου αρέσουν τα σύνολα Mandelbrot. Στη δεξιά πλευρά υπάρχει μια παράδοση του σετ Mandelbrot, το οποίο είμαι βέβαιος ότι όλοι γνωρίζουμε. Και στο αριστερό χέρι υπάρχει ένα κομμάτι SQL που το κάνει πραγματικά. Τώρα, κάθε φορά που το έβαλα σε μια οθόνη κάπου, ακούω αυτό: "Ω Θεέ μου, κάποιος έκανε την σειρά Mandelbrot με SQL, είσαι σοβαρός; Αυτό είναι τρελό! "Λοιπόν, το όλο θέμα είναι να φανερωθεί αυτό που απλά περιγράφω εκεί, και αυτό είναι ναι, στην πραγματικότητα τώρα μπορείτε να προγραμματίσετε σχεδόν οτιδήποτε στην SQL. είναι μια πολύ ανεπτυγμένη, ισχυρή, σύγχρονη γλώσσα προγραμματισμού. Όταν αρχικά ήταν μια γλώσσα ερωτήματος, σχεδιάστηκε για να πάρει ακριβώς τα δεδομένα επάνω. Έτσι, τώρα έχουμε πολύ πολύπλοκες δομές και έχουμε αποθηκευμένες διαδικασίες, έχουμε εφαρμόσει μεθοδολογία προγραμματισμού σε μια γλώσσα και έτσι είναι πολύ εύκολο για κακή πρακτική προγραμματισμού, έλλειψη εμπειρίας, cut-and-paste code, το χαμηλόμισθο προσωπικό που προσπαθεί να είναι υψηλόβαθμο προσωπικό, οι άνθρωποι υποκρίνονται ότι ξέρουν, αλλά πρέπει να μάθουν στη δουλειά.

Ένα ολόκληρο φάσμα των πραγμάτων όπου ο προσδιορισμός κώδικα και αυτό που αναφέρουμε ως εντοπισμό σφαλμάτων, το οποίο δεν εντοπίζει τόσο σφάλματα που σταματούν τα προγράμματα να λειτουργούν, αλλά και σφάλματα που βλάπτουν το σύστημα και κακώς δομημένο κώδικα. Όταν κοιτάζετε αυτή την οθόνη τώρα, και νομίζετε, αυτό είναι ακριβώς, είναι κάπως χαριτωμένο και νομίζετε, "Πω, ποιο θα ήταν ένα μεγάλο γραφικό, θα ήθελα να το τρέξω αυτό". Φανταστείτε όμως ότι τρέχεις σε κάποιο κομμάτι επιχειρηματικής λογικής . Φαίνεται αρκετά τακτοποιημένο, αλλά μιλάει μια μαθηματική γραφική παράδοση της θεωρίας του χάους, αλλά όταν σκέφτεστε για το τι θα μπορούσε ενδεχομένως να χρησιμοποιηθεί σε κάποια επιχειρησιακή λογική, θα πάρετε την εικόνα πολύ γρήγορα. Και για να το δείξω πραγματικά - και λυπάμαι που τα χρώματα αντιστρέφονται, υποτίθεται ότι πρόκειται για ένα μαύρο φόντο και ένα πράσινο κείμενο για μια πράσινη οθόνη, αλλά μπορείτε ακόμα να το διαβάσετε.

Πήγα και είχα μια γρήγορη ματιά σε ένα παράδειγμα αυτού που θα μπορούσατε να κάνετε εάν είχατε πραγματικά τρελό και δεν είχε καμία απολύτως εμπειρία και ήρθε από ένα διαφορετικό υπόβαθρο προγραμματισμού και εφάρμοσε όμοιους του C ++ με SQL, για να δείξει πραγματικά το σημείο μου, πριν Παραδίδω στον επισκέπτη μας από την IDERA. Αυτό είναι ένα δομημένο ερώτημα που γράφτηκε όπως το C ++, αλλά είναι κωδικοποιημένο σε SQL. Και εκτελεί στην πραγματικότητα, αλλά εκτελείται για περίοδο τριών έως πέντε λεπτών. Και τραβάει φαινομενικά μια γραμμή δεδομένων από πολλαπλές βάσεις δεδομένων, πολλαπλές συνδέσεις.

Και πάλι, το όλο θέμα είναι ότι αν δεν διαθέτετε τα σωστά εργαλεία, αν δεν έχετε τις σωστές πλατφόρμες και περιβάλλοντα για να μπορέσετε να τα πιάσετε αυτά τα πράγματα και θα τεθούν σε παραγωγή, τότε έχετε 100.000 άτομα χτυπώντας ένα σύστημα κάθε μέρα ή ώρα ή λεπτό πολύ σύντομα καταλήγετε σε μια εμπειρία στο Τσερνομπίλ, όπου ο μεγάλος σίδηρος αρχίζει να λιώνει και να βυθίζεται στον πυρήνα του πλανήτη γιατί αυτό το κομμάτι κώδικα δεν πρέπει ποτέ να φτάσει στην παραγωγή. Τα συστήματά σας και τα εργαλεία σας, με συγχωρείτε, θα έπρεπε να το πάρουν πριν να πάει οπουδήποτε κοντά - ακόμη και μέσω της δοκιμαστικής διαδικασίας, ακόμη και μέσω της ενσωμάτωσης των συστημάτων UAT και συστημάτων, αυτό το κομμάτι του κώδικα πρέπει να ανασηκωθεί και να επισημανθεί, λέγοντας: "Κοίτα, αυτό είναι πολύ καλός κώδικας, αλλά ας πάρουμε ένα DBA για να σας βοηθήσουμε να δημιουργήσετε αυτό το δομημένο ερώτημα σωστά, γιατί ειλικρινά, αυτό είναι απλά άσχημο." Και η διεύθυνση URL είναι εκεί, μπορείτε να πάτε και να ρίξετε μια ματιά - το πιο σύνθετο ερώτημα SQL που γράψατε ποτέ. Γιατί με πιστέψτε, που πραγματικά καταρτίζει, τρέχει. Και αν κόψετε και επικολλήσετε αυτό και μπερδέψετε τη βάση δεδομένων, είναι κάτι που πρέπει να προσέξετε. αν έχετε τα εργαλεία για να παρακολουθήσετε τη βάση δεδομένων απλώς προσπαθήστε και να λιώσετε σε διάστημα τριών έως πέντε λεπτών, για να καλέσετε πάλι τι είναι μια γραμμή κειμένου.

Έτσι, για να συνοψίσω, με αυτό κατά νου, ολόκληρο το ιστορικό μου στην κωδικοποίηση μου έχει διδάξει ότι μπορείτε να δώσετε στους ανθρώπους ένα όπλο και αν δεν είναι προσεκτικοί αυτοί θα πυροβοληθούν στο πόδι? το τέχνασμα είναι να τους δείξει πού είναι ο μηχανισμός ασφαλείας. Με τα σωστά εργαλεία και το σωστό λογισμικό στα χέρια σας, αφού έχετε κάνει την κωδικοποίηση, μπορείτε να ελέγξετε τον κώδικα σας, να εντοπίσετε προβλήματα προφίλ του κώδικα, να βρείτε αποτελεσματικά ανεπιθύμητα σφάλματα που είναι θέματα επιδόσεων και όπως είπα νωρίτερα, μια φορά την φορά, θα μπορούσατε να το κάνετε κοιτάζοντας μια πράσινη οθόνη. Δεν μπορείτε πια? υπάρχουν εκατοντάδες χιλιάδες γραμμές κώδικα, υπάρχουν δεκάδες χιλιάδες εφαρμογές που αναπτύσσονται, υπάρχουν εκατομμύρια βάσεων δεδομένων σε ορισμένες περιπτώσεις, και ακόμη και οι σούπερ άνθρωποι δεν μπορούν να το κάνουν αυτό με το χέρι πια. Χρειάζεστε κυριολεκτικά το σωστό λογισμικό και τα σωστά εργαλεία στα χέρια σας και χρειάζεστε την ομάδα να χρησιμοποιεί αυτά τα εργαλεία, ώστε να μπορείτε να βρείτε αυτά τα θέματα και να τα αντιμετωπίσετε πολύ, πολύ γρήγορα, προτού φτάσετε στο σημείο, ενώ ο Δρ. Ο Robin Bloor υπογράμμισε ότι τα πράγματα είτε γίνονται καταστροφικά και τα πράγματα ανατιναλώνονται ή συνηθέστερα αρχίζουν να σας κοστίζουν πολλά δολάρια και πολύ χρόνο και προσπάθεια και καταστρέφουν το ηθικό και τα πράγματα όταν δεν μπορούν να βρουν γιατί για μεγάλο χρονικό διάστημα.

Και έχοντας αυτό κατά νου, θα παραδώσω τον καλεσμένο μας και ανυπομονώ να ακούσω πώς έχουν λύσει αυτό το ζήτημα. Και ιδιαίτερα το demo που σκέφτομαι ότι πρόκειται να λάβουμε. Eric, θα περάσω πίσω.

Eric Kavanagh: Εντάξει, Bert, πάρτε το μακριά.

Bert Scalzo: Εντάξει, ευχαριστώ. Ο Bert Scalzo εδώ από την IDERA, είμαι ο υπεύθυνος προϊόντων για τα εργαλεία της βάσης δεδομένων μας. Και θα μιλήσω για το σφάλμα. Νομίζω ότι ένα από τα πιο σημαντικά πράγματα που είπε ο Robin νωρίτερα - και είναι πολύ αλήθεια ότι το debugging είναι επαχθές και μη τετριμμένο, και όταν πηγαίνετε στην απομάκρυνση βάσεων δεδομένων είναι μια τάξη μεγέθους ακόμη πιο δαπανηρή και μη τετριμμένη - έτσι ήταν ένα σημαντικό απόσπασμα.

ΕΝΤΑΞΕΙ. Ήθελα να ξεκινήσω με την ιστορία του προγραμματισμού, επειδή πολλές φορές βλέπω ανθρώπους που δεν κάνουν σφάλματα, δεν χρησιμοποιούν ένα πρόγραμμα εντοπισμού σφαλμάτων, απλώς προγραμματίζουν με οποιαδήποτε γλώσσα χρησιμοποιούν και πολλές φορές θα μου πουν, "Αυτά τα προγράμματα εντοπισμού σφαλμάτων είναι καινούργια και δεν έχουμε αρχίσει να τα χρησιμοποιούμε ακόμα". Και λοιπόν που κάνω είναι να τους δείξω αυτό το χρονοδιάγραμμα, το είδος της προϊστορίας, το γήρας, το μεσαίωνα, το είδος από πού είμαστε όσον αφορά τις γλώσσες προγραμματισμού. Και είχαμε πολύ παλιές γλώσσες ξεκινώντας από το 1951 με κωδικό συναρμολόγησης, και Lisp και FACT και COBOL. Στη συνέχεια, μπαίνουμε στην επόμενη ομάδα, Pascals και Cs και στη συνέχεια στην επόμενη ομάδα, το C ++ και κοιτάξουμε όπου είναι αυτό το ερωτηματικό - αυτό το ερωτηματικό είναι περίπου ίσιο γύρω στο 1978 έως το 1980. Κάπου στο εύρος αυτό είχαμε οι οποίοι είναι διαθέσιμοι σε εμάς, και έτσι λέμε, "Δεν χρησιμοποιώ ένα πρόγραμμα εντοπισμού σφαλμάτων, γιατί αυτό είναι ένα από αυτά τα νέα πράγματα", τότε πρέπει να ξεκινήσατε τον προγραμματισμό, ξέρτε, στη δεκαετία του 1950, γιατί αυτό είναι το Μόνο έτσι θα ξεφύγετε από αυτό το αίτημα.

Τώρα το άλλο πράγμα που είναι αστείο για αυτό το γράφημα είναι η Dez μόλις έκανε ένα σχόλιο για την Grace Hopper, ήξερα πραγματικά Grace, έτσι είναι κάπως αστείο. Και τότε το άλλο πράγμα που γέλασα είναι ότι μίλησε για teletypes και κάθομαι εκεί πηγαίνοντας, "Ο άνθρωπος, αυτό ήταν το μεγαλύτερο άλμα που είχαμε ποτέ στην παραγωγικότητα, όταν πήγαμε από κάρτες σε teletypes, αυτό ήταν το μεγαλύτερο άλμα ποτέ. "Έτσι, και έχω προγραμματίσει σε όλες τις γλώσσες εδώ, συμπεριλαμβανομένης της SNOBOL, την οποία κανείς δεν έχει ακούσει ποτέ πριν, ήταν ένα CDC, Control Data Corporation, οπότε υποθέτω ότι παίρνω λίγο παλιό για αυτόν τον κλάδο .

Dez Blanchfield: επρόκειτο να πω ότι μας έχεις γευτεί πάρα πολύ.

Bert Scalzo: Ναι, σου λέω, νιώθω σαν τον παππού Simpson. Επομένως, κοιτάζω το debugging και υπάρχουν διάφοροι τρόποι για να κάνετε σφάλμα. Θα μπορούσατε να μιλάτε για αυτό που όλοι θεωρούμε παραδοσιακά να μπαίνουμε σε ένα πρόγραμμα εντοπισμού σφαλμάτων και να περνάμε στον κώδικα. Αλλά επίσης, οι άνθρωποι θα οργάνων τον κώδικα τους? αυτό είναι όπου μπορείτε να κολλήσετε δηλώσεις στον κώδικα σας και ίσως να παράγετε ένα αρχείο εξόδου, ένα αρχείο ιχνών ή κάτι τέτοιο, και έτσι μπορείτε να οργάνωση του κώδικα σας. Θα το έκανα αυτό ως σφάλμα, είναι λίγο πιο δύσκολο, ένας τρόπος να το κάνω, αλλά μετράει. Αλλά, επίσης, έχουμε τη διάσημη δήλωση εκτύπωσης: βλέπετε και οι άνθρωποι έβαζαν πραγματικά δηλώσεις εκτύπωσης και έχω δει πραγματικά ένα εργαλείο όπου - και είναι ένα εργαλείο βάσης δεδομένων - όπου αν δεν ξέρετε πώς να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων, πιέζετε ένα κουμπί και θα κολλήσει τις δηλώσεις εκτύπωσης σε όλο τον κώδικα για εσάς και στη συνέχεια, όταν τελειώσετε, πιέζετε ένα άλλο κουμπί και τα λουράκια έξω. Επειδή αυτός είναι ο τρόπος με τον οποίο πολλοί άνθρωποι εντοπίζουν σφάλματα.

Και ο λόγος για τον οποίο διορθώνουμε τα λάθη είναι διττός: καταρχάς, βρήκαμε πράγματα που καθιστούν τον κωδικό μας αναποτελεσματικό. Με άλλα λόγια, συνήθως αυτό σημαίνει ότι υπάρχει ένα λογικό λάθος ή χάσαμε μια επιχειρηματική απαίτηση, αλλά τι είναι, είναι ο κώδικας δεν είναι αποτελεσματικός? δεν κάνει ό, τι περίμενε να κάνει. Την άλλη φορά που πάμε και κάνουμε σφάλμα, είναι για αποτελεσματικότητα και αυτό θα μπορούσε να είναι ένα λογικό λάθος, αλλά τι είναι, έκανα το σωστό, απλά δεν έρχεται αρκετά γρήγορα. Τώρα, κάνω αυτό το σημείο επειδή ένας profiler είναι πιθανώς καλύτερος για αυτό το δεύτερο σενάριο και θα μιλήσουμε τόσο για debuggers όσο και για profilers. Επιπλέον, υπάρχει αυτή η έννοια του απομακρυσμένου εντοπισμού σφαλμάτων. αυτό είναι σημαντικό γιατί πολλές φορές, αν κάθεστε στον προσωπικό υπολογιστή σας και χρησιμοποιείτε ένα πρόγραμμα εντοπισμού σφαλμάτων, το οποίο χτυπά σε μια βάση δεδομένων όπου ο κώδικας εκτελείται πραγματικά στη βάση δεδομένων, κάνετε πραγματικά αυτό που ονομάζεται απομακρυσμένη αποσφαλμάτωση. Μπορεί να μην το συνειδητοποιήσετε, αλλά αυτό συμβαίνει. Και τότε, είναι πολύ συνηθισμένο με αυτούς τους debuggers να έχουν σημεία θραύσης, σημεία παρακολούθησης, να μπαίνουν και να περνούν και άλλα κοινά πράγματα, ότι θα τα παρουσιάσω σε ένα στιγμιότυπο οθόνης σε μια στιγμή.

Τώρα, προφίλ: μπορείτε να κάνετε το προφίλ με μερικούς διαφορετικούς τρόπους. Μερικοί άνθρωποι θα πουν ότι η καταγραφή του φόρτου εργασίας και η επανάληψη από όπου καταγράφει τα πάντα, ότι αυτό μετράει ως προφίλ. Η εμπειρία μου ήταν περισσότερο ότι είναι καλύτερα αν γίνει δειγματοληψία. Δεν υπάρχει κανένας λόγος να εντοπίζετε κάθε δήλωση, επειδή ορισμένες δηλώσεις μπορεί να τρέχουν τόσο γρήγορα που δεν σας νοιάζει, αυτό που πραγματικά προσπαθείτε να δείτε είναι, καλά, ποιες είναι αυτές που συνεχίζουν να εμφανίζονται ξανά και ξανά, επειδή τρέχουν πάρα πολύ. Έτσι, μερικές φορές ο χαρακτηρισμός μπορεί να σημαίνει δειγματοληψία αντί να τρέχει το όλο θέμα. Και τυπικά, θα πάρετε κάποιο είδος εξόδου που μπορείτε να χρησιμοποιήσετε, τώρα που θα μπορούσε να είναι οπτικό μέσα σε ένα αναπτυξιακό περιβάλλον IDE, όπου μπορεί να σας δώσει σαν ιστόγραμμα της απόδοσης των διαφόρων γραμμών κώδικα, αλλά θα μπορούσε ακόμα είναι ότι παράγει ένα αρχείο ιχνών.

Οι Profilers εμφανίστηκαν για πρώτη φορά το 1979. Έτσι, εκείνοι ήταν εδώ και πολύ καιρό. Εξαιρετική για την εξεύρεση πόρων ή για επιδόσεις, με άλλα λόγια, ότι η αποδοτικότητα. Σε γενικές γραμμές, είναι ξεχωριστό και ξεχωριστό από το πρόγραμμα εντοπισμού σφαλμάτων, αν και έχω δουλέψει με προγράμματα εντοπισμού σφαλμάτων που κάνουν και τα δύο ταυτόχρονα. Και ενώ οι profilers νομίζω ότι είναι το πιο ενδιαφέρον από τα δύο εργαλεία, αν αισθάνομαι ότι δεν αρκούν τα άτομα να εντοπίσουν σφάλματα, τότε σίγουρα δεν είναι αρκετά προφίλ ανθρώπων, γιατί ένας στους δέκα debuggers θα εμφανιστεί. Και αυτό είναι μια ντροπή, επειδή ο χαρακτηρισμός μπορεί πραγματικά να κάνει μια τεράστια διαφορά. Τώρα, γλώσσες βάσεων δεδομένων, όπως έχουμε μιλήσει νωρίτερα, έχετε SQL - και κάπως έχουμε αναγκάσει την στρογγυλή σφήνα στην τετράγωνη τρύπα εδώ και την ανάγκασε να γίνει γλώσσα προγραμματισμού - και την Oracle. Αυτό είναι το PL / SQL - αυτή είναι η διαδικαστική γλώσσα SQL - και ο SQL Server, είναι το Transact-SQL, είναι SQL-99, είναι SQL / PSM - για, νομίζω, είναι η διαδικασία Stored Module. Το Postgres του δίνει ένα άλλο όνομα, ένα άλλο όνομα DB2, το Informix, αλλά το σημείο είναι ότι όλοι έχουν εξαναγκάσει κατασκευές τύπου 3GL. με άλλα λόγια, οι βρόχοι FOR, σε μεταβλητές δηλώσεις και όλα τα άλλα πράγματα που είναι ξένα σε SQL είναι τώρα μέρος της SQL σε αυτές τις γλώσσες. Επομένως, πρέπει να μπορείτε να εντοπίσετε σφάλματα σε ένα PL / SQL ή ένα Transact-SQL όπως θα κάνατε με ένα πρόγραμμα Visual Basic.

Τώρα, τα αντικείμενα βάσης δεδομένων, αυτό είναι σημαντικό επειδή οι άνθρωποι θα πουν, "Ποιά πράγματα πρέπει να κάνω σε μια βάση δεδομένων;" Και η απάντηση είναι, καλά, ό, τι μπορείτε να αποθηκεύσετε στη βάση δεδομένων ως κώδικας - αν το κάνω T-SQL ή PL / SQL - και αποθηκεύω αντικείμενα στη βάση δεδομένων, είναι μάλλον μια αποθηκευμένη διαδικασία ή μια αποθηκευμένη λειτουργία. Αλλά υπάρχουν και οι σκανδαλισμοί: μια σκανδάλη είναι σαν μια αποθηκευμένη διαδικασία, αλλά πυρπολείται σε κάποιο είδος γεγονότος. Τώρα, μερικοί άνθρωποι με τους ενεργοποιητές τους θα βάλουν μια γραμμή κώδικα και θα καλέσουν μια αποθηκευμένη διαδικασία, ώστε να κρατήσουν όλο τον αποθηκευμένο κώδικα και τις διαδικασίες τους, αλλά είναι η ίδια ιδέα: εξακολουθεί να είναι η σκανδάλη που μπορεί να είναι αυτό που ξεκινάει το όλο πράγμα. Και στη συνέχεια ως Oracle, έχουν κάτι που ονομάζεται πακέτο, το οποίο μοιάζει με βιβλιοθήκη, αν θέλετε. Βάζετε 50 ή 100 αποθηκευμένες διαδικασίες σε μια ομαδοποίηση, που ονομάζεται πακέτο, έτσι είναι σαν μια βιβλιοθήκη. Έτσι, εδώ είναι το debugger ο παλιός τρόπος? αυτό είναι στην πραγματικότητα ένα εργαλείο που πραγματικά θα πάει μέσα και να κολλήσει όλες αυτές τις εντολές εντοπισμού σφαλμάτων στον κωδικό σας για σας. Έτσι, οπουδήποτε βλέπετε το μπλοκ εντοπισμού σφαλμάτων, μην καταργείτε, την αυτόματη εκκίνηση και τον εντοπισμό του εντοπισμού σφαλμάτων, όλα αυτά είχαν κολλήσει με κάποιο εργαλείο. Και οι γραμμές έξω από αυτό, που είναι η μειοψηφία του κώδικα, καλά, αυτή είναι η μη χειροκίνητη μέθοδος εντοπισμού σφαλμάτων.

Και ο λόγος που το φέρνω αυτό είναι, αν προσπαθείτε να το κάνετε αυτό με το χέρι, θα πληκτρολογήσετε περισσότερους κώδικες εντοπισμού σφαλμάτων για να βάλετε όλες αυτές τις δηλώσεις εκτύπωσης από ό, τι είστε με τον κώδικα. Έτσι, ενώ αυτό είναι δυνατό, και ενώ είναι καλύτερα από τίποτα, αυτός είναι ένας πολύ δύσκολος τρόπος για να εντοπίσουμε σφάλματα, ειδικά αφού τι γίνεται αν διαρκέσει 10 ώρες για να τρέξει αυτό το πράγμα και όπου έχει πρόβλημα είναι στη γραμμή τρία; Εάν κάναμε μια διαδραστική περίοδο εντοπισμού σφαλμάτων, θα ήμουν γνωστή στη γραμμή 3 - πέντε λεπτά μέσα σε αυτό - hey, υπάρχει πρόβλημα εδώ, μπορώ να το εγκαταλείψω. Αλλά με αυτό, θα πρέπει να περιμένω να τρέξει, μέχρι το τέλος και μετά θα πρέπει να δούμε ένα αρχείο ιχνών που πιθανόν να έχει όλες αυτές τις δηλώσεις εκτύπωσης σε αυτό και να προσπαθήσει να βρει τη βελόνα στο άχυρα. Και πάλι, αυτό είναι καλύτερο από το τίποτα, αλλά δεν θα ήταν ο καλύτερος τρόπος εργασίας. Τώρα, αυτό το αρχείο θα μοιάζει με αυτό που προήλθε από την προηγούμενη διαφάνεια. με άλλα λόγια, έτρεξα το πρόγραμμα και έχει μόλις πάρει μια δέσμη των δηλώσεων εκτύπωσης σε αυτό το αρχείο ανίχνευσης και μπορώ ή δεν μπορεί να σιφόνι μέσω αυτού και να βρω αυτό που πρέπει να βρω. Έτσι, πάλι, δεν είμαι τόσο σίγουρος ότι αυτός είναι ο τρόπος που θα θέλατε να εργαστείτε.

Τώρα, διαδραστικές εντολές debugger - και αν έχετε χρησιμοποιήσει κάτι όπως Visual Studio για να γράψετε προγράμματα ή Eclipse, είχατε debuggers και τα χρησιμοποιούσατε με τις άλλες γλώσσες σας - απλά δεν σκέφτηκα να τα χρησιμοποιήσετε εδώ με τη βάση δεδομένων σας. Και υπάρχουν εργαλεία εκεί έξω, όπως το DB Artisan και το Rapid SQL, αυτό είναι το Rapid SQL εδώ, το οποίο έχει ένα πρόγραμμα εντοπισμού σφαλμάτων και μπορείτε να δείτε στην αριστερή πλευρά, έχω μια αποθηκευμένη διαδικασία που ονομάζεται "check for duplicates". Βασικά, πρόκειται απλά να κοιτάξουμε και να δούμε αν έχω πολλές σειρές στο τραπέζι με τον ίδιο τίτλο ταινίας. Έτσι, η βάση δεδομένων είναι για ταινίες. Και θα μπορούσατε να δείτε στη δεξιά πλευρά, στο πάνω τρίτο, έχω τον πηγαίο κώδικα στο κέντρο, έχω τι λέγονται μεταβλητές ρολογιών μου και οι δίσκοι στοίβας κλήσεων μου, και στη συνέχεια στο κάτω μέρος, έχω κάποια μηνύματα εξόδου. Και τι είναι σημαντικό εδώ είναι, αν κοιτάξετε πάνω από το πρώτο κόκκινο βέλος, αν ποντίκι πάνω από μια μεταβλητή, μπορώ πραγματικά να δούμε τι αξία είναι εκείνη τη μεταβλητή εκείνη τη στιγμή, καθώς περνάω τον κώδικα. Και αυτό είναι πραγματικά χρήσιμο, και έπειτα μπορώ να βήμα μια γραμμή κάθε φορά μέσω του κώδικα, δεν έχω να πω εκτελέσει, θα μπορούσα να πω βήμα μια γραμμή, επιτρέψτε μου να δούμε τι συνέβη, βήμα μια άλλη γραμμή, επιτρέψτε μου να δούμε τι συνέβη, και το κάνω στη βάση δεδομένων. Και παρόλο που έχω καθίσει στο Rapid SQL στον υπολογιστή μου και η βάση δεδομένων μου βρίσκεται στο cloud, εξακολουθώ να μπορώ να κάνω αυτό το απομακρυσμένο εντοπισμό σφαλμάτων και να το δω και να το ελέγξω από εδώ και να κάνω λάθος όπως θα κάναμε με οποιαδήποτε άλλη γλώσσα.

Τώρα, το επόμενο βέλος εκεί - μπορείτε να δείτε το λίγο σαν βέλος που δείχνει προς τα δεξιά, προς αυτή την έξοδο του DBMS, εκεί που βρίσκεται ο δρομέας μου αυτή τη στιγμή - έτσι με άλλα λόγια, έχω περπατήσει και εκεί είμαι στο τη στιγμή. Έτσι, αν έλεγα, "Βήμα πάλι", θα πάω στην επόμενη γραμμή. Τώρα ακριβώς κάτω από αυτό θα δείτε την κόκκινη κουκκίδα. Λοιπόν, αυτό είναι ένα σημείο διακοπής, που λέει "Hey, δεν θέλω να πατήσω πάνω από αυτές τις γραμμές." Αν θέλω απλά να πηδήσω πάνω από όλα και να φτάσω εκεί όπου η κόκκινη κουκίδα, μπορώ να χτυπήσω το κουμπί Run και θα τρέξει από εδώ είτε στο τέλος, είτε σε ένα σημείο διακοπής, αν υπάρχουν σημεία διακοπής, και στη συνέχεια θα σταματήσει και επιτρέψτε μου να κάνω το stepping πάλι. Και ο λόγος για τον οποίο αυτό είναι σημαντικός και ισχυρός είναι ότι επειδή όταν κάνω όλα αυτά, αυτό που συμβαίνει στη μέση, ακόμα και στο κάτω μέρος - αλλά κυρίως στο μέσο - θα αλλάξει και μπορώ να δω τις αξίες από τις μεταβλητές μου, Μπορώ να δω το ίχνος κλήσης κλήσης μου, γνωρίζετε και έτσι όλες αυτές οι πληροφορίες εμφανίζονται εκεί καθώς περνάω τον κώδικα, έτσι μπορώ να δω και να αισθανθώ και να καταλάβω τι συμβαίνει και πώς είναι ο κώδικας στην πραγματικότητα που εργάζονται στον χρόνο εκτέλεσης. Και συνήθως μπορώ να βρω ένα πρόβλημα, αν υπάρχει, ή αν είμαι αρκετά καλός για να το πιάσω.

Εντάξει, τώρα πρόκειται να μιλήσω για προφίλτρο, και σε αυτή την περίπτωση, αυτό είναι ένα profiler που μπορώ να δω μέσα από ένα debugger. Θυμάστε ότι είπα ότι μερικές φορές είναι ξεχωριστές και μερικές φορές μπορούν να είναι μαζί; Σε αυτή την περίπτωση, και πάλι, είμαι σε Rapid SQL, και μπορώ να δω ότι υπάρχει ένα περιθώριο, στην αριστερή πλευρά, δίπλα στους αριθμούς γραμμών. Και αυτό είναι ότι είναι ο αριθμός των δευτερολέπτων ή των μικροδευτερολέπτων που χρειάστηκε για να εκτελέσει κάθε γραμμή κώδικα και μπορώ να το δω με σαφήνεια, όλος ο χρόνος μου δαπανάται σε αυτόν τον βρόχο FOR όπου επιλέγουμε τα πάντα από έναν πίνακα . Έτσι, ό, τι συμβαίνει μέσα σε αυτόν τον βρόχο FOR είναι πιθανώς κάτι που πρέπει να εξετάσω, και αν μπορώ να το βελτιώσω, θα πληρώσει μερίσματα. Δεν πρόκειται να πάρω καμία βελτίωση με την εργασία σε αυτές τις γραμμές που έχουν σαν 0.90 ή 0.86? δεν υπάρχει πολύς χρόνος που δαπανάται εκεί. Τώρα, σε αυτή την περίπτωση, και πάλι, είμαι σε Rapid SQL, βλέπετε πώς μπορώ να κάνω προφίλ που αναμειγνύεται με το σφάλμα μου. Τώρα, τι είναι ωραίο είναι το Rapid SQL σας επιτρέπει επίσης να το κάνετε αντίστροφα. Η γρήγορη SQL σάς επιτρέπει να πείτε: "Ξέρεις τι; Δεν θέλω να είμαι στον αποστολέα, θέλω απλώς να τρέξω αυτό και έπειτα θέλω να κοιτάξω γραφικά ή οπτικά την ίδια πληροφορία ».

Και μπορείτε να δείτε ότι δεν είμαι πλέον στο πρόγραμμα εντοπισμού σφαλμάτων και τρέχει το πρόγραμμα και μετά την εκτέλεση γίνεται, μου δίνει χάρτες για να μου πείτε τα πράγματα έτσι ώστε να μπορώ να δω ότι έχω μια δήλωση που μοιάζει να παίρνει το μεγαλύτερο μέρος του διαγράμματος πίτας και αν κοιτάω, βλέπω σε εκείνο το πλέγμα προς τα κάτω, γραμμή 23, υπάρχει και πάλι ο βρόχος FOR: παίρνει τον περισσότερο χρόνο, είναι στην πραγματικότητα εκείνο το σκούρο κόκκινο που μαστίζει όλο το διάγραμμα πίτας. Και έτσι, αυτός είναι ένας άλλος τρόπος για να κάνουμε το σχηματισμό προφίλ. Ονομάζουμε "Αναλυτής Κώδικα" στο εργαλείο μας. Αλλά είναι βασικά μόνο ένας profiler που χωρίζεται από ένα πρόγραμμα εντοπισμού σφαλμάτων. Μερικοί άνθρωποι θέλουν να το κάνουν αυτό τον πρώτο τρόπο, μερικοί άνθρωποι θέλουν να το κάνουν με τον δεύτερο τρόπο.

Γιατί κάνουμε εντοπισμό σφαλμάτων και δημιουργία προφίλ; Δεν είναι επειδή θέλουμε να γράψουμε τον μεγαλύτερο κωδικό του κόσμου και να πάρουμε μια αύξηση των αποδοχών - αυτό μπορεί να είναι ο λόγος μας, αλλά αυτό δεν είναι πραγματικά ο λόγος που το κάνετε - υποσχέθηκες στην επιχείρηση που θα κάνατε κάτι σωστά, ότι το πρόγραμμά σας θα είναι αποτελεσματικό. Αυτό θα χρησιμοποιήσετε για το debugger. Επιπλέον, οι τελικοί χρήστες των επιχειρήσεων? δεν είναι πολύ υπομονετικοί: θέλουν αποτελέσματα ακόμα και πριν πιέσουν το κλειδί. Πρέπει να διαβάσουμε το μυαλό τους και να κάνουμε τα πάντα αμέσως. Με άλλα λόγια, πρέπει να είναι αποτελεσματική. Και γι 'αυτό θα χρησιμοποιούσαμε τον profiler. Τώρα, χωρίς αυτά τα εργαλεία, πραγματικά πιστεύω ότι είστε αυτός ο τύπος στο κοστούμι με το τόξο και το βέλος και γυρίζετε στο στόχο και είστε δεμένα με τα μάτια. Γιατί πώς θα διαπιστώσετε πώς εκτελείται ένα πρόγραμμα απλά κοιτάζοντας τον στατικό κώδικα και πώς θα καταλάβετε ποια γραμμή είναι εκεί που πραγματικά θα ξοδέψει τον περισσότερο χρόνο στην εκτέλεση, και πάλι, κοιτάζοντας απλά τον στατικό κώδικα; Μια αναθεώρηση κώδικα μπορεί ή δεν μπορεί να εμφανίσει κάποια από αυτά τα πράγματα, αλλά δεν υπάρχει καμία εγγύηση ότι μια αναθεώρηση κώδικα θα τα βρει όλα. Χρησιμοποιώντας ένα πρόγραμμα εντοπισμού σφαλμάτων και ένα profiler θα πρέπει να μπορείτε να βρείτε όλα αυτά τα σφάλματα.

Εντάξει, πρόκειται απλά να κάνω ένα πραγματικό γρήγορο demo εδώ. Δεν είναι η πρόθεσή μου να προωθήσω το προϊόν, θέλω απλώς να σας δείξω τι μοιάζει με ένα πρόγραμμα εντοπισμού σφαλμάτων 'γιατί πολλές φορές οι άνθρωποι θα πουν, ' δεν έχω δει ποτέ ένα από αυτά πριν. '' Και φαίνεται όμορφη στην οθόνη στιγμιότυπων διαφανειών, αλλά πώς μοιάζει όταν είναι σε κίνηση; Έτσι, εδώ στην οθόνη μου τρέχω το προϊόν μας DB Artisan. έχουμε επίσης ένα πρόγραμμα εντοπισμού σφαλμάτων. Το DB Artisan εννοείται περισσότερο για DBA, το Rapid SQL είναι περισσότερο για τους προγραμματιστές, αλλά έχω δει developers που χρησιμοποιούν DB Artisan, και έχω δει DBAs που χρησιμοποιούν Rapid. Έτσι, μην πιάσετε το προϊόν. Και εδώ, έχω την επιλογή να κάνω μια εντοπισμό σφαλμάτων, αλλά προτού να ξεκινήσω την αποκατάσταση, θα εξαγάγω αυτόν τον κώδικα έτσι ώστε να μπορέσετε να δείτε πώς φαίνεται ο κώδικας πριν αρχίσω να το εκτελώ. Έτσι, εδώ είναι ακριβώς ο ίδιος κώδικας που ήταν στο στιγμιότυπο οθόνης, αυτός είναι ο έλεγχος μου για διπλότυπα. Και θέλω να εντοπίσω αυτό το λάθος, επομένως πιέζω το σφάλμα. Και τώρα, παίρνει μια στιγμή και λέτε, "Λοιπόν, γιατί παίρνει μια στιγμή;" Θυμηθείτε το απομακρυσμένο σφάλμα: το σφάλμα συμβαίνει στην πραγματικότητα στο διακομιστή βάσης δεδομένων μου, όχι στον υπολογιστή μου. Έτσι, έπρεπε να μεταβεί και να δημιουργήσει μια σύνοδο εκεί, να δημιουργήσει ένα απομακρυσμένο θέμα εντοπισμού σφαλμάτων, να συνδέσει τη συνεδρία μου με αυτή την απομακρυσμένη περίοδο εντοπισμού σφαλμάτων και να δημιουργήσει ένα κανάλι επικοινωνίας.

Έτσι, τώρα, εδώ είναι το βέλος μου, είναι εκεί πάνω στην κορυφή, από τη γραμμή ένα, εκεί είναι όπου είμαι στον κώδικα. Και αν πατήσω το τρίτο εικονίδιο εκεί, το οποίο είναι ένα βήμα μέσα, θα δείτε ότι το βέλος μόλις μετακινήθηκε, και αν συνεχίζω να το πιέζω, θα δείτε να συνεχίζεται. Τώρα, αν ήθελα να πάω σε όλο αυτό το βρόχο FOR, επειδή ξέρω ότι εκεί είναι το πρόβλημα, μπορώ να θέσω ένα σημείο διακοπής. Νόμιζα ότι το έβαλα αυτό. Ω πυροβολήσει, είχα ένα από τα πλήκτρα συλλαμβάνει την οθόνη μου στο ίδιο κλειδί με το πρόγραμμα εντοπισμού σφαλμάτων, αυτό προκαλεί τη σύγχυση. Εντάξει, οπότε έκανα μόνο ένα χειροκίνητο σημείο διακοπής, οπότε τώρα, αντί να κάνω ένα βήμα, βήμα, βήμα, βήμα μέχρι να φτάσω εκεί, μπορώ πραγματικά να πω, "Πήγαινε και τρέξε αυτό το πράγμα", και θα σταματήσει. Παρατηρήστε ότι με μετέφερε σε όλη τη διαδρομή προς το σημείο όπου είναι το σημείο διάλειμμα, έτσι είμαι τώρα στο πλαίσιο της λειτουργίας αυτού του βρόχου, μπορώ να δω τι όλες μεταβλητές μου έχουν ρυθμιστεί, η οποία δεν αποτελεί έκπληξη, γιατί εγώ τους προετοιμασμένα όλα στο μηδέν. Και τώρα, μπορώ να πάω σε αυτό το βρόχο και να αρχίσω να κοιτάζω τι συμβαίνει μέσα σε αυτόν τον βρόχο.

Έτσι, τώρα πρόκειται να κάνει μια επιλεκτική καταμέτρηση από τα ενοίκια μου και μπορώ να ποντάρω πάνω σε αυτόν τον τύπο και να δούμε, είναι δύο, δύο είναι μεγαλύτερα από ένα, οπότε πιθανότατα πρόκειται να κάνει το επόμενο κομμάτι αυτού του κώδικα. Με άλλα λόγια, βρήκε κάτι. Πάω να προχωρήσω και να αφήσω να τρέξει. Δεν θέλω να περάσω από όλα εδώ. αυτό που θέλω να σας δείξω είναι όταν κάνει ένα πρόγραμμα εντοπισμού σφαλμάτων, τελειώνει ακριβώς όπως ένα κανονικό πρόγραμμα. Έχω το σημείο διακοπής, έτσι όταν είπα τρέχει, πήγε ακριβώς πίσω στο επόμενο σημείο διακοπής. Το αφήνω να τρέξει μέχρι το τέλος, γιατί αυτό που θέλω να δεις είναι ότι ένα πρόγραμμα εντοπισμού σφαλμάτων δεν αλλάζει τη συμπεριφορά του προγράμματος: όταν τελειώσει η εκτέλεση, θα έπαιρνα ακριβώς τα ίδια αποτελέσματα αν δεν το έχω τρέξει μέσα σε ένα πρόγραμμα εντοπισμού σφαλμάτων.

Και με αυτό, πρόκειται να αναστείλω το demo και να επιστρέψω γιατί θέλουμε να διασφαλίσουμε ότι έχουμε χρόνο για ερωτήσεις και απαντήσεις. Και θα το ανοίξω για ερωτήσεις και απαντήσεις.

Eric Kavanagh: Εντάξει, Robin, ίσως μια ερώτηση από εσάς και στη συνέχεια ένα ζευγάρι από Dez;

Robin Bloor: Ναι, βέβαια, βρήκα αυτό το συναρπαστικό, βέβαια. Έχω δουλέψει με τέτοια πράγματα, αλλά ποτέ δεν έχω εργαστεί με κάτι τέτοιο στη βάση δεδομένων. Μπορείτε να μου δώσετε κάποια ιδέα για το τι χρησιμοποιούν οι χρήστες για το profiler; Επειδή είναι σαν να κοιτάζουν - γιατί υποθέτω ότι είναι - κοιτάζουν τα θέματα επιδόσεων, πρόκειται να σας βοηθήσει να διακρίνετε πότε μια βάση δεδομένων χρειάζεται χρόνο και πότε ένας κώδικας χρειάζεται χρόνο;

Bert Scalzo: Ξέρετε, αυτή είναι μια φανταστική ερώτηση. Ας πούμε ότι δουλεύω στη Visual Basic, και εγώ, μέσα στην Visual Basic μου, θα κάνω κλήση ενός Transact-SQL ή ενός PL / SQL. Επιτρέψτε μου να κάνω το PL / SQL, δεδομένου ότι η Oracle δεν παίζει καλά πάντα με τα εργαλεία της Microsoft. Μπορεί να προφίλ μου κώδικα Visual Basic, και το προφίλ εκεί μπορεί να πει, "Γεια σου, ονομάζαμε αυτή την αποθηκευμένη διαδικασία και πήρε πάρα πολύ καιρό." Αλλά τότε μπορώ να πάω στην αποθηκευμένη διαδικασία και μπορώ να κάνω ένα προφίλ βάσης δεδομένων για το αποθηκευμένο διαδικασία και να πει, "Εντάξει, από τις 100 δηλώσεις που βρίσκονται εδώ, εδώ είναι οι πέντε που προκάλεσαν το πρόβλημα." Έτσι, ίσως χρειαστεί να κάνετε μια ομάδα ετικετών, όπου θα πρέπει να χρησιμοποιήσετε πολλαπλές προφίλ.

Η ιδέα είναι εάν έχετε πάντα πει ότι το πρόβλημα απόδοσης είναι στη βάση δεδομένων σας, ένα προφίλ βάσης δεδομένων μπορεί να σας βοηθήσει να βρείτε τη βελόνα στο άχυρο, στην οποία οι δηλώσεις είναι στην πραγματικότητα εκείνες όπου έχετε κάποιο πρόβλημα. Σας λέω ένα άλλο πράγμα που εμφανίστηκε με το προφίλ: εάν έχετε ένα κομμάτι κώδικα που αποκαλείται εκατομμύριο φορές, αλλά χρειάζεται μόνο ένα μικροδευτερολέμμα κάθε ένα εκατομμύριο φορές, αλλά αποκαλείται εκατομμύριο φορές, αυτό που θα έδειχνε ο προφίλ, αυτό το πράγμα έτρεξε για πολλές μονάδες χρόνου. Και έτσι, ενώ ο κώδικας μπορεί να είναι πολύ αποδοτικός, ίσως να κοιτάξετε και να πείτε, "Ω, κάνουμε αυτή την κλήση σε αυτό το κομμάτι κώδικα πολύ συχνά. Ίσως θα πρέπει να το ονομάζουμε κάθε τόσο συχνά, παρά κάθε φορά που επεξεργαζόμαστε ένα ρεκόρ, "ή κάτι τέτοιο. Και έτσι μπορείτε πραγματικά να βρείτε εκεί που υπάρχει αποτελεσματικός κώδικας που μόλις καλείται πολύ συχνά, και αυτό είναι στην πραγματικότητα ένα πρόβλημα απόδοσης.

Robin Bloor: Ναι, αυτό είναι υπέροχο. Δεν έχω κάνει ποτέ αυτό. Βλέπετε, βέβαια, όταν είχα προβλήματα με τη βάση δεδομένων ήταν σαν να κάναμε με τον ένα ή τον άλλο τρόπο να ασχολούμαστε με βάση δεδομένων ή να ασχολούμαστε με τον κώδικα. Δεν θα μπορούσα ποτέ να τα αντιμετωπίσω ταυτόχρονα. Αλλά εκεί, και πάλι, δεν το έκανα ποτέ - ποτέ δεν έχω συμμετάσχει στην κατασκευή εφαρμογών όπου είχαμε αποθηκεύσει διαδικασίες, έτσι υποθέτω ότι ποτέ δεν έχω αντιμετωπίσει πραγματικά προβλήματα που με οδηγούσαν άγρια, την ιδέα ότι εσύ 'd χώρισα τον κώδικα μεταξύ μιας βάσης δεδομένων και ενός προγράμματος. Αλλά, λοιπόν, υποθέστε ότι η απάντηση θα είναι ναι, αλλά αυτό είναι μέρος μιας δραστηριότητας της ομάδας ανάπτυξης, όταν είστε με τον ένα ή τον άλλο τρόπο προσπαθώντας να διορθώσετε κάτι που έχει σπάσει ή ίσως να προσπαθήσετε να φέρετε ένα νέο εφαρμογή μαζί. Αλλά το κάνει όλα αυτά με όλα τα άλλα συστατικά που περιμένω στο περιβάλλον; Μπορώ να περιμένω ότι θα μπορούσα να αποσυνδέσω αυτό μαζί με όλα τα πακέτα δοκιμών μου και όλα αυτά τα άλλα πράγματα που θα έκανα και με τα πράγματα διαχείρισης έργου μου, είναι ότι όλα αυτά τα κλιπ μαζί;

Bert Scalzo: Ναι, μπορεί να γίνει μέρος οποιασδήποτε δομημένης διαδικασίας για να κάνετε τις προγραμματιστικές ή αναπτυξιακές σας προσπάθειες. Και είναι αστείο, την περασμένη εβδομάδα είχα έναν πελάτη που χτίζονταν μια εφαρμογή στο διαδίκτυο και η βάση δεδομένων τους ήταν μικρή ιστορικά και έτσι το γεγονός ότι δεν ήταν πολύ καλοί προγραμματιστές ποτέ δεν τους έβλαρε. Λοιπόν, η βάση δεδομένων τους έχει αυξηθεί με την πάροδο των ετών, και τώρα χρειάζονται 20 δευτερόλεπτα σε μια ιστοσελίδα, μεταξύ όταν λέτε "Συνδεθείτε με και δώστε μου κάποια δεδομένα για να δείτε" και όταν η οθόνη στην πραγματικότητα έρχεται, και έτσι τώρα είναι ένα πρόβλημα απόδοσης. Και ήξεραν ότι το πρόβλημα δεν ήταν σε καμία από την Java ή σε κανένα από αυτά τα άλλα μέρη. Αλλά είχαν χιλιάδες αποθηκευμένες διαδικασίες και έτσι έπρεπε να ξεκινήσουν να προβάλλουν τις αποθηκευμένες διαδικασίες για να μάθουν γιατί είναι αυτή η ιστοσελίδα να πάρει 20 δευτερόλεπτα για να βγει; Και βρήκαμε ότι είχαν καρτεσιανή συμμετοχή σε μία από τις επιλεγμένες δηλώσεις τους και δεν το γνώριζαν.

Robin Bloor: Πάει.

Bert Scalzo: Αλλά κάποιος μου είπε μια φορά, "Πως θα μπορούσαν να έχουν μια καρτεσιανή ένωση και να μην το ξέρουν;" Και αυτό θα ακούγεται πραγματικά φρικτό? μερικές φορές ένας προγραμματιστής που δεν είναι πολύ άνετος με την SQL θα κάνει κάτι σαν να μου δώσει ένα Cartesian join, αλλά έπειτα μόνο να μου δώσει πίσω το πρώτο ρεκόρ, έτσι ξέρω ότι έχω κάτι και χρειάζομαι μόνο το πρώτο. Και έτσι, δεν συνειδητοποιούν ότι έφεραν μόλις ένα δισεκατομμύριο ρεκόρ ή βλέπουν ένα δισεκατομμύριο ρεκόρ, γιατί πήραν εκείνο που τους ενδιαφέρει.

Robin Bloor: Ουάου, ξέρω, αυτό είναι που λέγεται … καλά, αυτό είναι που έκανε ο Dez για, σε όρους ανθρώπων που δεν είναι εξίσου εξειδικευμένοι, ίσως πρέπει να είναι, ξέρετε. Εάν είστε προγραμματιστής, πρέπει να γνωρίζετε ποιες είναι οι συνέπειες από την έκδοση οποιασδήποτε εντολής. Θέλω να πω, πραγματικά, δεν υπάρχει δικαιολογία ότι το επίπεδο της βλακείας. Υποθέτω επίσης ότι είστε, κατά τον ένα ή τον άλλο τρόπο, απλώς γλωσσικό αγνωστικιστής σε σχέση με αυτό, επειδή όλα αυτά επικεντρώνονται στην πλευρά της βάσης δεδομένων. Έχω δίκιο σε αυτό; Είναι ακριβώς το ίδιο, ό, τι χρησιμοποιείτε στην πλευρά κωδικοποίησης;

Bert Scalzo: Απολύτως, μπορείτε να το κάνετε αυτό στο Fortran ή C ή C ++. Στην πραγματικότητα, σε μερικά Unixes μπορείτε να το κάνετε και για τις γλώσσες scripting τους. στην πραγματικότητα παρέχουν τα ίδια εργαλεία. Και τότε θέλω να επιστρέψω ένα δευτερόλεπτο για αυτό που είπατε χωρίς δικαιολογία. Θα δώσω στους προγραμματιστές ένα διάλειμμα, γιατί δεν μου αρέσει να ρίχνω προγραμματιστές κάτω από το λεωφορείο. Αλλά το πρόβλημα είναι πραγματικά το ακαδημαϊκό περιβάλλον, επειδή όταν πηγαίνετε να μάθετε πώς να είστε προγραμματιστής, διδάσκετε το ρεκόρ στο χρόνο. Δεν διδάσκετε το σκεπτόμενο σκέψης και αυτή είναι η δομημένη γλώσσα ερωτήματος ή η SQL λειτουργεί με σύνολα. αυτός είναι ο λόγος για τον οποίο έχουμε την ένωση, τον τερματισμό και τον χειριστή μείον. Και είναι πολύ δύσκολο μερικές φορές για ένα άτομο που δεν σκέφτηκε ποτέ από την άποψη των συνόλων, να σταματήσει, να αφήσει να κάνει ρεκόρ σε χρόνο επεξεργασίας και να δουλέψει με σύνολα.

Robin Bloor: Ναι, είμαι μαζί σου για αυτό. Θέλω να πω, παίρνω τώρα, αυτό είναι ένα εκπαιδευτικό ζήτημα. Νομίζω ότι αυτό είναι ένα θέμα εκπαίδευσης, νομίζω ότι είναι φυσικό οι προγραμματιστές να σκέφτονται διαδικαστικά. Και το SQL δεν είναι διαδικαστικό, είναι δηλωτικό. Στην πραγματικότητα λέτε απλώς, "Αυτό είναι που θέλω και δεν με νοιάζει πώς το κάνετε", ξέρετε; Ενώ με τις γλώσσες προγραμματισμού έχετε συχνά πάρει τα μανίκια σας τυλιγμένα και είστε κάτω στο minutiae ακόμη και τη διαχείριση των μετρήσεων, ενώ κάνετε ένα βρόχο. Θα παραδώσει -

Bert Scalzo: Όχι, OK, συνεχίστε.

Ναι, επρόκειτο να σας πω ότι έφερα ένα άλλο παράδειγμα ότι ένας προφίλτρος θα ήταν καλό να παγιδεύει το είδος που συνεχίζεται με αυτή την επεξεργασία σε χρόνο-χρόνο. Μερικές φορές, ένας προγραμματιστής που είναι καλός σε λογική ρεκόρ, δεν μπορεί να καταλάβει πώς να κάνει πρόγραμμα SQL. Λοιπόν, ας πούμε ότι κάνει δύο FOR loops και βασικά κάνει ένα join, αλλά το κάνει στην πλευρά του πελάτη. Έτσι, κάνει το ίδιο αποτέλεσμα με ένα join, αλλά το κάνει και ο ίδιος, και ένα προφίλ θα το πιάσει αυτό, γιατί πιθανότατα θα καταλήξετε να αφιερώσετε περισσότερο χρόνο κάνοντας το join χειροκίνητα από το να αφήσετε το διακομιστή βάσης δεδομένων να το κάνει για σας.

Robin Bloor: Ναι, αυτό θα ήταν καταστροφή. Θέλω να πω, απλά θα πετούσατε. Ο θρύλος είναι πάντα κακός.

Εν πάση περιπτώσει, θα περάσω στο Dez; Είμαι βέβαιος ότι έχει μερικές ενδιαφέρουσες ερωτήσεις.

Dez Blanchfield: Σας ευχαριστώ, ναι, το κάνω. Θα έρθω μαζί σας στο να μην πετάω προγραμματιστές κάτω από το λεωφορείο. Θέλω να πω, έχω περάσει πάρα πολλά χρόνια στη ζωή μου να είμαι ένας κωδικοποιητής ο ίδιος, σε κάθε επίπεδο, ξέρετε, αν είναι όπως είπατε, καθισμένος στη γραμμή εντολών της μηχανής Unix, και σε ορισμένες περιπτώσεις, ήμουν ακόμη και εμπλεκόμενος σε μερικές διαφορετικές θύρες του Unix από μια πλατφόρμα υλικού σε μια άλλη. Και μπορείτε να φανταστείτε τις προκλήσεις που είχαμε εκεί. Αλλά η πραγματικότητα είναι εδώ είναι ότι get-out-of-jail κάρτα για κάθε coder και scripter στον κόσμο. Είναι μια επιστήμη πυραύλων, κυριολεκτικά, να γράφω πραγματικά σφιχτά κάθε φορά, όλη την ώρα, είναι μια επιστήμη πυραύλων. Και διάσημες ιστορίες από ανθρώπους όπως ο Dennis Ritchie και ο Brian Kernahan που δουλεύουν σε κάποιο κομμάτι κώδικα ανεξάρτητα και έπειτα γυρνούν σε μια αναθεώρηση κώδικα μέσω κουβέντας πάνω από έναν καφέ και βρίσκοντας ότι είχαν γράψει ακριβώς το ίδιο κομμάτι κώδικα στο ίδιο ακριβώς πρόγραμμα, με τον ίδιο ακριβώς τρόπο. Και το έκαναν στο Γ. Αλλά αυτό το καθαρό επίπεδο προγραμματισμού υπάρχει πολύ σπάνια.

Το γεγονός είναι ότι σε καθημερινή βάση, υπάρχουν μόνο 24 ώρες την ημέρα, επτά ημέρες την εβδομάδα, και απλά πρέπει να κάνουμε πράγματα. Και έτσι, όσον αφορά όχι μόνο τους παραδοσιακούς προγραμματιστές, τους DBAs, τους κωδικοποιητές, τους scripters και τους sysadmin, τους διαχειριστές δικτύων και το προσωπικό ασφαλείας, και όλα αυτά μέχρι την πλευρά των δεδομένων των πολιτών αυτές τις μέρες. ακούμε, όλοι προσπαθούν απλά να κάνουν τη δουλειά τους. Και λοιπόν νομίζω ότι το μεγάλο όνειρο από όλο αυτό το πράγμα είναι ότι αγαπούσα το demo σας και μου άρεσε πολύ που μας άφησες εκεί, μόλις πριν από λίγο, μιλώντας στον Robin για το γεγονός ότι αυτό έχει ένα συγκεκριμένο - ίσως όχι τόσο πολύ μια θέση - αλλά ένας ευρύς χώρος στον οποίο ισχύει, όσον αφορά τον καθορισμό κώδικα και SQL και βάσεις δεδομένων. Αλλά ήμουν πολύ ενθουσιασμένος που σας άκουσα να λέτε ότι θα μπορούσατε να το πιάσετε σε ένα σενάριο κελύφους και να βρείτε κάποια ζητήματα, γιατί ξέρετε ότι στη σημερινή εποχή δουλεύουμε πάντοτε με το χαμηλότερο κόστος σε όλα.

Ο λόγος που μπορείτε να αγοράσετε ένα πουκάμισο $ 6 κάπου, είναι επειδή κάποιος έχτισε ένα σύστημα αρκετά φτηνά για να κατασκευάσει και να αποστείλει και να προμηθεύσει και να προμηθεύσει και να πωλήσει με λιανικό εμπόριο και να κάνει online πληρωμές για να πάρει αυτό το πουκάμισο. Και αυτό δεν συμβαίνει εάν έχετε τους ανθρώπους να πληρώνονται 400.000 δολάρια ετησίως για να γράψουν κώδικα με τον τέλειο τρόπο. είναι απλώς μια ολόκληρη ανάπτυξη. Έτσι, αυτό το σημείο, υποθέτω ότι μια από τις ερωτήσεις που πραγματικά θα σας άρεσε να μας δώσετε λίγο περισσότερη διορατικότητα, είναι ποιο είναι το εύρος και η έκταση του τύπου ανθρώπων που βλέπετε αυτήν την περίοδο που αναπτύσσουν αυτά τα είδη εργαλείων στο προφίλ έναν κώδικα και να αναζητήσετε προβλήματα απόδοσης; Αρχικά, ιστορικά, από πού προέρχονται; Ήταν τα μεγάλα μηχανικά σπίτια; Και στη συνέχεια, προχωρώντας μπροστά, είμαι σωστός, σκέφτομαι ότι όλο και περισσότερες εταιρείες εφαρμόζουν αυτό το εργαλείο ή αυτά τα εργαλεία για να προσπαθήσουν να βοηθήσουν τους κωδικοποιητές, οι οποίοι ξέρουν ποιοι έχουν κάνει ακριβώς πράγματα για να ολοκληρώσουν τη δουλειά και να βγεις έξω από την πόρτα; Και μερικές φορές χρειαζόμαστε μια κάρτα εκκίνησης; Έχω δίκιο να σκέφτομαι ότι ιστορικά είχαμε περισσότερη μηχανική εστίαση και ανάπτυξη; Τώρα, παίρνουμε ένα λιγότερο, όπως είπε ο Robin, ακαδημαϊκή προσέγγιση, και τώρα είναι αυτοδίδακτος, ή cut-and-paste κώδικα, ή απλά να κατασκευάσει τα πράγματα; Και αυτό ταιριάζει με το είδος των ανθρώπων που παίρνουν το προϊόν τώρα;

Bert Scalzo: Ναι, ακριβώς. Και θα σας δώσω ένα πολύ συγκεκριμένο παράδειγμα, απλά θέλουμε να κάνουμε τη δουλειά, γιατί οι επιχειρηματίες δεν θέλουν τελειότητα. Είναι σαν ένα ηλεκτρονικό παιχνίδι σκακιού: το παιχνίδι σκακιού δεν ψάχνει για την τέλεια απάντηση. ψάχνει για μια απάντηση που είναι αρκετά καλή σε ένα λογικό χρονικό διάστημα, έτσι είναι αυτό που προγραμματίζουμε. Αλλά αυτό που βρήκα τώρα είναι, οι περισσότεροι άνθρωποι αντί να λένε ότι θέλουν έναν προφίλτρο ως μέρος της δοκιμής μονάδων τους - έτσι θα το κάνω, γιατί δεν το βλέπω σαν χάσιμο χρόνου - αυτό που συμβαίνει είναι τώρα που αυτό γίνεται αργότερα, μερικές φορές, κατά τη διάρκεια δοκιμών ολοκλήρωσης ή προσομοιώσεων ακραίων καταστάσεων, εάν είμαστε τυχεροί. Αλλά τις περισσότερες φορές είναι μέρος μιας κλιμάκωσης, όπου κάτι πήγε στην παραγωγή, έτρεξε για λίγο, ίσως έστω και για χρόνια, και τώρα δεν τρέχει καλά, και τώρα θα το παρουσιάσουμε. Και αυτό φαίνεται να είναι το συνηθέστερο σενάριο τώρα.

Dez Blanchfield: Ναι, και νομίζω ότι ο όρος "τεχνικό χρέος" είναι ίσως ένας που είστε περισσότερο από εξοικειωμένοι με? Ξέρω ότι ο Robin και εγώ σίγουρα είμαστε. Νομίζω ότι αυτές τις μέρες, ειδικά σε ευέλικτες προσεγγίσεις για την ανάπτυξη και την οικοδόμηση συστημάτων, για μένα, η έννοια του τεχνικού χρέους είναι τώρα πολύ πραγματικό πράγμα που την αντιμετωπίζουμε πραγματικά σε έργα. Ξέρω, εννοώ, έχουμε τα δικά μας έργα όπως το Media Lens και άλλα, όπου έχουμε καθημερινή κωδικοποίηση και διάφορα πράγματα σε ολόκληρο τον όμιλο Bloor. Και όποτε χτίζουμε κάτι, το βλέπουμε κάπως, το κοιτάζω και πάντα κοιτάζω από τη σκοπιά του τι θα με κοστίσει για να διορθώσω αυτό το θέμα τώρα, σε σχέση με το αν μπορώ να το φτάσω στο μπορείτε και να το βγάλετε εκεί έξω, και στη συνέχεια να παρακολουθήσετε και να δείτε αν αυτό το πράγμα πρόκειται να σπάσει. Και κληρονομήστε αυτό το τεχνικό χρέος που ξέρω ότι θα χρειαστεί να γυρίσω πίσω αργότερα και να διορθώσω.

Και το έχω κάνει τις τελευταίες επτά ημέρες: έχω γράψει μερικά εργαλεία και σενάρια, έχω γράψει μερικά κομμάτια της γλώσσας Python και έχω αναπτύξει στο Mongo πίσω, κάνοντας βεβαιωθείτε ότι είναι ωραίο και καθαρό και ασφαλές, αλλά παίρνει ακριβώς το ερώτημα που χρειάζομαι, γνωρίζοντας ότι χρειάζομαι αυτή τη λειτουργία για να δουλέψω, να φτάσω στο μεγαλύτερο παζλ. εκεί είναι ο πραγματικός μου πόνος. Και έτσι υποσκάπτετε αυτό το τεχνικό χρέος και πιστεύω ότι αυτό δεν είναι πλέον ένα περιστασιακό πράγμα, νομίζω ότι αυτό είναι μέρος του DNA που αναπτύσσεται τώρα. Οι άνθρωποι απλά - όχι ασήμαντα - απλώς αποδέχονται το τεχνικό χρέος είναι ένας κανονικός τρόπος λειτουργίας του ζητήματος, και πρέπει απλώς να το υποστεί. Είναι όπου αναλαμβάνετε το τεχνικό χρέος. Και νομίζω ότι το μεγάλο πράγμα για αυτό που μας δείξατε στο demo ήταν ότι μπορείτε κυριολεκτικά να προφίλ και να παρακολουθήσετε πόσο καιρό χρειάζεται κάτι για να τρέξει. Και αυτό είναι ίσως ένα από τα αγαπημένα μου πράγματα. Εννοώ, έχω κατασκευάσει εργαλεία δημιουργίας προφίλ - συνηθίζαμε να κατασκευάζουμε εργαλεία σε Sed και Lex και Orc για να τρέξουμε τον κώδικα μας και να δούμε πού ήταν οι βρόχοι, πριν να υπάρχουν διαθέσιμα εργαλεία - και όταν έχετε δημιουργήσει κώδικα για να πάτε και αναθεωρήστε τον δικό σας κώδικα, παίρνετε πολύ καλό να μη χρειάζεται να ελέγχετε τον δικό σας κώδικα. Αλλά αυτό δεν συμβαίνει τώρα. Έχοντας αυτό υπόψη, υπάρχει ένα συγκεκριμένο τμήμα της αγοράς που παίρνει αυτό περισσότερο από οποιοδήποτε άλλο; Βλέποντας σαν μάζα-

Bert Scalzo: Ω ναι, έχω - θα κάνω μια αναλογία για σένα, και θα σου δείξω ότι οι μη προγραμματιστές το κάνουν όλη την ώρα. Γιατί αν διδάσκω ποτέ ένα πρόγραμμα εντοπισμού σφαλμάτων και την ανίχνευση τάξεων ή συνεδριών, θα ρωτήσω τους ανθρώπους: "Εντάξει, πόσοι άνθρωποι εδώ πηγαίνουν στο Microsoft Word και σκόπιμα δεν χρησιμοποιούν ποτέ τον ορθογραφικό έλεγχο;" Και κανείς δεν βάζει το χέρι τους, επειδή για τη σύνταξη εγγράφων, όλοι γνωρίζουμε ότι μπορούμε να κάνουμε λάθη στην αγγλική γλώσσα και έτσι ο καθένας χρησιμοποιεί τον ορθογραφικό έλεγχο. Και είπα: "Λοιπόν, πώς έρχεστε όταν γράφετε κείμενο στο IDE σας, όπως η Visual Basic, δεν χρησιμοποιείτε το πρόγραμμα εντοπισμού σφαλμάτων; Είναι το ίδιο πράγμα, είναι σαν ένα ορθογράφο. "

Dez Blanchfield: Ναι, στην πραγματικότητα, αυτή είναι μια μεγάλη αναλογία. Δεν είχα πραγματικά σκεφτεί, πρέπει να ομολογήσω ότι πραγματικά κάνω κάτι παρόμοιο με μερικά εργαλεία που χρησιμοποιώ. Στην πραγματικότητα, ένα ODF, το αγαπημένο μου με το Eclipse, είναι απλά να κόψω και να επικολλήσω τον κώδικα εκεί και να ψάχνω για πράγματα που μόλις τονίζουν αμέσως και συνειδητοποιώ ότι έκανα ένα τυπογραφικό λάθος σε κάποια κλήση τάξης. Και, αλλά είναι ενδιαφέρον τώρα με το εργαλείο σαν αυτό, μπορείτε να το κάνετε σε πραγματικό χρόνο, σε αντίθεση με την επιστροφή και την εξέταση αργότερα, κάτι που είναι ωραίο να το πιάσετε εκ των προτέρων. Αλλά ναι, αυτή είναι μια μεγάλη αναλογία απλά να βάζετε κείμενο σε έναν επεξεργαστή κειμένου, γιατί είναι μια ενδιαφέρουσα κλήση αφύπνισης που απλά συνειδητοποιείτε ότι έχετε κάνει κάποια λάθη ή ακόμα και ένα γραμματικό λάθος, σωστά;

Bert Scalzo: Ακριβώς.

Dez Blanchfield: Λοιπόν, βλέπετε περισσότερα από ένα uptick τώρα από υποθέτω, εννοώ, το τελικό ερώτημα από μένα, πριν πετάξω στο Q & A μας ίσως, για τους παρευρισκόμενους μας. Εάν επρόκειτο να δώσετε κάποιου είδους σύσταση γύρω από την προσέγγιση για να το κάνετε αυτό - υποθέτω ότι αυτό είναι ρητορικό - είναι το γεγονός ότι παίρνετε νωρίς και να το εφαρμόσετε καθώς αναπτύσσεστε, πριν αναπτύξετε; Ή είναι η περίπτωση που παίρνετε κυρίως κτίριο, κινούνται, χτίζετε κάτι έπειτα να έρθετε και προφίλ αργότερα; Υποψιάζομαι ότι είναι η περίπτωση να μπεις νωρίτερα και να σιγουρευτείς ότι ο κωδικός σου είναι καθαρός. Ή μήπως πρέπει να εξετάσουν αυτό το μέρος της μετά την ανάπτυξή τους;

Bert Scalzo: Στην ιδανική περίπτωση, θα το έκαναν εκ των προτέρων, αλλά επειδή όλοι βρίσκονται στο θορυβώδες κόσμο όπου πρέπει να γίνουν τα πράγματα, τείνουν να μην το κάνουν μέχρι να βρεθούν σε ένα πρόβλημα επίδοσης που δεν μπορούν να επιλύσουν προσθέτοντας περισσότερους επεξεργαστές και μνήμη σε μια εικονική μηχανή.

Ντεζ Μπλάντφιλντ: Ναι. Έτσι, στην πραγματικότητα αναφέρατε κάτι ενδιαφέρον, αν μπορώ γρήγορα; Αναφέρθηκε προηγουμένως ότι αυτό μπορεί να τρέξει από οπουδήποτε και μπορεί να μιλήσει σε βάση δεδομένων στο πίσω μέρος. Έτσι αυτό είναι άνετο με το είδος της bimodal έννοιας που μιλάμε τώρα, του σύννεφο on-premise / off-premise, από την εμφάνιση των πραγμάτων επίσης, στο τέλος της ημέρας, αν μπορεί να μιλήσει στο πίσω μέρος και να δει ο κώδικας, δεν νοιάζεται πραγματικά, έτσι δεν είναι;

Bert Scalzo: Ακριβώς, ναι, μπορείτε να το εκτελέσετε στο σύννεφο.

Dez Blanchfield: Εξαιρετική, γιατί νομίζω ότι αυτό είναι το μέρος όπου ο καινούριος γενναίος κόσμος μας πηγαίνει. Έτσι, Eric. Πάω να σας ρίξω πίσω τώρα και να δούμε ότι έχουμε κάποιες ερωτήσεις εδώ και θέλω οι παρευρισκόμενοι μας να μείνουν ακόμα μαζί μας, παρόλο που έχουμε περάσει την ώρα.

Eric Kavanagh: Ναι, υπάρχουν μερικοί άνθρωποι εκεί έξω, θα κάνω ένα σύντομο σχόλιο: Bert, νομίζω ότι η μεταφορά, η αναλογία που δίνετε στο ορθογραφικό έλεγχο είναι ειλικρινά λαμπρή. Αυτό αξίζει ένα blog ή δύο, ειλικρινά, επειδή είναι ένας καλός τρόπος να πλαισιώσετε το πλαίσιο του τι είναι αυτό που κάνετε και πόσο πολύτιμο είναι και πώς πρέπει πραγματικά να είναι μια βέλτιστη πρακτική να χρησιμοποιήσετε ένα πρόγραμμα εντοπισμού σφαλμάτων σε τακτική βάση, σωστά; Σίγουρα παίρνεις κάποια κεφάλια να κουνάει όταν το ρίχνεις εκείνο, έξω;

Bert Scalzo: Απολύτως, γιατί αυτό που τους λέω είναι: "Γιατί τρέχω ένα ορθογραφικό έλεγχο των εγγράφων μου; Δεν θέλω να νιώθω ντροπή από τα ανόητα ορθογραφικά λάθη. "Λοιπόν, δεν θέλουν να ενοχλούνται από τα ηλίθια λάθη στην κωδικοποίηση!

Eric Kavanagh: Δεξιά. Ναι πράγματι. Λοιπόν, παιδιά, έχουμε καεί μέσα σε μια ώρα και πέντε λεπτά εδώ, τόσο μεγάλη ευχαρίστηση σε όλους εσάς εκεί έξω για το χρόνο και την προσοχή σας. Κάνουμε αρχειοθέτηση όλων αυτών των συζητήσεων μέσω διαδικτύου, αισθανόμαστε ελεύθεροι να επιστρέψουμε οποτεδήποτε και να τις ελέγξουμε. Το καλύτερο μέρος για να βρείτε αυτούς τους συνδέσμους είναι πιθανώς το techopedia.com, γι 'αυτό θα προσθέσουμε αυτό σε αυτή τη λίστα εδώ.

Και με αυτό, θα σας προσφέρουμε αποχαιρετισμό, παιδιά. Για άλλη μια φορά, καλή δουλειά, Bert, χάρη στους φίλους μας από το IDERA. Θα σας μιλήσουμε την επόμενη φορά, θα σας μιλήσουμε την επόμενη εβδομάδα, στην πραγματικότητα. Να προσέχεις! Αντίο.

Ταχεία απόκριση: αποκατάσταση βάσεων δεδομένων και δημιουργία προφίλ στη διάσωση