HANNAH بلومبرج: مرحبا الجميع. ونحن في طريقنا للبدء بضع دقائق في وقت مبكر لأن لدينا الكثير كله المواد من خلال الحصول على. أنا هانا. أنا TF. ماريا سوف يكون الانضمام لنا في غضون بضع دقائق. تدرس قسم اليمين من قبل. أنا أدرس قسم اليمين بعد، لذلك نحن ذاهبون أن يبقيه إلى ساعة ونصف. لذلك كما سترى هنا، لدينا تماما عدد قليل من الموضوعات نحن بحاجة للحصول على من خلال، ولذا فإننا سوف يذهب قليلا بسرعة. ولكن إذا كان في أي نقطة نقول شيئا بسرعة كبيرة جدا أو أنك لا تفهم، لا تتردد في المقاطعة مع الأسئلة. نحن نريد أن تكون قادرة على جعل هذا استعراض الدورة بصفة مفيدة لكم جميعا ممكن. رائع. لذلك دعونا الحق في القفز مع بعض الموضوعات التي نحن في الواقع جدا، وتغطيتها لفترة وجيزة للغاية بالنسبة لل مسابقة 0 في جلسة المراجعة مسابقة 0. ذلك بدءا من القوائم المرتبطة. وذلك فقط تأكد أن لديك بعض المعارف الأساسية حول القوائم المرتبطة ومريحة به بعض العمليات الأساسية. حتى لمجرد النظر، مرتبطة قوائم هي أفضل من صفائف لأنها يمكن أن تنمو بشكل حيوي. لذلك علينا أن ميزة كبيرة. لقد رأينا منهم يستخدم في الجداول التجزئة عندما كنا لا أعرف بالضبط كم عدد الأشياء التي كنت تريد الذهاب الى لتضاف الى هيكل بياناتنا. للأسف، لدينا قطعة من القائمة المرتبطة في جميع أنحاء الذاكرة، لذلك نحن لن تكون بالضرورة قادرة على القيام الوصول وقت ثابت إلى أي عنصر في القائمة المرتبطة. من أجل العثور على عنصر معين، ونحن أن تكرار كل الطريق من البداية. لذلك نضع في اعتبارنا أن معظم العمليات الأساسية هي أوميغا 1. لذلك إدراج هو مجرد الذهاب الى اتخاذ 1. حذف سيستغرق ن لأننا أن تذهب تجد من القائمة. والبحث أن تأخذ، في أسوأ الأحوال، ن. لا نستطيع أن نفعل شيئا من هذا القبيل البحث الثنائي على قائمة مرتبطة منذ لا نستطيع فقط القفز عشوائيا إلى الوسط. رائع. رائع. قليلا من المداخن. هذا، مرة أخرى، جاء في مسابقة 0، لذلك أنت يجب أن تكون مريحة السوبر معها. ولكن للمداخن، فإننا نطلب منك لنتذكر كومة من الصواني. وسيكون لأول مرة في، آخر من يخرج. لذلك نحن كومة الامور في المكدس، ثم إذا كنا نحاول أن يأخذ شيئا off-- الذي نسميه ظهرت قبالة وstack-- نأتي من أعلى. وإذا كنا نريد أن نضع شيئا في المكدس، ونحن نسميها دفع. لذلك دائما ما يكون يشبون من أسفل وكأنه كومة من الصواني. رائع. لقد رأيت أكوام تنفيذها مع كل القوائم المرتبطة والمصفوفات. إذا كنت تنفيذ مع المصفوفات، وتريد للتأكد من أن تتبع كل من الحجم والقدرة. لذلك حجم سيكون التيار عدد من الأمور في الكدسة، في حين أن القدرة هو العدد الإجمالي من الأشياء التي يمكن تخزينها في الكدسة. رائع. على نحو مماثل للغاية، لدينا قوائم الانتظار. في هذه الحالة، بدلا من التفكير كومة من الأدراج، والتفكير في خط. هذه ستكون أول مرة في، أولا خارج. حتى إذا كنت يصطفون ل شيء في المتجر، نأمل أن أول شخص في الخط سوف يتم ساعد أولا. بدلا من أن تقول دفعة و البوب ​​كما نفعل مع المكدس، نقول فقط إدراج بقائمة الانتظار وdequeue. ومرة أخرى، إذا كنت تنفيذ ذلك مع صفيف، نحن بحاجة للحفاظ على المسار ليس فقط حجم والقدرة، ولكن أيضا الرأس، والتي سيكون مقدمة قائمة الانتظار لدينا. رائع. أي أسئلة عن أي من ذلك؟ رائع. تتحرك على طول الحق. OK، الجداول التجزئة. هنا حيث يبدأ الحصول على اهتمام حقا. لذلك جدول تجزئة هو تطبيق واحد من مجموعة النقابي. وذلك أساسا ما حدث ولدينا كل هذه المدخلات، ونحن تعطيه لتجزئة وظيفة الذي يقول: حسنا، هذا هو المكان في جدول تجزئة أنه ينتمي. حتى أبسط دالة البعثرة التي شهدناها للتو قائلا: OK، لنفترض أننا نريد أن نضع السلاسل في جدول التجزئة لدينا. وفكرة بسيطة حقا قد يكون أن أقول، OK، دعونا فرز فقط من قبل الحرف الأول من الكلمة. حتى تستطيع أن ترى هنا، ونحن نأخذ الموز، وضعنا من خلال وظيفة تجزئة، ويقول: مهلا، هذا يجب أن تذهب في الفهرس 1. لذلك يمكن أن نفكر أساسا لتجزئة الجدول كما حفنة من الدلاء مختلفة. ولكل من هذه الدلاء يجري عقد رئيس قائمة مرتبطة. وفي ذلك قائمة مرتبطة هو المكان الذي يمكن فعلا وضع القطع المختلفة من البيانات. أكثر الغوص ذلك قليلا في وظيفة تجزئة، وهنا على سبيل المثال أنا فقط وصف حيث نقول فقط، OK، واتخاذ الحرف الأول كلمة ونحن الذهاب إلى ترتيب هذا الامر في الدلاء. لذلك يفترض، سوف يكون هناك 26 الدلاء، واحد لكل حرف من الحروف الأبجدية. لماذا ليست هذه وظيفة تجزئة كبيرة؟ ما يجعل هذا غير مثالية؟ نعم. الحضور: وأنت تسير أن يكون التصادم. HANNAH بلومبرج: نعم، بالضبط. وأنت تسير أن يكون التصادم. بحيث شيء واحد. وسوف نتحدث عن كيف يمكننا إصلاح التصادم في ثانية واحدة. مشكلة أخرى مع هذا خاصة ظيفة تجزئة يختلف هذا لدينا دلاء ستكون أحجام جميلة مختلفة اختلافا جذريا. ونحن نعلم أن هناك الكثير كله المزيد من الكلمات التي تبدأ مع A من X، لذلك نحن ذاهبون الى جدا دلاء غير المتوازنة في جدول التجزئة لدينا. رائع. لذلك نعم، دعونا نعود إلى نقطة التصادم. ماذا نفعل اذا كان هناك تصادم؟ لدينا بضعة خيارات مختلفة. حتى واحد، لذلك نفترض أننا نحاول لوضع بري في جدول التجزئة لدينا. ونحن نرى، أوه، نريد لوضعها في مؤشر 1، ولكن الموز يعيش بالفعل هناك. ماذا نحن فاعلون؟ لدينا خياران رئيسيان. رقم واحد هو أننا نستطيع أن نقول، OK، ليس هناك مجال في مؤشر 1، ولكن دعونا فقط مواصلة البحث من خلال حتى نتمكن من العثور على بقعة مفتوحة أخرى. ولذا فإننا سوف أقول، OK، دعونا نضع في بقعة 3. هذا خيار واحد. وهذا يسمى خطية التحقيق. والخيار الثاني قائلا: حسنا، حسنا، دعونا فقط جعل كل من هذه الدلاء يكون رؤساء القوائم المرتبطة. وانه موافق إذا كان هناك أكثر من شيء واحد في دلو. نحن ذاهبون لمجرد إلحاقها على الجبهة. حتى هنا يمكنك أن ترى، OK، عندما كنا إدراج التوت، ونحن فقط أخذت الموز، نوع من دفعت أكثر من ذلك قليلا وألقى التوت في هناك. وهذا أيضا ما يرام تماما. وهذا ما يسمى تسلسل منفصل. يمكنك التفكير في هذا الأمر نوع من مثل مجموعة من رؤساء لالقوائم المرتبطة. أي أسئلة حول تجزئة الجداول، وظائف التجزئة؟ رائع. الأشجار ومحاولات. حتى شجرة هو أي نوع من بنية البيانات حيث هناك نوعا التسلسل الهرمي أو نوعا من المستوى لمختلف الأشياء الخاصة بك. وهذا سوف تصبح سوبر واضح عندما نرى مثالا على ذلك. ورأينا محاولات، جنبا إلى جنب مع الجداول التجزئة، في pset5-- التي، مرة أخرى، لعبة عادلة تماما لهذا quiz-- عن بيانات أخرى هياكل ما في وسعنا تخزين أشياء مختلفة. في حالة القاموس، نحن تخزين مجموعة من الكلمات. لذلك دعونا نلقي نظرة على بعض الأشجار. لذلك هذا هو مثال شجرة. أنه يحتوي على نوع من الهيكل، هذا الهيكل الهرمي، حيث يمكنك أن ترى أن هذه العقدة 1 في الجزء العلوي لديه نوعا من رتبة أعلى من 2 و 3، التي هي فوق 4 و 5 و 6 و 7، ما فوق 8 و 9. ذلك أن كل نعنيه شجرة، لذلك يمكن أن مجرد نوع من صورة هذا في رأسك. الآن، لدينا اثنين من الأشجار أكثر تخصصا. ذلك مثال واحد هو شجرة ثنائية. وشجرة ثنائية هي، مرة أخرى، فقط ستكون بنية بيانات مع نوع من التسلسل الهرمي، ولكن كل من العقد يمكن أن يكون في معظم طفلين. هذا هو المكان الذي يأتي ثنائي كلمة من. لذلك هذا هو مثال شجرة ثنائية. لذلك أن فئة صغيرة من الأشجار. الآن دعونا نصل حتى أكثر تحديدا و الحديث عن ثنائي البحث الثنائي trees-- أشجار، إلى حد ما. حتى هنا فكرة ليست فقط لا كل عقدة لها في معظم طفلين، ولكن كل من الأطفال إلى اليسار ستكون أصغر وجميع الأطفال إلى الحق سوف تكون أكبر. حتى إشعار فقط لدينا شجرة ثنائية، هناك لا توجد علاقة بين الأرقام. ولكن في بحثنا ثنائي شجرة، ونحن نرى، OK، وهنا 44. وكل رقم إلى اليسار من 44 هو كل شيء أصغر وإلى اليمين هو أكبر. والذي يحمل في كل مستوى الشجرة. حتى هنا، وهذا هو أصغر من 22 وهذا هو أكبر من 22. وهذا هو شجرة البحث الثنائية. لماذا نعتقد انه دعا شجرة البحث الثنائية؟ ما خوارزمية فإنه يذكرك؟ الحضور: بحث ثنائي. HANNAH بلومبرج: بحث ثنائي. لأنه إذا كنت تبحث عن عدد خاص في هذه الشجرة، في كل نقطة، يمكنك ضرب فقط نصف بعيدة عن الشجرة، وهو أمر عظيم. وبحيث سيكون ليقدم لنا شيئا أن يتطلع الكثير مثل البحث الثنائي. أي أسئلة؟ كل الحق، بارد. كل الحق، يحاول. الجميع المفضل. لذلك هذا هو المثال الذي شاهدنا مجموعة في الصف. ومرة أخرى، وهذا هو مجرد الطريقة التي يمكننا تخزين البيانات. في حالة القاموس، مرة أخرى، هذا هو مجرد الذهاب لتكون السلاسل. لذلك دعونا نرى ما هذا الواقع يبدو في مستوى أقل قليلا. لذلك دعونا نلقي نظرة في عقدة واحدة في TRIE. ونحن نرى، OK، هناك يجري أن تكون منطقية وعقدة، مؤشر إلى عقدة. ونحن نرى أن ويسمى منطقية is_word. ذلك أساسا، وهذا الذهاب لتتوافق لهذه المثلثات الصغيرة التي يقول: إذا كنت قد حصلت هنا، كنت قد وجدت كلمة كاملة. ونحن نعلم أن "تورينج" على هنا هو كلمة كاملة، في حين أن مجرد T-U-R ليست كلمة لأننا لا نرى أن دلتا قليلا. وأن دلتا قليلا، مرة أخرى، يتوافق هذا is_word، هذا is_word منطقية. ومن ثم لدينا مجموعة من الأطفال. لذلك على كل مستوى، ل لدينا عقدة معينة، والذي يشير إلى عقدة مجموعة من الأبجدية بأكملها. هكذا ترون، مرة أخرى، في هذا picture-- أنا ذاهب للحفاظ على القفز الى الوراء و forth-- أن هذا مجموعة في الجزء العلوي لديه مجموعة من مختلفة العقد نزوله منه. لديها 26 أو 27 إذا كنت تريد لتشمل الزائدة. وهذا يعطينا طريقة لتخزين البيانات لدينا في هذه الطريقة التي يمكن أن ينظر في التي يمكنك البحث عن بسرعة فائقة. ما هو الوقت المناسب لبحث TRIE؟ الحضور: (غير مسموع). HANNAH بلومبرج: نعم. من الناحية النظرية، وحان الوقت المستمر. انها لن يؤدي الا الى أن يكون حجم الكلمة التي تريد البحث عنها. حتى إذا أضفنا زليون المزيد من الكلمات لTRIE لدينا، انها لن تأخذنا أي لفترة أطول لتحديد إذا كانت كلمة معينة هي في TRIE. ولهذا لطيف حقا. الحضور: هل فقط تهيئة أن المصفوفة؟ فاتك نقطة أو اثنين. يمكنك مجرد الحديث عن أن لثانية واحدة؟ HANNAH بلومبرج: بالتأكيد، بالتأكيد. سؤال جيد. كان السؤال، ونحن لدينا مجموعة واسعة هذا ستكون لدينا نجم عقدة كما بدلا من عقدة عادلة، أليس كذلك؟ رائع. حتى هنا ما نقوله هو مجموعة لدينا فقط ستكون مؤشرات إلى صفائف الأخرى. حتى انها essentially-- ذلك النوع من وكأننا قائمة مرتبطة بهذه الطريقة حيث كل هؤلاء الأطفال نشير فقط إلى العقدة التالية. والطريقة التي نحن تحديد فعلا، مهلا، OK، لقد كرر خلال كامل كلمة واحدة، هي هذه الكلمة في القاموس، نحن تحقق هذا فقط is_word. السؤال الكبير. نعم. الحضور: OK. فما كان وقت لTRIE؟ HANNAH بلومبرج: بالتأكيد. وبالتالي فإن وقت التشغيل لTRIE ل بحث سوف يكون الوقت قد حان المستمر. حتى انها مجرد الذهاب ليكون عدد الحروف في الكلمة. انها لا تعتمد على حجم القاموس أو حجم بنية البيانات. حتى هنا على سبيل المثال أبسط قليلا. في هذه الحالة، يمكنك أن ترى أن الخفافيش كلمة في القاموس وعليك التكبير، ولكنك لم يكن لديك شيء من هذا القبيل حديقة الحيوان. كيف لنا أن نجعل حديقة الحيوان؟ كيف نضيف حديقة الحيوان لدينا القاموس، لTRIE لدينا؟ نعم. الحضور: جعل is_word صحيح ل(غير مسموع). HANNAH بلومبرج: جيد. لذلك نستطيع أن نقول Z-O-O، ومن ثم فاننا كنا تريد التحقق من هذا المربع أيضا. رائعة. دعونا نقارن فترة وجيزة جدا يحاول مقابل الجداول التجزئة. يحاول كبيرة حقا لأنه، كما قلنا، أنها توفر الوقت دائم البحث. ولكن العيب ضخمة غير انهم العملاقة. يمكنك الحصول على المعنى، حتى من خلال النظر في ذلك، أنه سيستغرق كمية كبيرة من الذاكرة. حتى انهم ذاهبون ليكون كبيرا أكبر من الجداول التجزئة، ولكن انهم ذاهبون لإعطاء لنا الأوقات بحث أسرع بكثير. ولهذا النوع من الخاص بك المقايضة، ما يهمك، سواء كان ذلك في سرعة أو الذاكرة. أي أسئلة على أي من ذلك، كل من هياكل البيانات C. جميل. حسنا. ونحن في طريقنا للانتقال إلى قليلا قليلا من تطوير الشبكة مع ماريا. MARIA ZLATKOVA: جميل. حسنا. HANNAH بلومبرج: يمكنك استخدام جهاز الكمبيوتر المحمول. MARIA ZLATKOVA: نيس. OK، بارد. ونحن نتحرك الآن إلى الويب التنمية، تحدثنا قليلا حول أذونات تغيير من الملفات والدلائل بحيث يمكن أن تكون في متناول للمستخدمين الآخرين، للعالم، وحتى يتسنى لنا أن نرى كيف في الأساس يمكننا أن أنقل لهم عندما نضع أشياء مثل المواقع بعد أن قمنا معظمها تم القيام. لذلك رأينا الأمر شمود، وهو تغيير الوضع، من حيث الأساس. وهذا أمر لينكس و يتغير أذونات الوصول من كائنات نظام الملفات. وكائن نظام الملفات مجرد دليل، ملف، كل ما يمكنك تغيير أذونات. لذلك نرى أذونات الملف، نكتب ليرة سورية الأوامر، القائمة، -l. وعند كتابة ذلك، ونحن عادة ما نرى بعض الأذونات التي تبدو نوعا من مثل هذا أمام اسم الدليل. لذلك د يشير إلى الدليل. ثم لدينا ثلاثة الثلاثيات التي في الأساس الرجوع إلى أذونات إما مستخدم أو مجموعة، أو العالم. أنواع أذونات ما في وسعنا يكون لهذه المجموعات الثلاث من الناس إما ص للقراءة، ث ل الكتابة، و x للتنفيذ. ونحن يمكن أن يكون لتلك مجموعة والعالم كذلك. الشيء هو أنه في بعض الأحيان صعبة عندما كنا اكتب الأمر شمود، كنا اكتب بعض رقم التي تتألف من ثلاثة أجزاء. حتى أننا يمكن أن نفعل مثل 777 والتي في الأساس يشار إلى القيمة المضافة كل من هذه الثلاثيات لص ستشير إلى 4، من شأنه ث الرجوع إلى 2، وسوف س الرجوع إلى 1، حتى عندما تضاف يصل، كل من الأرقام سوف ينزل إلى العدد التراكمي إلى القيمة التراكمية بين 0 و 7. ولذا فإننا يمكن أن يكون أيضا 0 بدون ضوابط على الإطلاق. وهذا من شأنه أن يعطي أساسا لنا أذونات إما المستخدم، مجموعة، أو العالم. أي أسئلة حول هذا حتى الآن؟ كان قلته قراءة 4: الجمهور؟ MARIA ZLATKOVA: نعم. الحضور: (غير مسموع). HANNAH بلومبرج: نعم. الحضور: وبعد ذلك بإضافة كل تلك والبعض الآخر تشير إلى رقمك. MARIA ZLATKOVA: نعم. نعم. هذه هي التساؤلات الكبرى. جميل. المقبل، ونحن قفز إلى HTML و أكثر قليلا عن تطوير الشبكة. لذا HTML يعني فقط لغة توصيف النص التشعبي. وهذا هو العلامات اللغة التي هو المعيار أن انها تستخدم لإنشاء صفحات الويب. انه دعا لغة ترميز لأنه لم يجمع في الواقع. أنه لا يقول كيف ينبغي بعض التعليمات البرمجية يتم تنفيذه أو أي شيء من هذا القبيل. كما يحدد فقط و يصف كيف يمكن لشبكة الإنترنت يجب تعيين الصفحة لأعلى مع كل عنصر من عناصره وكيف ينبغي أن ننظر إلى المستخدم. بعض من علامات HTML أننا ذهب أكثر هي التالية. كل الوثائق HTML لدينا بدأت مع أتش تي أم أل DOCTYPE. ثم لدينا دائما علامة HTML. لدينا رئيس والجسم. ومن المهم أن لديها HTML هذا النوع من بنية متداخلة لأنه من الواضح للغاية. ومن ثم يصبح واضحا جدا عندما كنا تحتاج إلى فتح وفعلا به وثيقة. ونحن بحاجة دائما إلى إغلاق العلامات التي نحن قد فتحت. وهنا لدينا بعض أنواع من الأشياء قبل أن نحن نريد أن يكون. لذلك لدينا، على سبيل المثال، عنوان CS50. ثم نحن في الواقع يمكن ربط ورقة أنماط الذي يحدد كيفية أسلوب موقعنا. هذا هو CSS. ونحن في طريقنا للذهاب أكثر من ذلك في القليلة القادمة من الشرائح كذلك. داخل الجسم، وضعنا بعض الطبقات ومعرفات. وكتذكير، مرة أخرى، معرفات فريدة من نوعها والطبقات يمكن أن تسند إلى سلع متعددة. وهذا يعني فقط أن يمكننا استخدام فئات ومعرفات ضمن structures-- البعض بذلك، ل سبيل المثال، ضمن ملفات CSS أو نمط sheets-- للإشارة إلى العناصر المحددة ويقول أساسا أننا نريد أن أسلوب أو تصميم بعض العناصر في بعض بطريقة معينة. ونشير لهم من قبل هوياتهم والطبقات. ويمكننا أيضا أن أشير إلى أشياء مختلفة بالسمات كذلك، ولكن معرفات والطبقات فقط تعطينا بعض التنوع وعلى وجه التحديد ما نحن أريد أن أشير إلى. حتى مجرد مثال. نستطيع، مرة أخرى، في إطار ملف CSS أين نحن تريد أن تحدد بعض style-- من الألوان، والخطوط، وأشياء من هذا القبيل هكذا- يضرب ما في وسعنا تعريف النمط للهيئة. بحيث تحديده للعلامة الجسم كله. ولكن بعد ذلك يمكننا أيضا تحديد أسلوب ل#title. ومرة أخرى، يشير الهاشتاج لدينا ID والنقطة يشير إلى صفنا. ثم لINFO.، ونحن يمكن أيضا تعيين بعض الصفات. ومرة أخرى، عندما نعود، كان لدينا فئة تسمى معلومات وعنوان الهوية الخاصة بنا. ويمكننا أن نرى أن نشير لهم من قبل #title وINFO.. الحضور: هل تقول رابطة هاشتاق [؟ تبنني؟ ؟] MARIA ZLATKOVA: عذرا؟ الحضور: هل تقول رابطة هاشتاق [؟ تبنني؟ ؟] MARIA ZLATKOVA: الوسم يعني ID، لذلك #title يشير إلى ما العناصر يكون هذا الرقم يسمى العنوان. ثم النقطة تشير إلى فئة. حتى INFO. ويشير إلى هذا العنصر لأنه يحتوي على معلومات الطبقة. اجل. الحضور: لماذا تميزها في HTML؟ لماذا لا تقول أشياء معينة هي معرفات وبعض الأشياء هي من الدرجة؟ MARIA ZLATKOVA: هذا فقط ما يصل الى you-- HANNAH بلومبرج: كرر السؤال. MARIA ZLATKOVA: أوه، آسف. لماذا نميز بعض العناصر كما معرفات وعناصر أخرى كفئات؟ هذا فقط لأنه في كثير من الأحيان حقا اختيار التصميم. فهو يوفر لك الكثير من براعة في كونها بوسعي أن أقول أريد هذا البند محدد أن يكون هذا الرقم لأنهم يريدون أن تفعل الكثير من الأشياء مع ذلك، وأنا فقط تريد تعريف النمط، نمط معين أو اللون مهما لهذا البند. والطريقة للقيام بذلك هو مجرد يعطيها ID. ثم إذا أريد أن يكون اثنين من عناصر مختلفة بعد ذلك، بدلا من الذهاب ووضع their-- بدلا من القيام بذلك من قبل العلامة لأن من شأنه علامة ضبط خلية للعلامة كاملة في كل مرة يتم استخدام هذه العلامة، يمكنك تعيين فئة لسلع متعددة. وبعد ذلك فقط الوصول إلى تلك الفئة ويقول أريد أن أسلوب هذه الفئة بهذه الطريقة. ومرة أخرى، يمكن للطبقة يكون سلع متعددة مختلفة وID أن تكون فريدة من نوعها. أسئلة كبيرة. اي أسئلة أخرى؟ OK، رهيبة. مرة أخرى، هذه هي الطريقة هذه المنتخبات يتم الرجوع إليها في CSS، مع الهاشتاج، مع نقطة، أو بدون أي شيء ل تعيين اسلوب بعض البطاقات، مثل الجسم. وهنا لدينا عام بناء جملة كيف يتم ذلك. تكرار بعض أفضل الممارسات لHTML و CSS، نحن بحاجة إلى ذلك، مرة أخرى، أغلق كافة علامات HTML أن نفتح. وما أوصينا لك قيام لمشاريع النهائية، فضلا عن CS50 المالية، هو جعل تأكد من أن جميع HTML الخاص بالتحقق من صحة. وهذا ما فعله مع W3 المصادقة. ثم ما فعلناه و ما نوصي به يفصل أسلوب، لذلك CSS من علامات HTML. لذلك أي شيء له صلة كيف الصفحة الخاصة بك هو الذهاب الى نظرة بصريا وكيف انها تسير إلى تعديل يجب ان تذهب الى وثيقة CSS. ثم العلامات قولك كيف تسير الامور هي في علاقتها ببعضها البعض هو HTML، والتي يجب ان تذهب داخل وثائق HTML الخاص بك. أي أسئلة؟ MHM. الحضور: ما يجري بالضبط على مع التحقق من صحة الصفحة عندما نقوم التحقق من صحة HTML أن [غير مسموع] خلقت؟ MARIA ZLATKOVA: حتى what-- تعتقد أنك. ذلك بالضبط ما يجري على مع التحقق من صحة الصفحة وماذا علينا أن نفعل ذلك؟ في الأساس، ونحن بحاجة للقيام بذلك لأن الكثير من الأوقات، المتصفح الخاص بك، إذا كنت لا إغلاق علامة أو شيء من هذا القبيل، متصفحك لا يزال مستمرا ل تقديم صفحة، وربما لا تزال تعمل، لكنه أفضل الممارسات للتأكد من أن كنت قد، مرة أخرى، أغلقت كل الخاص به، أن جميع العناصر الخاصة بك الطريقة التي ينبغي أن يكون، وأساسا أنه قبل الاتفاقيات التي يتم مسبقا. انها، مرة أخرى، مجرد الشيء الذي يجب عليك أن تعلم أن تفعل، بدلا من الاضطرار كود sloppier وأشياء من هذا القبيل. نعم. أوه، آسف. أظن أنك رفع يدك. الجمهور: لا، كنت فقط (غير مسموع). MARIA ZLATKOVA: OK. الحضور: شكرا لك. MARIA ZLATKOVA: بالطبع، وشكرا لكم. ذلك مرة أخرى، يدور حول كيفية يتم نقل المعلومات ونماذج الاتصال لنقل المعلومات. TCP / IP. TCP يعني مجرد ناقل الحركة بروتوكول التحكم وIP يشير إلى بروتوكول الإنترنت. ويشير فقط ل يتم تسليم طريقة البيانات. اذا كان لدينا بعض البيانات التي يحتاج إلى تسليمها إلى you-- ذلك يمكنك تقديم طلب للحصول على خادم معين. على سبيل المثال، عندما كنا محاولة الوصول إلى cs50.net، نحن تقديم طلب ل خادم CS50، ونحن نرى أننا نريد للحصول على هذا النوع من المعلومات. وبعد ذلك يتم بناء على هذا البروتوكول لكيفية يتم تسليم هذه المعلومات، خادم يعطي معلومات يعود الينا، العميل. ثم نحن قادرون على عرض المعلومات للصفحة ومن ثم استخدامها. حتى ذلك الحين بروتوكول نقل النص التشعبي هو مجرد بروتوكول آخر أو مجموعة الاتفاقيات التي تعرف كيف متصفح الإنترنت وخادم الويب يجب التواصل. ووضع كل هذا معا، HTTP، مرة أخرى، فقط يعرف كيف أن هذا النص التشعبي تعريف من HTML التي كنا نعمل عليها، كيف ينبغي تسليمها لك و كيف أن البيانات التي يتم تسليمها لكم يحصل لك. وهذا هو السبب، إذا كنت تتذكر الرجال من فئة، كان لدينا الكثير من الطلبات وكان لدينا الكثير من تركيب لهذه الطلبات التي نحن الذهاب إلى يذهب أكثر من الآن. ذلك مرة أخرى، عندما نرسل طلب إلى الخادم، لدينا لتحديد بضعة أشياء. لذلك نحن بحاجة إلى إيجاد نوع طلب اننا وضع. ومرة أخرى، لدينا، على سبيل المثال، GET هو نوع واحد من طريقة أن لدينا في طلبنا. ثم HTTP / 1.1 هو مجرد البروتوكول الذي نستخدمه حاليا. في معظم الوقت، وهذا سوف إلى البروتوكول الذي نستخدمه. حتى إذا كان لديك سؤال من هذا القبيل في مسابقة بك. هذا هو الاتفاقيات ان لدينا حتى الآن. يشير مائل إلى أي نوع من الأشياء التي كنت الطالبة. ثم، مضيفنا هو، على سبيل المثال، في هذا القضية، ونحن نحاول أن يذهب إلى google.com. لذلك هذا هو قيمة للمضيف. هذا هو نوع من الطلب التي يمكن إرسالها. وبعد ذلك نوع من الاستجابة التي يمكن يتم إرسالها مرة أخرى، بناء على هذا البروتوكول، مرة أخرى، HTTP / 1.1. لذلك هذا هو الإصدار HTTP مرة أخرى. 200 OK هو مجرد رمز الحالة. وهذا موافق هو مجرد عبارة على أساس أن قانون الأحوال. وبعد ذلك نوع المحتوى يشير إلى نوع التي يتم إرجاعها لك هذا هو لذلك صفحة على شبكة الإنترنت الذي تتلقاه وأن المتصفح يمكن أن تجعل بعد ذلك. وهذا هو نص / HTML. الحضور: ماذا يعني 1.1؟ MARIA ZLATKOVA: هذا مجرد نسخة of-- أوه، ماذا يعني 1.1؟ هذا هو مجرد نسخة، وHTTP نسخة من البروتوكول الذي نستخدمه. السؤال الكبير. اسئلة اخرى؟ الحضور: هل يمكن أن نلخص نوع المحتوى سريعة الحقيقية؟ MARIA ZLATKOVA: ول ما الخادم. نوع information-- ما هو كان نوع المحتوى الأسئلة. بحيث كان نوع المعلومات التي ستحصل عليها من الخادم، نوع البيانات التي يمكن للمتصفح ثم تقدم الذي تستخدمه. الحضور: هل هذا ما هذه بروتوكول أقول لك أن تفعل؟ MARIA ZLATKOVA: عذرا؟ الحضور: هل هذا ما يقوله البروتوكول؟ MARIA ZLATKOVA: إن protocol-- الحضور: --ماذا لل نوع المحتوى هو أو what-- MARIA ZLATKOVA: ويستند هذا البروتوكول on-- ما هو البروتوكول أقول لك؟ هذا هو مجرد وسيلة أن هذه المعلومات تم تسليمها لك استنادا على أي نوع من البروتوكول وقد حصلت هذه المعلومات سلمت إليك. هل هذا معقول نوعا من؟ HANNAH بلومبرج: أنت يمكن التفكير في البروتوكول كما a-- أعتقد أستاذ وصف مالان ذلك في الصف كنوع من مثل a-- انها مثل أي ما يعادل المصافحة الإنسان. أقول، مثل، مهلا، أنا الطلب وI معرفة كيفية التعامل مع HTTP الإصدار 1.1. ثم يقول الخادم، أوه، حسنا، I-- وكلاهما موجود. أعرف أيضا كيفية التعامل مع HTTP / 1.1. وانا ذاهب لإعطاء إجراء نسخ بعض المحتويات. في هذه الحالة، فإنه يجري أن تكون من نوع نص / HTML. حتى انها نوع من مجرد وسيلة منهم لcommunicating-- MARIA ZLATKOVA: انها مجرد مؤكدا أن كنت كل من التالية هي نفسها بروتوكول وأن كلا العميل وserver-- ذلك المتصفح وserver-- نوع من معرفة ما كنت الحديث عن وديك اتفاقية لتمرير في البيانات. الجمهور: هكذا نوع المحتوى part-- النص نوع المحتوى / html-- هذا هو جزء منفصل من نفس الرسالة؟ أم هو جزء من دعنا نقول، 200؟ هل نقول لهم ان 200 أو is-- MARIA ZLATKOVA: 200 يقول كل شيء ذهب موافق. ثم نوع المحتوى هو نوع من جزء منفصل من نفس الرسالة، وقوله الشيء الذي أنا عاد هذا النوع من النص / HTML. انها مجرد إعطاء مزيد من المعلومات. هل لديك أي شيء للإضافة؟ حسنا. أي أسئلة أخرى حول هذا؟ رائع. وحتى بعض الحالات الأخرى التي HTTP يمكن أن نحصل بالإضافة إلى 200 OK، تلك التي شهدناها ربما ربما الكثير هم 403 و 404. حتى 404، إذا كنت تحاول وصول شيء لا وجود له. هكذا على سبيل المثال، في الخاص psets CS50 المالية، إذا كنت قد تم تقديم quote.html وأنت لم يكن لديك هذا الملف، ولكن بدلا من ذلك كان لديك quote.php، أن من شأنه أن يؤدي في 404 لم يتم العثور على لأنه قد لا وجود الملف. ل403 المحرمة، التي يشير إلى الأذونات. إذا كان الأمر كذلك بعض الملفات غير قابلة للقراءة من قبل العالم، قد تحصل على 403 عاد. البعض الآخر التي قد get-- 301، انتقل بشكل دائم. 302، وجدت. 304، التعديل؛ 400، طلب غير صحيح؛ وخطأ خادم داخلي ثم ل 500 و 503، الخدمة غير متوفرة. نعم فعلا. الحضور: هل كنا نتوقع أن حفظ كل هذه الأوضاع؟ MARIA ZLATKOVA: كنت أود أن يكون لهم على ورقة الغش الخاص بك. [ضحك] الحضور: هل كنا نتوقع أن تعرف ما يطلق كل واحد؟ MARIA ZLATKOVA: هل هم؟ HANNAH بلومبرج: لتلك التي كانت لدينا تشغيل into-- ذلك السؤال was-- MARIA ZLATKOVA: هل كانوا يتوقعون أن أعرف ما كل واحد من هذه الحالة قد تكون نجمت رموز من قبل؟ حتى لتلك التي استخدمناها واجهت، وأود أن أقول، نعم. لذلك رأينا بالتأكيد 200 OK وحاضر في psets. رأيناه 403، 404. لبعضها الآخر؟ HANNAH بلومبرج: أود يقول 500 يبدو لعبة عادلة. MARIA ZLATKOVA: 500، نعم. HANNAH بلومبرج: نعم. يكون مجرد شعور عام ما يسبب لهم. وأيضا فقط من خلال هذه أسماء، يمكنك نوع من مثل جعل تكهنا لماذا تسبب لهم في الواقع. على سبيل المثال، نقل بشكل دائم، وربما تم نقل الملف بشكل دائم. الحضور: ولكن على سابقة الامتحان، كان هناك ذلك كيف تتوقعون منا أن الإجابة على هذا؟ HANNAH بلومبرج: هذا كان يستحق نقطة الصفر. السؤال عن 418 على إبريق الشاي من الناحية الفنية حالة HTTP، ولكنه كان يستحق نقطة الصفر. ومن الواضح أن كنت لا من المتوقع أن نعرفهم. الجمهور: هل هو حقيقي؟ HANNAH بلومبرج: إنها حقيقية واحد، ولكن هذا لا يعني أي شيء. انها مجرد مزحة. الناس الإنترنت مضحكة. MARIA ZLATKOVA: الأسئلة الكبرى، والرجال. اي أسئلة أخرى؟ الحضور: ما هو خطأ خادم داخلي؟ MARIA ZLATKOVA: الداخلية خطأ في الخادم فقط يعني أن كنت قد تعرضت ل غير قادر على الاتصال مع الخادم لسبب ما. حتى انها ليست بالضرورة شيء له علاقة مع العميل أو شيء من هذا القبيل. أنا لا أعرف أي مثال محدد أننا قد ذهبت الى شرح، ولكن نعم. HANNAH بلومبرج: بالتأكيد. هكذا على سبيل المثال، مثل دعنا أقول كنت تعمل على المزج وتوجه خادم Google أسفل لبعض السبب، انقطاع التيار الكهربائي، دعنا نقول. ومن شأن ذلك أن يكون الخادم الداخلي خطأ أو نوعا of-- مثلك لن تحصل على رد. MARIA ZLATKOVA: نعم. انها فقط عندما كنت غير قادر على الاتصال مع الخادم لسبب ما ل من هو نزول أو سبب آخر. حتى القفز الى PHP. PHP، على عكس HTML، هو لغة برمجة. وبدأنا استخدامه لأنه مفيدة جدا لتطوير الشبكة. نحن استخدم لأول مرة في CS50 المالية. ويساعد في الأساس لنا تحقيق معا هذه العلامات، وتصميم، وكيف يمكننا فعلا استخدام المعلومات لعرض الأشياء على صفحة ويب. لذلك PHP نفسها يعني PHP النص التشعبي قبل المعالج، لذلك هو backnorym العودية في حد ذاته. والعلامات فتح لPHP نحن اليسار واليمين السهام مع علامات استفهام وبي. لذلك رأينا بالفعل حفنة من ذلك. الآن، نحن ذاهبون لمجرد يذهب أكثر بعض الأشياء الأساسية حول هذا الموضوع. حتى مع PHP، المتغير أسماء تبدأ مع علامة الدولار. نحن لم تحدد، مرة أخرى، اكتب متغير بعد الآن. مثلما فعلنا مع C، نحن لسنا بحاجة للقيام بذلك. يمكننا القيام به حفنة من مختلف الاشياء مع المتغيرات. يمكننا وضعها معا بواسطة وصل منهم مع تدوين نقطة، والتي لم نتمكن من القيام به في C مرة أخرى. مرة أخرى، لدينا أكثر قليلا براعة مع PHP من حيث المتغيرات. مرة أخرى، ليس لدينا وظيفة الرئيسية. ويتم تفسير PHP بدلا من جمعها، هكذا فقط كيف أننا لم تجعل لملفات C، نحن لا يجب أن نفعل ذلك لPHP. ولكن بدلا من ذلك، الطريقة التي اللغة يدار من قبل نفسه، يتم تفسيرها. ثم كتبته فضفاضة يعني فقط أننا لم يكن لديك لتحديد متغير نوع وأنواع متغير يفهم في وقت التشغيل. الحضور: ولكن ماذا فعلت لك يعني سلسلة نقطة؟ MARIA ZLATKOVA: بالتأكيد. عندما نريد أن نضع الأمور together-- حتى لو كان لدينا بعض متغير كان قيمة 3 وكان لدينا آخر المتغير الذي كان قيمة السلسلة، يمكننا أن نضع المتغيرات معا عن طريق وضع نقطة بينهما ووصل لهم. أو يمكننا أن خلق ودعا اسم متغير ووضعها معا وصل سلسلتين. حتى لو كان لدينا سلسلة في ضعف ونقلت وضعنا نقطة بعد ذلك، ومن ثم كان لدينا سلسلة أخرى، أن من شأنه أن يخلق سلسلة تماما. الحضور: OK. MARIA لاتفيا: كان ذلك واضحا؟ الجمهور: نعم. MARIA ZLATKOVA: OK. نعم فعلا. الحضور: عندما تقول تفسير بدلا من جمعها، تتحدث عنك لا تحتاج إلى أن تكون محددة كما هو الحال عندما يتعلق الأمر PHP مقابل C؟ MARIA ZLATKOVA: عندما نقول تفسير بدلا من جمعها، ماذا نعني؟ وهذا يعني أننا لسنا في حاجة الملفات القابلة للتنفيذ لتشغيل PHP. وهذا يعني أنه يعمل لأنه غني. هل هذا منطقي؟ اكثر قليلا. HANNAH بلومبرج: إذن أنت يمكن ان يخطر مترجم كما برنامج آخر غير مسؤولة للذهاب سطرا سطرا من خلال PHP وتنفيذ فعلا، في مقابل لتجميع كل شيء إلى أسفل إلى ثنائي. وهذا لا يعني في الواقع شيئا حول كيفية محددة يجب أن نكون. ما زلنا بحاجة إلى أن تكون دقيقة، ولا ننسى منقوطة الخاص بك، وتأكد لديك علامة الدولار الخاص بك، وأشياء من هذا القبيل. سؤال جيد. MARIA ZLATKOVA: نعم. لذلك سطرا سطرا، كما تعارض مع الملفات C، علينا أن نجعل المباراة النهائية كله قبل أن نتمكن من تشغيل فعلا. هذا هو الفرق الرئيسي. ولكن مرة أخرى، لا يمكننا تكون حقا أقل تحديدا. حتى المصفوفات في PHP تمثل في الواقع خريطة أمر. من القيم صفائف المنتسبين إلى المفاتيح. بطريقتين أن تعلن ل مجموعة، بناء على هذا النحو، يمكننا أن نكون أكثر وضوحا في قوله لدينا مجموعة ولدينا هذا key1 أن يعين هذا value1 إلى، key2 أن خرائط و value2. أو نستطيع أن مجرد إنشاء صفيف الذي يحتوي على القيم نفسها ثم مفاتيح فهم بطريقة ما. أي أسئلة حول هذا؟ الحضور: ما من شأنه مفاتيح تكون في المثال الثاني؟ 0، 1، 2، 3؟ MARIA ZLATKOVA: على سبيل المثال، انها مجرد مفاتيح في هذا لا بالضرورة تحدث فرقا. انهم فقط تحديد كيف يمكنك استخدام القيم داخل منه. حتى إذا كان لدينا foreach حلقة في PHP التي من شأنها أن تسمح لنا للذهاب من خلال كل القيم، يمكننا أن نذهب من خلال كل القيم، حتى لو كان لدينا أو لم تحدد مفتاح معين داخل الموقع جملة السابق. بل وحتى مع هذا النوع من المصفوفة، وما زال بإمكاننا لدينا حلقة foreach الذي يمر عبر كل القيم في مفتاح في مجموعة. حتى بناء الجملة من foreach حلقة، ونحن نبدأ مع مجموعة. هذا المتغير $ آر هو مجموعة الفعلية لدينا أن حددنا في الشريحة السابقة كقيمة أن يذهب حرفيا من خلال كل من القيم، بغض النظر عما إذا كان لدينا مفتاح أم لا. وبعد ذلك يمكننا أن نفعل شيئا مع قيمة داخل حلقة foreach. ذلك مرة أخرى، إذا كان لدينا مجموعة مثل هذا هنا created-- لذلك لدينا مفتاح فو وقيمة بار، مفتاح الباز وقيمة qux-- فإننا يمكن أن يكون حلقة foreach أن يذهب من خلال مجموعة كقيمة أساسية ثم تفعل شيئا مع المفتاح و / أو قيمة. لكننا لا بالضرورة دائما يكون لديك foreach الحلقات التي يذهب من خلال مجموعة كما خريطة الرئيسية لقيمة. يمكننا أن نذهب من خلال foreach مجموعة حلقة كقيمة. HANNAH بلومبرج: وأعتقد كان to-- سؤالك، ما هو مؤشر ضمني؟ الحضور: كندة. MARIA ZLATKOVA: أوه. HANNAH بلومبرج: نعم، نعم. ذلك أساسا، إذا لم تقم بتحديد مفتاح، انها ستكون 01. MARIA ZLATKOVA: نعم. كما هو الحال مع C، انها الصفر فهرستها إذا لم تقم بتحديد مفتاح. الحضور: آسف. هل يمكن أن حاول التكلم قليلا بصوت أعلى؟ أواجه قليلا من مشكلة سماع كل شيء. MARIA ZLATKOVA: أنا آسف لذلك. نعم بالطبع. لذلك لا تريد لي أن يذهب أكثر من ذلك مرة أخرى؟ أو هو this-- الحضور: لذلك على slide-- السابقة إذا هل يمكن أن تذهب لتوه لثانية واحدة. MARIA ZLATKOVA: بالطبع، آسف. الحضور: حتى الثانية مجموعة هنا لا يبدو أن لديها قيمة للمفتاح، نوعا ما [؟ العلاقة السببية. ؟] MARIA ZLATKOVA: الحق، الحق. الحضور: فكيف يفعل ذلك عمل عندما تقول انها كل شيء أو لا شيء. بالنسبة لي، الذي يبدو وكأنه ا [؟ فو؟] بالفعل. MARIA ZLATKOVA: نعم، نعم. ذلك مرة أخرى، وهذا هو خريطة أمر في هذا المعنى أن يفهم من هناك، على سبيل المثال، والفهارس هنا يمكن أن تفهم على أنها 0، 1، 2، 3. مرة أخرى، هذا هو وجود تلك فهارس هي معادلا ل وجود مفاتيح تعيينها على القيم. حتى إذا كان لدينا مفتاح 0-- آسف. HANNAH بلومبرج: لا، هناك الطباشير هنا. انها فعلا لطيف حقا. MARIA ZLATKOVA: هذا أمر عظيم. حسنا. ذلك مرة أخرى، سوف يكون $ آر 0 المفتاح لقيمة 1. 0 سيكون المفتاح لقيمة 1. الحضور: أنا آسف. انها غير مرئية. HANNAH بلومبرج: حسنا، فما باللك. كان الطباشير فكرة سيئة. أنا أعتبر الظهر. يمكنك التفكير في مفاتيح ك 0 الخرائط إلى القيمة 1. MARIA ZLATKOVA: نعم. لذلك هذا هو 0، وهذا هو 1، 2، 3. يمكن أن تكون هذه المفاتيح الخاصة بك. يمكنك أن تفكر منهم as-- نعم. وذلك بدلا من الاضطرار مفاتيح واضحة، وانهم نوع من تفهم على أنها المؤشرات تبدأ في 0. لم الطباشير لا تساعد. نعم. الحضور: لحلقة foreach، إذا أردنا لعرض كقيمة، أنه سيكون مجرد تلقائيا مؤشر ل0؟ MARIA ZLATKOVA: نعم. فإنه تذهب من خلال كل من القيم. الحضور: (غير مسموع) كما 0 أو التي من شأنها أن تفعل فقط 0؟ MARIA ZLATKOVA: عملتم لنقول كما علامة الدولار ثم بعض اسم متغير، قيمة. الحضور: (غير مسموع). MARIA ZLATKOVA: عذرا؟ الحضور: عفوا، أنا فقط أحاول أن أتذكر. كيف يمكنك أن تفعل ذلك إذا كنت تستطيع ان تفعل ذلك تلقائيا الفهرسة فقط 0 من؟ MARIA ZLATKOVA: إذن كيف يمكنك أن تفعل ذلك إذا لم يكن لديك أسماء رئيسية محددة؟ الجمهور: نعم. MARIA ZLATKOVA: أنت أردت فقط define-- نقول فقط نفسك بعض الاسم. لذلك ربما في psets الخاص بك، يا رفاق تذكر $ صف من الصفوف foreach $، أنشأنا بنفسي هذا الصف قائلا $ نريد أن نذهب من خلال صف واحد كما $ الصفوف. على الرغم من أننا لم يكن لدينا هذا $ صريح صفوف محددة، يمكننا أن اذهبوا و أقول هذا يمكن أن يكون المفتاح لدينا، واذهبوا من خلال كل من القيم. الجمهور: ذلك هو قيمة متغير جديد نحن بصدد إنشاء لتخزين (غير مسموع)؟ MARIA ZLATKOVA: حتى انها ليست بطبيعته متغير جديد. انها المتغير الذي يشير إلى داخل المصفوفة لكل واحد منهم. HANNAH بلومبرج: انها اسم متغير جديد. MARIA ZLATKOVA: نعم، انها اسم المتغير الجديد، ولكنها ليست inherently-- نعم. انها مجرد متغير جديد يمكنك أن تفعل ذلك. هكذا فقط كيف فعلنا $ صف واحد كما $ الصفوف، الصفوف كان اسم المتغير الجديد الذي نحن يمكن أن تخلق في حلقة foreach لدينا. لم يكن لديك لpreexist قبل ذلك. الحضور: هل يمكن أن تذهب من خلال المنطق لكل منهما، باستخدام المثال هناك؟ MARIA ZLATKOVA: MHM. أوه، آسف. وهنا المثال. بالتأكيد. لذلك لكل array-- ذلك وهذا يعني الذهاب إلى هذه المجموعة كمفتاح value-- أن يحدث للذهاب من خلال هذه المجموعة ويذهب أولا والحصول فو، و فو الرئيسي وشريط القيمة. ثم في اليوم الثاني التكرار من أجل حلقة، انها سوف تذهب من خلال واتخاذ والباز الرئيسي وqux قيمة. وبعد ذلك يمكنك أن تفعل شيئا مع أي منهما أو كليهما. الحضور: لذا فإن الفكرة وراء وجود نقطة أساسية إلى القيمة، ماذا في نهاية المطاف الوصول؟ MARIA ZLATKOVA: ما هي الفكرة وجود لافتا الرئيسية لقيمة؟ انها مجرد اتفاقية أخرى، وآخر طريق الذهاب من خلال مجموعة والتمكن من الوصول إلى أي من مفتاح أو قيمة أو كليهما واستخدامها. الحضور: ما هو دور ل من أجل أن foreach يعمل في؟ حتى لو كنا لإضافة عناصر المصفوفة في وقت لاحق، فإن تلك تكون أول من ودعا في مجموعة foreach، أو قد يكون في وقت لاحق؟ MARIA ZLATKOVA: فما هي النظام أن foreach حلقة يمر صفيف في؟ وغني عن طريق أولا عنصر إلى عنصر آخر، إلى العنصر أضاف الماضي. إذا قمت بإضافة العناصر في وقت لاحق، يفعلون أن accessed-- العناصر الأولى أن يمكن الوصول إليها كأول عناصر المصفوفة، وبعد ذلك كنت أذهب من خلال كل من عناصر كنوع من ordered-- ليس أمر، ولكن الطريقة التي كانت قد وضعت في مجموعة. الحضور: عناصر جديدة وهكذا وأضاف في وقت لاحق؟ حتى انهم added-- أنها سوف تكون تلك الأخيرة في [؟ تكرار. ؟] MARIA ZLATKOVA: عناصر جديدة can-- في الأساس، عند إضافة عناصر جديدة، وأضافوا إلى نهاية المصفوفة؟ الجمهور: نعم. MARIA ZLATKOVA: أعتقد ذلك. نعم فعلا. وبعد ذلك مع حلقة foreach الخاص بك، بعد أن كنت قد وأضاف عناصر جديدة وتذهب من خلالها، العناصر الجديدة من شأنه يكون accessed-- العنصر الجديد، لو كان وأضاف آخر، سيتم الوصول إليه آخر. الحضور: هل يمكن أن تعطي مجرد مثال من شيء من شأنه أن [غير مسموع] مع شيء مع قيمة مثل (غير مسموع) أو قيمة، مثل كيف كنت تهيئة ذلك؟ MARIA ZLATKOVA: بالتأكيد. يمكن أن أعطي مثالا لما سنفعله مع القيمة؟ فما يا رفاق قد يكون على دراية هو أننا قد ذهبت من خلال مجموعة وطبع في الأساس كل عنصر من العناصر، على سبيل المثال، كجزء من قائمة مرتبة أو شيء من هذا. هل هذا يعقل أم نريد to-- الحضور: هل يمكننا طباعة هذه القيم من؟ MARIA ZLATKOVA: نعم، يمكننا طباعة ثم أساسا $ قيمة لأنه في أن قيمة محددة، وسنكون طباعة قيمة داخل منه. حتى لو كنا في أول التكرار لدينا من ذلك، ونحن المطبوعة قيمة $، نحن سيتم طباعة بار. الحضور: هل هناك أيضا ل الحلقات في PHP أو مجرد حلقات foreach؟ MARIA ZLATKOVA: هناك أيضا للحلقات في PHP. ومنطقهم هو الغالب نفس ما كنت قد استخدمت ل. الحضور: لذلك قيمته فارغة. MARIA ZLATKOVA: انها مثل نفسه. نعم. الحضور: أنا مجرد الذهاب الى نسأل. لذلك عندما يعلن مجموعة، لا تحتاج لمعرفة ما حجم انه سيكون ل أن يكون، وهو ما يعني أنه يمكنك فقط إضافة ويسلب عناصر (غير مسموع). MARIA ZLATKOVA: نعم. اجل. بالضبط. عندما نعلن صفيف، نحن لا تحتاج أن تقول ما حجم هو عليه، حتى نتمكن من مجرد إضافة عناصر على ذلك في وقت لاحق كذلك. المزيد من الأسئلة؟ حتى يصل PHP و HTML معا، ما قمنا seen-- جيدا، على سبيل المثال، في هذا المثال، لدينا شكل HTML الذي يحتوي على حقل الإدخال. وحقل الإدخال هو اسم عادل ومن ثم فإنه يحتوي على زر إرسال. وعند الضغط على إرسال زر، في ملف hello.php لدينا، لأن أسلوب للنموذج هو الحصول عليها، يمكننا الوصول إلى كل ما هو في اسم قبل هذا يحصل متغير عالمي is-- بناء الجملة لأنها $ _GET. وبعد ذلك يمكننا الوصول مهما كانت إدخال المستخدم داخل هذا النموذج لاسم عن طريق تحديد اسم هذا الحقل. أي أسئلة أخرى أو أي أسئلة حول هذا مثال محدد؟ الحضور: أين هي PHP؟ MARIA ZLATKOVA: هنا. لذلك هذا هو علامة فتح لدينا لPHP. الحضور: أوه، الحق. MARIA ZLATKOVA: نعم. HANNAH بلومبرج: و= هو اختصار لذلك هو PHP ومجرد صدى. الحضور: أوه. MARIA ZLATKOVA: نعم، آسف. وأرجو أن يكون جعلت ذلك واضحا. HANNAH بلومبرج: طباعة. MARIA ZLATKOVA: انها مجرد وظيفة أن يسمح لنا لطباعة شيء. السؤال الكبير. حتى going-- نعم. الحضور: هل هناك سيكون تماما قليلا من ناحية ترميز PHP و HTML في مسابقة 1؟ MARIA ZLATKOVA: يمكن أن يكون هناك قدر لا بأس به من تفسير من PHP و HTML، وليس بالضرورة مثل كمية كبيرة من الترميز، على الرغم من أنك قد تضطر إلى إرسال بريد حلقة foreach، على الرغم من حلقة for. أي من الحلقات أننا تغطية هنا هو لعبة عادلة. وهذا هو الغالب. HANNAH بلومبرج: سأكون مستعدا. في بنفس الطريقة التي طلبنا لك إرسال مجموعة من وظائف C في مسابقة 0، سأكون على استعداد للقيام نفس الشيء في PHP و JavaScript. MARIA ZLATKOVA: نعم. HANNAH بلومبرج: أود أن أقول وlittle-- كأننا لا سوف تجعلك إرسال بريد HTML ضخمة الصفحة فقط لأن هذا هو قليلا مملة، ولكن قد يكون لديك أجزاء. هذا هو لعبة عادلة تماما. تابع صفحة HTML الصغيرة وعادلة تماما. الحضور: OK. ماذا عن في جافا سكريبت كذلك؟ HANNAH بلومبرج: نعم. لعبة عادلة جافا سكريبت. MARIA ZLATKOVA: نعم. هذا هو لعبة عادلة تماما. HANNAH بلومبرج: أننا سنصل لأنه في مثل 10 دقيقة. MARIA ZLATKOVA: SQL، مرة أخرى، لغة الاستعلام الهيكلية. انها اساسا يسمح لنا لإدارة البيانات في إدارة قواعد البيانات العلائقية نظام. وهذا يعني في الأساس فقط أن لدينا في مكان ما لتخزين بعض البيانات التي كنا قد ترغب في استخدام في موقع على شبكة الانترنت أو في شكل آخر. ومن ثم لدينا للحصول على الاستفسارات المعلومات من قاعدة البيانات الخاصة بنا، أو لادخال المعلومات الواردة فيها. وهناك الكثير من UPDATE ones-- المشترك، INSERT، SELECT و DELETE. وذلك لUPDATE، هذا هو بناء الجملة لتحديث البيانات في قاعدة بيانات. تحديث هذا الجدول يسمى الجدول بالقول SET، فإننا يمكن أن يحدد بعض القيم في جميع الصفوف يساوي شيئا آخر. ولذا فإننا يمكن أيضا تحديد بعض محددة الإدخالات التي نريد تعديلها والتي يمكن أن تكون باستخدام WHERE. ويمكننا تحديد أننا نريد فقط ل تعديل بعض الصفوف حيث المنزل ل، إذا كان لدينا جدول للطلاب وكان جميع الطلاب المنزل، ولذا فإننا سوف تعديل بعض القيم فقط حيث يساوي منزل كورير، على سبيل المثال. لINSERT، يمكننا إدراج بعض القيم في جدول. حتى INSERT INTO الجدول، ثم القيم، ثم بين قوسين، نحدده القيم التي تريد إدراج. حتى INSERT INTO الجدول، وCOL1 col2، والقيمة هي VAL1 وVAL2. لذلك هذا الأساس إدراج صف جديد في جدول يحتوي على القيم 1 و 2 تحت الأعمدة 1 و 2. ثم نحن في طريقنا للذهاب أكثر مثال سريع لكيفية تبدو هذه كما هو الحال في قاعدة البيانات الخاصة بنا قليلا. ولكن هذا الاستعلام النهائي الذي I أعتقد أننا في طريقنا للذهاب أكثر، SELECT، فإنه يسمح لنا فقط لتحديد البيانات من جدول لربما استخدامها بعد ذلك. والطريقة التي نؤدي هذه هي أننا مجرد تخزينه في بعض متغير. ومن ثم يمكننا ربما استخدامه مرة أخرى. حتى نجمة اختيار وسائل تحديد كافة. هذا مجرد اختزال لاختيار جميع. من الجدول WHERE، نحن نبحث لبعض الظروف الخاصة، فأين يساوي العمود شيء ما، على سبيل المثال. إذا أردنا فقط ل حدد كل من الجدول، هذا يختار فقط كل الأعمدة وجميع الصفوف من الجدول. ومن ثم حذفها من الجدول أين عمود يساوي شيئا، هذا يحذف فقط بعض صف من جدول أعمالنا حيث لدينا بعض الظروف الخاصة. في هذه الحالة، فإن الظروف هي العمود يساوي شيئا. حتى مجرد مثال سريع من هذا. اذا كان لدينا هذا الجدول هنا، ونحن أدخله في جدول، هذه القيم، التي من شأنها أن إدراج صف جديد. وإذا كان لدينا لصناعة السيارات في الزيادة، وهذا من شأنه مجرد زيادة ID لدينا 0-1 ل 2 إذا اخترنا كل من الطلاب، وذلك فقط بإرجاع كافة المجالات وكافة الصفوف. حيث السنة أكبر من أو يساوي 2016، التي من شأنها أن تعود فقط هانا ونفسي. ثم إذا اخترنا فقط عام معرف والسنة من الطلاب حيث كان المنزل هو كابوت البيت، أن سيكون، مرة أخرى، والعودة هانا ونفسي. ثم إذا حذفنا من الطلاب حيث اسم يساوي روب، التي من شأنها أن حذف الصف بأكمله. ثم إذا وضعنا اسم والطلاب UPDATE اسم SET يساوي Daven WHERE المنزل يساوي كابوت البيت، وهذا سبيلنا للذهاب الى تلك الصفوف ومن ثم تحديث الاسم. ثم بضعة أنواع البيانات SQL هي CHAR، VARCHAR، INT، وتطفو. هذه هي لعبة عادلة. وأود أن تذهب من جديد وتأكد من أنك تعرف ويكون لهم على ورقة الغش الخاص بك، ما كل من تلك الأحرف وقد استخدمت ل، ما كنت استخدمها على psets الخاص بك، وتأكد من أنك على دراية و مريحة مع وجود لاختيار من أنواع بيانات مختلفة في PSET الخاص بك. نعم فعلا. الحضور: ما تم تخزين هذا الجدول؟ نعم، حيث يتم تخزين هذا الجدول؟ MARIA ZLATKOVA: حسنا، في الوقت الراهن، ليست تخزينه. على أي حال، حيث يتم تخزين هذا الجدول؟ ولكن يمكن تخزينها في قاعدة بيانات SQL. الحضور: وأين هو قاعدة بيانات SQL؟ في الكمبيوتر، الانترنت في مكان ما، والخادم؟ MARIA ZLATKOVA: إنه يمكن أن يكون عدد من الاشياء المختلفة. HANNAH بلومبرج: لقد تفاعل مع جداول SQL في الغالب مع بريس. ولذا فإننا يمكن أن تسأل الخادم لتخزينها بالنسبة لنا. نحن يمكن تخزينها على جهاز الكمبيوتر الخاص بنا. MARIA ZLATKOVA: إنه يعتمد فقط على كيف تريد أن تفعل ذلك لنفسك. لكننا كنا تخزين منهم، كما ذكر هانا، على بريس، الذي هو على الانترنت. ومن ثم الطريقة التي نستخدم بها PHP و SQL، ونحن تخزينه في بعض متغير ما كنا الاستعلام عنه. لذلك إذا أردنا تحديد الكل من التاريخ حيث يساوي USER_ID معرف جلسة، التي من شأنها أن تحديد كافة الصفوف لشخص معين يتم تسجيل في من التاريخ الطاولة وفرزها في الصفوف. وهناك شيء بارد لمعرفته هو أن وظيفة الاستعلام CS50 ل يحمي من علامات حقن SQL. هذا يعني فقط أن يتأكد المدخلات التي يتم إدخالها هو الصحيح وأن الشخص الذي تدخل المدخلات لا تحاول إدخال بعض الخبيثة كود إما إسقاط الجداول لدينا أو حذف كل شيء داخل قاعدة بياناتنا. لمحة سريعة عن نموذج عرض المراقب نموذج، انها مجرد وسيلة لتنظيم والتفكير في التعليمات البرمجية. انها مرة أخرى، وهو نموذج التصميم. ما يعنيه ذلك هو أننا can-- وانها ممارسة جيدة لفصل أجزاء مختلفة من نظامنا وما التحكم في هذه النماذج الثلاثة. لذلك رأينا هو في معظم الأحيان لدينا قوالب، والتخطيط لدينا، والطريقة التي وضعناها كيف تبدو متاحة لدينا. وهذا في الغالب ملفات CSS لدينا وسيلة أن حددنا تصميم الكود، في الأساس. تحكم لدينا هو في الغالب ما كنا نقوم به مع ملفات PHP. ذلك مرة أخرى، والعمل مع المعلومات التي لدينا وتحديد كيف أن يتم استخدام المعلومات، ومن ثم تمرير هذه المعلومات إما على طريقة العرض أو النموذج. والنموذج، والطريقة التي كانت لدينا تم استخدام غير كانت قاعدة البيانات الخاصة بنا، فأين معلوماتنا المخزنة لذلك لديه في مكان ما للعيش فيه، وأي من التعليمات البرمجية التي تتعلق الطريق أن نحصل على تلك المعلومات أو الطريقة التي نقوم بتحديث هذه المعلومات. وذلك في نموذج MVC، HTTP يتم إرسال الطلبات إلى خادم الويب. ثم، ويفسر تحكم الطلب من المستخدم وبعد ذلك بالتحقق من صحة إدخال المستخدم. انها اختياري لدينا وحدة تحكم التواصل مع النموذج، لذلك شيئا مثل قاعدة البيانات الخاصة بنا أو بعض الوظائف الأخرى أن التبديلات المعلومات. ثم أخيرا، وحدة تحكم يمر المعلومات على الرأي حتى أنه يمكن أن يكون أصدرت وما في وسعها أصبح واضحا إلى أي شخص الوصول إلى صفحة الويب. أي أسئلة؟ رائع. ذلك مرة أخرى، والنموذج، وظيفتها، ومرة ​​أخرى، هو استمرار تخزين المعلومات، إدارة وتنظيم البيانات. وما رأيناه حتى الآن هو قاعدة بيانات MySQL وأي ملفات البيانات التي قد تستخدم. عرض، عرض المعلومات ل المستخدم، واجهة المستخدم، أو واجهة المستخدم. والمثال على ذلك هو HTML. ومن ثم قد يكون لدينا الحد الأدنى PHP. لذلك لحلقة التي بالتكرار على البيانات التي يتم طباعتها هو جزء من الرأي، كما بدلا من وحدة تحكم. وبعد ذلك الكثير من الملفات PHP لدينا تندرج في فئة وحدة تحكم. كان يعالج فقط طلبات المستخدمين و يحصل على معلومات من هذا النموذج. القفز الى الوثيقة طراز كائن، وهذا فقط يشير إلى الطريقة HTML وتنظم وثائق. وانهم تنظيمها في شجرة هيكل يحتوي على التسلسل الهرمي. لذلك إذا أردنا الحصول على (غير مسموع) تمثيل وثيقة، يمكننا العمل مع وثيقة، مثل نحن أساسا التعامل مع الأشياء. وجعل هذا قليلا أكثر وضوحا، عندما لدينا الكثير لدينا علامات مختلفة تستجيب لطرق مختلفة في شجرة لدينا. ثم لهذا المثال، ونحن مضمون هذه الوثيقة عقدة البداية. لدينا، إذن، لدينا عقدة HTML الذي يقسم إلى الرأس والجسم. رئيس لديه عنوان وثم العنوان يحتوي مرحبا، العالم. وجسمنا يحتوي فقط مرحبا، العالم كذلك. لذلك أي أسئلة على أي من الأشياء التي غطينا حتى الآن؟ وإذا لم يكن كذلك، سوف هانا تولي مع جافا سكريبت. رائع. HANNAH بلومبرج: OK، بارد. إذا كان أي شيء يأتي مع PHP أو HTML، أو أي من الاشياء ماريا تغطيتها، يمكننا أن نتوقف دائما. نقوم به على نحو أفضل مرة أخرى، ذلك رائع. ومجرد أن أعود بسرعة حقا إلى هذا، اذا نظرتم الى كل امتحان العام الماضي، وهذا يأتي إما: هنا بعض HTML، وجعل هذا المخطط. أو هنا هذا المخطط، وجعل بعض HTML، لذلك بالتأكيد ممارسة ذلك. وبعد ذلك واحدة مضمونة السؤال الذي يمكنك الحصول على حق. رائع. لذلك دعونا نتحدث عن تفعيل جافا وكيف انها قليلا تختلف عن لغات مثل PHP و C، واثنين من لغات رأينا مسبقا. حتى رقم واحد، انها كتبته فضفاضة. هذا هو مثل PHP، ولكن خلافا C. انها لغة تفسيرها. مرة أخرى، وهذا مثل PHP، على عكس C. وهذا سوف تسمح لنا use-- ذلك يعمل بشكل جيد حقا مع صفحات الويب. انها سوف تسمح لنا للتلاعب المحتوى وكيف يبدو وماذا يفعل. ونحن في طريقنا لرؤية قليلا من اياكس. لأنها تتيح لنا التواصل غير متزامن مع خوادم مختلفة والحصول على المعلومات. وهذا هو الشيء الذي حقا يفصل JavaScript من PHP وC غير أنه من جانب العميل. كلا PHP و C عادة من جانب الخادم. بالنسبة للجزء الأكبر و تماما تقريبا ما رأيناه، على الأقل في هذه الفئة، وجافا سكريبت يعمل على العميل، مما يعني أن المتصفح هو في الواقع مسؤولة عن تشغيله. وهذا يعني أننا لا بحاجة إلى التفاعل مع الخادم. ذلك يعني أنه يمكن أن يكون أسرع كثيرا لأنه في الواقع مجرد انها كروم، انها سفاري، انها فايرفوكس، مهما كنت استخدام في الواقع تشغيل جافا سكريبت. الحضور: ماذا المتزامن يعني؟ HANNAH بلومبرج: آه، ما يعني بشكل غير متزامن؟ السؤال الكبير. means-- بشكل غير متزامن كذلك، فإن المحتوى الذي نستخدمها هي، OK، ونحن يتم إنشاء صفحة على شبكة الإنترنت ونحن بحاجة للحصول على بعض المعلومات. حتى مع المثال من المزج، بعض المعلومات التي قد نرغب غير عناوين المقالات. الآن، نحن could-- خيار واحد هو أن تفعل ذلك بشكل متزامن وهذا يعني دعونا وقف، الذهاب الحصول على المادة، الحصول على الجزء الخلفي من المادة، ومن ثم تقدم، لكن ذلك سيكون بطيئا حقا. ومن شأن ذلك أن يكون للمستخدم تجربة سيئة لأنك لن يكون مجرد الجلوس هناك في انتظار شيء ما للرد. يعني أننا غير متزامن سوف الاستمرار في الذهاب عن أعمالنا، تقديم الصفحة، و سنرسل قبالة الطلب وهذا النوع من الذهاب الى يحدث في الخلفية. أعتقد أننا استخدام المثال في محاضرة الدعوة روب وقال: مهلا، يمكنك أن تبحث هذا الأمر بالنسبة لي والحصول يعود لي، بدلا من مجرد لي الانتظار على الهاتف. ذلك يعني بشكل غير متزامن يحدث في الخلفية بعيدا عنا بالتوازي. السؤال الكبير. أي شيء آخر؟ رائعة. ونحن سوف تقفز أكثر الكثير في طلبات متزامنة مع اياكس. الحضور: هل JavaScript-- أين ان تسقط مع نموذج للرؤية وحدة تحكم؟ HANNAH بلومبرج: السؤال الكبير. أين سقوط جافا سكريبت مع نموذج للرؤية وحدة تحكم؟ جلالة الملك. واعتقد انه يمكن fall-- لذلك نحن لا عادة أحب أن إسحق أنه في ذلك نموذج، ولكن أعتقد أن أقول، OK، لذلك جافا سكريبت في الواقع هو الذهاب الى سماح لنا لجمع البيانات، تفسير البيانات، فعلا أشياء ذات مغزى مع البيانات. وبهذه الطريقة، فمن تحكم تشبه جدا. لكنه سيحتاج أيضا للسماح لنا عرض الأشياء والأمور الطباعة. وبهذه الطريقة، فمن جدا-view هل أعجبتك. نعم. لذلك نوع من مثل PHP في حيث يمكن أن يكون نوع من الاثنين معا. سؤال جيد. أي شيء آخر؟ كل الحق، رهيبة. تتحرك على طول الحق. لذلك دعونا نرى مثالا من كيف يمكننا استخدام الجافا سكربت في أحد البرامج على شبكة الانترنت. ولذا فإنني سوف تنظر في هذا index.html و مع حفنة من HTML. والشيء أريدك التركيز على هذا الوسم النصي. وهذا يقول: OK، أريد أن أشغل بعض جافا سكريبت وهنا هو المكان الذي يعيش فيه. أنه يعيش في hello.js. وكثيرا مثل CSS، استطعنا وضع جافا سكريبت داخل HTML. لماذا قد نريد أن نفصل بها؟ نعم. الحضور: أسهل للكتابة؟ HANNAH بلومبرج: نعم. انها أسهل للاستخدام في جميع أنحاء صفحات الويب المختلفة. إنها تحافظ الأمور أكثر نظافة. انها مجرد الممارسة الجيدة. رائع. اجابة جيدة. جيد جدا، لذلك هذا هو الذهاب أن تكون index.html و لدينا. ثم إلى هنا هو لدينا ملف جافا سكريبت الصغير للغاية. وكل ما يقوله هو في حالة تأهب مرحبا، العالم. فما يحدث هو عندما هذه الصفحة renders-- حتى إذا ذهبت إلى أي موقع هذا is-- كل ما سيحدث وانها سوف يقولون، حسنا، أنا الذهاب لتشغيل هذا شفرة جافا سكريبت. وهذه شفرة جافا سكريبت يقول فقط في حالة تأهب مرحبا، العالم. لذلك أنا ذاهب للحصول على هذا ودية القليل المنبثقة. رائع؟ هذا هو نوع من مثل لدينا أولا جدا جافا سكريبت البرنامج، لدينا مرحبا، العالم. دعونا ننظر أكثر قليلا حول ما بناء جملة جافا سكريبت يبدو. وعلى وجه التحديد، دعونا نقارن ذلك ل C وPHP، الذي رأيناه من قبل. في جافا سكريبت، ونحن في طريقنا ل فار، واسم المتغير، ومن ثم القيمة الفعلية لها. ونحن لم تحدد نوع، فقط في مثل PHP، ولكن خلافا للغاية في C. هكذا على سبيل المثال، إذا أردنا لتخزين قيمة 50، في C، فإننا يجب أن أقول، مهلا، C، أريد صحيح، انا ذاهب الى نسميها ط، وقيمته 50. في PHP، انها أسهل قليلا. نقول، مهلا، أريد متغير دعوت وقيمتها 50. على نحو مماثل للغاية، في جافا سكريبت، ونحن أقول مهلا، أريد متغير يسمى ط، قيمتها 50. في كل مرة لاحقة أن أستعمل ط، ولست بحاجة لكتابة فار. انها مجرد أنني منذ ذلك الحين فصاعدا. وبنفس الطريقة، في C، حيث مرة واحدة ونحن نقول الباحث ط، نحن فقط استخدام ط. رائع؟ حسنا. الانتقال إلى الحلقات، لحسن الحظ، هذه تقريبا تبدو exactly-- اعتقد انهم بالضبط نفس ما الحلقات تسير لتبدو وكأنها في شيء من هذا القبيل C حيث لديك للحلقة وستكون لدينا ثلاثة parts-- والتهيئة، شرط، والتحديث. حلقة في حين، يبدو بالضبط نفس. نحن فقط إعطائها الشرط. وافعل حين حلقة، مرة أخرى، بالضبط نفس الشيء. اعطيناها شرط. دعنا نقول أردت أن تكرار over-- أردت أن تفعل شيئا خمس مرات. في C، يمكننا كتابة لتهيئة ط يساوي 0. أنا أقل من 5، ط ++. الفرق الوحيد، في جافا سكريبت، بدلا من أن تقول كثافة العمليات ط يساوي 0، نقول فار ط يساوي 0. جميل. هذا هو الفرق الوحيد. أي أسئلة عن أي من ذلك؟ نعم فعلا. الحضور: حتى في PHP، هو نفسه شيء ما عدا ولكن مثل متغير؟ أو كان ذلك مثالا فار؟ HANNAH بلومبرج: نعم. حتى في PHP، انها تسير لتكون علامة الدولار. لذلك سيكون ل$ ط متساوين 0 $ ط أقل من 5، $ ط ++. السؤال الكبير. الآن دعونا نتحدث عن الإعلانات ظيفة. في C، عندما أعلنا وظيفة، أعطينا اسم وأعطينا بعض المعلمات. وفي البداية، كتبنا نوع. في جافا سكريبت، كل ما عليك القيام به هو إرسال وظيفة الكلمة التي يقول: مهلا، جافا سكريبت، أنا على وشك أن تحديد وظيفة. في هذه الحالة، لديه اسم المبلغ. ويستغرق حجتين، x و y. لاحظ أننا لا يهمني حول أنواع x و y. وتماما مثل C، لدينا هذه العودة الكلمة، حتى نتمكن من فعل شيء مثل عودة x و y. والآن بعد أن نكون قد كتبت هذا أولا وظيفة، يمكننا استخدام المبلغ في أي مكان. وهذا شيء طيب تماما. شيء واحد بارد حقا حول جافا سكريبت هذا هو جدا خلافا C هذا هو وظائف يمكن أن يعامل مثل القيم. حتى نتمكن من فعل شيء مثل هنا حيث أعتقد أنني تغطية هذا up-- I التستر مجموع فار part-- وقلنا فقط وظيفة س ص يساوي عودة X زائد ذ. هذا هو ما يمكن أن يسمى وظيفة غير معروفة. انها وظيفة من دون اسم. في حين يقول هذا وظيفة خلاصة القول، كذا وكذا وكذا، هذا القول مجرد وظيفة. ولكن الآن على الرغم من ولدي هذه وظيفة مجهول، أن وظيفة هو في الحقيقة مجرد قيمة. يمكننا التعامل معها مثل قيمة. حتى نتمكن من حفظه في متغير نفسه الطريقة التي يمكن تخزين 50 في متغير. لذا يمكننا القول، OK، أريد متغير، انه دعا المبلغ، وذلك هو هذه الوظيفة. حتى هذين الأمرين هي في الواقع تنوي القيام به بالضبط نفس الشيء، لكن بناء الجملة قليلا ويختلف نوع من مذكرة المرح. نعم. الحضور: لذلك يمكن أن نطلق عليه الوظيفة التي كان مجهول قائلا: بين قوسين مبلغ 2، 5؟ HANNAH بلومبرج: نعم. يمكنك استدعاء هذا المجهول وظيفة في نفس الطريق. كنت ستفعل مبلغ (2، 5) ؛. ومن شأن ذلك أن يكون على ما يرام تماما. إذا لم أفعل يساوي مبلغ فار وظيفة، إذا كنت فقط حذف this-- وأنا أعلم أنه في يدي، لكن أدعي أنني حذف this-- ثم هو نوع من ذهب أن وظيفة فقط. أنت لا يمكن أبدا استخدامها مرة أخرى ل لم يكن لديك اسم لذلك. من الصعب أن أشير إلى شيء كنت لا تعرف ما للاتصال. سؤال جيد. نعم. الحضور: هل لك أن ترجع المبلغ في أماكن أخرى مع قيمة x بالإضافة إلى ذ؟ HANNAH بلومبرج: هل لك المبلغ المرجعية في أماكن أخرى مع قيمة x بالإضافة إلى ذ؟ أنا لست متأكدا تماما ما تعنيه. الحضور: حتى ماضيك شبه مجهول الوظيفة مبلغ يساوي هذا وظيفة مجهول، لذلك المبلغ الآن متغير أنك can-- HANNAH بلومبرج: الحق. لذلك المبلغ هو متغير، لكنه actually-- لذلك المبلغ هو متغير الذي القيمة هي وظيفة. لذلك هو وظيفة، وهو نوع من شيء غريب التفاف رأسك حول منذ كنا لعب مع C وأنت لا تستطيع أن تفعل ذلك في C. ولكن الآن يمكن أن نطلق على خلاصة بنفس الطريقة يمكن أن نسميه المبلغ هنا. الحضور: OK. HANNAH بلومبرج: نعم. سؤال جيد. نعم. الحضور: لذلك نحن لا تستخدم نماذج في PHP أو جافا سكريبت؟ HANNAH بلومبرج: لا، نحن لا تحتاج إلى استخدام النماذج، خصوصا في جافا سكريبت. شيء واحد حتى الممارسة السيئة التي أنا أريد أن أقول أنه لا ينبغي عليك القيام به هو لم يكن لديك لكتابة فار ط = 50. هل يمكن أن مجرد البدء في القيام ط = 50. وسيكون مجرد تقديم ط متغير عمومي. انها ممارسة سيئة للغاية ل لا يقول صراحة فار ط، ولكن هذا شيء يمكنك القيام به. المترجم ليس الذهاب إلى الصراخ لك. جافا سكريبت هي تشبه إلى حد ما، تستطيع فعل ما تريد. أوه، آسف. هناك اثنين. في السراويل البرتقالي. انطلق. الجمهور: لا، عليك أولا الذهاب. الجمهور: لا، أنا فقط أقول لم يكن لدي يدي فوق. حسنا. حتى لو كنت لاستدعاء أن أول مرة، وخلاصة القول الآن، نحن نسميها بنفس الطريقة، س، ذ، مثل كل مرة واحدة؟ HANNAH بلومبرج: نعم. حتى هذين أساسا تفعل الشيء نفسه. الحضور: وما هي ميزة استخدام واحدة أو أخرى؟ HANNAH بلومبرج: لا ميزة استخدام واحد أو آخر. أردت فقط أن تظهر لك اثنين قطع مختلفة من بناء الجملة. وهناك الكثير من الأوقات، حيث مجهول وظائف لديها هدف هو إذا كانت الوسيطة إلى آخر وظيفة يجب أن يكون وظيفة. وسنرى أنه في ثانية فقط مع اياكس. حتى إذا كان هذا لم يكن له أي معنى، تخزينه في الجزء الخلفي من رأسك. حيث ان مجهول وظيفة قد يكون مفيدا لأنها ليست حقا يستحق ويعطيها اسما منذ نحن فقط تنوي استخدام مرة واحدة. نعم. الجمهور: إذا كانت x و y التغيير لاحقا على، سيتم جمعها تغيير كذلك؟ HANNAH بلومبرج: إذا كانت x والتغيير ذ في وقت لاحق، وسوف ألخص تغيير كذلك؟ لذلك هذا هو في الواقع أنا أعتقد شيء أن يكون، مرة أخرى، تشعر أنها مجرد مختلفة جدا من C. وهذه ليست القيمة. انها ليست 5. انها مجرد وظيفة نفسها. ذلك في أقرب وقت كنت تعطيه المعلمات، ثم عليك حساب في الواقع قيمة. MARIA ZLATKOVA: ثم يمكنك استدعاء الدالة واستخدامه للحصول على بعض القيمة. HANNAH بلومبرج: الحق. بالضبط. نعم. الحضور: حتى إذا كنت فقط تخزينه في المتغير، مثل فار س يساوي مجموع اثنين values-- HANNAH بلومبرج: نعم. لذلك يمكن أن تفعله مجرد فار المبلغ يساوي مجموع القيمتين. نعم. اي أسئلة أخرى؟ نعم. الحضور: ولكن ذلك الخلط بين المبلغ والمبلغ؟ مثل حالة استدعاء المبلغ المتغير الخاص بك، هل استدعاء الدالة المبلغ؟ HANNAH بلومبرج: مم. مم. إذا كنت فعلت شيئا مثل، مبلغ يساوي مبلغ 2، 5؟ الجمهور: نعم. HANNAH بلومبرج: أعتقد أن هل الكتابة فوق قيمة المبلغ. حتى آخر للاهتمام شيء عن جافا سكريبت غير أن يمكن أن متغير واحد على مجموعة من أنواع مختلفة. ممارسة سيئة. يجب أن لا تفعل شيئا مثل ما قلته للتو. ولكن في C، إذا تم تعيين ط يساوي عدد صحيح، نحن نعلم أنه أبدا ستصبح سلسلة. ليست هذه هي الحال في جافا سكريبت. نعم، سؤال جيد. أي شيء آخر؟ حسنا. تفعل كل الحق في الوقت المناسب. حفظ الذهاب. حسنا. إذا نظرنا إلى مجموعة في جافا سكريبت، وهنا مثال سريع لمجموعة من السلاسل. ويمكن صفائف تنمو بشكل حيوي. لم يكن لديهم ل حجم ثابت بنفس الطريقة أن يفعلوا في C. يمكننا الوصول إلى عناصر فقط مع أقواس معقوفة. أن يتطلع الكثير مثل PHP والكثير مثل C، حيث يمكننا القول، في هذه الحالة، إذا أردت كلمة جافا سكريبت، وأود أن لا ARR بين قوسين معقوفين مع 0، 1، 2. ثم إذا كنت تتذكر عندما كنا في C أرغب في الحصول على طول صفيف، كان مزعج حقا. ولكن في جافا سكريبت، والسوبر سهلة. كل ما نقوم به، مدة العرض. يعطيها أطوال. هذا هو. الجمهور: هذا بسيط. HANNAH بلومبرج: نعم، يجعل حياتك أسهل كثيرا. OK، object-- لم يكن هناك. الكائنات في جافا سكريبت يشعر الكثير مثل البنيات في C والمصفوفات الترابطية في PHP. ذلك ما رأيناه في الكثير من هو JSON، التي لتقف على جافا سكريبت تدوين كائن. وانها في الاساس وسيلة هيكلة بياناتنا. لذلك دعونا نرى على سبيل المثال، ربما تكون أسهل. حتى هنا مثال من كائن يخزن الطبقة، CS50. وعندما أقول الطبقة، أعني بطبيعة الحال، لا like-- نعم، بالطبع، CS50. وسترى أن كل شيء في وجوه سوف تكون واردة في الأقواس المعقوفة. ونبدأ في ربط أسماء الحقول أو مفاتيح مع قيم مختلفة. حتى تتمكن من البدء أن نرى كيف يمكن لهذا النوع من يشعر وكأنه مجموعة النقابي في PHP. لذلك نحن ذاهبون لربط حقل أو الاسم، وبالطبع رئيسي، مع سلسلة، CS50. ونحن في طريقنا لدينا مدرب. نحن ذاهبون الى TFS. ونحن في طريقنا لديك عدد من psets ونحن في طريقنا لقد سجلت. وشيء واحد بارد هو أن نلاحظ جميعا هذه الأمور لها أنواع مختلفة، وهذا شيء طيب تماما. أنه بخير لكائن، في الواقع، وربما من المتوقع لكائن لدينا مجموعة من السلاسل والأرقام والقيم المنطقية والمصفوفات وأي شيء آخر كنت قد تريد أن يكون داخل الكائن. ونلاحظ أن هذه ستكون أسماء أو مفاتيح، وبعد ذلك فقط تعيين يساوي مع قليل من القولون. الحضور: بالضبط ما لا JSON يعني؟ HANNAH بلومبرج: ما بالضبط هل JSON يعني؟ JSON تقف فقط ل جافا سكريبت تدوين كائن. انها مجرد وسيلة للتنسيق. نعم. انها وسيلة لتنسيق البيانات لدينا. في C، انها البنيات. في PHP، انها صفائف النقابي. في جافا سكريبت، لدينا الكائنات. الجمهور: ذلك هو CS50 كائن؟ HANNAH بلومبرج: CS50 هو المطلوب في هذه القضية. الآن، كيف يمكننا الوصول فعلا تلك الحقول أو تغيير تلك المجالات. على سبيل المثال، لنفترض أن قررنا أن أردت واحدة أقل PSET هذا الفصل الدراسي. بدلا من تسعة، ونحن فقط ستكون لدينا ثمانية. كيف يمكننا أن تغير ذلك؟ أوه، بطريقة خاطئة. هناك نوعان من الطرق التي يمكننا أن نفعل ذلك. رقم واحد هو مع نقطة تدوين وعدد اثنين هو مع التدوين قوس مربع. لذلك، على سبيل المثال، إذا كنت أراد أن يغير أو الوصول مجال psets في الكائن CS50 لدينا، ما أود القيام به هو CS50.psets، حتى اسم نقطة الكائن اسم الحقل أو المفتاح. على نحو مماثل للغاية، انها بالضبط أي ما يعادل تفعل CS50، ثم بأقواس مربعة، psets. رائع؟ نعم. الجمهور: ذلك هو JSON من الناحية الفنية لا يزال جافا سكريبت، على الرغم من أن في psets نحن فصل بها (غير مسموع)؟ HANNAH بلومبرج: بالتأكيد. لذا فإن السؤال هو، هل جافا سكريبت وجسون يعادل؟ حتى JSON هو التدوين، في الأساس الطريقة التي نكتب بها كائن من جافا سكريبت. حتى انهم يست بالضبط نفس الشيء. وأود أن أقول جافا سكريبت، هناك هي الكائنات في جافا سكريبت. JSON يأخذ تلك الكائنات و يطبع عليها ويعرضها أو بتخزينها بطريقة لطيفة. حتى JSON ليس البرمجة اللغة الطريقة التي جافا سكريبت. انها مجرد تدوين ل كائنات لدينا في جافا سكريبت. نعم. الجمهور: ذلك بالضبط ما (غير مسموع) إكمال؟ HANNAH بلومبرج: بالتأكيد. ولذلك فإن هذا الواقع لا يفعل شيئا. هذا هو مجرد وسيلة للوصول. لذلك دعونا نقول أننا نريد تغيير عدد مجموعات مشكلة 9-8. ما نقوم به هو أن تفعل شيئا مثل CS50.psets = 8 ؛. نعم، السؤال الكبير. هذا هو فقط لتظهر لك بناء الجملة. لا تفعل اي شيء في الواقع مفيدة. أي أسئلة؟ تتحرك على طول الحق. لذلك دعونا ننظر إلى مثال سريع لكيفية يعمل جافا سكريبت لأنني قلت لك انه يفعل كل هذه الأشياء باردة و يسمح لنا لتعديل صفحات الويب. دعونا نرى فعلا في العمل. حتى تأخذ، على سبيل المثال، هذا الملف HTML. والشيء أريدك أن التركيز عليه هو هذه العلامة معينة، وهو زر، مع search_button الهوية. انها مجرد على الصفحة. حتى الآن دعونا نرى ما يمكننا القيام به في الواقع. حسنا، لنفترض عندما ان تنقر على هذا الزر، نحن نريد أن نجعل من alert-- يمكنك النقر فوق الزر. دعونا نرى كيف يمكننا أن نفعل ذلك. حتى window.onload-- هذا ليس شيئا التي كنت قد رأيت في الصف، ول لن تحتاج للتعرف عليها لهذه المسابقة. ولكن هذا يقول في الأساس، OK، دعوة هذه الوظيفة عند تحميل النافذة. ذلك أن مجرد نوع من التعليمات البرمجية الإعداد. لا تقلق كثيرا عن ذلك. ما أريدك أن تركز عليه هو هنا. نقول يساوي فار searchButton document.getElementByID search_button. وذلك قد يتبادر إلى ذهنك، هذا ما يفعله هو يقول: OK، انتقل العثور على العنصر مع search_button ID. والآن لدينا هذا العنصر الفعلي وأنا الذهاب لتخزينه في searchButton متغير. والآن يمكننا فعلا استخدام هذا العنصر وتغييره، أو الوصول قيمها، أشياء من هذا القبيل. يمكننا أن نبدأ فعلا ل التعامل مع صفحة الويب. حتى هنا أقول، حسنا، الآن أن لدي هذا الزر، عند النقر فوقه، استدعاء هذه الدالة مجهولة. لذلك هذا هو المكان المجهول تصبح وظائف مفيدة. وماذا تفعل وظيفة؟ كذلك، فإنه يدعو هذا فقط وظيفة التنبيه ويقول: ضغطت على زر البحث. لذلك ما الذي سيحدث إذا ذهبت إلى أي مكان هذه HTML تعيش والنقر فوق الزر، سوف تحصل على تنبيه القليل الهوى تقول النقر فوق الزر. حتى الأشياء للتركيز على here-- document.getElementByID يحصل معينة لHTML عنصر مع معرف معين. والآن فإننا يمكن أن يحدد ما يجب أن يحدث عندما يتم النقر أن عنصر معين. الحضور: لدينا لوضع كل ذلك في؟ HANNAH بلومبرج: عذرا؟ الحضور: هل علينا أن رمز جسديا كل ذلك؟ HANNAH بلومبرج: هل لدينا ل رمز جسديا كل ذلك؟ نعم فعلا. ليس هذا النوع من مزعج؟ هذا هو الكثير من التعليمات البرمجية. الحضور: هل يمكن استيراد شيء. HANNAH بلومبرج: الحق. يمكن أن نستخدم شيئا. وفي particular-- أوه، انها تقول لي لدي لتعليم القسم. على وجه الخصوص، دعونا استخدام المكتبة مسج، لأن ذلك كان حقا منذ فترة طويلة ومزعج حقا وأريد أن أكون قادرا على تبسيط ذلك وجعله أقصر وأسهل في الكتابة. حتى مسج هي مكتبة جافا سكريبت. ذلك هو البرمجة جافا سكريبت لغة؛ مسج هي مكتبة. ويجعل حفنة من الأمور أسهل. يجعل تغيير والذهاب عبر وثيقة HTML أسهل بكثير. يجعل الأحداث معالجة أسهل. يجعل الحركة أسهل ويجعل أياكس أسهل. لذلك دعونا القفز إلى اثنين من تلك الأشياء الآن. اعذرني. قبل ان نفعل، بعض الجملة الأساسية. وهذا ما يدعو إلى الأكثر مكتبة مسج تبدو. ونحن نستخدم هذه الدولار sign-- أي علامة اتصال PHP، فقط inconvenient-- اسم محدد، نقطة، ثم إجراء. لذلك دعونا نرى بعض أمثلة ملموسة على ذلك. لذلك هذا هو الواقع نفسه رمز من الشريحة الحدث. بحيث يصبح هذا طويل، الشيء القبيح هذا أجمل بكثير، شيء أصغر. لذلك دعونا محاولة لكسر هذه القاعده. هذا يقول: OK، jQuery-- هذه الدولار sign-- مسج، تجد لي النافذة. لذلك هذا هو محدد. عند تحميل، استدعاء هذه الدالة. لذلك هذا هو كل شيء في الداخل. حسنا. حتى الان جيدة جدا؟ حسنا. الآن، مسج، تجد لي الشيء مع search_button ID. وما هو النقر فوقه، استدعاء هذه الدالة. ثم هذه الدالة بالضبط نفس الشيء. فقط تفعل قليلا من التنبيه، ضغطت على زر البحث. لذلك من الجميل حقا. يتكثف حقا و يبسط متاحة لدينا. كيف أعرف أن انها search_button ID وليس مثل الطبقة search_button؟ الحضور: الوسم؟ HANNAH بلومبرج: نعم. هذا الرمز التجزئة، انها مجرد مثل CSS. لذلك تذكر، مع CSS، عندما كنا أراد لتحديد شيء عن الهوية، كنا الجنيه. وعندما أردنا تحديد شيء على حسب الطبقة، ونحن نستخدم النقطة. رائعة. منطقي؟ لذلك يفترض مسج ل مجرد جعل حياتنا أسهل. نعم. الحضور: لذلك أنا مرتبك قليلا كما كيف تعمل وظيفة غير معروفة. هل تسمي هذه anonymouse وظيفة، وظيفة؟ كيف يطلق عليه؟ HANNAH بلومبرج: بالتأكيد. حتى وظيفة هو مجرد الكلمة التي يقول: أنا على وشك أن تحديد وظيفة. الحضور: أوه، حسنا. HANNAH بلومبرج: OK؟ وبعد ذلك تمر عليه بوصفه حجة to-- دعونا نلقي هذا احدا-- الداخلية إلى وظيفة نقرة. لذلك نعم، حتى أن وظيفة، هذه وظيفة مجهول، يصبح حجة الفعلية. لذلك تذكر في جافا سكريبت، ونحن يمكن علاج ظائف كقيم. الحضور: أوه، حسنا. HANNAH بلومبرج: نعم. وأود أن "اه." جميل. اسئلة اخرى؟ مرة؟ MARIA ZLATKOVA: جيد. جيد. HANNAH بلومبرج: ممتاز. بعض مسج مفيد سريع. أنا لا أريد أن أذهب من خلال كل هذه. سوف تكون هذه الشرائح حتى على الانترنت قليلا في وقت لاحق، لذلك يمكنك التحقق ذلك في وقت لاحق قليلا. ولكن في الأساس، الجنرال نمط يحمل حيث نقول، OK، مهلا، مسج، وهنا قال لي محدد ثم هنا هو إجراء. ويمكنك أن تفعل أشياء مثل وصول قيمة نموذج، الوصول إلى بعض HTML، مراقبة ما يحدث عندما يقوم المستخدم يقدم نموذج، أشياء من هذا القبيل. نعم فعلا. الحضور: حتى في امتحان، ونحن في طريقنا إلى حاجة لمعرفة الكثير جدا من وثائق مسج. ذلك نظرا لأننا نسخ / لصق مسج الوثائق إلى ورقة الغش لدينا، أين هو الخط الذي رسمته؟ مثل وكم نحن بحاجة إلى تعلم؟ HANNAH بلومبرج: السؤال الكبير. السؤال هو نظرا أساسا أن لك لا يمكن الوصول إلى وثائق مسج أثناء الاختبار، وكم يجب عليك علم؟ ونحن لن نتوقع منك أن تأتي حتى مع بعض وظيفة عشوائية أننا نتوقع منكم أن جوجل. الأشياء التي هي لعبة عادلة هي أود يقول عادل نوع من بناء جملة العام، أن تكون قادرة على تحديد من قبل البائع بواسطة class-- حتى مجرد مثل CSS. ثم الوظائف الفعلية ذاتهما، سنقوم على الأرجح اقول لكم. نعم. الحضور: حتى عند تحديد على حسب الطبقة سيعني نقطة. HANNAH بلومبرج: نعم، بالضبط. جيد. عند تحديد حسب الطبقة، انها تسير أن نقطة بدلا من الجنيه. نعم فعلا. الحضور: هلا يذهب أكثر الفرق بين اختيار من قبل البائع على حسب الطبقة؟ HANNAH بلومبرج: بالتأكيد. الفرق بين اختيار ID واختيار على حسب الطبقة. وكما قال ماريا في وقت سابق قليلا، هناك يمكن أن يكون إلا عنصر HTML واحد مع هوية معينة، في حين أن الطبقة، لأنها تتيح لنا مجموعة حفنة عناصر مختلفة معا، من الأشياء التي ترتبط، ولكن ليس بالضبط نفس الشيء. هل هذا يجيب على السؤال؟ رائع. نعم فعلا. الحضور: ماذا لو كان لديك عدة الأشياء التي هي في نفس الدرجة؟ HANNAH بلومبرج: ماذا يحدث إذا كان لديك العديد من الأشياء التي هي نفس الفئة؟ لذلك، على سبيل المثال، إذا نحن فقط باستخدام نقية جافا سكريبت، كنا نفعل شيئا مثل document.getElementsByClass. ثم ما أن الواقع لا هي عوائد مجموعة من العناصر. وعليك إما تكرار عبر لهم أو العثور على واحد التي تريد. انها لن تتخلى كنت عنصر واحد. انها ذاهب الى ان نعطيكم مجموعة من العناصر. السؤال الكبير. أي شيء آخر؟ رائع. لذلك أعتقد إذا كنت على دراية أي مسج رأيت في PSET، يجب أن تكون على ما يرام. سؤال؟ اوه لا. لدي حقا للتدريس. استرح. أنه سوف يكون على ما يرام. سأحضر هناك. دعونا نتحدث عن اياكس. حتى اياكس سيكون جيدا a--، دعونا نبدأ مع ما تمثله. انها اختصار. لأنها تقف متزامن جافا سكريبت وXML. وXML هو في الأساس سيكون (غير مسموع) مع نوع البيانات المتوفرة لدينا. لكننا لم تستخدم فعليا XML. بدلا من ذلك، نحن فقط استخدام JSON. ذلك أساسا، انها بعض data-- غير المتزامن، وجافا سكريبت، والبيانات، في هذه الحالة، JSON. وهدفنا، كما ذكرنا قليلا في وقت سابق، هو أن تكون قادرة على تقديم طلب، وهذا الطلب تفعل شيء في ل الخلفية، ولكن الاستمرار نفعل كل ما كانت تنوي القيام به. وبعد ذلك عندما تلك المعلومات استعداد، ثم سنقوم دمجه. لذلك دعونا نرى ما هذا يبدو في الواقع مثل. وهذا، يجب أن تكون قليلا مألوفة من pset8، الشخص الذي تحولت فقط في. لذلك ليس هنا مسج صحيح وظيفة أننا قد تريد أن تعرف about-- هذه علامة الدولار. لذلك يقول مسج وظيفة، .getJson. وما هذه الدالة هو عليه يأخذ URL وبعض parameters-- لذلك أعتقد أن في حالة من pset8، وكان مثل، كان URL articles.php و وكانت المعلمات الذهاب = بعض الرمز البريدي. وتقول، حسنا، تقديم طلب ل هذا URL مع المعلمات معين. وهذا يحدث فقط. عندما ينتهي ذلك، فإنه إما الذهاب لإكمال بنجاح أو انها سوف تفشل. لذلك هذا هو ما يعادل الدعوة روب وأطلب منه أن يفعل شيئا. ثم عندما يدعو الى الوراء، وقال انه إما أريد أن أقول انتهيت أو أنني فشلت. وذلك في حالة ما إذا كنت فعلت، أقول لكم، حسنا، أنا فعلت. ثم استدعاء هذه الدالة. في هذه الحالة، فإنه سيكون ل دالة التي تأخذ بعض المعلومات. واحد أننا نهتم عادة حوالي هو البيانات، البيانات التي كنا عاد فعلا نتيجة الدعوة .getJSON. ويمكنك أن تفعل شيئا معها. حتى في حالة pset8، عرضنا على أنها قائمة. فشل ستكون وظيفة الذي يسمى إذا فشل الطلب لاي سبب كان. وفي حالة pset8، نحن console.log فقط. أي أسئلة على ذلك؟ نعم. الحضور: هل نحن فقط استخدام وظيفة ثيتا بدلا من وظيفة، textStatus، jqHXR. HANNAH بلومبرج: بالتأكيد. لذلك نعم، أعتقد في PSET، نحن فقط رأيت وظيفة البيانات. لذلك فمن the-- فقط نعم، OK. وهذا ما رأيناه في PSET. وهذا جيد تماما. هذه ليست سوى إذا أردت لسحب مزيد من المعلومات، هذه هي الأمور التي يمكن أن تحصل من .getJSON. سؤال جيد. أي شيء آخر؟ نعم. الحضور: حتى .getJSON هو اياكس؟ HANNAH بلومبرج: OK. لذلك هذا هو نوع من الجزء صعبة. بل هو وظيفة مسج التي تسمح لك أن تفعل المكالمات غير متزامن. وتلك المكالمات غير متزامن، وهذا ما كنا في اشارة الى حيث اياكس. نعم. التي أخذت مني وقتا طويلا حقا أن مزق عندما كنت طالبا. الحضور: هل لك أن أقول مرة أخرى؟ HANNAH بلومبرج: نعم. يمكنني أن أقول مرة أخرى؟ هذه الوظيفة .getJSON، بل هو وظيفة مسج. وانها سوف تجعل استدعاء غير متزامن. وهذه الدعوات غير متزامن، لقد تم اشارة الى تلك كما اياكس. اي أسئلة أخرى؟ لدينا فقط بضع دقائق غادر. ويذهب ماريا ل اختتام مع الأمن وبعد ذلك نحن ذاهبون أن يكون مجرد عن القيام به. MARIA ZLATKOVA: ممتاز، OK. لذلك هذا is-- اتخاذ بضع ثانية للنظر أكثر من ذلك. وهذا ليس شيئا عظيما حقا. ويمكن أن تقولوا لي لماذا؟ ما يجري في فو وربما يمكن يحتمل أن يؤدي إلى شيء سيئ، وما أن يسمى؟ نعم. الجمهور: إذا كانت حجة هذا مرت في أكثر من 12 حرفا، يمكن أن تجاوز. MARIA ZLATKOVA: الحق. في احسن الاحوال. ماذا يسمي؟ ذكرتم فقط. الحضور: تجاوز سعة المخزن المؤقت. MARIA ZLATKOVA: نعم، عازلة تجاوز. لذلك هذا هو الشيء الذي نحن أشير إلى أنه تجاوز سعة المخزن المؤقت. ونحن نرى أن داخل فو، حددناها لدينا العازلة، ج، مع حجم 12. ومع ذلك، في الرئيسية، ونحن لا تحقق بأي شكل من الأشكال على الإطلاق إذا كانت argv1-- بحيث كانت الحجة الثانية. نحن لا تحقق ما إذا كان حجم فمن المناسب. حتى إذا كان لدينا المتطفلين خاصة الذين وضعوا في بعض الحجة التي كانت أكثر من 12، ثم يحتمل أن تكون ما وراء حدود أن الحجة، وكان بعض رمز قابل للتنفيذ إنه يحاول أن يفعل شيئا سيئا معها؛ ثم هذا، ماذا سيحدث، ويعلو عودة عنوان الدالة فو، مما تسبب في وظيفة إلى حين العودة إلى تنفيذ التعليمات البرمجية. ثم الأشياء السيئة يمكن أن يحدث. هل هذا يعقل أن الجميع؟ وكيف يمكن أن نحمي ضد هذا؟ أي اقتراحات؟ في الأساس، داخل يحتمل أن تكون فو، كيف يمكننا أن تحقق للتأكد من أن هذا لا يمكن أن يحدث؟ الجمهور: إذا تم تجاوز حجم 12، كنت تخصيص ذاكرة إضافية؟ MARIA ZLATKOVA: اقتراح هو، وتخصيص تجاوزت ذاكرة إضافية لحجم. في الواقع، يمكننا أن نفعل شيئا ل الكثير أبسط من ذلك أيضا. يمكننا أن مجرد الحصول على طول السلسلة من الحجة التي تم إدخالها، معرفة ما اذا كان هذا هو أقل من أو يساوي 12-- وهو ما نريدها أن تكون لأننا لا نريد أن يتجاوز حدود عازلة لدينا. ومن ثم إذا لم يحدث ذلك، فإننا يمكن أن تعمل مع الحجة. ثم إذا كان كذلك، نريد فعلا لYELLO يحتمل أن المستخدم. ولكن هذه هي الطريقة التي ستفعل ذلك. نعم فعلا. الحضور: هل لك شرح سريعة الحقيقية memcpy؟ MARIA ZLATKOVA: أوه، آسف. نعم فعلا. Memcpy يأخذ كل ما is-- آسف، OK. Memcpy يأخذ كل ما هو في شريط، كل ما مرت على فو كما وسيطة سطر الأوامر. لذلك سيستغرق argv1. ويسمى Argv1 شريط هنا. لذلك سيستغرق وبار انها سوف نسخه إلى ج. الحضور: OK. MARIA ZLATKOVA: وانه سيكون ل copy-- الوسيطة الثالثة يشير فقط إلى أي مدى سيكون لنسخ إلى ج. الحضور: آه. لذلك نسخ هذا واحد من كل ذلك الحين. MARIA ZLATKOVA: نعم، انها نسخ كل ذلك. نعم. أولا، أن نتأكد من شريط ليس يساوي فارغة لأنها المؤشر. ثم نحصل على طول سلسلة من العارضة. نضمن أنه أقل من أو يساوي 12. ثم لأننا تأكدوا، يمكننا فعلا memcpy ومما لا شك فيه أن هذا موافق. أي أسئلة؟ رائعة. لدي سؤالان صحيحة أو خاطئة. يمكن لأحد أن يقول لي على الفور إذا كانت هذه هي صحيحة أم خاطئة؟ نعم، انها كاذبة. بالضبط. كلاهما كاذب. وذلك باستخدام كلمة مرور واحدة هي فكرة جيدة أبدا حقا لأنه إذا كان شخص ما يعرف كلمة السر الخاصة بك، فإنها يمكن فقط الوصول إلى كافة الحسابات الأخرى الخاصة بك. ومن ثم الرموز لا تفعل شيئا لضمان الأمن. ينبغي أن ننظر عادة لHTTPS بدلا من HTTP وURL. وبعض الأنواع الأخرى من الهجمات التي قمنا المذكورة، أن داود قد ذكر في محاضرة هجمات حقن SQL. لقد رأينا بالفعل أننا إذا don't-- لل وظيفة الاستعلام CS50 يتأكد أن SQL لا يمكن أن تحدث هجمات الحقن. ولكن إذا كنا لا تستخدم CS50، الاقتباس، نهاية الاقتباس "في الاستعلام" سيكون لدينا للتأكد من أن إدخال المستخدم ليست في الواقع بعض SQL الاستعلام من شأنها أن تتسبب جميع إلى إسقاط الجداول لدينا أو شيئا سيئا ل يحدث مع قاعدة البيانات الخاصة بنا. جلسة اختطاف هو نوع آخر من الهجوم ما يحدث عند بعض سيئة شخص يستخدم الجلسة بعض الضحية ID للوصول إلى معلومات تسجيل الدخول. لذلك مثالا تافها جدا لذلك هو كما لو كان لدينا جهاز كمبيوتر عام، ثم شخص سيء في سجلات ثم لديهم ملفات تعريف الارتباط التي يتم حفظها. والكوكيز لا تتغير عن الدورة. ثم قمنا الضحية تذهب في ومن ثم تسجيل الدخول إلى الموقع. ملفات تعريف الارتباط لا تتغير لدورة معينة. ثم الضحية بتسجيل إلى موقع ومن ثم يترك. ثم الشخص الذي يعود ويمكن بعد ذلك الاستمرار في استخدام ID دورتهم للوصول إلى المعلومات الخاصة بهم. ولهذا مثال واحد من كيف يمكن أن يحدث. ثم أود أن لا تقلق كثيرا حول رمز معين أو أي شيء كما أن ذلك يمكن أن يسبب هذا، ولكن وجود نوع من فكرة ما المتغيرات التي تنطوي عليها هذه هي. ومن ثم التلاعب رأس البيانات هو نوع آخر من الهجوم الذي لديه ديفيد تحدث عن. ويشير فقط ل ما يمكن أن يحدث عندما وردا على ذلك، HTTP استجابة داخل رأس لدينا لم يتم مطهرة بشكل صحيح. وأي من fields-- على سبيل المثال، اذا كان هناك من الكتابة واحدة من رأس القيم لاحتواء أي شيء أكثر من ما ينبغي contain-- والواقع تحتوي، على سبيل المثال، 200 موافق رمز حالة، بعد ذلك من المحتمل أن تفعل الخبيثة الأمور عندما انهم ليس من المفترض أن. ولكن أود أن لا تقلق جدا الكثير عن رمز معين يمكن أن يسبب هذا، مجرد نوع من التفاهم أشياء رفيع المستوى من هذا القبيل. وأعتقد أن هذا هو كل شيء أن لدينا لتغطية. مدهش. أي شخص لديه أي أسئلة بشأن أي من الأشياء التي غطينا؟ نعم فعلا. الجمهور: ذلك النوع أحد أكثر من سؤال اللوجستي. هو محتوى تركز أساسا على الأشياء بعد اختبار 1؟ MARIA ZLATKOVA: حتى السؤال هو، هو المحتوى تركز أساسا على الأمور بعد اختبار 1؟ وبالتالي فإن التركيز هو على بعد مسابقة 1، باستثناء أننا بحاجة إلى التركيز على الأمور في pset5 والكثير من هياكل البيانات أن غطينا. ونحن لا نستطيع أن نقول أننا يمكن تجاهل أي شيء قبل هذا لأنه يبني على أنها كذلك. لذلك التركيز على ذلك، بالإضافة إلى المواد pset5 مثل بما في ذلك ربط القوائم، المداخن، الطوابير، وكل شيء أن هانا ذهب أكثر. HANNAH بلومبرج: الحق. نعم، ذهبنا على كل الاشياء C في البداية بسرعة كبيرة. ولكن تأكد من مراجعة ذلك. أعود ومشاهدة الاستعراض مسابقة 0. وقبل بضعة ملاحظات أكثر اللوجستية، فقط حين يكون لدينا اهتمام. نحن ستكون لدينا ساعات العمل كلا يومي الاثنين والثلاثاء ليلة. انهم ذاهبون ليكون في MD 119. هذا هو كل شيء على شبكة الإنترنت، لذلك إذا كنت لا أسمع له، لا تقلق. MARIA ZLATKOVA: 8:30 حتي 11:00. HANNAH بلومبرج: نعم، 8:30 حتي 11:00. سنكون هناك. سنكون هناك للإجابة على الأسئلة. انها البرد جميلة وممتعة. يا رفاق يمكن طرح أي سؤال أن يكون لديك في مسابقة 1. ومسابقة 1 هي على الأربعاء، حظا سعيدا بذلك. إذا كان لديك أي أسئلة، ربما يأتي الحديث لنا هنا واحد على واحد. رائع. شكرا جزيلا. MARIA ZLATKOVA: شكرا جزيلا، والرجال. الحضور: ياي. [تصفيق]