>> DAN Armendariz: Γεια σας και καλώς ήρθατε ένα σεμινάριο σχετικά με την προσαρμογή CS50 Cloud 9,
και το IDE CS50.
Έτσι, σήμερα θα πάμε να απλά να μιλήσουμε λίγο
σχετικά με ορισμένα από τα τεχνικών πληροφοριών που
πηγαίνει πίσω από την αρχιτεκτονική του Cloud 9 και πώς
έχουμε υλοποιήσει μερικά από τα plug-ins ως μέρος του Cloud 9 για να δώσουν CS50 IDE.
Οπότε ας ξεκινήσετε αμέσως και να αρχίσουμε να μιλάμε για plug-ins.
>> Έτσι, plug-ins είναι πραγματικά κατά τη πυρήνα του Cloud 9 εμπειρία.
Cloud 9 είναι η υποκείμενη τεχνολογία ότι παρέχει σε μας το IDE,
και, επίσης, το παράθυρο τερματικού κατά τη κάτω, μαζί με την workspace--
το Ubuntu workspace-- ότι χρησιμοποιήσουμε για να καταρτίσουμε όλα τα έργα μας
και να εκτελέσει πρόβλημα σύνολα μας, Συμπλήρωσε πρόβλημα σύνολα μας.
Αλλά στην καρδιά όλων από αυτό, όλα τα τεχνολογία
είναι πραγματικά ακριβώς μια δέσμη των plug-ins.
Τα πάντα είναι ένα plug-in ότι μπορεί να τροποποιηθεί,
επεκταθεί, μπορείτε να δημιουργήσετε το δικό σας plug-ins,
μπορείτε να αφαιρέσετε άλλο plug-ins, πραγματικά να αλλάξει
αρκετά μεγάλο μέρος της λειτουργικότητας της υφιστάμενης Cloud 9 IDE.
>> Έτσι, αυτό είναι ένα υπάρχον Cloud 9 περιβάλλον.
Αυτό είναι πραγματικά ακριβώς το προεπιλογή Cloud 9 περιβάλλον.
Και ρίξτε μια ματιά στο πώς είναι στην πραγματικότητα είναι διαφορετικός από τον IDE CS50.
Έτσι, αυτό είναι το IDE CS50.
Παρατηρήστε ότι υπάρχουν κάποιες οπτικές αλλαγές μεταξύ του τακτικού Cloud 9
το περιβάλλον και η IDE CS50.
Συγκεκριμένα, θα παρατηρήσετε μερικές αλλαγές.
Πρώτα απ 'όλα, υπάρχει λιγότερες στοιχεία μενού για να αρχίσει με.
Υπάρχει πράγματι ένας τρόπος ότι μπορείτε να το αλλάξει αυτό.
Αυτό λέγεται Simple Mode.
>> Από προεπιλογή, Simple Mode είναι ενεργοποιημένη, και ότι απλοποιεί κάποια από τα στοιχεία του μενού.
Αφαιρεί ορισμένα από τα πιο προηγμένες,
διότι ειλικρινά, πολύ φοιτητές που έρχονται σε
και δεν χρειάζεται να γνωρίζετε σχετικά με ορισμένα από τα πιο προηγμένα χαρακτηριστικά
Δεν είναι συγκλονισμένοι με μια δέσμη των επιλογών.
Αλλά εμείς παρέχουμε τη δυνατότητα να λαμβάνουν εκτός αυτών των λεγόμενων ρόδες
και αφαιρέστε ότι σκαλωσιές, έτσι ώστε οι άνθρωποι
μπορεί να γίνει πιο εξοικειωμένοι με τα προηγμένα χαρακτηριστικά του IDE.
Αμέσως με την το δικαίωμα αυτό, υπάρχει
Επίσης, ένα κουμπί εντοπισμού σφαλμάτων, η οποία στο πρότυπο σύννεφο
9 περιβάλλον λέγεται απλά τρέχει.
Αλλά από προεπιλογή, έχουμε ρυθμιστεί το κουμπί εντοπισμού σφαλμάτων στο CS50 IDE
να θέσει επί τάπητος το πρόγραμμα εντοπισμού σφαλμάτων, καταρτίζουν αυτόματα τον πηγαίο κώδικα,
συνδέστε το πρόγραμμα εντοπισμού σφαλμάτων με την υποκείμενη GDB--
και δεδομένου ότι τρέχει να εκτελέσει η debugging-- και κάποια άλλα βήματα
επισης.
Επίσης, το παράθυρο τερματικού κατά τη very-- ή μάλλον το τερματικό
καρτέλα στο τμήμα της κονσόλας κατά τη παράθυρο στο κάτω μέρος της οθόνης,
μετονομάστηκε απλά να είναι τερματικό.
Ενώ στο πρότυπο Cloud 9 του περιβάλλοντος,
δείχνει πραγματικά το εφαρμογή που εκτελείται.
Με αυτό τον τρόπο, απλοποιεί, και πάλι, το γραφικό περιβάλλον, ακριβώς λίγο.
>> Επίσης προσθέσαμε μερικά κουμπιά στην επάνω δεξιά πλευρά της IDE
για να δείξει κάποιες βασικές πληροφορίες σχετικά με την υποκείμενη παράδειγμα.
Και επίσης έχουμε αφαιρέσει ένα από τις επιλογές σχετικά με τα στοιχεία
από την άκρα δεξιά.
Έτσι, όλα αυτά δεν υλοποιούνται τροποποιώντας κατ 'ανάγκην το Cloud 9
πηγαίος κώδικας, αλλά αντί μέσω ενός ζευγαριού
των plug-ins που έχουμε εφαρμόσει σε όλο το παρελθόν έτος ή έτσι.
Και Cloud 9 έχει φιλοξενήσει και έχει που εκτελούνται στο χώρο εργασίας CS50.
Ή μάλλον σε χώρους εργασίας που χαρακτηρίζονται ως CS50 IDEs.
>> Έτσι, πραγματικά αυτή είναι η κύρια διαφορά μεταξύ του Cloud 9 και το CS50
χώρους εργασίας.
Υπάρχει, επίσης, στο υποκείμενο παράδειγμα, η κύρια αλλαγή είναι
ότι έχουμε εγκαταστήσει κάποια προ-ρυθμισμένες αντικείμενα όπως GDB,
και μερικά άλλα βασικά πράγματα που έχουμε δημιουργήσει, όπως Update 50,
και ένα ζευγάρι των άλλων βημάτων που κάνουν η όλη εμπειρία λίγο πιο
ενοποιημένη.
Αλλά σε γενικές γραμμές, αυτό είναι μόνο ένα τροποποίηση ενός υπάρχοντος συστήματος
ότι Cloud 9 δημιούργησε για εμάς.
Τι θα πάμε να δείχνουν λίγο αργότερα
είναι το πώς να δημιουργήσετε ένα πραγματικά κάπως βασικό plug-in που
μας επιτρέπει να εισάγετε κάτι σε το σύστημα μενού, και να ανοίξει ένα διάλογο.
Και αν έχουμε αρκετή Τότε, θα πραγματικότητα
να δούμε πώς μπορούμε να συμπληρώσετε ότι διάλογος με κάποιες πληροφορίες
από το υποκείμενο παράδειγμα.
Για να μπορέσουμε να φτάσουμε σε αυτό το σημείο, ας μιλήσουμε πρώτα λίγο
για την αρχιτεκτονική του Cloud 9.
>> Έτσι ο τρόπος που έχουμε συνηθίσει να αλληλεπιδρούν με Cloud 9
Είναι εξ ολοκλήρου μέσω του πελάτη.
Θα ανοίξει ένα πρόγραμμα περιήγησης στο Web, γράφουμε στο CS50.io.
Τελικά, μετά την πιστοποίηση, παρουσιάζονται με τον IDE.
Αλλά συνειδητοποιούν ότι υπάρχει μερικά βήματα
ότι στην πραγματικότητα μας να φτάσουμε σε αυτό το σημείο.
Το πρώτο πράγμα είναι ότι ο πελάτης μου, το πρόγραμμα περιήγησης στο Web,
κατόπιν αιτήσεως και μετά την πιστοποίηση, φορτώνει το GUI και τα plug-ins
από κάποια CDN, από κάποια Δίκτυο παροχής περιεχομένου.
Αυτό μπορεί να είναι ειλικρινά πουθενά.
>> Και αυτό είναι πραγματικά ξεχωριστή από το υποκείμενο παράδειγμα.
Είναι σημαντικό να συνειδητοποιήσουμε ότι αυτό είναι στην πραγματικότητα απλώς ένα μάτσο στατικά αρχεία.
Είναι ένα μάτσο JavaScript ότι έχει κατεβάσει από το CDN
του πλοηγού μου, και όλα τα GUI που σας
δείτε here-- αυτό είναι πραγματικά key-- όλα τα GUI που βλέπετε εδώ
εκτελείται στην πλευρά του πελάτη.
Ό, τι βλέπετε στο Cloud 9 χώρου εργασίας
είναι στην πραγματικότητα τρέχει στο πρόγραμμα περιήγησης.
Και κάτι που στέλνετε κατά μήκος της υποκείμενης παράδειγμα
επικοινωνεί με το παράδειγμα κατά μήκος αυτής της δεύτερης ξεχωριστό κανάλι,
και στη συνέχεια να αποθηκευτούν επάνω ότι χάριν λιμενεργάτης.
>> Έτσι, ο λόγος που το λέω Αυτό είναι ένα παράδειγμα λιμενεργάτης
είναι ότι το υποκείμενο της τεχνολογίας δεν χρησιμοποιεί εικονικές μηχανές,
αλλά αντ 'αυτού χρησιμοποιεί ένα τεχνολογία που ονομάζεται λιμενεργάτης,
που allows-- βασικά το πιο κοντινό αναλογία είναι μια εικονική μηχανή.
Αλλά είναι ελαφρά διαφορετική το ότι υπάρχουν
πολλές ευκαιρίες για να τρέξει ένα συνδυασμός των διαφορετικών λιμενεργάτης
παρουσίες σε ένα μόνο μηχάνημα.
Και μπορούν να περιστραφούν έως σε πολύ γρήγορη διαδοχή.
Δεν είναι αρκετά τα περισσότερα αυστηρή διαφοροποίηση
μεταξύ των διαφόρων περιπτώσεων λιμενεργάτης καθώς υπάρχουν σε εικονικές μηχανές,
αλλά εξακολουθεί να υπάρχει μια πολύ διαφοροποίηση και διαχωρισμός
μεταξύ αυτών των διαφορετικών περιπτώσεων.
ΕΝΤΆΞΕΙ.
Έτσι, οι δύο βήματα εδώ ότι είναι σημαντικό να συνειδητοποιήσουμε
είναι ότι όταν πάμε να CS50.io, είμαστε τη λήψη του GUI και τα plug-ins,
τα οποία είναι γραμμένα σε JavaScript, για στο πρόγραμμα περιήγησης ή στο πρόγραμμα περιήγησης.
Και αυτό είναι ίσως ένα ζευγάρι megabytes αξίας των πληροφοριών.
Σε εκείνο το σημείο, αφού το έχει GUI φορτώνεται και τα plug-ins έχουν αρχίσει,
τότε αρχίζει να επικοινωνεί με η περίπτωση λιμενεργάτη, ο οποίος δεν
αναγκαστικά πρέπει να είναι το ίδιο διακομιστή.
>> Τώρα υπάρχει μια εξαίρεση σε αυτό.
Μπορούμε να έχουμε πραγματικά τόσο η μηχανισμός παράδοσης για το ίδιο το GUI
και η περίπτωση λιμενεργάτη στο όλα στον ίδιο διακομιστή, η οποία
Είναι πραγματικά κάτι που κάνουμε για την offline έκδοση του Cloud 9.
Αυτό δεν είναι κάτι που έχουμε δημοσιότητας πάρα πολύ αυτό το φθινόπωρο,
αλλά εμείς επίσης να έχει offline έκδοση που
σας επιτρέπει να κατεβάσετε ένα συσκευασμένο έκδοση όλα αυτά τα πράγματα
και σας επιτρέπουν να εκτελέσετε Cloud 9 σε offline περιβάλλον.
>> Προχωρώντας αυτό από το σύννεφο και πάνω τοπικό υπολογιστή σας έχει κάποια επίδραση.
Ειδικότερα, δεν μπορείτε έχουν πλέον τη δυνατότητα
να μοιραστεί το χώρο εργασίας σας με τους άλλους.
Μπορείτε πλέον να ανοίξετε Cloud 9 από, και το CS50 IDE, από οποιονδήποτε υπολογιστή
και να δούμε τα ίδια αρχεία που που εργάζονταν με πριν.
Όμως, αντί να λειτουργεί πλήρως το για τη δική σας τοπική μηχανή
χωρίς να χρειάζεται πρόσβαση στο διαδίκτυο.
Αλλά και πάλι, ακόμη και σε αυτό το μοντέλο, ακόμη και αν έχουμε μια εικονική μηχανή
ότι είναι ουσιαστικά τρέχουν αυτά τα πράγματα.
>> Έχουμε ένα ξεχωριστό διακομιστή που είναι παρέχοντας ουσιαστικά το Cloud 9
περιεχόμενο, και στη συνέχεια έχουν ένα παράδειγμα λιμενεργάτης
που είναι υπεύθυνη για την επικοινωνία με την εν λόγω IDE για το πίσω μέρος.
ΕΝΤΆΞΕΙ.
Έτσι, το σύνολο του GUI είναι γραμμένο εξ ολοκλήρου στο JavaScript
χρησιμοποιώντας Node.js και το Cloud 9 SDK, το οποίο θα φτάσουμε σε ένα λεπτό.
Και όλα τα plug-ins εκτελούνται στην πλευρά του client.
Ας εστιάσουμε στη συνέχεια μια λίγο με την παραδοχή
ότι αυτό το πρώτο βήμα έχει στην πραγματικότητα ολοκληρωθεί με επιτυχία,
και να εξετάσουμε μόνο σε αυτή την περίπτωση λιμενεργάτης.
>> Έτσι, σε αυτή την περίπτωση, αυτό είναι ο συνήθης τρόπος
του σκέφτεται να κάνει Cloud 9 plug-in εξέλιξη είναι ότι θα έχετε την ευκαιρία
να γράφει κώδικα που θα να τρέξει στον browser του χρήστη,
και έχετε την ευκαιρία να χρησιμοποιώντας κάποια APIs για να επικοινωνούν
με την υποκείμενη παράδειγμα λιμενεργάτης, τρέξει κάποιο κώδικα εκεί, και κάνουν τίποτα
ότι ίσως να θέλετε να κάνετε.
Έτσι, αυτό πρόκειται να είναι το πλαίσιο που θα
να χρησιμοποιούν για το υπόλοιπο αυτής της ομιλίας.
Και να κρατήσει μόνο το μοντέλο αυτό κατά νου.
Αυτό θα είναι πολύ σημαντικό μέσα σε λίγα λεπτά.
Υπάρχει ένα ζευγάρι των συνδέσεις που θέλω να σας δείξω.
Πρώτα απ 'όλα, Cloud 9 παρέσχε πάρα πολλά έγγραφα
αυτό είναι πολύ καλό, αυτό δείχνει πόσο να κάνει βασικά plug-in ανάπτυξη.
Έτσι, αν πάτε σε αυτό το URL, cloud9-sdk.readme.io,
θα δείτε την τεκμηρίωση εκεί.
Και πολλές από αυτές τις πληροφορίες ότι είστε έτοιμος να δείτε
μπορεί επίσης να βρεθεί εκεί, συν κάποια άλλα.
Μπορείτε επίσης να βρείτε το open source έκδοση του Cloud 9 σε αυτήν τη διεύθυνση URL,
github.com/c9/core, το οποίο χρησιμοποιούμε ως μέρος της offline έκδοση του IDE,
έτσι ώστε θα είστε σε θέση να έχουν το ίδιο Cloud 9 εμπειρία,
αλλά σε μια σύνδεση τρόπο.
Εντάξει.
Έτσι, ας ρίξουμε μια ματιά σε ένα πραγματική Cloud 9 χώρο εργασίας εδώ.
Και πάλι, θέλω να επισημάνω ένα ζευγάρι από τα πράγματα.
Αυτό είναι, ακριβώς εδώ, ένα κανονικό IDE CS50.
Και έχω απενεργοποιήσει μια λιγότερο άνετη λειτουργία του μενού View
έτσι ώστε να μπορώ να δω όλα από τις επιλογές του μενού.
Αυτό που θέλω να σας δείξω το δικαίωμα τώρα είναι μερικά πράγματα.
Πρώτα απ 'όλα, αν πάω σε Προτιμήσεις και, στη συνέχεια,
κλικ στην Plug-in διευθυντής, και πληκτρολογήστε CS50 εδώ,
μπορούμε να δούμε ότι υπάρχουν, στην πραγματικότητα, ένα ζευγάρι των CS50 προσθήκες που
είχαν εγκατασταθεί και να λειτουργήσει σε μας ενεργοποιήσετε τις τροποποιήσεις που έχουμε
δει για τον IDE CS50.
>> Αυτή τη στιγμή δεν υπάρχει ουσιαστικά δύο plug-ins που εκτελούνται.
Υπάρχει ένα που ονομάζεται Simple, η οποία είναι η απλοποιημένη λειτουργία που
σας επιτρέπει να μειωθεί ο αριθμός των επιλογών του μενού κατά μήκος της κορυφής,
και έχουν αυτό το λεγόμενο λιγότερο άνετα λειτουργία.
Και έπειτα υπάρχει επίσης CS50 Στατιστικά, το οποίο είναι ίσως μόνο ελαφρώς misnamed.
Επειδή αυτό είναι ό, τι σας δείχνει τις πληροφορίες
σχετικά με την υποκείμενη επιφάνεια εργασίας.
Διοχετεύει αυτά τα κουμπιά κατά μήκος του πάνω δεξιά.
Διοχετεύει επίσης ένα στοιχείο του μενού σε η στοιχείο παράθυρο, στο μενού Παράθυρο
ακριβώς εδώ, CS50 IDE Info.
Και είναι υπεύθυνη για εμφανίσεων Αυτός ο διάλογος που έχουμε δει εδώ,
με όλες τις πληροφορίες που είμαστε συνηθισμένοι να βλέπουν σε μια CS50 IDE
χώρο εργασίας.
ΕΝΤΆΞΕΙ.
Έτσι, υπάρχει πράγματι ένα ακόμη plug-in ότι έχουμε αναπτύξει επίσης.
Και υπάρχει ένα ζευγάρι των άλλων, ότι Επίσης, δεν έχουν κυκλοφορήσει δημοσίως.
Αλλά ένας από αυτούς είναι η συνολική plug-in που σας επιτρέπει να λειτουργήσει το GDB.
Έτσι, μία από τις πτυχές του Cloud 9 είναι ότι έχουν ήδη παράσχει
Αυτό GUI για να εφαρμόσει ένα πρόγραμμα εντοπισμού σφαλμάτων.
Και ένα από τα plug-ins που έχουμε δημιουργήσει βασικά
αγκίστρια GDB με αυτό το GUI based έκδοση του ένα πρόγραμμα εντοπισμού σφαλμάτων.
Και είναι υπεύθυνη για τη μεσολάβηση όλων των αιτήσεων που ένας χρήστης μπορεί να έχει,
μεταξύ ενίσχυση πάνω ή τη δημιουργία σημείων διακοπής ή τίποτα
κατά μήκος αυτών των γραμμών, να μεταφράζει αυτό σε εντολές που GDB μπορεί να καταλάβει,
εκδίδει αυτές τις εντολές για να GDB.
Και το συντομότερο GDB εκδίδει μια απάντηση, τότε
ερμηνεύουμε ότι και ενημερώσετε το γραφικό περιβάλλον, όπως απαιτείται.
>> Αυτό είναι ίσως ένα από η πιο περίπλοκη
των plug-ins, έτσι ώστε αντί αυτό που είμαστε πρόκειται να επικεντρωθεί σήμερα είναι στην πραγματικότητα
Τα στατιστικά plug-in, και θα μιλήσουμε λίγο σχετικά με το Simple, όπως καλά.
Γι 'αυτό ανέφερα και πριν, και θέλω πραγματικά να κάνει πολύ, πολύ σαφές, ότι και πάλι,
όλα αυτά που είμαστε βλέπουμε εδώ είναι κατ 'ουσίαν
λειτουργεί στην πλευρά του client.
Κάνουμε δείτε ένα παράθυρο τερματικού κάτω, και ότι, φυσικά,
αν πληκτρολογήσετε εντολές σε ότι, τα οποία στη συνέχεια θα εκδοθεί
με την υποκείμενη παράδειγμα.
Ομοίως, αν ανοίξουμε ένα νέο αρχείο και πληκτρολογήστε κάποια πράγματα σε αυτό και να το αποθηκεύσετε,
αυτό το αρχείο θα αποθηκευτεί σε η υποκείμενη παράδειγμα.
>> Αλλά το ίδιο το συντάκτη, αυτό το ίδιο παράθυρο τερματικού,
Όλα αυτά υλοποιούνται σε JavaScript και είναι ένα plug-in
ότι μπορούμε να αλληλεπιδρούν με, και ως εκ τούτου να τροποποιήσει.
Υπάρχει μια μεγάλη επεκτασιμότητα εδώ.
Θα ήθελα να συστήσω τη λήψη μια ματιά στο GitHub λογαριασμό Cloud 9 του
για να δείτε τη μεγάλη ποσότητα των plug-ins που είναι διαθέσιμα,
και πόσο καλά γράψει πολλά του κώδικα είναι για εκτασιμότητα.
Έτσι, υπάρχει κάτι ότι θέλω να αναφέρω
γι 'αυτό, καθώς, η οποία είναι ότι υπάρχουν πολλοί of-- υπάρχει
πολλές λειτουργίες που είναι παρέχονται στις προτιμήσεις
παράθυρο, το οποίο έχουμε δει μόνο υπαινίχθηκε μόλις πριν από λίγα λεπτά.
>> Ένα από τα πράγματα που μπορούμε να κάνουμε ως IDE προγραμματιστές, είτε ως Cloud 9 προγραμματιστές,
είναι να κάνετε την ένεση στην πραγματικότητα κάποια πάνελ προτίμησή της δικής μας.
Έτσι, η απλή λειτουργία, ή η λιγότερο άνετη λειτουργία,
καθώς επίσης και η πληροφορία IDE, ή τα στατιστικά plug-in,
έχει κάθε κάποια προτίμηση πάνελ που μας επιτρέπουν να τροποποιήσετε
η συμπεριφορά του καθενός από αυτά.
Θα παρατηρήσετε ότι αν πάω να το Προτιμήσεις και να πάει στις ρυθμίσεις του χρήστη,
υπάρχει μια καρτέλα CS50, ένα που λέει πληροφορίες IDE.
Και μπορώ να αλλάξω το πληροφορίες ανανέωσης ρυθμό.
>> Ουσιαστικά, αυτό που συμβαίνει στα στατιστικά plug-in
είναι ότι κάθε n-δευτερόλεπτα, όπου n-δευτερόλεπτα ορίζεται από αυτή την προτίμηση
πάνελ, οι πληροφορίες είναι παρατραβηγμένο από το υποκείμενο παράδειγμα, αποστέλλεται
πίσω προς την πλευρά του πελάτη, Το plug-in είναι τότε
ερμηνεία της πληροφόρησης από την υποκείμενη παράδειγμα
και την ενημέρωση του GUI όπως είναι απαραίτητο.
Μπορούμε να δούμε ότι τώρα αυτό έχει οριστεί έως 30 δευτερόλεπτα, και αυτό είναι η προεπιλογή.
Αλλά σίγουρα μπορώ να αλλάξω πόσο γρήγορα αυτό θα συμβεί μόνο
τροποποιώντας την τιμή αυτή.
>> Τώρα, ένα από τα ενδιαφέροντα πράγματα είναι ότι αυτό το πάνελ προτίμησης, GUI,
είναι πραγματικά ακριβώς μια έκδοση GUI των πολύ βασική ρυθμίσεις
που παρουσιάζονται σε JSON.
Έτσι, αν πάω, για παράδειγμα, σύμφωνα με το CS50 μενού IDE, ή το μενού Cloud 9,
ανάλογα με το ποια έκδοση κοιτάτε,
και να πάει σε ένα από αυτά settings-- σε αυτή την περίπτωση,
Το έργο settings-- η ρυθμίσεων του σχεδίου σε αυτή την περίπτωση
ισχύει για όλες τις ρυθμίσεις για αυτό το χώρο εργασίας.
Λαμβάνοντας υπόψη ότι η εφαρμογή των ρυθμίσεων του χρήστη σε όλους τους χώρους εργασίας
ότι μπορεί να έχετε στο λογαριασμό σας.
>> Έτσι ακριβώς όπως ένα μέρος εδώ, για να είναι extra clear,
υπάρχει ένας διαχωρισμός μεταξύ της δύο, διότι αν και εξ ορισμού είμαστε
έχουν ένα χώρο εργασίας, η οποία CS50 είναι η IDE, αν
ήταν να κάνετε κλικ στο μικρό σας avatar μέχρι εδώ και να πάει στο ταμπλό,
θα διαπιστώσετε ότι μπορείτε πραγματικά να τη δημιουργία πρόσθετων χώρων εργασίας, καθώς και.
Μπορείτε να δείτε εδώ ότι εγώ έχω ένα IDE 50 χώρου εργασίας, καθώς επίσης και
για τους σκοπούς του παρόντος σεμιναρίου, ένας χώρος εργασίας
που ονομάζεται χώρος εργασίας, η οποία είναι ακριβώς εδώ.
Έτσι κι αλλιώς, έχω διαφορετικές προτιμήσεις.
Κάθε ένα από αυτά θα μπορούσε να έχει ξεχωριστές προτιμήσεις του έργου,
αλλά οι προτιμήσεις των χρηστών είναι μοιράζεται ανάμεσα σε όλους τους χώρους εργασίας μου.
Με τον τρόπο, αυτό είναι επίσης πολύ βολικό αν
θέλουν να δημιουργήσουν ένα χώρο εργασίας με διαφορετικές επιλογές προσαρμογής.
Και είναι πολύ βολικό να δημιουργήσετε ένα νέο χώρο εργασίας.
Και επιλέξτε μία που θα μπορούσε να προ-ρυθμισμένες με κάποιον άλλο τρόπο,
ίσως για την PHP συγκεκριμένα, ή Django ειδικά.
Ή ακόμα και ακριβώς έθιμο.
Ο χώρος εργασίας CS50 πρότυπο είναι εκείνο που εμείς
χρήση που εγκαθιστά αυτόματα Update 50 και όλες τις ρυθμίσεις
ότι έχουμε εκεί, συμπεριλαμβανομένων όλων των plug-ins που έχουμε για τον IDE CS50.
ΕΝΤΆΞΕΙ.
Αλλά ας επανέλθουμε σε αυτό.
Έτσι και πάλι, υπάρχουν έργα ρυθμίσεις, και αυτά είναι εκείνα
ότι εξετάζουμε εδώ.
Και παρατηρώ ότι υπάρχει είναι ένα μάτσο ρυθμίσεις,
πολλοί από τους οποίους αντιστοιχούν με τις προτιμήσεις πάνελ, αλλά όχι όλα από αυτά.
Αλλά μπορούμε να δούμε ότι εδώ, στην this-- ω Όχι, δεν το έβαλα στις ρυθμίσεις χρήστη;
Ίσως έβαλα στις ρυθμίσεις του χρήστη.
Και αυτό, εδώ είμαστε.
Στις ρυθμίσεις του χρήστη, μπορούμε βλέπουμε ότι έχουμε ένα τμήμα CS50,
και αυτό γράφεται να από αυτά Cloud 9 plug-ins
ότι έχουμε την εφαρμογή τους.
Υπάρχει το απλό να αντιστοιχούν με αυτό το απλό plug-in,
και τα στατιστικά στοιχεία των οποίων το ένα αντιστοιχεί στο εν λόγω GUI με βάση
εκδοχή του πίνακα προτίμησης.
Ο ρυθμός ανανέωσης, σε αυτό το περίπτωση, έχει οριστεί σε 20 δευτερόλεπτα.
>> Αυτό είναι όλο, ελπίζουμε, η απαρχές ορισμένων πληροφοριών
ότι θα δούμε πραγματικά σε λίγο λίγο πιο αναλυτικά, στιγμιαία.
ΕΝΤΆΞΕΙ.
Ας πούμε ότι θέλουμε να πραγματικά να πάρει κάτω σε αυτό.
Αντιλαμβανόμαστε ότι όλα τα πράγματα ότι συμβαίνει στην πλευρά του client
γίνεται πραγματικότητα με το πρόγραμμα περιήγησης, το οποίο σημαίνει ότι οποιαδήποτε plug-ins που γράφω
πρόκειται να γραφτεί με το πρόγραμμα περιήγησης στο μυαλό.
Και αν πραγματικά θέλετε να κάνετε τίποτα στο χώρο εργασίας,
Θα πρέπει ίσως να κινήσει κάποιο είδος επικοινωνίας
μεταξύ του browser και ο χώρος εργασίας να είναι σίγουρος
ότι αυτό που επιτυγχάνεται.
Αλλά ας πούμε ότι τώρα Θέλω να πιάσουμε αυτό
και στην πραγματικότητα να δημιουργήσουν το πρώτο μου plug-in.
Λοιπόν, με τον τρόπο που θα είναι σε θέση για να γίνει αυτό είναι πραγματικά αρκετά εύκολο.
Είναι δεδομένο στο Cloud 9 SDK.
Αλλά είναι να πάρει σας υπάρχον όνομα χώρου εργασίας, η οποία
είναι η διεύθυνση URL που έχετε στην κορυφή μπαρ σας, και προσθέστε την ακόλουθη σε αυτό.
;
SDK = 1 & debub = 2.
Τώρα, τι αυτό πρόκειται να επιτρέψει είναι ότι το SDK = 1, θα ορίσετε στην πραγματικότητα το SDK
λειτουργία για να είναι αληθινό, η οποία θα επιτρέψει μερικά επιπλέον πράγματα.
Και debug = 2 θα επιτρέψει μηνύματα λάθους να είναι λίγο πιο φλύαρη.
>> Και έτσι, αν σας φέρει μέχρι το JavaScript κονσόλα στην καρτέλα του έργου σας Chrome,
που πραγματικά θα είναι σε θέση να δείτε πολλές περισσότερες πληροφορίες
από ό, τι θα ήταν διαφορετικά.
Γι 'αυτό συνιστούμε να απενεργοποιήσετε τα δύο αυτά επί συγχρόνως, γιατί πραγματικά
Είναι χρήσιμο να έχουμε όλα αυτά Επιπλέον πληροφορίες.
Είναι σημαντικό να σημειωθεί, ωστόσο, ότι ενεργοποίηση του εντοπισμού σφαλμάτων στην τιμή των 2
που σημαίνει ότι είναι πολύ φλύαρη, και στην πραγματικότητα
Θα κάπως επιβραδυνθεί αισθητά IDE σας, ειδικά κατά τη φόρτωση
ή όταν κάνετε κάνουν βαριές εργασίες.
Έτσι απλά να το έχουμε κατά νου.
Είναι χρήσιμο για την ανάπτυξη, αλλά θα δεν μπορεί να θέλουν να έχουν όλη την ώρα.
>> Ας το κάνουμε αυτό πραγματικότητα.
Αλλά σε αυτή την περίπτωση, έχω πραγματικά ήδη δημιουργήσει ένα χώρο εργασίας με αυτό.
Ας δούμε λοιπόν, SDK = 1 & debug = 2.
Με ένα ζευγάρι των plug-ins ελπίζω ήδη εγκατασταθεί.
Εντάξει.
Έτσι τώρα που έχω γυρίσει στο debug SDK λειτουργία, παρατηρήστε ότι είμαστε σε κατάσταση εντοπισμού σφαλμάτων,
ώστε να μπορούμε να δούμε τα εργαλεία dev για να δείτε τυχόν λάθη, τα οποία θα κάνω offscreen.
Μπορούμε να δούμε ότι υπάρχει ένα μάτσο λάθη εδώ.
Τώρα είναι πραγματικά αρκετά κοινό για Cloud 9 να έχουμε ένα ζευγάρι των λαθών,
και εγώ δεν θα ανησυχούσα γι 'αυτούς μέχρι να
δείτε κάτι που θα μπορούσε να να είναι ειδικά για το plug-in
ότι τυχαίνει να είναι η δημιουργία.
>> Έτσι, εδώ, για παράδειγμα, παίρνουμε ένα ζευγάρι των 404s-- δεν βρέθηκε.
Βλέπουμε δεν είμαστε σε θέση να φορτώσει κάποια πληροφορίες εκτός της υποκείμενης παράδειγμα
εαυτό.
Και υπάρχει μια δέσμη των πρόσθετων πληροφοριών, αλλά τα περισσότερα από αυτά είμαστε
στην πραγματικότητα πρόκειται να αγνοήσει για τώρα.
Επειδή αυτό είναι αρκετά κοινό για ένα χώρο εργασίας
να έχουν μόνο ένα ζευγάρι των λαθών.
ΕΝΤΆΞΕΙ.
Πάω να κινηθεί έξω από αυτό Ο τρόπος και επιστρέψτε εδώ.
Και τώρα ο εύκολος τρόπος, το ωραίο πράγμα σχετικά με αυτό τον προγραμματιστή
Έχει ενεργοποιηθεί η λειτουργία είναι ότι μου επιτρέπει για να δημιουργήσετε εύκολα ένα νέο plug-in.
>> Έτσι, ενώ πριν εγώ πραγματικά δεν το έκανε έχουν στη διάθεσή τους νέα αυτή δυνατότητα plug-in,
το οποίο μπορούμε να δούμε αν πάω πίσω στο μη λειτουργία του έργου μου εδώ,
δεν υπάρχει νέο plug-in.
Με την ενεργοποίηση της λειτουργίας SDK, Ι έχουν ένα νέο plug-in που διατίθεται
και μπορώ εύκολα να δημιουργήσετε ένα.
Σε αυτήν την περίπτωση, υπάρχει ένα ζευγάρι διαφορετικές επιλογές, απλά,
ένα άδειο plug-in, ένα πλήρες plug-in, εγκατάστασης, Cloud 9 δέσμη.
Ας επιλέξουν ένα άδειο plug-in για την επιχείρηση
έτσι ώστε να μπορούμε να δούμε μια πολύ απλή έκδοση ενός.
>> Τώρα παρατηρήσετε ότι το μήκος αριστερή πλευρά που είναι τώρα υπάρχει
κάτι κάτω από αγαπημένα, η οποία απαριθμεί ένα ζευγάρι των plug-ins
που είναι τώρα στη διάθεσή μου.
Αν μπορώ να επεκτείνουν αυτό, θα να είναι σε θέση να δείτε αυτούς.
Τώρα θέλω να παρατηρήσετε κάτι εδώ, το οποίο
είναι ότι αυτό δεν είναι πραγματικά περιέχεται μέσα στον κατάλογο χώρου εργασίας
των υποκείμενων Ubuntu παράδειγμα μου, αλλά περιέχεται στο σκληρό δίσκο.
Και όταν αυτό βρίσκεται, επειδή Αυτό είναι πολύ χρήσιμο να γνωρίζουμε,
ειδικά αν πρόκειται να να κάνει τίποτα με το Git,
όταν αυτό βρίσκεται είναι σε ένα φάκελο .c9, / plugins.
Έτσι, αν πάω εκεί, μπορούμε να δούμε ότι τώρα ο κατάλογος των plug-ins που είναι εδώ
ταιριάζει με τη λίστα των plug-ins που θα είδε στην αριστερή πλευρά του χώρου εργασίας μου.
>> Τώρα από προεπιλογή, και Αυτό είναι περίεργο,
από προεπιλογή όταν δημιουργώ ένα νέα plug-in σε ένα χώρο εργασίας,
δημιουργεί αυτό το plug-in που από προεπιλογή έχει όνομα μιας υπογράμμισης.
Γενικά στοιχεία που θα μπορούσαν να προκαλέσει κάποια προβλήματα.
Έτσι, το επόμενο βήμα είναι πολύ που συνήθως εκτελούν
Είναι ακριβώς για να αφαιρέσετε ότι Ειδικότερα plug-in
και αφήστε μόνο το απλό plug-in που υπήρχε αρχικά, plugin.simple.
Και αυτό είναι το μόνο που υπάρχει.
ΕΝΤΆΞΕΙ.
>> Λοιπόν, τι σημαίνει αυτό στην πραγματικότητα μοιάζει;
Λοιπόν, αυτό είναι, και πάλι, ένα πακέτο JavaScript
που περιλαμβάνει μερικά αρχεία, συμπεριλαμβανομένου ενός plugin.js αρχείο, όπου
το κύριο περιεχόμενο της μου plug-in βρίσκεται,
ένα αρχείο package.json, η οποία στην πραγματικότητα προσδιορίζει
μερικά μεταδεδομένα σχετικά με αυτό το plug-in, όπως ποιος είναι ο συγγραφέας,
οποιεσδήποτε πρόσθετες πληροφορίες σχετικά με αυτό, ένα περιγραφή του plug-in, και ούτω καθεξής.
Και, επίσης, από προεπιλογή, δημιουργεί ένα κενό αρχείο README,
και ένα άδειο δοκιμαστικό αρχείο για να μπορείτε να δημιουργήσει κάποια επιπλέον έγγραφα,
και ένα λουρί δοκιμή εάν θα θέλατε να το κάνουμε αυτό.
>> Έτσι, ας ρίξουμε μια ματιά στο πρώτο, πολύ γρήγορα, στο αρχείο package.json.
Είναι αρκετά εύκολο να περάσουν μόνο μέσα αυτό και συμπληρώστε τα πεδία της
ότι θα θέλατε να συμπληρώσετε, όπως παρέχει ένα όνομα, να δώσει μια περιγραφή,
επαναλαμβάνοντας τον αριθμό έκδοσης κάθε τόσο συχνά, παρέχουν
ένας συγγραφέας για κάθε πρόσωπο που συμβάλλει,
προσθέστε τα στους συνεισφέροντες τμήμα, και το υπόλοιπο αυτού του σας
μπορείτε λίγο πολύ απλά αφήστε όπως είναι για τώρα.
>> Υπάρχει ένα πράγμα που είναι σημαντικό να παρατηρήσετε,
ότι, σύμφωνα με το τμήμα plug-ins, υπάρχει ένα κλειδί που ονομάζεται plug-in.
Και αυτό ταιριάζει με το όνομα του το αρχείο JavaScript που ονομάζεται plugin.js.
Έτσι, αυτό είναι το πώς Cloud 9 ξέρει, όταν διαβάζει αυτό το αρχείο package.json, η οποία
των js αρχεία για να φορτώσει στην πραγματικότητα.
Αν μπορώ να δημιουργήσω επιπλέον js αρχεία ή θέλετε για να μετονομάσετε το αρχείο JS από το plug-in,
Έχω, επίσης, να το αλλάξετε στο αρχείο package.json.
>> Όλες οι ερωτήσεις από το ακροατήριο;
Κανένα.
Ότι ένα πρόσωπο που είναι παρακάτω μαζί μου μέχρι στιγμής.
>> ΕΝΤΆΞΕΙ.
Γι 'αυτό και πραγματικά έχουν δημιουργήσει ένα ζευγάρι των plug-ins ήδη,
Πιστεύω ότι, σε αυτό το χώρο εργασίας.
Ας απαλλαγούμε από ορισμένα από αυτά, προσθέστε SDK = 1 & debug = 2, φορτώστε ξανά αυτήν του χώρου εργασίας,
και ας δούμε αν μπορούμε έχουν αυτά τα plug-ins τώρα.
C9 / plugins.
Ορίστε.
Μπορούμε να δούμε τώρα μου C9 / plugins αυτό μία, έχουμε plugin.1 και plugin.2.
Έτσι θα πάμε απλά να εντείνει the-- απλά να αυξήσει το ποσό της δυσκολίας
σε κάθε μία από αυτές plug-ins.
Αλλά εδώ, αν μπορώ να δημιουργήσω ένα νέο plug-in, Μπορώ να το προσθέσετε στα αγαπημένα μου.
Και εγώ θα διαγράψει μόνο όσες από το υποκείμενο σύστημα αρχείων.
>> Ας αφαιρέσει αυτό.
Τώρα αν μπορώ να ανοίξω το πρώτο μου plug-in, και ανοιχτό plugin.js,
μπορούμε να δούμε εδώ το υποκείμενο απλή έκδοση του plug-in.
Επιτρέψτε μου να επιστρέψω στην πραγματικότητα σε αυτό το άλλο χώρο εργασίας
επειδή μπορείτε τουλάχιστον, εδώ δείτε, τι ένα κενό plug-in που όντως μοιάζει.
Έτσι, κάτω από την κουκούλα, αυτό φαίνεται πολύ παρόμοια με την τεχνολογία που ονομάζεται,
Νομίζω, ότι είναι RequireJS.
Παρατηρήστε ότι αυτό δεν να το δούμε, ίσως,
το ίδιο με κάποιο άλλο JavaScript αρχεία που μπορεί να έχουμε δει.
Αλλά αντ 'αυτού, υπάρχει ένα ζευγάρι μόνο βασικές γραμμές που έχει στην πραγματικότητα.
>> Όλα αυτά τα πράγματα είναι η πρώτη ερμηνεύεται από τον IDE,
αλλά στην πραγματικότητα δεν είναι διαρκέσει μέχρι καθορισμένη.
Και θα σας πω για το πότε ότι σημαίνει στην πραγματικότητα σε μια στιγμή.
Αλλά παρατηρώ ότι εδώ υπάρχει μια main.consumes γραμμή στη γραμμή 2,
και αυτό παραθέτει όλα τα plug-ins ότι αυτό το plug-in εξαρτάται.
Έτσι, από προεπιλογή, εμείς ίσως δεν έχουν οποιεσδήποτε εξαρτήσεις από άλλα plug-ins,
αλλά όταν πραγματικά χρειάζεται να εξαρτώνται από τις λειτουργίες που παρέχονται
από άλλα plug-ins στο IDE, θα πρέπει να περιλαμβάνεται κατάλογος των plug-ins
στη γραμμή main.consumes.
Και τότε θα πρέπει να σύνδεσή τους με τον κώδικα
παρακάτω, το οποίο θα σας παρουσιάσω σε μόλις μια στιγμή για το πώς μπορούμε να το κάνουμε αυτό.
>> Main.provides δίνει μια αναφέρουμε σε αυτό το plug-in
ότι και άλλα plug-ins θα μπορούσε χρήση σε γραμμή καταναλώνει τους.
Έτσι, στην περίπτωση αυτή, μου plug-in Είναι ακριβώς εκεί που από προεπιλογή,
και θα πρέπει να το αλλάξουμε αυτό να είναι που ισχύουν για το δικό μας το plug-in,
όπως θα δούμε σε λίγο χρόνο.
Τώρα, εδώ στη λειτουργία κύριοι, αυτή η κύρια λειτουργία
είναι στην πραγματικότητα τρέχει και να ερμηνευθεί, αλλά στην πραγματικότητα δεν κάνει πάρα πολύ.
Απλά παίρνει πάντα που έχει συσταθεί, αλλά δεν ξεκινήσει στην πραγματικότητα το plug-in,
παρά αυτό που ακούγεται σαν το όνομα.
Αυτό συμβαίνει στην πραγματικότητα μέσω μια ακολουθία μεθόδων που
περιέχονται σε όλη αυτή την plug-in.
>> Έτσι, αν μετακινηθείτε προς τα κάτω, μπορούμε να δούμε ότι έχουμε έναν κύκλο ζωής, όπου
σε κάποια εκδήλωση που ονομάζεται φορτίο, ή κάποια εκδήλωση που ονομάζεται ξεφορτώσουν,
ορισμένα γεγονότα που συμβαίνουν στην πραγματικότητα.
Είναι πραγματικά εδώ, όπου, όπως το plug-in ξεκινά ότι αυτές οι μέθοδοι ονομάζονται.
Οπότε ας είμαστε λίγο πιο συγκεκριμένη γι 'αυτό και να δούμε ένα παράδειγμα.
Τόσο εδώ για plugin.1, τι είμαστε κατά βάση πρόκειται να κάνουμε
είναι να δημιουργήσει ένα στοιχείο μενού που ονομάζεται CS50 Σεμινάριο διαλόγου 1--
επειδή έχουμε δύο them-- και θα πάμε
να κάνετε την ένεση στο μενού Παράθυρο.
Και όταν κάνουμε κλικ σε αυτό, είμαστε πρόκειται να ανοίξει ένα διάλογο που
μας δείχνει κάποιες πολύ βασικές πληροφορίες.
>> Στην περίπτωση αυτή, μόνο ένα γεια κόσμο.
Έτσι, αυτό είναι ένα πολύ απλό hello world διάλογο
ότι μπορούμε να υλοποιήσουμε ως ένα plug-in Cloud 9.
Οπότε ας δούμε πώς αυτή η πραγματικότητα μοιάζει.
Θα βήμα μέσα από αυτό, απλά σχετικά γρήγορα γι 'αυτό
μπορεί να κοιτάξει την επόμενη plug-in, καθώς και.
Παρατηρήστε ότι εδώ είμαστε καταναλώνοντας μια ποικιλία των plug-ins.
Είμαστε καταναλώνει ένα διάλογο plug-in, εντολές, μενού, και UI.
Μοιάζει Εγώ πραγματικά είμαι καταναλώνουν διάλογος δύο φορές, ώστε να μπορώ να αφαιρέσετε αυτό.
>> Και παρατηρώ ότι με τον τρόπο ότι είμαι να τους συνδέει,
Αυτό είναι το είδος των μεταδεδομένων που είναι λέγοντάς το σύστημα plug-in ποιες απαιτήσεις
είναι πραγματικά απαραίτητο γι 'αυτό το plug-in για να φορτώσει.
Είναι επίσης σημαντικό να σημειωθεί ότι Για το ότι οι plug-ins φορτώνονται
δεν είναι εγγυημένη.
Αλλά αυτό που είναι εγγυημένο είναι ότι αν προσδιορίστε κάποιο plug-in ως προϋπόθεση,
ότι το plug-in θα φορτωθεί πριν από αυτό είναι φορτωμένο.
>> Έτσι, αυτό σημαίνει ότι αν σας plug-in απαιτεί για κάποια λειτουργία παρέχεται
από κάτι άλλο στο IDE, θα πρέπει να είστε σίγουροι ότι το plug-in σας καταναλώνει
ότι plug-in, έτσι ώστε οι εξαρτήσεις είναι βέβαιο ότι θα προκαλέσει plug-in σας,
ή υπόσταση σας plug-in, μόνο μετά ότι υπάρχουν υφιστάμενο πλαίσιο.
Έτσι, εδώ έχω αναφερθεί η μεταδεδομένα στο διαχειριστή plug-in,
ποια ήταν αυτά Πάω να καταναλώνουν.
Και στην κύρια λειτουργία εδώ, Πάω να συνδεθεί στη συνέχεια
κωδικός μου για τα εισαγόμενα plug-ins.
>> Έτσι, είμαι απλώς πρόκειται να δημιουργήσει μερικές μεταβλητές που
ταιριάζουν με τα ονόματα του καθενός από αυτά, έτσι ότι μπορώ να τους αναφορά πολύ γρήγορα
σε όλο τον κωδικό μου.
Ο λόγος που είμαι εισαγωγής διάλογο είναι γιατί θέλω μου plug-in
να ενεργεί ως διάλογος plug-in.
Και ο τρόπος που είμαι σε θέση για να γίνει αυτό είναι να, φυσικά,
συνδέστε τον κωδικό μου για το διάλογο plug-in από την εισαγωγή της
και, στη συνέχεια, καθορίζοντας από δημιουργώντας μια νέα μεταβλητή διάλογο
και τη σύνδεση με ότι τα εισαγόμενα plug-in.
Και στη συνέχεια με τον ορισμό μου plug-in ως ένα νέο διάλογο.
>> Έτσι, στην προετοιμασία, εγώ θέλετε να ορίσετε μου plug-in.
Και αυτή η μεταβλητή που ονομάζεται plug-in θα δείτε
Είναι ακριβώς χρησιμοποιούνται συνήθως όλη Cloud 9 plug-ins.
Πάω να υπόσταση ενός νέου διάλογο με ορισμένες ιδιότητες,
δώσετε ένα συγκεκριμένο όνομα, λένε ότι είναι δυνατό για τους χρήστες να το κλείσετε.
Ότι θα δείξει ένα μικρό x στο η άνω δεξιά γωνία,
ή ένα μικρό κουμπί στο κάτω δεξιά γωνία.
Είτε ή δεν μπορώ να επιλέξετε κείμενο από ότι, ό, τι ο τίτλος αυτού του διαλόγου
θα είναι, και ούτω καθεξής.
Τώρα αυτό καθορίζει ακριβώς το διάλογο, αλλά δεν έχει ακόμη το δείχνουν.
Εγώ πραγματικά πρέπει να ορίσουμε μια δράση για να μπορεί να δείξει.
>> Και πάλι, θα ήθελα να σας ενθαρρύνω να ρίξτε μια ματιά στο Cloud 9 SDK,
επειδή υπάρχουν διάλογοι ποικιλία και είναι πολύ καλά τεκμηριωμένες.
Μπορείτε να δείτε τα διάφορα είδη ότι υπάρχουν, και να τις χρησιμοποιήσετε
σε ό, τι plug-in που έχετε κατά νου.
Τώρα υπάρχει πρόκειται να είναι μια τμήμα φορτίου, και αυτό το φορτίο
λειτουργία όπως θα θυμάστε είναι χρησιμοποιείται από το plug-in του κύκλου ζωής
για την υπόσταση στην πραγματικότητα τα πάντα και να πάρει τα πάντα έτοιμα να ξεκινήσουν.
Τώρα, όταν αυτό το plug-in φορτία, δεν το κάνω θέλουν να δείξουν αμέσως έναν διάλογο,
επειδή αυτό το plug-in θα φορτώσει μαζί με το υπόλοιπο του IDE.
Και όταν τοποθετήσετε αυτόν τον IDE, δεν θέλω ο διάλογος να εμφανιστεί αυτόματα.
Το μόνο που θέλω είναι να δείξει όταν κάνω κλικ στο η επιλογή μενού στο παράθυρο μενού μου
ότι θα ήθελα να προσθέσω σε αυτό στιγμιαία.
>> Έτσι, υπάρχουν δύο διακριτά στάδια εδώ που πρέπει να συμβεί.
Θα πρέπει να δημιουργήσουμε μια εντολή και η εντολή
θα είναι υπεύθυνος για την πραγματικότητα δείχνει τον διάλογο για το Cloud 9 IDE.
Και τότε έχω να συνδεθείτε, θα Πρέπει να δημιουργήσετε ένα νέο μενού του παραθύρου
στοιχείο, που τρέχει αυτήν την εντολή.
Έτσι ώστε όταν κάνω κλικ σε αυτό το παράθυρο μενού, η εντολή αυτή είναι συνέχεια τρέξιμο
και ως εκ τούτου ο διάλογος μου εμφανίζεται τότε.
Και έτσι αυτό είναι πραγματικά ένα όμορφο ωραίος τρόπος σκέψης σχετικά με αυτό.
>> Επειδή το πρώτο μπορώ να δημιουργήσω μια εντολή του οποίου το όνομα CS50 Σεμινάριο Dialog 1,
ότι παρέχει κάποια γενικό πλαίσιο για αυτό.
Και το σημαντικό κομμάτι εδώ είναι να Παρατηρήστε την παράμετρο ΕΚΤΕΛ, η οποία
παραθέτει μια λειτουργία που θα ονομάζεται κατά τη γνώμη μου το plug-in, όταν αυτή η εντολή εκτελείται.
Έτσι, αυτή η εντολή είναι κάπως σαν a-- είναι απλώς μια αυθαίρετη Cloud 9
εντολών που είναι διαθέσιμες σε κάθε Cloud 9 plug-in.
Αλλά η πραγματική λειτουργία που είναι Θα τηλεφωνήσω όταν αυτή η εντολή εκτελείται
είναι η λειτουργία παρουσίασης διάλογος σε plugin.js αρχείο μου.
>> Και μπορούμε πραγματικά να δείτε αυτά τα plug-ins και η λίστα
των εντολών που είναι διαθέσιμες σε εμάς Προτιμήσεις, μετακινηθείτε σε όλη τη διαδρομή down--
Ας δούμε, πράγματι βλέπουμε αυτό τώρα;
Plug-in διευθυντής, Όχι, νομίζω ότι είναι I-- σίγουρα κάπου εδώ γύρω.
Λοιπόν, υπάρχει μια λίστα εντολών κάπου, αλλά πρέπει να έχω,
Έχω ξεχάσει πού είναι.
Έτσι Εντάξει, εμείς θα προχωρήσουμε.
Εντάξει.
Έτσι, έχουμε μια λίστα εντολών που έχουμε στη διάθεσή μας,
και αυτές οι εντολές είναι αυτά ακριβώς αυθαίρετη Cloud 9
εντολές που εκτελούν ειδικό κωδικό.
Έτσι απλά να το έχουμε κατά νου, ότι θα πάμε για να τρέξει το παράθυρο διαλόγου παράσταση
λειτουργεί στιγμιαία.
Τώρα, όταν πραγματικά θέλετε να προσθέσετε ένα μενού στοιχείο, μπορώ να προσθέσω αυτό το στοιχείο από τη διαδρομή,
και απλά προσδιορίζει ακριβώς εκεί που θέλω να είναι, Παράθυρο / CS50 Σεμινάριο Dialog 1.
Και σε αυτό το σημείο, θέλω για να δημιουργήσετε ένα νέο στοιχείο που
πρόκειται να εκτελέσετε μια εντολή, CS50 Σεμινάριο Dialog 1.
Παρατηρήστε ότι και πάλι, αυτό είναι το Cloud 9 εντολή που έχω δημιουργήσει ακριβώς πάνω.
>> Τώρα θέλω επίσης να δημιουργήσετε ένα μικρό διαχωριστικό,
και γι 'αυτό μπορεί να κάνει το ίδιο στην επόμενη γραμμή.
Τώρα μπορείτε να παρατηρήσετε ότι μέρος του ορισμού αυτό το στοιχείο μενού,
υπάρχει ένας αριθμός που συνδέονται με αυτό το οποίο
στην πραγματικότητα λέει πού ακριβώς Θέλω αυτό το στοιχείο μενού για να
που βρίσκεται στη λίστα του μενού.
Αλλά μπορείτε να παρατηρήσετε ότι εγώ δεν κάνω στην πραγματικότητα
δείτε οποιουσδήποτε αριθμούς με Αυτά τα μενού, από προεπιλογή.
Έτσι, υπάρχει ένα μικρό κρυφό πράγμα που μπορούμε να κάνουμε, μια μικρή αλλαγή στη διεύθυνση URL μας.
Έτσι, εκτός από την SDK = 1 & debug = 2, Θα οριστεί το μενού για να 1--
και ελπίζω να είναι το μενού, δεν είναι τα μενού.
Ω, είναι τα μενού = 1.
Περίμενε.
>> Και τι θα δούμε κατά την επαναφόρτωση ότι IDE είναι ότι είμαι ακόμα σε κατάσταση εντοπισμού σφαλμάτων,
αλλά τώρα υπάρχουν αριθμοί που σχετίζονται με όλα τα μενού.
Και αυτό σας λέει ακριβώς ό, τι ο αριθμός
είναι όταν προσπαθείτε να κάνετε την ένεση κάτι οπουδήποτε σε αυτό το σύστημα μενού.
Έτσι, στο μενού Παράθυρο, μπορώ δείτε αυτό το στοιχείο 45 είναι να συνεργαστούν,
και το σημείο 38, πριν να είναι εγκαταστάτη.
Έτσι όταν θέλω να εισφέρει ένα στοιχείο μεταξύ των δύο,
Θα ήθελα απλά επιλέξτε έναν αριθμό μεταξύ των δύο αυτών στοιχείων.
Έτσι έχω επιλέξει 41 και εισάγεται Σεμινάριο μου Διάλογος στοιχείο 1 του μενού σε αυτή τη θέση.
>> Και γι 'αυτό το νούμερο που εμφανίζεται εδώ είναι ο αριθμός 41.
Αυτή είναι η θέση του εν λόγω μενού στο μενού Cloud 9.
Τώρα Ομοίως, θα ήθελα να δημιουργήσει ένα διαιρέτη
και προσθέτουν έτσι ώστε να υπάρχει ένα ωραίο διαίρεση μεταξύ καθενός από τα μενού
αντικείμενα.
Γι 'αυτό και πρόσθεσε ότι στη θέση 43.
Μέχρι στιγμής, όλα καλά, ελπίζω;
Έτσι, τώρα ας δούμε στην πραγματικότητα το συγκεκριμένο κωδικό στο παράθυρο διαλόγου παράσταση
αυτό είναι πραγματικά υπεύθυνοι για το άνοιγμα αυτού του παραθύρου διαλόγου.
>> Κύλιση προς τα κάτω, βλέπω ότι θέλω να έχουν αυτό το παράθυρο λειτουργία παράσταση,
και είναι εξαιρετικά απλή.
Πάω να τρέχει την παράσταση μέθοδος για τη μεταβλητή plug-in.
Και να θυμάστε ότι αυτό που ορίσαμε plug-in μεταβλητή ως άνω διάλογο.
Έτσι, μπαρ plug-in, σε αυτή την περίπτωση, είναι αυτή αντικείμενο που έχουμε καθορίσει εσωτερικά.
Και αυτό πρόκειται να είναι ένας νέος διάλογος που περιέχονται σε αυτό το plug-in.
Και έτσι έχουμε στην πραγματικότητα αυτό που αναφέρεται plug-in μεταβλητή σε πολλά μέρη
σε ένα τυπικό Cloud 9 περιβάλλον ανάπτυξης.
>> Θα το δείτε εδώ.
Παρατηρήστε ότι καθώς μετακινηθείτε προς τα κάτω, υπάρχει επιπλέον κύκλους ζωής.
Έτσι, παρατηρούμε ότι αυτά ανταποκρίνονται σε γεγονότα που πυροδοτούνται
με αυτό το αντικείμενο, αυτό το αντικείμενο διαλόγου.
Από προεπιλογή, δεν υπάρχει φορτώσουν και να ξεφορτώσουν, η οποία
είναι διαθέσιμη σε όλους τους Cloud 9 plug-ins.
Αλλά στην περίπτωση Αυτός ο διάλογος, υπάρχει
ένα άλλο γεγονός που μπορεί να πυρκαγιάς, καθώς επίσης ονομάζεται
Ισοπαλία, η οποία απολύθηκε όταν η πρόκειται να συντάσσεται στην οθόνη,
σε πρώτο βαθμό του διαλόγου που δείχνει.
>> Έτσι, όταν στην πραγματικότητα είναι πρόκειται να δείξει,
υπάρχει μετάβαση να μας παρέχετε κάποια HTML.
Και χρησιμοποιώντας μόνο πρότυπο Πρακτικές HTML μπορούμε να κάνουμε
εισφέρει κάποια πολύ απλές πληροφορίες, Γεια σας κόσμο μας, σε αυτό το διάλογο.
Έτσι, αν μετακινηθείτε προς τα επάνω, μπορούμε δείτε στη συνέχεια την πομπή των πραγμάτων
ότι αυτό είναι που συμβαίνουν.
Πρώτα δημιουργήσαμε μια εντολή Cloud 9 ότι όταν εκτελούνται από Cloud 9,
πρόκειται να βάλει φωτιά αυτή τη λειτουργία.
Είναι πρόκειται να εκτελέσετε αυτή τη λειτουργία που ονομάζεται εκπομπή διαλόγου, που έχω
γραμμένο σε κώδικα μου.
>> Δημιούργησα ένα στοιχείο του μενού και που επισυνάπτονται σε αυτήν την ίδια εντολή
ότι όταν αυτό το στοιχείο κάνει κλικ στο Το μενού, που η εντολή είναι στη συνέχεια, εκτελέστε
και ότι η λειτουργία στη συνέχεια να τρέξει.
Και μέσα της συνάρτησης είμαι ακριβώς πρόκειται να καλέσετε the-- είμαι
ακριβώς πρόκειται να εκτελέσει την παράσταση μέθοδος αυτή plug-in, το οποίο
θα πρώτη κλήση Η μέθοδος κλήρωση, και πηγαίνοντας
στη φωτιά αυτής της μεθόδου αναφέρονται παρακάτω, η επιστήσω χειρισμού συμβάντων, στον κύκλο της ζωής μας.
Και τότε θα είναι πράγματι δείχνουν το διάλογο.
>> Υπάρχει επίσης μια μέθοδος απόκρυψης, έτσι ώστε να αν χρειάζονται την ευκαιρία να κρύψει
διάλογος μου, μπορώ να κάνω το ίδιο πράγμα.
Έτσι, αυτό είναι λίγο πολύ αυτό για να πάρετε όλα αυτά για να λειτουργήσει.
Σημειώστε ότι, αν εμείς μετακινηθείτε προς τα κάτω περαιτέρω υπάρχει ένα πάγωμα δημόσιο API.
Αυτό ουσιαστικά λέει απλά ότι εγώ θέλουν αυτές τις μεθόδους για την αποτελεσματική
είναι δημόσια, αλλά δεν overwriteable έξω από το πλαίσιο αυτής της plug-in.
Και κάτω, στο κάτω μέρος, είναι ίσως το τελευταίο πράγμα που
ότι πρέπει πραγματικά να πληρώσουν πολλή προσοχή εδώ, η οποία
είναι ότι πρόκειται να εγγραφούν μας plug-in με το όνομα C9 Σεμινάριο 1,
και το αντικείμενο plug-in.
>> Η οποία, όπως θα θυμάστε, είναι ότι plug-in που plug-in
αντικείμενο που έχουμε τον ορισμό σε όλη τη διάρκεια αυτής της πηγής
κώδικας.
Και C9 Σεμινάριο 1 είναι η συμβολοσειρά που υποσχεθήκαμε
να παράσχει στην κορυφή του ορισμού αυτού.
ΕΝΤΆΞΕΙ.
Ας το ράμπα μέχρι λίγο και να δούμε αν μπορούμε να κάνουμε κάτι
λίγο πιο ενδιαφέρουσα.
Τώρα αυτό είναι μόνο τόσο μεγάλη.
Θέλω να πω, αυτό είναι, στην πραγματικότητα είναι αρκετά δροσερό ότι σε τόσο λίγες γραμμές κώδικα,
μπορούμε να τροποποιήσει το υπάρχον IDE και πρόσθεσε ένα υπάρχον στοιχείο του μενού
ή να προσθέσετε ένα νέο στοιχείο μενού, προσθέστε την εντολή, και δείχνουν έναν διάλογο,
και ένα μάτσο λειτουργικότητα που υπάρχει.
Είναι πραγματικά πολύ μεγάλη.
>> Αλλά δεν κάνει πολλά, διότι δεν μπορεί να επικοινωνεί με το υποκείμενο του Ubuntu
παράδειγμα.
Ας πούμε ότι εγώ πραγματικά θέλετε να μάθετε
κάποιες πληροφορίες σχετικά με το υποκείμενες Ubuntu παράδειγμα,
όπως τα στατιστικά plug-in κάνει.
Έτσι, ας ρίξουμε μια ματιά σε ένα λίγο περισσότερες πληροφορίες
σχετικά με το πώς τα στατιστικά plug-in έργα.
Και στην πραγματικότητα, είναι πολύ παρόμοια με αυτό.
Θα θυμάστε ίσως ότι υπάρχει ένας διάλογος.
Ίσως να θυμάστε ότι υπάρχει κάποιες πληροφορίες που είναι
εμφανίζεται ακριβώς κατά μήκος της γραμμής μενού μαζί η κορυφή, η οποία ελπίζουμε ότι θα είναι τώρα
να πάρει μια γεύση για το πώς εφαρμόσαμε αυτό,
απλά με την εισαγωγή των στοιχείων μενού σε συγκεκριμένες σημεία και εμφανίσεων διάλογο
και την εμφάνιση αυτού του διαλόγου.
>> Αλλά δεν έχουν δείξει ακόμα πώς μπορούμε να το συνδέσετε
σε μια εντολή στην υποκείμενη Ubuntu παράδειγμα.
Έτσι, ας ρίξουμε μια ματιά στη συνέχεια σε plugin.2, η οποία κάνει ακριβώς αυτό το πράγμα.
Εμείς πάμε για να ανοίξει plugin.js, η οποία είναι ο κωδικός για αυτό.
Αλλά κάτω από το μενού Παράθυρο, αν κάνω κλικ στο παράθυρο διαλόγου 2,
μπορούμε να δούμε ότι το λέει αυτό Αντ 'αυτού, γεια CS50, η οποία
δεν φαίνεται όλο αυτό το δελεαστικό, έτσι δεν είναι;
Εκτός, να παρακολουθήσετε αυτό.
Επιτρέψτε μου να αλλάξετε κάτι εδώ κάτω.
>> Πάω να πάει να μου χώρο εργασίας και την αλλαγή του σεμιναρίου
να πω κάτι άλλο, όπως Γεια σας, Νταν.
Πάω να το κλείσετε και να το αποθηκεύσετε.
Και τώρα πάω να επαναληφθεί μενού διαλόγου μου.
Και παρατηρήσετε ότι έχει τώρα άλλαξε ό, τι λέει.
Γεια σου, Νταν.
Μου φαίνεται να έχουν κάνει κάτι προς τα κάτω εδώ στο υποκείμενο Ubuntu παράδειγμα
χωρίς να έχει χειραγωγηθεί οποιαδήποτε κώδικα που και πάλι είναι σε λειτουργία μόνο
από την πλευρά του πελάτη.
Έτσι, υπάρχει προφανώς κάποιο είδος επικοινωνίας που συμβαίνει εδώ.
>> Τώρα αυτό είναι όπου ένα μεγάλο μέρος της δύναμη του Cloud 9 SDK έρχεται,
είναι ότι σε αυτό plugin.2, μπορούμε πραγματικά να προκαλέσει
μια πρόσκληση για να συμβεί η υποκείμενη παράδειγμα,
και να εκτελέσετε κάποια αυθαίρετη εντολή.
Έτσι, σε αυτή την περίπτωση, έχω πραγματικά δημιούργησε ένα πολύ απλό σενάριο bash
στο χώρο εργασίας μου που ονομάζεται Σεμινάριο.
Επιτρέψτε μου λοιπόν να ανοίξετε το επάνω.
Και μπορούμε να δούμε ότι μοιάζει με αυτό.
Είναι απλά μια πολύ απλή bash γραφή των οποίων μοναδικός σκοπός στη ζωή
θα είναι να επαναλάβω από αυτό το κείμενο, Γεια σας, Νταν.
Ή πριν από αυτό, είπε Γεια σας, CS50.
Και αυτό είναι ό, τι πρόκειται να κάνει.
>> Επειδή αυτό είναι τώρα ένα εντολών που μπορώ να τρέξω.
Μπορώ να τρέχουμε εδώ κάτω.
Μπορούμε να δούμε ότι στην πραγματικότητα είναι ακριβώς μια εντολή που έχω τρέξει φυσικά.
Μπορώ να ζητήσω μου το plug-in για να εκτελέσει αυτό εντολή στον υποκείμενο χώρο εργασίας
και να αναλύσει τις πληροφορίες που επιστράφηκε από αυτό,
και να κάνουμε κάτι με αυτό, και να τροποποιήσετε μου plug-in και τη συμπεριφορά που θα
έχουν σε plug-in μου, ως αποτέλεσμα. ΕΝΤΆΞΕΙ.
Ας δούμε πώς συμβαίνει αυτό.
Είδαμε αυτό το πολύ απλό Σεμινάριο σενάριο παρτίδα, το οποίο θα
[Δεν ακούγεται] ότι μπορεί να τρέξει πραγματικά.
>> Και τώρα ας δούμε τις τροποποιήσεις που είναι απαραίτητες για να συνδέσει αυτό μαζί
με το παράθυρο διαλόγου και να τρέξει.
Έτσι, εδώ θα πάμε να κάνουμε αρκετά πολύ το ίδιο πράγμα, όπως είδαμε πριν.
Να σημειωθεί όμως ότι μεταξύ των πράγματα που έχω καταναλώσει now--
εκτός από το διάλογο, ο οποίος και πάλι Τυχαίνει να έχω κάνει δύο φορές,
η οποία δεν είναι necessary-- εκτός στο διάλογο και τις εντολές
και τα μενού plug-ins, τα οποία ήταν αναγκαία στην πρώτη για μένα
να ορίσει μια νέα εντολή και ένεση ενός στοιχείου στο μενού,
Έχω, επίσης, αυτό το proc plug-in.
>> Και αυτό το proc plug-in επιτρέπει μας για να χειραγωγήσουν τις διαδικασίες
στο υποκείμενο παράδειγμα.
Το έχω συνδεθεί αφού έχω είπε ότι μου plug-in απαιτεί.
Έχω τότε συνδέεται με κωδικό, όπως είδαμε στην κύρια λειτουργία.
Και πάλι, Πάω να η προετοιμασία του διαλόγου μου.
Και αν μετακινηθεί προς τα κάτω τώρα, να δείτε πώς αυτό είναι διαφορετικό.
Η λειτουργία φορτίο είναι το ίδιο, έτσι είναι ακριβώς πρόκειται να δημιουργήσει μια εντολή
και να δημιουργήσει ένα στοιχείο του μενού και να συνδεθείτε ότι το στοιχείο του μενού σε αυτή την εντολή.
Αλλά αν τώρα μετακινηθείτε προς τα κάτω για να δείξει το διάλογο,
μπορούμε να αρχίσουμε να δείτε πού οι διαφορές προκύπτουν.
>> Έχουμε λειτουργία προβολής του διαλόγου, η οποία πρόκειται ακριβώς για να δείξει το διάλογο.
Αλλά όταν δείχνω αυτόν τον διάλογο, και όταν η μέθοδος παράσταση λέγεται,
οι πυρκαγιές τη λειτουργία κλήρωση.
Και Πάω να στη συνέχεια, καθορίστε μερικά περιεχόμενο μέσα από αυτό.
Έτσι, είμαι απλώς πρόκειται να δημιουργήσετε ένα div, παρέχει σε αυτό
ορισμένες βασικές κείμενο, Γεια σου, κόσμε.
Αλλά παρατηρώ ότι εδώ είμαι πρόκειται να τη συνδέσει με μια ταυτότητα.
Και η ίδια η επόμενη γραμμή θα πάω για να βρείτε το αναγνωριστικό χρησιμοποιώντας JavaScript,
και να αποθηκεύσετε αυτό το αντικείμενο σε μια άλλη μεταβλητή
ότι είμαι απλώς πρόκειται να καλέσετε περιεχόμενο.
>> Έτσι τώρα κάθε φορά που έχω περιεχόμενο, όλοι πρέπει να κάνω
είναι απλά να τροποποιήσει το εσωτερικό HTML αυτού του αντικειμένου.
Και ο διάλογος HTML θα τότε να τροποποιηθεί επίσης.
Έτσι, όταν αυτό το plug-in είναι τότε παρουσιάζεται, το οποίο μπορεί να συμβεί
και αυτό είναι ένα νέο συμβάν ότι είναι νέος σε αυτό το plug-in,
αλλά συμβαίνει σε κάθε plug-in με ο διάλογος, όταν αυτή εμφανίζεται τώρα,
Πάω να καλέσετε έναν λειτουργία που ονομάζεται φέρω πληροφορίες.
Και αυτή η λειτουργία είναι το κρέας της είναι εδώ.
Πάω να χρησιμοποιήσει το proc plug-in που που περιγράφηκε προηγουμένως, η οποία με τον τρόπο,
είναι πραγματικά ακριβώς μια βιβλιοθήκη Node.js ότι Cloud 9 χρησιμοποιεί εδώ.
>> Έτσι μπορείτε πραγματικά να κοιτάζω προς τα πάνω για το πώς αυτό
λειτουργεί αν πάτε σε το Node.js τεκμηρίωση
και να εξετάσουμε το exec αρχείο μέθοδος για διεργασίες εκεί.
Πάω να τρέξει το συγκεκριμένο εντολή, το σπίτι του Ubuntu χώρο εργασίας
σεμινάριο, η οποία είναι η ίδια με εκείνη που, ότι ίδια εντολή που μου δημιουργήθηκαν πριν.
Δώστε σε αυτό ένα ρεύμα κατάλογο εργασίας, απλά
να είναι εξαιρετικά ασφαλές από την άποψη της πλαίσιο, εφόσον αυτό βρίσκεται σε λειτουργία.
Και από τη στιγμή που έχει συμπλήρωσαν και επέστρεψαν,
Πάω να τρέξει αυτό λειτουργία που ονομάζεται εξόδου μεταγλώττιση.
ΕΝΤΆΞΕΙ.
Έτσι, αυτό στη συνέχεια πρόκειται να εκτελέσει μια εντολή σε τοπικό, ή μάλλον
η απομακρυσμένη Ubuntu παράδειγμα.
Όταν γυρίσω κάποια πληροφορίες, είμαι στη συνέχεια,
πρόκειται να καλέσετε μια ξεχωριστή λειτουργία που ονομάζεται έξοδος μεταγλώττιση, ότι
έχει αυτή την υπογραφή εδώ, ERR, stdout, stderr,
και να εκτελέσει κάποια υπολογισμός για το θέμα αυτό.
Έτσι, αν έλαβα ένα σφάλμα κάποιου είδους καθόλου,
Θα ελέγξει πραγματικά να δούμε αν σφάλμα έχει στην πραγματικότητα κάποια δεδομένα.
Και αν ναι, τότε εγώ θα τροποποιήσει την εσωτερική HTML αυτού του αντικειμένου περιεχομένου, η οποία
είναι θυμάστε, είχαμε συνδεδεμένο με το διάλογο
στο instantiattion του ότι διαλόγου, ή στο πρώτο σχέδιο
αυτού του διαλόγου.
Πάω να πω ότι έχει συμβεί κάποιο λάθος.
>> Τώρα αυτό είναι υπερβολικά απλοϊκό.
Η τιμή σφάλματος κατά κανόνα θα περιέχει κάτι που θα ήταν χρήσιμο,
ίσως έναν αριθμό σφάλματος και λάθους από το ίδιο το σενάριο.
Ή αν το σενάριο έγραψε κάτι με το πρότυπο σφάλμα,
ότι τα δεδομένα θα πρέπει να συμπληρωθεί σε αυτή την παράμετρο, καθώς και.
Και θα μπορούσα να είμαι λίγο πιο προσεκτικοί σχετικά με το τι λάθος
Είμαι πραγματικά δείχνουν ανθρώπους.
Αλλά αυτό το απλοϊκό παράδειγμα είναι αρκετά καλό για τώρα
τουλάχιστον να δούμε πώς όλα αυτά τα καθήκοντα.
Διαφορετικά, εάν υπάρχει κανένα λάθος, τότε είμαι απλά
πρόκειται να παρέχει τις πρώτες έξοδος αυτής της λειτουργίας
στο εσωτερικό HTML αυτού του περιεχομένου στοιχείο, και στη συνέχεια να ενημερώσετε μου plug-in
και δείχνουν εδώ.
Και αυτό είναι λίγο πολύ όλα αυτά είναι απαραίτητο για να πάρει αυτό για να τρέξει.
Και έτσι ας σκεφτούμε τότε πως λειτουργεί αυτό, συνολικά.
Όταν φορτώνεται για πρώτη φορά αυτό το plug-in, ακριβώς όπως το πρώτο plug-in,
Πάω να προσθέσετε μια εντολή που είναι διαθέσιμο σε τίποτα, σε οποιοδήποτε plug-in
στο Cloud 9, που ονομάζεται CS50 Σεμινάριο Dialog 2, των οποίων η ευθύνη
θα είναι να εκτελέσετε αυτήν την παράσταση διάλογος, η οποία είναι θυμάστε,
θα δείξει πραγματικά το διάλογο ότι ζήτησα παρακάτω.
>> Στη συνέχεια, θα ήθελα να προσθέσω ότι εντολή σε ένα μενού παραθύρου
έτσι ώστε να έχω πρόσβαση σε αυτό.
Και όταν αυτός ο διάλογος ζητείται να εμφανίζεται,
Θα φέρω κάποιες πληροφορίες από το υποκείμενο Ubuntu παράδειγμα
χρησιμοποιώντας την εντολή exec αρχείο.
Με συγχωρείτε.
Από τη στιγμή που επιστρέφεται και θα λάβετε κάποια πληροφορίες, στη συνέχεια, από την πλευρά του πελάτη
και πάλι, θα είμαι σε θέση να αναλύσει η έξοδος της εντολής αυτής
και να ενημερώσετε την εσωτερική HTML των στοιχείων
ότι είχαμε συνδέεται με νωρίτερα.
>> Και με αυτό, τότε έχουμε Αυτό το πλήρως λειτουργικό το plug-in
που μου επιτρέπει να φέρω πληροφορίες από αυτή την αυθαίρετη σενάριο
ότι έχουμε δημιουργήσει για υποκείμενη παράδειγμα μας.
Αλλά και πάλι, αυτό είναι πραγματικά σημαντικό και πραγματικά το κλειδί
να διαχωριστούν, όπου κάθε αυτά τα πράγματα συμβαίνουν,
ότι έχουμε όλη αυτή η πλευρά του πελάτη κώδικα που διοργανώνεται στο πρόγραμμα περιήγησης,
και δεν έχουν ακόμα πρόσβαση με την υποκείμενη σύστημα αρχείων
μέχρι να τρέξει πραγματικά ορισμένα από αυτά εντολές που παρέχονται από το Cloud
9 SDK όπως proc, και κάποιοι άλλοι αυτοί που μας επιτρέπουν να διαβάσει κάποια δεδομένα,
ή να διαβάσετε κάποια αρχεία, αν χρειάζεται να κάνει κάτι τέτοιο.
>> Τώρα αυτό είναι ένα κάπως απλό παράδειγμα.
Υπάρχουν και άλλα πράγματα που εμείς ίσως θα θέλατε να κάνετε επίσης.
Για παράδειγμα, ίσως στην πραγματικότητα θέλετε να αποθηκεύσετε κάποιες πληροφορίες
των προτιμήσεων.
Ή μήπως θέλουμε να προσθέσετε ένα νέο παράθυρο προτίμησης
ή κάτι προς αυτή την κατεύθυνση.
Στη συνέχεια, αυτό είναι κάτι που θα να ρίξετε μία ματιά στο Cloud 9 SDK
για να πάρετε περισσότερες πληροφορίες σχετικά.
Αλλά αυτό είναι πραγματικά αρκετά για να ξεκινήσετε.
Έτσι, απλά να είναι λίγο πιο συγκεκριμένη για τον τρόπο που μερικά από αυτά τα πράγματα
λειτουργία, εγώ θέλω να δείξω μόνο ένα ακόμη παράδειγμα, το οποίο είναι μόνο μερικά
του κώδικα από το 50 Στατιστικά plug-in.
>> Και αυτός ο κώδικας είναι βασικά βασίζονται σε αυτά τα παραδείγματα
που έχετε δει στην πραγματικότητα, αλλά έχει κάποιες περισσότερες διασφαλίσεις
και έχει λίγο περισσότερο πολύπλοκο για για να επιτευχθεί κάποια από τα επιπλέον πράγματα
ότι θέλουμε να επιτύχουμε.
Για παράδειγμα, αν θέλω να είμαι είναι σε θέση να αποθηκεύσετε ορισμένες ρυθμίσεις,
τότε θα πρέπει να έχουν πρόσβαση στις Ρυθμίσεις plug-in,
και κάθε φορά που θέλω να διαβάσετε ορισμένες ρυθμίσεις,
Ι μπορεί, για παράδειγμα, αποδίδουν σε διάφορες γεγονότα στις Ρυθμίσεις plug-in.
Έτσι, κάθε φορά που οι ρυθμίσεις του είναι κόκκινο, για παράδειγμα, στη δική μου plug-in,
αν εγώ είμαι πρόκειται να διαβάσετε μερικά Ρυθμίσεις από το αποθηκευμένο αποθήκευσης
προτιμήσεις του χρήστη, τότε μπορώ να ορίσετε προεπιλογές για μια συγκεκριμένη θέση,
για ιδιαίτερη προτίμηση, σε ότι JSON αρχείο επιλογές στυλ που έχουμε
αποθηκεύσατε νωρίτερα, ότι έχουμε δει νωρίτερα.
>> Και αν Πάω να γράψω Ορισμένες ρυθμίσεις σε αυτό,
τότε can-- ή το συντομότερο εντοπίζουμε ότι οι ρυθμίσεις έχουν γραφτεί
to-- διότι για παράδειγμα, εκείνες οι ρυθμίσεις έχουν τροποποιηθεί από το χρήστη
είτε άμεσα στις ρυθμίσεις τους αρχείο, ή το παράθυρο προτίμησης
έχει αλλάξει τις ρυθμίσεις καταθέσει άμεσα, στη συνέχεια,
Μπορώ να ενημερώσει πραγματικά ένα μέρος του κώδικα ή να ενημερώσετε τη συμπεριφορά μου plug-in
με βάση τις αλλαγές που έχουν συνέβη στο αρχείο ρυθμίσεων, καθώς και.
Αλλά πραγματικά, το υπόλοιπο είναι αρκετά πολύ αυτό που έχετε ήδη δει.
>> Προσθέτουμε μερικές, ίσως κάτι που είναι νέο.
Γι 'αυτό προσθέστε ένα αρχείο προτίμησης, ή μάλλον ένα παράθυρο προτίμησης,
στο παράθυρο προτιμήσεων, η οποία και πάλι μπορείτε να βρείτε περισσότερες πληροφορίες
στο Cloud 9 SDK μου να διαβάσω.
Αλλά ό, τι άλλο Είναι λίγο πολύ, πολύ
παρόμοιο με αυτό που είδαμε πριν, απλά με κάποια επιπλέον έλεγχο σφαλμάτων
καθώς και ορισμένες πρόσθετες προστασίες και μερικές πρόσθετες λειτουργίες
για να χαρακτηρίσει το σύνολο των διαφόρων πράγματα που έχουμε δει.
Αν δεν έχετε πραγματικά δει ακόμα, ίσως
να αναρωτιέστε ποια είναι η υποκείμενη εντολή στο παράθυρο Στατιστικά 50.
Είναι πραγματικά λειτουργίας.
Λοιπόν, αυτό is-- Ω, ρε.
Ένα δευτερόλεπτο.
Περίμενε.
ΕΝΤΆΞΕΙ.
Επιτρέψτε μου να περάσω αυτό επάνω έτσι μπορούμε πραγματικά δείτε τι συμβαίνει όταν πληκτρολογώ Στατιστικά 50.
Παρατηρήστε ότι στην περίπτωση αυτή, ο εντολών που είμαι έξω βάζοντας
είναι πραγματικά και πάλι, ακριβώς το σενάριο που είναι πρόκειται να εξάγει μια σειρά από πληροφορίες
σε μορφή JSON.
Και ο λόγος που το κάνουμε αυτό τον τρόπο είναι ότι επειδή
λειτουργούν, επειδή έχουμε γράψει η πλευρά του client κώδικα σε JavaScript,
μπορούμε πολύ εύκολα μόνο αναλύσει JavaScript αντικείμενα,
και πραγματικά να είναι σε θέση να χειριστούν τα εν λόγω αντικείμενα, όπως ακριβώς θα θέλαμε
οποιοδήποτε άλλο αντικείμενο το JavaScript.
>> Και έτσι αυτή είναι μια πολύ βολική τρόπος παροχής κάποιες πληροφορίες
από την υποκείμενη Ubuntu παράδειγμα, όπως τον αριθμό έκδοσης, τον ξενιστή
το όνομα, αν ένας εξυπηρετητής ακούει, τι ο διακομιστής είναι, ούτω καθεξής και ούτω καθεξής,
και να αναλύσει ότι πολύ εύκολα και πολύ γρήγορα
στο plug-in που στη συνέχεια θα για να μας δείξει όλες αυτές τις πληροφορίες.
Έτσι και πάλι, το κλειδί διορατικότητα εδώ πρέπει να θυμάστε
Είναι αυτός ο διαχωρισμός μεταξύ η υποκείμενη παράδειγμα,
και, επίσης, όπου ο κώδικας φορτώνεται.
Ότι όταν έχω έναν πελάτη, είναι η πρώτη φόρτιση.
Ακριβώς αυτό το στατικό αρχείο JavaScript από κάπου, ίσως CDN κάποιου είδους.
Δεν έχουμε να ενδιαφέρονται πραγματικά πάρα πολύ για αυτό το πρώτο βήμα.
>> Ξέρουμε ακριβώς ότι είναι τρέχει στην πλευρά του πελάτη
και ότι όταν πάω να επικοινωνούν με αυτό το παράδειγμα λιμενεργάτης.
Αυτό θα πάμε να το πράξουν μέσω του Cloud 9 SDK.
Δεν έχουμε πραγματικά τη δυνατότητα, χρησιμοποιώντας JavaScript ή Node.js,
να γράψει απευθείας σε αυτό.
Χρησιμοποιούμε μόνο εκείνα τα υπάρχοντα SDK APIs για να κάνουμε αυτή την ενέργεια για μας.
Και πάλι, ένα από τα πραγματικά σημαντικά πράγματα
είναι ότι όταν έχω δημιουργήσει αυτό, όταν έχω δημιουργήσει αυτό το plug-in,
και όπως είμαι εργάζονται σε αυτό, ένα από τα σημαντικά πράγματα που πρέπει να κάνετε
είναι να θέσει επί τάπητος την κονσόλα JavaScript.
>> Επειδή δεδομένου ότι όλα αυτά είναι που δραστηριοποιούνται στην JavaScript,
από την πλευρά του πελάτη, αν μπορώ να χρησιμοποιήσω α console.log method-- έτσι απλά
να δείχνουν ένα παράδειγμα εδώ.
Ας προσπαθήσουμε να τροποποιηθεί αυτό το απλό plug-in για να συνδεθείτε, επίσης, κάποια δεδομένα.
Και θα προσθέσουμε πρότυπο έξω.
Ας το αλλάξουμε αυτό να είναι ακριβώς εδώ.
Τώρα, όταν εκτελώ console.log, να έχετε κατά νου
ότι εφόσον αυτή βρίσκεται σε λειτουργία από την πλευρά του πελάτη,
Θα δείτε αυτό στη δική μου JavaScript κονσόλα, η οποία
είναι το πώς θα είναι τότε σε θέση να προσπαθήστε να αντιμετωπίσετε και να διορθώσετε
μερικά από τα προβλήματα που έχω.
>> Παρατηρούμε ότι, επειδή Είμαι σε κατάσταση SDK, είμαι
τότε σε θέση να χειραγωγήσουν plug-ins σε αυτή την περίπτωση.
Έτσι, ακόμη και αν είναι αποθηκεύονται σε αυτή την περίπτωση,
αυτό είναι το ένα παράδειγμα της προηγούμενης κανόνας παραβιάζεται, όπου το Cloud 9
SDK θα τραβήξει πραγματικά plug-ins από το υποκείμενες παράδειγμα και στη συνέχεια να τρέξει.
Έτσι ώστε με αυτόν τον τρόπο, τότε είμαι είναι σε θέση να χειραγωγήσουν και να κατασκευάσει
μερικά plug-ins εδώ.
Αλλά για μένα να δω με αλλαγές σε αυτό το plug-in,
επειδή είναι από την πλευρά του πελάτη, Χρειάζεται να σώσει αυτό το plug-in
και, στη συνέχεια, τοποθετήστε ξανά το σύνολο του χώρου εργασίας, έτσι ώστε το νέο plug-in είναι τότε
κατεβάσετε στον πελάτη μου, επάνω μου web browser, και στη συνέχεια να χρησιμοποιείται.
>> Έτσι τώρα όταν κάνω κλικ σε αυτό το Σεμινάριο Dialog 2, εξακολουθούμε να βλέπουμε αυτό.
Αλλά τώρα ελπίζουμε σε JavaScript μου διάλογος, θα πρέπει να βλέπουμε my-- περιμένουμε,
περίμενε.
Θα μπορούσα να έχω για να ανοίξετε το φρέσκο ​​διάλογο.
Θα πρέπει να δούμε τα ληφθέντα δεδομένα μου εδώ.
Τα δεδομένα που λαμβάνονται, Γεια σας, Νταν, που είναι θυμάστε,
Ήταν μια console.log λειτουργίας, ότι ζητήσαμε το plug-in.
Έτσι, αυτή η περιγραφή, στη συνέχεια, ότι ανέφερα και πριν,
Ο διάλογος αυτός, ή αυτή διάγραμμα μάλλον, ότι
προαναφέραμε είναι ό, τι συμβαίνει.
Αλλά υπάρχει μια σημαντική εξαίρεση μόνο για την ανάπτυξη,
η οποία είναι ότι το plug-in το ίδιο θα μπορούσε πράγματι
να αποθηκευτούν στην περίπτωση λιμενεργάτη προσωρινά, δεδομένου ότι προφανώς Cloud 9
δεν θέλει να είναι σε θέση να να χειρίζονται αντικείμενα στο CDN τους.
>> Και οι Cloud 9 πελάτες, κατά τη φόρτωση, θα βρείτε αυτά τα plug-ins σε αυτό.
C9 plug-in φάκελο και τοποθετήστε εκείνους.
Αλλά εκείνοι που εξακολουθούν να συμβαίνουν μόνο στην πλευρά του πελάτη.
Έτσι, τότε αυτό είναι μόνο η μία εξαίρεση που συμβαίνει μόνο
για την ανάπτυξη του Cloud 9 plug-ins.
Αλλά το υπόλοιπο του time-- και ο λόγος
ότι θέλουμε πραγματικά να σφυρί αυτό home--
είναι επειδή τις περισσότερες φορές αυτό είναι πρόκειται να τρέχει από το CDN,
και ακριβώς πρόκειται να τρέξει καθαρά από την πλευρά του πελάτη.
>> Κανονικά, δεν θα υπάρχουν αλληλεπίδραση με το plug-in,
ή δεν χρειάζεται καν να υπάρχει κάποιο λόγος για τον οποίο οι ίδιοι το plug-ins
στην πραγματικότητα είναι αποθηκευμένα στην υποκείμενες λιμενεργάτης παράδειγμα,
εκτός από την περίπτωση της η εξέλιξη αυτή SDK.
Έτσι και πάλι, αυτό αλλάζει μόνο ελαφρώς λόγω του γεγονότος
ότι θα είναι ανοιχτά λειτουργία SDK.
Είναι πρόκειται να φορτώσει στη συνέχεια εκείνες plug-ins από την ανάπτυξη,
και ο μοναδικός σκοπός εδώ είναι, έτσι ώστε Μπορώ να χρησιμοποιήσω Cloud 9 για να κάνει ανάπτυξη
για Cloud 9 plugins.
Αλλά ακόμα κι έτσι, αυτό δεν αλλάζει και πάλι πως κάποιο από αυτό λειτουργεί.
Είναι εξακολουθεί να τρέχει εξ ολοκλήρου από την πλευρά του πελάτη.
>> Σημαίνει απλά ότι κάθε φορά που θέλω να δημιουργήσετε Cloud 9 plug-ins στο Cloud 9,
Μπορώ να δημιουργήσω αυτά τα plug-ins, βάζουμε στο μου.
Φάκελο C9 / plugins στο σπίτι μου κατάλογο, βεβαιωθείτε ότι είμαι σε μια κατάσταση SDK,
τη φόρτωση της σελίδας κάθε φορά που στην πραγματικότητα κάνετε αλλαγές σε αυτό το plug-in,
και να δούμε τι θα συμβεί στο κονσόλα μου το JavaScript.
Απλά διαχειρίζονται JavaScript μου κονσόλα για να βεβαιωθείτε
ότι η αντιμετώπιση τυχόν προβλημάτων πληροφορίες που μπορώ να τοποθετήσω στην κονσόλα,
ή οτιδήποτε άλλο που θα μπορούσε να συμβεί λόγω σφαλμάτων που έχω γράψει
στον κώδικά μου ή κάτι παρόμοιο, φαίνεται ότι υπάρχει.
>> Και με αυτό, είναι πραγματικά αρκετά για να ξεκινήσετε, νομίζω,
με τα Cloud 9 plug-ins.
Ειδικά λαμβάνοντας μια ματιά στο SDK τεκμηρίωση που παρέχει Cloud 9.
Είναι ένας πολύ καλός τρόπος για να πάρετε άρχισε, και πολύ εύκολα
δημιουργήσει κάποια plug-ins για Cloud 9.
Και με αυτό, θέλω να ευχαριστήσω όλοι πάρα πολύ για την ένταξή μου.
Ελπίζω ότι θα έχετε τη διασκέδαση γράφοντας plug-ins για Cloud 9.
Ίσως βελτίωση plug-ins ότι έχουμε τώρα, ή ίσως ακόμη και
προσθέτοντας κάποια λειτουργικότητα της δικής σας.
Ανυπομονούμε να δούμε τι είναι αυτό που δημιουργείτε.
Μέχρι τότε, αντίο.