DAVID مالان: حسنا. هذا هو CS50، وهذا هو نهاية الأسبوع تسعة. انها كانت زوبعة أكثر في الأيام القليلة الماضية. وتعيين سبع المشكلة، إذا كنت في الركبة في عمق ذلك، ندرك أن هناك الى حد بعيد الشيء الجديد الذي هو في هناك. ولكن دعونا نرى ما اذا كنا لا نستطيع قطعة كل شيء معا هنا لفترة وجيزة قبل ذلك انحرف في بعد اتجاه آخر ورؤية أي مكان آخر يمكن أن نذهب. حتى الآن لذلك، لقد تحدثت عن HTML. لقد تحدثنا عن CSS. لقد تحدثنا عن PHP. كنت قد بدأت لتجربة SQL. اليوم، سنتحدث قليلا حول جافا سكريبت. ولكن كيف تفعل كل هذه المتباينة اللغات مع بعضها البعض؟ لذلك تحدثنا الأسبوع الماضي عن فكرة وجود الخادم. لذلك دعونا مجرد رسم هذا المستطيل كما خادم ويب هنا. ويقدم خادم الويب بالتأكيد الملفات. وبعض من تلك الملفات يمكن أن تكون ملفات HTML. حتى واحد من الأشياء التي خادم الويب يمكن بصق قد يكون ملف سنقوم مجرد رسم مثل هذه تحتوي بعض HTML. لذلك في شروط للشخص العادي، ما لا HTML تسمح لك أن تفعل؟ الحضور: الصفحة نظرة لطيفة. DAVID مالان: OK، وجعل الصفحة تبدو لطيفة، على الرغم من أنني أعتقد أنني قد ثبت أن خلاف ذلك. لذا HTML لا تسمح لك وضع الصفحات هيكليا، وأنه يسمح لك ل نوع من احتفال جماليا حتى صفحة، وضع علامة على محتوى ثابت، حتى يتسنى لك ثم يمكن مشاهدته مع متصفح ويب. ولكن هذا المفتاح. انها محتوى ثابت. تكتب ذلك، لحفظه، ثم شحنه. ويخدم خادم الويب ثم ليصل إلى زوار موقعك. لكننا أسلب الأشياء باستخدام مختلف اللغة تماما. بدأنا في استخدام سمة نمط على بعض العلامات. والسمة نمط دعونا تعيين أشياء مثل حجم الخط واللون. وربما كنت قد بدأت لاكتشاف، أو كنت قريبا للنهائي مشاريع محتملة، بعد الأخرى الخصائص التي يمكنك استخدامها في CSS. وذلك في شروط للشخص العادي، ما ثم هل حقا CSS تفعل؟ تلك ليست سوى أمثلة منها. ما أنها لا تتيح لك القيام بذلك HTML لا يبدو أن ما من رأيناه حتى الآن؟ الجمهور: تعريف الأنماط من قبل نفسك. DAVID مالان: تعريف الأنماط من قبل نفسك. بحيث تحدد أشياء مثل الطبقات كما كنت قد واجهت، أو فريد تحديد العقد في وثيقة حتى يمكنك أن أسلب منهم. ولكن على نحو أكثر تحديدا، أود أن أقول أن CSS يتيح حقا أن تأخذ الأمور الميل الأخير، ويسمح لك بتحديد بكثير بتعبير أدق جماليات، في حين HTML بالنسبة للجزء الاكبر يتيح كنت هيكلة صفحاتك. وعلى الرغم من أن هناك بعض الافتراضات، مثل رأينا شعارا ل علامة العنوان، والتي تحدث تقريبا قدم أشياء كبيرة وجريئة. وهذا تعريف عام جدا العلامة - كبيرة وجريئة. ما حجم الخط هو هذا؟ ما لون هذا؟ كيف جريئة غير ذلك؟ وCSS يتيح لك أكثر دقة لحن الأشياء من هذا القبيل. وكذلك تخطيط، حيث أن بعض من رأيتم. وبصراحة، CSS قليلا لغة فوضوي. انها قوية جدا في أن تتمكن من تقديم أي حرفيا الموقع الذي كنت قد ينظر على شبكة الإنترنت اليوم معها، ولكن انها نوع من ألم في الرقبة. والبعض منكم قد خبطت رأسك على جدران بالفعل فقط أن تفعل شيئا غبيا مثل المركز القائمة على مشكلة تعيين سبعة إذا كنت قد حصلت على هذه النقطة بالفعل. ولكن ندرك، تلك الأشياء الحصول على أسهل مع مرور الوقت. البدء في إشعار الأنماط. ومرة أخرى، وجوجل سوف يكون صديقك للطرق المختلفة التي يمكنك حل هذه الأنواع من المشاكل. وأجرؤ على القول مع CSS و HTML المزيد عموما، يمكنك حل المشاكل في العديد من الطرق، وكلها قد جدا كذلك تكون صحيحة، مما يمكن لكم في شيء من هذا القبيل C، حتى الآن PHP، أو جافا سكريبت. هناك فقط الكثير مختلفة طرق لوضع الامور. ولكن هذا بدأت للحصول على وقال نحن فوضوي. مجرد نوع من المزج HTML الخاصة بك و كان CSS الخاص بك مع سمة نمط قذرة قليلا. ولذا فإننا بدلا قال، نوع من يتحدث تجريدي، التي يجب أن على الأقل البدء في عامل من CSS الخاصة بك على الأرجح. سمات لا طريقتك، ولكن على الأقل استخدام العلامة على غرار ما داخل جزء من صفحة الويب؟ الحضور: رئيس. DAVID مالان: في الرأس. حتى الآن، كان لدينا فقط العنوان تصل هناك، ولكن يمكنك أيضا إضافة نمط علامة، ويمكنك وضع CSS الخاصة بك تقريبا تحدث نحو الجزء العلوي من الصفحة. ولكن بعد ذلك أخذنا الأمور خطوة أخرى إلى الأمام ونحن الحسبان أنه من أصل أكثر في ملف منفصل. وهكذا كانت هذه الملفين بطريقة أو بأخرى مرتبطة الآن. والواقع أنه كان العلامة التي فعلت ذلك. وماذا كان واحدا من الجامع دوافع العوملة إفحص CSS جميع أكثر من ذلك؟ الجمهور: إعادة الاستخدام. DAVID مالان: إعادة الاستخدام. أليس كذلك؟ كنت قد شهدت في سبع بالفعل تعيين ع أن الكثير من الصفحات، و الصفحة شراء وبيع صفحة، و الصفحة محفظة، وربما منظم على نحو مماثل إلى حد ما. هناك شعار التمويل CS50 في أعلى إلا إذا كنت قد قررت لتغييره. هناك تذييل في أسفل الصفحات. وCSS يسمح لك ثم إلى عامل بها ذلك في ملف منفصل بحيث إذا تريد تغيير شيء في العالم عبر الموقع بأكمله الخاص بك، يمكنك حقا مجرد تغييره في مكان واحد. ولكن هناك ثمنا تدفعه يحتمل من قبل بعد أن يؤخذ خارج CSS من ملف HTML بلدي في منفصلة ملف الرجوع عليه مع العلامة، التي رأينا يوم الاثنين. ما قد يكون الجانب السلبي من هذا؟ التفكير في العودة قبل اسبوع عندما نكون ل نتحدث عن HTTP و TCP / IP، وكيف تعمل شبكة الانترنت. شيء أكثر من هنا؟ الحضور: يستغرق مزيدا من الوقت. DAVID مالان: يستغرق مزيدا من الوقت. لماذا؟ الحضور: [غير مسموع]. DAVID مالان: نعم. لذلك يمكن القول يأخذ قليلا لمزيد من الوقت. لأن واحدا، وCSS من الواضح ليس في نفس الملف. حتى الآن لديك لجعل لا واحد، ولكن اثنين من الطلبات. ولكل من تلك الطلبات كما رأينا في الكروم في ما يسمى المفتش، ونحن ننظر في علامة التبويب الشبكة، كل هذه الملفات يتطلب HTTP واحد طلب، والتي رأينا يأخذ بعض مقدار الوقت. الآن، وربما انها ليست الكثير. ربما انها فقط 20 ميلي ثانية. ربما انها 200 ميلي ثانية. ولكن التفكير في الصفحة مثل الفيسبوك، أو سي إن إن، أو جوجل، والتي هي إلى حد أكبر من الأمثلة قمنا نظرت حتى الآن. تلك الصفحات قد يكون عشرات من الملفات، كل واحدة منها قد تتطلب التحميل من ملف. بحيث يمكن الأشياء يحتمل تبدأ لإبطاء. وخاصة في هذه الأيام عندما كنا جميع لديهم هواتف النقالة في جيوبنا و اتصالات الإنترنت أبطأ، الحاجة إلى الانتظار لبضعة أجزاء من الثانية، قليلة مزيد من ميلي ثانية للإضافية يمكن أن يكون في الواقع الملفات بطيئة. الكمون هي الكلمة التي تصف نوع من انتظار أن لديك أنك تواجهك عند انتظار بعض قطعة من المعلومات. ولكن هناك رأسا على عقب. حتى انها ليست كل نوع من - هو في الواقع قليلا من متأرجحة هنا. الجانب السلبي الآن، ولكن يمكن أن تفعل ما المتصفحات لو انهم الذكية من أجل تجنب الحاجة إلى طلب نفس styles.css ملف مرة أخرى يمكن أن يكون لفعل ما؟ ذاكرة التخزين المؤقت عليه. لذلك التخزين المؤقت - C-A-C-H-E - عموما يعني هنا فقط لانقاذ الملف الذي طلبت أول مرة، و ثم تحقق ذاكرة التخزين المؤقت لذلك. تحقق كنت نوع من تخزين الحاويات، وإذا كان لديك بالفعل نسخة من styles.css، حتى لو كان بعض الدول الاخرى صفحة في مجموعة-P، أو أي موقع، تطلب مرة أخرى، لمجرد أن تعطي المستخدم الذي نفس النسخة المخزنة مؤقتا. لا تهتم تطلبها. الجانب السلبي هناك، على الرغم، كما البعض منكم وقد تعثرت أكثر في مجموعة ف. إذا قمت بإجراء تغيير على الخادم و كنت أعود إلى المتصفح ولك تحميل، وأحيانا المتصفح لا كنت معروفا ولا عناء إعادة تحميل ملف styles.css الخاص لأنه، هيا، ما هي احتمالات أن هذه الأساليب التي تستخدم الفيسبوك ذاهبون إلى تغيير ساعة لساعة أو يوما بعد يوم؟ انها منخفضة جدا. لأنها قد تتغير مع مرور الوقت، ولكن ليس كل دقيقة أو كل ساعة. ذلك خدعة، فقط لمعلوماتك عند القيام على شبكة الإنترنت التنمية، وغالبا ما باستمرار التحول الرئيسية على سبيل المثال ومن ثم انقر فوق تحميل في المتصفح الخاص بك، وهذه الإرادة أقول عادة تحديث المتصفح كل شيء، حتى إذا كان لديك بالفعل في ذاكرة التخزين المؤقت. ذلك مرة أخرى، الإيجابيات والسلبيات، ولكن كل منهم تصميم في نهاية المطاف القرارات. وحتى الآن، لم نكن فقط تنتهي القصة هنا. إذا أنا الآن أعود والظهر والظهر و مرة أخرى، بدأنا في تقديم ليس فقط HTML، ولكن PHP. لذلك في شروط للشخص العادي، ما لا PHP دعونا نفعل؟ الحضور: [غير مسموع]. DAVID مالان: ما هذا؟ الجمهور: إدخال المنطق في التعليمات البرمجية. DAVID مالان: نعم، وإدخال المنطق في التعليمات البرمجية. لذلك هو لغة البرمجة الحقيقية مع الحلقات، والمتغيرات، و وظائف، والشروط، وجميع من الأشياء التي أستعمل طريق العودة عندما منذ البداية. وPHP، رأيناه، ويمكن استخدامها إما في سطر الأوامر - هو لا يكون لديك أي شيء للقيام مع شبكة الإنترنت، على الرغم من أن هذا حقا لها أصول وما يميل أن تكون جيدة في وتفضي إلى - ولكن يمكنك استخدام PHP فقط من الطبيعة من حقيقة أن لديها الطباعة () وظيفة، وprintf (وظيفة)، أو (وظيفة) الصدى. هناك باقات من الطرق التي يمكن طباعة النص مع PHP. لذلك، يمكنك استخدام هذه البرمجة اللغة لإخراج بالضبط ما كنا نتحدث عن قبل. يمكنك توليد حيوي HTML الخاص بك. ربما ليس كل ذلك. ربما كنت أشياء رمز القرص الثابت، مثل رأس وتذييل الصفحة، والشعار، ورقة طريقتك، وذلك كله. ولكن لشيء من هذا القبيل بين مجموعة ع السبعة، أين أنت التلاعب الأسهم و تظهر محفظة للمستخدم، والتي هي الذهاب الى تغيير حيوي، هل يمكن بالتأكيد استخدام PHP ومنطق أنه يعطي كنت كلغة برمجة ل إخراج مجموعات فرعية حيوي من الصفحة. لذلك عندما نتحدث عن المواقع الحيوية، أو برمجة الويب، وهذا ما كنت تتحدث حقا. باستخدام لغة مثل PHP، أو أشياء دعا بيثون، أو روبي أو جافا، أو بعد لغات أخرى، الاستعلام عن قاعدة بيانات في كثير من الأحيان، أو ملقم آخر، و ثم يبصقون حيوي من HTML. الآن النتيجة النهائية، باعتبارها جانبا، هو أن HTML من معظم المواقع، بما في ذلك الخاصة بك سبعة مجموعة P، هو على الارجح ستكون هناك فوضى كبيرة إذا نظرتم الى المصدر التعليمات البرمجية في المتصفح. هذا ليس مشكلة كبيرة. عند هذه النقطة، عندما نهتم النمط، ونحن نهتم الاشياء التي تكتبها. نحن لن نهتم الاشياء أن ما النواتج التعليمة البرمجية الخاصة بك. لذلك لا تقلق بشأن المسافة البادئة هنا اذا كان هذا PHP إخراج فعلا الاشياء. بعد كل شيء، فإن المتصفح لا يهمني، والإنسان لن أبحث في المصدر على أي حال. نحن الموظفين، على سبيل المثال، سوف أن تبحث في PHP الخاصة بك. لذلك اسمحوا لي أن أقدم مثال سريع الآن لماذا هذا آخر قد يكون مفيدا. لذلك بصراحة، لا أستطيع أن أتذكر آخر مرة كنت تستخدم C لحل مشكلة في العالم الحقيقي. ربما كان في المدرسة العليا عندما أنا في حاجة إلى استخدام اللغة التي وكان المستوى المنخفض نسبيا وأعطاني الفرصة لنفعل شيئا عالية جدا أداء لحقا انقاذ العديد من وحدة المعالجة المركزية دورات ما أستطيع، في جزء كبير منه لأنني كنت استخدام مجموعات البيانات الضخمة، وكل دورة وحدة المعالجة المركزية فرزها. وبصراحة، حتى في أشياء مثل الهواتف في هذه الأيام وغيرها من الأجهزة حيث لم يكن لديك تماما بقدر الذاكرة وليس لديك تماما كما الكثير وحدة المعالجة المركزية، وذلك باستخدام لغات أسرع ما زالت جذابة. ولكن في العالم الحقيقي، عندما كنت للتو يريدون رمي بعض البرامج معا ل تحليل بعض البيانات، أو كنت قد جمعت في مجمله مجموعة من التسجيلات ل بعض مجموعة من الطلاب وتريد جدا أتمتة بسرعة إرسال رسائل البريد الإلكتروني واحدا تلو الآخر إلى كل واحدة من تلك المسجلين، وأنت تسير لتصل لل لغة مستوى أعلى من C إذا جاز التعبير. شيء من هذا القبيل PHP أو بيثون، أو روبي، أو نصف دزينة أخرى موجودة في هذه الأيام. ولكن هؤلاء الثلاثة هي على الارجح الأكثر عصرية في الوقت الحالي. وما يعنيه هذا هو أنه يمكنك فتح تصل محرر نص مثل gedit أو معظم أي شيء آخر ومن ثم نبدأ كتابة التعليمات البرمجية دون الحاجة إلى القلق حول ترجمة، دون الحاجة إلى قلق حقا حول إدارة الذاكرة، مع الأخذ في الاعتبار على الرغم من أن قليلا وسوف يأتي في نهاية المطاف ارتباك الظهر لدغة لك إذا يحصل على مجموعة البيانات أكبر أو مشكلة يحصل كبيرة. ولكن ماذا يعني ذلك لل لنا هو التالي. اسمحوا لي المضي قدما وتشغيل مدقق الإملاء من مشكلة تعيين ستة. لذلك هذا هو بلدي القائم على تنفيذ TRIE التي استعملتها على كبير المجلس حيث أديت ليس على ما يرام. سوف نعود في غضون اسبوع و إعادة النظر في أولئك الذين لم ينتهي على قمة لوح كبير لدينا في الماضي محاضرة. لكنه الآن، اسمحوا لي أن تمضي قدما وفقط تشغيل حل بلدي في النص، وسنفعل الملك جيمس الكتاب المقدس، وهنا نذهب. حتى تلك كلها من المفترض الكلمات التي بها أخطاء إملائية من الملك جيمس الكتاب المقدس. واستغرق تنفيذ بلدي في الشوط الثاني في المجموع. بحيث لا بأس بها على هذا كمبيوتر معين. ولكن التفكير في كم كود اضطررت إلى الكتابة. التفكير في كيفية الكثير من رمز كان عليك أن تكتب. أعتقد كم ساعة قضيت في D-القاعة أو النوم الخاصة بك أو في أي مكان الترميز فعليا حتى هذا الحل. حسنا، إذا أنا فعلا مستوى أعلى اللغات مثل PHP، علما ما يمكنني القيام به هنا. أولا، لنفترض أن هذا هو بدلا من ذلك كود التوزيع. هذا هو ملف يسمى مدقق الإملاء. لأنها متاحة كجزء من اليوم كود التوزيع. وانا ذاهب الى موجة يدي على الأكثر من التفاصيل، ولكن هذا هو الواقع مثال للاهتمام لكيفية كنت قد ميناء لغة مثل C أكثر من PHP. فتحت نافذتين حرفيا النص، واحدة مع بلدي النسخة C من speller.c، وأنا بدأت للتو ترجمتها في بلدي التوجه الى PHP وكتابتها خارج باستخدام أقرب ظائف مكافئ. وحتى بعض من هذه الأمور مختلفة. رأينا المرة الأخيرة التي لا تستخدم PHP تدرج في تماما بنفس الطريقة. ويستخدم عادة ما تتطلب، على الرغم من وتشمل موجود. تحديد يختلف قليلا عن تعريف # في C، ولكن هذا كيف نجعل ثابت. $ ARGC اتضح موجود في PHP، لذلك رأيناه من قبل. هذه هي المتغيرات فقط، كل التي تبدأ مع وجود علامات الدولار. أذكر هذه ليست سوى حفنة العائمة نقطة. حتى قصة قصيرة طويلة، فنحن نرحب بك ل الوجه من خلال هذا إذا غريبة، وهذا هو ما يقرب من تحويل الخط لخط لل C نسخة من speller.c في PHP. ويمكن القيام بذلك مرة أخرى ل نصف دزينة من اللغات الأخرى. ولكن ما هو مثير للاهتمام هو هذا. أو ما هو المثبط للهمم بصراحة هو هذا. اسمحوا لي أن تمضي قدما واكتب حول dictionary.php، والادعاء بأن أنا ذاهب الى المضي قدما وإعادة تنفيذ مشكلة تعيين ستة هنا. لذلك دعونا اقتراح الأولى التي في هذا ملف، والتي سيتم تنفيذها في PHP، لذلك اسمحوا لي أن فتح به بلدي من هذا القبيل. اسمحوا لي أن أقدم نفسي العالمي المتغير، $ حجم يحصل الصفر. وانا ذاهب لإعطاء نفسي جدول تجزئة. سوف تستخدم جدول تجزئة لهذا الشيء. كيف يمكنني تعلن جدول تجزئة في PHP؟ القيام به. موافق. يمثل شريحة مفتوحة حتى قوس إغلاق ما في PHP، كما رأينا؟ صفيف، ولكن مجموعة التي يمكن أن تكون مجموعة النقابي. مجموعة النقابي هو بنية البيانات التي الزميلة مفاتيح مع القيم. الآن في أبسط فهرستها عدديا مجموعة، وتلك المفاتيح هي ماذا؟ صفر، واحد، اثنان، ثلاثة، أليس كذلك؟ الاشياء المدرسة القديمة مرة أخرى من C. ولكن ما في وسعها أيضا أن تكون مثل سلاسل فو، وبار، و أو ماكسويل، أو أي سلسلة من هذا القبيل. حتى أتمكن من الاستفادة من هذه في مجرد لحظة. اسمحوا لي أن تمضي قدما وتعلن وظيفة مثل - دعونا نفعل الحمل () أولا. حتى حمولة وظيفة (). وPHP هي مختلفة قليلا في ذلك اكتب لكم حرفيا وظيفة، ولكن عليك لا تكتب نوع الإرجاع. انا ذاهب الى المضي قدما والقول بأن تحميل وظيفة () ينبغي أن تأخذ في حجة $ القاموس، فقط مثلما فعل C الإصدار. وأنا أفعل ذلك من الذاكرة. وأقترح أن أنا ذاهب للقيام بذلك. أنا ببساطة تنوي القيام به فورياش. انا ذاهب الى استدعاء دالة يسمى ملف ()، ويمر في اسم ذلك ملف، والذي هو متغير $ $ القاموس كما الكلمة. ثم داخل بلدي لحلقة هنا، وأنا ذاهب الى المضي قدما وتخزينها في بلدي $ $ الجدول الذي يحصل الكلمة الحقيقية. القيام به. أوه، الانتظار. القيام به. موافق. وهذا هو الحمل (وظيفة) ويقول في PHP. الآن، لماذا لا تعمل؟ وأنا نوع من الغش هنا. لذلك، واحد، فورياش رأيناها مشاركة لفترة وجيزة الوقت. بل يعني فقط أنه يمكنك تكرار عبر مجموعة دون عناء مع ط ون وزائد زائد، وذلك كله. القاموس هو بالطبع اسم الملف، شيء من هذا القبيل كبيرة أو صغيرة، وهما القواميس كنا آخر مرة. ملف هي وظيفة التي تفتح النص ملف، يقرأ عليه في سطرا سطرا، و يد إجراء النسخ مجموعة ضخمة، كل العناصر التي هي خط من هذا الملف. ذلك أن الجمع بين الدالة fopen، و fread، وبينما حلقة، وfclose، وذلك كله. أخيرا، وكما تعني كلمة فقط وهذا هو متغير انا ذاهب الى الحصول على على كل التكرار في هذه الحلقة. لذلك باختصار، هذا يعني بطانة واحد هنا فتح ملف اسمه في القاموس، المتغير، تكرار عبر ذلك سطرا سطرا، وفي كل مرة تحصل خط، وتخزينها في متغير يسمى كلمة، ثم تفعل شيئا مع الكلمة. ماذا أريد أن أفعل؟ أريد أن أضع كلمة في جدول التجزئة بلدي. حسنا، أنا يمكن وضع شيء في بلدي تجزئة الجدول مثلما هو الحال في C باستخدام الأقواس المربعة. هذا هو اسم لجدول التجزئة بلدي. انا ذاهب الى مؤشر إلى أن تجزئة الجدول في هذا الموقع. حتى لا قوس الصفر، وليس قوس واحدة. قوس الاقتباس شيء نهاية الاقتباس، مهما كانت تلك الكلمة. ومثلما قد يكون لديك في حياتك TRIE عمل جدول التجزئة، يمكنك تخزين فقط فعليا منطقية، ضمنيا أو صراحة. القيام به. أنا تخزين القيمة الحقيقية. الآن هناك بضعة أشياء أنا قطع زوايا هنا. من الناحية الفنية، وهناك سيكون ل خط جديد مزعج، / ن، في نهاية كل من هذه الكلمات. لذلك ينبغي أنا ربما استدعاء دالة PHP دعا ختم ()، والتي سوف حرفيا أن ختم الخروج. وأنا فعلا بحاجة ل تفعل شيئا واحدا الأخرى. وربما ينبغي أن زيادة حجم على كل التكرار، لذلك أنا متابعة على الصعيد العالمي ما هو عليه. وبصراحة، وهذا هو واحد من جوانب غباء من PHP، إذا كنت باستخدام متغير عمومي، تحتاج أن أقول صراحة أن كنت. لذلك أنا ذاهب لكتابة الواقع في العالمية $ حجم، الجدول $ العالمية، والآن وظيفتي كاملة. لذلك ليس تماما بسيطة كما كانت من قبل، ولكن ربما استغرق وقتا أقل من C نسخة، ربما؟ موافق. حتى الآن دعونا نفعل الاختيار (وظيفة). دعونا نرى ما اذا كان هذا استغرق ما لا يقل عن ساعات على نهاية أن استغرقنا في C. لذا اسمحوا لي أن تمضي قدما وتعلن تحقق بوصفها وظيفة. يأخذ في كلمة وحجة، والذي هو سوف يأتي من مدقق الإملاء. وأنا ذاهب لمجرد معرفة ما اذا كان التالية isset متغير، الجدول قوس strtolower من كلمة - دعونا التوازن بين جميع من الأقواس بلدي - ثم العودة الحقيقية. آخر - ان كان حقا من الصعب جزء من هذا البرنامج. آخر، عودة كاذبة. القيام به. هذا الاختيار (). الآن، لماذا هذا العمل؟ حسنا، واحد مررت في كلمة واحدة، وهي السلسلة. اثنين، وأنا فحص داخل التجزئة الجدول، الذي يسمى $ الجدول. أنا اضطرها إلى أحرف صغيرة عن طريق استدعاء وظيفة مماثلة تماما tolower () في C، ولكن هذا لا كلمة كله، لا حرف واحد. وإذا كان ذلك تم تعيين، وبعبارة أخرى هناك يتم تعيين قيمة، وبعبارة أخرى، إذا كان هذا صحيحا، ثم نعم، هذه هي كلمة. لأنني وضعه هناك مع الحمولة (). وإذا لم يكن كذلك، وأنا ذاهب إلى عودة كاذبة. الآن من السهل الآخرين. حجم وظيفة ()، كيف أفعل ذلك؟ أنا أساسا لا عودة $ الحجم. ولكني في حاجة تقنيا تفعل هذا الشيء مزعج. وفعليا حتى نسمع، كنت قطع زاوية واحدة كثيرة جدا. أنا حقا بحاجة الى القيام الجدول $ العالمية. ولكن أن يقال، تفريغ). تفريغ () هو مدهش. وظيفة تفريغ (). كيف أريد لتنفيذ تفريغ ()؟ القيام به. موافق. لذلك تفريغ ()، وإدارة الذاكرة اتخذت تماما الرعاية لك في شيء من هذا القبيل PHP والكثير لغات المستوى العالي. لذلك هذا هو مدهش. مثل لماذا بحق الجحيم لم قضينا الماضي بالإضافة إلى ثمانية أسابيع على الكتابة C يبدو بطيئا حقا، حقا الوقت تستهلك مشاكل مع عشرات من ساعات من العمل تحت الأحزمة لدينا؟ حسنا، لشيء واحد، قد تعمل هذه غرامة لبرامج صغيرة. انها اسرعت بالتأكيد حتى بلدي الوقت اللازم لتطوير. ولكن دعونا نرى ما سيحدث في العالم الحقيقي. اسمحوا لي أن أخوض في هذا الدليل في إطار محطة طرفية. هناك مدقق الإملاء. وتلاحظ بوصفها جانبا، وكنت قد لقد واجهت هذه المشكلة في تعيين ستة أو سبعة مشكلة تعيين. لم يكن لديك بدقة ل إنهاء ملفات PHP مع. بي. إذا وضعت خط من هذا القبيل واحد لأول مرة في أعلى جدا، وهذا هو خط خاص من جملة هذا يعني أساسا تجد برنامج يسمى PHP واستخدامها ل تفسير هذا الملف. وحتى الآن لا أحد يعرف حقا أن أنا على التوالي برنامج PHP. يمكنني تشغيله فقط كما لو أنه وقد جمعت شيئا في C. ولكن هنا الشيء. في الواقع، دعونا نفعل ذلك مرة أخرى. Dropbox/pset6 /. هناك مدقق الإملاء. موافق، 0.44 ثواني. انها حصلت على أسرع هذه المرة. الآن دعونا نذهب إلى إصدار PHP. لفتة جميلة. ولكن مجرد التفكير في كيفية الكثير من الوقت انني أنقذت في الساعات المكتبية. موافق. حتى 3.59 ثانية، والتي في الواقع لا يبدو دقيقا سواء. ولكن هذا لقصة قصيرة طويلة، عندما كنت طبع كمية كبيرة من الاشياء على الشاشة، التي نفسه يبطئ الأمور. ما استغرق حقا وحدة المعالجة المركزية في وكان الجهاز 3.59 ثانية، في النقيض إلى C، والذي استغرق 0.44 ثانية مؤخرا. وهذا حقا أمر حجم مختلفة. فأين هو أن سعر قادمة من؟ لماذا هو كذلك أبطأ بكثير؟ لماذا PHP أداء في غاية السوء؟ دانييل؟ الجمهور: لم لا حقا استخدام جدول تجزئة. DAVID مالان: لم أكن حقا استخدام جدول تجزئة. لذلك أنا نوع من فعل. حتى انها مجموعة النقابي. على الأرجح إذا كان الناس في PHP هي ذكية حقا، كانوا تحت هود جدول التجزئة الفعلية المنفذة في شيء من هذا القبيل C أو C + +. ولكن. نعم. الحضور: [غير مسموع]. DAVID مالان: نعم. لذلك كل وظائف كتبت الآن - في الواقع، هل يمكن القول أنه بمجرد أكثر بصوت أعلى قليلا؟ الحضور: كل من الوظائف التي يمكنك تضمين لديها الكثير أكثر كامل القدرة من - DAVID مالان: هذا صحيح جدا. هناك الكثير من النفقات العامة التي نحن لا نرى حقا من خلال التركيز فقط على dictionary.php التي كتبت فقط. على النقيض من ذلك، هناك مترجم كامل تسير في الخلفية. في الواقع، عندما ركضت هذا البرنامج، فإنه وقد لا تعمل الأصفار تجميعها ومنها مصممة لبلدي إنتل وحدة المعالجة المركزية. بدلا من ذلك، كان يعمل سطرا سطرا كود PHP التي تبدو بالضبط وكأننا كتابته. وهكذا كلما كنت تستخدم لغة مفسرة، كنت فعلا دفع هذا الثمن. انها سوف يستغرق بعض الوقت لقراءة الأعلى الملف إلى الأسفل، من اليسار إلى الحق، ومن ثم تنفيذ كل خط مرارا وتكرارا. الآن في الواقع، لا سيما على شبكة الإنترنت، يمكنك تسريع هذه العملية فعلا بواسطة التخزين المؤقت نتائج كود PHP يجري تفسيرها. وهذا يجعل الشعور على شبكة الإنترنت، ل إذا كان لديك لا مستخدم واحد مثل لي هنا، ولكن 1،000 أو 10،000 من المستخدمين، ثم ربما للمرة الأولى في الملف الوصول إلى انها بطيئة، ولكن بعد ذلك انها أسرع بكثير. ولكن هذا أيضا، مرة أخرى، هو المفاضلة. وعن شيء مثل البيانات البحثية مجموعة، أو حتى شيئا الكبيرة مثل هذا، وسوف المستخدمين لديك في نهاية المطاف تبدأ في الشعور بأن التباطؤ. لذلك باختصار، فسر لغات هي إلى حد كبير في رواج، شعبية جدا، و وربما بصراحة اللغات التي ينبغي أن تصل لعند حل المشاكل لاحقة لCS50. ولكن ندرك كم كنت حقا اتخاذ أمرا مفروغا منه تحت غطاء محرك السيارة حقا تلك الأسابيع القليلة الماضية في التجزئة الجداول، والأشجار، ومحاولات، والتي تستخدم في نهاية المطاف إلى الواقع تنفيذ أشياء مثل قوس مفتوح، قوس مربع، والذي يمكننا الآن بامتنان أمرا مفروغا منه. لذلك دعونا نلقي نظرة الآن في سياق هذه الشبكة. وذكرت المرة الأخيرة أن هناك حفنة من superglobals في بي ان ليست ذات صلة حقا في سطر الأوامر. انهم أكثر أهمية في سياق استخدام PHP في سياق شبكة الإنترنت. حتى تشغيل PHP على خادم الويب من أجل لتوليد الاشياء مثل HTML. ونحن يحملق في _GET دولار و _POST، و حيث ان المستخدمين تلقائيا ' المدخلات ينتهي ببساطة إذا كنت تقدم تشكيل لملف ينتهي ب. فب على شبكة الإنترنت خادم مثل الأجهزة. ولكن دعونا ننظر بايجاز في $ $ _SESSION _COOKIE و. في شروط للشخص العادي، ما هو تعريف الارتباط كما كنت أفهم ذلك في سياق باستخدام شبكة الإنترنت؟ الحضور: ملف على جهاز الكمبيوتر. DAVID مالان: نعم. انها ملف على جهاز الكمبيوتر الخاص بالمستخدم زرعتها أي موقع ويب كنت يحدث لهذه الزيارة. لذلك عندما تذهب إلى الفيسبوك، عندما تذهب لbankofamerica.com، عندما تذهب إلى google.com، عندما تذهب إلى أي تقريبا موقع في العالم هذه الأيام، بما في ذلك cs50.net، هي التي زرعت الكعكة على جهاز الكمبيوتر الخاص بك، والذي هو إما القيمة المخزنة في ذاكرة الوصول العشوائي في حياتك الكمبيوتر في ذاكرة المتصفح الخاص بك، أو في بعض الأحيان في الواقع ملف مخزن على القرص الصلب الخاص بك. وعادة ما تخزن في هذا الملف ليس اسم المستخدم الخاص بك، وليس لديك كلمة، وعادة لا شيء حساسة إلا إذا كان الموقع هو ليس كذلك جيدة مع أمنها، وإنما بل هو معرف فريد كبيرة بين أمور أخرى. انها رقم عشوائي كبيرة مزروعة على الخاص الكمبيوتر ولكن يمكن ان يخطر لك كما نوع من ناحية ختم الظاهري مثل من ناد أو بعض متنزه التي يسمح للموظفين، وأصحاب تلك الخدمة، لتذكر من أنت. لذلك إذا كانت الأرقام العشوائية الكبيرة مثل 12345678، على الرغم من أن من الواضح لا عشوائي جدا، واعتقد من أن مثل ختم اليد التي عند زيارة facebook.com للمرة الأولى، و ختم هذا العدد على يدك. ثم لأنك تتحدث HTTP، لك كونه المتصفح، ولأن الفيسبوك ومن الواضح أن يتحدث نفس الشبكة الخادم، يقول HTTP بروتوكول في أي وقت قمت بزيارة في وقت لاحق facebook.com، سواء كان ذلك في الثانية في وقت لاحق، وبعد ساعة، حتى في اليوم التالي، طالما لديك غير صريح تسجيل الخروج، والتي على نحو فعال هو مثل غسل اليدين. HTTP يقول لك يجب أن يقدم لكم ختم اليد في كل مرة كنت العودة إلى ذلك الموقع. ما الفيسبوك ثم لا هو أنها ننظر في ذلك ختم اليد و يقولون، أوه، 123456789. أنا لا أعرف لأول وهلة أن هذا هو ديفيد مالان في كامبريدج، ماساتشوستس، ولكنها يمكن أن تحقق بها قاعدة بيانات ويقولون، أوه، الشخص على الذين زرعنا 123456789 الكمبيوتر هو ديفيد مالان من كامبريدج، ماساتشوستس. دعونا تبين أن المستخدم ثم صفحته الصفحة أو له أخبار الأعلاف. ولكن هناك مشكلة هنا ما إذا كان هذا هو الكيفية التي يعمل بها على شبكة الإنترنت في الواقع. دعونا نلقي نظرة على مثال سريع. دعونا نذهب إلى الواقع يقول facebook.com. ولكن قبل أن نتمكن من الذهاب إلى هناك، والسماح لي المضي قدما وفتح كروم مفتش هنا. اسمحوا لي أن ننظر إلى علامة التبويب الشبكة. والآن دعونا نمضي قدما واكتب في https://facebook.com. وأنا أفعل ذلك لكي لا نرى كل تلك التحويلات والنفايات الوقت يبحث من خلال تلك. اسمحوا لي أن تصل إلى تدخل. حسنا. ونحن نرى في مجمله مجموعة من الطلبات. هناك يأتي الفيسبوك. هناك مجموعة كاملة من الملفات. وهنا، في بلدي ذكر الكمون آخر مرة، وهذا الكثير من طلبات HTTP. ولكن الأول هو الأرجح الأكثر إثارة للاهتمام. لذلك دعونا هنا انتقل لأسفل، و سوف التكبير في الثانية. هذا سيكون نوع من حالة من الفوضى، ولكن دعونا نرى. الفيسبوك وترسل لنا مجموعة كاملة من الاشياء. ولكن قف ومثيرة للاهتمام. انهم يزرعون يست واحدة، ولكن أربعة الطوابع اليد على يدي هنا. تعيين ملف تعريف الارتباط، تعيين ملف تعريف الارتباط، تعيين ملف تعريف الارتباط، تعيين ملف تعريف الارتباط. وهناك عدد قليل من السمات هنا. كل منهم ذكر بعض نوع من انتهاء الصلاحية. ويبدو أن الفيسبوك وتأمل تذكر لي حتى عام 2015. ولهذا يفترض في الوقت الذي لا بد لي من تسجيل الخروج أو أنها سوف مجرد تفترض تلقائيا أنا لن يعود. ذلك أن الواقع لائق مقدار الوقت. وهناك بعض الدول الاخرى الأمور تسير على هنا. هذه الكعكة يبدو أن قسرا حذف بالقول انها انتهت في عام 1970 قبل وجود ملفات تعريف الارتباط. وبالتالي فإن المتصفح هو مجرد الذهاب لنفترض موافق، وهذا مثل غسل اليدين الطوابع. ولكن الآن عندما يجعل متصفحي طلب لاحق - اسمحوا لي أن نمضي قدما ونفعل هذا مرة أخرى وإعادة تحميل. الآن اسمحوا لي أن انتقل إلى طلب أعلى والنزول هنا، وطلب رؤوس. لاحظ هذا. حتى الآن أنا لا تحت رؤوس ردا على ذلك، ولكن لاحظ أنه يقول طلب رؤوس. وتلاحظ أن متصفحي كجزء من طلبها بعد ان وصل له تحديث أرسلت على الأقل ما يلي المعلومات. لم يتم تعيين ملف تعريف الارتباط، ولكن الكعكة. لذلك هذا هو الخط، ورأس HTTP ذلك في الكلام، حيث متصفحي هو نوع من دون أن يعرفوا ذلك تقديم بلدي يدي للتفتيش في الفيسبوك. وبالتالي فإن هذه الكوكيز يمكن أن يكون تستخدم بعد ذلك لماذا؟ تذكر من أنت، أو نتذكر كيف عدد المرات التي كنت هناك، أو حقا أي شيء. حتى هنا هو counter.php. واسمحوا لي أن التكبير في الخط. وأنا في كل مرة إعادة تحميل هذه الصفحة، لاحظ انها تذكر كم مرة لقد كنت هناك. حسنا، هذا ليس كل ما مثيرة للإعجاب. دعونا فقط إغلاق هذا التبويب، والآن دعونا نعود ل http://localhost/counter.php. أوه، هذا مثير للاهتمام. فإنه لا يزال يتذكر، حتى على الرغم من أنني أغلقت التبويب. وبصراحة، إذا كنت إغلاق المتصفح، إذا ما نفذت في الطريق الصحيح، وأنا لا يزال من الممكن أن نتذكر أن هذا المستخدم هو الذي كان هو أو هي مرة الأولى، و مرة واحدة فقط أذهب إلى القائمة كروم، والتي هنا هو هنا، والذهاب إلى التاريخ، وانقر فوق مسح بيانات التصفح، كما أن البعض منكم قد يكون في الماضية، وعندئذ فقط سوف الكوكيز الواقع أن تحذف خلال شبكة الإنترنت التنمية. لذلك، إذا ذهبنا - دعونا قرب gedit هنا. وإذا ذهبنا الآن إلى هذا الملف. اسمحوا لي ان اذهب الى لدينا vhosts / مضيف محلي / العامة، واسمحوا لي أن تفعل counter.php. لاحظ أن هذا هو جميلة برنامج بسيط. انها موقع بسيط جدا. وبالتالي فإن أعلى الملف هو مجرد تعليق. ولكن هنا سطر جديد الذي قد كنت لقد شهدنا بالفعل في تعيين ع السبعة، session_start (). هذا هو سطر من التعليمات البرمجية التي PHP يقول أساسا خادم الويب، وجعل تأكد من ختم اليدين وجعل تأكد من تحقق الطوابع اليد. هذا هو كل ما خط لا، وذلك يفعل كل تلك العملية بالنسبة لنا. ثم لاحظ لقد حصلت للتو فرعين هنا. إذا كان مفتاح العداد داخل هذا متغير عمومي خاص يسمى $ _SESSION يتم تعيين - وبعبارة أخرى، إذا كان هناك بعض القيمة هناك - دعونا الحصول عليها وتخزينها في المحلية متغير يسمى $ العداد. آخر، دعونا تعيين العداد $ القيمة الافتراضية من 0. الآن وهنا جانبا واحدا من هذا PHP كل من نعمة ونقمة. PHP هي قذرة قليلا. ذلك في حين أنه في C، ما من شأنه أن كان نطاق مكافحة إما هنا أو هنا؟ كان يمكن أن يقتصر لتلك الأقواس المتعرجة. تخمين ما؟ في PHP، كان موجودا حتى خارج تلك الأقواس المتعرجة، وهنا، وهنا، وهنا، وهنا، و حتى في الأسفل. لذلك أنا أقول هذا هو نعمة بالمعنى ان لم يكن لديك للتفكير كما من الصعب فعلنا منذ أسابيع. لكنه أيضا قليلا من لعنة في ذلك لا يهم أين أنت استخدام متغير في PHP، على الأقل في مثل هذا البرنامج، يمكن الوصول إليها عالميا ل أفضل أو للأسوأ. ولذلك عليك أن نأخذ في الاعتبار الآن أن قد لا يكون غير معروف المتغيرات الخاصة بك. كنت قد حددت لهم في أماكن أخرى. ولكن ما أنا ذاهب الى القيام به في نهاية المطاف؟ أنا ذاهب لتخزين داخل تلك العالمي المتغير كقيمة لل مفتاح العداد نتيجة ل القيام مكافحة بالإضافة إلى 1. لذلك هذا هو مجرد الحسابي أن يفعل incrementation من هذا العداد. وحقيقة أنني تخزين التي القيمة مرة أخرى في هنا يعني غير ل تحديث قاعدة البيانات أساسا ل تذكر أن المستخدم كان 123456789 هنا مرتين. وعندما أفعل ذلك مرة أخرى في المرة القادمة أنا إعادة تحميل الصفحة، انها سوف تحقق يدي الدمغة ويقول، يا، 123456789 المستخدم لديه الآن تم هنا ثلاث مرات. وماذا في ذلك PHP واللغات مماثلة يفعلون بالنسبة لنا هو انهم الاعتقاد كيف وأين وإلى متى لتخزين القيم في هذا خاص superglobal. وهذا superglobal في المرة القادمة أنا زيارة الصفحة هي نوع من سحرية قبل بالسكان، مليئة القيم التي كانت هناك في المرة الأخيرة التي قمت بزيارتها، سواء كان ذلك قبل الثانية، في الأسبوع مضت، أو في عام 2013، ونحن نتحدث الآن عن عام 2015. PHP وخادم الويب الرعاية اتخاذ من كل ذلك بالنسبة لك. الحضور: [غير مسموع]. DAVID مالان: المتغيرات في PHP هي أساسا دائما إلا إذا كنت العالمية تعلن لهم داخل وظيفة، ومن ثم فهي المحلية ل وظيفة فقط. ولكن لأنني لم يكتب أي وظائف، وهم الآن على نحو فعال العالمية طوال حياتي الملف بأكمله هنا. الحضور: هل هناك طريقة لجعلها المحلية؟ DAVID مالان: هل هناك أي طريقة لجعلها المحلية؟ فقط من خلال التفاف لهم في الوظائف. والتي في أحدث نسخة من PHP، يمكنك أن تفعل هذا مع وظيفة مجهول. ولكن أكثر على ذلك في سياق جافا سكريبت. ولكن الجواب القصير هو لا. والجواب هو نعم أطول. لطيفة. سؤال مسابقة جيدة. حسنا. حتى أخيرا، الصفحة نفسها هو في الواقع بسيط جدا. لاحظ أنه بمجرد أن إنهاء وضع PHP، نذكر ان كل هذه الاشياء لأسفل أدناه هو مجرد الذهاب للحصول على يبصقون من الخام إلى المستعرض. التي على ما يرام، لأنني لا أريد أن إرسال المستخدم بعض HTML، ولكن أنا لا أريد لتحديث حيوي أن HTML. وطريقة واحدة أستطيع أن أفعل ذلك هو لفرز من إسقاط بسرعة كبيرة مرة أخرى إلى PHP وضع واستخدام قوس فتح علامة استفهام علامة المساواة، ومن ثم إخراج قيمة من العداد. أو إذا كان هذا يبدو خفي قليلا، وهذا علامة المساواة هو في الواقع سوى بعض السكر النحوية لهذا printf ($ العداد). ولكن بصراحة، هذا القبيح قليلا ومزعج قليلا للكتابة. لذلك PHP يقدم متقن هذه الميزة حيث يمكنك أن أقول أكثر بإيجاز في نفس الطريق. ذلك ما يحدث تحت غطاء محرك السيارة؟ دعونا ننظر بسرعة في الشبكة المفتاح هنا للcounter.php. واسمحوا لي أن تمضي قدما والأولى دعونا مسح ملفات تعريف الارتباط الخاصة بك. دعونا بيانات التصفح واضحة منذ بداية الزمن. الآن دعونا نعود إلى هنا. الآن دعونا إعادة تحميل الصفحة. وسأعود عند مستوى الصفر. لأنه قد تم غسلها يدي الطوابع، أنا الآن الحصول على الكعكة الجديدة. في الواقع إذا نظرت إلى علامة التبويب الشبكة و ننظر في رؤوس ردا على ذلك، إشعار أن الأجهزة هو ارسال لي ارتباط اسمه إلى حد ما تعسفي، ولكن نوع من معقول، PHPSESSID. وانها ترسل لي هذا حقا رقم عشوائي كبير. انها ليست عددا لا بأس به. انها ليست سداسية عشرية تماما. انها نوع من سلسلة أبجدية رقمية، ولكن يفترض انها عشوائية. وهذا هو الطابع اليد وذلك ل الكلام الذي أنا في اشارة الى. وفي الوقت نفسه إذا كنت فوق تحديث ثم ننظر إلى هذا السطر الثاني لبلدي الثاني طلب، لاحظ الآن أن طلبي وتشمل رؤوس PHPSESSID يساوي هذا، لم يتم تعيين ملف تعريف الارتباط، ولكن فقط كوكي. وهذا العرض على متصفحي من يدي الطوابع. وحتى الآن بمثابة دعابة، وسوف نتحدث أكثر عن هذا في غضون أسبوع أو نحو ذلك، ولكن ما هي الطريقة هل هذا يجعلك الضعيفة، حسابك الفيسبوك الضعيفة، وغيرها من مثل هذه حسابات الضعفاء؟ الحضور: إذا كان شخص ما لديه ملف تعريف الارتباط الخاصة بك. DAVID مالان: نعم، إذا كان شخص ما يحتوي ملف تعريف الارتباط الخاصة بك. أعني حقا، مثل الكثير من بعضكم قد حاول في مثل النادي أو متنزه، إذا حاولت شيئا مثل هذا لنسخ الطابع، وإن كان إلى الوراء على يد شخص آخر، ثم انه أو انها تقدم على أنها خاصة بهم، وإذا كان الواقع لا تبدو متطابقة، 123456789، ثم شبكة الإنترنت الخادم هو على ما يبدو مجرد الذهاب الى على ثقة من أن هذا المستخدم هو أنت. وهذا هو في الواقع الأساسية تهديد أي وقت كنت تستخدم الكوكيز لأنه إذا كان شخص ما سخريات فقط حتى ل الكلام الكعكة الخاصة بك، الأرقام إلى ما هو، إما عن طريق نسخ حقا أنه من خلال النظر في جهاز الكمبيوتر الخاص بك ويجري مثل، حسنا. كوكي ديفيد هو JJ3JIK وهكذا دواليك، ثم انهم ذكي بما فيه الكفاية لمعرفة كيفية الفرز يدويا من إرسال تلك كوكي من المتصفح أو من برنامج يكتبون، استطاعوا تماما تسجيل الدخول إلى موقع على شبكة الانترنت كما كنت. فإنه ليس من الصعب أن ندعي أن شخص آخر إلا إذا أعدنا النظر ف مجموعة اثنين، والتي أدخلت ماذا؟ الجمهور: التشفير. DAVID مالان: قليلا قليلا من التشفير. التشفير بسيطة، على الأقل في الطبعة القياسية، ولكن التشفير ومع ذلك. أقل. لذلك إذا كنت تبين تشفير جميع هذه الرؤوس باستخدام ما كنت يمكن أن نعرف الآن أكثر حميمه كما SSL، طبقة المقابس الآمنة، أو https:// عناوين المواقع، ثم كل هذه الأشياء كنا نظرة عابرة في الواقع يتم تشفير، وهو ما يعني أنه من مثلك لا يمكن قراءة ختم اليد. فقط facebook.com يمكن، أو google.com، أو في هذه الحالة، يمكن للجهاز قرأت أن ختم اليد. على الرغم من مأساوية، ومرة ​​أخرى، وهذا هو كل مناسبة جدا مع الاشياء NSA في الآونة الأخيرة، حتى SSL هي قابلة للكسر. وانها في الواقع ليس من الصعب حتى للقضاء أن التشفير. وليس ذلك بكثير عن طريق تكسير التشفير، ولكن عن طريق خداع المتصفح في فك تشفير البيانات قبل الأوان. ولكن مرة أخرى، ونحن سوف ندف لك مع ذلك قبل فترة طويلة. في الوقت الراهن، وأن يكون عادلا يخاف. انها نوع من مأساوية حقيقية. حسنا. لذلك، حيث يعني هذا ترك لنا الآن؟ حسنا، دعونا نفعل ذلك. دعونا نمضي قدما واتخاذ سريعة دعابة قبل أن تأخذ استراحة. وأعتقد أننا سوف نطيل فترة أطول قليلا اليوم، ولكن ونحن في طريقنا ليغوص شيء مثير والعلامة التجارية الجديدة، والتي سوف شحذ شهيتك لأكثر من ذلك. لذلك هذا هو دعابة. بحيث SQL، بدأنا نتحدث عن أي وقت مضى حتى لفترة وجيزة المرة الأخيرة. عليك حقا الحصول على أيديكم القذرة مع بعض منه في تعيين سبعة ص. وفي شروط للشخص العادي، ماذا SQL - S-Q-L - نفعل لك؟ ما هو؟ نعم. الجمهور: دعونا الوصول إلى البيانات لك. DAVID مالان: نعم. ذلك دعونا لك الوصول إلى البيانات في قاعدة بيانات. لغة الاستعلام الهيكلية. وهذا هو الأساس لغة البرمجة. هناك ميزات من أن نحن لن تستخدم حتى في الصف. ولكن يمكنك على نحو فعال تحديد الوظائف. كنت يطلق عليه المخزنة الإجراءات في SQL. ولكننا سوف يبقيه بسيط إلى حد ما، وفقط استخدامه لبعض العمليات الأساسية مثل تحديد البيانات، إدخال البيانات، تحديث البيانات، وحذف البيانات. ويمكن أن تعتقد حقا من قاعدة بيانات، مثل قاعدة بيانات SQL، وفقط يجري مايكروسوفت إكسل. لأن SQL يشير إلى العلائقية قاعدة البيانات، حيث فيما يعني فقط الجداول. الصفوف والأعمدة. لذا فان أي شيء يمكنك وضعها في جدول بيانات مثل هذا أو مستندات جوجل، كنت قد وضعت في قاعدة بيانات SQL بإعلان جدول. الآن، كيف يمكن الوصول إلى الواقع هذه المعلومات؟ حسنا، مع أوامر أو استفسار من هذا القبيل. SELECT، INSERT، UPDATE و DELETE. وبالنسبة للجزء الأكبر، وتلك هي أربعة عناصر فقط ستحتاج إلى تفعل شيئا بقوة جدا في مشكلة تعيين سبعة. الآن مرة في اليوم، لو كنت فعلا التفاعل مع قاعدة بيانات في الأسود والأبيض في إطار المحطة الطرفية موجه امض مثل هذا. وقاعدة البيانات ونحن تعمل على ودعا الأجهزة الخلية، والتي هي حرة ومفتوحة المصدر محرك قاعدة البيانات. إذا كنت جوجل وقراءة ويكيبيديا المادة، عليك أن تعرف أن الاسم هو قليلا من التحول لبعض إصدارات لينكس. قاعدة بيانات ماريا هو في الواقع مفترق إذا جاز التعبير من الخلية. قصة قصيرة طويلة، واشترت أوراكل الخلية. أوراكل شركة كبيرة. ويتخوف الناس أنه سوف لم تعد تبقى مفتوحة تماما كمصدر، لذلك هذا هو مجرد نسخة من هذا الخلية لا تزال خالية، لا تزال مفتوحة المصدر، و تثبيت لينكس فيدورا في افتراضيا. ولكن هذا هو نوع من الألم في الرقبة للتعرف على و قاعدة البيانات هذه الطريقة. لذلك نحن تدرج في الأجهزة CS50 حر أداة مفتوحة المصدر تسمى بريس. مجرد مصادفة أن انها مكتوبة في PHP. ليس هناك الأساسية تحتاج لPHP هنا. ولكن هذا هو مجرد أداة على شبكة الإنترنت أن نحن تحميلها مجانا، والمثبتة في الجهاز، الذي يسمح لنا أن يكون لها واجهة المستخدم الرسومية التي لاستكشاف قاعدة بيانات تعيين سبعة ع مع التي لإنشاء قواعد بيانات جديدة، ويقول عن المشروع النهائي الخاص بك إذا كنت مثل، وخلق في نهاية المطاف المواقع الحيوية مثل CS50 المالية التي تسمح لك للاستعلام عن البيانات و تحديث البيانات بشكل حيوي. أنك لن تضطر إلى استخدام فقط ملف نصي أو CSV. يمكنك فعلا استخدام قاعدة بيانات ذكية البرنامج بحيث يمكنك تنفيذ المزيد استفسارات تطورا من مجرد القراءة من خلال كل شيء خطيا. هكذا على سبيل المثال، وهذا هو ما نعطي كنت من خارج منطقة الجزاء للتعيين ع السبعة. هذا هو الجدول مع ما يبدو على الأقل ثلاثة أعمدة، واحد منها هو المستخدم، واحدة منها هي التجزئة، وغيرها من التي هو معرف. لكن الشيء المثير للاهتمام، وعادل لل استخلاص فكرة واحدة هنا، اسم المستخدم من المفترض بالفعل فريدة من نوعها، أليس كذلك؟ أعني، أكثر من أي موقع، إذا لديك اسم مستخدم، وهناك لا يمكن أن يكون اثنين من القياصرة. لا يمكن أن يكون هناك اثنان malans. لا يمكن أن يكون هناك اثنان jharvards. فريدة من نوعها. خلاف ذلك، فإنها لا تعرف أي jharvard هو عليه في الواقع. وذلك ما قد يكون الدافع أيضا ل وجود العمود الثالث على اليسار هناك يسمى ID، الذي يبدو وكأنه الرقم الذي فريدة من نوعها بالمثل؟ فإنه يشعر قليلا زائدة بالنسبة لي لأول وهلة. لماذا قد يكون مقنعا لديك ليس فقط أسماء فريدة من نوعها، ولكن أيضا أرقام فريدة من نوعها؟ الحضور: ويمكن أن يكون نفس كلمة المرور. DAVID مالان: الناس قد يكون نفس كلمة المرور، بالتأكيد. يمكن أن يحدث على الاطلاق. ولكن إذا كان لديهم هذا المستخدم فريدة من نوعها، وأنا أزعم أن ذلك لا حقا المسألة، لأنهم إذا اكتب في حياتهم اسم المستخدم، ولست بحاجة فقط للتحقق لهم كلمة السر، التجزئة الخاصة بها. وإلا لماذا؟ الحضور: أسرع البحث. DAVID مالان: أسرع البحث. لماذا؟ الحضور: رقم واحد فقط. DAVID مالان: الرقم هو حرف واحد فقط، أو لنكون أكثر دقة، انها العدد، لذلك فمن الأرجح 32 بت أو شيء من هذا القبيل. في حين أن المستخدم، على ما يبدو جيسون حتى هيرشهورن وهناك نوع من طويلة للغاية، وانه سيكون ل تأخذني الكثير من الوقت لسلسلة مقارنة H-I-R-S-C-H-H-O-R-N، وربما أ / 0 أو شيء من هذا القبيل، من أجل للبحث عن جيسون، بدلا من مجرد قائلا تعطيني المستخدم رقم اثنين. هذا هو 32 بت. انها INT واحد لديك للمقارنة. وبالفعل، هذا هو بالضبط لماذا قواعد البيانات تميل إلى تعيين معرفات فريدة ل الصفوف في نفوسهم. الآن ما هي أنواع البيانات الأخرى هناك إلى جانب الباحث وعلى ما يبدو سلاسل مثل هذا؟ حسنا، لتكون أكثر مناسبة، قواعد بيانات SQL، مثل الخلية، تحتوي على حقول CHAR. وCHAR قليلا مضلل ليس CHAR واحد. حقل CHAR في قاعدة بيانات MySQL هو حرف واحد أو أكثر، ولكن هذا عدد محدد من الأحرف. هكذا على سبيل المثال، إذا ذهبت لأكثر من بريس كما قد يكون لديك بالفعل، أو قريبا سوف مشكلة تعيين سبعة، وأذهب إلى قاعدة البيانات الخاصة بي، وفقط للمتعة، و دعونا إنشاء جدول جديد يسمى اختبار مع عمودين فقط. أنا ثم انقر فوق انتقال. وهذا سوف تصبح مألوفة إلى حد ما، خاصة وأنكم العبث حول بنفسك. هنا أود أن اكتب ID لإنشاء جدول جديد من نوع INT. ولكن هنا أود أن اكتب اسم المستخدم ل إعادة هذا الجدول في وقت سابق. وتلاحظ لدي مجموعة كاملة أنواع للاختيار من بينها. وهذا هو أيضا السبب بريس هو نوع من لطيفة. انها نوع من التعليم الذاتي في أن ل يمكن مجرد نوع من نقطة وانقر فوق، و ننظر في القوائم المنسدلة، ونستنتج من ان ما يمنحك القوى SQL. وبالفعل، إذا اخترت CHAR، وبعد ذلك لديك لتحديد طول، أو كيف العديد من القيم، وكم حرف. القيم شائعة جدا حتى أشياء مثل 255، ولكن هذا قليلا طويلة. عادة هو ثمانية لاسم المستخدم. ولكن هذا صغيرة قليلا هذه الأيام. لذلك هذا هو قرار تصميم. هو 8 أحرف كحد أقصى، 32، 255، 1،000؟ انها حقا متروك لكم. ولكن حقل CHAR هو رقم ثابت. حتى تختار عدد قليل جدا، وكنت نوع من ثمل إذا كنت تريد المستخدم لفترة أطول. اختيار عدد كبير جدا وما هو الجانب السلبي؟ الحضور: [غير مسموع]. DAVID مالان: انها الإسراف. مثلما هو الحال في C، إذا كان لديك أكبر جزء من الذاكرة مما تحتاج، وكنت مجرد إضاعة الوقت وإضاعة الفضاء. وذلك كبديل لذلك، توجد VARCHAR، الذي يحل هذه المشكلة عن طريق علاج طول ليس بوصفه طول ثابت، ولكن كما أقصى طول، وباستخدام عدد متغير من حرف، والذي ثم يميل إلى استخدام العديد من حرف فقط كما كنت تحتاج بالفعل. هذا يبدو مثاليا. لماذا لا نتخلص من اكتب البيانات CHAR بعد ذلك؟ ما قد يكون الجانب السلبي لل باستخدام VARCHARs، الذي يبدو مثل انه فوز لطيفة؟ نعم؟ الحضور: [غير مسموع]. DAVID مالان: موافق، وحسن. إذا كان الأمر كذلك جميع البيانات الخاصة بك هو نفسه طول، ما هو القلق؟ الحضور: لأنك تهدر و البيانات عن طريق إخبار كل منهم. DAVID مالان: حتى إذا كان جميع البيانات الخاصة بك هو طول نفس، رغم ذلك، أنا أزعم التي تحدد الحد الأقصى للطول على VARCHAR لا يختلف عن تحديد طول ثابت على CHAR إذا تعلمون أن عدد مقدما. ولكن هناك في الواقع، وسوف أكون نوع من استخراج من هذا الجواب واقع هذا لا يزال هناك كحد أقصى، والتي يمكن أن أن تكون مزعجة، خاصة إذا كنت تصادف اسم الشخص هذا طويلة بشكل غير عادي أن كنت لا توقع. وانها أيضا أقل قليلا فعالة للبحث في الواقع على VARCHARs كما بدلا من حرف والبحث، وخصوصا للجداول طويلة والتي لديها الكثير الكثير من البيانات. حتى هنا أيضا، هو مرة أخرى المواضيعية أي خيار واضح. وذلك فقط لتعطيك شعورا أخرى أنواع البيانات التي قد تكون ذات فائدة إما للتعيين ع سبع أو في المستقبل، وهناك INT. هناك BIGINT، التي هو مثل طويل. أنه يميل إلى أن يكون 64 بت. هناك العشرى، التي سترى في مجموعة المشكلة، وهو بكثير الجواب أنظف للمشاكل نحن واجه مع تعويم والعائمة ويشير عدم الدقة. وبعد ذلك هناك DATETIME. هناك حرفيا نوع البيانات التي لديها لتبدو وكأنها سنة، شهر، يوم، وساعة، دقيقة، والثانية. ولكن قواعد البيانات SQL أيضا الأشياء سوف ندعو الفهارس. وفهرس هو الشيء الذي كنت تحديد عند إنشاء جدول ل جعل عمليات التفتيش وغيرها من العمليات أكثر كفاءة. على وجه التحديد، هناك شيء يسمى مؤشر الأولية التي يمكن تعلن ما يلي. فعلنا هذا بالنسبة لك مع جدول المستخدمين التي نقدمها لك. ولكن لاحظ لو كنت إعادة يدويا الجدول المستخدمين هنا إعطاء اسما من المستخدمين. أنا بالفعل المحدد الهوية. أنا المحدد INT. أنا مع تحديد اسم المستخدم الحد الأقصى 32 حرفا. ولكن إذا واصلنا التمرير في هذا إلى حد ما نافذة واسعة، لاحظ هناك حفنة من الأشياء الأخرى لا أستطيع تحديد ذلك. واحد، ويمكن تحديد سمات مثل، كما تعلمون ما، وهذا الباحث يجب أن يكون غير الموقعة. أنا لا أريد الأرقام السالبة، لذلك دعونا جعله غير الموقعة. فارغة ليست ذات الصلة هنا ل أنا لا أريد كل مستخدم ل لديها عدد فريدة من نوعها. أنا لا أريد أن تكون فارغة. ولكن هذا مثير للاهتمام. يمكنني تحديد ذلك الرقم هو إما المفتاح الأساسي لقاعدة البيانات هذه، أو أنه فريدة من نوعها، أو تمت فهرسته، أو النص الكامل. حتى لأغراض اليوم، قصة طويلة باختصار، PRIMARY يعني أن هذا يجب يكون على حد سواء من الناحية المفاهيمية والتقنية الحقل الذي نستخدمها لفريد تحديد المستخدمين. لذلك عندما ننظر حتى للمستخدمين، وهذا هو نوع من وعد أن ننظر لهم حتى في الغالب من قبل هذا المعرف فريدة من نوعها. وسوف قاعدة ضمان أنه إذا كنت لديك عدد 3 مستخدم، لا يمكنك إدراج جسديا مستخدم آخر مع أن نفس العدد 3. وقاعدة البيانات ترفض فقط لحفظ التغييرات. وهو أمر جيد، لأنه يمكنك حماية نفسك من نفسك. النفس بدلا من ذلك، لاسم المستخدم. حتى الصف الثاني، أذكر، هو حقل اسم المستخدم. حتى الصف الثاني هنا هو المستخدم، كما فعلنا في أقصى اليسار هناك. لذلك ماذا قد أريد أن تحدد؟ أنا لا يسمح، وفقا لSQL، لتحديد اثنين من المفاتيح الأساسية. يمكنك تحديد مفتاح مشترك حيث كنت ننظر في كل المجالات، لكنهم لا يستطيعون يكون فرديا المفاتيح الأساسية. ولهذا وارد. لذلك قد أريد أن تختار؟ حسنا، فريد مشابه في الروح ل المفتاح الأساسي حيث يمكنك تحديد هذا يجب الحقل تكون فريدة من نوعها، ولكنها ل لن تكون واحدة أنا استخدم في كل وقت. ونحن لا تنوي استخدام هذا واحد فقط الوقت مرة أخرى لسبب ما؟ انها أبطأ يحتمل إذا انها اسم المستخدم طويلة. انها مجرد مضيعة للوقت. INDEX، وفي الوقت نفسه، يحدد أنه من لن تكون فريدة من نوعها، ولكن أود لك للعمل السحر الخاص تحت غطاء محرك السيارة لجعلها أسرع بالنسبة لي ل بحث في هذا المجال. لذلك هذا ربما ليست ذات صلة هنا. لاسم المستخدم، ويهمني القول بأن فريد هو إجابة جيدة. ولكن لنفترض أننا أحرزنا أكثر المستخدمين إثارة للاهتمام من أسماء المستخدمين فقط، التجزئة، وأرقام الهوية. ماذا لو أعطينا الناس الأسماء الكاملة؟ ماذا لو أعطينا لهم عناوين وغيرها من البيانات عن هؤلاء؟ حسنا، إذا قمت بتحديد أن عمود في تتم فهرسة قاعدة البيانات، وهذا يعني أن الخلية، أو أوراكل، أو أيا كان قاعدة البيانات كنت تستخدم، يجب أن تعمل سحره وتستخدم نوعا من البيانات الهوى هيكل مثل شجرة، أو TRIE، أو جدول التجزئة، أو شيء من هذا لضمان أنه عند البحث عن البيانات باستخدام حدد على هذا الميدان بالذات - مثل تبين لي الجميع بأن يعيش في شارع أكسفورد. استعلام من هذا القبيل. إذا كنت قد حددت مسبقا أن تريد فهرس على هذا المجال، و وسوف يكون البحث من ذلك بكثير، أسرع بكثير. إذا لم تقم بتحديد فهرس، أفضل يمكنك القيام به هو البحث الخطي إذا انها غير مصنفة ذلك. ولكن إذا قمت بتحديد INDEX، الذكية الناس الذين جعل قاعدة البيانات - الناس مثلك الذين يعرفون الآن الأشجار ويحاول والجداول التجزئة - سيتم تلقائيا بناء مثل هذا البيانات هيكل في ذاكرة الوصول العشوائي للتأكد من أن تلك هي البحث أسرع بكثير. النص الكامل هو في الوقت نفسه مماثلة في الروح، ولكن يسمح لك أن تفعل البدل البحث، مثل تبين لي الجميع بأن يعيش في الشوارع التي تبدأ الحرف O لأي سبب من الأسباب. يمكنك القيام به عمليات البحث البدل من هذا القبيل. أو، وأشياء أكثر إلحاحا مثل المعرض لي كل شخص لديه كلمة - تبين لي الجميع الذي يبدأ اسم بحرف معين. يمكنك البحث عن الكلمات الرئيسية في هذا السبيل. حسنا. لذلك، وفرص تصميم هناك يحتمل. هناك آخرون أن وسوف أكون موجة يدي. اتضح أنه يمكن أن يكون محركات التخزين المختلفة. وهذا هو أكثر مما نحتاج غامضة بالتأكيد لمشكلة تعيين سبعة. افتراضيا، يا رفاق تستخدم ما يسمى ك InnoDB. سترى ذكر لهذا في مكان ما واجهة بريس على الأرجح. ولكن نعرف أن هناك تصميم أخرى القرارات التي هي من المحتمل الفائدة تأتي المشاريع النهائية إذا كنت تفعل شيئا على شبكة الإنترنت. ولكن دعونا نفعل ذلك. دعونا نمضي قدما ووضع هذا على الشاشة كما دعابة لقصة تنطوي لك، في الحجرة، وكوب من الحليب. دعونا نلقي دقيقة اثنين أو حتى كسر هنا. وإذا كنت يمكن أن تلتصق حولها، دعونا تأتي مرة أخرى، تبدو أكثر قليلا في SQL، و ثم قليلا من جافا سكريبت مع ثمانية في العقل وضبط ع. حسنا. لذلك، دعونا تحصل على التفكير في حالة الزاوية التي يمكن أن تنشأ بسهولة جدا في سياق استخدام قاعدة بيانات، أو بصراحة، حتى باستخدام أشياء العالم الحقيقي مثل أجهزة الصراف الآلي للحصول على المال. حتى هنا ثلاجة. لنفترض أنك قد حصلت على واحد أيضا في النوم الخاصة بك أو منزلك. وكنت قد حصلت الحجرة واحد، وكلاهما من كنت أحب الحليب على سبيل المثال. حتى تتمكن من العودة الى الوطن الطبقة يوم واحد. وقال انه او انها ليست حتى الآن الى الوراء. فتح الثلاجة. كنت تريد حقا كوب كبير من الحليب. عدم وجود حليب. لذلك ماذا تفعل؟ إغلاق الثلاجة. كنت انتزاع المفاتيح الخاصة بك. تذهب إلى الساحة. وتحصل في خط السير الذاتية في تلك أشياء الخروج المصير، الذي دائما يستغرق وقتا أطول من الواقع وجود الصرافين. على أية حال. حتى ذلك الحين، وفي الوقت نفسه، نقطة نقطة نقطة، لديك الحجرة يعود للمنزل وانه أو انها لديه هفة بالمثل بالنسبة لبعض الحليب. حتى انه أو انها تفتح الثلاجة، يبدو في الداخل، وأوه، اللعنة. لم الحليب. حتى انه أو انها يرأس بها، يحدث للذهاب إلى CVS الأخرى، والتي لم يكن سوى منع بعيدا لسبب ما، وانه أو انها تحصل في خط لشراء بعض الحليب. وفي الوقت نفسه، كنت تأتي المنزل، وقال انه أو عادت الى الوطن، وماذا تفعل لديك في نهاية المطاف؟ ضعف الحليب. ولكن كنت لا أحب حقا الحليب كثيرا. حتى الآن لديك الكثير من الحليب الذي الآن واحد منهم هو مجرد الذهاب الى تتأزم في نهاية المطاف. لذلك هذه مشكلة سيئة حقا. أليس كذلك؟ فما الذي حدث؟ بشكل أساسي، وهذا هو النوع من مثال مثير للسخرية. لكن تحت غطاء محرك السيارة، ما كنا فيه يحدث هنا هو كلا منكم فحص حالة بعض قطعة من الذاكرة، الثلاجة. كلا منكم فحص الدولة بعض متغير. كلاكما لفت إلى استنتاج ثم أنك تصرفت على. ولكن للأسف، في حين أن الحجرة الخاصة بك كان في المتجر، والدولة من أن متغير تغيرت، وقال انه او انها عادت ويريد الآن لتغيير الدولة، ولكن لقد تم بالفعل تغييره على له أو لها. وبطبيعة الحال، هو أو هي لن يكون ذهبت الى المتجر لو كانوا يعلمون التي كانت بالفعل في طريقها. حتى في العالم الحقيقي، وكيف يمكن لك تجنب هذه المشكلة، على افتراض لديك ثلاجة، لديك في الحجرة، وتريد فعلا الحليب؟ الجمهور: التواصل. DAVID مالان: التواصل. موافق. ولكن كيف يمكن لك التواصل؟ الجمهور: اترك ملاحظة. DAVID مالان: اترك علما، أليس كذلك؟ دائما ترك ملاحظة، ل المشجعين من العرض. كل الحق، وترك ذلك دائما ملاحظة، أو وضعت حقا مثل قفل أو شيء على الثلاجة التي تبقي لكم الحجرة من تفتيش دولة هذا المتغير. الآن، لماذا قد يكون هذا وثيق ل مشكلة تعيين سبعة، أو جهاز صراف آلي. حسنا، تخيل عالم في أجهزة الصراف الآلي حيث كنت قد تكون قادرة على الذهاب حتى إلى أجهزة الصراف الآلي الجهاز هنا، وأجهزة الصراف الآلي آخر هنا. وهذا يحدث في كثير من الأحيان. وافترض كان لديك اثنين من بطاقات الصراف الآلي، والتي من الممكن الحصول عليها. وقمت بتسجيل الدخول في الجهازين بشكل فعال في وقت واحد، ونأمل في حين انها لا أحد يبحث. ثم اكتب في رقم PIN الخاص بك تقريبا في وقت واحد. ثم كنت تفعل الاستعلام التوازن لمعرفة مدى النقدية لديك. ودعونا نقول لديك 100 $ ترك في حسابك. ذلك أساسا في وقت واحد، ل ويقول واحد، صفر، صفر، أدخل. ونأمل أن نعود بعض المال. ولكن كم من المال قد تحصل مرة أخرى؟ الآن أجهزة الكمبيوتر في نهاية المطاف، لا سيما إذا كانت تتحدث معه خوادم، لا تفعل الأشياء بالضرورة في الترتيب الذي من المتوقع. لذلك نفترض ما يحدث، وذلك بسبب مهما كانت سرعة الشبكة القضايا هناك هي، أو القضايا وحدة المعالجة المركزية هناك، أو أي شيء من هذا القبيل، لنفترض أن أول جهاز صراف يتحقق التوازن والخاص ترى، أوه، هذا الشخص لديه 100 دولار. ولكن بعد ذلك لأنه ربما تتوه نسخة احتياطية ويحدث ذلك فمن يتباطأ. أو ربما أثناء التحقق، وشبكة حصلت اتصال أبطأ قليلا ل هذا يحدث فقط. انهم الأجهزة الفعلية. لذلك وفي الوقت نفسه، أجهزة الصراف الآلي الثاني يسألون نفس السؤال. كم من المال لا يكون ديفيد؟ 100 $ هو الجواب. ولكن لأن ATM الأولى لم يتم بعد إرسال الرسالة طرح 100 دولار، على حد سواء وعاين أجهزة الصراف الآلي قبو البنك، رؤية هناك 100 $ هناك، والآن الجهازين يمكن أن تكون الذهاب الى بصق جوابا. الآن، وهذا شيء عظيم بالنسبة لك في بعض الشعور إذا ما يفعله البنك في نهاية المطاف يتم تغيير المبلغ ناقص 100 من قبل تعيين متغير يساوي الخاصة بك البنك حساب يساوي 0، في مقابل لفعل ناقص 100. الآن في أسوأ الحالات بالنسبة للبنك - أو في أفضل للبنك، وفي الوقت نفسه، أنها تعطيك 200 دولار، و يظهر حسابك المصرفي الآن السلبية 100 دولار، الذي لا حقا ينفعك على الإطلاق. ولكن النقطة المهمة هي أن هذا السباق حالة لمدة غرفهم الحصول على الحليب، أو لمدة أجهزة الصراف الآلي في محاولة للحصول على النقد وتغيير حالة قبو في الوقت نفسه وجود أي الوقت لديك قاعدة بيانات. الآن في مشكلة تعيين سبعة، هذه المسألة ينشأ بمعنى أنه إذا كنت تشتري سهم من الأسهم الفيسبوك، ومن ثم ل المثال تشتري حصة الثانية من الأسهم الفيسبوك، تحتاج إلى إجراء قرار بشأن مبرمج. من أجل اتخاذ قرار بشأن كيفية تحديث قاعدة البيانات، والاحتمالات وأنت تسير ل يكون صف واحد لهذا المخزون، وهذا هي طريقة واحدة لتنفيذه. وأنت تسير أن يكون سهم واحد من الفيس بوك، والذي هو رمز مؤشر الأسهم الخاصة لهذا المستخدم، أو هذا المستخدم معرف، المعرف الفريد. ولكن نفس القصة يمكن أن يحدث هنا. إذا كنت تفعل SELECT في SQL، كما سترى في مشكلة تعيين سبعة عندما ترى، أوه، ديفيد لديه سهم واحد من الأسهم الفيسبوك. اسمحوا لي الآن أن يكون تغيير هذا سهمين، لأنه يريد شراء حصة الثانية. ولكن لنفترض أن ديفيد بالفعل اثنين فتح نوافذ المتصفح، أو لنفترض أن انها حساب مشترك مع اثنين من الزوجين، وكلاهما تحاول تنفيذ نفس العملية، وهناك، أيضا، و يوجد احتمال أن يكون قرار التي أدخلت على أساس السابق حالة العالم - حساب لديه سهم واحد - وكلا الناس، أو خادمي، والآن أحاول أن أقول زيادة على سهمين. ولكن في هذه الحالة، كنت قد اتهم لي المال لكلا أسهم، ولكن مجرد أن زيادة وقت واحد. لذلك وباختصار، فإن المشكلة الأساسية هنا، كما هو الحال مع نكتة عن ترك ملاحظة، أو وضع قفل على ذلك، هو إذا شخصين أو اثنين من المواضيع - التفكير مرة أخرى إلى نقطة الصفر - يمكن أن تفقد الدولة بعض متغير ومن ثم محاولة تغيير هذا المتغير، ولكن هذين الأمرين لا يحدث في الوقت نفسه ولكن يمكن الحصول على توقف بواسطة أشياء أخرى يحدث، ويمكن البيانات ندخل في حالة غريبة جدا. ويمكنك الاستفادة أو يمكنك تعاني بمعنى المثال المال. حتى في مشكلة تعيين سبعة، ونحن نعطيكم هذا سطر واحد من التعليمات البرمجية التي طويلة قصة قصيرة، يحل هذه مشكلة في الخلية. هذه التعليمات طويلة جدا أن لا حتى تناسب على سطر واحد على الشاشة هنا يضمن أن العملية الخاصة بك هو ما يسمى ذرية. كل ذلك يحدث في وقت واحد، أو ذلك لا يحدث على الإطلاق. هذه العبارة طويلة جدا لا يمكن الحصول على توقف جزئيا. وماذا يفعل هو حرفيا ما تقول. تضاف الى بعض الجدول التالي ثلاثة حقول تلك القيم المحددة، ولكن على مفتاح مكرر، لا تفعل إدراج. لا تحديثا. لذلك هذا هو مثل القيام SELECT و INSERT إذا جاز التعبير في نفس الوقت. وما هو المفتاح الذي ربما إحالتها إلى هنا؟ كما تبين، وسترى هذا في مشكلة تعيين سبعة من المواصفات، لأن لقد أعلن أن هناك مفتاح فريد في هذا الجدول خاصة تلك التي لا يمكنك الحصول على صفوف متعددة لنفس المستخدم مع نفس قرش رمز السهم - في هذا المثال هنا، هو DVN.V الأسهم بنس سخيفة أننا الرجوع إليها في المواصفات. لأننا قد أعلنت أن تكون فريدة من نوعها، ما يعنيه هذا هو أنه إذا كنت محاولة إدراج صف مكررة، وكنت بدلا من ذلك الذهاب الى تحديثه دون أي شخص آخر وجود فرصة للتغيير حالة العالم سواء. لذلك باختصار، وهذا يضمن الأمور ذرية. أكثر عموما على الرغم من قواعد البيانات مثل ماي - وكنت لا تحتاج هذه الميزة ل ف تعيين سبعة، ولكن يبقيه في الاعتبار ل المستقبل - دعم ما يسمى المعاملات، حيث يمكنك القول ستارت تعامل حرفيا. يمكنك ثم تنفيذ بيانين SQL. وبيان SQL، كما سترى في سبعة مجموعة P، يبدو قليلا شيء من هذا القبيل. تحديث يسمى حساب الجدول. تعيين عمود التوازن يساوي أيا كان عمود التوازن حاليا هو ناقص 1،000 حيث العدد، و رقم الحساب، مثل هوية المستخدم، يساوي 2، ومن ثم تحديث حساب نقطة نقطة نقطة. لذلك في شروط للشخص العادي، ماذا هذين يبدو الاستعلامات إلى أن تفعل في إحساس العالم الحقيقي من البنوك؟ الحضور: نقل إلى وفورات. DAVID مالان: بالضبط. تحويل الأموال من واحد حساب إلى آخر. وهذا مثال آخر حيث كنت تريد حقا هذين الأمرين أن يحدث أو لم يحدث. كنت لا تريد شيئا في الحصول على منتصف منهم ويحتمل أن تكون خبط الرياضيات، أو خبط كم المال لديك، أو كم المال لدى البنك. إذن ما هو لطيف حول المعاملات في الخلية هو أنه، و قواعد البيانات بشكل أعم، هو أنها والناس الذكية الذين قد نفذت هذه الميزات معرفة كيفية جعل من أن كلا من تلك الأمور أو لا على الاطلاق. وإذا كنت تطمح حقا لجعل موقع على شبكة الانترنت الذي يتم استخدامه من قبل الناس على الحرم الجامعي، والناس في العالم الحقيقي، والقيام شيء بالمعنى بدء التشغيل، هذه هي أنواع قرارات التصميم التي تصبح في غاية الأهمية من أي وقت مضى. خلاف ذلك، عليك أن تبدأ إلى فقدان البيانات، وفقدان المستخدمين، أو في أسوأ الحالات كما رأيناه هنا، ويحتمل أن تخسر المال. ذلك مرة أخرى، وأكثر على أن المشكلة في تعيين سبعة، وكذلك ربما لبعض كنت في المشاريع النهائية. لذلك دعونا تغيير تلك الصورة كان لدينا قبل لحظة فقط في طريقة أخرى. لذلك اسمحوا لي في الواقع نرى ما اذا كان يمكن - كلا، وهذا ما ذهب. هناك هو عليه. لذلك هذا هو المكان الذي تركنا في المرة السابقة. واتضح ونحن في طريقنا إلى إرم أكثر شيء واحد في هذا المزيج هنا - لغة تسمى جافا سكريبت. حتى جافا سكريبت يناسب الواقع في هذه القطعة - وأنا لم يترك مساحة كافية تماما، وهذا ليس الآن على نطاق كبير. موافق، وهذا أمر مثير للشفقة حقا. موافق، لذلك أن جافا سكريبت. حسنا. وأنا أفعل ذلك حقا شرا. حسنا. ذلك هو جافا سكريبت برمجة أخرى اللغة، ومشاركة لدينا، وإذا كان هذا يساعد طمأنة بأن ليس هناك أكثر من ذلك بكثير من صنابير مياه الإطفاء هنا. حتى جافا سكريبت هو أيضا تفسير اللغة، مما يعني أنك لا ترجمة عليه في الأصفار ومنها. كنت للتو تشغيله. ولكن ما هو مختلف جذريا مع جافا سكريبت عادة هو أنك لا تشغيله على خادم الويب الخاص بك. لا يحصل تشغيله في الأجهزة في حد ذاتها. بدلا من ذلك، يحصل تحميلها من قبل مستخدم عبر HTTP في المستعرض الخاص بهم - الكروم، سفاري، إنترنت إكسبلورر، فايرفوكس، أيا كان - وانها المتصفح الذي ينفذ هذا خاصة لغة البرمجة. لكي نكون واضحين، PHP كانت حتى الآن أعدم إما في سطر الأوامر في لدينا نافذة سوداء وبيضاء، في الخادم مثل الأجهزة، كمبيوتر مثل الأجهزة، أو انها كانت أعدم من قبل خادم الويب تشغيل على جهاز كمبيوتر. ولكن الموضوع هنا هو أن PHP حتى الآن تم تنفيذ من جانب الخادم، لذلك المستخدم والمتصفح المستخدم أبدا يرى سطر من التعليمات البرمجية PHP. في الواقع، إذا كنت من أي وقت مضى لفتح مستعرض موقع الويب الخاص بك أو لآخر وأنت في الواقع نرى كود PHP في الإطار الخاص بك، وقد ثمل شخص ما. لأنه ليس من المفترض أن تكون إرسالها إلى المتصفح مباشرة. أنه من المفترض أن يتم تنفيذها، واتجهوا إلى شيء مثل HTML. ولكن هي في جوهرها جافا سكريبت العكس. من المفترض أن يتم تشغيلها عادة داخل من نافذة المتصفح المستخدم. وما هي أنواع من المواقع استخدام ثم جافا سكريبت في هذه الأيام؟ مثل حرفيا كل موقع شعبية. كل موقع أن يا رفاق ربما استخدام اليومي استخدام جافا سكريبت ل أبسط وحتى جاذبية الميزات. ذلك شيء من هذا القبيل الفيسبوك الدردشة إذا كنت تستخدم هذا. كيف يمكن أن تعمل في الواقع؟ جيدا حتى الآن، كل الاشياء قمنا فعلت مع HTML و PHP يفترض أن كنت سحب ما يصل URL، وأنت هاهنا، وترى بعض المحتويات HTML. والنقر فوق الارتباط، الذي يغير URL، تغيير الصفحة، والإعادة بعض محتوى جديد. انقر فوق URL آخر أو إرسال نموذج، كنت الحصول على نقله إلى صفحة أخرى و ترى بعض المحتويات الجديدة. ولكن باستخدام ما يشبه الفيسبوك دردشة، أو Gchat، أو خرائط جوجل، ونادرا ما لا صفحة كاملة تحديث بحيث تشاهد شاشة بيضاء للحظات و ثم محتوى جديد. بدلا من ذلك، صفحات الويب اليوم هي حيوي الحصول على تحديث مرة أخرى و مرارا وتكرارا كل نوع من وراء الكواليس. واتضح أنه عندما كنت أذهب إلى شيء من هذا القبيل الفيسبوك، أو Gchat، أو جوجل، وتحديثات الصفحة تلقائيا دون إعادة تحميل الشاشة بأكملها، ما حدث هو أن جعلت متصفحك نوع من سرا طلبات HTTP إضافية - لا لصفحات ويب كاملة، ولكن فقط ل قطع صغيرة من البيانات، مثل الرسائل الفورية أن صديقك فقط أرسلت لك، أو تحديث الحالة التي شخص ما فقط لأنك أرسلت، أو سقسقة أن شخصا ما أرسلت للتو. انها مجرد تقديم طلبات قليلا ل البيانات، ومن ثم استخدام جافا سكريبت، وهذا لغة البرمجة، لتغيير ما صفحة الويب يبدو دون خادم مساعدة، دون أن يكون الخادم توليد أن HTML. لذلك باختصار، وجافا سكريبت يمكن استخدامها بعد ذلك ليس فقط لجلب بيانات جديدة من الخادم دون إعادة تحميل كامل الصفحة أو تقديم النموذج. فإنه يمكن أيضا أن تستخدم لتغيير ما يسمى DOM - وثيقة نموذج الكائن - الذي هو مجرد وسيلة نزوة ل قائلا شجرة HTML التي رأيناها آخر مرة. وذلك لطمأنة، وجافا سكريبت هو بناء جملة ذلك مماثلة إلى C أيضا. ليس هناك وظيفة الرئيسي. كنت مجرد بداية كتابة التعليمات البرمجية وسيكون الحصول على تنفيذها، أو تفسير أكثر بشكل صحيح. وسوف تبدو هذه الظروف. لا تختلف عن C أو PHP لهذه المسألة. تعبيرات منطقية أو إد معا سيبدو هذا. Anded معا تبدو هذه. سوف مفاتيح تبدو هذه. لحلقات سيبدو هذا. بينما الحلقات سوف تبدو هذه. حين تفعل الحلقات سوف تبدو هذه. هذا هو الجديد. حتى جافا سكريبت لديه ليس فورياش بناء في حد ذاتها، ولكن هذا البناء لمتغير ط في مجموعة، وأنا في هذا الحالة يصبح قيمة المؤشر. لذلك فمن مختلفة قليلا عن تلك فورياش، على الرغم من الإصدارات الجديدة من جافا سكريبت يخرجون في كل وقت، لذلك حتى هذه ميزات اللغة تتطور. وبوصفها جانبا، وجافا سكريبت في هذه الأيام يمكن أن تستخدم أيضا في الخادم تماما مثل PHP باستخدام إطار يسمى Node.js. واحدة من TFS CS50، وكيفن، أدى ندوة حول Node.js التي تتوفر في cs50.net/seminars. لذلك إذا كنت غريبة، أعرف أنك يمكن استخدام هذا على جانب الملقم كما حسنا، ولكن هذا الاتجاه الأخير إلى حد ما، ولكن واحدة قوية في ذلك. هذا هو مختلفة قليلا. هذا هو صفيف في جافا سكريبت. وما الضربات لكم ومختلفة مقابل C أو PHP؟ هناك عدد قليل من قصص سريعة يمكننا ان نقول هنا. ما هو مفقود مقابل PHP؟ الحضور: [غير مسموع]. DAVID مالان: نعم؟ آسف، وأقول مرة أخرى؟ الجمهور: عدم التصريح نوع المتغير. DAVID مالان: نحن لا يعلن نوع المتغير. ذلك في الواقع تماما مثل PHP، نحن لسنا تحديد أنواع هذا المتغير. بدلا من ذلك، نحن أكثر بشكل عام قائلا فار لمتغير. ليس لدينا مصدر إزعاج PHP من و علامة الدولار، والذي حين مملة ل نوع، لا تجعل أكثر وضوحا أن هذا شيء متغير. بينما هنا، نحن نوع من العودة إلى النهج C من خلال مجرد استدعاء متغير حسب اسم نريد لاعطائها، مثل أرقام. وأيضا مثل PHP، لدينا بين قوسين معقوفين ل القيم داخل تلك المصفوفة. المتغيرات في جافا سكريبت ذلك أيضا قد تبدو مثل هذه. لاحظ هنا هذا هو سلسلة تسمى ق، ولكن لديها بالمثل فإننا لا المحدد أنها سلسلة. على الرغم من هنا هي الميزة التي لا توجد في بنفس الطريقة تماما في PHP، ولكن قليلا بالمثل. هذا هو كائن في جافا سكريبت. والكائنات هي نوع من الجيش السويسري سكين من بنية بيانات في أنك يمكن استخدامها لأي عدد من الأمور. هنا، على سبيل المثال، نحن يعلن متغير يسمى الاقتباس. نوع هذا المتغير هو كائن. يمكنك التفكير في هذا الأمر لبنية C الذي لديه مفاتيح والقيم. الرمز هو مفتاح. الفيس بوك هو قيمة، على ما يبدو رمز السهم. فاصلة. الثمن هو مفتاح آخر، وقيمته على ما يبدو نقطة عائمة، أو عدد أعم في جافا سكريبت، من 49،26 $. حتى لا يكون PHP - لم نر في الكائنات PHP تماما مثل هذا، ولكننا لم نرى التناظرية، الذي كان ماذا؟ الحضور: [غير مسموع]. DAVID مالان: صفائف النقابي. حتى حين PHP ديه صفائف النقابي الذي هو جملة من أي وقت مضى حتى قليلا مختلف - شاهدنا أقواس معقوفة. شاهدنا رموز السهام غريب. جافا سكريبت لديه الأشياء، ولكن هذا هو في الغالب الفرق الدلالي و مرادف مختلفة في الوقت الراهن. ومع ذلك، بوصفها جانبا، لديه أيضا PHP الكائنات بطريقة جافا وغيرها اللغات ديك الكائنات في وجوه المنحى البرمجة. ولكن سنستخدم هذه فقط لأنواع البيانات في الوقت الراهن. الأشياء وصفائف النقابي. هذا واحد قد يجعل من أكثر من ذلك بقليل واضحة. هنا لماذا كائن مفيد. عندما كنت تريد أن تعلن طالب، مثل Zamyla، يمكننا في الواقع تغليف إذا جاز التعبير داخل ذلك الاعتراض باستخدام الأقواس فقط مثل قبل مجموعة كاملة من مفاتيح والقيم هنا. لدينا معرف، منزل، واسما ل Zamyla، تليها فاصلة منقوطة كما المعتاد في نهاية المطاف. إلى هنا أيضا، وهذا هو قليلا مختلفة، ولكن أيضا قوية جدا في هذه الأيام. وهنا صفيف، وأنا أعرف أن ل هناك قوس مربع تصل العلوي وقوس مربع في الجزء السفلي. وهذا هو مجموعة من البيانات ما اكتب ما يبدو في جافا سكريبت؟ هذا هو مجموعة من يبدو مثل ثلاثة أشياء. وأنا أعلم أنه كائن فقط بسبب الأقواس المتعرجة. وتلاحظ هناك متعرج مفتوحة، بعض الاشياء، على مقربة متعرج، فاصلة، ثم بعض أكثر، فاصلة، وبعد ذلك بعض أكثر. ذلك أن ثلاث حجج مفصولة بفواصل اثنين. لذلك هذا هو مجموعة من ثلاثة أشياء. ولكل من هذه الكائنات على ما يبدو طالب عضو أو موظفي بعض نوع، مع كل معرف، المنزل، واسم. ولكن لقد دعا هذا شيء دعا جسون - جافا سكريبت تدوين كائن. وهذا هو تنسيق البيانات التي في الواقع ذلك هو شعبية جدا و رواج هذه الأيام أنه إذا كنت كتابة رسالة التطبيق الذي يستخدم الفيسبوك API، وAPI تويتر، حقا تقريبا أي API هناك في هذه الأيام، بما في ذلك بعض من تلقاء CS50، فإن البيانات التي تعود ليست في القديمة تنسيق CSV المدرسة. لأن أذكر أن CSV هو السوبر بسيطة. فمن أعمدة فصل فقط بالفواصل. بيانات جسون يمنحك المزيد من البيانات الوصفية. ذلك بربط مفتاح مع كل قيمة ذلك لم يكن لديهم إلى مجرد افتراض العمود الصفري هو قيمة واحدة، العمود واحد هو آخر، عمودين شيء آخر. كل شيء في كائن JSON هنا هو نوع من تصف النفس، لأن كل واحدة من الأسماء في هذا الملف له حرفيا اسم أمامه باعتباره سلسلة مقتبسة. لذلك دعونا نلقي نظرة على زوجين من الأمثلة هنا. اسمحوا لي أن انتقل إلى الجهاز. واسمحوا لي أن انتقل إلى عشقتك لدينا الدليل إلى الجمهور. واسمحوا لي أن أخوض في جافا سكريبت الدليل. ودعونا نمضي قدما وفتح دوم-0.html، حيث يعني مجرد DOM وثيقة نموذج الكائن. انها شجرة الاشياء التي التي أشرت إليها سابقا. واسمحوا لي أن أقترح ما يلي. وهنا صفحة على شبكة الإنترنت التي الجسد هو بسيط جدا. حتى أسفل هنا في الجزء السفلي، تلاحظ لدي نموذج. لقد رأيت تلك من قبل. فقد اثنين من المدخلات، واحدة منها لديها معرف من اسم، واحد منها لديه نوع من تقدم، وأول نوع واحد هو النص. حتى هذا يبدو في الواقع بسيط جدا. دعونا نذهب هنا. دعونا نعود إلى هذه الصفحة هنا. دعونا نذهب إلى المضيف المحلي، والخوض في لدينا الدليل جافا سكريبت، وانتقل إلى دوم-0، وهنا لدينا هذا النموذج. ذلك أن ما يبدو يفعل كل هذه الصفحة. أنه يحتوي على حقل الاسم مع على زر إرسال. ولكن أنا لن تستخدم PHP هنا. انا ذاهب للقيام العميل كل شيء إذا جاز التعبير في جافا سكريبت على النحو التالي. لاحظوا أنني في الواقع نظرا للاسم مجال هذه المدخلات فريدة من نوعها معرف، والتي سوف الواقع إنقاذ لي بعض الوقت في لحظة. وتلاحظ لقد أدخلت علامة أخرى في رأس الصفحة الويب الخاص بي، و  العلامة. لذلك فمن هذا المنطلق جافا سكريبت هي لغة برمجة من جانب العميل. في هذه الحالة، تماما مثل CSS، لقد وضعت بشكل مستقيم داخل بلدي HTML. ولكن لاحظ لقد أعلن وظيفة التي تبدو قليلا مثل PHP بناء جملة، ولكن هذا هو الواقع جافا سكريبت، لأن مرة أخرى، انها من جانب العميل في المستعرض. واتخاذ تخمين ما هو هذا هو الذهاب الى القيام به، على الرغم من بعض بناء الجملة هنا هو جديد. الحضور: ويقول مرحبا لمن. DAVID مالان: انها تسير ليقول مرحبا لمن يزور هذه الصفحة. فكيف؟ حتى إشعار، اتضح في جافا سكريبت هناك على (وظيفة) في حالة تأهب. هذه هي وظيفة جدا نوع من المحزن أن حقا يميل فقط لإزعاج المستخدمين. انها ليست واحدة يجب استخدام حقا عادة، لكنها وسيلة سريعة وقذرة طريقة نوع من طباعة شيء إلى مستخدم رسومية التفاعل، مثل مستعرض. لاحظ هنا أنني قد حصلت على سلسلة في علامات الاقتباس المفردة. اتضح أنه على عكس C، وجافا سكريبت يمكن أن يكون في الواقع كنت تستخدم واحدة يقتبس، وبصراحة انها مجرد نوع الاتفاقية بين الأسلوبية جافا سكريبت المبرمجين استخدام علامات الاقتباس المفردة. PHP، فإنها في الواقع لديهم قليلا معنى مختلفا. لكنه الآن، ونعرف تماما أن هذا هو السبب الوحيد. الاتفاقية في جافا سكريبت في كثير من الأحيان ل استخدام علامات الاقتباس المفردة، ولكن يمكن أن نستخدمها علامات الاقتباس المزدوجة في كلا المكانين كذلك. لذلك هذا هو مثير للاهتمام. أذكر المرة الأخيرة التي كان علينا أن الصورة على الشاشة التي لفتت شجرة حيث كان لديك عقدة HTML، و رئيس عقدة، والعقدة الجسم، وبعد ذلك بعض النص. ولكن كان هناك عقدة واحدة خاصة في أعلى جدا أن دعوت الوثيقة. كذلك، اتضح في جافا سكريبت، أي مرة كنت أكتب في برنامج جافا سكريبت في المتصفح، لديك حق الوصول إلى متغير عمومي خاص. مماثلة للsuperglobals PHP، و وهذا ما يسمى في واحد كل وثيقة صغيرة. انها مثل البنية، ولكن هذا البنية لديها أيضا وظائف داخل منه. لذلك البنية C ديها بيانات فقط عادة. ولكن كائن جافا سكريبت لأن هذا من الناحية التقنية أيضا لديها وظائف، والمعروف باسم الأساليب، داخل منه. ويمكن استدعاء دالة داخل هذا الكائن جدا القيام به حرفيا الاسم، نقطة، ومن ثم اسم وظيفة، أو طريقة أخرى. انها مجرد مرادف، حقا. وماذا هذه الوظيفة تفعل؟ يمكنك نوع من تخمين من اسمها. الحصول على عنصر بواسطة معرف. لذلك هذا هو الذهاب للبحث في صفحات الويب، بحث تلك الشجرة، وتبحث عن مهما كانت عقدة، عنصر AKA، لديها معرف فريد من الاقتباس اسم نهاية الاقتباس. ثم ما أنا ذاهب الى القيام به؟ انا ذاهب الى الحصول على قيمة داخل تلك العقدة في شجرة، وانا ذاهب القول بطريقة أو بأخرى مرحبا لهذا الاسم. حتى تأخذ تخمين، على الرغم من أننا لم ينظر إلى هذا بعد، ما يفعله زائد رموز يعني هنا وهنا ربما؟ الجمهور: سلسل. DAVID مالان: سلسل. الحق، وهذه ليست سوى نوع من تصميم القرارات جعل الناس منذ سنوات. في PHP، لسلسلة الأشياء مع نقاط. في C، يمكنك القفز من خلال العديد من الأطواق و استدعاء وظائف مثل strcopy () أو strcat () أو وظائف أخرى. ولكن في جافا سكريبت، يمكنك استخدام الإيجابيات. لذلك هذا هو مجرد وصل ثلاثة سلاسل - مرحبا، اسما، ومن ثم علامة تعجب. لذلك عندما والسبب هو هذه الوظيفة دعا على الرغم من؟ حسنا، تأخذ تخمين من HTML في الجزء السفلي. لماذا تحية () دعا، أو متى؟ على ما يبدو، كما أفضل أستطيع أن أقول، على تقدم، عند تقديم هذا النموذج، انا ذاهب الى القيام بكل ما هو داخل هذه الاقتباسات. وعلى وجه التحديد، وانا ذاهب لاستدعاء تحية () ثم العودة كاذبة. حسنا، دعونا نرى ما صافي تأثير هنا هو الأول. لذلك اسمحوا لي المضي قدما واكتب في، ويقول، لورين، إرسال. مرحبا لورين. دعونا نرى ما اذا كان هذا ربما فقط التنفيذ محظوظا. كلا. حتى انها تكتب بها مهما اسم أنا فعلا وضعت هناك. ولكن لاحظ ما لم يتغير. عنوان URL لا يزال دوم-0.html. ليس هناك register.php. لا يوجد الملف الثاني. ليس هناك سمة الإجراء. فما هو هذا كاذبة العودة يفترض به؟ لماذا أنا يدعو تحية () ثم عودة كاذبة ربما؟ ما يحدث عادة عند النقر فوق يقدم على النموذج الذي لدينا حتى رأينا في الاسبوع الماضي؟ الحضور: [غير مسموع]. DAVID مالان: وغني عن مكان ما، أليس كذلك؟ فإنه يذهب إلى بعض URL الوجهة. ولكن أنا لا أريد أن يحدث ذلك هنا. أريد بلدي صفحة الويب ليكون تماما الديناميكية مثل Gmail، حيث كنت مرة واحدة هناك، يمكنك البقاء هناك. لا تغيير URL بطريقة يدل على صفحة كاملة وإعادة. بدلا من ذلك، أريد فقط أن تغير شيئا مثل طبع شيء هنا على الشاشة. كذلك اسمحوا لي أن تنظيف هذا حتى قليلا. اسمحوا لي أن فتح لا دوم-0، ولكن اسمحوا لي أن فتح دوم-2. فقط حتى كنت قد رأيت بعض بناء الجملة هنا. اتضح أن ما نحن فقط لم يستخدم جافا سكريبت الخام. لذلك هذا هو حقا اللغة جافا سكريبت. البعض منكم قد يعرف من مكتبة تسمى مسج. حتى مسج ليست هي نفسها الشيء مثل جافا سكريبت. انها مجرد مكتبة ذكية حقا كتب الرجل وشاع بين الناس من هذا القبيل أن الجميع تقريبا في العالم الآن يستخدم مسج عند استخدام جافا سكريبت. وللوهلة الأولى، وبصراحة، فإنه تبدو أكثر قليلا خفي. ولكن عليك العثور عليها، وخاصة إذا كنت تذهب هناك لالمشروع النهائي الخاص بك مع شبكة الإنترنت التنمية، وستجد أن هذا ينظف الامور ويوفر لك تماما بضعة أسطر من التعليمات البرمجية. لذلك دعونا وهلة فقط في كيفية ويعمل هذا النموذج. لاحظ ماذا يمكنني إزالة ما يبدو من وجهة نظري HTML؟ ليس هناك على تقديم معالج إذا جاز التعبير. ليس هناك السمة. لأنك تعرف، ما لم أكن أحب حقا؟ شعرت أننا كانت تسقط إلى العادات القديمة هناك. مثلما بدأ يشعر قذرة لتختلط مع كل من CSS HTML، لأنك نوع من رمي لغات مختلفة في جميع أنحاء المكان، وبالمثل فإن هذا تبدأ في الشعور مثل الطرق سيئة للذهاب إلى أسفل حيث أنا أضع شفرة جافا سكريبت داخل بلدي HTML بدلا من العوملة بها. ذلك أن الدرس هنا. في دوم-2.html، أنا العوملة بها. وأنا أفعل الأشياء قليلا بشكل مختلف. الآن، انا ذاهب الى موجة يدي في هذا ما يفعله حقا تحت غطاء محرك السيارة. ولكن الآن فقط لنفترض أن أن أول سطر من التعليمات البرمجية في هذه المكتبة دعا مسج يعني فقط عندما الوثيقة جاهزة، قم بما يلي. لأنه لا يمكن اتخاذ صفحات الويب بعض الوقت ليتم تحميلها. هل يمكن أن يكون على الانترنت بطيئة الصدد، وأنه قد يكون الغزل والغزل، وأخيرا هو تحميله. التي سطر من التعليمات البرمجية يقول ليس علينا سوى الانتظار حتى صفحة كاملة جاهزة، وثيقة جاهز، قبل تنفيذ هذه التعليمات البرمجية. وتلاحظ الآن، وهذا هو الأرجح أكثر فائدة الأولى تتخذ بعيدا عن مسج. هذا الخط هنا هي مشابهة جدا في الروح لهذا الخط أطول بكثير هنا. في حين أنه في الخام شفرة جافا سكريبت، وهناك موجود كائن عالمي ثيقة لديه وظيفة تسمى getElementById ()، الناس الذين كتب تبسيط مسج أن أقول فقط علامة الدولار، ومن ثم داخل وضع أقواس الاقتباس اثنين، ثم وضع رمز التجزئة تليها معرف فريد تريد الاستيلاء. لذلك هذا هو ما يعادل document.getElementById. وفي الوقت نفسه،. تقديم يعني فقط على تقديم أيا كان شكلها كنت في اشارة الى على اليسار، انتقل قدما وتنفيذ هذا. ولكن هذا هو الآن الفضول أيضا. ما هو غريب حول ما لقد أبرزت هنا؟ ليس فقط هو نوع من بناء جملة جديدة، وهناك أيضا شيء مفقود. الجمهور: انه دعا فقط وظيفة؟ ليست يطلق عليه تنبيه؟ DAVID مالان: نعم. كذلك، في حالة تأهب لذلك () هو أسفل هنا، لكي نكون منصفين. ولكن ليس هناك ذكر ل اسم، مثل تعلمون، فو أو شيء ما هنا. والواقع، هذا هو واحد من الميزات من جافا سكريبت وهذا تماما قوية، ولكن أيضا جديدة تماما. وPHP في الواقع هذا أيضا. اسمحوا لي أن نمضي قدما ونفعل شيء حقيقي سريعة. اسمحوا لي المضي قدما ووضع هذا هنا. اسمحوا لي أن تفعل هذا. وظيفة. دعونا نسمي هذا معالج (). وظيفة معالج إذا جاز التعبير. شيء الذي يعالج بعض العمليات. اسمحوا لي تنظيف بلدي المسافة البادئة. ووضع هذا هنا. ووضع هذا هنا. نعم. موافق. وحتى الآن لدي وظيفة تسمى معالج () التي لا أعرف حقا ماذا يفعل حتى الآن. هو فقط لا يزال لديه تلك الأشياء. يصيح. استغرق أكثر من اللازم. دعونا نفعل ذلك. حسنا. آسف. حسنا. اسمحوا لي أن تفعل هذا. موافق. أن تبدو لطيفة ومباشرة إلى الأمام الآن. اسمحوا لي أن تفعل هذا. قيام بذلك. وموافق. وحتى الآن، دعونا نضع هذا أكثر من هنا. لا مزيد من البرمجة على الطاير. موافق. وحتى الآن، دعونا نعود ل حيث بدأت القصة. ، قال في وقت سابق قلت إن هذا الخط هنا يعني عندما الوثيقة جاهزة، انتقل قدما ونفعل ذلك. ماذا أريد أن أفعل؟ كذلك وجه التحديد، أريد أن أذهب قدما والقيام بما يلي. تنفيذ هذا السطر من التعليمات البرمجية، ثم ما أريدك أن تفعله هو نسمي هذا يعمل عندما يتم إرسال النموذج. الآن هذا هو ما مثيرة للاهتمام. هذا ليس في حد ذاته وظيفة. لاحظت وأنا لا نضع قوسين هنا بالطريقة العادية. أنا حرفيا تمرير دالة يسمى معالج () إلى وظيفة أخرى دعا تقديم () كوسيطة كما على الرغم من انها مثل متغير. وهذا هو واحد من ملامح جافا سكريبت، هو وظائف أنفسهم هي حقا الأشياء فقط. في الواقع، انهم حقا فقط المتغيرات من نوع ما. وإذا كان اسم الدالة معالج ()، ليس هناك من سبب لا أستطيع تمريرها في كحجة هنا. وهذا يعني عندما يكون النموذج مع معرف التجريبي هو المقدمة، استدعاء هذه الدالة. ولكن الآن لو كنت التراجع عن كل هذا، فلماذا لم تفعل ربما أنا منذ هذه اللحظة؟ حسنا، هذا هو وظيفة مجهول. لأن بصراحة، أدركت لماذا أنا يكلف نفسه عناء إضاعة الوقت إعلان وظيفة استدعاء معالج () فقط للاتصال في واحد ومكان واحد فقط؟ إذا كنت لا تحتاج إلى اسم، وأنا لا تحتاج أن نسميها أكثر من مكان واحد، دعونا فقط تنفيذ وظيفة الحق حيث كنت في حاجة إليها. وهكذا جافا سكريبت وPHP دعم ما ويطلق على وظائف المجهولة التي اسمحوا لي أن تفعل بالضبط ذلك هنا. لكننا مجرد خدش السطح. دعونا ندف مع بضع أمثلة النهائية هنا. إذا ذهبت إلى quote.php. لاحظ أن هذا هو في الواقع PHP وظيفة، وهو برنامج PHP، التي كتبت أن تتوقع المعلمة HTTP يسمى الرمز، وأنا يمكن أن تمر في قيمة مثل الفيس بوك. وإذا نظرنا في الواقع في المصدر رمز، وهذا هو الاستعلام عن موقع على شبكة الانترنت مجانا دعا ياهو المالية، تماما مثل ف مجموعة سبعة، وانها تعود لي شيء في ما يبدو شكل معروف هو جسون - جافا سكريبت تدوين كائن. انها كائن فقط. لاحظ الأقواس المتعرجة، ونقلت و القولون، والفواصل. الآن وفي الوقت نفسه، وهذا أمر رائع. لأنني ربما يمكن استخدام البرمجة اللغة لتوليد عناوين التي تبدو مثل هذا حيوي، أليس كذلك؟ يمكنني تغيير هذا إلى Google ونعود جوجل سعر السهم 1،017.55 دولار. لذلك دعونا نرى ما اذا كنا لا يمكن استخدام هذا الآن. اسمحوا لي ان اذهب لاياكس-0 هنا، والتي يشبه ما يلي. انها مجرد موقع على شبكة الانترنت التي لديها نموذج مع زر واحدة. اسمحوا لي هنا المضي قدما واكتب في YHOO لرمز أسهم ياهو، انقر فوق إحضار الاقتباس، ثم لاحظ الآن لقد حصلت تنبيه مع 32.86. اسمحوا لي أن تذهب في الواقع إلى إصدار مربي الحيوانات من هذه الصفحة، الإصدار الثاني، و اكتب في دعنا نقول مايكروسوفت، MSFT. الحصول على اقتباس. والآن لاحظ، لا حالة تأهب. تلاحظ حيث تقول السعر يتم تحديدها؟ هناك أبسط من الأمثلة التي يلمح ما Gchat، والفيسبوك الدردشة، و Gmail، وغيرها من مثل هذه المواقع يفعلون من قبل في الواقع تغيير صفحة ويب. لاحظ هذا. اسمحوا لي إعادة تحميل الصفحة. اسمحوا لي أن فتح المفتش كروم. اسمحوا لي أن انتقل إلى العناصر المفتاح هنا. الآن لاحظ إذا كنت التكبير في أسفل هنا و فتح هذا الأمر، لاحظ أن هذا هو بلدي HTML DOM - وثيقة بلدي نموذج الكائن. هذا هو بلدي HTML. ولكن الآن لاحظ، على الرغم من انها تسير أن يكون من الصعب قليلا لنرى ذلك في كل من أماكن في وقت واحد، وإذا كنت اكتب في الفيس بوك هنا، ومشاهدة الجزء السفلي من الشاشة فقط. انها في الواقع تغيير بلدي HTML على الطاير. وانها تفعل هذا بكل بساطة عن طريق القيام بشيء من هذا القبيل. إذا كنت تفتح اياكس-2، لاحظ تنفيذ شيء مثير مثل ذلك، على الرغم من انها قبيحة جدا، ولكن متطورة على هذا النحو وظيفيا، لديها بعض HTML في الجزء السفلي. ولكن لاحظ أنني استخدمت لوضع علامة. ليس لدينا تستخدم هذا من قبل، ولكن هذا هو مثل، لكنه لا يجبر كل شيء على سطر جديد. انها فقط يجعل منطقة مستطيلة على نفس الخط أساسا. تلاحظ أن أعطيته معرف من السعر. واتضح باستخدام نفس مكتبة جافا سكريبت، ولدي وظيفة دعا الاقتباس () وهذا ما يسمى كلما إرسال النموذج. وما أفعله هو هذا. أنا معلنا متغير في جافا سكريبت دعا رابط، وتوفير قيمة quote.php؟ رمزا =. وبعبارة أخرى، أنا نفسي بداية لإعداد طلب HTTP، ثم أنا وصل على أنه مع زائد مهما كان العنصر مع معرف من هو رمز، وهذا الإشعار هو أن حقل النص وصولا هنا. لذلك مثلما كان لدينا نماذج في الماضي. ثم اتضح في مسج، إذا كنت الكلمة. فال ()، الذي يستدعي من فال وظيفة، وظيفة القيمة، التي يحصل كل ما قد كتبته المستخدم فيها. وبعد ذلك كل من حركة مرور الشبكة ما يحدث هو هذا. $. getJSON. وبوصفها جانبا، علامة الدولار مجرد تدوين الاختزال. انها حقا jQuery.getJSON. يحصل لي لجسون من هذا العنوان، وعندما طلب يعود، نسمي هذا وظيفة وتمر في كوسيطة ما عاد من الخادم. لذلك وبعبارة أخرى، إذا أعود إلى المتصفح، وأعود إلى quote.php، ما تقوم به هو الحصول على متصفحي هذا جزء من البيانات. وعندما أذهب إلى صفحة الويب هذه هنا، لاحظ إذا كان علينا بدلا من ذلك يذهب إلى الشبكة التبويب ومسحها، ثم اكتب في شيء من هذا القبيل GOOG لجوجل واحصل الاقتباس، لاحظ لم الصفحة لا تتغير. ولكن تم طلب HTTP، وما عاد هنا إذا نظرنا إلى الرد هو في مجمله مجموعة من جسون أننا الوصول إليها أخيرا مع هذا الخط بسيطة هنا. البيانات هو ما حصلت من الخادم. الثمن هو اسم الرئيسية يهمني. حتى data.price يعطيني ذلك. الآن وفي الوقت نفسه، وهذا هو المثال الأخير. يمكنك أن تفعل حتى الآن أكثر مع الصفحة. في الواقع واحد، وأيضا اثنين. يمكننا اعادة علامة، إذا كنت تتذكر هذا. هذا جافا سكريبت. يمكننا أن نفعل ذلك. مثيرة للغاية. سنترك ذلك على أنه التشويق. ولكن المثير أكثر، يمكنك تفعل أشياء من هذا القبيل. إذا ذهبت إلى تحديد الموقع الجغرافي-1، اتضح أن كروم يعلم أننا في الطول خطوط العرض 42.37. -71.10. لذلك هناك أكثر هناك تحت تصرفكم. ولكن أكثر على ذلك في الاسبوع المقبل. أراك الاثنين.