DAN Armendariz: Hello dan selamat seminar CS50 pada Customizing Cloud 9, dan IDE CS50. Jadi hari ini kita akan hanya bercakap sedikit mengenai beberapa maklumat teknikal yang pergi di belakang seni bina Cloud 9, dan bagaimana kami telah melaksanakan beberapa plug-in sebagai sebahagian daripada Cloud 9 untuk menyediakan CS50 IDE. Jadi mari kita hanya melompat kanan dalam dan mula bercakap tentang plug-in. Jadi plug-in yang benar-benar di teras pengalaman Cloud 9. Cloud 9 adalah teknologi yang digunakan yang menyediakan kepada kami IDE, dan juga tetingkap terminal di bawah, bersama-sama dengan workspace-- yang Ubuntu workspace-- yang kita gunakan untuk menyusun semua projek kita dan melaksanakan set masalah kita, melengkapkan set masalah kami. Tetapi di tengah-tengah semua itu, semua teknologi adalah benar-benar hanya sekumpulan plug-in. Segala-galanya adalah plug-in yang boleh diubah suai, dilanjutkan, anda boleh membuat sendiri plug-in anda, anda boleh mengeluarkan lain plug-in, untuk benar-benar mengubah cukup banyak fungsi yang Cloud 9 IDE yang sedia ada. Jadi ini adalah satu yang sedia ada Awan 9 alam sekitar. Ini adalah benar-benar hanya lalai Cloud 9 alam sekitar. Dan kita lihat bagaimana ia sebenarnya adalah berbeza daripada IDE CS50. Jadi ini adalah IDE CS50. Perhatikan bahawa terdapat beberapa visual perubahan antara tetap Cloud 9 alam sekitar dan IDE CS50. Secara khusus, anda akan dapati dua perubahan. Pertama sekali, ada sedikit menu untuk memulakan. Ada sebenarnya cara yang bahawa anda boleh mengubahnya. Ia dipanggil Mod Simple. Secara lalai, Mod Mudah didayakan dan yang memudahkan beberapa perkara menu. Ia membuang sebahagian daripada yang lebih maju, kerana terus-terang, banyak pelajar yang datang dalam dan tidak perlu untuk mengetahui tentang beberapa satu ciri-ciri yang lebih maju tidak terharu dengan sekumpulan pilihan. Tetapi kita menyediakan keupayaan untuk mengambil meninggalkan mereka yang dipanggil roda latihan dan mengeluarkan yang perancah supaya orang boleh menjadi lebih biasa dengan ciri-ciri canggih IDE. Dengan segera kepada kanan itu, ada juga butang debug, yang dalam standard Cloud 9 persekitaran hanya dipanggil jangka. Tetapi secara lalai, kita telah mengkonfigurasi butang debug di IDE CS50 untuk membawa penyahpepijat, secara automatik menyusun kod sumber, menyambung penyahpepijat untuk GDB-- asas dan sejak yang sedang berjalan untuk melaksanakan yang debugging-- dan beberapa langkah lain juga. Juga tetingkap terminal di very-- atau sebaliknya terminal tab di bahagian konsol di tingkap di bahagian paling bawah skrin, telah ditukar nama kepada hanya menjadi terminal. Manakala dalam standard Cloud 9 alam sekitar, ia sebenarnya menunjukkan menjalankan aplikasi. Dengan cara ini, ia memudahkan, sekali lagi, GUI, hanya sedikit. Kami juga menambah beberapa butang ke kanan atas IDE untuk menunjukkan beberapa maklumat asas tentang contoh asas. Dan juga kita telah membuang satu pilihan pada item dari bahagian paling kanan. Jadi semua ini dilaksanakan tidak dengan mengubah semestinya Cloud 9 kod sumber, tetapi bukannya melalui pasangan plug-in yang telah kami laksanakan sepanjang tahun lalu atau lebih. Dan Cloud 9 telah menjadi tuan rumah dan mempunyai berjalan di ruang kerja CS50. Atau lebih tepat dalam ruang kerja yang ditetapkan sebagai CS50 IDE. Jadi benar-benar itulah perbezaan utama antara Cloud 9 dan CS50 ruang kerja. Terdapat juga, dalam asas Contohnya, perubahan utama adalah yang kita memasang beberapa barangan pra-konfigurasi seperti GDB, dan beberapa perkara asas yang lain yang kami telah diwujudkan, seperti Update 50, dan beberapa langkah lain yang membuat keseluruhan pengalaman lebih sedikit bersatu. Tetapi secara keseluruhan, ini hanyalah pengubahsuaian sistem yang sedia ada yang Cloud 9 telah dicipta untuk kita. Apa yang kita akan menunjukkan sedikit kemudian adalah bagaimana untuk benar-benar membuat agak asas plug-in yang membolehkan kita untuk memasukkan sesuatu ke dalam sistem menu, dan membuka dialog. Dan jika kita mempunyai cukup masa, kita akan benar-benar lihat bagaimana kita boleh mengisi yang dialog dengan beberapa maklumat daripada contoh yang mendasari. Dalam usaha untuk kita untuk sampai ke mata, mari kita pertama bercakap sedikit mengenai seni bina Cloud 9. Jadi cara yang kami digunakan untuk berinteraksi dengan Cloud 9 sepenuhnya melalui pelanggan. Kita membuka penyemak imbas web, kita menaip CS50.io. yang Kami akhirnya, selepas pengesahan, dibentangkan dengan IDE. Tetapi sedar bahawa ada beberapa langkah yang benar-benar membawa kita ke tahap ini. Perkara yang pertama ialah pelanggan saya, penyemak imbas web, di atas permintaan dan selepas pengesahan, memuatkan GUI dan plug-in dari beberapa CDN, dari beberapa Rangkaian Penyampaian Kandungan. Ini boleh menjadi terus-terang di mana sahaja. Dan ini adalah benar-benar berasingan daripada contoh yang mendasari. Adalah penting untuk menyedari bahawa ini adalah sebenarnya hanya sekumpulan fail statik. Ia sekumpulan JavaScript yang turun dari CDN ke pelayar web saya, dan semua GUI yang anda melihat sini-- ini adalah benar-benar key-- semua GUI yang anda lihat di sini dijalankan pada sebelah pelanggan. Segala-galanya yang anda lihat di dalam Awan 9 ruang kerja sebenarnya berjalan dalam pelayar. Dan apa-apa yang anda hantar bersama-sama dengan contoh yang mendasari disampaikan dengan contoh di sepanjang saluran berasingan kedua, dan kemudiannya disimpan ke bahawa contoh buruh pelabuhan. Jadi sebab itu saya katakan ini adalah contoh buruh pelabuhan adalah bahawa teknologi yang mendasari tidak menggunakan mesin maya, tetapi sebaliknya menggunakan satu teknologi yang dikenali buruh pelabuhan, yang pada asasnya allows-- yang paling dekat analogi adalah mesin maya. Tetapi ia adalah secara halus berbeza dalam bahawa terdapat banyak peluang untuk menjalankan gabungan buruh pelabuhan yang berbeza contoh pada mesin tunggal. Dan mereka boleh diputar sehingga berturut-turut sangat pesat. Ia tidak cukup lebih pembezaan yang ketat antara contoh buruh pelabuhan yang berbeza kerana ada dalam mesin maya, tetapi masih ada banyak pembezaan dan pemisahan antara kedua-keadaan yang berbeza. OKEY. Jadi kedua-dua langkah di sini bahawa adalah penting untuk menyedari ialah apabila kita pergi ke CS50.io, kami memuat turun GUI dan plug-in, yang tertulis dalam JavaScript, pada kepada pelayar atau ke pelayar. Dan ini adalah mungkin pasangan megabait bernilai maklumat. Pada ketika itu, sebaik sahaja GUI mempunyai dimuat dan plug-in telah dimulakan, kemudian ia mula berkomunikasi dengan contoh buruh pelabuhan, yang tidak semestinya perlu menjadi pelayan yang sama. Sekarang terdapat satu pengecualian kepada ini. Kami benar-benar boleh mempunyai kedua-dua mekanisme penghantaran untuk GUI itu sendiri dan contoh buruh pelabuhan di semua pelayan yang sama, yang sebenarnya adalah sesuatu yang kita lakukan untuk versi luar talian Cloud 9. Ini bukanlah sesuatu yang kami telah publisiti amat Kejatuhan ini, tetapi kita juga mempunyai versi luar talian yang membolehkan anda untuk memuat turun dibungkus versi semua perkara-perkara dan membolehkan anda untuk menjalankan Cloud 9 dalam persekitaran yang di luar talian. Bergerak ini di luar awan dan ke mesin tempatan anda mempunyai beberapa kesan. Khususnya, anda tidak lagi mempunyai keupayaan untuk berkongsi ruang kerja anda dengan orang lain. Anda tidak lagi boleh membuka Cloud 9 dari, dan IDE CS50, dari mana-mana komputer dan melihat fail yang sama yang anda bekerja dengan sebelum ini. Tetapi sebaliknya ia berfungsi sepenuhnya pada mesin anda sendiri tempatan tanpa perlu akses kepada internet. Tetapi masih walaupun pada model itu, walaupun walaupun kita mempunyai satu mesin maya yang pada asasnya menjalankan perkara-perkara ini. Kami mempunyai pelayan yang berasingan iaitu menyampaikan dasarnya Cloud 9 kandungan, dan kemudian kita mempunyai contoh buruh pelabuhan yang bertanggungjawab untuk berkomunikasi dengan itu IDE untuk bahagian belakang. OKEY. Maka segenap GUI yang ditulis sepenuhnya dalam JavaScript menggunakan Node.js dan Cloud 9 SDK, yang kita akan dapat dalam masa satu minit. Dan semua plug-in sedang berjalan di sebelah pelanggan. Jadi mari kita memberi tumpuan maka sedikit dengan menganggap langkah pertama ini mempunyai sebenarnya siap dengan jayanya, dan melihat hanya atas kehendak buruh pelabuhan ini. Jadi dalam kes ini, ini adalah cara yang standard berfikir tentang melakukan Cloud 9 plug-in pembangunan adalah bahawa anda akan untuk menulis kod yang akan dijalankan dalam pelayar pengguna, dan anda mempunyai peluang untuk menggunakan beberapa API untuk berkomunikasi dengan buruh pelabuhan contoh asas, menjalankan beberapa kod di sana, dan melakukan apa-apa yang anda mungkin mahu lakukan. Jadi ini akan menjadi konteks bahawa kita akan akan menggunakan untuk sepanjang ceramah ini. Dan hanya menyimpan model ini dalam fikiran. Ini akan menjadi sangat penting dalam hanya beberapa minit. Ada beberapa pautan Saya hendak menunjukkan kepada anda. Pertama sekali, Cloud 9 telah menyediakan cukup banyak dokumentasi yang cukup baik, yang menunjukkan bagaimana untuk melakukan pembangunan pemalam asas. Jadi, jika anda pergi ke URL ini, cloud9-sdk.readme.io, anda akan lihat dokumentasi di sana. Dan banyak maklumat ini yang anda kira-kira untuk melihat juga boleh didapati di sana, dan banyak lagi. Anda juga boleh mencari sumber terbuka versi Cloud 9 di URL ini, github.com/c9/core, yang kita gunakan sebagai sebahagian daripada versi luar talian bagi IDE, supaya anda akan dapat mempunyai sama Cloud 9 pengalaman, tetapi dengan cara yang di luar talian. Baiklah. Jadi mari kita lihat pada sebenar Cloud 9 ruang kerja di sini. Dan sekali lagi, saya ingin menunjukkan daripada beberapa perkara. Ini, di sini, IDE CS50 normal. Dan saya telah dimatikan yang kurang mod selesa di bawah menu View supaya saya boleh melihat semua pilihan menu. Apa yang saya ingin menunjukkan kepada anda tepat sekarang adalah beberapa perkara. Mula-mula, jika saya pergi ke Keutamaan dan kemudian klik pada Plug-in pengurus, dan taip CS50 sini, kita dapat melihat bahawa terdapat, sebenarnya, beberapa CS50 plug-in yang telah dipasang dan berjalan kami untuk membolehkan pengubahsuaian yang kami telah dilihat untuk IDE CS50. Pada masa ini terdapat pada asasnya dua plug-in yang sedang berjalan. Ada satu dipanggil mudah, yang adalah cara yang dipermudahkan yang membolehkan anda untuk mengurangkan bilangan pilihan menu di sepanjang bahagian atas, dan telah apa yang dipanggil mod kurang selesa. Dan kemudian ada juga CS50 Stats, yang mungkin hanya sedikit misnamed. Kerana ini adalah apa menunjukkan anda maklumat yang mengenai ruang kerja asas. Ia menyuntik butang ini di sepanjang bahagian atas kanan. Ia juga menyuntik item menu ke dalam item tingkap, ke dalam menu Window di sini, CS50 IDE Info. Dan ia adalah bertanggungjawab untuk instantiating dialog ini yang kita lihat di sini, dengan semua maklumat yang kami biasa melihat dalam IDE CS50 ruang kerja. OKEY. Jadi ada sebenarnya satu lagi plug-in yang telah kita bangunkan juga. Dan ada beberapa orang lain yang kami juga tidak kepada orang ramai. Tetapi salah seorang daripada mereka adalah keseluruhan plug-in yang membolehkan GDB untuk berfungsi. Jadi salah satu aspek Cloud 9 adalah bahawa mereka telah menyediakan sudah GUI ini untuk melaksanakan penyahpepijat. Dan salah satu plug-in yang kami telah mencipta pada dasarnya cangkuk GDB dengan GUI ini versi berasaskan penyahpepijat. Dan bertanggungjawab untuk menjadi orang tengah semua daripada permintaan yang pengguna mungkin mempunyai, antara melangkah lebih atau mewujudkan titik putus atau apa-apa sepanjang garis, untuk menterjemahkan kepada arahan yang GDB dapat memahami, mengeluarkan arahan kepada orang-orang GDB. Dan sebaik sahaja GDB mengeluarkan jawapan, kemudian kita mentafsirkan itu dan mengemas kini GUI seperti yang diperlukan. Itu mungkin salah satu daripada yang lebih rumit plug-in, jadi bukannya apa yang kita akan memberi tumpuan kepada hari ini adalah sebenarnya yang Stats plug-in, dan kita akan bincangkan sedikit tentang Mudah, juga. Jadi saya nyatakan sebelum ini, dan saya benar-benar mahu untuk membuat yang sangat, sangat jelas, bahawa sekali lagi, semua ini bahawa kita lihat di sini pada asasnya yang beroperasi di sebelah pelanggan. Kami ada melihat tetingkap terminal di bawah, dan, sudah tentu, jika kita menaip arahan ke dalam itu, yang akan kemudian mengeluarkan kepada contoh asas. Begitu juga, jika kita membuka fail baru dan menaip beberapa barangan ke dalamnya dan menyimpannya, fail yang akan disimpan pada atas kehendak asas. Tetapi editor itu sendiri, ini tetingkap terminal itu sendiri, adalah semua dilaksanakan di JavaScript dan semua pemalam yang kita boleh berinteraksi dengan, dan oleh itu mengubah suai. Ada banyak diperpanjang di sini. Saya cadangkan mengambil melihat di akaun GitHub Cloud 9 ini untuk melihat kuantiti besar plug-in yang ada, dan bagaimana yang ditulis dengan baik banyak kod ini adalah untuk diperpanjang. Jadi ada sesuatu yang saya ingin menyebut mengenai ini dan juga, yang bahawa terdapat banyak daripada- ada banyak fungsi itu disediakan dalam pilihan tingkap, yang kami telah lihat hanya dirujuk kepada hanya beberapa minit yang lalu. Salah satu perkara yang boleh kita lakukan sebagai IDE pemaju, atau sebagai Cloud 9 pemaju, adalah untuk benar-benar menyuntik panel pilihan kita sendiri. Jadi mod mudah, atau mod kurang selesa, dan juga maklumat IDE, atau statistik plug-in, mempunyai setiap keutamaan beberapa panel yang membolehkan kita untuk mengubah suai kelakuan setiap daripada mereka. Anda akan melihat bahawa jika saya pergi ke Keutamaan dan pergi ke Tetapan pengguna, ada tab CS50, satu yang mengatakan maklumat IDE. Dan saya boleh menukar maklumat kadar muat semula. Berkesan, apa yang berlaku dalam statistik plug-in ialah setiap n-saat, di mana n-saat ditakrifkan oleh keutamaan ini panel, maklumat sedang diambil daripada contoh asas, dihantar kembali kepada pihak pelanggan, plug-in kemudian mentafsir maklumat yang daripada contoh yang mendasari dan mengemaskini GUI seperti yang diperlukan. Kita dapat melihat bahawa sekarang ini ditetapkan 30 saat, dan itulah lalai. Tetapi saya pasti boleh mengubah berapa cepat ini berlaku hanya dengan mengubah nilai ini. Sekarang salah satu perkara yang menarik adalah bahawa panel keutamaan ini, GUI, adalah benar-benar hanya versi GUI daripada banyak tetapan asas yang dibentangkan dalam JSON. Jadi, jika saya pergi, sebagai contoh, di bawah Menu CS50 IDE, atau menu Cloud 9, bergantung kepada versi yang anda cari pada, dan pergi ke salah satu settings-- dalam kes ini, projek settings-- yang tetapan projek dalam kes ini terpakai kepada semua tetapan untuk satu ruang kerja ini. Manakala tetapan pengguna memohon kepada semua ruang kerja bahawa anda mungkin mempunyai dalam akaun anda. Jadi hanya sebagai diketepikan di sini, supaya lebih jelas, ada pemisahan antara dua kerana walaupun oleh kita lalai mempunyai satu ruang kerja, yang adalah IDE CS50, jika anda adalah untuk klik pada kecil anda avatar di sini dan pergi ke papan pemuka, anda akan mendapati bahawa anda boleh sebenarnya mewujudkan ruang kerja tambahan juga. Anda boleh lihat di sini bahawa saya mempunyai IDE 50 ruang kerja, dan juga bagi maksud ini seminar, ruang kerja dipanggil ruang kerja, yang di sini. Jadi anyway, Saya mempunyai keutamaan yang berbeza. Seorang demi mungkin mempunyai keutamaan projek yang berasingan, tetapi pilihan utama pengguna adalah dikongsi bersama semua ruang kerja saya. Dengan cara ini, ini adalah juga sangat berguna jika anda mahu mewujudkan ruang kerja dengan pilihan penyesuaian yang berbeza. Dan ia sangat berguna untuk mewujudkan ruang kerja yang baru. Dan memilih salah satu yang mungkin pra-konfigurasi dalam beberapa cara lain, mungkin untuk PHP secara khusus, atau Django secara khusus. Atau bahkan hanya adat. Ruang kerja CS50 Template adalah salah satu yang kita menggunakan yang secara automatik memasang Update 50 dan semua tetapan yang kita ada di sana, termasuk semua plug-in yang kita ada untuk IDE CS50. OKEY. Tetapi mari kita kembali kepada ini. Jadi sekali lagi, terdapat projek-projek tetapan, dan mereka adalah orang-orang yang kita cari di sini. Dan perhatikan bahawa terdapat adalah sekumpulan tetapan, ramai di antara mereka sesuai dengan keutamaan panel, tetapi tidak semua daripada mereka. Tetapi kita dapat melihat bahawa di sini, dalam this-- oh tidak, adakah saya memasukkannya ke dalam tetapan pengguna? Mungkin saya memasukkannya ke dalam tetapan pengguna. Dan ini, di sini kita pergi. Dalam tetapan pengguna, kita boleh melihat bahawa kita mempunyai bahagian CS50, dan ini sedang ditulis oleh ini Cloud 9 plug-in yang telah kami sediakan. Ada satu yang mudah kepada sesuai dengan yang mudah plug-in, dan statistik satu yang sepadan dengan yang berasaskan GUI versi panel keutamaan. Kadar segar semula pada yang demikian kes, bersedia untuk 20 saat. Ini semua, mudah-mudahan, permulaan beberapa maklumat bahawa kita benar-benar akan lihat dalam sedikit sedikit lebih terperinci, seketika. OKEY. Jadi mari kita mengatakan bahawa kita mahu sebenarnya turun kepadanya. Kami memahami bahawa semua barangan yang yang yang berlaku di sebelah pelanggan dilakukan sebenarnya pada pelayar, yang bermakna bahawa mana-mana pemalam yang saya tulis akan ditulis dengan penyemak imbas dalam fikiran. Dan jika saya benar-benar mahu lakukan apa-apa pada ruang kerja, Saya mungkin perlu memulakan beberapa jenis komunikasi antara pelayar dan ruang kerja untuk memastikan bahawa yang sebenarnya dicapai. Tetapi mari kita mengatakan bahawa sekarang Saya hendak turun kepadanya dan benar-benar mewujudkan pertama plug-in saya. Nah, cara yang anda akan dapat untuk berbuat demikian adalah sebenarnya cukup mudah. Ia diberikan dalam Cloud 9 SDK. Tetapi ia mengambil anda nama ruang kerja yang sedia ada, yang adalah URL yang anda ada di bahagian atas bar anda, dan menambah yang berikut kepadanya. ? SDK = 1 & debub = 2. Sekarang apa ini akan membolehkan adalah yang SDK = 1 benar-benar akan menetapkan SDK mod kepada benar, yang akan membolehkan beberapa perkara tambahan. Dan debug = 2 membolehkan mesej ralat untuk menjadi sedikit lebih banyak cakap. Dan jadi jika anda membawa JavaScript Konsol dalam tab pemaju Chrome anda, anda sebenarnya akan dapat melihat maklumat lebih banyak daripada apa yang anda akan sebaliknya. Jadi saya cadangkan menukarkan kedua-dua ini pada masa yang sama, kerana ia benar-benar adalah berguna untuk mempunyai semua ini informasi tambahan. Adalah penting untuk ambil perhatian, bagaimanapun, bahawa menghidupkan debug dengan nilai 2 bermaksud bahawa ia adalah sangat banyak cakap, dan ia sebenarnya akan agak nyata melambatkan IDE anda, terutamanya apabila loading atau apabila tidak melakukan tugas-tugas berat. Jadi hanya menyimpan bahawa dalam fikiran. Ia berguna untuk pembangunan, tetapi anda mungkin tidak mahu mempunyai ia pada setiap masa. Jadi mari kita benar-benar melakukan itu. Tetapi dalam kes ini, saya benar-benar mempunyai sudah menyediakan ruang kerja dengan ini. Jadi mari kita lihat, SDK = 1 & debug = 2. Dengan beberapa plug-in mudah-mudahan telah dipasang. Baiklah. Jadi sekarang bahawa saya telah menghidupkan debug SDK mod, notis bahawa kita berada dalam mod debug, jadi kita boleh melihat alat dev untuk melihat sebarang kesilapan, yang saya akan lakukan rahasia. Kita dapat melihat bahawa ada sekumpulan kesilapan di sini. Sekarang ia sebenarnya cukup umum untuk Cloud 9 untuk mempunyai beberapa kesilapan, dan saya tidak akan bimbang tentang mereka sehingga anda melihat sesuatu yang mungkin khusus kepada plug-in yang anda berlaku untuk mencipta. Jadi di sini, sebagai contoh, kita akan mendapat beberapa 404s-- tidak dijumpai. Kami melihat kami tidak dapat muatkan beberapa maklumat di luar contoh yang mendasari sendiri. Dan ada sekumpulan tambahan maklumat, tetapi sebahagian besar daripada ini kami sebenarnya akan mengabaikan buat masa ini. Oleh kerana ini adalah cukup sama untuk ruang kerja untuk mempunyai hanya beberapa kesilapan. OKEY. Saya akan bergerak ini daripada jalan dan datang ke sini. Dan kini cara yang mudah, yang bagus Perkara tentang mempunyai pemaju ini mod yang aktif adalah bahawa ia membolehkan saya dengan mudah membuat yang baru plug-in. Jadi sedangkan sebelum saya benar-benar tidak mempunyai pilihan plug-in baru ini ada, mana kita boleh melihat jika saya kembali ke mod pembangun bukan saya di sini, tidak ada baru plug-in. Dengan membolehkan mod SDK, saya mempunyai plug-in baru yang tersedia dan saya boleh membuat satu. Dalam kes ini, ada pasangan pilihan yang berbeza, mudah, plag masuk kosong, pemalam sepenuhnya, pemasang, Cloud 9 bundle. Mari kita memilih kosong plug-in untuk sekarang supaya kita dapat melihat yang sangat Versi mudah satu. Sekarang perhatikan bahawa di sepanjang sebelah kiri yang ada di sana kini sesuatu di bawah Kegemaran, yang menyenaraikan beberapa plug-in yang telah sedia ada kepada saya. Jika saya berkembang itu, kita akan dapat melihat orang-orang. Sekarang saya mahu anda untuk notis sesuatu di sini, yang adalah bahawa ini tidak benar-benar terkandung dalam direktori ruang kerja pada asas Ubuntu contoh saya, tetapi ia terkandung di dalam cakera keras. Dan di mana ini terletak, kerana ini adalah sangat berguna untuk mengetahui, terutamanya jika anda akan melakukan apa-apa dengan Git, di mana ini terletak adalah dalam folder .c9, / plugin. Jadi, jika saya pergi ke sana, kita dapat melihat bahawa sekarang senarai plug-in yang di sini perlawanan senarai plug-in yang saya lihat di bahagian kiri ruang kerja saya. Kini secara lalai dan ini adalah jenis pelik, secara lalai apabila saya membuat baru plug-in di ruang kerja, ia mewujudkan plug-in ini dengan lalai mempunyai nama garis bawah. Secara umumnya yang mungkin menyebabkan beberapa masalah. Jadi langkah yang akan datang yang saya biasanya melakukan hanya untuk membuang yang tertentu plug-in dan meninggalkan hanya plug-in yang mudah bahawa berada di sana pada mulanya, plugin.simple. Dan itulah satu-satunya yang ada. OKEY. Jadi apakah ini benar-benar kelihatan seperti? Nah, ini adalah, sekali lagi, pakej JavaScript yang termasuk beberapa fail, termasuk fail plugin.js, di mana kandungan utama plug-in saya terletak, fail package.json, yang sebenarnya menentukan beberapa metadata mengenai ini plug-in, seperti yang penulis adalah, apa-apa maklumat tentang hal itu, yang perihal plug-in, dan sebagainya. Dan juga secara lalai, ia mencipta fail README kosong, dan fail ujian kosong untuk anda membuat beberapa dokumentasi tambahan, dan abah-abah ujian jika anda ingin berbuat demikian. Jadi mari kita lihat yang pertama di, dengan cepat, pada fail package.json itu. Ia cukup mudah untuk hanya pergi melalui ia dan mengisi dalam bidang ini yang anda akan mahu untuk mengisi, seperti menyediakan nama, memberi penerangan, melelar nombor versi sering sekali, menyediakan seorang pengarang bagi tiap-tiap orang yang menyumbang, menambah mereka kepada penyumbang seksyen, dan yang lain daripada anda ini boleh cukup banyak hanya meninggalkan kerana ia adalah untuk sekarang. Ada satu perkara yang penting untuk mengetahui, bahawa di bawah seksyen plug-in, ada kunci yang dipanggil plug-in. Dan ini dipadankan dengan nama fail JavaScript yang dipanggil plugin.js. Jadi ini adalah bagaimana Cloud 9 tahu, apabila ia membaca fail package.json ini, yang daripada js fail untuk benar-benar memuatkan. Jika saya membuat fail js tambahan atau mahu untuk menamakan semula fail js dari plug-in, Saya juga perlu mengubahnya dalam fail package.json itu. Sebarang soalan daripada penonton? No. Bahawa seorang yang berikut bersama-sama dengan saya setakat ini. OKEY. Jadi saya sebenarnya telah mencipta satu beberapa plug-in sudah, Saya fikir, dalam ruang kerja ini. Jadi mari kita menghilangkan beberapa ini, tambah SDK = 1 & debug = 2, tambah nilai ruang kerja ini, dan mari kita lihat jika kita mempunyai orang-orang plug-in sekarang. C9 / plugin. Di sini kita pergi. Kita boleh lihat sekarang di C9 / plugin saya ini satu, kita mempunyai plugin.1 dan plugin.2. Jadi, kita akan hanya meningkatkan the-- hanya meningkatkan jumlah kesukaran dalam ketiga-plug-in. Tetapi di sini jika saya membuat plug-in baru, Saya boleh menambah ke kegemaran saya. Dan saya hanya akan memadam mereka dari sistem fail asas. Mari kita keluarkan itu. Sekarang jika saya membuka pertama saya plug-in, dan plugin.js terbuka, kita boleh lihat di sini yang mendasari versi mudah plug-in. Biar saya sebenarnya kembali untuk ruang kerja lain ini kerana anda boleh sekurang-kurangnya, di sini melihat, apa yang pemalam kosong sebenarnya kelihatan seperti. Jadi di bawah hood, ini kelihatan hampir sama dengan teknologi yang dipanggil, Saya fikir, ia RequireJS. Perhatikan bahawa ini tidak benar-benar kelihatan, mungkin, yang sama seperti beberapa JavaScript lain fail yang kita boleh lihat. Tetapi sebaliknya, ada beberapa sahaja garis asas bahawa ia sebenarnya mempunyai. Semua barangan ini adalah pertama ditafsirkan oleh IDE, tetapi ia tidak benar-benar berjalan sehingga dinyatakan. Dan saya akan memberitahu anda tentang apabila itu sebenarnya bermaksud dalam hanya seketika. Tetapi perhatikan bahawa di sini ada garis main.consumes selaras 2, dan ini menyenaraikan semua plug-in yang pemalam ini adalah bergantung kepada. Jadi secara lalai, kita mungkin tidak mempunyai sebarang kebergantungan pada plug-in, tetapi apabila kita benar-benar perlu bergantung kepada ciri-ciri yang dibekalkan oleh yang lain plug-in dalam IDE, kita perlu senarai pemalam selaras main.consumes itu. Dan kemudian kita perlu menghubungkan mereka kepada kod di bawah, yang saya akan menunjukkan kepada anda hanya dalam sejenak tentang bagaimana kita boleh berbuat demikian. Main.provides memberikan menamakan ini plug-in yang lain plug-in boleh menggunakan selaras consumes mereka. Jadi dalam kes ini, saya plug-in hanya menetapkan di sana secara lalai, dan kita harus menukar bahawa untuk menjadi terpakai kepada plug-dalam kita sendiri, seperti yang kita akan lihat dalam masa adil. Sekarang di sini dalam fungsi utama, ini fungsi utama sebenarnya berlari dan ditafsirkan, tetapi itu tidak benar-benar melakukan sangat banyak. Ia hanya mendapat segala-galanya disediakan, tetapi ia sebenarnya tidak memulakan plug-in, walaupun apa nama yang kedengaran seperti. Yang benar-benar berlaku melalui urutan kaedah yang terkandung di pemalam ini. Jadi, jika saya tatal ke bawah, kita dapat melihat bahawa kita mempunyai kitaran hidup di mana pada beberapa beban acara yang dipanggil, atau peristiwa beberapa dipanggil memunggah, beberapa peristiwa sebenarnya berlaku. Ia benar-benar di sini di mana sebagai plug-in bermula bahawa orang-kaedah yang dipanggil. Jadi mari kita menjadi sedikit lebih konkrit mengenai ini dan melihat contoh. Jadi di sini untuk plugin.1, apa kita pada dasarnya akan melakukan adalah untuk mewujudkan satu item menu dipanggil CS50 Seminar Dialog 1-- kerana kita mempunyai dua daripada mereka, kelak dan kita akan untuk menyuntik ke dalam menu Window. Dan apabila kita klik padanya, kami akan membuka dialog yang menunjukkan kepada kita beberapa maklumat yang sangat asas. Dalam kes ini, hanya dunia hello. Jadi ini adalah satu yang sangat mudah hello dialog dunia bahawa kita boleh melaksanakan sebagai plug-in di Cloud 9. Jadi mari kita lihat bagaimana ini sebenarnya kelihatan. Kami akan melangkah melaluinya, hanya agak cepat jadi kami boleh melihat plug-in yang akan datang juga. Perhatikan bahawa di sini kita memakan pelbagai plug-in. Kami memakan dialog plug-in, arahan, menu, dan UI. Nampaknya saya sebenarnya sedang mengambil dialog dua kali, jadi saya boleh membuang itu. Dan perhatikan bahawa cara bahawa saya menghubungkan mereka, ini adalah jenis metadata yang yang memberitahu sistem plug-in apa keperluan sebenarnya perlu untuk ini plug-in untuk memuatkan. Ia juga penting untuk ambil perhatian bahawa perintah itu bahawa plug-in yang dimuatkan tidak dijamin. Tetapi apa yang paling adalah bahawa jika saya menentukan beberapa plug-in sebagai satu keperluan, yang plug-in akan dimuatkan sebelum satu ini dimuatkan. Ini bermakna bahawa jika plug-in anda memerlukan pada beberapa fungsi yang disediakan oleh sesuatu yang lain dalam IDE, anda harus pastikan bahawa consumes plug-in anda yang plug-in supaya kebergantungan pasti untuk membuat plug-in anda, atau instantiate plug-in anda, hanya selepas rangka kerja yang sedia ada wujud. Jadi di sini saya telah menyebut metadata kepada pengurus plug-in, yang mana saya akan makan. Dan dalam fungsi utama di sini, Saya akan kemudian sambung kod saya kepada orang-orang yang diimport plug-in. Jadi, saya hanya akan membuat beberapa pembolehubah yang sesuai dengan nama-nama setiap orang-orang supaya bahawa saya dengan cepat boleh rujukan mereka seluruh kod saya. Sebab saya mengimport dialog adalah kerana saya ingin plug-in saya untuk bertindak sebagai dialog plug-in. Dan cara yang saya dapat untuk berbuat demikian adalah untuk, sudah tentu, menyambung kod saya kepada dialog plug-in dengan mengimport ia dan kemudian dengan menyatakan oleh mewujudkan dialog pembolehubah baru dan menyambungkannya ke yang diimport plug-in. Dan kemudian dengan menentukan saya plug-in sebagai dialog baru. Jadi dalam pengawalan, saya hendak menentukan plug-in saya. Dan berubah-ubah ini dipanggil plug-in anda akan melihat hanya digunakan biasanya sepanjang Cloud 9 plug-in. Saya akan memberi contoh yang baru dialog dengan beberapa ciri-ciri, memberikan nama tertentu, mengatakan bahawa ia adalah mungkin untuk pengguna untuk menutupnya. Bahawa ia akan menunjukkan x sedikit dalam sudut kanan atas, atau butang kecil di sebelah kanan yang lebih rendah. Sama ada atau tidak saya boleh memilih teks daripada dan apa tajuk dialog yang akan, dan sebagainya. Sekarang ini hanya mentakrifkan dialog itu, tetapi ia tidak lagi menunjukkan ia. Saya benar-benar perlu untuk mentakrifkan tindakan kerana ia akan ditunjukkan. Dan sekali lagi, saya menggalakkan anda untuk kita lihat di Cloud 9 SDK, kerana terdapat pelbagai dialog dan mereka benar-benar didokumentasikan dengan baik. Anda boleh melihat jenis yang berbeza bahawa terdapat, dan menggunakannya dalam apa jua plug-in yang ada dalam fikiran. Sekarang ada akan menjadi seksyen beban, dan beban ini fungsi seperti yang anda ingat adalah digunakan oleh kitaran hayat plug-in untuk benar-benar instantiate segala-galanya dan mendapatkan semua yang bersedia untuk pergi. Maka apabila ini banyak plug-in, saya tidak mahu ia segera dipaparkan dialog, kerana pemalam ini akan memuatkan bersama-sama dengan seluruh IDE. Dan apabila saya memuatkan IDE itu, saya tidak mahu dialog untuk menunjukkan secara automatik. Saya hanya mahu untuk menunjukkan apabila saya klik pada pilihan menu dalam item menu Window saya bahawa saya akan menambah kepadanya seketika. Jadi ada dua langkah berbeza di sini yang perlu berlaku. Saya perlu membuat perintah dan arahan akan bertanggungjawab untuk benar-benar menunjukkan dialog mengenai Cloud 9 IDE. Dan kemudian saya perlu menyambung, saya perlu membuat menu tetingkap baru perkara, yang berjalan perintah itu. Supaya apabila saya klik pada tetingkap yang item menu, perintah yang kemudian run dan oleh itu dialog saya kemudiannya ditunjukkan. Dan sebagainya ini sebenarnya yang cukup cara yang baik untuk berfikir mengenainya. Kerana pertama saya boleh membuat perintah yang namanya CS50 Seminar Dialog 1, yang menyediakan beberapa konteks umum untuk itu. Dan sedikit yang penting di sini adalah untuk notis sifat EXEC, yang menyenaraikan fungsi yang akan dipanggil dalam pemalam saya apabila arahan ini dijalankan. Jadi arahan ini adalah jenis seperti a-- ia hanya sewenang-wenangnya Cloud 9 arahan yang boleh didapati kepada mana-mana Cloud 9 plug-in. Tetapi fungsi sebenar bahawa itu akan memanggil apabila arahan ini dijalankan adalah fungsi persembahan dialog dalam fail plugin.js saya. Dan kita sebenarnya boleh melihat plugin ini dan senarai arahan yang disediakan untuk kami dalam Keutamaan, tatal sepanjang jalan down-- mari kita lihat, sebenarnya yang kita lihat ini sekarang? Plug-in pengurus, tidak, saya fikir saya-- ia pasti di sekitar sini suatu tempat. Nah, ada senarai arahan di suatu tempat, tetapi saya mesti mempunyai, Saya terlupa di mana ia. Jadi OK, kami akan bergerak ke atas. Baiklah. Oleh itu, kita mempunyai senarai arahan yang ada pada kita, dan mereka arahan adalah ini hanya sewenang-wenangnya Cloud 9 arahan yang menjalankan kod tertentu. Jadi hanya menyimpan bahawa dalam fikiran, yang kita akan menjalankan dialog persembahan berfungsi seketika. Sekarang apabila saya benar-benar mahu untuk menambah menu perkara, saya boleh menambah item dengan jalan, dan hanya menyatakan dengan tepat di mana saya mahu ia menjadi, Window / CS50 Seminar Dialog 1. Dan pada ketika itu, saya ingin untuk membuat item baru yang akan menjalankan perintah, CS50 Seminar Dialog 1. Perhatikan bahawa sekali lagi, ini adalah Cloud 9 arahan saya telah membuat di atas. Sekarang saya juga ingin mewujudkan pembahagi sedikit, dan saya boleh melakukan perkara yang sama di baris berikutnya. Sekarang anda mungkin melihat bahawa sebagai sebahagian daripada menentukan item menu ini, ada sebilangan yang berkaitan dengannya yang sebenarnya mengatakan di mana sebenarnya Saya mahu bahawa item menu untuk menjadi terletak dalam senarai menu. Tetapi anda mungkin notis bahawa saya tidak benar-benar melihat apa-apa nombor dengan menu ini, secara lalai. Jadi ada satu perkara yang tersembunyi kecil yang boleh kita lakukan, perubahan sedikit ke URL kami. Jadi sebagai tambahan kepada SDK = 1 & debug = 2, Saya akan menetapkan menu untuk 1-- dan mudah-mudahan ia menu, tidak menu. Oh, itu menu = 1. Berpegang. Dan apa yang kita akan dapat melihat apabila tambah nilai yang IDE adalah bahawa saya masih dalam mod debug, tetapi kini terdapat nombor dikaitkan dengan semua menu. Dan ini memberitahu anda apa jumlah adalah apabila anda cuba untuk menyuntik sesuatu yang mana-mana sahaja dalam sistem menu ini. Jadi, dalam menu Window, saya boleh melihat bahawa item 45 adalah bekerjasama, dan item 38 sebelum ia pemasang. Jadi, apabila saya mahu menyuntik item di antara itu; Saya hanya akan memilih sebilangan antara kedua-dua item. Lalu aku mengambil 41 dan dimasukkan Seminar saya Dialog item 1 menu di lokasi tersebut. Dan itulah sebabnya nombor ini yang muncul di sini adalah nombor 41. Itulah lokasi yang perkara menu di dalam menu Cloud 9. Sekarang juga, saya mahu untuk mewujudkan pembahagi dan menambah supaya ada adalah baik yang bahagian antara setiap menu ini item. Jadi, saya berkata pada lokasi 43. Setakat ini, begitu baik, saya berharap? Jadi sekarang mari kita sebenarnya melihat kod tertentu dalam dialog persembahan itulah sebenarnya bertanggungjawab untuk membuka tetingkap dialog ini. Menatal ke bawah, saya melihat bahawa saya mahu untuk mempunyai ini dialog menunjukkan fungsi, dan ia adalah amat mudah. Saya akan menganjurkan program itu kaedah ke atas pembolehubah plug-in. Dan ingat bahawa kita ditakrifkan ini plug-dalam pembolehubah di atas sebagai dialog. Jadi bar plug-in, dalam kes ini, adakah ini objek yang kita telah ditakrifkan secara dalaman. Dan ia akan menjadi dialog baru yang terkandung dalam ini plug-in. Dan supaya kita benar-benar dirujuk ini plug-dalam pembolehubah di banyak tempat dalam biasa Cloud 9 persekitaran pembangunan. Kita lihat di sini. Perhatikan bahawa seperti yang kita tatal ke bawah, ada kitaran hidup tambahan. Jadi notis yang bertindak balas ini untuk peristiwa-peristiwa yang dipecat oleh objek ini, objek dialog ini. Secara lalai, ada memuatkan dan memunggah, yang disediakan untuk semua Cloud 9 plug-in. Tetapi sekiranya berlaku dialog ini, ada acara lain yang boleh kebakaran serta dipanggil Menarik, yang dipecat apabila yang hampir akan dilukis pada skrin, pada mulanya dialog yang menunjukkan. Oleh itu, apabila ia sebenarnya akan dipaparkan, ada akan berikan kepada kami beberapa HTML. Dan dengan hanya menggunakan standard Amalan HTML boleh kita menyuntik beberapa maklumat yang sangat mudah, dunia hello kami, dalam dialog itu. Jadi, jika kita kemudian tatal ke atas, kita boleh melihat maka perarakan perkara bahawa ia berlaku. Mula-mula kita mewujudkan satu arahan Cloud 9 yang apabila dilaksanakan oleh Cloud 9, akan api fungsi ini. Ia akan menjalankan fungsi ini dipanggil rancangan dialog, bahawa saya telah ditulis dalam kod saya. Saya telah mencipta item menu dan melekat padanya perintah yang sama bahawa apabila item yang diklik dalam menu, ini perintah kemudiannya menjalankan dan fungsi yang kemudian berjalan. Dan di dalam majlis itu saya hanya akan memanggil the-- Saya hanya akan melaksanakan rancangan tersebut kaedah plug-in ini, yang akan panggilan pertama kaedah cabutan, dan pergi api kaedah ini ke bawah di bawah, menarik pengendali peristiwa, dalam kitaran hidup kita. Dan kemudian ia akan benar-benar menunjukkan dialog. Terdapat juga kaedah menyembunyikan, supaya jika saya memerlukan peluang untuk menyembunyikan dialog saya, saya boleh melakukan perkara yang sama. Jadi, itu cukup banyak ia untuk mendapatkan semua ini untuk bekerja. Perhatikan itulah jika kita tatal ke bawah lagi ada API awam pembekuan. Ini pada dasarnya hanya berkata bahawa saya mahu kaedah ini dengan berkesan didedahkan, tetapi tidak overwriteable di luar konteks ini plug-in. Dan di bawah, di bahagian paling bawah, mungkin perkara terakhir yang kita benar-benar perlu membayar banyak perhatian kepada di sini, yang adalah bahawa kita akan mendaftar kami plug-masuk dengan nama C9 Seminar 1, dan objek plug-in. Yang seperti yang anda akan ingat, adalah plug-in yang plug-in yang objek yang kita telah menentukan sepanjang keseluruhan daripada sumber ini kod. Dan C9 Seminar 1 adalah tali yang kita janjikan untuk menyediakan di bahagian atas definisi di atas. OKEY. Jadi mari kita meningkatkan ia sehingga sedikit dan lihat jika kita boleh melakukan sesuatu sedikit lebih menarik. Sekarang ini hanya begitu besar. Maksud saya, ini adalah, ia sebenarnya cukup menyejukkan bahawa daripada beberapa baris kod, kita boleh mengubah suai IDE yang sedia ada dan menambah item menu yang sedia ada atau menambah item menu baru, menambah perintah, dan menunjukkan dialog, dan hanya sekumpulan fungsi yang wujud. Ia benar-benar cukup hebat. Tetapi ia tidak berbuat banyak kerana ia tidak boleh berkomunikasi dengan Ubuntu asas misalnya. Jadi katakan bahawa saya sebenarnya ingin mengetahui beberapa maklumat mengenai asas Ubuntu contoh, seperti statistik plug-in tidak. Jadi mari kita lihat pada sedikit maklumat lanjut tentang bagaimana statistik plug-dalam kerja-kerja. Dan sebenarnya, ia adalah hampir sama dengan ini. Anda mungkin masih ingat bahawa ada dialog. Anda mungkin ingat bahawa ada beberapa maklumat itu ditunjukkan hanya di sepanjang bar menu di sepanjang bahagian atas, yang mudah-mudahan anda kini berada mendapatkan rasa bagaimana kami melaksanakan ini, hanya dengan memasukkan perkara menu di tertentu mata dan oleh instantiating dialog dan memaparkan dialog itu. Tetapi kita belum lagi ditunjukkan anda bagaimana kita boleh menyambung kepada satu arahan dalam asas Ubuntu misalnya. Jadi mari kita lihat kemudian pada plugin.2, yang melakukan dengan tepat perkara ini. Kami akan membuka plugin.js, yang merupakan kod untuk ini. Tetapi di bawah menu Window, jika saya klik pada dialog 2, kita dapat melihat bahawa ia mengatakan ini sebaliknya, hello CS50, yang tidak kelihatan semua menarik, bukan? Kecuali, menonton ini. Biar saya mengubah sesuatu di sini. Saya akan pergi ke saya ruang kerja dan perubahan seminar untuk mengatakan sesuatu yang lain, seperti Hello, Dan. Saya akan menutupnya dan menyimpannya. Dan sekarang saya akan dikendalikan semula item menu dialog saya. Dan perhatikan bahawa ia mempunyai kini berubah apa yang dikatakannya. Hello, Dan. Saya seolah-olah telah melakukan sesuatu ke bawah di sini di Ubuntu contoh yang mendasari tanpa apa-apa dimanipulasi kod yang lagi sedang berjalan semata-mata di sebelah pelanggan. Jadi ada jelas beberapa jenis komunikasi yang yang berlaku di sini. Sekarang ini adalah di mana banyak daripada kuasa Cloud 9 SDK masuk, adalah bahawa dalam plugin.2 ini, kita sebenarnya boleh menyebabkan panggilan untuk berlaku kepada contoh asas, dan menjalankan beberapa arahan sewenang-wenangnya. Jadi dalam kes ini, saya telah benar-benar mencipta skrip bash sangat mudah dalam ruang kerja saya dipanggil Seminar. Jadi biarlah saya membuka bahawa sehingga. Dan kita boleh melihat bahawa ia kelihatan seperti ini. Ia hanya satu sambutan yang sangat mudah skrip yang tujuan utamanya dalam hidup akan menjadi echo daripada teks ini, Hello, Dan. Atau di hadapannya, katanya Hello, CS50. Dan itu semua ia akan lakukan. Kerana ini kini merupakan perintah bahawa saya boleh berjalan. Saya benar-benar boleh menjalankan ia di sini. Kita dapat melihat bahawa ia sebenarnya hanya arahan yang saya jalankan secara semula jadi. Saya boleh meminta plug-in saya untuk melaksanakan ini arahan pada ruang kerja yang mendasari dan menghuraikan maklumat yang yang telah kembali daripadanya, dan melakukan sesuatu dengan itu, dan mengubah suai saya plug-in dan tingkah laku yang saya ada dalam plug-in saya sebagai hasilnya. OKEY. Jadi mari kita lihat bagaimana ini berlaku. Kami melihat ini sangat mudah Seminar skrip kelompok yang saya [Didengar] bahawa ia sebenarnya boleh berjalan. Dan sekarang mari kita lihat pengubahsuaian yang diperlukan untuk mengikat ini bersama-sama dengan tetingkap dialog, dan menjalankannya. Jadi di sini kita akan melakukan cukup banyak perkara yang sama seperti yang kita lihat sebelum ini. Tetapi perhatikan bahawa di antara perkara-perkara yang saya telah digunakan sekarang-- selain daripada dialog itu, yang sekali lagi saya berlaku telah dilakukan sebanyak dua kali, yang tidak necessary-- tambahan kepada dialog dan arahan dan menu plug-in, yang perlu dalam yang pertama bagi saya untuk menentukan arahan baru dan menyuntik item ke menu, Saya juga mempunyai proc ini plug-in. Dan proc pemalam ini membolehkan kita untuk memanipulasi proses pada contoh yang mendasari. Saya telah menyambungkan selepas saya telah berkata, plug-in saya memerlukannya. Saya kemudian disambungkan kepada kod, seperti yang kita lihat dalam fungsi utama. Sekali lagi, saya akan memulakan dialog saya. Dan jika kita bergerak sekarang, kita dapat melihat bagaimana ini adalah berbeza. Fungsi beban yang sama, jadi ia hanya akan membuat perintah dan mewujudkan satu item menu dan menyambung bahawa item menu kepada arahan ini. Tetapi jika kita tatal ke bawah untuk menunjukkan dialog, kita boleh mula untuk melihat di mana perbezaan timbul. Kami mempunyai fungsi persembahan dialog, yang hanya akan menunjukkan dialog. Tetapi apabila saya tunjukkan dialog ini, dan apabila kaedah persembahan dipanggil, ia kebakaran fungsi cabutan. Dan saya akan kemudian menentukan beberapa kandungan di dalam itu. Jadi, saya hanya akan mewujudkan div, memberi kepadanya beberapa perkataan asas, Hello, world. Tetapi perhatikan bahawa di sini Saya akan melampirkan ia ID. Dan garis yang akan datang saya akan untuk mencari ID tersebut menggunakan JavaScript, dan menyimpan objek itu ke dalam pembolehubah lain yang saya hanya akan memanggil kandungan. Oleh sebab itu setiap kali saya mempunyai kandungan, semua perlu saya buat hanya mengubah suai HTML dalaman ini objek. Dan dialog HTML akan kemudian diubah suai juga. Oleh itu, apabila pemalam ini adalah kemudian ditunjukkan, yang boleh berlaku dan ini adalah satu acara baru yang baru ini plug-in, tetapi berlaku dalam setiap plug-masuk dengan dialog itu, apabila ini kini dipaparkan, Saya akan memanggil fungsi dipanggil mengambil info. Dan fungsi ini adalah daging di sini. Saya akan menggunakan bahawa proc plug-in yang telah diterangkan sebelum ini, yang dengan cara itu, adalah benar-benar hanya perpustakaan Node.js yang Cloud 9 menggunakan di sini. Jadi, anda boleh sebenarnya melihat kira-kira bagaimana ini berfungsi jika anda pergi ke dalam Dokumentasi Node.js dan memandang fail exec kaedah untuk proses sana. Saya akan menjalankan tertentu ini arahan, rumah Ubuntu ruang kerja seminar, iaitu bahawa sama satu, yang perintah yang sama yang saya buat sebelum ini. Menyediakan kepadanya semasa yang direktori bekerja, hanya selamat ultra segi konteks di mana ini sedang berjalan. Dan sekali yang telah dilengkapkan dan dikembalikan, Saya akan menjalankan ini fungsi dipanggil output hurai. OKEY. Jadi ini kemudian akan melaksanakan arahan di tempatan, atau sebaliknya Ubuntu contoh jauh. Apabila saya kembali beberapa maklumat, saya kemudian akan memanggil majlis berasingan dipanggil output hurai, yang mempunyai tandatangan ini di sini, sesat, stdout, stderr, dan melaksanakan beberapa pengiraan mengenai perkara ini. Jadi, jika saya menerima kesilapan dari beberapa jenis sama sekali, Saya benar-benar akan memeriksa untuk melihat jika ralat sebenarnya mempunyai beberapa data. Dan jika demikian, maka saya akan mengubah suai dalaman HTML bahawa objek kandungan, yang adalah anda masih ingat, kita berhubung dengan dialog di instantiattion itu dialog, atau sekurang-lukisan pertama dialog itu. Saya akan katakan bahawa beberapa kesilapan yang telah berlaku. Sekarang ini adalah terlalu mudah. Nilai ralat akan biasanya mengandungi sesuatu yang berguna, mungkin suatu nombor ralat dan ralat dari skrip itu sendiri. Atau jika skrip menulis sesuatu kesilapan standard, data yang akan diisi dalam parameter itu juga. Dan saya boleh menjadi sedikit lebih berhati-hati tentang apa ralat Saya sebenarnya menunjukkan orang. Tetapi contoh mudah ini cukup baik buat masa ini kepada sekurang-kurangnya melihat bagaimana semua fungsi ini. Jika tidak jika ada ada kesilapan, maka saya hanya akan menyediakan mentah output fungsi yang ke dalam HTML dalaman kandungan ini elemen, dan kemudian mengemas plug-in saya dan menunjukkan di sini. Dan itu cukup banyak semua yang perlu untuk mendapatkan ini untuk menjalankan. Dan begitu mari kita fikirkan kemudian bagaimana ini beroperasi, secara keseluruhan. Apabila saya mula-mula dimuatkan plug-in ini, seperti pertama plug-in, Saya akan menambah arahan itu ada apa-apa, kepada mana-mana pemalam di Cloud 9, yang dipanggil Seminar CS50 Dialog 2, yang bertanggungjawab adalah untuk menganjurkan program ini dialog, yang kamu masih ingat, sebenarnya akan menunjukkan dialog yang saya minta di bawah. Kemudian saya akan menambah bahawa arahan ke dalam menu tetingkap supaya saya mempunyai akses kepada itu. Dan apabila dialog yang diminta untuk ditunjukkan, Saya akan mengambil beberapa maklumat dari Ubuntu contoh yang mendasari dengan menggunakan arahan fail exec. Maafkan saya. Sebaik sahaja itu dikembalikan dan saya menerima beberapa maklumat, kemudian di sebelah pelanggan sekali lagi, saya akan dapat menghuraikan output arahan yang dan mengemaskini dalaman HTML daripada unsur-unsur bahawa kita telah dihubungkan dengan lebih awal. Dan dengan itu, kita kemudian mempunyai berfungsi sepenuhnya pemalam ini yang membolehkan saya untuk mengambil maklumat dari skrip sewenang-wenangnya ini bahawa kami telah mencipta pada contoh asas kami. Tetapi sekali lagi, ia benar-benar penting dan benar-benar kunci untuk mengasingkan mana setiap perkara-perkara yang berlaku, yang kita ada semua pihak pelanggan ini kod yang sedang berjalan dalam pelayar, dan tidak lagi mempunyai akses sistem fail yang mendasari sehingga kita benar-benar menjalankan beberapa ini arahan yang disediakan oleh Awan 9 SDK seperti proc, dan beberapa yang lain yang membolehkan kita untuk membaca beberapa data, atau membaca beberapa fail jika kita perlu berbuat apa-apa jenis. Sekarang ini adalah satu contoh yang agak mudah. Terdapat beberapa perkara lain yang kita mungkin akan mahu lakukan juga. Sebagai contoh, mungkin kita sebenarnya mahu menyimpan beberapa maklumat kepada pilihan. Atau mungkin kita mahu menambah anak tetingkap keutamaan baru atau sesuatu sepanjang garis. Maka itu adalah sesuatu yang anda boleh mengambil lihat di Cloud 9 SDK untuk mendapatkan maklumat lanjut mengenai. Tetapi ini benar-benar adalah cukup untuk memulakan. Jadi hanya untuk menjadi sedikit lebih konkrit tentang cara yang beberapa perkara-perkara fungsi, aku ingin menunjukkan hanya satu contoh lagi, yang hanya beberapa kod dari Stats 50 plug-in. Dan kod ini adalah pada dasarnya berdasarkan contoh-contoh ini yang anda telah benar-benar melihat, tetapi mempunyai beberapa lebih banyak perlindungan dan mempunyai beberapa kerumitan lebih untuk untuk mencapai beberapa perkara tambahan yang kita mahu capai. Sebagai contoh, jika saya mahu dapat menjimatkan beberapa tetapan, maka saya perlu mempunyai akses ke Tetapan plug-in, dan setiap kali saya mahu membaca beberapa tetapan, Saya boleh, sebagai contoh, melampirkan pelbagai peristiwa dalam Tetapan plug-in. Jadi setiap kali tetapan berwarna merah, contohnya, dalam sendiri plug-in saya, jika saya akan membaca beberapa tetapan dari simpanan yang disimpan citarasa pengguna, maka saya boleh menetapkan default untuk lokasi tertentu, untuk keutamaan tertentu, yang JSON pilihan gaya fail yang kita ada disimpan sebelum ini, yang kita lihat sebelum ini. Dan jika saya akan menulis beberapa tetapan kepadanya, maka saya can-- atau dengan seberapa segera seperti yang kita mengesan bahawa tetapan telah ditulis supaya- kerana sebagai contoh, tetapan telah diubahsuai oleh pengguna sama ada secara langsung dalam tetapan mereka fail, atau anak tetingkap keutamaan telah mengubah tetapan memfailkan langsung, maka Saya benar-benar boleh mengemas kini beberapa kod atau mengemaskinikan kelakuan plug-in saya berdasarkan perubahan-perubahan yang mempunyai berlaku pada fail tetapan juga. Tetapi benar-benar, yang lain daripada ia adalah agak banyak ini yang anda telah lihat. Kami menambah beberapa, mungkin sesuatu yang baru. Oleh itu, kita menambah fail keutamaan, atau pun seorang anak tetingkap keutamaan, untuk tetingkap keutamaan, yang sekali lagi anda boleh mengetahui maklumat lanjut di dalam Awan 9 SDK membaca saya. Tetapi segala-galanya adalah cukup banyak, cantik sama dengan apa yang kita lihat sebelum ini, hanya dengan beberapa pemeriksaan ralat tambahan dan beberapa perlindungan tambahan dan beberapa fungsi tambahan menampilkan semua pelbagai perkara-perkara yang kita lihat. Jika anda belum benar-benar melihatnya lagi, anda mungkin tertanya-tanya apa yang mendasari arahan adalah dalam tetingkap Stats 50. Ia sebenarnya berfungsi. Nah, ia is-- oh, celaka. Satu saat. Berpegang. OKEY. Biar saya bergerak ini supaya kita boleh sebenarnya lihat apa yang berlaku apabila saya menaip Stats 50. Perhatikan bahawa dalam kes ini, arahan yang saya keluar meletakkan adalah benar-benar sekali lagi, hanya skrip itulah akan output sekumpulan maklumat dalam format JSON. Dan sebab yang kita lakukan ia cara ini adalah bahawa kerana kita beroperasi, kerana kita telah menulis kod sebelah pelanggan dalam JavaScript, kita boleh dengan mudah hanya menghuraikan objek JavaScript, dan benar-benar dapat memanipulasi objek sama seperti yang kami lakukan mana-mana JavaScript objek lain. Dan jadi ini adalah sangat mudah cara menyediakan beberapa maklumat dari Ubuntu contoh asas, seperti nombor versi, pihak nama, sama ada pelayan yang mendengar, apa yang pelayan adalah, sebagainya dan sebagainya, dan menghuraikan yang sangat dengan mudah dan cepat dalam plug-in yang kemudian akan untuk menunjukkan kepada kita semua maklumat tersebut. Jadi sekali lagi, wawasan utama di sini yang perlu diingat pengasingan ini antara contoh asas, dan juga di mana kod itu sedang dimuatkan. Bahawa apabila saya mempunyai pelanggan, ia memuatkan pertama. Hanya ini fail JavaScript statik dari di suatu tempat, mungkin CDN dari beberapa jenis. Kita tidak perlu mengambil berat terlalu banyak tentang langkah pertama ini. Kami hanya tahu bahawa itu berjalan di sebelah pelanggan dan itulah apabila saya akan berkomunikasi dengan contoh buruh pelabuhan ini. Bahawa kita akan berbuat demikian melalui Cloud 9 SDK. Kita sebenarnya tidak mempunyai keupayaan, menggunakan JavaScript atau Node.js, untuk menulis terus kepadanya. Kami hanya menggunakan orang-orang SDK yang sedia ada API untuk melakukan tindakan yang bagi kami. Dan sekali lagi, salah satu daripada perkara yang benar-benar penting ialah apabila saya telah mencipta ini, apabila saya telah membuat plug-in ini, dan seperti yang saya sedang bekerja di atasnya, satu satu perkara yang penting untuk dilakukan adalah untuk membawa konsol JavaScript. Oleh kerana kerana ini adalah semua beroperasi pada JavaScript, di sebelah pelanggan, jika saya menggunakan console.log yang method-- jadi hanya untuk menunjukkan contoh di sini. Mari kita cuba mengubah suai ini mudah plug-in juga layari beberapa data. Dan kami akan menambah keluar standard. Jadi mari kita menukar bahawa untuk menjadi di sini. Sekarang apabila saya melaksanakan console.log, perlu diingat bahawa kerana ini sedang berjalan di sebelah pelanggan, Saya akan melihat ini dalam saya sendiri JavaScript konsol, yang adalah bagaimana saya akan dapat cuba untuk menyelesaikan masalah dan debug beberapa masalah yang saya ada. Perhatikan bahawa kerana Saya dalam mod SDK, Saya kemudian dapat memanipulasi plug-in pada hal ini. Jadi, walaupun ia adalah disimpan pada hal ini, ini adalah contoh salah satu daripada yang sebelumnya peraturan dicemari, di mana Cloud 9 SDK sebenarnya akan menarik plug-in dari asas contoh dan kemudian berjalan mereka. Supaya dengan cara ini, saya kemudian dapat memanipulasi dan membina beberapa plug-in di sini. Tetapi dalam usaha untuk saya melihat kemas kini pada plug-in, kerana ia adalah di sebelah pelanggan, Saya perlu untuk menyelamatkan yang plug-in dan kemudian muat semula keseluruhan ruang kerja, supaya plug-in baru kemudian turun ke pelanggan saya, saya ke pelayar web, dan kemudian digunakan. Jadi sekarang apabila saya klik pada Seminar ini Dialog 2, kita masih melihat ini. Tetapi sekarang mudah-mudahan dalam JavaScript saya dialog, sekiranya kita melihat my-- menunggu, berpegang. Saya mungkin perlu membuka segar dialog. Kita harus melihat data yang diterima saya di sini. Data yang diterima, Hello, Dan, yang kamu masih ingat, adalah operasi console.log yang kita diminta dalam plug-in. Jadi keterangan ini kemudian yang saya nyatakan sebelum ini, dialog ini, atau ini gambarajah sebaliknya, saya yang dinyatakan sebelum ini adalah apa yang berlaku. Tetapi ada yang penting pengecualian hanya untuk pembangunan, iaitu bahawa plug-in sendiri mungkin sebenarnya disimpan pada contoh buruh pelabuhan yang buat sementara waktu, kerana mungkin Cloud 9 tidak mahu kita dapat memanipulasi objek pada CDN mereka. Dan Cloud 9 pelanggan, atas memuatkan, akan mencari sesiapa plug-in dalam itu. C9 plug-in folder, dan beban mereka. Dan orang-orang masih berlaku hanya pada sebelah pelanggan. Oleh itu, maka ini hanya yang pengecualian yang berlaku hanya untuk pembangunan Cloud 9 plug-in. Tetapi yang lain daripada time-- dan sebab yang kita ingin benar-benar tukul home-- ini kerana kebanyakan masa ini adalah akan berjalan dari CDN, dan hanya akan dijalankan semata-mata dari pihak pelanggan. Biasanya akan ada tiada interaksi dengan plug-in, atau ada juga tidak perlu apa-apa sebab itu plug-ins sendiri sebenarnya disimpan pada asas buruh pelabuhan contoh, kecuali dalam hal ini pembangunan SDK. Jadi sekali lagi, ini berubah hanya sedikit kerana hakikat bahawa kita sedang berjalan mod SDK. Ia akan kemudiannya akan memuatkan mereka plug-in daripada pembangunan, dan semata-mata di sini adalah supaya Saya boleh menggunakan Cloud 9 untuk melakukan pembangunan untuk Cloud 9 plugin. Namun begitu, ia tidak akan mengubah lagi bagaimana mana-mana ini berfungsi. Ia masih sedang dijalankan sepenuhnya kepada pihak pelanggan. Ia hanya bermakna bahawa setiap kali saya mahu mewujudkan Cloud 9 plug-in dalam Cloud 9, Saya membuat mereka plug-in, memasukkannya ke dalam saya. C9 folder / plugins di rumah saya direktori, memastikan saya dalam mod SDK, memuat semula halaman setiap kali saya sebenarnya membuat perubahan kepada yang plug-in, dan melihat apa yang berlaku dalam Konsol JavaScript saya. Hanya menguruskan JavaScript saya memujuk memastikan bahawa mana-mana penyelesaian masalah maklumat yang saya letakkan untuk memujuk, atau apa-apa sahaja yang mungkin berlaku kerana kesilapan yang saya telah menulis dalam kod saya atau sebagainya, muncul di sana. Dan dengan itu, ia benar-benar yang cukup untuk bermula, saya fikir, dengan Cloud 9 plug-in. Terutamanya mengambil melihat SDK dokumentasi yang Cloud 9 menyediakan. Ia adalah satu cara yang baik untuk mendapatkan bermula, dan dengan mudah membuat beberapa plug-in untuk Cloud 9. Dan dengan itu, saya ingin mengucapkan terima kasih anda semua kerana sudi menyertai saya. Saya harap anda akan bergembira menulis plug-in untuk Cloud 9. Mungkin meningkatkan plug-in yang kita ada sekarang, atau mungkin juga menambah beberapa fungsi anda sendiri. Kami berharap untuk melihat apa pun yang anda buat. Sehingga itu, selamat tinggal.