דן ARMENDARIZ: שלום, וברוכים באים ל סמינר CS50 על התאמה אישית של קלאוד 9, וIDE CS50. אז היום אנחנו הולכים ל רק לדבר קצת על חלק מ מידע טכני ש הולך מאחורי הארכיטקטורה של 9 ענן, ואיך יישמנו חלק מהתוספות כחלק מענן 9 לספק IDE CS50. אז בואו פשוט לקפוץ ישר וב להתחיל לדבר על תוספות. אז באמת בתוספות התוספת ליבה של החוויה קלאוד 9. ענן 9 היא הטכנולוגיה שבבסיס שמספק לנו IDE, וגם חלון המסוף ב תחתון, יחד עם workspace-- אובונטו workspace-- ש להשתמש בו כדי לאסוף את כל הפרויקטים שלנו ולבצע סטי הבעיה שלנו, להשלים סטי הבעיה שלנו. אבל בלבו של כל שלו, כל הטכנולוגיה הוא באמת פשוט חבורה של תוספות. הכל התוספת ב שיכול להיות שונה, הוארך, אתה יכול ליצור תוספות משלך, אתה יכול להסיר אחר תוספות, באמת לשנות די הרבה פונקציונלי של IDE הענן קיים 9. אז זה קיים ענן 9 סביבה. זה באמת פשוט ברירת מחדל סביבת ענן 9. ותסתכל איך זה באמת שונה מIDE CS50. אז זה IDE CS50. שימו לב שיש כמה חזותי שינויים בין ענן 9 הרגילים הסביבה וIDE CS50. באופן ספציפי, אתה תמצאו שם לב כמה שינויים. קודם כל, יש פחות פריטי תפריט מלכתחילה. יש בעצם דרך שאתה יכול לשנות את זה. זה נקרא מצב פשוט. כברירת מחדל, מצב פשוט מופעל, ו שמפשט כמה מפריטי התפריט. זה מסיר חלק מ מתקדם יותר, כי למען האמת, הרבה תלמידים שבאים ב ולא צריך לדעת על כמה של התכונות מתקדמות יותר לא המומים עם חבורה של אפשרויות. אבל אנו מספקים את היכולת לקחת את גלגלי עזר שנקרא אלה ולהסיר ש פיגומים, כך שאנשים יכול להיות רגיל יותר התכונות המתקדמות של IDE. מייד ל זכותו של זה, יש גם כפתור באגים, ש בענן הסטנדרטי 9 הסביבה נקראת בפשטות הפעלה. אבל כברירת מחדל, יש לנו מוגדר כפתור באגים בIDE CS50 כדי להעלות את הבאגים, באופן אוטומטי לקמפל את קוד המקור, לחבר את הבאגים לGDB-- הבסיסי ומאז שרץ לבצע debugging-- וכמה צעדים אחרים גם כן. גם חלון המסוף ב מאוד-- או לייתר דיוק המסוף כרטיסייה בסעיף הקונסולה ב חלון בתחתית המסך, היה שם פשוט להיות מסוף. בעוד שבתקן ענן סביבה 9, זה באמת מראה את הפעלת יישום. בדרך זו, זה מפשט, שוב, GUI, רק קצת. אנחנו גם הוספנו כמה כפתורים לפינה הימנית העליונה של IDE כדי להראות כמה פרטים בסיסיים על הדוגמא הבסיסית. וגם הסרנו אחד האופציות על הפריטים מימין הקיצוני. אז כל זה לא מיושם על ידי שינוי בהכרח הענן 9 קוד מקור, אבל במקום דרך זוג תוספות שיישמנו לאורך כל השנה האחרונה או כך. וענן 9 אירח ויש פועל בסביבת עבודת CS50. או לייתר דיוק בסביבות העבודה ש יועדו כCS50 אידו. אז באמת זה ההבדל העיקרי בין הענן 9 וCS50 סביבות עבודה. יש גם, שבבסיס למשל, השינוי העיקרי הוא שאנו מתקינים חלק פריטים מוגדרים מראש כמו GDB, ועוד כמה דברים בסיסיים אחרים ש יצרנו, כמו 50 עדכון, וכמה צעדים אחרים שהופכים כל החוויה קצת יותר אָחִיד. אבל בסך הכל, זה רק שינוי של מערכת הקיימת כי ענן 9 יצרו עבורנו. מה אנחנו הולכים להראות קצת מאוחר יותר הוא כיצד ליצור למעשה התוספת בסיסית מעט ש מאפשר לנו להכניס משהו ל מערכת תפריטים, ולפתוח דיאלוג. ואם יש לנו מספיק זמן, אנחנו בעצם לראות איך אנחנו יכולים לאכלס ש דיאלוג עם קצת מידע מהדוגמא הבסיסית. על מנת שתוכל להגיע לזה נקודה, בואו ראשון לדבר קצת על הארכיטקטורה של 9 ענן. לכן הדרך שאנחנו רגילים לאינטראקציה עם 9 ענן הוא לגמרי דרך הלקוח. אנחנו פותחים את דפדפן אינטרנט, אנו מקלידים בCS50.io. אנו סופו של דבר, לאחר אימות, מוצגים עם IDE. אבל מבין שיש כמה צעדים כי בעצם לקבל אותנו לנקודה זו. הדבר הראשון הוא ש הלקוח שלי, דפדפן האינטרנט, על פי בקשה, ולאחר אימות, טוען את GUI ותוספות מכמה CDN, מכמה רשת אספקת תוכן. זה יכול להיות בכל מקום בכנות. וזה בעצם נפרד מהדוגמא הבסיסית. חשוב להבין שזה הוא למעשה רק חבורה של קבצים סטטיים. זה חבורה של JavaScript שהורד מCDN לדפדפן האינטרנט שלי, ו כל GUI ש רואה כאן-- זה באמת key-- כל GUI שאתה רואה כאן מנוהל בצד הלקוח. כל מה שאתה רואה בסביבת עבודת קלאוד 9 למעשה לרוץ בדפדפן. וכל דבר שאתה שולח לאורך לדוגמא הבסיסית הוא תקשר עם הדוגמא לאורך ערוץ נפרד השני, ואז הוא הציל על כי למשל דוקר. אז הסיבה שאני אומר זה למשל דוקר הוא שהטכנולוגיה שבבסיס לא באמצעות מכונות וירטואליות, אבל במקום זאת היא באמצעות טכנולוגיה בשם דוקר, אשר בעצם allows-- הקרוב אנלוגיה היא מכונה וירטואלית. אבל זה שונה בעדינות שביש שפע של הזדמנויות לרוץ שילוב של דוקר שונה מקרים במכונה אחת. והם יכולים להיות סובב עד ברציפות מהירה מאוד. זה לא ממש יותר בידול קפדן בין מופעים שונים דוקר כמו שיש במכונות וירטואליות, אבל עדיין יש הרבה בידול והפרדה בין מופעים השונים אלה. אוקיי. אז שני צעדים כאן ש חשובים להבין הוא שכאשר אנחנו הולכים לCS50.io, אנחנו הורדת GUI ותוספות, אשר נכתב ב- JavaScript, ב לדפדפן או לדפדפן. וזה אולי זוג מגה-שווה של מידע. בשלב זה, יש פעם אחת GUI עמוס והתוספות החלו, לאחר מכן הוא מתחיל לתקשר עם למשל דוקר, שאינה בהכרח צריך להיות באותו השרת. עכשיו יש חריג אחד לכך. אנחנו יכולים למעשה יש שני מנגנון אספקה ​​לGUI עצמו ולמשל דוקר ב כל אותו השרת, ש הוא למעשה משהו שאנחנו עושים לגרסה מקוונת של 9 ענן. זה לא משהו שיש לנו פורסם מאוד הסתיו הזה, אבל יש לנו גם גרסה מקוונת ש מאפשר לך להוריד ארוז גרסה של כל הדברים האלה ותאפשר לך להפעיל ענן 9 בסביבה מקוונת. העברה זו מהענן ועל יש המחשב המקומי שלך השפעה מסוימת. בפרט, אתה לא יש את היכולת כבר לשתף את סביבת העבודה שלך עם אחרים. אתה כבר לא יכול לפתוח ענן 9 מ, וCS50 IDE, מכל מחשב ואותם הקבצים לראות ש אתה עובד עם לפני. אבל במקום זה עובד מלא במחשב המקומי שלך ללא צורך גישה לאינטרנט. אבל עדיין גם במודל זה, אפילו למרות שיש לנו מכונה אחת וירטואלית שהוא בעצם ריצת הדברים האלה. יש לנו שרת נפרד שהוא אספקה ​​בעצם הענן 9 תוכן, ולאחר מכן אנחנו יש לי למשל דוקר כי הוא אחראי לתקשורת עם IDE שלקצה האחורי. אוקיי. אז כל GUI כתוב לגמרי בJavaScript באמצעות Node.js וSDK קלאוד 9, שנגיע לבעוד דקה. וכל תוספות מנוהלים בצד הלקוח. אז בואו נתמקד אז קצת על ידי הנחה שיש צעד ראשון זה הושלם למעשה בהצלחה, ומסתכל רק על דוגמא דוקר זה. אז במקרה הזה, זה היא הדרך סטנדרטית לחשוב על עושה קלאוד 9 התוספת פיתוח הוא שאתה הולך לכתיבת קוד ש להתנהל בדפדפן של המשתמש, ויש לך את ההזדמנות של באמצעות כמה APIs לתקשר עם למשל דוקר הבסיס, להריץ כמה קוד שם, ולעשות כל דבר שאולי כדאי לך לעשות. אז זה הולך להיות ההקשר שנוסיף ל להיות באמצעות לשאר הדיבורים האלה. ורק לשמור על מודל זה בחשבון. זה יהיה חשוב מאוד בדקות ספורות. יש כמה קישורים אני רוצה להראות לך. קודם כל, קלאוד 9 סיפק די הרבה תיעוד זה די טוב, שמראה איך לעשות פיתוח תוסף בסיסי. אז אם אתה הולך לכתובת אתר זו, cloud9-sdk.readme.io, תראה את התיעוד לשם. והרבה מידע זה שאתה עומד לראות ניתן למצוא גם שם, ועוד ועוד. גם אתה יכול למצוא את המקור הפתוח גרסה של 9 ענן בכתובת אתר זו, github.com/c9/core, בו אנו משתמשים כ חלק מהגרסה מקוונת של IDE, כך תוכל להיות מסוגל לקבל את אותה החוויה קלאוד 9, אבל בדרך מקוונת. בסדר. אז בואו נסתכל סביבת העבודה קלאוד 9 בפועל כאן. ושוב, אני רוצה לציין מתוך כמה דברים. זה, ממש כאן, IDE CS50 נורמלי. ואני השבתנו פחות מצב נוח תחת תפריט התצוגה כך שאני יכול לראות את כל מאפשרויות התפריט. מה שאני רוצה להראות לך תקין עכשיו הוא כמה דברים. ראשית, אם אני נכנסתי ל העדפות ולאחר מכן לחץ על Plug-in מנהל, והקלד בCS50 כאן, אנחנו יכולים לראות שיש, למעשה, כמה CS50 תוספות ש הותקנו והריצה שלנו ל לאפשר שינויים שיש לנו ראיתי לIDE CS50. עכשיו יש בעצם שתי תוספות שפועלות. יש אחד שנקרא פשוט, ש הוא המצב הפשוטה ש מאפשר לך להפחית את המספר אפשרויות תפריט לאורך החלק העליון, ויש לי זה מה שנקרא מצב פחות נוח. ואז יש גם CS50 סטטיסטיקה, שהוא אולי רק מעט misnamed. כי זה מה ש מראה לך את המידע על סביבת העבודה הבסיסית. זה מזריק לחצנים אלה לאורך ימני העליונה. זה גם מזריק פריט תפריט ל פריט חלון, לתפריט החלון ממש כאן, CS50 IDE מידע. וזה אחראי ליצירת מופע דיאלוג זה שראינו כאן, עם כל המידע שאנחנו רגיל לראות בIDE CS50 סביבת עבודה. אוקיי. אז יש למעשה אחד יותר התוספת שפיתחנו גם כן. ויש כמה אחרים ש יש לנו גם לא פורסם בפומבי. אבל אחד מהם הוא כללי התוספת שמאפשר GDB לתפקד. אז אחד ההיבטים של 9 ענן הוא שהם סיפקו כבר GUI זה ליישם הבאגים. ואחת מהתוספות ש יצרנו בעצם ווים GDB עם GUI זה גרסה מבוססת של הבאגים. והוא אחראי על תיווך כל מהבקשות שהמשתמש עשוי להיות, בין דורך על או יצירת נקודות עצירה או כל דבר לאורך שורות אלה, לתרגום ש לפקודות שGDB יכול להבין, הנפקת פקודות לGDB. וברגע שGDB מנפיק תגובה, אז אנו מפרשים וש לעדכן את GUI בהתאם לצורך. זה כנראה אחד מסובך יותר של תוספות, כך שבמקום מה שאנחנו הולך להתמקד היום הוא למעשה סטטיסטיקת plug-in, ונדבר קצת על פשוט, כמו גם. אז שציינתי קודם, ואני באמת רוצה כדי להפוך מאוד, מאוד ברור, ששוב, כל זה שאנחנו רואה כאן הוא למעשה הפועל בצד הלקוח. אנו רואים חלון מסוף בהמשך, וזה, כמובן, אם תקלידו בפקודות ל ש, שלאחר מכן ניתן יהיה מונפק לדוגמא הבסיסית. באופן דומה, אם אנחנו פותחים קובץ חדש ו הקלד כמה דברים לתוכו ולשמור אותו, הקובץ שיישמר על למשל הבסיסי. אבל העורך עצמו, זה חלון מסוף עצמו, הוא כל מיושם ב JavaScript וכל התוספת ב שאנחנו יכולים לקיים אינטראקציה עם, ולכן לשנות. יש הרבה של הרחבה כאן. אני ממליץ לקחת מבט בחשבון GitHub של קלאוד 9 כדי לראות את הכמות העצומה של תוספות שזמינות, וכתב הרבה רק כמה טוב של הקוד הוא להרחבה. אז יש משהו ש כי אני רוצה להזכיר גם על זה, שהוא כי יש הרבה של-- יש הרבה פונקציונלי זה אמור בהעדפות חלון, שראינו רק רמזתי רק כמה דקות לפני. אחד הדברים שאנחנו יכולים לעשות כIDE מפתחים, או כפי ש9 מפתחי הענן, הוא להזריק למעשה חלק לוחות העדפה משלנו. אז המצב פשוט, או המצב פחות נוח, וגם מידע IDE, או את הנתונים הסטטיסטיים plug-in, יש כל כמה העדפה לוחות המאפשרים לנו לשנות ההתנהגות של כל אחד מאלה. תוכל להבחין כי אם אני הולך ל העדפות וללכת להגדרות משתמש, יש כרטיסיית CS50, אחד שאומר מידע IDE. ואני יכול לשנות את קצב רענון מידע. ובכן, מה שקורה בסטטיסטיקת התוספת הוא שכל n-שניות, שבו n-שניות מוגדרת על ידי העדפה זו פנל, מידע נשלף מהדוגמא הבסיסית, שנשלח בחזרה לצד הלקוח, התוספת היא אז לפרש את המידע מהדוגמא הבסיסית ועדכון GUI בהתאם לצורך. אנו יכולים לראות כי עכשיו זה מוגדר עד 30 שניות, וזה ברירת המחדל. אבל אני בהחלט יכול לשנות כמה מהר זה קורה רק על ידי שינוי ערך זה. עכשיו אחד הדברים המעניינים הוא שפנל העדפה זו, GUI, היא באמת רק גרסת GUI של הרבה הגדרות הבסיסיות המוצגים בJSON. אז אם אני הולך, למשל, מתחת ל CS50 IDE תפריט, או תפריט קלאוד 9, תלוי באיזה גרסה שאתה מחפש ב, וללכת לאחד מאלה settings-- במקרה זה, פרויקט settings-- הגדרות פרויקט במקרה זה חל על כל ההגדרות לסביבת עבודה אחת זה. ואילו הגדרות משתמש להחיל לכל סביבות העבודה שאולי יש לך בחשבון שלך. אז בדיוק כמו בצד כאן, להיות ברור נוסף, יש הפרדה בין שני כי למרות שעל ידי שברירת מחדל יש סביבת עבודה אחת, ש הוא IDE CS50, אם אתה היו ללחוץ על קטן שלך אווטר כאן וללכת ללוח מחוונים, אתה תמצא שלמעשה אתה יכול ליצור סביבות עבודה נוספות. אתה יכול לראות כאן שיש לי סביבת עבודה IDE 50, וגם לצורך זה סמינר, סביבת עבודה נקרא סביבת עבודה, שנמצא ממש כאן. אז בכל מקרה, יש לי העדפות שונות. כל אחד מאלה שיש לי העדפות פרויקט נפרדות, אבל העדפות המשתמש הן משותף בין כל סביבות העבודה שלי. אגב, זו היא גם מאוד שימושי אם אתה רוצה ליצור סביבת עבודה עם אפשרויות התאמה אישית שונות. וזה מאוד שימושי ל ליצור סביבת עבודה חדשה. ולבחור אחד שיכול להיות מוגדר מראש בדרך אחרת, אולי עבור PHP במיוחד, או לייתר אופטימיות. או אפילו רק מותאם אישית. סביבת העבודה CS50 תבנית היא אחד ש להשתמש שמתקין באופן אוטומטי עדכון 50 ואת כל ההגדרות שיש לנו שם, כולל כל תוספות שיש לנו לIDE CS50. אוקיי. אבל בואו נחזור לזה. אז שוב, יש פרויקטים הגדרות, ואלה הם אלה שאנחנו מסתכלים כאן. ושים לב שיש הם חבורה של הגדרות, רבים מהם מתאימות להעדפה כולם פנלים, אבל לא. אבל אנו יכולים לראות כי כאן, בזה-- הו לא, לא שמתי את זה בהגדרות המשתמש? אולי אני שם את זה בהגדרות המשתמש. וזה, כאן אנחנו הולכים. בהגדרות המשתמש, אנחנו יכולים רואה שיש לנו סעיף CS50, וזה נכתב על ידי Cloud 9 תוספות אלה שאנחנו כבר מיושמים. יש פשוט אחד ל מתאים עם שתוספת פשוטה, ואת הנתונים הסטטיסטיים אחד ש מתאים לGUI שמבוסס גרסה של לוח ההעדפות. קצב הרענון, בזה מקרה, נקבע ל -20 שניות. כל זה, אני מקווה, ראשיתו של מידע כי אנחנו באמת תראו במעט קצת יותר פירוט, לרגע. אוקיי. אז בואו נגיד שאנחנו רוצים למעשה מקבל על זה. אנו מבינים שכל הדברים שקורה בצד הלקוח נעשה למעשה בדפדפן, ש משמעות הדבר היא כי כל תוספות שאני כותב הולכים להיות כתוב עם הדפדפן במוח. ואם אני באמת רוצה לעשות כל דבר בסביבת העבודה, אני אולי צריך ליזום איזה סוג של תקשורת בין הדפדפן ו סביבת העבודה כדי להיות בטוחה שנעשה בפועל. אבל נניח שעכשיו אני רוצה לרדת אליו ובעצם ליצור התוספת הראשונה. ובכן, הדרך שאתה יוכל כדי לעשות את זה הוא למעשה די קל. זה נתון בSDK קלאוד 9. אבל זה לקחת שם סביבת עבודה הקיימת, ש הכתובת שיש לך בראש ברך, ולהוסיף את הדברים הבאים אליו. ? SDK = 1 & דבוב = 2. עכשיו מה זה הולך כדי לאפשר הוא שSDK = 1 יהיה למעשה להגדיר את SDK מצב לנכון, שיאפשר כמה דברים נוספים. ובאגים = 2 יאפשר הודעות שגיאה להיות קצת יותר מפורט. ולכן אם אתה מביא את JavaScript קונסולה בכרטיסיית מפתחי Chrome שלך, למעשה תוכל ל רואה הרבה יותר מידע ממה שאתה היה אחר. אז אני ממליץ להפוך את שני אלה באותו הזמן, כי זה באמת שימושי לכל זה מידע נוסף. חשוב לציין, עם זאת, ש הפעלת debug לערך של 2 אומר שזה מאוד מפורט, וזה ממש יהיה קצת להאט באופן ניכר IDE שלך, במיוחד כאשר טעינה או כאשר עושים עושה משימות כבדות. אז פשוט לזכור את זה. זה שימושי לפיתוח, אבל אתה ייתכן שלא רוצה לקבל את זה בכל הזמן. אז בואו באמת לעשות את זה. אבל במקרה הזה, אני ממש צריך כבר הקים סביבת עבודה עם זה. אז בואו לראות, SDK = 1 & באגים = 2. עם כמה תוספות אני מקווה שכבר מותקן. בסדר. אז עכשיו שאני כבר הדלקתי את באגים SDK מצב, שם לב שאנחנו נמצאים במצב debug, כך אנו יכולים להסתכל בכלי הפיתוח כדי לראות כל שגיאות, שאני אעשה מחוץ למסך. אנחנו יכולים לראות שיש חבורה של שגיאות כאן. עכשיו זה בעצם די נפוץ ל 9 ענן יש כמה טעויות, ואני לא הייתי דואג עליהם עד ש לראות משהו שאולי להיות ספציפי לתוספת שקורה לך להיות יצירת. אז הנה, למשל, אנחנו מקבלים כמה 404s-- לא מצא. אנו רואים אין באפשרותנו לטעון כמה מידע מלמשל הבסיסיות עצמו. ויש חבורה של נוסף מידע, אבל רוב זה אנחנו הולך בעצם להתעלם לעת עתה. בגלל זה הוא די משותף לסביבת עבודה יש רק כמה שגיאות. אוקיי. אני הולך לעבור את זה מתוך הדרך ולחזור לכאן. ועכשיו הדרך קלה, נחמדה דבר שיש מפתח זה המצב מופעל הוא שזה מאפשר לי ליצור בקלות התוספת חדשה. אז אילו לפני שאני באמת לא יש אפשרות התוספת חדשה זו זמינה, שבו אנו יכולים לראות אם אני חוזר ל מצב מפתח שאינו שלי כאן, אין התוספת חדשה. על ידי הפעלת מצב SDK, אני יש התוספת חדשה זמין ואני בקלות יכול ליצור אחד. במקרה זה, יש כמה אפשרויות שונות, פשוטות, התוספת ריקה, התוספת מלאה, מתקין, קלאוד 9 צרור. בואו רק לבחור תוסף עבור החברה ריק כדי שנוכל לראות מאוד גרסה פשוטה של ​​אחד. עכשיו שם לב שלאורך צד שמאל זה יש עכשיו משהו מתחת מועדף, ש הוא מפרט כמה תוספות שזמין לי עכשיו. אם אני להרחיב את זה, אנחנו אעשה תוכל לראות אותם. עכשיו אני רוצה שתשים לב משהו כאן, ש הוא שזה לא הכיל למעשה בתוך ספריית סביבת העבודה במקרה של אובונטו שהבסיס שלי, אבל זה כלול בכונן הקשיח. ואיפה זה ממוקם, כי זה מאוד שימושי לדעת, במיוחד אם אתה הולך לעשות משהו עם Git, איפה זה ממוקם הוא בתיקיית .c9, / תוספים. אז אם אני הולך לשם, אנחנו יכולים לראות את זה עכשיו הרשימה של תוספות שנמצאות כאן תואם את רשימת תוספות שאני ראה בצד השמאל של מרחב העבודה שלי. עכשיו כברירת מחדל, ו זה סוג של מוזר, כברירת מחדל כאשר אני יוצר התוספת חדשה בסביבת עבודה, זה יוצר התוספת כי זה על ידי יש ברירת מחדל שם תחתון. בדרך כלל שאולי לגרום לכמה בעיות. אז הצעד הבא מאוד שאני בדרך כלל לבצע רק כדי להסיר ש התוספת מיוחדת ולהשאיר את התוספת הפשוטה רק ש היה שם בהתחלה, plugin.simple. וזה רק אחד שהוא שם. אוקיי. אז מה זה בעצם נראה? ובכן, זה הוא, שוב, חבילת JavaScript שכולל כמה קבצים, כולל קובץ plugin.js, בי התוכן העיקרי של התוספת שלי נמצאת, קובץ package.json, אשר מציין למעשה כמה מטה על התוספת זו, כמו שהכותב הוא, כל מידע נוסף על זה, תיאור של התוספת, וכן הלאה. וגם כברירת מחדל, זה יוצר קובץ README ריק, וקובץ בדיקה ריק בשבילך ליצור כמה מסמכים נוספים, ורתם בדיקה אם אתה רוצה לעשות את זה. אז בואו רק נסתכל ראשון ב, מהר מאוד, בקובץ package.json. זה קל מספיק רק לעבור זה ולמלא בתחומי זו שבו היית רוצה למלא ב, כמו לספק לו שם, לתת תיאור, לחזר את מספר הגרסה כל כך הרבה פעמים, לספק מחבר לכל אדם שתורם, להוסיף אותם לתורמים סעיף, והשאר זה יכול פחות או יותר פשוט להשאיר כפי שהוא עכשיו. יש דבר אחד שהוא חשוב לשים לב, שתחת סעיף תוספות, יש מפתח בשם התוספת. וזה מותאם לשם קובץ JavaScript נקרא plugin.js. אז ככה ענן 9 יודעים, כשזה קורא קובץ זה package.json, ש של JS קבצים לטעון למעשה. אם אני יוצר קבצי JS נוספים או רוצה כדי לשנות את שם הקובץ שJS מתוספת, יש לי גם לשנות את זה בקובץ package.json. כל שאלות מהקהל? לא. אדם שאחד שהוא הבא יחד עם לי עד כה. אוקיי. אז יש לי בעצם נוצר כמה תוספות כבר, אני חושב, בסביבת עבודה זו. אז בואו להיפטר מחלק מאלה, להוסיף SDK = 1 & באגים = 2, לטעון מחדש את סביבת עבודה זו, ובואו נראה אם ​​אנחנו יש לי אלה תוספות עכשיו. C9 / תוספים. הנה אנחנו יוצאים. אנו יכולים לראות עכשיו בC9 / התוספים שלי זה אחד, יש לנו plugin.1 וplugin.2. אז אנחנו הולכים רק כדי להגביר את כל-- רק להגדיל את כמות הקושי בכל אחד מתוספות אלה. אבל כאן, אם אני יוצר התוספת חדשה, אני יכול להוסיף אותו למועדפים שלי. ואני רק למחוק אותם מ מערכת קבצים הבסיסית. בואו להסיר את זה. עכשיו, אם אני פותח ראשון שלי plug-in, וplugin.js הפתוח, אנחנו יכולים לראות כאן שבבסיס גרסה פשוטה של ​​התוספת. תן לי בעצם לחזור לסביבת עבודה אחרת זה כי אתה יכול לפחות, כאן רואה, מה התוספת ריקה למעשה נראית. אז מתחת למכסת המנוע, זה נראה דומה מאוד לטכנולוגיה בשם, אני חושב, שזה RequireJS. שימו לב שזה לא באמת נראה, אולי, כמו כמה אחר JavaScript קבצים שאולי ראו. אך במקום זאת, יש כמה פשוט קווי יסוד שבעצם יש לו. כל הדברים האלה הוא ראשון פורש על ידי IDE, אבל זה לא ממש לרוץ עד שצוין. ואני אגיד לך מתי ש בעצם אומר ברגע. אבל שם לב שיש כאן קו main.consumes בקו 2, וזה מפרט את כל תוספות שזו התוספת תלויה. אז כברירת מחדל, אנחנו עושים אולי לא צריכים כל תלות בתוספות אחרות, אבל כאשר למעשה אנחנו צריכים תלויים בתכונות המסופקות על ידי תוספות אחרות בIDE, אנחנו צריכים לרשום אותם תוספות בשורת main.consumes. ואז אנחנו צריכים לקשר אותם לקוד להלן, שאני אראה לך בדיוק רגע על איך אנחנו יכולים לעשות את זה. Main.provides נותן שם לתוספת זו שתוספות אחרות יכולים להשתמש בקו צורכתם. אז במקרה הזה, התוספת שלי הוא פשוט להגדיר שם כברירת מחדל, ואנחנו צריכים לשנות את זה כדי להיות החלים על התוספת שלנו, כפי שנראה ברגע פשוט. עכשיו כאן בפונקציה , עיקרי פונקציה זו עיקרי למעשה לרוץ ופירש, אבל זה לא באמת עושה הרבה מאוד. זה פשוט מקבל את כל מה להגדיר, אבל זה לא באמת להתחיל את התוספת, למרות מה שהשם נשמע כמו. שבעצם קורה ב רצף של שיטות ש כלולים בכל התוספת זו. אז אם אני לגלול למטה, אנחנו יכולים לראות שיש לנו מחזור שבו חיים באירוע שנקרא עומס, או אירוע שנקרא לפרוק, כמה אירועים לקרות בפועל. זה ממש כאן איפה כתוספת מתחיל ששיטות אלה נקראות. אז בואו יהיה קצת יותר קונקרטי על זה ומסתכל על דוגמא. אז הנה לplugin.1, מה אנחנו בעצם הולכים לעשות הוא ליצור פריט בתפריט נקרא CS50 סמינר דיאלוג 1-- כי יש לנו שני them-- ואנחנו הולכים להזריק אותו לתפריט החלון. וכאשר אנו לוחצים על זה, אנחנו הולך לפתוח דיאלוג ש מראה לנו קצת מידע בסיסי מאוד. במקרה זה, רק שלום עולם. אז זה מאוד פשוט שלום דיאלוג עולם שאנחנו יכולים ליישם כתוספת בענן 9. אז בואו לראות איך זה נראה בפועל. אנחנו צעד דרכו, רק במהירות יחסית ולכן אנחנו יכול להסתכל בתוספת הבאה גם כן. שים לב שאנחנו כאן מגוון רב של תוספות. אנחנו צורכים דיאלוג plug-in, פקודות, תפריטים, וממשק משתמש. נראה כאילו אני בעצם אני גוזל דיאלוג פעמיים, כך שאני יכול להסיר את זה. ושים לב שהדרך שאני מחבר אותם, זה סוג של מטה-נתונים שאומרים לי מערכת התוספת מה דרישות נחוצים למעשה לתוספת זו כדי לטעון. חשוב גם לציין ש כדי שתוספות נטענות אינו מובטח. אבל מה מובטח הוא שאם אני לציין בתוספת כמה כדרישה, שהתוספת תהיה טעונה לפני זה נטען. אז זה אומר שאם התוספת שלך דורש בחלק מהפונקציונליות המסופקת על ידי משהו אחר בIDE, אתה צריך להיות בטוח שצורך התוספת שלך שתוספת, כך שהתלות בטוחים ליצור התוספת שלך, או מופע התוספת שלך, רק אחרי שהמסגרת הקיימת קיימת. אז הנה שהזכרתי מטה למנהל התוספת, אילו אני הולך לצרוך. ובתפקידו העיקרי כאן, אני הולך אז להתחבר הקוד שלי לאלה תוספות מיובאות. אז רק אני הולך ליצור כמה משתנים ש להתאים את השמות של כל אחד מאלה כל כך שאני יכול להפנות אותם מהר מאוד בכל הקוד שלי. הסיבה שאני יבוא דיאלוג הוא כי אני רוצה התוספת שלי לפעול כתוספת בדיאלוג. ואופן שבו אני יכול כדי לעשות את זה הוא, כמובן, להתחבר הקוד שלי לדיאלוג התוספת על ידי יבואה ולאחר מכן על ידי ציון ב יצירת משתנה דיאלוג חדש וחיבורו ל שמיובאת התוספת. ולאחר מכן על ידי הגדרה שלי התוספת כדיאלוג חדש. אז באתחול, אני רוצה להגדיר התוספת שלי. ומשתנה זה נקרא התוספת תראה רק בשימוש נפוץ לאורך קלאוד 9 תוספות. אני הולך להפעלת חדשה דיאלוג עם תכונות מסוימות, לתת לה שם ספציפי, אומר שזה אפשר למשתמשים כדי לסגור אותו. שיראה קצת x ב בפינה הימנית העליונה, או כפתור קטן ב פינה ימנית תחתונה. אם אני לא יכול לבחור טקסט מ זה, מה הכותרת של דיאלוג ש יהיה, וכן הלאה. עכשיו זה רק מגדיר את הדיאלוג, אבל זה עדיין לא מראה את זה. אני באמת צריך להגדיר פעולה לזה להיות מוצג. ושוב, אני ממליץ לך תסתכל על SDK קלאוד 9, כי יש דיאלוגים מגוון והם מתועדים ממש טובים. אתה יכול לראות את הסוגים השונים שיש, ולהשתמש בם בכל התוספת יש לך בראש. עכשיו יש הולך להיות סעיף עומס, ועומס זה פונקציה כפי שאתה זוכר הוא בשימוש על ידי מחזור החיים התוספת למעשה להפעלת כל דבר ולקבל הכל מוכן ללכת. כעת, כאשר עומסים זו התוספת, אני לא רוצה את זה כדי להראות דיאלוג מייד, כי זו התוספת תהיה לטעון יחד עם שאר IDE. וכשאני לטעון IDE ש, אני לא רוצה הדיאלוג להופיע באופן אוטומטי. אני רוצה את זה רק כדי להראות כאשר אני לוחץ על אפשרות התפריט בתפריט החלון שלי שאני אוסיף לזה לרגע. אז יש שני צעדים ברורים כאן שצריך לקרות. אני צריך ליצור הפקודה, ואת הפקודה יהיה אחראי על בעצם מראה את הדיאלוג על IDE קלאוד 9. ואז אני צריך להתחבר, אני צריך ליצור תפריט חלון חדש פריט, שפועל הפקודה ש. כך שכאשר אני לוחץ על חלון ש פריט תפריט, פקודה שלאחר מכן על הפעלה ולכן הדיאלוג שלי אז לראות. וכך זה בעצם די דרך נחמדה לחשוב על זה. כי קודם אני יכול ליצור פקודה ששמו CS50 סמינר 1 דיאלוג, שמספק כמה הקשר כללי לזה. וקצת החשובים כאן הוא שם לב תכונת EXEC, ש מפרט פונקציה שתיקרא בתוספת שלי, כאשר בפקודה זו מנוהלת. אז בפקודה זו היא כמו סוג של זה-- זה רק ענן שרירותי 9 הפקודה זה זמין לכל ענן 9 התוספת. אבל הפונקציה הממשית שזה הולך לקרוא כאשר פקודה זו מנוהלת היא פונקצית דיאלוג המופע בקובץ plugin.js. ואנחנו באמת יכולים לראות תוספות אלה והרשימה של פקודות זמינות לנו ב העדפות, לגלול את כל הדרך down-- בואו לראות, למעשה אנחנו רואים את זה עכשיו? Plug-in מנהל, לא, אני חושב שזה אני- בהחלט כאן איפשהו. ובכן, יש רשימה של פקודות איפשהו, אבל אני חייב להיות, שכחתי היכן הוא. אז בסדר, אנחנו ממשיכים הלאה. בסדר. אז יש לנו רשימה של פקודות שזמינים לנו, ופקודות אלה קלאוד 9 רק שרירותיים אלה פקודות הפועלות קוד ספציפי. אז פשוט לזכור את זה, כי אנחנו הולכים להפעיל את הדו-שיח ההצגה לתפקד לרגע. עכשיו כשאני ממש רוצה להוסיף תפריט פריט, אני יכול להוסיף פריט שעל ידי נתיב, ורק לציין היכן בדיוק אני רוצה שזה יהיה, חלון / CS50 סמינר דיאלוג 1. ובשלב זה, אני רוצה כדי ליצור פריט חדש ש הולך להפעיל פקודה, CS50 סמינר דיאלוג 1. שים לב ששוב, זה הענן 9 הפקודה יצרתי בדיוק מעל. עכשיו אני גם רוצה ליצור מחיצה קטנה, ואז אני יכול לעשות את אותו הדבר בשורה שלאחר מכן. עכשיו אולי אתה מבחין כי כ חלק מהגדרת פריט בתפריט זה, יש מספר הקשורים אליו ש אומר בעצם איפה בדיוק אני רוצה שתפריט יהיה ממוקם ברשימה של תפריטים. אבל אולי שמתם לב כי אני לא ממש לראות את כל מספרים עם תפריטים אלה, כברירת מחדל. אז יש דבר נסתר קטן ש אנחנו יכולים לעשות, קצת שינוי כתובת האתר שלנו. אז בנוסף לSDK = 1 & באגים = 2, אני אקבע תפריט ל1-- ואני מקווה שזה תפריט, לא תפריטים. אה, זה תפריטים = 1. להחזיק מעמד. ומה שנראה על הטעינה מחדש ש IDE הוא שאני עדיין במצב debug, אבל עכשיו יש מספרים הקשורים לכל התפריטים. וזה אומר לך בדיוק מה המספר כאשר אתה מנסה להזריק משהו בכל מקום במערכת בתפריט זה. אז בתפריט החלון, אני יכול ראה סעיף 45 שהם שיתוף פעולה, ופריט 38 לפני שההתקנה. לכן, כאשר אני רוצה להזריק פריט בין שני אלה, הייתי לבחור רק מספר בין שני פריטים אלה. אז נבחר 41 והוכנס הסמינר שלי פריט תפריט 1 הדו-שיח במיקום זה. ולכן מספר זה שמופיע כאן הוא מספר 41. זה המיקום של ש פריט התפריט בתפריט קלאוד 9. עכשיו באופן דומה, אני רוצה כדי ליצור מחיצה ולהוסיף אותו, כך שיש נחמד החלוקה בין כל אחד מאלה תפריט פריטים. אז אני הוספתי כי במיקום 43. עד כה, כל כך טוב, אני מקווה? אז עכשיו בואו בעצם מסתכלים הקוד הספציפי בתכנית הדו-שיח שאחראי למעשה לפתיחת חלון דו-שיח זו. גלילה למטה, אני רואה שאני רוצה יש הדו-שיח הצגת פונקציה זו, וזה מאוד פשוט. אני הולך לנהל את ההצגה שיטה על משתנה התוספת. ולזכור שאנחנו הגדרנו את זה התוספת משתנה לעיל כדיאלוג. אז בר plug-in, במקרה זה, היא זו אובייקט שהגדרנו באופן פנימי. וזה הולך להיות דיאלוג חדש בתוך התוספת זו. וכך אנחנו בעצם הפניה זו התוספת משתנה במקומות רבים בקלאוד 9 טיפוסיים סביבת פיתוח. אנחנו אראה את זה כאן. שים לב כי ככל שאנו לגלול למטה, יש מחזורי חיים נוספים. אז שם לב שמגיבים אלה לאירועים שהם ירו על ידי אובייקט זה, אובייקט הדיאלוג הזה. כברירת מחדל, יש לטעון ולפרוק, ש זמינים לכל ענן 9 תוספות. אבל במקרה של הדיאלוג הזה, יש אירוע נוסף שיכול אש נקראת גם צייר, שהוא ירה בי ש עומד להיות מצויר על מסך, בערכאה הראשונה של הדיאלוג מראה. לכן, כאשר הוא בעצם הולך להיות מוצגים, יש הולך לספק לנו כמה HTML. ושימוש סטנדרטי רק שיטות HTML יכולים להזריק קצת מידע מאוד פשוט, עולם שלום שלנו, בדיאלוג ש. אז אם אנחנו לאחר מכן לגלול למעלה, אנחנו יכולים לראות אז התהלוכה של דברים שזה מתרחש. ראשון שיצרנו פקודת ענן 9 כי כאשר מבוצעים על ידי 9 ענן, הוא הולך לירות בפונקציה זו. זה הולך לרוץ בפונקציה זו נקרא דיאלוג מופע, שיש לי נכתב בקוד שלי. אני יצרתי פריט בתפריט ו קשור אליו באותה פקודה כי כאשר הפריט שנלחץ ב התפריט, שהפקודה הוא לאחר מכן להפעיל ופונקציה שלאחר מכן להפעיל. ובתוך הפונקציה אני רק הולך לקרוא כל-- אני רק הולך לבצע את תכנית שיטה של ​​התוספת, זה ש הוא הולך לקריאה הראשונה תיקו השיטה, והולך לפטר את שיטה זה להלן, לצייר מטפל באירועים, במחזור החיים שלנו. ואז זה יהיה ממש להראות את הדיאלוג. יש גם שיטת הסתרה, כך ש אם אני צריך את ההזדמנות כדי להסתיר הדיאלוג שלי, אני יכול לעשות את אותו הדבר. אז זה פחות או יותר אותו כדי לקבל את כל זה לעבודה. שים לב שזה אם לגלול למטה עוד יש API ציבורי הקפאה. זה בעצם רק אומר שאני רוצה שיטות אלה ליעילים להיות ציבורי, אך לא overwriteable מחוץ להקשר של התוספת זו. ולהלן, בתחתית מאוד, אולי הדבר האחרון ש כי אנחנו באמת צריכים לשלם הרבה תשומת לב לכאן, ש הוא שאנחנו הולכים להירשם התוספת בשם C9 סמינר 1, ותוספת האובייקט. אשר כפי שאתה זוכר, הוא כי התוספת כי התוספת אובייקט שאנחנו כבר מגדירים בכל השלמות של מקור זה קוד. וC9 סמינר 1 הוא מחרוזת שהבטחנו לספק בראש בהגדרה זו. אוקיי. אז בואו להגביר אותו קצת ולראות אם אנחנו יכולים לעשות משהו קצת יותר מעניין. עכשיו זה רק כל כך גדול. אני מתכוון, זה, זה בעצם די מגניב שבכל כך מעט שורות קוד, אנחנו יכולים לשנות את IDE קיים ולהוסיף פריט תפריט הקיים או להוסיף פריט תפריט חדש, להוסיף הפקודה, ולהראות דיאלוג, ורק חבורה של פונקציונלי שקיים. זה באמת די גדול. אבל זה לא עושה הרבה, כי זה לא יכול לתקשר עם אובונטו הבסיס דוּגמָה. אז בואו נגיד לי ש רוצה בעצם לגלות קצת מידע על בסיס למשל אובונטו, כמו סטטיסטיקות התוספת עושה. אז בואו נסתכל מידע נוסף קצת על איך סטטיסטיקות התוספת עבודות. ולמעשה, זה מאוד דומה לזה. אתה אולי זוכר ש יש דיאלוג. אתה אולי זוכר שיש קצת מידע זה הראה רק לאורך שורת תפריטים לאורך העליון, שאני מקווה שאתה עכשיו מקבל טעם של איך יישמנו את זה, רק על ידי הוספת פריטי תפריט בספציפי נקודות ועל ידי יצירת מופע דיאלוג ובו מוצגות דיאלוג ש. אבל יש לנו עדיין לא מוצגים לך איך אנחנו יכולים לחבר אותו לפקודה ב למשל אובונטו בסיסי. אז בואו נסתכל אז בplugin.2, אשר עושה בדיוק את הדבר הזה. אנחנו הולכים לפתוח plugin.js, אשר הוא הקוד לזה. אבל תחת תפריט החלון, אם אני לוחץ על שיח 2, אנו יכולים לראות כי זה אומר זה במקום, שלום CS50, ש לא נראה כל מפתה, נכון? מלבד, לראות את זה. תן לי לשנות משהו כאן למטה. אני מתכוון ללכת לי סמינר עבודה והשינוי לומר משהו אחר, כמו שלום, דן. אני הולך לסגור אותו ולשמור אותו. ועכשיו אני הולך להפעיל מחדש פריט תפריט דיאלוג שלי. ושים לב שיש לו עכשיו שינה את מה שהוא אומר. שלום, דן. נדמה לי שעשיתי משהו למטה כאן בדוגמא אובונטו בסיס מבלי לטפל בכל קוד זה שוב פועל אך ורק בצד הלקוח. אז יש כמובן איזה תקשורת שקורה כאן. עכשיו זה שבו הרבה כוחו של קלאוד 9 SDK מגיע ב, הוא שבplugin.2 זה, אנחנו באמת יכולים לגרום ל שיחה לקרות לי למשל בסיסי, ולהריץ כמה הפקודה שרירותית. אז במקרה הזה, יש לי בעצם יצר תסריט bash פשוט מאוד בסביבת העבודה שלי נקרא סמינר. אז הרשה לי לפתוח את זה. ואנחנו יכולים לראות שזה נראה כך. זה פשוט bash פשוט מאוד תסריט שמטרתם יחידה בחיים הולך להיות להד את הטקסט הזה, שלום, דן. או לפניו, הוא אמר שלום, CS50. וזה כל מה שזה הולך לעשות. בגלל זה הוא עכשיו הפקודה שאני יכול לרוץ. אני באמת יכול להפעיל אותו כאן למטה. אנחנו יכולים לראות שזה בעצם הוא רק הפקודה שאני מפעיל באופן טבעי. אני יכול לשאול את התוספת שלי לביצוע הזה הפקודה בסביבת העבודה הבסיסית ולנתח את המידע שחזר ממנו, ולעשות עם זה משהו, ולשנות התוספת שלי וההתנהגות ש יש לי בתוספת שלי כתוצאה. אוקיי. אז בואו לראות איך זה קורה. אנחנו ראינו את זה פשוט מאוד תסריט אצווה סמינר שאני [לא ברור] שזה באמת יכול לרוץ. ועכשיו בואו לראות את השינויים כי יש צורך לקשור את זה ביחד עם חלון הדו-שיח, ולהפעיל אותו. אז הנה אנחנו הולכים לעשות די הרבה את אותו הדבר כמו שראינו לפני. אבל שם לב שבין דברים שאני כבר צרך now-- בנוסף לדיאלוג, ש שוב אני במקרה עשה פעמיים, שלא necessary-- בנוסף לדיאלוג ואת הפקודות והתפריטים תוספות, שהיו צורך בראשון לי להגדיר פקודה חדשה ו להזריק פריט לתפריטים, יש לי גם התוספת proc זה. ותוספת proc זה מאפשרת שלנו לתפעל תהליכים במופע הבסיסי. אני כבר חיברתי אותו אחרי שיש לי אמר שהתוספת שלי דורשת את זה. אז אני כבר חיברתי אותו לקוד, כפי שראינו בתפקיד הראשי. שוב, אני הולך לאתחל הדיאלוג שלי. ואם אנחנו עוברים עכשיו למטה, אנחנו ניתן לראות כיצד זה שונה. פונקצית העומס היא אותו הדבר, אז זה רק הולך ליצור פקודת וליצור פריט תפריט ולהתחבר שפריט תפריט לפקודה ש. אבל אם אנחנו עכשיו לגלול מטה כדי להראות דיאלוג, אנחנו יכולים להתחיל לראות בי ההבדלים נובעים. יש לנו דיאלוג מופע פונקציה, ש הוא פשוט הולך להראות את הדיאלוג. אבל כאשר אני מראה את הדיאלוג הזה, ו כאשר שיטת המופע נקראת, הוא יורה תיקו הפונקציה. ואני הולך אז כדי לציין חלק מתכנים הפנימיים של ש. אז רק אני הולך ליצור div, לספק לה טקסט בסיסי, שלום, עולם. אבל שם לב שאני כאן הולך לצרף אליו תעודת זהות. והקו מאוד הבא אני הולך כדי למצוא זהות שבאמצעות JavaScript, ולאחסן את האובייקט ש למשתנה אחרת שאני רק הולך לקרוא תוכן. אז עכשיו בכל פעם שיש לי תוכן, כל מה שאני צריך לעשות הוא פשוט לשנות HTML הפנימי של אובייקט זה. וHTML הדיאלוג לאחר מכן ניתן לשנות גם כן. לכן, כאשר התוספת זו היא לאחר מכן הראה, שיכול לקרות וזה אירוע חדש שהוא חדש לתוספת זו, אבל קורה בכל התוספת ב הדיאלוג, כאשר זו מוצגת כעת, אני הולך לקרוא פונקציה שנקראת להביא מידע. ופונקציה זו היא הבשר שלה כאן. אני הולך להשתמש בזה התוספת proc ש שתארנו קודם, שדרך אגב, היא באמת רק ספריית Node.js ש9 ענן משתמש כאן. אז אתה בעצם יכול מסתכל למעלה על איך זה עובד אם אתה הולך ל תיעוד Node.js ולחפש את קובץ exec שיטה לתהליכים שם. אני הולך לרוץ ספציפי הזה הפקודה, סביבת עבודה של אובונטו בית סמינר, שהוא שאותו אחד, ש אותו הפקודה שיצרתי בעבר. לספק לזה נוכחית עובד בספרייה, רק כדי להיות בטוח אולטרה במונחים של הקשר של איפה זה פועל. וברגע שהיה השלים וחזר, אני הולך להפעיל את זה פונקציה שנקראת תפוקה לנתח. אוקיי. אז זה אז הוא הולך לבצע הפקודה במקומית, או לייתר דיוק למשל אובונטו מרחוק. כשאני חוזר כמה מידע, אז אני הולך לקרוא לפונקציה נפרדת נקרא פלט לנתח, ש יש חתימה זה כאן, לטעות, stdout, stderr, ולבצע כמה חישובים על זה. אז אם קבלתי שגיאה מסוג כלשהו בכל, אני באמת אבדוק אם שגיאה למעשה יש כמה נתונים. ואם כן, אז אני יהיה לשנות פנימי HTML של אובייקט שהתוכן, ש הוא שאתה זוכר, אנחנו מחובר לדיאלוג בinstantiattion של ש דיאלוג, או בציור הראשון דיאלוג ש. אני הולך רק כדי להגיד ש איזו שגיאה שקרה. עכשיו זה פשטני מדי. בדרך כלל ערך השגיאה מכיל משהו שהיה שימושי, אולי מספר שגיאה ו שגיאה מהתסריט עצמו. או אם את התסריט כתב משהו השגיאה סטנדרטית, נתונים שהיו מאוכלסים בפרמטר זה גם כן. ויכול להיות שאני קצת יותר זהיר לגבי מה שגיאה אני בעצם להראות לאנשים. אבל דוגמא פשטנית זו הוא מספיק טוב לעת עתה לפחות כדי לראות איך כל זה פונקציות. אחרת, אם יש אין שגיאה, אז אני פשוט הולך לספק הגלם פלט של פונקציה ש לHTML הפנימי של תוכן זה אלמנט, ולאחר מכן לעדכן התוספת שלי ולהראות את זה כאן. וזה פחות או יותר כל מה ש צורך לקבל את זה כדי לרוץ. ואז בואו נחשוב על לאחר מכן איך זה פועל, כולל. כשאני טעון ראשון זו התוספת, בדיוק כמו התוספת הראשונה, אני הולך להוסיף פקודה זה זמין לכל דבר, לכל התוספת ב בענן 9, נקרא סמינר CS50 הדו-שיח 2, שאחריותו יהיה להפעיל תכנית זו דיאלוג, שהוא אתה זוכר, יהיה למעשה להראות את הדיאלוג שבקשתי להלן. אז אני אוסיף ש הפקודה לתפריט חלון כך שיש לי גישה לזה. וכאשר דיאלוג ש מתבקש תוכל לראות, אני אביא לך קצת מידע מ למשל אובונטו הבסיס באמצעות פקודת קובץ exec. סלח לי. ברגע שזה חזר ואני מקבל כמה מידע, ולאחר מכן בצד הלקוח שוב, אני יהיה מסוגל לנתח הפלט של הפקודה ש ולעדכן הפנימי HTML של האלמנטים שאנחנו מחוברים לקודם לכן. ועם זה, אז יש לנו זה התוספת פונקציונלית מלא שמאפשר לי להביא את המידע מתסריט שרירותי זו שיצרנו ב למשל הבסיסי שלנו. אבל שוב, זה ממש חשוב ובאמת מפתח להפריד בו כל הדברים האלה קורה, שיש לנו את כל זה בצד הלקוח קוד שמתנהל בדפדפן, ואין לו גישה עדיין למערכת הקבצים הבסיסית עד שלמעשה להריץ כמה מהם פקודות הניתנות על ידי הענן 9 SDK כמו proc, וכמה אלה אחרים המאפשר לנו לקרוא כמה נתונים, או לקרוא קבצים מסוימים אם אנחנו צריכים לעשות שום דבר מהסוג. עכשיו זה הוא דוגמא פשוטה למדי. יש דברים אחרים שאנחנו אולי היה רוצה לעשות גם כן. לדוגמא, אולי אנחנו באמת רוצה לחסוך קצת מידע להעדפות. או אולי אנחנו רוצים להוסיף חלונית העדפות חדשה או משהו כזה. אז זה משהו שאתה יכול להעיף מבט בSDK ענן 9 כדי לקבל מידע נוסף על. אבל זה באמת הוא מספיק כדי להתחיל. אז רק כדי להיות קצת יותר קונקרטי על האופן שבו כמה מהדברים האלה פונקציה, אני לא רוצה להראות רק דוגמא נוספת אחד, שהוא רק חלק של הקוד מסטטיסטיקת 50 התוספת. ואת הקוד הזה הוא בעצם המבוסס על דוגמאות אלה כי אתה כבר ממש ראית, אבל יש כמה אמצעי הגנה נוספות ויש לו עוד קצת מורכבות כדי כדי להשיג כמה דברים נוספים שאנחנו רוצים להשיג. לדוגמא, אם אני רוצה להיות תוכל לחסוך כמה הגדרות, אז אני צריך להיות גישה להגדרות plug-in, ובכל פעם שאני רוצה לקרוא כמה הגדרות, אני יכול, למשל, לצרף שונים אירועים בהגדרות תוסף. אז בכל פעם שהגדרות היא אדומות, לדוגמא, בתוספת שלי, אם אני הולך לקרוא כמה הגדרות מהאחסון הציל העדפות של המשתמש, אז אני יכול להגדיר ברירות מחדל למיקום ספציפי, להעדפה ספציפית, שב קובץ אפשרויות סגנון JSON שיש לנו הציל קודם לכן, שראינו קודם לכן. ואם אני הולך לכתוב כמה הגדרות לזה, אז אני can-- או ברגע שאנו מזהים שההגדרות כבר נכתבו צריכה-- כי למשל, אלה הגדרות שונו על ידי המשתמש במישרין בהגדרות שלהם קובץ, או חלונית ההעדפות שינה את ההגדרות קובץ ישירות, אז אני יכול לעדכן למעשה חלק מהקוד או לעדכן את ההתנהגות של התוספת שלי המבוסס על אותם השינויים שיש לי התרחש בקובץ ההגדרות, כמו גם. אבל באמת, כל השאר הוא די הרבה זה שאתה כבר ראית. אנו מוסיפים כמה, אולי משהו שהוא חדש. אז אנחנו להוסיף קובץ העדפה, או לייתר דיוק חלונית העדפה, לחלון ההעדפות, אשר שוב אתה יכול לגלות מידע נוסף בקלאוד 9 SDK לקרוא לי. אבל כל דבר אחר הוא פחות או יותר, די דומה למה שראינו בעבר, רק עם כמה בדיקת שגיאות נוספת וכמה הגנות נוספות וכמה פונקציונליות נוספת תכונה כל השונים דברים שראינו. אם יש לך לא באמת ראיתי את זה עדיין, ייתכן תוהה מה עומד בבסיס הפקודה היא בחלון סטטיסטיקת 50. זה בעצם פונקציה. ובכן, זה הוא-- הו, לעזאזל. שנייה אחת. להחזיק מעמד. אוקיי. תן לי לעבור את זה כל כך שאנחנו באמת יכולים לראות מה קורה כאשר אני מקליד 50 סטטיסטיקה. שים לב כי במקרה זה, הפקודה שאני יוצא לשים הוא באמת שוב, רק התסריט זה הולך פלט חבורה של מידע בפורמט JSON. והסיבה שאנחנו עושים את זה בדרך זו היא שבגלל שאנחנו פועלים, כי אנחנו כבר נכתבו הקוד בצד הלקוח ב- JavaScript, אנחנו יכולים בקלות רבה רק לנתח אובייקטי JavaScript, ובאמת להיות מסוגל לתפעל אובייקטים אלה בדיוק כמו שהיינו כל אובייקט JavaScript אחר. ואז זה מאוד נוח דרך של מתן מידע מלמשל אובונטו הבסיס, כגון מספר הגרסה, המארח שם, אם שרת מקשיב, מה הוא השרת, כן הלאה וכן הלאה, ולנתח שמאוד בקלות ומהר מאוד בתוספת כי אז הולכת כדי להראות לנו את כל מידע ש. אז שוב, את תובנה המרכזית כאן כדי לזכור ההפרדה הזאת בין למשל הבסיסי, וגם שם הקוד נטען. כי כאשר יש לי לקוח, זה טעינה ראשונה. רק קובץ JavaScript סטטי זה מ איפשהו, אולי CDN מסוג כלשהו. אנחנו לא באמת צריכים לדאוג יותר מדי על זה צעד ראשון. אנחנו רק יודעים שזה פועל בצד הלקוח ואז אני הולך ל לתקשר עם למשל דוקר זה. שאנחנו הולכים לעשות זאת דרך SDK קלאוד 9. אין לנו למעשה את היכולת, באמצעות JavaScript או Node.js, לכתוב ישירות אליו. אנחנו פשוט להשתמש SDK קיים אלה APIs לעשות פעולה שעבורנו. ושוב, אחת מ דברים חשובים באמת הוא שכאשר אני יצרתי את זה, כאשר יצרתי התוספת זו, וכפי שאני עובד עליו, אחד הדברים החשובים לעשות הוא להביא את קונסולת JavaScript. כי מאז שכל זה פועל על JavaScript, בצד הלקוח, אם אני משתמש ב console.log method-- כל כך פשוט כדי להראות דוגמא כאן. בואו ננסה לשנות את זה פשוט התוספת גם להיכנס כמה נתונים. ואנו נוסיף את התקן. אז בואו לשנות את זה כדי להיות כאן. עכשיו כשאני מבצע console.log, זכור שכן זה פועל בצד הלקוח, אני רואה את זה בי JavaScript קונסולה, ש איך אני מכן נוכל תנסה לפתור בעיות ובאגים חלק מהבעיות שיש לי. שים לב שבגלל אני במצב SDK, אני לאחר מכן תוכל לתפעל תוספות במקרה זה. אז למרות שזה נשמר במקרה זה, זה הוא הדוגמא אחת שקודם מופרת כלל, שבו הענן 9 SDK יהיה למעשה למשוך תוספות מ בסיס דוגמא ולאחר מכן להפעיל אותם. כך שבדרך זו, אני אז תוכל לתפעל ולבנות כמה תוספות כאן. אבל כדי לי לראות עדכונים לתוספת זו, כי זה בצד הלקוח, אני צריך לשמור שתוספת ולאחר מכן לטעון מחדש את כל סביבת העבודה, כך שהתוספת החדשה היא אז הוריד על הלקוח שלי, עליי נמצא בשימוש בדפדפן אינטרנט, ולאחר מכן. אז עכשיו כשאני לוחץ על סמינר זה הדו-שיח 2, אנחנו עדיין רואים את זה. אבל עכשיו אני מקווה בJavaScript שלי דיאלוג, צריכים שאנו רואים my-- לחכות, להחזיק מעמד. אולי אני צריך לפתוח את הדיאלוג טרי. אנחנו צריכים לראות את הנתונים שהתקבלו כאן. הנתונים שהתקבלו, שלום, דן, שהוא אתה זוכר, היה מבצע console.log ש בקשנו בתוספת. אז התיאור הזה אז שהוזכרתי קודם לכן, דיאלוג זה, או זה תרשים ולא, אני ש הזכרתי קודם הוא מה שקורה. אבל יש חשוב חריג היחיד לפיתוח, אשר היא שתוספת ב עצמו בעצם אולי להיות מאוחסן במופע דוקר באופן זמני, שכן יש להניח ענן 9 לא רוצה אותנו כדי להיות מסוגלות לתפעל אובייקטים על CDN שלהם. וענן 9 לקוחות, על טעינה, ימצא אלה תוספות שב. התוספת C9 תיקייה, ולטעון אותם. אבל אלה עדיין קורים רק בצד הלקוח. אז זה רק יוצא מן הכלל שמתרחש רק לפיתוח של קלאוד 9 תוספות. אבל שאר time-- והסיבה שאנחנו רוצים באמת פטיש home-- זה בגלל שרוב הזמן זה הוא הולך להיות ריצה מCDN, ורק הולך להיות מנוהל אך ורק מהצד הלקוח. בדרך כלל לא יהיה אינטראקציה עם התוספת, או שאפילו לא צריך להיות כל סיבה שהתוספות עצמם למעשה מאוחסנים ב בסיס למשל דוקר, למעט במקרה של פיתוח SDK זה. אז שוב, זה משתנה רק מעט בשל העובדה כי אנו פועלים במצב SDK. זה הולך אז לטעון אותם תוספות מפיתוח, והמטרה היחידה כאן היא כדי ש אני יכול להשתמש בענן 9 לעשות פיתוח לענן 9 תוספים. אבל גם כך, זה לא משנה שוב איך כל זה עובד. זה עדיין מתנהל לגמרי בצד הלקוח. זה רק אומר שכל פעם שאני רוצה ליצור ענן 9 תוספות בענן 9, אני יוצר אלה תוספות, לשים אותם בי. תיקייה / תוספי C9 בבית שלי ספרייה, לוודא שאני במצב SDK, טען מחדש את הדף בכל פעם שאני באמת לבצע שינויים שבתוספת, ולראות מה קורה ב קונסולת JavaScript שלי. רק לנהל JavaScript שלי לנחם לוודא כי כל פתרון בעיות מידע שאני יכול להניח לנחם, או שעלולה להתרחש כל דבר אחר בגלל השגיאות שכתבתי בקוד שלי או כמו, מופיע שם. ועם זה, זה ממש מספיק כדי להתחיל, אני חושב, עם ענן 9 תוספות. במיוחד להתבוננות SDK תיעוד שקלאוד 9 מספק. זוהי דרך מצוינת לקבל התחיל, ומאוד בקלות ליצור כמה תוספות עבור 9 ענן. ועם זה, אני רוצה להודות ל כל רב לך על הצטרפותי. אני מקווה שיהיה לך כיף כתיבת תוספות עבור 9 ענן. אולי שיפור תוספות שיש לנו עכשיו, או אולי אפילו הוספה פונקציונליות משלך. אנו מצפים לראות מה זה שאתה יוצר. עד אז, ביי.