1 00:00:00,000 --> 00:00:05,159 2 00:00:05,159 --> 00:00:09,240 >> DAN Armendariz環:您好,歡迎光臨 一個CS50研討會定制雲9, 3 00:00:09,240 --> 00:00:11,724 和CS50 IDE。 4 00:00:11,724 --> 00:00:13,640 所以今天我們要 剛才講一點點 5 00:00:13,640 --> 00:00:16,090 一些的 技術信息 6 00:00:16,090 --> 00:00:19,380 那張架構背後 雲9,以及如何 7 00:00:19,380 --> 00:00:25,560 我們已經實施了一些插件 作為雲9的一部分提供CS50 IDE。 8 00:00:25,560 --> 00:00:28,820 因此,讓我們只跳權和 開始談論插件。 9 00:00:28,820 --> 00:00:32,659 >> 因此,插件是真正的 的雲9經驗的核心。 10 00:00:32,659 --> 00:00:37,590 雲9是底層技術 它提供給我們的IDE, 11 00:00:37,590 --> 00:00:42,160 而且終端窗口處 底,隨著workspace-- 12 00:00:42,160 --> 00:00:46,430 Ubuntu的workspace--我們 用它來編譯所有的項目中 13 00:00:46,430 --> 00:00:49,190 並執行我們的習題集, 完成我們的習題集。 14 00:00:49,190 --> 00:00:51,820 但在所有的心臟 這一點,所有的技術 15 00:00:51,820 --> 00:00:54,590 其實只是一堆插件。 16 00:00:54,590 --> 00:00:58,740 一切都是一個插件 可以修改的, 17 00:00:58,740 --> 00:01:00,710 擴展,您可以創建 你自己的插件, 18 00:01:00,710 --> 00:01:03,060 你可以刪除其他 插件,要真正改變 19 00:01:03,060 --> 00:01:07,540 相當多的功能 現有雲9 IDE。 20 00:01:07,540 --> 00:01:12,040 >> 因此,這是現有 雲9環境。 21 00:01:12,040 --> 00:01:14,750 這其實只是 默認雲9環境。 22 00:01:14,750 --> 00:01:18,450 而看看實際如何 距離CS50 IDE不同。 23 00:01:18,450 --> 00:01:20,340 所以這是CS50的IDE。 24 00:01:20,340 --> 00:01:25,060 請注意,有一些視覺 正規雲9之間變化 25 00:01:25,060 --> 00:01:28,000 環境和CS50的IDE。 26 00:01:28,000 --> 00:01:30,010 具體來說,您會 注意到一些改動。 27 00:01:30,010 --> 00:01:34,201 首先,有少 菜單項開始。 28 00:01:34,201 --> 00:01:36,200 實際上,有一種方法 你可以改變這種狀況。 29 00:01:36,200 --> 00:01:37,270 這就是所謂的簡單模式。 30 00:01:37,270 --> 00:01:40,910 >> 默認情況下,簡單模式使能, 它簡化一些菜單項。 31 00:01:40,910 --> 00:01:43,032 它消除了一些 更先進的, 32 00:01:43,032 --> 00:01:45,240 因為坦率地說,很多 被進來的學生 33 00:01:45,240 --> 00:01:48,550 也不需要知道一些 更高級的功能 34 00:01:48,550 --> 00:01:50,530 是不是不知所措 有一堆選項。 35 00:01:50,530 --> 00:01:55,610 但是,我們確實提供採取的能力 關閉那些所謂的培訓輪 36 00:01:55,610 --> 00:01:57,360 並刪除 腳手架使人們 37 00:01:57,360 --> 00:02:00,832 可以變得更習慣 IDE的高級功能。 38 00:02:00,832 --> 00:02:02,540 馬上到 正確的說,有 39 00:02:02,540 --> 00:02:05,435 還一個調試按鈕,這 在標準濁 40 00:02:05,435 --> 00:02:08,199 9環境下簡稱為運轉。 41 00:02:08,199 --> 00:02:11,990 但默認情況下,我們已經配置了 在CS50 IDE調試按鈕 42 00:02:11,990 --> 00:02:15,500 把調試器, 自動編譯源代碼, 43 00:02:15,500 --> 00:02:17,940 連接調試器 到底層GDB-- 44 00:02:17,940 --> 00:02:21,430 而因為這是運行執行 所述debugging--和一些其他步驟 45 00:02:21,430 --> 00:02:22,580 為好。 46 00:02:22,580 --> 00:02:25,370 此外,在終端窗口 very--或者說終端 47 00:02:25,370 --> 00:02:29,010 在在控制台部分標籤 在屏幕的最底部窗口, 48 00:02:29,010 --> 00:02:31,004 更名為僅僅是終端。 49 00:02:31,004 --> 00:02:32,837 而標準中 雲9環境下, 50 00:02:32,837 --> 00:02:35,830 它實際上顯示了 運行的應用程序。 51 00:02:35,830 --> 00:02:39,140 這樣一來,它簡化,再次, 圖形用戶界面,只是一點點。 52 00:02:39,140 --> 00:02:42,310 >> 我們還增加了一些按鈕 到IDE的右上 53 00:02:42,310 --> 00:02:45,740 顯示一些基本信息 關於底層的實例。 54 00:02:45,740 --> 00:02:49,700 同時,我們已刪除了一個 對項目的選項 55 00:02:49,700 --> 00:02:51,730 從最右邊。 56 00:02:51,730 --> 00:02:55,620 因此,所有的這沒有實現 通過修改一定是雲9 57 00:02:55,620 --> 00:02:58,550 源代碼,但 而是通過一對夫婦 58 00:02:58,550 --> 00:03:03,460 那我們已經實現插件 在過去一年左右的時間。 59 00:03:03,460 --> 00:03:08,840 和雲9先後主持和有 在CS50工作區運行。 60 00:03:08,840 --> 00:03:13,680 或者說,在工作區的 被指定為CS50的IDE。 61 00:03:13,680 --> 00:03:17,140 >> 因此,其實這是最主要的區別 雲9和CS50之間 62 00:03:17,140 --> 00:03:18,130 工作區。 63 00:03:18,130 --> 00:03:21,780 還有,在底層 例如,主變化是 64 00:03:21,780 --> 00:03:25,350 我們安裝一些 預配置的項目,如GDB, 65 00:03:25,350 --> 00:03:29,530 和其他一些基本的東西, 我們已經創建,像更新50, 66 00:03:29,530 --> 00:03:33,310 和幾個其他步驟,使 整個過程有點多 67 00:03:33,310 --> 00:03:34,550 統一。 68 00:03:34,550 --> 00:03:38,520 但總體而言,這僅僅是一個 現有系統的修改 69 00:03:38,520 --> 00:03:40,979 雲9為我們創造。 70 00:03:40,979 --> 00:03:42,770 我們要去 展示一下後 71 00:03:42,770 --> 00:03:45,920 是如何實際創建 有些基本的插件, 72 00:03:45,920 --> 00:03:49,461 使我們能夠將東西放到了 菜單系統,開闢了對話。 73 00:03:49,461 --> 00:03:51,210 如果我們有足夠 一次,我們將實際 74 00:03:51,210 --> 00:03:54,210 看看我們如何能夠填充該 有一些信息的對話 75 00:03:54,210 --> 00:03:56,089 從底層的實例。 76 00:03:56,089 --> 00:03:58,880 為了讓我們獲得該 點,讓我們先說一下 77 00:03:58,880 --> 00:04:01,740 關於雲9的架構。 78 00:04:01,740 --> 00:04:05,290 >> 所以,我們正在使用的方式 與雲交互9 79 00:04:05,290 --> 00:04:06,610 完全是通過客戶端。 80 00:04:06,610 --> 00:04:10,610 我們打開一個網頁瀏覽器, 我們鍵入CS50.io. 81 00:04:10,610 --> 00:04:14,431 我們最終的認證後, 都帶有IDE中。 82 00:04:14,431 --> 00:04:16,180 但要意識到有 幾個步驟 83 00:04:16,180 --> 00:04:18,180 實際上讓我們這一點。 84 00:04:18,180 --> 00:04:22,390 的第一件事是, 我的客戶端,web瀏覽器, 85 00:04:22,390 --> 00:04:27,440 根據要求和認證後, 加載GUI和插件 86 00:04:27,440 --> 00:04:30,170 從一些CDN,從一些 內容分發網絡。 87 00:04:30,170 --> 00:04:32,700 這可能是坦言任何地方。 88 00:04:32,700 --> 00:04:35,390 >> 這實際上是獨立的 從底層的實例。 89 00:04:35,390 --> 00:04:38,890 重要的是要認識到,這是很重要 實際上只是一堆靜態文件。 90 00:04:38,890 --> 00:04:42,600 這是一堆的JavaScript 即從CDN下載 91 00:04:42,600 --> 00:04:45,200 在我的網頁瀏覽器, 所有的圖形用戶界面,你 92 00:04:45,200 --> 00:04:48,460 看到這裡 - 這真是key-- 所有的圖形用戶界面,你看這裡 93 00:04:48,460 --> 00:04:50,480 運行在客戶端。 94 00:04:50,480 --> 00:04:53,820 你看到的一切 在雲9工作區 95 00:04:53,820 --> 00:04:56,010 實際上,在瀏覽器中運行。 96 00:04:56,010 --> 00:04:59,950 和任何你發 跟著下面的實例 97 00:04:59,950 --> 00:05:04,000 而與實例 沿著這第二個獨立的通道, 98 00:05:04,000 --> 00:05:07,240 然後被保存到 該泊塢窗實例。 99 00:05:07,240 --> 00:05:09,660 >> 所以,我要說的原因 這是一個碼頭工人的實例 100 00:05:09,660 --> 00:05:12,650 是,基礎技術 不使用虛擬機, 101 00:05:12,650 --> 00:05:16,040 而是用一個 所謂的泊塢窗技術, 102 00:05:16,040 --> 00:05:20,200 這基本上allows--最接近 比喻是一個虛擬機。 103 00:05:20,200 --> 00:05:24,800 但它是微妙的不同 在存在 104 00:05:24,800 --> 00:05:28,900 大量的機會來運行 不同的泊塢窗組合 105 00:05:28,900 --> 00:05:30,760 在一台機器上的實例。 106 00:05:30,760 --> 00:05:34,660 並且可以將它們起轉 在很短時間內連續。 107 00:05:34,660 --> 00:05:38,920 這是不太更多 嚴格分化 108 00:05:38,920 --> 00:05:42,840 不同的泊塢窗實例之間 因為有在虛擬機, 109 00:05:42,840 --> 00:05:45,730 但還是有很多的 分化和分離 110 00:05:45,730 --> 00:05:48,330 這些不同的實例之間。 111 00:05:48,330 --> 00:05:48,830 好。 112 00:05:48,830 --> 00:05:50,980 所以這兩個步驟這裡 是重要的,實現 113 00:05:50,980 --> 00:05:57,370 是,當我們去CS50.io,我們 下載GUI和插件, 114 00:05:57,370 --> 00:06:01,640 這是用JavaScript編寫的,在 到瀏覽器或瀏覽器。 115 00:06:01,640 --> 00:06:05,980 這也許是一對夫婦 兆字節的信息價值。 116 00:06:05,980 --> 00:06:09,460 在這一點上,一旦GUI具有 裝載和插件已經開始, 117 00:06:09,460 --> 00:06:12,530 然後它開始進行通信 泊塢窗實例,不 118 00:06:12,530 --> 00:06:15,210 一定必須是相同的服務器。 119 00:06:15,210 --> 00:06:16,940 >> 現在有一個例外。 120 00:06:16,940 --> 00:06:22,130 實際上,我們可以有兩個 交付機制GUI本身 121 00:06:22,130 --> 00:06:25,740 而在泊塢窗實例 在同一台服務器中,這 122 00:06:25,740 --> 00:06:29,660 其實事情,我們做 雲9的離線版本。 123 00:06:29,660 --> 00:06:33,470 這並不是說我們已經什麼 宣傳非常今年秋季, 124 00:06:33,470 --> 00:06:35,930 但我們也有一個 離線版本 125 00:06:35,930 --> 00:06:40,010 允許您下載一個打包 版本的所有這些事情的 126 00:06:40,010 --> 00:06:43,670 並允許您運行雲 9在脫機環境。 127 00:06:43,670 --> 00:06:48,325 >> 移動這一關雲和到 本地機器有一定的影響。 128 00:06:48,325 --> 00:06:50,200 特別是,你沒有 再有能力 129 00:06:50,200 --> 00:06:52,280 分享您的工作空間與其他人。 130 00:06:52,280 --> 00:06:58,630 您不再可以打開雲從9, 和CS50 IDE,從任何計算機 131 00:06:58,630 --> 00:07:02,950 並看到相同的文件 你正與之前。 132 00:07:02,950 --> 00:07:06,310 但是,相反,它的工作原理完全 您自己的本地機器上 133 00:07:06,310 --> 00:07:09,270 而無需訪問互聯網。 134 00:07:09,270 --> 00:07:13,330 但還是即使在這種模型中,即使 儘管我們有一台虛擬機 135 00:07:13,330 --> 00:07:15,200 這實質上是 運行這些東西。 136 00:07:15,200 --> 00:07:19,480 >> 我們有一個單獨服務器, 提供基本的雲9 137 00:07:19,480 --> 00:07:23,640 內容,然後我們 有一個碼頭工人的實例 138 00:07:23,640 --> 00:07:32,280 即負責傳達 與IDE的後端。 139 00:07:32,280 --> 00:07:32,780 好。 140 00:07:32,780 --> 00:07:38,700 因此整個GUI被寫入 完全在JavaScript 141 00:07:38,700 --> 00:07:42,800 使用的Node.js和雲9 SDK, 我們會得到在短短的一分鐘。 142 00:07:42,800 --> 00:07:46,650 和所有的插件 是在客戶端運行。 143 00:07:46,650 --> 00:07:51,780 所以,讓我們關注則 假設點點 144 00:07:51,780 --> 00:07:55,670 這個第一步驟具有 其實成功完成, 145 00:07:55,670 --> 00:07:58,990 只有看這個泊塢窗實例。 146 00:07:58,990 --> 00:08:01,220 >> 因此,在這種情況下,這 是標準的方式 147 00:08:01,220 --> 00:08:04,870 想這樣做雲9插件 發展是,你會 148 00:08:04,870 --> 00:08:07,940 要編寫代碼,將 可以在用戶的瀏覽器中運行, 149 00:08:07,940 --> 00:08:11,610 你有機會 使用一些API進行通信 150 00:08:11,610 --> 00:08:16,470 與基礎搬運工實例, 運行一些代碼在那裡,做任何事 151 00:08:16,470 --> 00:08:18,860 你可能想這樣做。 152 00:08:18,860 --> 00:08:22,000 因此,這將是 的背景下,我們將 153 00:08:22,000 --> 00:08:24,340 要使用這個談話的其餘部分。 154 00:08:24,340 --> 00:08:26,400 而只要保持這種模式的初衷。 155 00:08:26,400 --> 00:08:28,966 這將是非常重要的 在短短幾分鐘的時間。 156 00:08:28,966 --> 00:08:30,840 有一對夫婦的 聯繫我想告訴你。 157 00:08:30,840 --> 00:08:34,150 首先,雲9提供 相當多的文檔 158 00:08:34,150 --> 00:08:38,740 這是相當不錯的,它展示了如何 做基本的插件開發。 159 00:08:38,740 --> 00:08:43,320 所以,如果你去這個網址, cloud9-sdk.readme.io, 160 00:08:43,320 --> 00:08:45,261 你會看到的文檔存在。 161 00:08:45,261 --> 00:08:47,510 而大量的信息 你將會看到 162 00:08:47,510 --> 00:08:50,310 還可以找到,加上更多。 163 00:08:50,310 --> 00:08:55,880 您還可以找到開源 版本雲9在這個網址, 164 00:08:55,880 --> 00:09:04,270 github.com/c9/core,這是我們作為使用 的IDE的離線版本的一部分, 165 00:09:04,270 --> 00:09:07,540 這樣你就可以有 同樣的雲9經驗, 166 00:09:07,540 --> 00:09:09,660 但在離線方式。 167 00:09:09,660 --> 00:09:10,160 好吧。 168 00:09:10,160 --> 00:09:15,560 因此,讓我們來看看一個 實際的雲9工作區在這裡。 169 00:09:15,560 --> 00:09:17,880 再次,我想點 出了幾件事情。 170 00:09:17,880 --> 00:09:21,560 這是,就在這裡,一個正常的CS50的IDE。 171 00:09:21,560 --> 00:09:26,830 而且我已經禁用的少 在查看菜單舒適模式 172 00:09:26,830 --> 00:09:28,807 這樣我可以看到所有 的菜單選項。 173 00:09:28,807 --> 00:09:31,140 我想什麼來告訴你正確的 現在是幾件事情。 174 00:09:31,140 --> 00:09:33,140 首先,如果我進入 首選項,然後 175 00:09:33,140 --> 00:09:37,040 點擊插件管理器, 並輸入CS50在這裡, 176 00:09:37,040 --> 00:09:40,590 我們可以看到,有,實際上 幾個CS50插件 177 00:09:40,590 --> 00:09:46,280 已安裝和我們的運行,以 讓我們已經修改 178 00:09:46,280 --> 00:09:48,670 看到了CS50 IDE。 179 00:09:48,670 --> 00:09:51,450 >> 現在有本質 兩個插件運行。 180 00:09:51,450 --> 00:09:54,980 有一個叫簡單,這 為簡化模式 181 00:09:54,980 --> 00:10:00,020 讓您減少數量 沿頂部的菜單選項, 182 00:10:00,020 --> 00:10:03,070 並此所謂的 不舒服的模式。 183 00:10:03,070 --> 00:10:07,280 再有就是還CS50統計, 但這可能只是稍微名不副實。 184 00:10:07,280 --> 00:10:09,550 因為這是 說明你的信息 185 00:10:09,550 --> 00:10:10,850 關於底層的工作空間。 186 00:10:10,850 --> 00:10:13,560 它注入這些按鈕 沿右上方。 187 00:10:13,560 --> 00:10:18,620 它也注入了一個菜單項進入 窗口項,進入窗口菜單 188 00:10:18,620 --> 00:10:21,730 在這裡,CS50 IDE信息。 189 00:10:21,730 --> 00:10:27,380 而且它是負責實例 這一對話,我們在這裡看到, 190 00:10:27,380 --> 00:10:31,460 與所有我們的信息 見慣了CS50的IDE 191 00:10:31,460 --> 00:10:32,870 工作區。 192 00:10:32,870 --> 00:10:33,370 好。 193 00:10:33,370 --> 00:10:36,910 所以實際上多了一個插件 我們已經開發了為好。 194 00:10:36,910 --> 00:10:40,110 還有一對夫婦別人說 我們也還沒有公開發布。 195 00:10:40,110 --> 00:10:45,880 但其中有一個是整體 插件,可以讓GDB的功能。 196 00:10:45,880 --> 00:10:50,190 所以,雲9的一個方面 是,他們已經提供 197 00:10:50,190 --> 00:10:53,210 該GUI實現一個調試器。 198 00:10:53,210 --> 00:10:57,360 和插件的一個 我們已經創建了基本 199 00:10:57,360 --> 00:11:02,380 鉤GDB該GUI 基於版本的調試器。 200 00:11:02,380 --> 00:11:07,680 而且是負責調解所有 一個用戶可能具有的請求, 201 00:11:07,680 --> 00:11:10,310 跨過或間 創建斷點或任何 202 00:11:10,310 --> 00:11:15,390 沿著這些線路,以把這一 到GDB能夠理解的命令, 203 00:11:15,390 --> 00:11:16,920 發出這些命令GDB。 204 00:11:16,920 --> 00:11:19,260 而一旦GDB 發出一個響應,然後 205 00:11:19,260 --> 00:11:23,250 我們理解這一點, 更新GUI是必要的。 206 00:11:23,250 --> 00:11:25,130 >> 這可能是一個 的更複雜的 207 00:11:25,130 --> 00:11:28,840 插件,這樣反而就是我們的 要著眼於今天其實是在 208 00:11:28,840 --> 00:11:34,590 該統計插件,我們將討論 有關簡單一點點,也是如此。 209 00:11:34,590 --> 00:11:39,100 所以,我前面提到的,我真想 做出非常,非常清楚,一遍, 210 00:11:39,100 --> 00:11:41,600 所有這一切,我們是 這裡看到的基本上是 211 00:11:41,600 --> 00:11:43,300 操作在客戶端。 212 00:11:43,300 --> 00:11:45,810 我們確實看到一個終端窗口 下面,而且,當然, 213 00:11:45,810 --> 00:11:49,230 如果我們輸入命令進入 即,將隨後發表 214 00:11:49,230 --> 00:11:50,690 到底層的實例。 215 00:11:50,690 --> 00:11:55,280 同樣,如果我們打開一個新文件,並 鍵入一些東西進去,並將其保存, 216 00:11:55,280 --> 00:11:58,240 該文件將保存在 底層的實例。 217 00:11:58,240 --> 00:12:02,310 >> 但編輯器本身,這 終端窗口本身, 218 00:12:02,310 --> 00:12:05,700 在所有實施 JavaScript和是所有插件 219 00:12:05,700 --> 00:12:09,800 我們可以互動, 因此,修改。 220 00:12:09,800 --> 00:12:11,450 有很多可擴展性在這裡。 221 00:12:11,450 --> 00:12:14,690 我建議考慮看看 在雲9的GitHub的賬戶 222 00:12:14,690 --> 00:12:17,790 看到的大量的 插件可用, 223 00:12:17,790 --> 00:12:23,070 和公正如何寫了很多 代碼是可擴展性。 224 00:12:23,070 --> 00:12:24,920 所以,有什麼東西 我想提一下 225 00:12:24,920 --> 00:12:30,480 關於這個問題,以及,這是 有很多of--有 226 00:12:30,480 --> 00:12:33,450 很多功能,是 在首選項中提供 227 00:12:33,450 --> 00:12:37,970 窗口,我們已經看到了剛剛 提到剛剛幾分鐘前。 228 00:12:37,970 --> 00:12:43,690 >> 有一件事我們可以做的IDE 開發人員,或雲9開發者, 229 00:12:43,690 --> 00:12:47,410 是真正注入一些 我們自己的偏好面板。 230 00:12:47,410 --> 00:12:50,660 因此,簡單的模式,或 不太舒適模式, 231 00:12:50,660 --> 00:12:54,780 並且還IDE的信息, 或統計插件, 232 00:12:54,780 --> 00:12:58,560 有每個一些偏好 面板,讓我們修改 233 00:12:58,560 --> 00:13:00,620 每個那些的行為。 234 00:13:00,620 --> 00:13:04,140 你會發現,如果我去了 首選項,進入用戶設置, 235 00:13:04,140 --> 00:13:07,100 有一個CS50選項卡,一是 上面寫著IDE信息。 236 00:13:07,100 --> 00:13:09,810 我可以改變 信息刷新率。 237 00:13:09,810 --> 00:13:12,250 >> 實際上,發生了什麼 在統計插件 238 00:13:12,250 --> 00:13:16,690 的是,每第n秒,其中 正秒被這個喜好定義 239 00:13:16,690 --> 00:13:22,250 面板,信息被獲取 從底層的實例,被送到 240 00:13:22,250 --> 00:13:25,490 返回到客戶端側, 插件是那麼 241 00:13:25,490 --> 00:13:28,650 解釋信息 從底層實例 242 00:13:28,650 --> 00:13:31,470 和更新的GUI是必要的。 243 00:13:31,470 --> 00:13:34,710 我們可以看到,現在它被設置 到30秒,這是默認的。 244 00:13:34,710 --> 00:13:37,950 但我可以肯定地改變 如何迅速發生這種情況只 245 00:13:37,950 --> 00:13:40,520 通過修改這個值。 246 00:13:40,520 --> 00:13:44,330 >> 現在,人們的有趣的事情 是,這首選項面板,圖形用戶界面, 247 00:13:44,330 --> 00:13:49,560 真的只是一個GUI版本 大量的基礎設置 248 00:13:49,560 --> 00:13:52,220 這列於JSON。 249 00:13:52,220 --> 00:13:56,336 所以,如果我走了,例如,在 CS50 IDE菜單,或雲9菜單, 250 00:13:56,336 --> 00:13:58,210 根據哪個 你看的版本, 251 00:13:58,210 --> 00:14:00,460 並轉到其中之一 settings--在這種情況下, 252 00:14:00,460 --> 00:14:03,420 該項目settings--的 在這種情況下,項目設置 253 00:14:03,420 --> 00:14:07,740 適用於所有的設置 這一個工作區。 254 00:14:07,740 --> 00:14:11,620 而用戶設置應用 所有的工作區 255 00:14:11,620 --> 00:14:15,110 你可能在你的帳戶。 256 00:14:15,110 --> 00:14:18,520 >> 因此,正如順便說一句 在這裡,要特別清楚, 257 00:14:18,520 --> 00:14:22,570 有之間的分離 2因為雖然在默認情況下,我們 258 00:14:22,570 --> 00:14:26,490 有一個工作區,其中 是CS50的IDE,如果你 259 00:14:26,490 --> 00:14:31,900 要點擊你的小 分身在這裡,去儀表盤, 260 00:14:31,900 --> 00:14:35,820 你會發現,你其實可以 創建額外的工作區也是如此。 261 00:14:35,820 --> 00:14:39,140 在這裡你可以看到,我確實有 一個IDE 50的工作空間,並且還 262 00:14:39,140 --> 00:14:41,930 對本目的 研討會上,一個工作區 263 00:14:41,930 --> 00:14:45,084 所謂的工作區,這是在這裡。 264 00:14:45,084 --> 00:14:46,750 所以無論如何,我有不同的偏好。 265 00:14:46,750 --> 00:14:49,910 這些每個人可能有 單獨的項目的偏好, 266 00:14:49,910 --> 00:14:54,091 但用戶偏好 在所有我的工作空間的共享。 267 00:14:54,091 --> 00:14:55,840 順便說一下,這是 如果你也很方便 268 00:14:55,840 --> 00:14:59,080 要創建一個工作區 不同的自定義選項。 269 00:14:59,080 --> 00:15:01,640 而且它非常方便 創建一個新的工作區。 270 00:15:01,640 --> 00:15:04,230 並選擇一個可能是 被預先配置以某種其他方式, 271 00:15:04,230 --> 00:15:07,000 也許對於PHP具體而言, 或者Django的明確。 272 00:15:07,000 --> 00:15:08,960 甚至只是習慣。 273 00:15:08,960 --> 00:15:11,320 在CS50的工作空間 模板是一個我們 274 00:15:11,320 --> 00:15:15,420 使用自動安裝 更新50和所有的設置 275 00:15:15,420 --> 00:15:20,531 我們已經在那裡,包括所有的 插件,我們已經為CS50 IDE。 276 00:15:20,531 --> 00:15:21,030 好。 277 00:15:21,030 --> 00:15:22,200 但是,讓我們回過頭來此。 278 00:15:22,200 --> 00:15:25,640 如此反复,也有項目 設置,這些是那些 279 00:15:25,640 --> 00:15:27,140 我們正在考慮在這裡。 280 00:15:27,140 --> 00:15:29,056 並注意有 一堆的設置, 281 00:15:29,056 --> 00:15:32,720 其中許多對應的偏好 面板,但不是所有的人。 282 00:15:32,720 --> 00:15:40,800 但是我們可以看到,在這裡,在this--哦 沒有,沒有,我把它在用戶設置? 283 00:15:40,800 --> 00:15:43,280 也許我把它放在用戶設置。 284 00:15:43,280 --> 00:15:45,480 而這一點,在這裡我們去。 285 00:15:45,480 --> 00:15:49,840 在用戶設置,我們可以 看到我們有一個CS50部分, 286 00:15:49,840 --> 00:15:53,762 並且這是被寫入 通過這些雲9插件 287 00:15:53,762 --> 00:15:54,720 我們已經實現。 288 00:15:54,720 --> 00:15:57,400 有簡單的一個 與簡單的插件對應, 289 00:15:57,400 --> 00:16:00,930 而統計其中一個 對應於基於該GUI的 290 00:16:00,930 --> 00:16:02,440 版的首選項面板中。 291 00:16:02,440 --> 00:16:05,740 刷新率,在該 情況下,被設定為20秒。 292 00:16:05,740 --> 00:16:09,740 >> 這一切,我們希望, 一些信息開始 293 00:16:09,740 --> 00:16:14,420 我們將在一點點實際看到 更詳細一點,暫時。 294 00:16:14,420 --> 00:16:14,920 好。 295 00:16:14,920 --> 00:16:17,520 因此,讓我們說,我們要 實際上著手進行。 296 00:16:17,520 --> 00:16:20,600 我們知道所有的東西, 這是發生在客戶端 297 00:16:20,600 --> 00:16:24,560 實際上是在瀏覽器上,做了這 意味著任何插件,我寫的 298 00:16:24,560 --> 00:16:27,990 將要被寫入 在考慮到瀏覽器中。 299 00:16:27,990 --> 00:16:30,830 如果我真的想這樣做 在工作​​區中任何東西, 300 00:16:30,830 --> 00:16:33,360 我或許將不得不啟動 某種溝通 301 00:16:33,360 --> 00:16:35,970 瀏覽器之間和 工作區,以確保 302 00:16:35,970 --> 00:16:38,212 這實際上是完成了。 303 00:16:38,212 --> 00:16:40,170 但是,讓我們現在說, 我想坐下吧 304 00:16:40,170 --> 00:16:43,440 而實際創建我的第一個插件。 305 00:16:43,440 --> 00:16:48,970 那麼,這樣你就能夠 要做到這一點其實是很容易的。 306 00:16:48,970 --> 00:16:51,370 它給在雲9 SDK。 307 00:16:51,370 --> 00:16:55,520 但它把你的 現有工作空間的名稱, 308 00:16:55,520 --> 00:16:59,810 是,你必須在頂部的網址 你的酒吧,並添加以下到它。 309 00:16:59,810 --> 00:17:00,310 ? 310 00:17:00,310 --> 00:17:00,893 SDK = 1&德巴= 2。 311 00:17:00,893 --> 00:17:04,369 312 00:17:04,369 --> 00:17:08,260 現在是什麼這是要實現的 該SDK = 1將實際設置SDK 313 00:17:08,260 --> 00:17:11,430 模式為真,這將使 有一些其他的東西。 314 00:17:11,430 --> 00:17:15,770 和調試= 2將允許的錯誤信息 要多一點冗長。 315 00:17:15,770 --> 00:17:20,170 >> 所以,如果你帶了JavaScript的 控制台在您的Chrome開發選項卡, 316 00:17:20,170 --> 00:17:22,829 你居然能 看到很多的更多信息 317 00:17:22,829 --> 00:17:24,349 比你,否則。 318 00:17:24,349 --> 00:17:28,310 所以我建議轉向這兩個 就在同一時間,因為它確實 319 00:17:28,310 --> 00:17:31,170 是非常有用的有這一切 附加信息。 320 00:17:31,170 --> 00:17:35,330 但必須注意的,這一點很重要 打開調試到2的值 321 00:17:35,330 --> 00:17:38,120 意味著它是非常 囉嗦了,它實際上 322 00:17:38,120 --> 00:17:42,590 將在一定程度顯著放緩 你的IDE,特別是當加載 323 00:17:42,590 --> 00:17:45,657 或什麼時候做繁重的任務。 324 00:17:45,657 --> 00:17:46,740 因此,只要記住這一點。 325 00:17:46,740 --> 00:17:51,500 這對發展有益的,但​​你 可能不希望有它在所有的時間。 326 00:17:51,500 --> 00:17:53,080 >> 因此,讓我們真正做到這一點。 327 00:17:53,080 --> 00:17:59,374 但在這種情況下,我居然有 已經建立了這樣的工作空間。 328 00:17:59,374 --> 00:18:00,540 所以,讓我們來看看,SDK = 1&調試= 2。 329 00:18:00,540 --> 00:18:03,140 330 00:18:03,140 --> 00:18:07,770 一對夫婦插件 希望已經安裝。 331 00:18:07,770 --> 00:18:08,340 好吧。 332 00:18:08,340 --> 00:18:15,050 所以,現在,我已經打開了SDK調試 模式,請注意,我們是在調試模式下, 333 00:18:15,050 --> 00:18:20,430 所以我們可以看一下開發工具看 任何錯誤,我會做屏幕外。 334 00:18:20,430 --> 00:18:23,110 我們可以看到,有 一堆錯誤在這裡。 335 00:18:23,110 --> 00:18:28,090 現在,它實際上是很常見 雲9有一對夫婦的錯誤, 336 00:18:28,090 --> 00:18:30,680 我不會擔心 關於他們,直到你 337 00:18:30,680 --> 00:18:32,930 看到的東西,可能會 具體到插件 338 00:18:32,930 --> 00:18:34,510 你碰巧創造。 339 00:18:34,510 --> 00:18:37,620 >> 所以在這裡,舉例來說,我們得到 沒有發現一對夫婦的404s--。 340 00:18:37,620 --> 00:18:42,910 我們認為我們無法加載一些 信息從底層的實例 341 00:18:42,910 --> 00:18:43,670 本身。 342 00:18:43,670 --> 00:18:46,545 而且還有一堆附加 信息,但大部分這種我們 343 00:18:46,545 --> 00:18:47,970 實際上是忽略了現在。 344 00:18:47,970 --> 00:18:50,130 因為這是相當 共同為一個工作區 345 00:18:50,130 --> 00:18:53,200 有只是一對夫婦的錯誤。 346 00:18:53,200 --> 00:18:53,700 好。 347 00:18:53,700 --> 00:18:56,680 我打算把這個出 的方式,回到這裡。 348 00:18:56,680 --> 00:19:01,860 而現在最簡單的方式,漂亮 關於有此開發商的事 349 00:19:01,860 --> 00:19:07,330 啟用模式,它可以讓我 輕鬆創建一個新的插件。 350 00:19:07,330 --> 00:19:12,390 >> 所以,而在此之前我居然沒 提供這些新插件選項, 351 00:19:12,390 --> 00:19:16,460 我們可以看到,如果我回去 我的非開發人員模式在這裡, 352 00:19:16,460 --> 00:19:18,510 有沒有新的插件。 353 00:19:18,510 --> 00:19:23,220 通過啟用的SDK模式,我 有一個新的插件可用 354 00:19:23,220 --> 00:19:25,660 我可以很容易地創建一個。 355 00:19:25,660 --> 00:19:28,160 在這種情況下,有一對夫婦 不同的選擇,簡單, 356 00:19:28,160 --> 00:19:30,850 一個空的插件,一個完整的插件, 安裝程序,雲9捆綁。 357 00:19:30,850 --> 00:19:33,030 讓我們只選擇一個 空插件現在 358 00:19:33,030 --> 00:19:37,670 這樣我們就可以看到一個非常 簡單的版本之一。 359 00:19:37,670 --> 00:19:41,520 >> 現在注意沿 左邊那現在有 360 00:19:41,520 --> 00:19:45,080 在收藏夾中的東西,這 被列出了幾個插件 361 00:19:45,080 --> 00:19:47,020 這是目前提供給我。 362 00:19:47,020 --> 00:19:50,420 如果我展開,我們將 可以看到這些。 363 00:19:50,420 --> 00:19:52,730 現在,我希望你能注意到 這裡的東西,這 364 00:19:52,730 --> 00:19:58,260 的是,這是不實際包含 工作區目錄中 365 00:19:58,260 --> 00:20:03,190 我的基本Ubuntu的實例,但 它包含了硬盤驅動器上。 366 00:20:03,190 --> 00:20:06,330 而在這裡,這是位於,因為 這是知道非常有用的, 367 00:20:06,330 --> 00:20:09,570 特別是如果你要 做任何事情使用Git, 368 00:20:09,570 --> 00:20:16,870 在那裡,這是位於 在.c9文件夾/插件。 369 00:20:16,870 --> 00:20:21,110 所以,如果我去那裡,現在我們可以看到, 插件是在這裡的列表 370 00:20:21,110 --> 00:20:26,390 列表中的插件匹配我 看到我的工作區的左側。 371 00:20:26,390 --> 00:20:28,610 >> 現在,在默認情況下,和 這是種奇怪的, 372 00:20:28,610 --> 00:20:31,760 默認情況下,當我創建一個 新插件在工作區中, 373 00:20:31,760 --> 00:20:36,620 它創建了一個插件,通過 默認情況下有下劃線的名稱。 374 00:20:36,620 --> 00:20:39,760 一般認為可能 導致一些問題。 375 00:20:39,760 --> 00:20:42,340 所以很下一步 我平時執行 376 00:20:42,340 --> 00:20:45,880 只是刪除了 特定插件 377 00:20:45,880 --> 00:20:52,810 只留下簡單的插件, 在那裡開始,plugin.simple。 378 00:20:52,810 --> 00:20:55,430 這是唯一一個在那裡。 379 00:20:55,430 --> 00:20:55,930 好。 380 00:20:55,930 --> 00:20:58,380 >> 那麼,這實際上是什麼樣子的? 381 00:20:58,380 --> 00:21:01,210 那麼,這是再次, 一個JavaScript包 382 00:21:01,210 --> 00:21:05,220 包括一些文件, 包括plugin.js文件,其中 383 00:21:05,220 --> 00:21:07,700 的主要內容 我的插件所在, 384 00:21:07,700 --> 00:21:10,590 一個的package.json文件, 這實際上規定 385 00:21:10,590 --> 00:21:13,760 一些元數據,這個插件, 如作者是誰, 386 00:21:13,760 --> 00:21:19,240 關於它,一個任何其他信息 插件,等等的描述。 387 00:21:19,240 --> 00:21:22,190 而且在默認情況下,它 創建一個空白的README文件, 388 00:21:22,190 --> 00:21:26,100 和一個空的測試文件為你 創建一些額外的文件, 389 00:21:26,100 --> 00:21:29,430 和測試工具,如果 你想做到這一點。 390 00:21:29,430 --> 00:21:34,160 >> 那麼就讓我們來看看第一個時, 很快,在的package.json文件。 391 00:21:34,160 --> 00:21:38,240 這是很容易,只是通過 並填寫本領域 392 00:21:38,240 --> 00:21:42,510 你將要填寫,如 它提供了一個名字,給一個說明, 393 00:21:42,510 --> 00:21:45,010 迭代版本號 每隔一段時間,提供 394 00:21:45,010 --> 00:21:47,570 作者為每 人的貢獻, 395 00:21:47,570 --> 00:21:53,000 將它們添加到貢獻者 部,並在此你休息 396 00:21:53,000 --> 00:21:56,390 可以非常簡單,只是 離開,因為它是現在。 397 00:21:56,390 --> 00:21:58,490 >> 有一件事是 重要的是要注意, 398 00:21:58,490 --> 00:22:04,990 說下plug-ins部分, 有一個叫插件密鑰。 399 00:22:04,990 --> 00:22:11,800 和此相匹配的名稱 JavaScript文件名為plugin.js。 400 00:22:11,800 --> 00:22:18,290 因此,這是雲9是如何知道,當它 讀此的package.json文件, 401 00:22:18,290 --> 00:22:20,720 對JS文件,以實際加載。 402 00:22:20,720 --> 00:22:25,440 如果我創建額外的js文件或者想 從插件重命名js文件, 403 00:22:25,440 --> 00:22:30,380 我也必須改變它 在的package.json文件。 404 00:22:30,380 --> 00:22:33,660 >> 從觀眾的任何問題? 405 00:22:33,660 --> 00:22:34,160 沒有。 406 00:22:34,160 --> 00:22:38,100 有一個人是誰 跟我一起以下為止。 407 00:22:38,100 --> 00:22:38,760 >> 好。 408 00:22:38,760 --> 00:22:42,300 所以,我實際上已經創建了一個 幾個插件已經, 409 00:22:42,300 --> 00:22:44,100 我想,在這個工作空間。 410 00:22:44,100 --> 00:22:53,800 因此,讓我們擺脫了其中的一些,加 SDK = 1&調試= 2,重裝該工作區, 411 00:22:53,800 --> 00:22:58,780 讓如果我們看看 有那些插件了。 412 00:22:58,780 --> 00:23:01,430 C9 /插件。 413 00:23:01,430 --> 00:23:01,930 開始了。 414 00:23:01,930 --> 00:23:06,910 現在,我們可以看到這個我C9 /插件 之一,我們有plugin.1和plugin.2。 415 00:23:06,910 --> 00:23:15,260 因此,我們將只加緊the-- 只是增加難度的量 416 00:23:15,260 --> 00:23:16,660 在這些插件。 417 00:23:16,660 --> 00:23:20,140 但在這裡,如果我的插件創建一個新的, 我可以把它添加到我的收藏夾。 418 00:23:20,140 --> 00:23:25,560 而我只是刪除這些從 底層的文件系統。 419 00:23:25,560 --> 00:23:28,050 >> 讓我們刪除。 420 00:23:28,050 --> 00:23:33,206 現在,如果我打開我的第一個 插件,開放plugin.js, 421 00:23:33,206 --> 00:23:39,980 我們可以看到這裡的根本 簡單的版本一個插件。 422 00:23:39,980 --> 00:23:42,170 我居然回去 這個其他工作區 423 00:23:42,170 --> 00:23:47,160 因為你至少可以在這裡看到的,是什麼 一個空白的插件實際上看起來像。 424 00:23:47,160 --> 00:23:51,810 因此,引擎蓋下,這看起來 非常相似的稱為技術, 425 00:23:51,810 --> 00:23:53,780 我認為,這是RequireJS。 426 00:23:53,780 --> 00:23:56,000 注意,這並不 看起來真的,也許, 427 00:23:56,000 --> 00:23:59,150 一樣其他一些JavaScript 我們可能已經看到文件。 428 00:23:59,150 --> 00:24:04,250 但是,相反,有一對夫婦剛 基本路線,它實際上有。 429 00:24:04,250 --> 00:24:06,900 >> 所有這些東西是第一 由IDE解釋, 430 00:24:06,900 --> 00:24:09,940 但它實際上不是 運行到指定的。 431 00:24:09,940 --> 00:24:13,610 我會告訴你當 實際上意味著在短短的時刻。 432 00:24:13,610 --> 00:24:17,840 但要注意的是,這裡有一個 main.consumes線2號線, 433 00:24:17,840 --> 00:24:23,270 這列出了所有的插件 這個插件是依賴。 434 00:24:23,270 --> 00:24:27,150 因此,在默認情況下,我們也許不會有 對其他插件的任何依賴關係, 435 00:24:27,150 --> 00:24:30,530 但是當我們真正需要 取決於所提供的功能 436 00:24:30,530 --> 00:24:34,900 其他插件的IDE, 我們需要列出這些插件 437 00:24:34,900 --> 00:24:36,890 在main.consumes行。 438 00:24:36,890 --> 00:24:39,230 然後,我們需要 其鏈接到代碼 439 00:24:39,230 --> 00:24:42,860 下面,我會告訴你,在短短 一個時刻,我們如何能做到這一點。 440 00:24:42,860 --> 00:24:46,100 >> Main.provides給出了 命名這個插件 441 00:24:46,100 --> 00:24:49,190 其他插件可以 在他們的消耗行使用。 442 00:24:49,190 --> 00:24:52,480 所以在這種情況下,我的插件 只是在該處設置在默認情況下, 443 00:24:52,480 --> 00:24:55,820 我們應該改變這種狀況是 適用於我們自己的插件, 444 00:24:55,820 --> 00:24:57,540 因為我們將看到在短短的時刻。 445 00:24:57,540 --> 00:25:01,230 現在,這裡的功能 主,此函數main 446 00:25:01,230 --> 00:25:05,630 實際上運行和解釋,但 它實際上並沒有做的非常多。 447 00:25:05,630 --> 00:25:08,970 它只是得到的一切成立,但 它實際上並不啟動插件, 448 00:25:08,970 --> 00:25:11,220 儘管名字聽起來像什麼。 449 00:25:11,220 --> 00:25:14,690 這實際上是通過發生 的方法的序列 450 00:25:14,690 --> 00:25:16,820 都包含在本插件。 451 00:25:16,820 --> 00:25:20,830 >> 所以,如果我向下滾動,我們可以看到 我們有一個生命週期,其中 452 00:25:20,830 --> 00:25:25,100 在某些情況下稱為負載, 或某些事件稱為卸載, 453 00:25:25,100 --> 00:25:26,940 一些事件實際發生。 454 00:25:26,940 --> 00:25:33,500 這真是在這裡,其中的插件 開始這些方法被調用。 455 00:25:33,500 --> 00:25:37,240 因此,讓我們更具體一點 關於這一點,我們來看一個例子。 456 00:25:37,240 --> 00:25:41,010 所以在這裡為plugin.1什麼 我們基本上要做的事情 457 00:25:41,010 --> 00:25:46,010 是創建一個菜單項 所謂的CS50研討會對話框1-- 458 00:25:46,010 --> 00:25:48,070 因為我們有兩個 them--,我們要 459 00:25:48,070 --> 00:25:50,300 將其注入到窗口菜單。 460 00:25:50,300 --> 00:25:54,590 當我們點擊它,我們 要打開一個對話 461 00:25:54,590 --> 00:25:56,290 向我們展示了一些非常基本的信息。 462 00:25:56,290 --> 00:25:58,050 >> 在這種情況下,僅僅一個世界你好。 463 00:25:58,050 --> 00:26:01,880 所以這是一個非常簡單的 你好世界對話 464 00:26:01,880 --> 00:26:05,260 我們可以實現 作為一個插件在雲9。 465 00:26:05,260 --> 00:26:07,960 所以,讓我們來看看這實際上看起來如何。 466 00:26:07,960 --> 00:26:12,730 我們將逐步通過它,只是 比較快,所以我們 467 00:26:12,730 --> 00:26:15,580 可以看下面的插件也是如此。 468 00:26:15,580 --> 00:26:19,510 請注意,我們在這裡 消費的各種插件。 469 00:26:19,510 --> 00:26:26,080 我們消耗的對話 插件,命令,菜單和用戶界面。 470 00:26:26,080 --> 00:26:30,440 貌似我其實很費時 對話兩次,這樣我就可以刪除。 471 00:26:30,440 --> 00:26:32,560 >> 並注意方式 我正在連接它們, 472 00:26:32,560 --> 00:26:37,940 這是排序的元數據是在告訴 插件系統有什麼要求 473 00:26:37,940 --> 00:26:41,480 實際上是必要的 這個插件加載。 474 00:26:41,480 --> 00:26:46,400 同樣重要的是要注意, 已加載的插件的順序 475 00:26:46,400 --> 00:26:48,300 不能保證。 476 00:26:48,300 --> 00:26:53,400 但是,什麼是保證的是,如果我 在插件指定某些作為一項要求, 477 00:26:53,400 --> 00:26:56,900 該插件將被載入 在此之前已裝入。 478 00:26:56,900 --> 00:27:00,390 >> 因此,這意味著,如果你的插件 要求所提供的一些功能 479 00:27:00,390 --> 00:27:04,380 通過在IDE別的東西,你應該 請確保您的插件消耗 480 00:27:04,380 --> 00:27:09,260 該插件,使得依賴 一定要創建的插件, 481 00:27:09,260 --> 00:27:15,010 或者實例化插件,只 之後,現有的框架存在。 482 00:27:15,010 --> 00:27:18,870 所以我在這裡所提到的 元數據的插件管理器, 483 00:27:18,870 --> 00:27:20,990 哪些我要去消費。 484 00:27:20,990 --> 00:27:24,910 而在主要功能在這裡, 我打算再連接 485 00:27:24,910 --> 00:27:30,240 我的代碼對那些進口的插件。 486 00:27:30,240 --> 00:27:33,420 >> 所以我只是要 創建一些變量 487 00:27:33,420 --> 00:27:36,620 相互匹配的那些的名字,這樣 我可以非常迅速地引用它們 488 00:27:36,620 --> 00:27:37,840 在我的代碼。 489 00:27:37,840 --> 00:27:41,840 我導入對話的原因 是因為我希望我的插件 490 00:27:41,840 --> 00:27:44,560 充當對話插件。 491 00:27:44,560 --> 00:27:49,320 這我能方式 當然這樣做是為了, 492 00:27:49,320 --> 00:27:52,740 我的代碼連接到對話 插件通過導入它 493 00:27:52,740 --> 00:27:57,210 然後通過指定由 創建一個新的對話變量 494 00:27:57,210 --> 00:28:00,460 和連接到 原裝進口插件。 495 00:28:00,460 --> 00:28:04,820 然後通過定義我 插件以一個新的對話。 496 00:28:04,820 --> 00:28:07,650 >> 因此,在初始化時,我 要定義我的插件。 497 00:28:07,650 --> 00:28:10,440 而所謂的這個變量 插件,你會看到 498 00:28:10,440 --> 00:28:14,030 只是用於一般 在整個雲9插件。 499 00:28:14,030 --> 00:28:16,980 我要去實例化一個新的 與某些屬性的對話, 500 00:28:16,980 --> 00:28:22,300 給它一個特定的名字,說它 用戶有可能將其關閉。 501 00:28:22,300 --> 00:28:24,960 那它會顯示一個小x 在右上角, 502 00:28:24,960 --> 00:28:27,529 或者在一個小按鈕 右下角。 503 00:28:27,529 --> 00:28:30,570 我是否可以選擇文本 它,這種對話是什麼稱號 504 00:28:30,570 --> 00:28:32,400 將是,依此類推。 505 00:28:32,400 --> 00:28:36,330 現在,這只是定義了對話, 但它並沒有表現出來。 506 00:28:36,330 --> 00:28:40,780 我實際上是定義 被顯示為它的行動。 507 00:28:40,780 --> 00:28:43,490 >> 再次,我鼓勵你 看看雲9 SDK, 508 00:28:43,490 --> 00:28:46,930 因為有各種對話 但他們確實有據可查。 509 00:28:46,930 --> 00:28:50,500 你可以看到不同類型的 有,並用它們 510 00:28:50,500 --> 00:28:55,380 在任何插件,您的想法。 511 00:28:55,380 --> 00:28:58,790 現在有將是一個 負載部分,和該負載 512 00:28:58,790 --> 00:29:03,390 因為你還記得是功能 所使用的插件的生命週期 513 00:29:03,390 --> 00:29:07,060 實際上實例化的一切 並做好一切準備就緒。 514 00:29:07,060 --> 00:29:11,440 現在,當這個插件加載,我不 要立即顯示一個對話框, 515 00:29:11,440 --> 00:29:14,160 因為這個插件將加載 隨著IDE的其餘部分。 516 00:29:14,160 --> 00:29:17,850 當我加載的IDE,我不希望 對話自動顯示出來。 517 00:29:17,850 --> 00:29:24,170 我只是想讓它顯示當我點擊 在我的窗口菜單項的菜單選項 518 00:29:24,170 --> 00:29:26,760 我會添加到它瞬間。 519 00:29:26,760 --> 00:29:29,480 >> 因此,有兩個不同的步驟 這裡有發生。 520 00:29:29,480 --> 00:29:32,640 我要創建一個 命令,該命令 521 00:29:32,640 --> 00:29:37,940 將負責實際 表現出對雲9 IDE對話。 522 00:29:37,940 --> 00:29:42,670 然後,我需要連接,我 要創建一個新的窗口菜單 523 00:29:42,670 --> 00:29:46,070 項目,運行該命令。 524 00:29:46,070 --> 00:29:49,740 所以,當我點擊該窗口 菜單項,該命令然後運行 525 00:29:49,740 --> 00:29:52,290 因此,我的對話,然後顯示。 526 00:29:52,290 --> 00:29:55,690 所以,這其實是一個相當 考慮這個問題的好方法。 527 00:29:55,690 --> 00:30:01,480 >> 因為第一我可以創建一個命令 他的名字是CS50研討會對話框1, 528 00:30:01,480 --> 00:30:04,860 提供某種 一般上下文它。 529 00:30:04,860 --> 00:30:08,930 這裡最重要的一點是, 注意到EXEC屬性,這 530 00:30:08,930 --> 00:30:15,160 列出了將被調用的函數 在我的插件時運行此命令。 531 00:30:15,160 --> 00:30:21,980 因此,這個命令是有點像 A--這只是一個任意雲9 532 00:30:21,980 --> 00:30:25,780 命令是可用 任何雲9插件。 533 00:30:25,780 --> 00:30:30,290 但實際的功能,它的 外出時運行此命令調用 534 00:30:30,290 --> 00:30:35,010 是節目對話功能 在我plugin.js文件。 535 00:30:35,010 --> 00:30:38,550 >> 我們可以清楚地看到 這些插件的列表 536 00:30:38,550 --> 00:30:45,480 是提供給我們的命令 首選項,滾動的方式down-- 537 00:30:45,480 --> 00:30:48,180 讓我們來看看,其實我們現在看? 538 00:30:48,180 --> 00:30:53,180 插件管理器,不,我想我 - 這是 肯定在這附近。 539 00:30:53,180 --> 00:31:00,016 嗯,有命令列表 某個地方,但我必須有, 540 00:31:00,016 --> 00:31:01,140 我忘了在哪裡。 541 00:31:01,140 --> 00:31:02,430 這樣就OK了,我們會繼續前進。 542 00:31:02,430 --> 00:31:02,930 好吧。 543 00:31:02,930 --> 00:31:05,790 因此,我們有命令的列表 這是提供給我們, 544 00:31:05,790 --> 00:31:08,550 而那些命令 這些只是亂雲9 545 00:31:08,550 --> 00:31:10,870 運行特定代碼的命令。 546 00:31:10,870 --> 00:31:13,620 因此,只要記住這一點,那 我們要運行顯示對話框 547 00:31:13,620 --> 00:31:15,640 功能瞬間。 548 00:31:15,640 --> 00:31:19,740 現在,當我真正想添加一個菜單 項目,我可以通過路徑添加該項目, 549 00:31:19,740 --> 00:31:25,570 僅僅指定正是我想要 它是,窗口/ CS50研討會對話1。 550 00:31:25,570 --> 00:31:28,380 在這一點上,我想 以創建新的項 551 00:31:28,380 --> 00:31:32,040 要運行一個命令, CS50研討會對話1。 552 00:31:32,040 --> 00:31:36,140 再次注意,這是雲計算 9命令我創建的正上方。 553 00:31:36,140 --> 00:31:38,630 >> 現在,我也想 創建一個小分, 554 00:31:38,630 --> 00:31:42,260 所以我可以做同樣的 在隨後的線。 555 00:31:42,260 --> 00:31:46,040 現在,你可能會注意到,作為 定義菜單項的一部分, 556 00:31:46,040 --> 00:31:48,200 有一個數字 與之相關聯的哪個 557 00:31:48,200 --> 00:31:51,260 實際上說的是哪兒 我想該菜單項是 558 00:31:51,260 --> 00:31:53,441 位於菜單列表。 559 00:31:53,441 --> 00:31:55,190 但是,你可能會注意到 我實際上並不 560 00:31:55,190 --> 00:31:59,540 看不到任何數字與 這些菜單,默認情況下。 561 00:31:59,540 --> 00:32:04,630 所以這是一個隱藏的小東西, 我們能做的,一點點改變我們的網址。 562 00:32:04,630 --> 00:32:12,920 因此,除了SDK = 1&調試= 2, 我將設置菜單1-- 563 00:32:12,920 --> 00:32:14,690 並希望它的菜單,沒有菜單。 564 00:32:14,690 --> 00:32:17,001 噢,這是菜單= 1。 565 00:32:17,001 --> 00:32:17,500 堅持住。 566 00:32:17,500 --> 00:32:20,150 567 00:32:20,150 --> 00:32:24,690 >> 而我們將在重裝即見 IDE的是,我仍然在調試模式下, 568 00:32:24,690 --> 00:32:27,540 但現在已經有數字 與所有的菜單相關聯。 569 00:32:27,540 --> 00:32:29,630 這告訴你 數字到底是什麼 570 00:32:29,630 --> 00:32:34,730 就是當你試圖注入 一些在此菜單系統的任何地方。 571 00:32:34,730 --> 00:32:40,365 所以在窗口菜單,我可以 看到該項目45協作, 572 00:32:40,365 --> 00:32:43,820 與之前第38項是安裝程序。 573 00:32:43,820 --> 00:32:47,530 所以,當我想注入 這兩個之間的項目, 574 00:32:47,530 --> 00:32:50,570 我只想選擇一個數字 這兩個項目之間。 575 00:32:50,570 --> 00:32:56,200 所以,我選擇了41和插入我的講座 在該位置對話框1菜單項。 576 00:32:56,200 --> 00:33:03,640 >> 這就是為什麼這個號碼 此處出現的是41號。 577 00:33:03,640 --> 00:33:08,010 這就是,該位置 在雲9菜單的菜單項。 578 00:33:08,010 --> 00:33:11,045 現在同樣的,我想 創建一個除法 579 00:33:11,045 --> 00:33:13,920 並添加它,以便有一個不錯的 這些菜單之間的分工 580 00:33:13,920 --> 00:33:14,490 項目。 581 00:33:14,490 --> 00:33:18,600 所以,我補充說,在位置43。 582 00:33:18,600 --> 00:33:20,260 到目前為止,一切都很好,我希望? 583 00:33:20,260 --> 00:33:23,920 所以,現在讓我們來實際看看 在顯示對話框中的特定代碼 584 00:33:23,920 --> 00:33:28,050 這實際上是負責任的 打開此對話框窗口。 585 00:33:28,050 --> 00:33:32,710 >> 滾動下來,我看到,我想 有這項功能顯示對話框, 586 00:33:32,710 --> 00:33:34,730 它是非常簡單的。 587 00:33:34,730 --> 00:33:38,570 我要運行顯示 方法上的插件變量。 588 00:33:38,570 --> 00:33:43,900 請記住,我們定義這 插件變量如上的對話。 589 00:33:43,900 --> 00:33:48,530 所以酒吧插件,在這種情況下,這是 我們已經在內部定義的對象。 590 00:33:48,530 --> 00:33:53,030 而且這將是一個新的對話 包含在此插件中。 591 00:33:53,030 --> 00:33:57,020 因此,我們實際引用此 插件在很多地方變 592 00:33:57,020 --> 00:33:59,790 在一個典型的雲9 開發環境。 593 00:33:59,790 --> 00:34:00,867 >> 我們會在這裡看到它。 594 00:34:00,867 --> 00:34:03,450 請注意,當我們向下滾動, 有額外的生命週期。 595 00:34:03,450 --> 00:34:06,970 所以注意到,這些響應 到被觸發的事件 596 00:34:06,970 --> 00:34:10,500 通過這個對象,這種對話的對象。 597 00:34:10,500 --> 00:34:12,710 默認情況下,有 裝載和卸載,這 598 00:34:12,710 --> 00:34:14,760 可用於所有的Cloud 9插件。 599 00:34:14,760 --> 00:34:17,139 但是,在該事件 這次對話,有 600 00:34:17,139 --> 00:34:19,139 另一個事件,可以 火也被稱為 601 00:34:19,139 --> 00:34:23,239 繪製,這是發射時 是關於屏幕被繪製, 602 00:34:23,239 --> 00:34:27,239 在第一個實例 該對話顯示。 603 00:34:27,239 --> 00:34:29,590 >> 因此,當它實際上是 將要示出, 604 00:34:29,590 --> 00:34:31,739 有將 向我們提供一些HTML。 605 00:34:31,739 --> 00:34:34,710 而僅僅使用標準 HTML做法可能我們 606 00:34:34,710 --> 00:34:41,030 注入一些很簡單的信息, 我們的Hello World,這一對話。 607 00:34:41,030 --> 00:34:47,780 因此,如果我們再向上滾動,我們可以 看到事物然後遊行 608 00:34:47,780 --> 00:34:48,989 ,它的發生。 609 00:34:48,989 --> 00:34:54,070 首先,我們創建了一個雲9命令 當通過雲9執行, 610 00:34:54,070 --> 00:34:55,765 將要觸發該功能。 611 00:34:55,765 --> 00:34:58,390 這將運行該功能 所謂表演的對話,我已經 612 00:34:58,390 --> 00:34:59,720 寫在我的代碼。 613 00:34:59,720 --> 00:35:04,350 >> 我創建了一個菜單項, 附加到它的相同的命令 614 00:35:04,350 --> 00:35:08,550 當該項目被點擊 菜單,該命令,然後執行 615 00:35:08,550 --> 00:35:10,780 並且該功能,然後運行。 616 00:35:10,780 --> 00:35:14,080 而函數中,我 剛準備打電話the--我 617 00:35:14,080 --> 00:35:17,250 只是要執行show 這個插件,的方法, 618 00:35:17,250 --> 00:35:20,800 將要第一次調用 抽籤的方法,和去 619 00:35:20,800 --> 00:35:28,050 觸發此方法向下跌破,則 畫事件處理程序,在我們的生命週期。 620 00:35:28,050 --> 00:35:30,820 然後它會實際 顯示對話。 621 00:35:30,820 --> 00:35:34,870 >> 還有一個隱藏的方法,使 如果我需要機會隱藏 622 00:35:34,870 --> 00:35:37,610 我對話,我可以做同樣的事情。 623 00:35:37,610 --> 00:35:42,060 所以這幾乎是它 讓這一切工作。 624 00:35:42,060 --> 00:35:45,160 請注意,是如果我們向下滾動 再有一個凍結公共API。 625 00:35:45,160 --> 00:35:51,020 這基本上只是說,我 希望這些方法能夠有效 626 00:35:51,020 --> 00:35:56,670 是公開的,但不是overwriteable 超出此插件的背景下。 627 00:35:56,670 --> 00:36:00,410 及以下,在最底層, 也許是過去的事情 628 00:36:00,410 --> 00:36:03,180 我們真正需要支付 備受關注到這裡,這 629 00:36:03,180 --> 00:36:09,540 是我們要註冊我們 插件具有名稱C9研討會1, 630 00:36:09,540 --> 00:36:11,920 和對象插件。 631 00:36:11,920 --> 00:36:14,870 >> 正如你可能還記得,是 該插件的插件 632 00:36:14,870 --> 00:36:18,200 對象,我們已經確定 貫​​穿本源全部 633 00:36:18,200 --> 00:36:18,840 碼。 634 00:36:18,840 --> 00:36:23,790 和C9研討會1是 我們承諾字符串 635 00:36:23,790 --> 00:36:26,350 以提供在頂部 的這一定義。 636 00:36:26,350 --> 00:36:29,280 637 00:36:29,280 --> 00:36:29,780 好。 638 00:36:29,780 --> 00:36:34,160 因此,讓我們坡道它一點點 看看我們能做些什麼 639 00:36:34,160 --> 00:36:36,020 一點點更有趣。 640 00:36:36,020 --> 00:36:38,350 現在,這僅僅是如此之大。 641 00:36:38,350 --> 00:36:41,380 我的意思是,這是,這是實際上是相當 待其冷卻的代碼,這樣幾行, 642 00:36:41,380 --> 00:36:45,570 我們可以修改現有的IDE 並添加現有的菜單項 643 00:36:45,570 --> 00:36:48,850 或添加新的菜單項,加 命令,並顯示一個對話, 644 00:36:48,850 --> 00:36:51,040 而只是一堆 功能存在。 645 00:36:51,040 --> 00:36:54,550 這真是很偉大。 646 00:36:54,550 --> 00:36:59,470 >> 不過,這並不做了很多,因為它不能 與下面的Ubuntu通信 647 00:36:59,470 --> 00:37:00,450 實例。 648 00:37:00,450 --> 00:37:02,560 所以我們可以說,我 其實想搞清楚 649 00:37:02,560 --> 00:37:05,400 有關的一些信息 基本Ubuntu的情況下, 650 00:37:05,400 --> 00:37:08,260 像的統計資料插件一樣。 651 00:37:08,260 --> 00:37:11,090 因此,讓我們來看看一個 一點資料 652 00:37:11,090 --> 00:37:13,730 有關統計插件如何在工作。 653 00:37:13,730 --> 00:37:15,900 而事實上,這是非常與此類似。 654 00:37:15,900 --> 00:37:17,680 你可能還記得, 有一個對話。 655 00:37:17,680 --> 00:37:21,680 你可能還記得,有 有些信息是 656 00:37:21,680 --> 00:37:24,860 只是沿著菜單欄沿顯示 頂部,它希望你現在 657 00:37:24,860 --> 00:37:27,450 得到怎樣一番風味 我們實現了這一點, 658 00:37:27,450 --> 00:37:32,360 只是在特定的插入菜單項 點,通過實例化一個對話 659 00:37:32,360 --> 00:37:34,360 並顯示該對話。 660 00:37:34,360 --> 00:37:36,580 >> 但是,我們還沒有表現出 你如何,我們可以把它連接 661 00:37:36,580 --> 00:37:40,790 在一個命令 底層Ubuntu的實例。 662 00:37:40,790 --> 00:37:46,930 因此,讓我們來看看,然後在plugin.2, 這不正是這件事情。 663 00:37:46,930 --> 00:37:50,540 我們要打開plugin.js, 這是該代碼。 664 00:37:50,540 --> 00:37:54,570 但在窗口菜單中, 如果我點擊對話框2, 665 00:37:54,570 --> 00:37:58,290 我們可以看到,它說,這 相反,你好CS50,這 666 00:37:58,290 --> 00:38:01,800 不看所有的誘惑,對吧? 667 00:38:01,800 --> 00:38:04,310 除非,看這個。 668 00:38:04,310 --> 00:38:07,020 讓我改變的東西倒在這裡。 669 00:38:07,020 --> 00:38:11,540 >> 我會去我 工作區和變革研討會 670 00:38:11,540 --> 00:38:15,990 說點別的,比如你好,丹。 671 00:38:15,990 --> 00:38:18,150 我將其關閉並保存。 672 00:38:18,150 --> 00:38:22,740 而現在我要重新運行 我對話的菜單項。 673 00:38:22,740 --> 00:38:25,590 並且注意到它有 現在改了它說什麼。 674 00:38:25,590 --> 00:38:26,880 你好,丹。 675 00:38:26,880 --> 00:38:30,680 我似乎已經做了一些下跌 這裡的基本Ubuntu的實例 676 00:38:30,680 --> 00:38:34,370 而不必操控任何 這又完全是運行的代碼 677 00:38:34,370 --> 00:38:35,720 在客戶端。 678 00:38:35,720 --> 00:38:40,380 因此,有明顯的某種 通信這是發生在這裡。 679 00:38:40,380 --> 00:38:44,550 >> 現在,這是一個很大的 雲9 SDK的力量進來, 680 00:38:44,550 --> 00:38:49,440 是,在這個plugin.2, 我們實際上會導致 681 00:38:49,440 --> 00:38:52,910 調用發生在 底層的實例, 682 00:38:52,910 --> 00:38:55,750 並運行一些任意命令。 683 00:38:55,750 --> 00:39:00,230 因此,在這種情況下,我反倒 創造了一個非常簡單的bash腳本 684 00:39:00,230 --> 00:39:02,350 在我的工作區名為研討會。 685 00:39:02,350 --> 00:39:03,610 因此,讓我打開了。 686 00:39:03,610 --> 00:39:05,370 而且我們可以看到,它看起來像這樣。 687 00:39:05,370 --> 00:39:08,310 這只是一個很簡單的bash 腳本,其唯一目的的生活 688 00:39:08,310 --> 00:39:11,920 將是呼應 從這段文字,你好,丹。 689 00:39:11,920 --> 00:39:14,360 或者在它之前,它CS50說你好。 690 00:39:14,360 --> 00:39:16,000 而這一切,它會做。 691 00:39:16,000 --> 00:39:21,030 >> 因為這是一個現 命令,我可以運行。 692 00:39:21,030 --> 00:39:23,750 其實我可以跑下來在這裡。 693 00:39:23,750 --> 00:39:28,440 我們可以看到,它實際上只是 我自然運行的命令。 694 00:39:28,440 --> 00:39:32,850 我可以問我的插件來執行此 命令底層工作區上 695 00:39:32,850 --> 00:39:36,510 並解析信息 這是從它返回, 696 00:39:36,510 --> 00:39:40,300 並用它做什麼,並修改 我的插件和行為,我 697 00:39:40,300 --> 00:39:43,240 在我的插件作為一個結果。好。 698 00:39:43,240 --> 00:39:45,450 因此,讓我們看看如何發生的。 699 00:39:45,450 --> 00:39:48,380 我們看到這個很簡單 研討會批處理腳本,我 700 00:39:48,380 --> 00:39:51,080 [聽不清],它可以實際運行。 701 00:39:51,080 --> 00:39:54,560 >> 現在,讓我們來看看修改 這是必要的綁在一起這 702 00:39:54,560 --> 00:39:57,620 與對話窗口,並運行它。 703 00:39:57,620 --> 00:40:02,030 所以在這裡,我們要做的漂亮 就像我們之前看到了同樣的事情。 704 00:40:02,030 --> 00:40:05,500 但是請注意,中 我已經消耗now--東西 705 00:40:05,500 --> 00:40:09,090 除了對話,這 我又碰巧做了兩次, 706 00:40:09,090 --> 00:40:14,300 這是不necessary--除 以對話和命令 707 00:40:14,300 --> 00:40:17,780 和菜單插件,這是 需要在第一個給我 708 00:40:17,780 --> 00:40:21,560 定義一個新的命令,並 一個項目注入菜單, 709 00:40:21,560 --> 00:40:25,010 我也有這個PROC插件。 710 00:40:25,010 --> 00:40:28,500 >> 而這個PROC插件允許 我們來操作流程 711 00:40:28,500 --> 00:40:30,950 在底層的實例。 712 00:40:30,950 --> 00:40:34,970 我已經把它連接我已經後 說,我的插件需要它。 713 00:40:34,970 --> 00:40:38,320 然後,我把它連接到的代碼, 正如我們在主函數中看到的。 714 00:40:38,320 --> 00:40:40,970 再次,我要 初始化我的對話。 715 00:40:40,970 --> 00:40:45,500 如果我們現在向下移動,我們 可以看到,這是不同的。 716 00:40:45,500 --> 00:40:49,040 負載的功能是一樣的,所以 它只是要創建一個命令 717 00:40:49,040 --> 00:40:54,250 並創建一個菜單項,並連接 該菜單項到該命令。 718 00:40:54,250 --> 00:40:56,690 但是,如果我們現在滾動 下展現的對話, 719 00:40:56,690 --> 00:40:59,990 我們開始看到 在出現分歧。 720 00:40:59,990 --> 00:41:04,170 >> 我們有功能顯示對話,這 只是要顯示的對話。 721 00:41:04,170 --> 00:41:12,410 但是,當我顯示此對話, 當show方法被調用時, 722 00:41:12,410 --> 00:41:14,430 它激發了繪製函數。 723 00:41:14,430 --> 00:41:18,990 而且我會再指定 那裡面的一些內容。 724 00:41:18,990 --> 00:41:21,910 所以我只是要 創建一個div,提供給它 725 00:41:21,910 --> 00:41:24,020 一些基本的文字,你好,世界。 726 00:41:24,020 --> 00:41:27,250 但是請注意,在這裡我 要附加到它的ID。 727 00:41:27,250 --> 00:41:32,350 而且很下一行我要去 使用JavaScript來發現ID, 728 00:41:32,350 --> 00:41:36,210 並存儲該對象 到另一個變量 729 00:41:36,210 --> 00:41:38,280 我只是要打電話的內容。 730 00:41:38,280 --> 00:41:41,780 >> 所以,現在每當我有 內容,我需要做的 731 00:41:41,780 --> 00:41:46,100 只是修改該對象的內部HTML。 732 00:41:46,100 --> 00:41:51,300 而對話的HTML將 然後也被修改。 733 00:41:51,300 --> 00:41:55,500 所以,當這個插件是 然後顯示,它可以發生 734 00:41:55,500 --> 00:41:59,820 這是一個新的事件 這是新來這個插件, 735 00:41:59,820 --> 00:42:03,380 但與發生在每個插件 對話中,當現在這個顯示, 736 00:42:03,380 --> 00:42:07,100 我要調用一個 函數調用獲取信息。 737 00:42:07,100 --> 00:42:10,520 而這個功能是 它的肉在這裡。 738 00:42:10,520 --> 00:42:14,930 我將使用PROC插件, 我們之前描述的,其中的方式, 739 00:42:14,930 --> 00:42:19,790 真的只是一個Node.js的庫 雲9用在這裡。 740 00:42:19,790 --> 00:42:21,730 >> 所以,你可以實際 查找關於如何 741 00:42:21,730 --> 00:42:25,340 工作,如果你進入 Node.js的文件 742 00:42:25,340 --> 00:42:29,220 查查EXEC文件 方法有過程。 743 00:42:29,220 --> 00:42:33,110 我要運行這個特定的 指揮家Ubuntu的工作空間 744 00:42:33,110 --> 00:42:38,000 研討會,這是相同的,那 我之前創建相同的命令。 745 00:42:38,000 --> 00:42:40,680 提供給它的電流 工作目錄,只是 746 00:42:40,680 --> 00:42:45,440 是超安全的條款 哪裡這個前後關係正在運行。 747 00:42:45,440 --> 00:42:49,150 而一旦已 完成並返回, 748 00:42:49,150 --> 00:42:54,040 我要運行這個 函數調用解析輸出。 749 00:42:54,040 --> 00:42:54,540 好。 750 00:42:54,540 --> 00:42:58,670 因此,這然後將要執行 在本地,或者更確切地說,一個命令 751 00:42:58,670 --> 00:43:01,700 遠程Ubuntu的實例。 752 00:43:01,700 --> 00:43:03,490 當我找回一些 信息,我則 753 00:43:03,490 --> 00:43:06,940 要調用一個單獨的函數 稱為解析輸出,即 754 00:43:06,940 --> 00:43:13,790 有這樣的簽名在這裡, 錯了,標準輸出,標準錯誤, 755 00:43:13,790 --> 00:43:15,910 並在此進行一些計算。 756 00:43:15,910 --> 00:43:18,930 所以,如果我收到一個錯誤 在所有的某種, 757 00:43:18,930 --> 00:43:22,340 我實際上將檢查看看 錯誤實際上有一些數據。 758 00:43:22,340 --> 00:43:27,204 如果是的話,那麼我將修改內 這些內容對象的HTML這 759 00:43:27,204 --> 00:43:28,995 是你還記得,我們 連接到所述對話 760 00:43:28,995 --> 00:43:32,210 在該instantiattion 對話,或在第一拉伸 761 00:43:32,210 --> 00:43:33,370 的對話。 762 00:43:33,370 --> 00:43:35,650 我會只想說, 一些錯誤發生。 763 00:43:35,650 --> 00:43:37,140 >> 現在,這是過於簡單。 764 00:43:37,140 --> 00:43:40,170 誤差值通常會 包含的東西,是有益的, 765 00:43:40,170 --> 00:43:45,520 也許是一個錯誤號碼和 錯誤從劇本本身。 766 00:43:45,520 --> 00:43:48,430 或者,如果劇本寫 事到標準錯誤, 767 00:43:48,430 --> 00:43:50,890 該數據將被填充 在該參數為好。 768 00:43:50,890 --> 00:43:53,765 我可能是一點點 小心挑選什麼樣的錯誤 769 00:43:53,765 --> 00:43:55,332 實際上,我向人們展示。 770 00:43:55,332 --> 00:43:57,415 但這個簡單的例子 好足夠了 771 00:43:57,415 --> 00:43:59,715 至少看到這一切功能。 772 00:43:59,715 --> 00:44:01,590 否則,如果有 沒有錯誤,那麼我只是 773 00:44:01,590 --> 00:44:05,500 將要提供的原始 該函數的輸出 774 00:44:05,500 --> 00:44:10,070 到該內容的內部HTML 元件,然後更新我的插件 775 00:44:10,070 --> 00:44:12,490 並顯示在這裡。 776 00:44:12,490 --> 00:44:17,550 而這幾乎是所有的 要得到這個運行。 777 00:44:17,550 --> 00:44:22,860 因此,讓我們想想再 這是如何運作,全面。 778 00:44:22,860 --> 00:44:29,330 當我第一次加載這個插件, 就像第一插件, 779 00:44:29,330 --> 00:44:32,670 我要添加一個命令是 可用任何東西,以任何插件 780 00:44:32,670 --> 00:44:37,120 在雲9,被稱為CS50研討會 對話框2,誰的責任 781 00:44:37,120 --> 00:44:39,670 將運行這個節目 對話,這是你回憶一下, 782 00:44:39,670 --> 00:44:42,730 將實際顯示對話 我要求如下。 783 00:44:42,730 --> 00:44:45,980 >> 然後,我會補充說, 命令到窗口菜單 784 00:44:45,980 --> 00:44:48,070 讓我有機會獲得的。 785 00:44:48,070 --> 00:44:51,420 而當對話 被請求時將要顯示 786 00:44:51,420 --> 00:44:55,170 我將獲取的一些信息 底層Ubuntu的實例 787 00:44:55,170 --> 00:44:58,890 通過使用exec file命令。 788 00:44:58,890 --> 00:44:59,920 打擾一下。 789 00:44:59,920 --> 00:45:04,140 一旦返回,我收到了一些 信息,則在客戶端側 790 00:45:04,140 --> 00:45:08,370 再次,我將能夠解析 該命令的輸出 791 00:45:08,370 --> 00:45:12,650 和更新的內 元素的HTML 792 00:45:12,650 --> 00:45:16,440 我們已經連接到前面。 793 00:45:16,440 --> 00:45:19,910 >> 有了這樣的,我們則有 這個全功能的插件 794 00:45:19,910 --> 00:45:24,520 這讓我獲取信息 從這個任意腳本 795 00:45:24,520 --> 00:45:27,170 我們創造的 我們的基本情況。 796 00:45:27,170 --> 00:45:29,660 但同樣,這真的 重要的,真正的關鍵 797 00:45:29,660 --> 00:45:33,030 分離出,其中每個 這些事情正在發生, 798 00:45:33,030 --> 00:45:38,320 我們有所有這些客戶端的 正在運行的瀏覽器的代碼, 799 00:45:38,320 --> 00:45:41,640 而且還沒有訪問 底層文件系統 800 00:45:41,640 --> 00:45:44,895 直到我們真正運行其中的一些 由雲提供的命令 801 00:45:44,895 --> 00:45:49,055 9 SDK像PROC,還有一些其他的 這使我們能夠讀出一些數據, 802 00:45:49,055 --> 00:45:53,500 或閱讀一些文件,如果我們需要 做那種事情。 803 00:45:53,500 --> 00:45:56,650 >> 現在,這是一個有點簡單的例子。 804 00:45:56,650 --> 00:46:00,570 還有其他的事情,我們 或許會想要做的一樣好。 805 00:46:00,570 --> 00:46:03,470 例如,也許我們真的 想節省一些信息 806 00:46:03,470 --> 00:46:04,630 到首。 807 00:46:04,630 --> 00:46:07,900 或許我們要 添加一個新的偏好設置面板 808 00:46:07,900 --> 00:46:09,690 或類似的規定。 809 00:46:09,690 --> 00:46:13,370 然後就是什麼,你 可以看看雲9 SDK 810 00:46:13,370 --> 00:46:15,300 要獲得更多的信息。 811 00:46:15,300 --> 00:46:19,990 但是,這真的是 足夠的上手。 812 00:46:19,990 --> 00:46:26,410 所以,只是為了更​​具體一點 有關的方式,其中的一些東西 813 00:46:26,410 --> 00:46:31,370 功能,我想只顯示 一個例子,這僅僅是一些 814 00:46:31,370 --> 00:46:35,580 從統計50插件的代碼。 815 00:46:35,580 --> 00:46:39,780 >> 而這段代碼基本上是 根據這些實施例 816 00:46:39,780 --> 00:46:43,310 你實際上已經看到, 但有一些更多的保障 817 00:46:43,310 --> 00:46:47,460 並在為了一些更多的複雜性 實現一些附加的東西 818 00:46:47,460 --> 00:46:48,930 我們要實現的。 819 00:46:48,930 --> 00:46:54,510 舉例來說,如果我想成為 可以節約一些設置, 820 00:46:54,510 --> 00:46:57,700 然後,我需要訪問 到設置插件, 821 00:46:57,700 --> 00:47:01,820 每次我想 閱讀一些設置, 822 00:47:01,820 --> 00:47:08,340 我可以,例如,連接到不同的 在設置事件插件。 823 00:47:08,340 --> 00:47:13,630 所以每次的設置為紅色, 例如,在我自己的插件, 824 00:47:13,630 --> 00:47:18,450 如果我要讀一些 從已保存的存儲設置 825 00:47:18,450 --> 00:47:24,540 用戶的喜好,那麼我就可以 默認設置為一個特定的位置, 826 00:47:24,540 --> 00:47:31,250 對於特定偏好,在那 我們已經JSON樣式選項文件 827 00:47:31,250 --> 00:47:33,890 先前保存,我們前面看到的。 828 00:47:33,890 --> 00:47:36,370 >> 如果我打算寫 一些設置吧, 829 00:47:36,370 --> 00:47:40,440 然後我can--或只要我們檢測 該設置已寫入 830 00:47:40,440 --> 00:47:44,420 用於:因為例如那些 設置已被用戶修改 831 00:47:44,420 --> 00:47:47,335 無論是直接在他們的設置 文件,或者偏好面板 832 00:47:47,335 --> 00:47:49,370 改變了設置 直接文件,然後 833 00:47:49,370 --> 00:47:53,590 其實我可以更新一些代碼 或更新我的插件的行為 834 00:47:53,590 --> 00:47:58,710 基於那些有變動 發生在設置文件中。 835 00:47:58,710 --> 00:48:03,380 但實際上,它的其餘部分是相當 多這一點,你已經看到了。 836 00:48:03,380 --> 00:48:06,040 >> 我們增加了一些,也許 東西是新的。 837 00:48:06,040 --> 00:48:09,440 因此,我們添加了一個首選項文件, 或者更確切地說,偏好設置面板, 838 00:48:09,440 --> 00:48:14,250 到首選項窗口,這再次 你可以找到更多信息 839 00:48:14,250 --> 00:48:16,220 在雲9 SDK給我讀。 840 00:48:16,220 --> 00:48:18,460 但一切 是相當多的,漂亮 841 00:48:18,460 --> 00:48:25,810 類似於我們之前所看到的,只是 一些額外的錯誤檢查 842 00:48:25,810 --> 00:48:30,150 還有一些額外的保護措施 和一些附加的功能 843 00:48:30,150 --> 00:48:33,314 以特色所有不同的 我們已經看到的東西。 844 00:48:33,314 --> 00:48:35,230 如果你還沒有真正 看到它,你可能會 845 00:48:35,230 --> 00:48:40,955 想知道什麼的根本 命令是在統計50窗口。 846 00:48:40,955 --> 00:48:42,840 它實際上功能。 847 00:48:42,840 --> 00:48:48,100 那麼,它is--哦,該死。 848 00:48:48,100 --> 00:48:49,410 一秒。 849 00:48:49,410 --> 00:48:49,910 堅持住。 850 00:48:49,910 --> 00:48:52,270 好。 851 00:48:52,270 --> 00:48:58,090 讓我搬這件事,所以我們實際上可以 看到當我輸入統計50會發生什麼。 852 00:48:58,090 --> 00:49:02,140 注意,在這種情況下,該 命令我出去把 853 00:49:02,140 --> 00:49:06,310 真的再次,只是腳本的 要輸出一堆信息 854 00:49:06,310 --> 00:49:08,040 JSON格式。 855 00:49:08,040 --> 00:49:10,800 其原因是,我們做到這一點 這種方式是,因為我們 856 00:49:10,800 --> 00:49:15,480 正在操作,因為我們已經寫 在JavaScript客戶端代碼, 857 00:49:15,480 --> 00:49:19,500 我們可以很容易只 解析JavaScript對象, 858 00:49:19,500 --> 00:49:23,050 真正能夠操縱 這些對象就像我們會 859 00:49:23,050 --> 00:49:24,610 任何其他的JavaScript對象。 860 00:49:24,610 --> 00:49:27,650 >> 所以這是一個非常方便的 提供了一些資料的方式 861 00:49:27,650 --> 00:49:31,950 從底層的Ubuntu實例, 如版本號,主機 862 00:49:31,950 --> 00:49:36,360 名稱,服務器是否正在監聽, 服務器,等等,什麼等等, 863 00:49:36,360 --> 00:49:39,150 和解析很 方便,速度非常快 864 00:49:39,150 --> 00:49:44,870 在插件,然後將 向我們展示了所有的信息。 865 00:49:44,870 --> 00:49:47,920 如此反复,關鍵洞察力 這裡要牢記 866 00:49:47,920 --> 00:49:54,260 介於這種分離 底層的實例, 867 00:49:54,260 --> 00:49:57,490 並且還其中代碼被加載。 868 00:49:57,490 --> 00:49:59,870 當我有一個客戶, 這是第一次加載。 869 00:49:59,870 --> 00:50:03,951 就在這個靜態的JavaScript文件 某個地方,也許是某種CDN。 870 00:50:03,951 --> 00:50:06,450 我們真的沒有照顧 太多關於這第一步。 871 00:50:06,450 --> 00:50:08,970 >> 我們只知道,它的 在客戶端運行 872 00:50:08,970 --> 00:50:12,740 而當我要的 與此泊塢窗實例進行通訊。 873 00:50:12,740 --> 00:50:15,970 那我們要這麼做 通過雲9 SDK。 874 00:50:15,970 --> 00:50:20,460 我們實際上並不具備的能力, 使用JavaScript或者Node.js的, 875 00:50:20,460 --> 00:50:21,750 直接寫它。 876 00:50:21,750 --> 00:50:29,400 我們只是使用這些現有的SDK API來做到這一點的行動為我們。 877 00:50:29,400 --> 00:50:32,490 再次,之一 真正重要的東西 878 00:50:32,490 --> 00:50:38,990 是,當我創造了這個, 當我創造了這個插件, 879 00:50:38,990 --> 00:50:42,510 並作為我的工作就可以了,一是 重要的事情要做 880 00:50:42,510 --> 00:50:44,840 是打開JavaScript控制台。 881 00:50:44,840 --> 00:50:49,400 >> 因為,因為這是所有 在JavaScript的運行, 882 00:50:49,400 --> 00:50:54,700 在客戶端,如果我使用 一個的console.log method--所以只 883 00:50:54,700 --> 00:50:56,550 顯示一個例子在這裡。 884 00:50:56,550 --> 00:51:07,630 讓我們試著修改這個簡單 插件也記錄一些數據。 885 00:51:07,630 --> 00:51:09,895 我們將添加標準輸出。 886 00:51:09,895 --> 00:51:13,010 887 00:51:13,010 --> 00:51:16,810 因此,讓我們改變這種狀況是在這裡。 888 00:51:16,810 --> 00:51:19,560 現在,當我執行 的console.log,牢記 889 00:51:19,560 --> 00:51:21,630 ,由於該運行 在客戶端, 890 00:51:21,630 --> 00:51:24,900 我會看到這一點我自己 JavaScript控制台,它 891 00:51:24,900 --> 00:51:28,540 是我將如何再能 嘗試解決和調試 892 00:51:28,540 --> 00:51:30,330 一些我有問題。 893 00:51:30,330 --> 00:51:34,110 >> 請注意,由於 我在SDK的方式,我 894 00:51:34,110 --> 00:51:37,820 然後能夠操縱 插件在這種情況下。 895 00:51:37,820 --> 00:51:39,800 所以,即使它是 保存在該實例中, 896 00:51:39,800 --> 00:51:47,130 這是以前的一個例子 規則被侵犯,其中雲9 897 00:51:47,130 --> 00:51:51,030 SDK實際上將拉插件從 潛在的實例,然後運行它們。 898 00:51:51,030 --> 00:51:54,440 所以,以這種方式,我然後 能夠操縱和建設 899 00:51:54,440 --> 00:51:55,750 一些插件在這裡。 900 00:51:55,750 --> 00:51:58,080 但是,為了給我看看 更新這個插件, 901 00:51:58,080 --> 00:52:01,880 因為它是在客戶端, 我需要保存插件 902 00:52:01,880 --> 00:52:04,950 然後重新加載整個工作區, 使新的插件是那麼 903 00:52:04,950 --> 00:52:09,230 下載到我的客戶,到我 Web瀏覽器,然後被使用。 904 00:52:09,230 --> 00:52:14,460 >> 所以,現在當我點擊這個研討會 對話框中,我們仍然可以看到這一點。 905 00:52:14,460 --> 00:52:21,311 但現在希望能在我的JavaScript 對話中,我們應該看到my--等待, 906 00:52:21,311 --> 00:52:21,810 堅持住。 907 00:52:21,810 --> 00:52:24,420 我可能會打開新的對話。 908 00:52:24,420 --> 00:52:30,230 我們應該在這裡看到我接收到的數據。 909 00:52:30,230 --> 00:52:32,780 接收到的數據,你好, 丹,這是你回憶一下, 910 00:52:32,780 --> 00:52:37,770 是的console.log的操作, 我們要求在插件。 911 00:52:37,770 --> 00:52:42,140 因此,這說明再 我前面提到的, 912 00:52:42,140 --> 00:52:45,460 這一對話,或本 圖相反,我 913 00:52:45,460 --> 00:52:49,140 前面提到的情況就是這樣。 914 00:52:49,140 --> 00:52:53,150 但是,還有一個重要的 僅用於開發異常, 915 00:52:53,150 --> 00:52:55,490 這是,插件 它本身實際上可能 916 00:52:55,490 --> 00:52:59,160 被存儲在搬運工實例 暫時,因為據推測雲9 917 00:52:59,160 --> 00:53:02,210 不希望我們能夠 操縱自己的CDN的對象。 918 00:53:02,210 --> 00:53:08,650 >> 和雲9的客戶,在加載時, 會發現這些插件在那。 919 00:53:08,650 --> 00:53:11,540 C9的插件文件夾中,並加載它們。 920 00:53:11,540 --> 00:53:15,780 但是,這些仍然發生 只在客戶端。 921 00:53:15,780 --> 00:53:19,440 於是,這僅僅是一個 只有出現異常 922 00:53:19,440 --> 00:53:23,220 雲9插件的開發。 923 00:53:23,220 --> 00:53:25,000 但對其餘 時間 - 和原因 924 00:53:25,000 --> 00:53:26,708 我們要真正 錘這home-- 925 00:53:26,708 --> 00:53:30,140 是因為大多數時間,這是 要被從CDN運行, 926 00:53:30,140 --> 00:53:33,030 而正要運行 單純從客戶端。 927 00:53:33,030 --> 00:53:36,110 >> 通常情況下將沒有 與插件相互作用, 928 00:53:36,110 --> 00:53:39,840 或有甚至沒有被任何 原因是插件本身 929 00:53:39,840 --> 00:53:42,970 實際上存儲在 底層搬運工例如, 930 00:53:42,970 --> 00:53:47,240 除了在的情況下 該SDK開發。 931 00:53:47,240 --> 00:53:51,510 如此反复,這改變只 略微因為事實 932 00:53:51,510 --> 00:53:54,650 我們正在運行SDK模式。 933 00:53:54,650 --> 00:53:57,160 這將然後加載這些 插件的開發, 934 00:53:57,160 --> 00:54:01,690 和這裡的唯一目的是使 我可以使用雲9做開發 935 00:54:01,690 --> 00:54:04,620 雲9插件。 936 00:54:04,620 --> 00:54:07,220 但即使如此,這並沒有改變 再怎麼任何工作的。 937 00:54:07,220 --> 00:54:09,650 它仍在運行 完全在客戶端上。 938 00:54:09,650 --> 00:54:16,260 >> 它只是意味著,只要我想 在雲9創建雲9插件, 939 00:54:16,260 --> 00:54:19,320 我創建這些插件, 把它們放在我的。 940 00:54:19,320 --> 00:54:25,110 在我家C9 / plugins文件夾 目錄,確保我在SDK的方式, 941 00:54:25,110 --> 00:54:29,290 每一次居然重新加載頁面我 修改該插件, 942 00:54:29,290 --> 00:54:33,590 並查看發生了什麼 我的JavaScript控制台。 943 00:54:33,590 --> 00:54:36,240 只是管理我的JavaScript 控制台來確保 944 00:54:36,240 --> 00:54:38,930 任何故障排除 信息我把安慰, 945 00:54:38,930 --> 00:54:41,920 或其他任何可能發生的 由於錯誤我已經寫 946 00:54:41,920 --> 00:54:44,940 在我的代碼或類似物,在那裡出現。 947 00:54:44,940 --> 00:54:48,007 >> 有了這樣的,這是真的 足夠的上手,我想, 948 00:54:48,007 --> 00:54:49,090 隨著雲9插件。 949 00:54:49,090 --> 00:54:53,120 特別是採取一看SDK 文檔雲9提供。 950 00:54:53,120 --> 00:54:56,650 這是一個偉大的方式來獲得 開始,因此很容易 951 00:54:56,650 --> 00:54:59,900 創建一些插件雲9。 952 00:54:59,900 --> 00:55:02,820 有了這樣的,我要感謝 大家非常多的來到我身邊。 953 00:55:02,820 --> 00:55:05,550 我希望你玩得開心 編寫插件雲9。 954 00:55:05,550 --> 00:55:09,600 或許提高插件 我們現在已經,或甚至 955 00:55:09,600 --> 00:55:11,360 加入一些自己的功能。 956 00:55:11,360 --> 00:55:14,540 我們期待著看到 什麼是你創造。 957 00:55:14,540 --> 00:55:16,330 在此之前,再見。 958 00:55:16,330 --> 00:55:18,734