>> 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.