[00:00:02] [عزف الموسيقى] HANNAH: مرحبا، الجميع. شكرا يا رفاق جزيلا على الخروج في الطقس مثير للاشمئزاز لمسابقة واحدة مراجعة الدورة. كما كنت الرجال يعرفون، مسابقة واحد هو يوم الأربعاء. لذلك نحن ذاهبون للذهاب من خلال مجموعة من المواضيع. دافين: مهلا، يمكنني أن أقول شيء حقيقي سريع؟ HANNAH: نعم، في دافين الذهاب أن أقول شيئا حقيقية سريعة. دافين: عذرا. سريعة الحقيقية فقط، إذا كان لديك أسئلة حول هذه المسابقة، يمكنك الذهاب على الانترنت. الذهاب إلى 2014 مسابقة واحدة، وحول هذه المسابقة. انها حصلت اللوجستية حول إلى أين تذهب، وعندما لذهاب. إذا كنت مسجلا في وقت واحد، ونحن ستكون لدينا مسابقة ماكياج في الساعة 5:30. أو إذا كنت أرسلت لي قضية، لديك بعض المسألة الأخرى. ولكن 5:30 المكياج الوقت يوم الاربعاء. ولكن إذا كان لديك أسئلة، أسئلة عامة، على الانترنت لديه كل الخدمات اللوجستية. حتى تحقق هناك أولا. [00:00:47] HANNAH: ممتاز. وحتى هنا في قائمة كبيرة من المواضيع أننا ذاهبون للذهاب من خلال اليوم. انا ذاهب الى تغطية جميع C الاشياء، وهو أن العمود الأول. وذلك من الاشياء C أننا غطت بعد مسابقة الصفر. بدءا قائمة مرتبطة، التي تشمل المؤشرات. [00:01:05] كل الحق، لذلك رأينا هذا في دورة الاستعراض الماضية، لذلك أنا ذاهب للذهاب من خلال هذا هو أسرع قليلا. فقط ارفع يدك إذا كنت تريد مني أن إبطاء أو معالجة شيء أبعد من ذلك. ولكننا استخدام القوائم المرتبطة بسبب بدأنا في C مع المصفوفات. والمصفوفات كبيرة، ولكن المشكلة هي أن لديهم حجم ثابت. القوائم المرتبطة تسمح لنا لخلق الحجم حيوي هياكل البيانات. [00:01:28] وعلينا العمليات الأساسية لدينا، إدراج، حذف، والبحث. ويمكننا ان نفعل إدراج في أسوأ الحالات وقت ثابت إذا كان لنا أن مجرد وضعها في البداية. حذف والبحث، أسوأ قضية كبيرة يا ن الوقت. ذلك مرة أخرى، لمجرد أن الوجه من خلال هذه الصور، وأنا أعلم أننا رأينا هذه آخر مرة، لكننا تريد أن تتبع من قائمة مرتبطة لدينا من خلال تعقب على رئيس قائمة مرتبطة لدينا. لأننا نعلم أن كل واحد من العقد لدينا هو مجرد الذهاب للإشارة إلى عقدة المقبلة في قائمة مرتبطة لدينا. [00:01:58] ولهذا كيف يمكننا تتبع. على الرغم من أن هذه ليست قطع مستمرة من الذاكرة، يمكن أن نجد لهم من قبل فقط بعد السهام مختلفة. هنا هو هيكل لدينا لعقدة قائمة مرتبطة. رأينا هذه المرة الأخيرة. لدينا عقدة البنية دينا. وفقد اثنين من الخصائص. رقم واحد، والفعلي قيمة ونحن نريد لتخزين. في هذه الحالة، فإنه من عدد صحيح. ويمكن أن يكون سلسلة، ما في وسعها يكون شار، كل ما تريد. وبعد ذلك، علينا أن تتبع العقدة التالية في قائمة مرتبطة لدينا. بحيث سيكون ل مؤشر إلى العقدة التالية. إذا كنت تفعل فقط البحث، وكما قلت من قبل، كنت قد لمتابعة السهام الخاص بك إلى أسفل. الإدراج، هل تتبع من حيث بقية القائمة الخاصة بك. وتريد إعادة توجيه الرأس للإشارة إلى عنصر جديد لدينا، والتي في هذه الحالة هي واحدة، وبعد ذلك واحدة سوف نشير إلى ما تبقى من القائمة المرتبطة. ذلك مرة أخرى، وأنا أعلم هذا هو قليلا قليلا من تكرار من مسابقة الصفر. لذلك علينا أن نكون حذرين للغاية حول الترتيب الذي نحن تفعل هذه pointings لذلك نحن لا تفقد المسار من الجزء الخلفي من القائمة. OK، أي أسئلة مع قوائم فقط مرتبطة بشكل منفرد؟ رهيبة، OK، بارد. [00:03:06] وحتى الآن، ونحن في طريقنا للذهاب على شيء فقط قليلا أكثر تعقيدا، القوائم المرتبطة على نحو مضاعف. وذلك بالإضافة إلى حفظ المسار من عقدة المقبلة، نحن نريد أيضا أن تتبع من العقدة السابقة. وهذا يسمح لنا، إذا نحن في مرحلة ما من قائمة مرتبطة لدينا، ليس فقط يذهب إلى الأمام، ولكن كما أعاد إلى الوراء. لأنه كما رأينا في قائمة مرتبطة منفردة، إذا كنا في بعض العقدة، و فجأة، قررنا، في الواقع، أريد أن أذهب إلى الحق عقدة قبلي، كنت قد ليذهب كل في طريق العودة إلى الرأس وتكرار خلال حتى وجدت العقدة الذي كنت تبحث عنه. [00:03:35] ولذلك فإن هذا يجعل الأمور أسهل قليلا كما نحن في محاولة لتكرار من خلال قائمة مرتبطة لدينا. ولكنه يتطلب منا أن تتبع واحد المزيد من مؤشر، لذلك أكثر واحد نجوم العقدة. كل الحق، حتى هنا يأتي الجزء الممتع. ونحن في طريقنا لممارسة تنفيذ إزالة لالقوائم المرتبطة على نحو مضاعف. لذلك هذا هو شيء أن يكون لعبة عادلة تماما لهذه المسابقة. وأظهر الاستطلاع حتى على مسابقات الماضية. لذلك بالتأكيد أن يكون مستعدا إلى رمز قليلا في C. لا ننسى أنه مع كل هذا متعة PHP وجافا سكريبت، ما زال علينا أن نتذكر للقيام C. لذا فرشاة على أن إذا كنت تشعر صدئ. [00:04:12] كل الحق، دعونا نرى ما اذا كنا نستطيع القيام بذلك. OK، بارد. لذلك نحن ذاهبون لمحاولة لتعديل حق هنا، ونأمل أن هذا يذهب كما هو مخطط لها. كل الحق، لا أحد يريد أن تعطيني اقتراح لكيفية أود أن أبدأ؟ والافتراض الوحيد أنا صنع هو أنني بالفعل وبنية محددة، و أظهر احدة وأنا على الصفحة الأخيرة، على الشريحة الأخيرة. وأنا تخزين رئيس بلدي صلة دعت القائمة في بعض مؤشر القائمة. هل يريد أي شخص أن يحصل لي بدأت؟ [00:04:42] الجمهور: يمكنك إنشاء جديد عقدة للاتصال من خلال القائمة؟ [00:04:45] HANNAH: ممتاز، لذلك ونحن في طريقنا لخلق عقدة جديدة إلى الزحف من خلال القائمة. أحب ذلك. أنا فقط الذي يطلق عليه مؤشر اذا كان هذا موافق. وأين يجب أن تبدأ أصلا؟ [00:04:57] الجمهور: ربما في رئيس القائمة. HANNAH: جميل. نريد أن نبدأ في الرأس، والتي قلت هو الذهاب الى خزنها في القائمة. رائع. حتى الان جيدة جدا. والآن، وهدفنا هو ل تكرار خلال قائمة حتى نجد عقدة مع قيمة ن التي نريد حذفها. موافق؟ [00:05:13] وحتى الآن هو الجزء حيث نريد تكرار خلال. يمكن لأي شخص أن يقترح على طريقة لتكرار خلال؟ [00:05:19] الجمهور: حلقة. [00:05:20] HANNAH: حلقة. أحبه. على وجه التحديد، يمكننا أن نحاول حلقة while. OK، ونحن نعلم أننا قد وصلت نهاية قائمتنا عندما ماذا؟ الجمهور: عندما يكون مؤشر لاغيا. HANNAH: عندما المؤشر فارغة. جميلة، وأنا أحب ذلك. OK، بارد. آسف لذلك لو كانت لغتي المحيط هدفين هو نوع من اثر سقوطه من على الشاشة. جئنا مرة أخرى. OK، بارد. ما هي الخطوة التالية؟ [00:05:48] لذلك نحن نعلم أننا تريد حذف العقدة التي لديها قيمة ن. لذلك دعونا العثور على الحالة التي يكون فيها ونحن في الواقع تجد عقدة لدينا. فكيف أود أن تحقق ذلك؟ أريد فقط القول ما اذا كان المؤشر، ثم إذا أنا ترغب في الحصول على قيمة من المؤشر، أنا فقط لا ن السهم، يساوي ن، المعلمة أن أعطينا لهذه الوظيفة، ل عقدة أننا نريد حذف الواقع. أي أسئلة حتى هنا؟ حسنا. حسنا، دعونا حتى الآن في رسم صورة سريعة على متن الطائرة من أجل رؤية هذا. [00:06:24] لذلك دعونا نقول هناك لدينا عقدة جميلة. ولها قيمة، أنا أقول فقط أربعة. ويشير إلى القادم عقدة في قائمة مرتبطة لدينا. وهناك شيء أمامها. لذلك لدينا لدينا سابقة لافتا الى لا شيء. في هذه الحالة، فإننا نشير إلى الوراء. OK، فقط وضع بلدي قائمة مرتبطة أكثر من هنا. ولدينا قائمة الذي يشير لهذا الهيكل لتبدأ. أنا أوجه واحد أكثر لل من أجل اكتمالها. موافق. أنا أشير إلى هذه النقطة إلى الأمام. وسوف نشير أن واحدة الى الوراء. عفوا، آسف. نعم، حصلت على هذه الوراء. تفعل ذلك مرة أخرى. OK، هناك نذهب. كل الحق، وحصلت عليه. OK، وهنا لدينا صورة. [00:07:21] OK، لذلك نحن نريد للنظر في حالتين. الحالة الأولى هي إذا كان عقدة نريد أن حذف هو في بداية جدا من قائمتنا. وبعد ذلك، في الحالة الثانية التي نريد للنظر هو لو كان في أي مكان آخر. وأنا أفهم أن هذا تماما رسم الفوضى بكل ما أوتيت من محو، ولكن نأمل سنحاول جعل هذا واضح مع بعض التعليمات البرمجية. [00:07:40] OK، لذلك دعونا تغطية حالة حيث وجدنا عقدة لدينا، وانها في غاية بدء من قائمة مرتبطة لدينا. لأي شخص أن تعطيني اقتراح هنا على ما يجب أن أقوم به لإزالة فعلا عقدة لدينا؟ انها صعبة قليلا. موافق؟ [00:07:56] الجمهور: عليك أن تأخذ العقدة التي ستكون قبل أن وجعله نقطة ل واحد من شأنه أن يكون بعد ذلك، واتخاذ العقدة التي سيكون بعد ذلك وجعل فإنه يشير إلى العقدة قبل ذلك. HANNAH: بالضبط. OK، لذلك هذا هو الحال where-- لدينا اثنين من الحالات. لدينا الحالة التي يكون فيها العقدة التي نحن نبحث عن هو الجزء الأمامي من القائمة. OK، ثم الحالة التي كنت ووصف هو خلاف ذلك، أليس كذلك؟ انها في مكان آخر في القائمة. حتى قال لكم، ونحن بحاجة ل ننظر إلى العقدة السابقة، وجعل العقدة السابقة نشير إلى العقدة التالية. لذلك دعونا نقول نحن في محاولة لإخراج خمسة في بلدي الرسم فوضوي جدا أكثر من هنا. نحن نريد أن نتأكد من أن أربع نقاط الآن إلى ستة. أربعة في نقاط القادمة إلى ستة. وستة في النقاط السابقة إلى أربعة. هذا هو هدفنا هنا، أليس كذلك؟ وهذا ما أعتقد أنك وقال ما يزيد قليلا هناك. [00:08:56] OK، لذلك دعونا الحصول على هذا أول قطعة. دعونا تفعل لها المؤشر السابق السابق. لذلك ينبغي أن نشير أربعة القادم لماذا؟ بالضبط، في هذه الحالة، ستة. لذلك ينبغي أن نقول المؤشر، المقبل. موافق؟ حسنا. لذلك دعونا نتخلص من هذه الصورة القبيحة ومحاولة لرسم واحد أجمل قليلا. لدينا رئيس القائمة هنا. ويشير إلى العقدة الأولى في لدينا قائمة مرتبطة، والتي قلنا هي أربعة. وهنا لدينا العقدة الثانية، وخمس. وعقدة لدينا الثالثة، ستة. مجرد محاولة لرسم بالضبط نفس الصورة، فقط قليلا أكثر نظافة. OK، لذلك أربعة بجوار ويشير في الأصل إلى خمسة. خمسة في نقاط القادمة إلى ستة. ستة في النقاط السابقة إلى خمسة. وخمسة في النقاط السابقة إلى أربعة. أجمل من ذلك بكثير! OK، بارد. [00:10:04] وحتى الآن، ما فعلناه فقط هنا، وهذا سطر من التعليمات البرمجية، التي تقول مؤشر سابقة المقبل، لذلك ماذا يعني ذلك؟ وهذا يعني إذا كنا نبحث في خمسة، انتقل إلى العقدة السابقة، والخطوة التالية يجب الآن أشر إلى الخمس المقبلة ل. ذلك أساسا، ما الذي يفعل وهذا ما محو هذا السهم ومما يجعل من تخطي حق أكثر من خمسة. هل هذا واضح؟ وأنا أعلم أن يمكن أن تكون سطحية قليلا. أرى بعض الإيماءات الرأس. هذا امر جيد. OK، بارد. والآن، ما هي الخطوة التالية؟ [00:10:39] لقد إعادة تعيين المقبل. الآن، والتي السهم الآخر هل أنا بحاجة إلى تغيير؟ هذا واحد هنا. ستة السابقة. نحن لا نريد سابقة ستة ل للإشارة إلى خمسة بعد الآن. نحن نريد أن نشير إلى أربعة. لا تجعل تلك الصورة معنى؟ وحتى الآن يمكن أن نتخذها في الواقع خمسة بها. لذلك دعونا الحصول على تلك القطعة. ماذا يجب أن أفعل قبل أن إعادة تعيين سابقة ستة إلى أربعة؟ أي أفكار هناك؟ [00:11:14] الجمهور: تحرير العقدة بين لهم من خلال تحديد ذلك إلى قيمة خالية؟ HANNAH: بارد. بالتأكيد، الهدف النهائي لنا هو سيكون لتحرير العقدة. لذلك يمكننا أن نفعل ذلك هنا. مؤشر مجانا. على الاطلاق. ولكن حتى قبل ذلك، دعونا just-- هدفنا الحق هنا هو وضع مؤشر المقبل سابقة يساوي مؤشر سابقة. أعرف أن هذا هو الحصول على التستر. حسنا، دعنا take-- بارد. يمكن للجميع مشاهدة هذا بيت القصيد؟ أم أنها فائقة صغيرة؟ [00:11:50] حتى قبل أن تنفيذ هذا الخط هنا، نريد للتأكد من أن مؤشر بجوار غير فارغة. لأنه إذا كان المؤشر المقبل لاغية، أي نوع من الخطأ سوف أحصل عندما أحاول مرجع مؤشر فارغة؟ الجمهور: خطأ SEG. HANNAH: وهناك خطأ SEG، جميل. حسنا، إذا كان هذا لا لاغية، وبعد ذلك يمكننا إعادة تعيين. ولدينا ست نقاط مرة أخرى إلى أربعة. الأسئلة حتى هذه اللحظة؟ نعم؟ [00:12:17] الجمهور: في البداية الخاصة بك إذا فعلت بيان، كنت يعني أن يكون السهم المقبل، أو (غير مسموع)؟ HANNAH: قصدته مؤشر السهم ن. ذلك أساسا، ما أحاول القيام به وأقول، العقدة الحالية التي أنا بالتكرار عبر، العقدة الحالية التي أنا أبحث في، وأنا تخزينها في المؤشر. وأريد أن أعرف مؤشر ل قيمة، وهو في هذه الحالة هو ن. وأريد أن أرى، هو عقدة أنا أبحث للعقدة أسعى لحذف؟ ولهذا السبب لدينا هنا مؤشر ن. [00:12:47] الجمهور: حتى السهم تسير إلى n، يمكنك تعيين قيمة وتخزينها في عقدة تسمى ن؟ [00:12:55] HANNAH: حتى انها مثل إذا أنا تمر هذه القائمة مرتبطة ومشيرا إلى خمسة. إذا كنت ترغب في الحصول على تلك القيمة، إذا أريد الحصول على هذا العدد، 5، لا بد لي من القيام مؤشر السهم ن. بارد؟ نعم. [00:13:07] الجمهور: هل N اسم متغير؟ HANNAH: نعم. لذلك إذا أردنا الوجه واحدة الى الوراء الشريحة، n هو اسم من قيمة داخل عقدة في قائمة مرتبطة لدينا. وأنا أعلم أنه يمكن الحصول على القليل الشيء مربكا لأننا أيضا واستدعاء الشيء أننا نريد حذف ن. حتى ذلك حيث أن سطر واحد يأتي من. نعم؟ [00:13:27] الجمهور: ماذا لديك [غير مسموع] كيف تعمل؟ مؤشر (غير مسموع)؟ [00:13:35] HANNAH: متأكد. تتحدث about-- التي الخط؟ الجمهور: السطر الأخير (غير مسموع). [00:13:44] HANNAH: متأكد، OK. لذلك دعونا ننظر إلى الصورة في محاولة لتفسير ذلك. أنا آسف، ل كاميرا، كان السؤال يمكن أن نفسر المؤشر السهم مؤشر المقبل سابقة. OK، لذلك دعونا نقول أننا في خمسة وهدفنا هو حذف الخمسة. لذلك المؤشر المقبل، أي من هذه ثلاث عقد لا أن تعطينا؟ هذا يقودنا إلى العقدة السادسة، أليس كذلك؟ [00:14:10] OK، وحتى الآن نطلبه لفترة الستة السابقة. موافق؟ ونحن إعادة تعيين هذه ليكون مساويا لأربعة، وهذا ما حدث لتكون سابقة في خمسة. وأنا أعلم، انها السوبر من الصعب تتبع. أنا حقا ننصح رسم صور إذا كنت تحصل على سؤال مثل هذا. نعم؟ [00:14:30] الجمهور: هو السبب في أن نحن لم يكن لديك (غير مسموع)؟ [00:14:37] HANNAH: بالضبط. لذلك كان السؤال، لماذا تفعل نحن لا تحتاج إلى التحقق من هنا؟ لماذا لا نحتاج للتأكد من أن المؤشر السابق لا يساوي قيمة خالية؟ وانها لأننا فصل بالفعل حالة إذا كان المؤشر في في البداية. سؤال جيد جدا. أي شيء آخر على هذا؟ OK، بارد. لذلك دعونا الانتهاء من ذلك. نحن تقريبا هناك. [00:14:59] حتى إذا ما هو عليه في الرأس؟ ماذا لو بدلا من تحاول حذف خمسة، أردنا فعلا حذف أربعة؟ ما أود القيام به؟ حسنا، أريد أن إعادة تعيين رأسي لماذا؟ يصرخ بها؟ الجمهور: واحد بعد ذلك. HANNAH: جميل. OK، لذلك نحن نريد أن تكون قائمة لافتا على كل ما لدينا مؤشر العقدة التالية هي. جيدة. وفقط للاكتمال أجل، كنا تريد أن تحقق أنه طالما قائمتنا ليس لاغيا، ما دام لدينا قائمة ليست فارغة، ثم أردنا أن نرتب سابقة يساوي جهدنا لاغية. السؤال حتى الآن؟ خطوة واحدة بعيدا from--؟ [00:15:53] الجمهور: هل سيكون إذا القائمة ليست مساوية لقيمة خالية؟ [00:15:55] HANNAH: نعم، أنت على حق تماما. أنا آسف جدا. غير القائمة ليست مساوية لقيمة خالية. رائع. في محاولة لجلب كل هذا على الشاشة. انها نوع من السقوط. آسف، والرجال. وأخيرا وليس آخرا، كل يتعين علينا القيام به هو العودة. موافق. وكان أن الكثير حشر بسرعة حقا. تأخذ ثانية للنظر أكثر من هذا. قل لي إذا كان لديك أي أسئلة. نعم؟ [00:16:20] الجمهور: إذا القائمة في الرأس، then-- الانتظار، فما باللك. [00:16:26] HANNAH: OK، جيد. لذلك هذا هو إذا القائمة في الرأس، نحن إزالته إلى ما نحن المدرجة. نعم؟ [00:16:31] الجمهور: هل يمكن ان توضح أول بيان إذا مرة أخرى؟ إذا كان المؤشر إلى n يساوي ن؟ HANNAH: متأكد. لذلك هدفنا من هذا كله هو وظيفة لحذف العقدة التي لديها قيمة ن. لذلك إذا وجدنا، ونحن بالتكرار عبر قائمة لدينا، عقدة مع قيمة ن، وهذا هو واحد ونحن نريد حذفها. لذلك كل من حذف يحدث داخل تلك كبيرة إذا البيان. هل هذا منطقي؟ باردة. نعم؟ [00:16:59] الجمهور: ربما كنت فقط لا يمكن أن نرى ذلك، ولكن لا تحتاج أيضا خط لالتمرير خلال قائمة؟ HANNAH: ممتاز. دعونا تحقق هذا الأمر قليلا، و سنقوم رمي هذا الحق في القاع. ربما مجلس لظل كانت فكرة أفضل قليلا. فكيف أود أن تحرك المؤشر إلى الأمام؟ [00:17:17] الحضور: المؤشر يساوي مؤشر زائد واحد. [00:17:20] HANNAH: جميل. بحيث يتيح لنا مواصلة بالتكرار عبر. موافق. الجمهور: لن يكون هناك شيء آخر؟ HANNAH: واحد مزيد من الوقت؟ الجمهور: لن يكون هناك وآخر بعد القديم كبيرة إذا بيان (غير مسموع)؟ HANNAH: أي جزء؟ أنا آسف. [00:17:38] الجمهور: إن اجتياز، لا ينبغي أن يكون هناك شيء آخر؟ HANNAH: أنت تماما يمكن أن يكون لها آخر. لأن لدي حق العودة هناك، وكنت لا تحتاج إلى شيء آخر. ولكن نعم، سؤال جيد. OK، نعم؟ الجمهور: هل يمكننا التفكير في مؤشر التي تتحرك من خلال قائمة كما أخذ على القيمة كل عقدة في القائمة؟ أو يتعين علينا أن نفكر في الأمر على النحو نوع من الخارجي إلى قائمة؟ [00:18:00] HANNAH: إما واحد على ما يرام، على ما أعتقد. الطريق أتصور أنها هي أقول، OK، أنا المؤشر. وهذا هو لي. هذا هو يدي. انا ذاهب للإشارة إلى مختلف الأشياء التي أريد أن تكرار خلال. أولا، أنا ذاهب إلى نقطة لرئيس القائمة. وأن يقول لي أنا الذهاب للإشارة إلى أربعة. وهكذا لي، ويجري الخارجي إلى القائمة، أنا يمكن أن نشير إلى كل عنصر من هذه العناصر. لذلك أنا أعتبر نفسي المؤشر. الجمهور: لذلك عندما قمت بحذف واحدة من تلك العناصر، حذف نفسك، إذا جاز التعبير. HANNAH: بالضبط. لذلك يمكنك حذف شيء كنت لافتا إلى. حتى في المثال رأينا حيث نحن تحاول حذف خمسة، عندما أكون لافتا إلى خمسة، أريد أن حذف شيء أنا لافتا إلى. حق بالضبط. نعم؟ الجمهور: هل نحن الحرص من حالة حيث n هو موجود في القائمة؟ HANNAH: إذا ن ليست في القائمة؟ كل ما سيحدث هو أنك الذهاب الى تكرار خلال وأعاد من خلال، وبعد ذلك، وأنت تسير للحصول على مؤشر كونها باطلة، ومن ثم وأنت تسير يتعين القيام به. [00:18:48] الجمهور: وكذلك الحال بالنسبة لدينا للعودة أي شيء؟ HANNAH: نحن يمكن. الطريقة التي إذا عرف هذا وظيفة، أنا فقط أقول أنه يعود باطل بغض النظر. ولكن هل يمكن أن يكون شيئا مثل العودة عددا صحيحا، وانها قد العودة 1 سلبية إذا فشلت. شيء من هذا القبيل. أسئلة with-- نعم؟ الجمهور: (غير مسموع)؟ HANNAH: عذرا؟ الجمهور: (غير مسموع)؟ HANNAH: متأكد. لذلك هذا هو actual-- مرة واحدة لقد فعلت كل هذا العمل من التحرك كل هذه السهام حولها، وكامل لدينا كان الهدف هو التخلص من عقدة أن نبحث عنه. حتى في هذه الحالة، وتحرير المؤشر، إذا أنا لافتا إلى خمسة، انها مثل محو هذه العقدة الوسطى. هذا هو المؤشر جزءا مجانا. هذا معقول؟ [00:19:29] الجمهور: ذلك حتى يعتقد كنت لا [غير مسموع]؟ [00:19:31] HANNAH: لذلك نحن المفترض في بداية كان لدينا بعض القائمة التي كان already-- كانت قد وضعت هذا معا. وذلك من أجل بناء هذا قائمة، وأنها يجب أن كنت (غير مسموع). باردة. أي شيء آخر مع هذا؟ نعم؟ [00:19:46] الجمهور: ما إذا كانت قائمة لا يساوي خط باطل؟ [غير مسموع]؟ HANNAH: الحق هنا؟ الجمهور: نعم. HANNAH: OK، كل ما أفعله وأنا مجرد التأكد من أنه قبل وأنا أحاول أن قائمة dereference، قبل أن محاولة الوصول السابق، أريد أن تأكد من أنه ليس لاغية لذلك أنا لا تحصل على خطأ SEG. باردة. [00:20:08] OK، وأنا أعلم أن هذا تماما الكثير من خلال الحصول على. حتى هذه الشريحة ستكون تتاح لك. لذلك يمكنك الذهاب من خلال ذلك في مزيد من التفاصيل. نعم؟ [00:20:17] الجمهور: لماذا قائمة (غير مسموع)؟ HANNAH: متأكد. القائمة بحيث تشير حقا إلى هذا العنصر هنا، العنصر الأول في القائمة. لذلك لا يمكن أن يكون لها سابقة. نعم؟ [00:20:31] الجمهور: هل نقطة مؤشر إلى نفس العنوان في الذاكرة؟ هل تشير إلى نفسها عنوان في الذاكرة كما العقدة أنها لافتا إلى؟ [00:20:40] HANNAH: نعم، فإنه يشير لهذه العقدة في الذاكرة. [00:20:43] الجمهور: الحق، لذلك عند [غير مسموع]؟ [00:20:47] HANNAH: بمعنى من المعاني، نعم. موافق. كل الحق، دعنا ننتقل مع هذا. وإذا كان لديك المزيد من الأسئلة، حول عصا في النهاية، ويمكننا أن نذهب من خلال ذلك مرة أخرى. OK، بارد. الآن، ونصل الى المضي قدما لتجزئة الجداول، محاولات، والأشجار، والتي حصلت السوبر دراية في خمسة،-مجموعة P سبيلر. [00:21:04] لذلك جدول التجزئة هو فقط مجموعة مع القوائم المرتبطة منفردة أو مضاعف قوائم نزوله منه مرتبط. لذلك لدينا نوعا من مجموعة النقابي. وكيف لنا معرفة أي من هذه صفائف دلاء للوصول الى، نستخدم دالة تجزئة. حتى في هذه الحالة، يمكن لأي شخص تخمين ما وظيفة تجزئة وسوف يستند فقط على بعض من المدخلات والمخرجات؟ [00:21:31] الجمهور: عدد حرف من الحروف الأبجدية. HANNAH: بالضبط. هو فقط يجعلهم في الترتيب الأبجدي. كل شيء يبدأ مع يتم وضع في المجموعة الأولى. يتم وضع كل شيء مع B في دلو الثاني، هلم جرا، وهكذا دواليك. رهيبة، OK. وظيفة تجزئة هو أي دالة التي تأخذ في كلمة واحدة وسوف اقول لكم ما دلو أنه ينتمي في. ذلك الذي الدخول في موقعنا مجموعة أنه ينتمي في. [00:21:55] هكذا في كل مرة أعطي بلدي التجزئة تعمل كلمة واحدة، يجب أن تقول لي نفس وضع كل مرة واحدة. حتى إذا كان علينا استخدام وظيفة تجزئة من الشريحة السابقة أين نحن الفرز من قبل الحرف الأول من الأبجدية، في كل مرة أعطي بلدي وظيفة تجزئة "تفاحة" يجب أن تعطيني دائما الى الوراء 0. حتى إذا كان لدي تفاحة لوضع جدول التجزئة بلدي، إذا أعطي "تفاحة" لبلدي وظيفة التجزئة، يجب أن نقول، انتقل وضعها في دلو 0. إذا أنا أبحث ل التفاح في جدول التجزئة بلدي وأنا أقول، حيث القوة التفاح يعيش، وكنت أسأل ظيفة تجزئة الخاص بك. وتقول، انتقل إلى دلو 0. حسنا؟ أسئلة مع وظائف التجزئة؟ رائع. [00:22:34] هنا هو أكثر قليلا شرح مفصل ما وظيفة تجزئة قد تبدو. حسنا. الآن، والمشكلة مع تجزئة وظائف هي في عالم مثالي، سيكون لدينا واحدة فقط شيء في كل دلو. ولكن في الواقع، هناك لا كلمة واحدة فقط الذي يبدأ ب A. ليس هناك كلمة واحدة فقط الذي يبدأ ب B. لذا في هذه الحالة، إذا نحن فجأة الحصول على "التوت" ونحن نريد لوضعها في جدول التجزئة لدينا، ونحن نرى، أوه، لا، الموز بالفعل هناك، ما نحن gonna القيام به؟ [00:23:03] حسنا، لدينا خيارين. الخيار الأول هو الخطية التحقيق، الذي يعني فقط go البحث دلو فارغ المقبل. الذهاب العثور على إدخال مجموعة فارغة المقبل. وضعت للتو "التوت" هناك. لذلك أنا أعلم أنه من المفترض أن الذهاب مع الموز في دلو واحد. ولكن مجرد وضعها في دلو ثلاثة، لأن دلو ثلاثة فارغة. وثمة خيار آخر هو على الارجح ما كنت تنفيذ في الخاص بك ف مجموعة، حيث كنت كان تسلسل منفصل. لذلك كل من الدلاء الخاص بك، كل واحد من عناصر مجموعة الخاص بك، حاصل ليس فقط كلمة واحدة، ولكن في الواقع حاصل على مؤشر إلى قائمة من الكلمات. بحيث إذا كان لديك الموز في جدول التجزئة الخاصة بك وأردت فجأة لإضافة التوت، لا مشكلة. فقط إضافة التوت إلى النهاية، أو ل بداية، من قائمتك المرتبطة. OK، رهيبة. أسئلة مع تجزئة الجداول قبل أن نذهب على؟ [00:23:58] حسنا. الأشجار ومحاولات. OK، لذلك كان هذا خيار آخر لتنفيذ القاموس. كنت قد جعلت المحاولة. لذلك هو نوع خاص من الشجرة التي يتصرف مثل جدول تجزئة متعدد المستويات. لذلك عليك أن ترى الصورة حيث لديك صفيف يشير إلى مجموعة من المصفوفات التي تشير إلى مجموعة من المصفوفات التي تشير إلى مجموعة من المصفوفات. وسنرى بالضبط ما الذي قد تبدو على شريحة المستقبل. وبشكل أعم، شجرة هو فقط أي بنية بيانات التي كانت البيانات نظمت في بعض التسلسل الهرمي. فأين رأينا لدينا بعض نوع من التفاهم من المستوى الأعلى، وهو المستوى التالي، المستوى التالي، وهو المستوى التالي. لذلك هذا هو على الأرجح الأكثر واضحة مع بعض أمثلة محددة. حتى هنا شجرة لدينا. يمكنك أن ترى أنه لديها مستويات معينة أن نبدأ مع تلك العقدة الجذرية، واحد. ويمكننا أن نذهب إلى أسفل من خلال شجرة لدينا. [00:24:50] شجرة ثنائية هي نوع معين من شجرة. ومواصفات الوحيدة لشجرة ثنائية هو أن كل عقدة لها في معظم اثنين من الأوراق. لذلك كنت لن نرى أي من هذه العقد لديها ثلاثة أو أربعة أو بعض رقم آخر من الأوراق. وحتى ذلك الحين أكثر تحديدا هي شجرة البحث الثنائية حيث كل عقدة لليسار عقدة ستكون لدينا قيمة أصغر. وكل قيمة لل الحق سيكون أكبر. حتى إذا كنت ترى 44 هو في الجذر لدينا، إلى اليسار، 11، 22، و 33 كلها أقل من الجذر لدينا. وعلى الحق جميعا أرقام bigger-- 66، 55، و 77. ويحمل هذا العقار الحقيقية في كل مستوى من الشجرة. [00:25:37] لذلك عندما نذهب الى 22، 11، و 33، لا يزال 11 أصغر من 22 و 33 أكبر من 22. وهذا يجعل من السهل للبحث لأننا إذا كنت تبحث عن رقم، نحن نعرف بالضبط ما هي فرع لمتابعة أسفل. هذا ما ينبغي أن أذكر لكم قليلا من البحث الثنائي. نعم؟ [00:25:56] الجمهور: لذلك عندما كنت وصف ثنائي، قلت لها في معظم اثنين من يترك؟ HANNAH: مم-HM. الجمهور: هل يمكن أن يكون أقل؟ HANNAH: نعم. لذلك دعونا نقول، على سبيل المثال، يمكنك لم يكن لديهم حتى عدد من الأمور وأنت لا يمكن أن تملأ كل ما تبذلونه الأوراق، وأنه بخير إذا كان أحد لديها واحد. موافق؟ رائع. أي أسئلة أخرى على الأشجار؟ موافق. [00:26:16] العودة إلى محاولات لدينا كما كنت أتحدث حول وقت سابق قليلا، كيف لدينا هذه المصفوفات متعددة المستويات. حتى في هذه الحالة، ونحن نبدأ في الأعلى. ويمكننا متابعة أي كلمة معينة إلى أسفل. لذلك دعونا نقول اننا نريد للبحث عن تورينج. نبدأ في T، اتبع عليه لصفيف يحتوي U، وتابع أنه لأسفل حتى نحن وصول إلى هذا دلتا القليل الذي يخبرنا، نعم، هل وجدت كلمة واحدة. اضحا على محاولات؟ أي شيء للذهاب إلى هناك؟ نعم؟ الجمهور: هل رمزا للدلتا يجب أن تشغل مساحة في المحاولة؟ HANNAH: نعم، لذلك لا بالضرورة حتى بحاجة إلى أن يكون الدلتا. ولكن نحن بحاجة إلى طريقة ل نقول لدينا computer-- آسف، بحيث أننا نعلم أن TUR ليس كلمة واحدة. لأن دعنا نقول لم يكن لدينا هذا مفهوم الدلتا، وهذا مفهوم تهنئة، هل وجدت كلمة واحدة، انها ستمضي من خلال وتكرار T-U-R، ثم يقول، رائع، لقد وجدت ذلك! ويجب أن تكون كلمة واحدة. لكنها في الحقيقة لا. نريد كله تورينج أن تكون كلمة واحدة. لذلك يجب أن يكون لدينا شيء في نهاية التي تقول، التهاني، كنت قد وجدت كلمة المشروعة. الجمهور: حتى إذا كان لديك مثل 26 حرف في الأبجدية، سيكون لديك فعلا 27 مفاتيح في محاولة لديك؟ [00:27:24] HANNAH: ممتاز، نعم. حتى في الواقع، أعتقد أن سيكون على الشريحة التالية. تا-دا! حيث إذا كان لديك عقدة في محاولة الخاص بك، وكنت ستكون لدينا 27 طفلا بدلا من 26. أي أسئلة مع ذلك؟ نعم؟ الجمهور: لماذا يحاول يستغرق ذلك مساحة كبيرة (غير مسموع) كما تذهب؟ لماذا هو يعتبر أن يكون [غير مسموع]؟ HANNAH: متأكد. دعونا نعود. والسؤال هو، لماذا ويحاول أكبر كثيرا من شيء من هذا القبيل جدول تجزئة. لذلك لكل من هذه المستويات، حتى لو لم تكن مرسومة هنا، أن يكون لديك كل الحروف 26. والسبب أنه لا يمكن نقول، أوه، ولكن مثل لتورينج، I لا تحتاج إلى أي من تلك نفس الأشياء على مستوى U. حسنا، إذا فجأة كنت أريد أن أضيف وهو الأمر الذي كان مثل T-H، كنت بحاجة لديها القدرة على إضافة هذه الكلمة. لذلك على كل حرف واحد، كنت ستكون لدينا لديك مجموعة من صفائف نزوله منه. لذلك يمكنك أن ترى كيف انها تريد الحصول على كبيرة حقا، حقا بسرعة. أي أسئلة أخرى؟ حسنا. نعم؟ [00:28:29] الجمهور: عندما لا يحاول أسرع من الجداول التجزئة؟ [00:28:33] HANNAH: عندما لا يحاول أسرع من الجداول التجزئة؟ حتى إذا كان لديك حقا سيئة وظيفة التجزئة. لذلك دعونا نقول كنت مثل، وهنا ظيفة تجزئة الخاص بك. بغض النظر عن كلمة تستطيع أن تعطيني، وأنا دائما الذهاب لوضعها في دخول مجموعة 0. وهكذا نحن في نهاية المطاف مع مجرد وضع كل شيء في لائحة واحدة كبيرة مرتبطة منذ فترة طويلة. وذلك من شأنه أن وقت البحث تأخذ في أسوأ الأحوال ن اذا كان في النهاية من قائمتنا. مع محاولة، علينا فقط أن تكرار من خلال الحروف في الكلمة. لذلك حتى لو أضفنا مجموعة المزيد من الكلمات في محاولة لدينا، انها لن تأخذنا لفترة أطول للبحث عن كلمة معينة. [00:29:09] كل ما عليك القيام به هو، ل سبيل المثال، في هذه الحالة، دعنا نقول نحن نبحث عن التكبير، سيكون لدينا فقط لتكرار عبر Z-O-O-M، أربعة أحرف. لذلك هذا مجرد طول التكبير كلمة. لا يهم كم المزيد من الكلمات وضعنا في هذه المحاولة. يمكننا دائما الحصول عليه في تلك الخطوات الأربع. رائع. نعم؟ [00:29:32] الجمهور: ذلك [غير مسموع] غير صفيف، أليس كذلك؟ [00:29:34] HANNAH: مم-HM. الجمهور: إذا كنت تبحث عن (غير مسموع)، سيكون لديك للذهاب من خلال مجموعة ليجد [غير مسموع]؟ HANNAH: متأكد. الجمهور: لا تأخذ المزيد من الوقت؟ HANNAH: إذا أنا ذاهب ل القول بأن مجموعة بلدي دائما سيكون A، B، C، D، E، F، G، بلاه بلاه بلاه، حتى لو كنت أعرف دائما انها في نفس الترتيب المحدد، لو كنت أعرف دائما انها حسب الترتيب الأبجدي، يمكنني أن أقول يا هو عدد فلان في الأبجدية. القفز إلى ذلك المكان. لأن نتذكر، مع المصفوفات، يمكننا الوصول أي عنصر من عناصر هذا الصفيف في ثابت الوقت إذا كان لنا أن نعرف أين نحن نبحث. نعم؟ [00:30:09] الجمهور: على سابقة الشريحة (غير مسموع) 27، ولكن 26 لأول واحد. [00:30:14] HANNAH: عذرا؟ [00:30:15] الجمهور: ليست الأولى واحد 0، لذلك لن يكون 26؟ [00:30:18] HANNAH: متأكد، لذلك عندما نقول 27، وهذا الذهاب إلى تعطينا مؤشرات من 0 إلى 26. ولكن إذا كنت تعول الواقع أولئك الذين يسعون، فإنه سيكون من 27. سؤال جيد. أي شيء آخر؟ نعم؟ [00:30:31] الجمهور: هكذا هم محاولات أبطأ من الجداول التجزئة؟ [00:30:34] HANNAH: يحاول ستكون، في نظريا، أسرع من الجداول التجزئة ولكن تناول المزيد من الذاكرة. نعم؟ الجمهور: (غير مسموع)؟ [00:30:45] HANNAH: أنا آسف، لم أسمع لك. الجمهور: (غير مسموع). 0-25 يمنحك 26. [00:30:54] HANNAH: 0-25 شأنه تعطيك 26، والحق. [00:30:56] الجمهور: وبعد ذلك (غير مسموع). HANNAH: الحق. وبالتالي فإن عدد اننا تحديد هو عدد الأشياء في مجموعة لدينا. حتى إذا كان لدينا 27، انها سيعطينا 0 من خلال 26، والتي سوف تعطي غرفة بنا لل، في هذه الحالة، أنا لا بما في ذلك الفاصلة العليا. لذلك نحن نحصل من 0 إلى 25 ل 26 حرفا الأولى من الأبجدية، أو كل 26 حرفا من الأبجدية. ثم أن الأخير الشيء، عند الدخول 26، هو الذهاب ليكون الاختيار علامة، أو الدلتا. أي شيء آخر؟ رائع. فقدت بلدي الفضاء. OK، بارد. [00:31:31] لذلك نحن لمست بالفعل على هذا. ولكن تجارة كبيرة قبالة بين محاولات والجداول التجزئة غير أن محاولات توفر، في نظريا، ثابتة بحث عن مرات ولكن استخدام مجموعة كبيرة من الذاكرة. كل الحق، والآن لدينا قليلا هياكل أقل تعقيدا، ونحن سوف يتعين القيام به مع C، وسوف نمضي على طول الحق. [00:31:49] حتى مداخن، رأينا هذا في محاضرة أين أنت لدينا شيء من هذا القبيل كومة من الصواني حيث آخر شيء كنت وضعت على المكدس يجري ليكون أول شيء تقلع. وهذا ما يعرف حقا كومة غير أن آخر شيء كنت وضعت على ستكون أول الشيء الذي تقلع. والمصطلحات التي نستخدمها إذا نحن في طريقنا لوضع شيء، إذا نحن في طريقنا لإضافة شيء ل كومة لدينا، فإننا ندعو أن يدفع. وإذا أخذنا شيئا خارج، ونحن نسميها ظهرت. وإذا كنا في طريقنا لل تنفيذ المكدس، نحن بحاجة الى التأكد من أن تتبع كل من الحجم والقدرة. وبالتالي فإن العدد الإجمالي لعناصر ما في وسعنا عقد والعدد الحالي من العناصر أننا القابضة. [00:32:27] وعلى نحو مماثل للغاية، لدينا قوائم الانتظار. والفرق الوحيد هو بدلا من مع مداخن، قلنا وآخر شيء وضعنا على هو أول شيء نحن الاقلاع. حتى مع الطوابير، و أول شيء نضع في سيكون ل أول شيء نأخذ بها. لذلك هذا هو مثل إذا كنت بطانة فعليا حتى في متجر وكنت يجري ساعد، ثم أول شخص في خط يجب أن تكون أول شخص أن يساعد. بحيث سيكون طابور. [00:32:52] لذلك نحن بحاجة إلى تتبع الحجم والقدرات، ورئيس منذ نحن ذاهب الى اتخاذ كل شخص قبالة الجبهة القائمة بدلا من الظهر. أسئلة حول ذلك؟ أي أسئلة C التي يزعجك؟ هياكل البيانات، أي من تلك الأشياء متعة؟ كل الحق، بارد. ولذا فإنني سوف يسلمها لأليسون ل القفز الى بعض المزيد من البرمجة. [00:33:14] ALISON: أوه، سنرى. سنرى جيدا كيف أفعل هنا. OK، انا ذاهب الى محاولة وتطير من خلال هذه الاشياء، والرجال. ذهبت هانا جدا في المتعمقة بشأن جميع الأمور لها. انا ذاهب الى محاولة لإعطاء لكم لمحة سريعة الانفجار حتى نتمكن من الحصول على دافين مع جميع متعة جافا سكريبت والأمن الأشياء أنه ربما كنت في الواقع أريد أن أسمع المزيد عن. [00:33:33] OK، كما قال هانا، إذا لديك أي أسئلة، انا ذاهب بسرعة كبيرة، من فضلك، اسمحوا لي أن أعرف. سأجيب على الأسئلة حسب الضرورة. حتى أن تبدأ، ونحن في طريقنا لتبدأ على الارجح واحدة من أول الأشياء جدا علمت لكم مع شبكة الإنترنت البرمجة والأذونات. ينبغي لقد CHMOD ذلك، يا رفاق كان الماجستير في هذا مع جميع على شبكة الإنترنت البرمجة التي قمت تم القيام في الآونة الأخيرة. انها في الاساس مجرد أمر أن يغير أذونات أو أذونات الوصول من كائنات نظام الملف لدينا. بطبيعة الحال، إلى الواقع نرى هذه، إذا كنت تواجه أي مشكلة مع هذه خلال مجموعات مشكلتك، كنت قد تستخدم ليرة سورية -l، وهي فترة طويلة، للحصول على عرض نوع من مثل هذا، حيث كنت في الواقع نرى كل الأذونات للملف. [00:34:16] وحقا، ونحن ذاهبون لمجرد الذهاب من خلال بسرعة كبيرة جدا فقط كثيرا ما كل من هذه يعني. لذلك علينا د الحق هنا، والتي تقف فقط للدليل. من الواضح هنا، ونحن نرى RWX، التي قابل للقراءة، للكتابة، وقابل للتنفيذ. ويمكن أيضا أن تمثل هذه كما بت، ونحن سوف ندخل في الصفحة التالية. لذلك كل ثالوث التي شهدناها هنا، لذلك فمن ثلاث ثلاثيات. لقد RWX، ص شيئا x و ص لا شيء X لهذا الملف الأول. فمن هذا الهيكل العام. [00:34:49] لذلك لدينا بعض الدليل. لدينا بعض مجموعة من المستخدمين مع هذه الأذونات. بعض مجموعة لديها هذه الأذونات، والعالم الذي لديه إذن. يمكنك التفكير في هذه كما ثالوث. يمكنك التفكير في هذه إلى ثلاثة أجزاء. حتى أنها يمكن أن تعقد القيم في أي مكان من 0 حتى إلى 7، وهذا هو السبب في بعض الأحيان كان علينا أن تفعل شمود 600 بدلا من شمود RW أيا كان. أننا سنصل إلى مثال هناك. ولكن في الأساس، يمكنك أن تفكر هذه إما فقط RWX، أو يمكنك نفكر بها بعض عدد أين هذا واحد الأول هنا يمثل رقما بين 0 و 7، وهذا واحد الثاني يمثل رقما بين 0 و 7، والثالث يمثل عددا بين 0 و 7، OK؟ [00:35:38] ص لديها قيمة 4. ث لديه قيمة 2، والعاشر لديه قيمة 1، والذي هو السبب في هذا سيكون إذن هنا أن CHMOD 700. لأنه في هذه الحالة هنا، فإنه يقول نحن وقد بت الأول وانقلبت هناك جرا. لذلك لدينا 4 للقراءة. وانقلبت بت الثاني على ل ث، وهو 2، وحتى الآن لدينا 6. وانقلبت بت الثالث على ل x، والذي هو 1، حتى نحصل على سبعة. وبالطبع، لدينا مجموعة والعالم لدينا هي كل 0. لذلك هذا هو أيضا يعادل شمود 700. وسوف أحاول بالتأكيد ل فهم التعيين بين هؤلاء. لست متأكدا إذا كان لديه الخروج على مسابقة من قبل، ولكن سيكون ل السؤال الذي أود أن أسأل. [00:36:18] فقط قليلا حتى تسير الى مزيد من شمود هنا، هنا هي عامة جدا هيكل مكالمة شمود. وذلك بطبيعة الحال، ونحن قد شمود هنا. المراجع، ما يشير هذا إلى غير الذين نحن إعطاء هذه الأذونات ل أو الذين نحن اتخاذ هذه أذونات بعيدا عن. لذلك لدينا هنا في الأذونات، وكأننا قد تعطى لك شمود زائد س، كما سنرى في وقت قريب. ويعني مجرد إعطاء هذه محددة أذونات للجميع. منحهم للجميع. لذلك يمكن أن يكون جيدا جدا ش زائد س أو ز بالإضافة إلى x أو س س زائد أو متعددة منها. بحيث الجزء الأول هو دائما ستكون المراجع. من نحن إعطاء هذه الأذونات ل، أو الذين نحن نقلهم بعيدا عن؟ [00:37:03] والثاني هو المشغل. لذلك كنت الرجال قد تناولت في معظمها زائد. وهذا يعطي صلاحيات ل أيا كنت منحهم، في حين ناقص، منطقيا، ويزيل لهم. لذلك لا شيء رهيب جدا هناك. وسائط ثم هو ما تحدثنا عنه مع القراءة والكتابة، أو تنفيذ. حتى زائد س تعني إعطاء قابل للتنفيذ أذونات للجميع. وبعد ذلك، بالطبع، والتي ملف أو دليل معين. موافق؟ الجميع جيدة مع شمود؟ ليس سيئا للغاية؟ [00:37:37] حسنا، HTML، أي من كنت العمر ما يكفي علي: ماي ​​سبيس العمر؟ أنا أرسلت هذا القسم بلدي، وحرفيا نصف الشعب نظرت في وجهي وكأنني مجنون. وكنت مثل، الرجال، نحن لسنا أن العمر. هيا. حتى لغة توصيف النص التشعبي، انها بصراحة مجرد وسيلة بالنسبة لك لعرض بعض الامور على شبكة الإنترنت. لذلك هو لغة الترميز. انها ليست لغة البرمجة. ليس هناك منطق في ذلك. بل هو مجرد تغيير يتم عرض طريقة شيئا. حسنا، هذا هام تمييز لجعل. انها تعتبر لغة ترميز، ليست لغة البرمجة النصية. [00:38:12] حتى هنا لدينا علامات HTML لدينا. على هذه الشريحة هي على الأرجح أكثر من تلك التي يجب أن تكون على دراية وتكون مريحة حقا مع. لذلك من الواضح، لدينا لدينا علامة HTML، والتي يعين أن كل شيء في بين هذين سيكون HTML. لدينا بعض الارتباط، والتي من الواضح سوف اعطيكم رابط إلى صفحة ويب خارجية. بعض العنوان، داخل رؤوسنا هنا. ونحن لدينا الجسم مع H1، وهو رأس، لذلك سوف تجعل من لطيفة وجريئة وأكبر. وبعد ذلك، لدينا بعض ص، وهي الفقرة. ربما يجب عليك معرفة ويكون على دراية الأشياء مثل كيف إدراج صورة، هي هناك فئات رأس أخرى؟ سأكون بالتأكيد مريحة مع شعبة. لذلك فان هذه لديها أغلبية من الأكواد التي يجب أن تكون على دراية. لكن بطبيعة الحال، كما هو الحال مع كل شيء في CS 50، والقائمة ليست شاملة. لذلك تأكد من فرشاة على ذلك. [00:39:08] CSS، لذلك CSS، إذا كان أي منكم مشاهدة ندوة بلدي من قبل أسبوعين، هو في الحقيقة مجرد وسيلة أسلوب صفحة الويب الخاصة بك؟ OK، لذلك لدينا بعض لغة الترميز. HTML، التي تأخذ الرعاية من مجرد النص وحيث أنه قد يكون على الصفحة. لكن CSS هو حقا ما يجعلها جميلة. هل يمكن أن يكون في هذه HTML الخاص بك الملفات، ولكن كما سنتحدث عنها لاحقا، وأنا متأكد من أنه قد تكون الشريحة القادمة، هي ممارسة شائعة، وفعلا ممارسة نشجع حقا، بالنسبة لك للحفاظ على فصل عندما كنا الحديث عن MVC وهذا النموذج كله. هذا هو حقا ما يغذي هذا في. [00:39:42] حتى CSS هو مجرد وسيلة ل جعل الامور تبدو جميلة. الأمور هنا، مثل الجسم و#title و. معلومات، وتسمى هذه محددات وما ما يفعلونه هو أنهم تحديد أشياء محددة داخل ملف HTML الخاص بك وتطبيق أيا كان أسلوب، أيا كان نوع من الأشياء التي تريدها، إلى أن عنصر معين من الويب الخاص بك الصفحة. حتى هنا، لدينا لون الخلفية ولون وعائلة الخط الذي يجري تطبق على كل ما هو في الجسم. حتى إذا نظرنا إلى هنا، فإنه لن تنطبق على اللقب. فإنه تنطبق فقط على ما هو في هذه محددات الجسم، OK؟ [00:40:22] مع عنوان هنا، وهذا هو سيكون نفس الشيء، لون النص يجري الأزرق لن يؤدي الا أن تؤثر على ما هو داخل محددات العنوان. وكذلك المعلومات هنا، سوف يكون النص وردي، كل ما في المعلومات، والتي هي هنا. ذلك الشيء الوحيد الذي سيكون ردي على هذه الصفحة هو التاريخ، الاثنين 17 نوفمبر، 2014. OK، لذلك CSS هو مجرد وسيلة ل الحصول على مزيد من السيطرة over-- نعم؟ [00:40:48] الجمهور: لماذا لديك لاستخدام التجزئة مع العنوان؟ [00:40:51] HANNAH: الشريحة التالية، وعد! أننا سنصل هناك. لذلك هذا هو السبب في أننا لديك لاستخدام التجزئة. حتى محددات تأخذ على ثلاثة الرئيسية النماذج التي نتحدث يا رفاق عنه. I fyou تريد معرفة المزيد، هناك الكثير من هناك. هناك وثائق CSS كبيرة. هناك اسم العلامة، التي لديها ما تفعله مع مجرد الخاص به العادية في HTML. لذلك H1، ص، شعبة، H2، هذه الأنواع من الأشياء. ويمكننا أن مجرد اسم تلك كما هو. لذلك كما نرى هنا مع الجسم، انها علامة طبيعية. حتى نتمكن من مجرد وضع الجسم عند ونحن نتحدث في ملف CSS لدينا. [00:41:26] مع العنوان، والسبب كله نحن لديك هذه التجزئة هي لدينا ما يعتبر ID. لذلك ينبغي أن يكون دائما ID فريدة من نوعها داخل صفحة HTML الخاصة بك حتى عندما كنت في اشارة الى ذلك، كنت أعرف أن كنت في اشارة فقط لشيء واحد محدد. حتى في هذه الحالة هنا، مع شركائنا H1 هنا، CS 50 دورة الاستعراض، لدينا معرف العنوان. وذلك من أجل الرجوع فقط إلى أن لدينا قطعة من HTML، ونحن نفعل عنوان التجزئة. فقط من خلال الاتفاقية، يتم تعيين معرفات مع تجزئة أمامهم. في نفس الطريق، ونحن نرى المعلومات هنا هي فئة. وهكذا فئة مع CSS هي تسمى فئة نقطة أو نقطة مهما كانت تلك الفئة هي. حتى في هذه الحالة هنا، انها من المعلومات. [00:42:10] لذلك أنا أعتبر الظهر. كل من هذه ستكون الوردي لدينا CSS هنا لديهما فئة من المعلومات. وفي ملف CSS، لدينا المعينة أن أي شيء مع فئة من المعلومات يجب أن تكون وردية اللون. هل هذا يعقل؟ نعم؟ [00:42:27] الجمهور: لو كنت لجعل كل شيء في أبيض الجسم، ثم محاولة إجراء شيء داخله الأزرق، التي من شأنها أن تسبب مشاكل؟ [00:42:34] HANNAH: لذا CSS هو أوراق الأنماط المتتالية. وبغض النظر عن وجهه نحو سوف أسفل الأسبقية. حتى إذا كنت تفعل شيئا مع الجسم، ويمكنك جعل كل شيء أبيض، ثم في وقت لاحق قمت بتغيير عنوان أو قمت بتغيير النص داخل الجسم، فإنه يقوم بالكتابة فوق ذلك. لذا فان أي شيء تجاه سوف أسفل الأسبقية. نعم؟ [00:42:56] الجمهور: ومعرفات فريدة من نوعها، ولكن الطبقات يمكن أن يكون أكثر من ذلك؟ HANNAH: الحق. لذلك يجب أن تكون معرفات فريدة من نوعها، والطبقات يمكن الرجوع إلى أشياء كثيرة كما كنت ترغب. أي أسئلة أخرى؟ نعم. [00:43:09] الجمهور: (غير مسموع). وأنا أتساءل عما إذا كان أن يحدث فرقا. HANNAH: أنا آسف، ما هو السؤال؟ الجمهور: هناك صغيرة "F" ورأس المال "واو" HANNAH: حتى الفرق بين "و" صغيرة ورأس المال "F" لا ينبغي أن تحدث فرقا. حتى "و" سيكون 15 في اي من الاتجاهين. بارد، أي شيء آخر؟ الجميع جيدا، CSS؟ نعم؟ [00:43:30] الجمهور: آسف. هل يمكن أن يكون فئة وID؟ [00:43:35] HANNAH: نعم، يمكنك ذلك. أشياء يمكن أن يكون كل فئة وID. وأنا أوصي اختبار هذه بنفسك. CSS سوف تتعلم أفضل فقط بجعل شيء، صفحة ويب بسيطة جدا، رسم عدد من CSS، وفقط رؤية كيفية تفاعلها. وسوف تكسب أنت حسنات جيدة جدا، بمعنى بديهية لكيف يعمل. [00:43:56] OK، الجميع جيدة مع CSS؟ كنت جميع الذهاب الى جعل مواقع جميلة مع CSS الآن. OK، وأفضل الممارسات، فقط الأشياء أن نأخذ في الاعتبار، فإن الأمور that-- هذا هو السبب في أننا ترسو لكم لمصمم وغيرها. حتى إغلاق كافة علامات HTML الخاص بك. حتى إذا كان لديك هيئة مفتوحة، ينبغي أن يكون هناك هيئة وثيق. إذا كان لديك فقرة مفتوحة، يجب أن يكون هناك إغلاق الفقرة. تحقق لمعرفة بالتحقق من صحة صفحتك. وينبغي أن تكون يا رفاق مألوفة جدا مع هذا من سبعة مجموعة P مع CS 50 التمويل مع المدقق W3. وكما قلت من قبل، واحدة من النماذج لدينا كبيرة وفصل أسلوبك مع CSS من العلامات الخاصة بك، والتي هي HTML. وبعد ذلك، بالطبع، لدينا هذا XKCD كبير إلى هنا. ياي، والإغاثة هزلية! [00:44:38] OK، TCP / IP. بين هذه وHTTP، أساسا انهم على حد سواء البروتوكولات. لذلك يمكن أن مجرد التفكير منهم كمجموعة من القواعد التي تحكم كيف تسير الامور التحرك عبر الإنترنت. لذلك التحكم في الإرسال بروتوكول، أو بروتوكول الإنترنت، هو مجرد وسيلة للتأكد من يحصل أن البيانات حيث انها تسير وأن نعرف إذا نحن من أي وقت مضى في عداد المفقودين البيانات. إذا كان الأمر كذلك يا رفاق بذاكرتي إلى محاضرة بضعة أسابيع مع ديفيد حيث كان لدينا أربعة أظرف، فإنها باتت معدودة كل مثل واحد من أربعة، اثنين من أربعة، ثلاثة من أربعة، أربعة أربعة، وهذا هو مجرد مجموعة من القواعد. قلنا، OK، كلما نحن ارسال حزمة أكثر من واحد، نحن نذهب لعددهم مع ما هو عدد وكم مجموعه أن يجب على المستخدم الحصول عليها. [00:45:19] وهذا مجرد قول من وتلقي البيانات سواء كانت قد حصلت على كل شيء أو إذا شيء ضاعت على طول الطريق. وأنهم بحاجة إلى أن نسأل عن ذلك مرة أخرى. هذا هو في الحقيقة مجرد مجموعة من القواعد. هذه هي الطريقة التي يمكنك التفكير في الأمر، حسنا؟ وأيضا، فإنه يحدد الميناء، الذي يا رفاق can-- أعرف أثناء المحاضرة، كان لديهم قائمة كاملة من الموانئ. لكننا لا يكون لهم هنا الآن. [00:45:41] بروتوكول نقل النص التشعبي ذلك هو، مرة أخرى، فإنه من بروتوكول آخر. لذلك فمن مجموعة أخرى من القواعد التي تحكم، في هذه الحالة، كيف يتم نقل النص التشعبي. لذلك يسمح فقط المتصفحات التحدث إلى خوادم الشبكة. وكما قلنا هنا، انها مثل المصافحة الإنسان. انها مجرد وسيلة للحكم كيف خادم الويب هو الذهاب إلى التفاعل مع متصفحك. ولدينا فقط بضعة أمثلة. لدينا بعض الطلبات هنا حيث GET هو الأسلوب. لدينا HTTP 1.1، وهو إصدار بروتوكول بالنسبة لنا. ومن ثم، المضيف، وهو ما نحاول في الواقع للوصول. ومن ثم، وكما ترون هنا، ونحن الحصول على بعض استجابة مع هذا 200 OK لدينا رمز الاستجابة HTTP. لدينا قائمة كبيرة سأشارك لسحب ما يصل في ثانية واحدة أن يا رفاق يجب أن يكون على دراية. ولدينا هذا النوع محتوى النص / HTML، الذي يقول فقط ما نوع البيانات نحن تلقي من الخادم، OK؟ هذا المضيف وهذا نوع المحتوى هي جزء من رؤوس HTTP. هل يمكن أن يكون عدد قليل من أو قليلا كما ضرورية لسياق ما كنت تتعامل مع. أحيانا سيكون لديك الكثير من المعلومات الواردة من الخادم الخاص بك. ربما انهم يطلب الكثير المعلومات من المستخدم. انه يختلف تبعا للسياق. اذا نظرتم الى CS 50 دراسة، هناك الكثير على ذلك. ولكن لدينا الكثير للحصول على من خلال، لذلك انا ذاهب للذهاب قدما الحق إذا وهذا موافق مع يا رفاق؟ باردة. انتظر. أنا بالتأكيد يكون هذا اللائحة بأكملها of-- هاه! أنا لا أعرف لماذا هذا هو على طول الطريق أكثر من هنا. ظننت أنني انتقلت حرفيا ذلك بينما كنت sitting-- [00:47:15] دافين: هل تريد أن يعلم ذلك؟ أو هل تريد مني أن يعلم ذلك؟ [00:47:17] الجمهور: اعتقد اننا يمكن فقط تبين لهم لتبدأ. أعني، يمكنك الذهاب إلى تلك الجهود، ولكن أنا اعتقد انه بذل المزيد من الشعور منذ I كان مجرد الحديث عن الأوضاع HTTP. وحتى هنا في اللائحة بأكملها. أعتقد أن ما سيحدث هو دافين ستذهب إلى وقت لاحق. ولكن هناك قائمة كاملة، وهو معاينة طعم قادمة. OK، نحن ذاهبون الى blow-- هذا هو الذهاب أن تكون دورة مكثفة PHP لا مثيل لها. [00:47:41] لذلك PHP، النص التشعبي قبل المعالج، انها معكوس تاجي عودي، وهو ما يعني كان اسمه شيء آخر. ومن ثم كانت عليه، وهذا لا يجعل حقا معنى. لذلك سموا فقط it-- وكان أحد الاختصارات حتى جعلوا مجرد أنها PHP المعالج النص التشعبي، والتي فقط لا معنى له. قصة ممتعة. انها لغة البرمجة. لذلك بقدر ما نؤكد أن HTML ليست لغة برمجة، انها لغة الترميز، PHP هي لغة البرمجة. كيف تعلمون هذا هو لأن هناك منطق. هناك الشرطية. لدينا المتغيرات، بينما نحن لا شيء من تلك الأشياء في HTML. [00:48:12] كل الحق، ثم لدينا هذا القليل قليلا هنا وهذا مثل طعم PHP. حتى الأساسيات، أسماء المتغيرات تبدأ مع علامة الدولار. الكثير من الناس مثل ذلك. تذكر منا المال. كل شيء عظيم. نحن جميعا نريد PHP. لذلك نحن لم تحدد نوع متغير بعد الآن. تقرر في وقت التشغيل. وسوف يقوم المترجم أن يكون مثل، أوه، سنقوم فقط من خلال تشغيل، وفقا للسياق، سنرى ما هي أنواع من أنواع هذه المتغيرات تحتاج لديهم. ليس هناك وظيفة الرئيسية. سيتم تشغيل فقط الأشياء. يا رفاق مع الاستيراد الخاص بك في -مجموعة P الماضي، ستلاحظ ذلك. لم يكن هناك حقا وظيفة الرئيسية. كنت كتبت للتو ما أردت أن يحدث. وحدث ما حدث مجرد نوع من. ولهذا PHP بالنسبة لك. [00:48:56] صفائف متشابهة جدا. لا يزال لدينا هذه الفئة. هنا، لدينا بعض متغير دعا آر، وانها على قدم المساواة علي: لدينا وضعها الطبيعي قوس التدوين. ولدينا بعض القيمة الأساسية. والفرق كبير بين C و PHP صفائف هو أننا يمكن أن يكون هذا associate-- يمكننا ربط القيم لمفاتيح. وذلك بدلا من مجرد وجود صفيف تتم فهرسة من قبل عدد أو موقف من هذا العنصر في المصفوفة، يمكننا ربط فعلا مع مفتاح. حيث يمكننا أن نقول، حسنا، أريد أيا كان ويرتبط القيمة مع الفاكهة. وربما لدينا ذهب الفاكهة إلى الموز. لذلك سوف أعود الموز بالنسبة لنا. [00:49:41] ولكن في الأساس، والأكثر شيء قوي عن هذا غير أنه إذا يا رفاق تذكر عرض من المحاضرة حيث أننا في الأساس سبيلر أعاد كتابة في PHP، وذلك كان البحث was-- في الحقيقة مجرد مثل، لا هذا المفتاح موجودا؟ هذا هو نوع حقا من قوة ذلك. أنت لا تحتاج إلى تكرار من خلال مجموعة الخاصة بك. أنت لا تحتاج إلى معرفة ما الفضاء انها في. ويمكن أن يكون في نهاية أو بداية. طالما كنت تعرف مفتاح المقترن قيمة، PHP يمكن يبصقون فقط تلك القيمة حق التراجع في لكم، حسنا؟ [00:50:09] ومن ثم، فإننا أيضا مجرد لديكم لأننا فقط يمكن أن يكون أزواج قيمة المفتاح لا يعني لديك. يمكنك أيضا إنشاء فقط مجموعة طبيعية مثل هنا، في الجزء السفلي، حيث انها فقط واحد، اثنان، ثلاثة، أربعة. تلك هي قيمنا. في واقع الأمر، المفاتيح الخاصة بهم هي مؤشرات. حتى مفتاح لأحد أن يكون صفرا. ان مفتاح لمدة تكون واحدة. هلم جرا وهكذا دواليك، إلا إذا تعيين صراحة مفتاح، هل يمكن أن نفترض أن القيمة هي مؤشر لمجرد. هل هذا يعقل أن الجميع؟ أي الأسئلة؟ رائع. [00:50:38] OK، foreach هو وسيلة ل تكرار خلال صفائف الخاص بك. لذلك لدينا شيء هنا، فقط الهيكل العام. foreach ذلك، اسم لدينا مجموعة، وأيا كان الذي تريد الاتصال به كل عنصر في مجموعة الخاص بك، ويمكننا أن نفعل شيئا مع هذا العنصر أو مع تلك القيمة. لذلك لدينا مثال هنا. لدينا النقابي مجموعة مع هذه الإدخالات اثنين مع شريط ارتباطهم فو وqux ارتباطهم باز. حتى المفاتيح هي فو والباز. القيم هي بار وqux. foreach ذلك، لدينا مجموعة لدينا هنا، حيث يتحرك هذا الزوج قيمة المفتاح. وهذا يتيح لنا الوصول كل من مفتاح والقيمة. ربما كنت ترغب فقط في القيمة، وفي هذه الحالة هل يمكن أن تفعل تماما مثل آر كما دولار قيمة، ثم هي مجرد الوصول إلى القيمة كما يمكنك تكرار خلال. ولكن ربما، بالنسبة لبعض السبب، وتريد المفتاح، وهذا هو السبب اخترت هذا المثال بدلا من ذلك. حتى تتمكن من التعامل مع الواقع مفتاح وقيمة في هذه الحالة. موافق؟ السؤال؟ [00:51:41] الجمهور: إذا أردت مجرد التلاعب مفتاح، من شأنه أن ما عليك القيام به foreach-- [00:51:45] ALISON: الحق. حتى إذا كنت تريد التلاعب مجرد مفتاح، كنت لا تزال بحاجة إلى هذا جملة لأنه إذا كنت فقط لدينا آر كشيء، كما شيئا واحدا، هو ذاهب لنفترض أنك تريد قيمة، وليس المفتاح. لذلك إذا كنت من أي وقت مضى للتو فقط مثل كما آر، وربما هذا هو مثل $ عنصر، انها سوف نفترض أن كنت طالبا لمجرد قيمة في كل نقطة. إذا كنت تريد صراحة إلى تفعل شيئا مع مفتاح، حتى لو كنت لن فعل أي شيء مع القيمة، كنت بحاجة إلى هذا الهيكل أن لدينا هنا حيث كنت طالبا صراحة لكل من المفتاح والقيمة. السؤال الكبير. أي شيء آخر؟ باردة. [00:52:27] كل الحق، PHP و HTML. أوه، نعود إلى سبع مرة أخرى بين مجموعة ص. هذا ما ينبغي أن تبدو مألوفة قليلا. لذلك هذا هو شكل HTML بسيط أن لديه بعض اسم مدخلات مرحبا. ونحن نرى لدينا أسلوبنا في GET. وإذا كنا نتذكر من وجهة نظرنا ف مجموعة، عند تقديم هذا النموذج، يرسل مجموعة يسمى $ _GET التي لديها كل هذه المدخلات أو المتغيرات من النموذج الذي يجب أن يكون التلاعب في PHP لدينا. حتى في هذه الحالة، المستخدم من شأنه أن يضع باسمهم. انهم تقديمها. ونحن نرى أن نحصل على بعض طائفة هنا. لدينا مجموعة GET لدينا. ونحن الحصول على الاسم. [00:53:11] بحيث يقول: OK، تعطيني قيمة المقترن الاسم، اسم كونها المفتاح هنا. ومخططات مباشرة إلى ما قلنا اسم الدخل لدينا هو. لذلك هذا هو إعطائك المفتاح لما سيكون في الصفيف الخاص بك هنا. هل هذا يعقل أن الجميع؟ نعم؟ [00:53:32] الجمهور: هل الاسم في GET تشير إلى خط الأرجواني في (غير مسموع)؟ [00:53:36] ALISON: وهو يشير إلى هذا هنا. لذلك هذا الحقل الحق هنا، فإنه يشير إلى هذا الاسم هنا. لذلك هذا كان من الممكن اسمه مثل رقم الهاتف، أو أيا كان. هذا الاسم يقول في الواقع، ما أنت تدعو هذا المجال؟ كيف أنت ذاهب ل الرجوع إلى هذا المجال؟ وهذا الاسم هو في الواقع يحبون، ونحن قائلا هذا المجال ويسمى الاسم. هذه هي الطريقة التي نحن في طريقنا للوصول إليه. [00:53:59] الجمهور: ذلك هو مثل، اسم الدخل يساوي بوب، and-- [00:54:02] ALISON: الحق، فإنك سوف تحصل بوب الى هناك. بالضبط. الجميع بارد؟ كل الحق، حتى الحصول على مقابل POST، هذه هي اثنين من الطرق الرئيسية أننا تمرير البيانات في طلب HTTP. يجب أن ينظر يا رفاق كل من هذه نأمل. حتى مع GET، فإن المعلومات يتم تمريرها من خلال URL. لذلك إذا كنت من أي وقت مضى القيام جوجل عمليات البحث، يوتيوب، عليك ربما تلاحظ بعض علامة استفهام. وبعد ذلك، كل الكلمات ان كنت وضعت للتو في هناك. و POST بتمرير بيانات في نص الرسالة HTTP. ذلك خلافا تحصل، أنت نوع من النظر أن يتم إخفاء البيانات من المستخدم. ولكن ما هو حقا المهم أن نفهم غير أن هذا لا يزال فقط غير آمنة مثل GET. القياس أود أن استخدم هو إذا لديك رقم حساب البنك الذي تتعامل معه وكنت اكتبها على السطح الخارجي لل مغلف، وهذا غير آمنة جدا. لو كنت لأنه يكتب على قطعة من ورقة ووضعها داخل المغلف، انها لا تزال غير آمنة حقا ل كل ما عليك القيام به هو فتح أن ما يصل وإلقاء نظرة على المحتويات الفعلية الرسالة لمعرفة ذلك. لذلك هذا هو "مخفي"، والناس مثل ل اعتقد انها آمنة، لكنها في الحقيقة لا. وأنا متأكد سوف دافين وصول الى ان اكثر، ربما. ولكن هذا هام تمييز لجعل وشيء جيد حقا لفهم. [00:55:15] OK، SQL، لغة الاستعلام الهيكلية. كل الاشياء التي رأينا ذلك مؤخرا! حتى انها في الأساس مصممة فقط، من الواضح، لإدارة البيانات. كان يا رفاق الكثير من الخبرة مع هذا في الجداول الخاصة بك مع PHP MyAdmin. وهناك أربعة الاستفسارات الشائعة أننا نريد يا رفاق أن تعرف. ولذلك لا يوجد التحديث، إدراج، تحديد، وحذف. لذا تأكد من أنك تعرف هؤلاء جيدا حقا. ونحن في طريقنا للذهاب من خلال عليها بسرعة حقا. [00:55:40] حتى تحديث، حقا، لأن ما قد يعتقد فعلت ذلك، هو فقط بتحديث البيانات في قاعدة البيانات الخاصة بك. لذلك لدينا بعض الأمثلة هنا. هذا هو عام هيكل استعلام التحديث. لذلك نقوم بتحديث الجدول اننا نتحدث عنه. ونحن نريد أن مجموعة معينة القيم وأعمدة معينة يساوي قيم معينة. لذلك هذا فقط بتحديث الجدول، وتغيير القيم في كافة الصفوف في هذه الحالة. حتى في هذا واحد إلى هنا، فعلي سبيل المثال، لدينا آسف insert--. هذه الشريحة المتقدمة دون أن يدركوا ذلك لي. [00:56:17] لذلك هذا الجدول التحديثات تعيين COL1 يساوي لVAL1 حيث يساوي البيت "كورير". ما هذا واحد لا غير فإنه يغير فقط، بل فقط تحديث هذه القيم في أماكن محددة. حتى في هذا واحد الأول، فإنه يغير هذه قيم كل شيء في الجدول الخاص بك، موافق؟ انها تسير لتغيير هذا عمود لكل مدخل واحد، لكل صف واحد. ولكن هذا حيث، هل يمكن كما أنها تفكر في التصفيات المؤهلة ل. حتى انها لن يؤدي الا الى تغيير في أماكن محددة جدا. وذلك في سبعة، عند-مجموعة P ربما يتم تجديد المبلغ النقدي هذا المستخدم الخاص بك زيارتها، وربما كان لديك بعض حيث يساوي ID معرف جلسة، أليس كذلك؟ [00:56:53] لأنك لا تريد أن تغيير المبلغ النقدي لكل شخص تم استخدام موقع الويب الخاص بك. أردت تغييره واحد شخص معين، وهذا الشخص الحاضر أيا كان يستخدم في ذلك الوقت. أليس كذلك؟ OK، لذلك إدراج إدراج بعض القيم في الجداول. هذا هو مثل عندما كنت إنشاء مستخدم جديد. الهيكل العام هنا وتضاف إلى كل ما الجدول نحن نتحدث عنه. القيم، ويجري القيم التي نحن نريد فعلا لإدراج. OK، لذلك كما نرى هنا، ونحن وتضاف إلى الجدول. هذا هو أعمدة معينة مع قيم تقابل بها. لذلك هذا يقول: إدراج صف جديد يحتوي على قيم VAL1 وVAL2 تحت هذه الأعمدة محددة. [00:57:33] لذلك ربما كنت ترغب فقط لملء من نصف الأشياء في هذا الصف. هذا ما هذا الجزء هنا يتيح لك القيام به. فإنه يتيح لك فعلا تحديد أي جزء. نعم؟ [00:57:44] الجمهور: هل يمكن لك فقط (غير مسموع) الخلايا في الصف [غير مسموع]؟ [00:57:52] ALISON: إذا كنت ملء فقط في أجزاء معينة من الصف الخاص بك، بقية تلك الخلايا هي مجرد فارغة. طالما كنت تسمح لهم تكون فارغة، انها ليست مشكلة. إذا حاولت الوصول إليها، فمن سوف تعود بعض العناصر فارغة. ولكن من المهم أن تعرف أنه في بعض الجداول، وقد ليسمح لهم لاغيا. كنت قد واجهت مشكلة أثناء الخاص بك ف مجموعة لأننا لم تدع أي من القيم الخاصة بك أن تكون فارغة. ولكن يمكنك تحديد قيمة اختيارية في الجدول الخاص بك. [00:58:26] OK، حدد، لذلك هذا هو مجرد وسيلة للحصول على بيانات محددة من جدول في بعض المعرف الذي تريده. حتى اختيار نجم من الجدول حيث عمود يساوي شيئا يعني فقط، تعطيني كل البيانات المرتبطة حيث هذا العمود محدد هو الصحيح. لذلك فإن النجم في هذه الحالة العودة الصف بأكمله لكم، حسنا؟ [00:58:49] وبعد ذلك، في هذه الحالة، حدد نجم من الجدول يعطي فقط لأنك الجدول بأكمله. وبعد ذلك، حذف من الواضح، انه فقط حذف صف من الجدول. حتى حذفها من الجدول، أيا كان الجدول نحن الرجوع، حيث بعض محددة المعرف أو بعض شرط هو الصحيح. نعم؟ [00:59:07] الجمهور: سؤال. لماذا أنت باستخدام مزدوج ونقلت وما إذا كنت القيام التنصيص أو واحدة ونقلت وأنها لا تحدث فرقا؟ [00:59:13] ALISON: التنصيص أو علامات الاقتباس المفردة لا تحدث فرقا في SQL. ظننت أنني رأيت سؤال آخر. نعم؟ [00:59:20] الجمهور: لا يؤثر ذلك على ما يحصل هرب من الاستعلام؟ [00:59:25] ALISON: روب؟ [00:59:27] ROB: ماذا تقصد ب هرب من الاستعلام؟ [00:59:31] الجمهور: إذا كان شخص ما لديه استعلام واحد في شكل of-- [00:59:36] ROB: إذا كان شخص ما ل وضع اقتباس مفردة في، ثم طالما كنت التعقيم المدخلات الخاصة بك، ثم لا يهم. ولكن إذا كنت تستخدم واحدة الاقتباس وأنت غير صحيح الهروب المدخلات الخاصة بك، ثم نعم، فإنها تحتاج لوضع الاقتباس واحد من أجل كسر التعليمات البرمجية. إذا كنت تستخدم علامات التنصيص، التي يحتاجونها لوضع مزدوج أقتبس لكسر التعليمات البرمجية. ولكن طالما كنت الهروب الأشياء صحيح، لا يهم. انها مجرد الذهاب الى ترجمتها إلى الرمز الصحيح على أي حال. [00:59:59] الجمهور: ماذا يعني الهروب؟ ALISON: حسنا، مثل التعقيم والهروب. الامتحان التي لدينا، وXKCD العظيم كوميدي أنهم سحب ما يصل حيث لديك، oh-- ROB: انها الشريحة الأخيرة. ALISON: انها الشريحة الأخيرة، حقا؟ يا إلهي. هناك نذهب، والكمال. OK، وذلك أساسا، يمكنك حقن شيء في هذا الاستعلام SQL حيث أنه يكسر بك رمز، أو كما أظهر ديفيد في الصف، إذا كان لدينا بعض احدة اقتبس 1 يساوي 1 وإذا كان في الكود، نحن مجرد نسخ مباشرة أنه في و لدينا اقتباس مفردة النهاية، ما يحدث هو أن نحصل بعض التعبير الذي تقييم إلى true التي من شأنها السماح لشخص بدخول قاعدة البيانات الخاصة بنا والحصول على البيانات التي نحن لا تريد لهم للحصول على. لذا التعقيم المدخلات يعني مجرد التأكد من أننا الهروب هذه الشخصيات وتعيين لهم كما حرف وليس الأشياء أنه ينبغي السماح لل ان تؤخذ حرفيا كما بيان SQL لدينا. [01:01:04] ذلك الشيء الكبير الذي قلنا أن يا رفاق يجب أن يكون استخدام كانت أحرف خاصة HTML، وهو أمر التي قد ترغب في إلقاء نظرة على. OK، حذف. أنواع البيانات، وهذا سوف يكون كل شيء على الانترنت. وبما أننا قد تركت 15 دقيقة، وأنا مجرد الذهاب للذهاب الحق من خلال ذلك. PHP وSQL، أساسا هذا هو فقط كان لدينا وظيفة استعلام ساعد حماية ضد هذه الهجمات الخبيثة. لذلك كلما كنت تستخدم الاستعلام، كنا التأكد من أن الأمور مطهرة وغيرها. [01:01:36] MVC هو مجرد نموذج التصميم، ذلك النموذج وعرض وحدة تحكم. انها مجرد وسيلة لابقاء الامور لطيفة وتقسيم بنفس الطريقة أننا نميل إلى عامل كود للخروج الى الوظائف. هذا هو مجرد إطار تصميم مواقع الإنترنت أن يسمح لك أن تفعل الشيء نفسه. أنا ذاهب لتخطي هذه. [01:01:54] هذا هو الشيء الذي أنا ستكون فائقة مريح مع. انها طاولة صغيرة كبيرة هناك. فهو يوفر لك وظيفة مثال للنموذج. أنا مجرد الذهاب من خلال هذا لأنني تريد حقا دافين أن يكون قادرا على التحدث. إذا كان لديك أي أسئلة، لا تتردد. سأكون هنا بعد. يأتي إلينا التحدث معي. مع ذلك، لدينا الأوضاع HTTP. وعلى دافين الذهاب لتفجير من خلال هذا في 15 دقيقة. هذه ستكون كبيرة. [01:02:17] دافين: OK. اه، هيئة التصنيع العسكري لديك؟ نعم. آسف. ALISON: الطريق إلى أن تكون مستعدة. دافين: لا، أنا مستعد. أنا مستعد. دعونا نفعل ذلك. انها جاهزة. موافق. آسف. I امتد القهوة على نفسي. أنا لا أعرف ما إذا كنت أنا أكثر مفاجأة أنني تبدو سخيفة، أو أنني لم يكن لديك القهوة بعد الآن. على أي حال، اعلان السريع فقط حول ورقة يا رفاق لها. حتى هذه الورقة يا رفاق لديهم ليست المسؤول ما يدور في هذه المسابقة. هذا هو مسؤول ما يدور في هذه المسابقة. أيضا، على شبكة الإنترنت، ونحن نقول لكم، حسنا، هذا سيكون على هذه المسابقة. حتى في الغش ورقة صغيرة لديك، وليس المسؤول. وهناك اخطاء على ذلك. لذلك من الأفضل عدم مجرد استخدام عمياء ذلك. لذا نعم، هذا هو ذلك. لذلك دعونا ندخل في هذه العجالة الحقيقية. [01:03:05] لذا الأوضاع HTTP. ذلك ما يحدث عندما على شبكة الإنترنت، كل شيء على ما يرام. OK كل شيء على ما. كل شيء يأتي إلى أنت بالطريقة التي ترغب فيها. تحصل على 200 OK. 301، حيث شهدنا أن 301 من قبل؟ الانتظار، ما الأمر؟ آسف. رأينا ط القصدير محاضرة خلال الأمن. حتى أثناء الأمن، حتى إذا ديفيد كتبته في HTTP ثم حاول أن يذهب إلى cs50.net، وأنت تسير لرؤية 301 نقلها. لماذا؟ لأنه يجري إعادة توجيه لك تلقائيا إلى HTTPS لدينا. [01:03:35] حتى 301 نقله، مجرد انها في الأساس إعادة التوجيه. ويمكنك التفكير في الامر من هذا القبيل. أي من الأوضاع التي تبدأ ب 2، تلك هي مثل، موافق، موافق كل شيء على ما. أي من الأوضاع التي تبدأ مع 3، وتلك هي إعادة توجيه. الأوضاع التي تبدأ مع 4، وهذا يعني هناك نوع من الخطأ العميل. الأوضاع التي تبدأ ب 5، هذا هو نوع من خطأ في الخادم. لذلك أنت نوع من تفريق فإن الحالات من هذا القبيل. حتى 304 لا غير معدلة، وذلك في الخاص server.c ف مجموعات، لذلك دعونا نقول لكم cat.html تحميل. كل شيء يأتي إلى الوراء، تحصل 200S، OK، عظيم. [01:04:03] دعونا نقول لكم استرجعت ذلك. حسنا، داخل ذلك cat.html، لديك JPEG. حسنا، هذا ليس JPEG الذهاب الى الحصول على إعادة شحنها. كنت لا ذاهب الى وظيفة أخرى طلب GET إلى الملقم، ومن ثم الحصول على كل تلك المعلومات إلى الخلف. انها سوف be-- مجرد أن الصورة الذهاب الى يكون مؤقتا على جهازك. وهكذا سوف تكون تلك الصورة 304. حتى انها لم تعديله. إذا كنت ثم إغلاق خارج، واضحة ملفات تعريف الارتباط، وتحديث ثم ومحاولة تحميل تلك الصفحة مرة أخرى، وأنت تسير لرؤية 200S. كنت لن نرى أن 304. [01:04:28] 400، طلب سيئة، حقيقية سريعة، مثل إذا كنت كانوا في طريقهم لإرسال كائن JSON إلى الملقم وكان كائن JSON غير صحيحة، سترى شيئا من هذا القبيل. 403، ممنوع. عندما كنت انظر ممنوع؟ ربما ربما؟ الجمهور: CHMOD. دافين: تطبيق التصريح، نعم. لذلك أنت لم تقم بضبط الأذونات بشكل صحيح. 404، لم يتم العثور. انها مجرد ليست هناك. حتى إذا كنت اكتب في URL الخطأ. 500، خطأ خادم داخلي، الملقم ربما لم يتم تكوين بشكل صحيح. لا شيء في نهاية الخاص بك، ولكن شيء ما على جانب الملقم. و 503؟ وهناك الكثير من الناس رأوا 503s في الماضي ف مجموعة. متى حدث ذلك؟ سمعت همسا. [01:05:05] الجمهور: عندما جوجل يقرر كنت الروبوت. دافين: نعم، عندما يقرر جوجل كنت الروبوت، وتحصل 503s. لذلك هذا هو الزائد. إذا كنت قد طلبت من الخادم كثيرا، وانها مؤقتة عادة. والأهم من ذلك هل لاحظت ذلك. لذلك رأيت 503. كنت قد اتخذت قليلا الشوط الاول، ثم ذهبت بعيدا 503s، وكان كل شيء على ما يرام. [01:05:20] غابي: سريعة ريال، متى يا رفاق الحصول على 500 في الأرجح تعيين هذه المشكلة الأخيرة؟ نعم؟ [01:05:27] الجمهور: إذا عادة الخادم لديه ملف في غير محله أو (غير مسموع) من آلة (غير مسموع). [01:05:34] غابي: لذلك قد يكون التكوين المسألة في PHP على الخادم الخاص بك. ولكن قد يكون مجرد شيء مثل فاصلة منقوطة التي نسيت. إذا كنت تكتب PHP، بعض صياغة غير صحيحة قد تحصل على شيء من هذا القبيل. موافق؟ [01:05:46] دافين: بارد. هل تريد مني أن أفعل فقط حتى AJAX؟ [01:05:51] غابي: (غير مسموع). دافين: OK. فما هي DOM؟ ماذا عن موقف DOM عنه؟ [01:05:55] الجمهور: نموذج كائن المستند. دافين: نيس. ولماذا أحببنا ذلك؟ رائع. الحق، لذلك يسمح لنا فقط للوصول إلى وHTML، الوصول إلى الصفحة لدينا بسرعة جدا. لماذا؟ لأننا نتعامل مع دينا الصفحة، وعلاج علامات HTML لدينا، علاج كل شيء كما لو انهم الكائنات. إذا كنا نتعامل مع لهم مثل انهم الأشياء، ثم ماذا يمكننا أن نفعل؟ حسنا، يمكن أن نطلق عليها ظائف. وهذا هو المهم لماذا؟ حسنا، لأننا في طريقنا للاستخدام جافا سكريبت لتحديث موقعنا HTML، تحديث هذه الكائنات. حتى إذا كنا نعاملهم مثل الأجسام، يمكننا ثم استدعاء وظائف عليها. انا ذاهب للوصول الى هذا قليلا أكثر عندما أذهب إلى تشغيل الجافا، ولكن كنت قد رأيت كل مثل document.getElementByID. لذلك المستند الخاص بك عنصر، والحصول على عنصر عن الهوية، لذلك كنت ذاهب للبحث بالنسبة لبعض ID في علامة HTML. وبعد ذلك، يمكنك أن تفعل شيء آخر لذلك. على سبيل المثال، مثل document.body، ثم يمكنك إلحاق الطفل. حتى وأنت تسير لتجد الوثيقة. لديك وثيقة. وأنت تسير لتجد الجسم. هل وجدت الجسم. وبعد ذلك، وأنت تسير ل استدعاء بعض الدالة على ذلك. لذلك إلحاق الطفل، ويمكنك إلحاق بعض HTML إلى نهاية داخل جسمك. ذلك أساسا، كنت فقط التعامل معها مثل كائن. كنت علاج HTML العلامات مثل كائن. ويجعل من السهل للغاية وسريعة للذهاب من خلالهم. ولكنه أيضا يسمح لك استدعاء وظائف عليها حتى تتمكن من التلاعب وتغيير العناصر. [01:07:04] غابي: ونظرا لهذا، لماذا هو جافا سكريبت مثل هذا لغة جميلة للتفاعل مع HTML؟ الاحتمالات هي، عندما كان الناس يختارون لغة المتصفح، لجانب العميل، جافا سكريبت غير لطيف، انها حقا جيدة في التعامل مع الكائنات. والكائنات مثل نوع من الكائنات التي تظهر في HTML، لذلك فمن السهل جدا لجافا سكريبت للقيام بذلك النوع من التعامل معها. دافين: نيس. حتى هنا مجرد مثال. لذلك أعتقد أن على مسابقة العام الماضي، أو ربما قبل عامين، ونحن يطلب منك إنشاء شجرة. لذلك هذا هو بالضبط ما كنت تفعل. لذا عليك البدء مع وثيقة. وبعد ذلك في الأساس مجرد إلقاء نظرة على العلامات. حتى إذا نظرتم، ونحن تبدأ مع علامة HTML. وبعد ذلك، يمكنك الحصول على أدلة حول كيفية القيام بذلك على أساس المسافة البادئة. حتى رئيس النوع من فروع خارج. داخل الرأس، لدينا العلامة آخر للقب. حتى ذلك الحين، لدينا علامة العنوان. وداخل هذا، لدينا بعض السلسلة. وحتى نمثلها سلسلة في حلقة مفرغة. وجميع العلامات هي في الساحات. [01:07:54] وإذا نظرتم، إذا نحن التفكير في هذا الأمر شجرة، ودعنا نقول أن HTML هي أحد الوالدين، ثم الرأس والجسم ستكون الأشقاء. انهم على حد سواء سيكون أطفال أن الأم. ذلك لأنهم كل من الأشقاء، وانهم سيكون نوع من بجانب بعضها البعض في نموذج شجرة لدينا. وبعد ذلك، كنت في الأساس تفعل الشيء نفسه بالضبط. لذلك ليس من الصعب، ولكن طلبنا أسئلة مثل هذا من قبل على هذه المسابقة. غابي: لا أحد لديك أسئلة حتى الآن؟ هل هو جيد؟ دافين: بارد. وجافا سكريبت، OK، الأشياء الجيدة. لذا جافا سكريبت، ما هو جافا سكريبت؟ حسنا، وجافا سكريبت is-- انها تعقيدا، ولكن هذه هي بعض من أبرز التي يجب أن نأخذ في الاعتبار. أولا، انها كتبته فضفاضة. ماذا يعني ذلك؟ لذلك PHP was-- نعم، ما الأمر؟ [01:08:35] الجمهور: ليس لديك لصراحة الدولة نوع المتغير هو عليه. دافين: الكمال. فقال لم يكن لديك ل صراحة نوع متغير. هذا صحيح تماما. حتى في C، إذا كان لي كثافة العمليات ط يساوي 50، ثم في PHP، انها مجرد مثل هذا، $ ط، يساوي 50. ثم في جافا سكريبت، ما يمكن أن تكون الدعوة؟ فار، أليس كذلك؟ انها تريد ان تكون مثل فار ط يساوي 50. ولكن لم يكن لديك لتكون مثل، موافق، وهذا هو عدد صحيح. حسنا، هذا هو سلسلة. لا حاجة للقيام بذلك. انها لغة تفسيرها. فماذا يعني ذلك؟ [01:09:04] الحضور: غير المترجمة. [01:09:06] دافين: ما لا جمعت يعني؟ نعم؟ [01:09:11] الجمهور: ليس لديك لإعادة هيكلة رمز للحصول على انها على استعداد ل الكمبيوتر لتشغيله. انها اتخذت فقط لانه في وقت التنفيذ والكمبيوتر (غير مسموع). دافين: نعم، لذلك سيكون ل تمر من خلال مترجم. ولكن كنت على حق تماما. حتى وأنت تسير أبدا لترجمة عليه، أليس كذلك؟ عندما كنت تفعل بك PHP وشفرة جافا سكريبت، أنت أبدا يسمى ترجمة. أنت لا يسمى شيء من هذا القبيل إجراء أو أي شيء من هذا القبيل. ذلك لأن هو تفسير ذلك. هكذا في كل مرة يذهب من خلال المتصفح، يذهب من خلال مترجم. وهذا ما يحدث لتفسير ذلك فقط في الوقت الحقيقي على الفور بالنسبة لك. فما هي بعض الإيجابيات والسلبيات إلى وجود لغة تفسيرها وجود لغة مترجمة؟ حتى compiling-- نعم، ما الأمر؟ [01:09:50] الجمهور: فسر أبطأ. دافين: بأي معنى؟ [01:09:57] الجمهور: بعد تجميع، لم يكن لديك للقيام بأي خطوات إضافية لتنفيذ ذلك، في حين أن هذا (غير مسموع). [01:10:04] دافين: الحق، والكمال. فما قلته هو أساسا أن تجميع، عند ترجمة، لديك الكثير من التكاليف مقدما، أليس كذلك؟ وأنت تسير لترجمة عليه. ولكن بعد ترجمة عليه، و مترجم ما يحدث لتحسين ذلك. انها سوف تكون سريعة. انها سوف أساسا تكون سريعة كما يمكن أن يكون. مع تفسير، فأنت لا لديهم تلك التكلفة مقدما. بدلا من ذلك، فإنه سيكون أبطأ قليلا في كل مرة واحد يمكنك تفسير ذلك. وأنت تسير لدينا ل تفسير ذلك في كل مرة. وذلك بدلا من وجود هذا تكلفة مرة واحدة، والآن أنت ستكون لدينا لتفسير ذلك في كل مرة يجعل الصفحة. [01:10:29] حتى المترجمين الفوريين جيدة ل لم يكن لديك لترجمة عليه، ولكنها سيئة في أن كل مرة يتم تحميل الصفحة، انها ستكون لدينا ل تفسير هذه جافا سكريبت. وانها تسير لتشغيل أبطأ قليلا مما لو كنت لترجمة عليه. يسمح لك communicate-- أوه، الانتظار. تستخدم للتلاعب المحتوى والمظهر. تحدثنا فقط عن ذلك. ويستخدم DOM. AJAX، ونحن سوف ندخل AJAX في قليلا. ومن ثم، فإنه من جانب العميل. لذلك PHP هو جانب الملقم. جافا سكريبت هو جانب العميل. ما هي ايجابية على ذلك؟ وتقول انها. انها أسرع، أليس كذلك؟ لأنه لم يكن لديك علي: انها أسرع. لم يكن لديك للاتصال مع بعض الأجهزة الأخرى. إذا كنت فقط على الخاص العميل، وكنت أبدا ستكون لدينا للذهاب و ترى ما هو على الخادم ومن ثم تقديم تقرير أو شيء من هذا القبيل. لذلك العميل يميل إلى يكون أسرع قليلا. [01:11:15] غابي: نعم، ولكن هذا لا يعني PHP هو أسرع من جافا سكريبت أو أي شيء من مثل. أنها تعمل نوع من في نفسه سرعة لأنهم على حد سواء اللغات تفسيرها. الشيء الذي هو بطيء هنا هو الطلب. حتى وأنت تسير في الواقع على طول الطريق الى البرازيل للحصول على بعض المعلومات التي تعيش هناك. ولكن PHP وجافا سكريبت، فإنها نوع من تشغيل في نفس السرعة. انها ليست واحدة هي أسرع من الآخر. هذا، أيضا، سؤال خدعة هنا. حتى يصبح جافا سكريبت أبدا رمز الجهاز، صحيحة أو خاطئة؟ [01:11:47] الجمهور: خطأ. غابي: خطأ. لديها لتصبح آلة كود لأن رمز الجهاز هو الشيء الوحيد الذي يفهم الجهاز. على الرغم من انها ليست المترجمة، لا يزال يصبح رمز الجهاز لأن المترجم فقط البرنامج الذي يذهب سطرا سطرا ويتحول هذا الخط إلى شيء يفهم الكمبيوتر. موافق؟ باردة. [01:12:08] دافين: هنا هو مجرد أساسية جدا مرحبا برنامج جافا سكريبت العالم. لذلك أنا لا أعرف if-- كنت قد رأيت هذا. ولكن عليك فقط HTML هنا. وبدلا من وضع فعلا جافا سكريبت في علامات البرنامج النصي، لذلك كنت عادة وضعها في الرأس. لديك علامات البرنامج النصي. كنت تسقطها هناك. ولقد ربط كل ما قمت به هنا in-- لذلك قمنا مرتبطة في ملف جافا سكريبت مثله. وكنت قد فعلت كل هذا، أليس كذلك؟ لذلك عندما كنت تستخدم مسج و underscore.js في الماضي ف مجموعة، لم يكن لديك طن من التعليمات البرمجية يصل في علامات البرنامج النصي الخاص بك، حتى في رأسك. هل يمكن أن تفعل ذلك، ولكن بدلا من ذلك كنت مجرد ربطه في. وكنت ربطه في مثلما تفعل مع CSS. لذلك يجعل مجرد أنها أسهل للقراءة حتى التعليمات البرمجية ليست مثل 1،000 خطوط طويلة مع طن من الوظائف التي قد لا تستخدم. [01:12:52] بدلا من ذلك، ربط مجرد أنها في. ومن compartmentalizes ذلك. انها مثل كتابة بعض الملفات رأس، و ثم بما في ذلك ملف الرأس في C. التفكير في الأمر تماما مثل هذا. فماذا يعني هذا أن تفعل؟ حسنا، هذا هو الذهاب الى تشغيل. انه سيكون لتنبيه. حتى وأنت تسير في الحصول على القليل يطفو على السطح دعا العالم مرحبا. سؤال سريع، والتحقق من سلامة العقل فقط، لذلك ترى هنا في الجسم، يقول الجسم، HTML هنا. ما يأتي أولا؟ أرى الجسم، HTML هنا، أو أرى التنبيه أولا؟ [01:13:19] الجمهور: تنبيه. [01:13:20] دافين: الحق. ويقول في حالة تأهب. لماذا؟ [01:13:22] الجمهور: لأنك الانتقال من أعلى إلى أسفل. [01:13:24] دافين: نعم. الكمال. لذلك كما يقول، تذهب من أعلى إلى أسفل، الذي هو الصحيح تماما. وأنت تسير للانتقال من أعلى إلى أسفل. وجافا سكريبت، مسج، لديك الوظيفة التي يشبه ONLOAD، أو استعداد، وتقول، حسنا، انتظر حتى كل هذا HTML وتحميلها. وبعد ذلك، استدعاء جافا سكريبت. لأننا لم يكن لديك ذلك هنا، ل أول شيء جدا وهذا ما سيحدث وانها سوف تذهب من أعلى إلى أسفل. انها تسير لتصل إلى أن شبيبة استدعاء، انه سيكون لتنبيه. بعد ذلك النقر فوق موافق، هذا التنبيه يذهب بعيدا. ثم انها سوف تظهر لك HTML الجسم هنا. لطيفة. [01:13:54] OK، لذلك الحقيقية فقط سريعة والكتابة في جافا سكريبت هو السوبر سريعة. من أجل إعلان متغير، اسم فار. حتى في C، لديك كثافة العمليات ط، لديك أن يعلن أي نوع من نوع هو عليه. PHP، $. وجافا سكريبت، فار. تحدثنا حول هذا الموضوع. كل الحق، دعنا نذهب. [01:14:11] الحلقات، ونفس الشيء. نفس الشيء. الإعلانات وظيفة، لذلك تماما مثل كنت قد رأيت في C. الشيء الوحيد المختلف هو ذلك عندما تحصل على لغات البرمجة الأخرى، مثل عندما كنت تأخذ 51 الفصل الدراسي المقبل وتفعلونه مع لغة كامل الموضوعية، يمكنك التعامل مع وظائف مجهولة. لذلك هذا هو بالضبط ما لديك هنا. لذلك أنت تريد أن تضع في خلاصة القول، نوع من قيمة المبلغ. ولكن قد فقط أن تفعل ذلك مرة واحدة. لذلك كنت لا تريد أن نسميها وظيفة خلاصة القول، تعطيه إعلان وظيفة. بدلا من ذلك، كنت مجرد استخدامه باعتبارها وظيفة مجهولة. وكنت قد رأيت هذا كثيرا. سترى مثال هذا في الشرائح زوجين. نعم، وسنرى. غابي: سؤال جيد. عندما قد ترغب في استخدام وظيفة مجهولة هنا؟ في الأساس، وعندما تريد شيئا، مثل هذا الحدث، أن يحدث. وذلك عندما الماوس النقر عليها، على سبيل المثال، تريد بعض من وظيفة ليتم استدعاؤها. بحيث يمكنك تمرير إلى الحدث معالج، يمكنك تمرير إلى الحدث، نوع من، الدالة التي كنت تريد أن يتم استدعاؤها. وماذا كنت تمر هو مثل، في نهاية اليوم، مجرد مؤشر ل أن التعليم، إلى وظيفة. حتى انها ليست مثل كنت تمر رمز بأكمله، تماما كما مؤشر إلى وظيفة. وبعد ذلك، عندما ينقر شخص ما الماوس، ثم يحصل تسمى تلك الوظيفة. [01:15:17] دافين: صفائف، لذلك أنت لديك إعلان مجموعة. ثم، صفيف إلى وضع الأمور في. حقيقية سريعة، ما سوف طباعة هذا؟ ماذا سيكون العنصر الثالث؟ [01:15:31] الجمهور: "JS". [01:15:32] دافين: الحق، انه سيكون "JS". الانتظار، والعودة. ما هو طول؟ [01:15:37] الجمهور: ثلاثة. دافين: ثلاثة، أليس كذلك؟ بالضبط ما هو رأيك. OK، انتقل الآن. المصفوفات، يمكنك إضافة الأشياء لهم. حتى تتمكن من تجاوز حدود الأولية. مجرد شيء أن نأخذ في الاعتبار. PHP، جافا سكريبت، وانهم قليلا قليلا أكثر تسامحا من حيث الأمور من هذا القبيل. الأشياء، ويشبه إلى حد كبير البنيات في C، والكثير جدا مثل صفائف النقابي في PHP. لقد كان كل ما عليك تجربة مع هذا. حتى JSON، عندما كنت تمر JSON ذهابا وإيابا في ثمانية مجموعة P، هذا الكائن. [01:16:03] لذا نعم، مثلا، مثال سريع الحقيقي. هنا هو كائن. الطريقة التي تشير إلى هذا الكائن، حتى مجرد الحقيقي سريعة، دعنا نقول أردت أن تجد خارج، OK، ما هو الحال؟ وهكذا اسم الكائن هنا هو CS50. ثم إذا كان لي النقابي مجموعة، كيف ستفعل ذلك؟ سأكون باستخدام مفتاح، أليس كذلك؟ لذلك ليس لدي اسم مجموعة. لدي قوس، ونقلت ومفتاح، ونقلت نهاية، وقوس النهاية، والتي من شأنها أن تشير إلى أن عنصر داخل مجموعة بلدي النقابي. كيف يمكنني الرجوع إليها بالطبع داخل الكائن بلدي؟ أحد يعرف؟ [01:16:39] الجمهور: (غير مسموع). [01:16:40] دافين: ما الأمر؟ الجمهور: CS50.course. دافين: الحق، نعم. CS50.course ذلك. وبالتالي فإن الطريقة لك مرجع الأمور داخل كائن JSON هو مع نقطة. [01:16:48] الجمهور: يمكنك أيضا استخدام صيغة صفيف. [01:16:53] دافين: OK، ودفع غرامة. [01:16:54] غابي: يمكنك أيضا استخدام قوس CS50، سلسلة، مثل علامات الاقتباس. الجمهور: أعتقد أنها مطابقة لPHP. غابي: انها نفس الشيء. دافين: الجميلة! ولكن سترى هذه أماكن أخرى. نعم، لذلك الاستمرار. هذا ما قلت للتو. لذلك في مثال جافا سكريبت مسج. لذلك هذا هو DOM بلدي، أليس كذلك؟ حقيقية سريعة، لذلك لدي الرأس، مرحبا العالم، الجسم. لدي زر واحدة. وتقول "دفع لي،" لذلك أريد أن يدفع به. وأريد أن أفعل شيئا عندما يتم النقر عليه. الحق، المقبل. [01:17:31] الحق، لذلك هذا هو بلدي جافا سكريبت. حتى مسج هو مجرد أسهل طريقة لإرسال جافا سكريبت. لذلك هذا، وما أنا ذاهب لاظهار كنت المقبل، ستكون مسج، متطابقة. ذلك أنها سوف تفعل نفس الأشياء. فقط مسج يميل إلى أن يكون أسهل قليلا. الناس يميلون إلى مثل ذلك أكثر من ذلك. انها لديها الكثير من الوظائف. من الناس يميلون إلى استخدام مسج. لكم جميعا تستخدم مسج في الماضي ف مجموعة. وذلك ما سوف تفعل هذا؟ ماذا سيكون هذا JavaScript-- ذلك هذا هو مجرد سهل جافا سكريبت. هذا ما سوف تفعل؟ ماذا تفعل؟ [01:18:03] لذلك أولا، ترى onload إطار. أليس كذلك؟ لذلك نحن لا نرى ذلك من قبل. لذلك هذا هو الذهاب الى الانتظار حتى برمتها الأحمال النافذة. لذلك سيكون لننتظر حتى الحمل HTML، جميع الصور قبل أن يفعل أي شيء. لذلك دعونا نقول وتحميل DOM لدينا. كل شيء هناك. ثم ما الذي سيحدث؟ نعم؟ [01:18:19] الحضور: يظهر زر. [01:18:22] دافين: الزر بالفعل هناك. نعم، وبالتالي فإن الزر بالفعل هناك. ولكن هذا هو الذهاب الى القول، OK، إذا كنت اضغط على الزر، لذلك الزر بالفعل هناك، مثلها في ذلك مثل العلامة HTML. الانتظار، والعودة حقيقية سريعة. هذه العلامة الحق الحق هنا هو ستكون زر بالفعل. هناك بالفعل زر واحدة. ولكن بعد ذلك، وجافا سكريبت العلامة، هنا، تقول، حسنا، أريد للحصول على عنصر عن الهوية، لذلك يقول زر البحث فقط، OK، أريد لتعيين هذا المتغير إلى ذلك الزر. بحيث المتغير هو فقط أسهل طريقة للوصول إلى هذا الزر. وأنا أقول، موافق، وإذا كنت فوق ذلك زر، لذلك إذا كنت فوق هذا العنصر، ويشير هذا العنصر ل الزر، إذا كنت فوقه، ثم أريد أن استدعاء دالة. هنا هو واحد من تلك مجهول وظائف كنا نتحدث عنه. [01:19:03] مجرد دعوة بعض من وظيفة. داخل تلك الوظيفة، في الأساس شيء ونحن قد رأيت الكثير، في حالة تأهب. النقر فوق زر البحث. انها ستكون لدينا أساسا على زر. النقر فوقه. يمكنك الحصول على هذا التنبيه. X خارج. هذا كل شيء. نعم؟ [01:19:16] الجمهور: حتى إذا كنت وضعت السيناريو [غير مسموع]، والعلامة النصي في HTML الخاص بك؟ [01:19:21] دافين: يمكنك وضع البرنامج النصي العلامة مباشرة في الرأس لأن لديك هذا ONLOAD. انها أيضا أن لديك بنقرة و. لذلك سيكون لننتظر حتى النقر فوق لشيء ما. ولكن ONLOAD هو مجرد أن تكون آمنة، لجعل الأحمال كل شيء المؤكد في HTML الخاص بك مسبقا. نعم؟ كنت أريد أن أقول شيئا؟ [01:19:40] غابي: (غير مسموع). دافين: نعم. [01:19:42] الجمهور: يتجنب ONLOAD ذلك تحديد زر البحث متغير بواسطة مجرد القول document.getElementByID بحث زر نقطة (غير مسموع). [01:19:49] دافين: بالتأكيد، ولكن بعد ذلك سلسلة الخاص بك فقط يحصل ضخمة. بالضبط، لذلك هذا هو فقط ل جعل من الأسهل بالنسبة لك، نعم. نعم؟ [01:19:56] الجمهور: أين نحن خلق window.onload؟ أو document.ready؟ [01:19:58] دافين: نعم، هناك. نعم، هناك، راجعت. [01:20:02] غابي: ليس لهم أن نهتم. [01:20:03] دافين: OK، لذلك أنا ذاهب لاقول لكم على أي حال. ذلك أساسا، فقط في العام، وذلك window.onload ينتظر حتى DOM الخاصة بك، كل HTML الخاص بك، والأحمال. فإنه ينتظر حتى الخاصة بك تحميل الصور. فإنه ينتظر حتى الأحمال كل شيء. document.ready، هو فقط ينتظر حتى الأحمال DOM الخاص بك. وبمجرد أن HTML هي كل ما هناك، مرة واحدة DOM الخاص بك هو هناك، يبدأ تشغيل. هذا هو الفرق الوحيد. [01:20:23] غابي: التعقل سريع التحقق من هنا. لذلك هذا يمكن أن ينظر إليه نوع من مثل سطر من التعليمات البرمجية، أليس كذلك؟ لأنه window.onload يساوي حفنة من الاشياء. عندما يقرأ جافا سكريبت هذا، صحيح أو كاذبة، ويحصل على تنفيذ الدالة. كاذبة. موافق؟ ما يحدث هنا، كنت مجرد مرور هذه الوظيفة باعتبارها وظائف مجهولة لwindow.onload. وبعد ذلك عندما تسير الأمور لفي الواقع الحصول على تنفيذها؟ عندما تكون النافذة الأحمال. هذا حدث. ولهذا الآمرة ر شيء نحن تحدثت في وقت سابق، أليس كذلك؟ لذلك عندما يحدث هذا الحدث، يحدث الدالة. نفس الشيء مع _ النقر. [01:20:59] دافين: OK، لذلك استغرق شخص بعيدا document.ready. ولكن هذا سيكون same-- بالضبط الجمهور: إن علامة الدولار، هذا هو document.ready. هذا اختصار. [01:21:07] دافين: أوه، هذا هو؟ حسنا، يعني ذلك document.ready، المختصرة. ولكن هذا هو نفس window.onload باستثناء أن الفارق ضئيل قلت لك عنه. وهذا هو مسج. لذلك هذا هو بالضبط نفس thing-- هذا هو جافا سكريبت. وهذا ما just-- بعض الناس يعتقدون منه باعتبارها أكثر خفيفة الوزن، الإصدار أنيق لديها الكثير من الوظائف أن عليك ربما يكون استخدام. لذلك هذا يفعل الشيء نفسه بالضبط. [01:21:34] من الأشياء إلى نقطة نوع من الخروج. حتى في المثال الآخر، ونحن كان document.getElementByID، لذلك كان علينا كل هذا الوقت السلسلة التي سيكون للحصول على العنصر بأي ID لديه. وهذا ما حلت محلها هذه الدعوة هنا. لذلك ترى علامة الدولار، ثم تشاهد الاقتباس، هاشتاج. الوسم هو دائما محدد. وتقول، حسنا، هذا له علاقة مع ID. ما هو محدد لفئة؟ [01:21:56] الحضور: نقطة. [01:21:57] دافين: نقطة، والحق. إذا كنت مجرد الذهاب ل حدد علامة، ما هو؟ انها مجرد علامة، بالضبط. ويمكن استخدام ذلك هنا، كذلك. [01:22:05] غابي: و العلامة، ونحن هنا نتحدث مثل شعبة، على سبيل المثال، أو الرأس. [01:22:08] دافين: أو هيئة أو ص أو شيء من هذا القبيل، نعم. حتى هنا، OK، بدلا من أن تقول document.getElementByID، هذا هو مجرد الشيء نفسه بالضبط. فقط في مسج، انها أقصر. لذلك فمن أبسط. حتى ذلك الحين، لا أكثر عند _ النقر، انقر فوق فقط. وظيفة مسج، استدعاء هذه الدالة. تنبيه هو بالضبط نفس. لذلك فمن قليلا أصغر، أو قليلا أقصر، وقليل من الناس يعتقدون bit-- انها أسهل قليلا لكتابة، أسهل قليلا لفهم. ولكن هذا هو مسج. وهناك الكثير من الناس الحصول على القليل الخلط قليلا وقلق ويعتقدون، OK، مسج يختلف من جافا سكريبت. لا بد لي من تذكر هذه شيئين مختلفين. ليست كذلك. أعني، انها صيغة مختلفة. ولكن مسج هو جافا سكريبت. انها مجرد ما يبدو النسخة الأفضل أن قد يكون من الأسهل لل نفهم أن يستخدمها الناس. غابي: نعم، ليكون صادقة، أن علامة الدولار التي تراها في مسج، هذا مجرد اسم الوظيفة التي تعرف مسج. أنه ليس لديه أي شيء خاص. غير انها مجرد اسم وظيفة، مثلك يمكن تحديد علامة الدولار. [01:23:03] دافين: نعم، لذلك تحدثنا عن هذا. بعض الأشياء المفيدة. كنت أبحث مرة أخرى في مسابقات القديمة. في مسابقات القليلة الماضية، لقد كان لاستخدام مثل هذه الامور. document.ready جدا، لذلك تأكد من كل شيء ل تحميل قبل أن تبدأ في فعل الأشياء. تحديد الهوية، أو حدد فئة، انها تريد فقط يكون الاقتباس دوت بعض الطبقة، نهاية الاقتباس. إرسال، حتى إذا كنت تقديم نموذج والدعوة هذه الوظيفة بعد شكل وتقدم. قيمة، لذلك دعونا نقول كان لي شكل التقديم، مثل اسم المستخدم، بريد إلكتروني، ما من أي وقت مضى. كان لي مربع النص. لذلك أنا الكتابة في مربع النص. حسنا، إذا كنت ترغب في الحصول على قيمة من مربع النص، يمكنك استخدام نقطة فال. وبعد ذلك، إلى هنا، نقطة HTML هو نفسه هو مثل وثيقة نقطة getElementByID نقطة innerHTML. بحيث يجري للعودة لك HTML من أن ID. هنا، أنت فقط استخدام بعض ID أو أيا كان نقطة HTML. وهذا سوف تحصل على HTML من هذا العنصر. إذا أردت ثم تغيير ذلك HTML، يمكنك تمرير أنه شيء. لذلك كنت تريد ان تكون مثل نقطة HTML، ثم داخل، ونقلت وHTML جديدة أو شيء من هذا. [01:24:05] غابي: OK، لذلك AJAX. أود حقا أن نفهم AJAX جيدا حقا. لذلك أريد يا رفاق ل فهم AJAX جيدا حقا. لأنه إذا قمت بذلك، وأنت تسير الى حد كبير لفهم كل ما له علاقة مع HTTP، PHP، جافا سكريبت لأنه كل يأتي معا في AJAX. AJAX ليست لغة. AJAX هي تقنية. ويستخدم الكثير من الأدوات المختلفة. AJAX لتقف على غير متزامن جافا سكريبت XML. لذلك الأسلوب، واللغة، والبيانات. [01:24:36] حتى اللغة الرئيسية التي نستخدمها في AJAX لتحريك كل شيء والتعامل مع كل شيء في وقت لاحق هو جافا سكريبت. هذا هو السبب في أنها تتعلق قريبة جدا من جافا سكريبت. ومن ثم غير متزامن لأننا لا نفعل ذلك في كل مرة عندما نكون تحميل الصفحة. هذا هو الشيء ما في وسعنا تفعل أشياء النوع من بالتوازي. الفكرة الرئيسية وراء AJAX هو أنك تريد ذلك للحصول على بعض المعلومات المحددة. على سبيل المثال، عندما كنت تكتب الجديد اسم المستخدم عند تسجيل اسم المستخدم، اسم المستخدم الخاص بي هو ABC123. وبعد ذلك، في نهاية شكل، لديك لانقر فوق إرسال. وأنه كان عليه أن يذهب إلى الملقم، ومن ثم معرفة ما اذا كان في قاعدة البيانات، ABC123 هو موجود بالفعل. واذا كان هناك بالفعل، فإنه يقول: اسم المستخدم بالفعل في قاعدة البيانات. وهم، لديك لملء النموذج بأكمله مرة أخرى. وكان حقا، حقا سيئة. [01:25:23] ثم يقول الناس، OK، لماذا لا يمكننا فقط القيام طلب HTTP صغير للتحقق فقط لمعرفة ما إذا كان هذا المستخدم في قاعدة البيانات قبل زيارتها للمستخدم ل إرسال النموذج بأكمله؟ هكذا على سبيل المثال، عندما المستخدم انتهاء كتابة ABC123، دعونا اذهبوا إلى خادم قليلا قليلا ومجرد الحصول على حق أو باطل من الخادم لمعرفة ما إذا هذا هو اسم مستخدم صالح أم لا. حسنا، هذا هو واحد من أهم يستخدم من AJAX في الوقت الحاضر لا يزال. [01:25:49] دافين: لذا حقيقية سريعة، في مكالمة اياكس في مسج، هل يمكن أن يعني أن لك تريد أن تكون متزامن. يجب أن لا تفعل هذا. ولكن يمكنك أن تفعل ذلك. وإذا كنت فعلت ذلك، ماذا سيحدث؟ حسنا، على سبيل المثال، عندما كنت الحصول على الأخبار أو أيا كان، متصفحك هو مجرد الذهاب الى الانتظار حتى تلك الدعوة كلها كاملة بدلا من السماح لك القيام آخرين الأمور في نصابها الصحيح بعد النقر فوقه. [01:26:14] غابي: انها ليست يمر بعد الآن. يا إلهي. آسف! نعم. "في الماضي، ل العميل اللازمة لطلب محتوى كامل من موقع على شبكة الانترنت ". هذا ما قلته. انها تسمح لنا أن نرسل GET أو POST إضافية طلبات دون الحاجة لتحميل المتصفح لدينا. حتى في نهاية اليوم، ونحن جعل الواقع طلبات HTTP هنا باستخدام جافا سكريبت. لأنه قبل، كنا فقط جافا سكريبت لتغيير HTML التي جاءت بالفعل. والآن، يمكننا استخدامها لواجهة مع خوادم الويب كذلك. الطريقة يحدث هذا هو لدينا العميل. دافين هو عميل. وانه لديه كل جافا سكريبت تشغيل لHTML غير البكم. جافا سكريبت غير الذكية. حتى دافين دافين ديه له الذكية جزء وجهته البكم. انه ذاهب الى استخدام جانبه الذكية الآن. انه ذاهب الى استخدام جافا سكريبت لطلب، على سبيل المثال، سواء ABC123 في قاعدة البيانات أم لا. [01:27:04] حتى دافين، من فضلك، أنت فقط أرسل لي رسالة طلب HTTP. شكرا. فأرسل مجرد طلب HTTP. ترى ذلك؟ وهذا مجرد بنفس الطريقة التي يتم إرسالها لأي طلب HTTP. متصفح جوجل كروم أو شيء من هذا، هو سنرى أن لدافين في محاولة لإرسال طلب HTTP، سوف تساعد جلالة قليلا. وهذا ما يحدث للذهاب على طول الطريق إلى الملقم. الآن، والخادم وستكون لدينا PHP هنا، أو أي لغة أخرى. مثلما هو الحال في طلب HTTP العادي. انها الى حد كبير طلب HTTP العادي. [01:27:31] ومن ثم، الملقم سوف أقول، OK، دافين يريد مني أن تحقق ما إذا كان هذا هو ABC123 في قاعدة البيانات. انتقل الحديث إلى النموذج. يقول نموذج كنه ليس كذلك. ABC123 هو اسم مستخدم جيد. وبعد ذلك، خادم الويب هو الذهاب الى استخدام PHP لتقديم شكل من أشكال الملف. ويمكن أن يكون حرفيا فقط ملف الذي يحتوي على "نعم" في ذلك، أو "لا، أو شيء من هذا القبيل. يمكن أن يكون أي ملف. [01:27:54] ويمكن أن يكون مثل أنا ذاهب ل إرسال دافين صورة لبطة لو كان في قاعدة البيانات و إرسال صورة من الهامستر إذا لم يكن في قاعدة البيانات. وسيكون هذا النوع من البكم، لكنه لن يعمل. OK، لذلك أنا أرسل بطة إلى دافين. دافين حصلت على بطة. والآن، الذي يجري للتعامل مع البط؟ جزء دافين الذكية مرة أخرى، حتى جافا سكريبت، أليس كذلك؟ أرسلت جافا سكريبت ل الطلب، وجافا سكريبت هو الذهاب الى الحصول على طلب وتفسير ذلك في شكل ما. [01:28:22] وبهذا المعنى، فإنه سيكون ل أقول، OK، إذا بطة ثم أنا جيدة. إذا الهامستر، ثم سأشارك أن يقول، لا، اسم المستخدم بالفعل موجود في قاعدة البيانات. ولكن عادة، كنت لا بصدد ارسال بطة. وأنت تسير لإرسال شيء أكثر ذكاء قليلا. وما الذي نستعمله هو XML. ومؤخرا، ونحن نستخدم JSON. JSON هو مجرد جافا سكريبت تدوين الكائن، الذي هو في الأساس تحصل على كامل الجسم جافا سكريبت. ويمكنك وضعه في ملف، تماما مثل هذا الكائن CS50 أن يا رفاق رأى. يمكنك وضعه في ملف، و إرسالها الى دافين. [01:28:53] حتى في هذه الحالة، وأود أن جعل كائن جافا سكريبت ونقول فقط، وجود المستخدم، نعم. أو وجود المستخدم، لا. وإرساله إليه. ولماذا JSON؟ لأن الشخص من الذي تلقي هذا هو تنوي استخدام جافا سكريبت للتعامل مع الرد. وجافا سكريبت يعمل بشكل جيد جدا ل انه دعا جافا سكريبت تدوين كائن. أليس كذلك؟ حتى يتمكن من مجرد دعوة وظيفة والحصول على هذا الكائن لطيفة من الاستجابة. وبعد ذلك، انه ذاهب لمعرفة ما إذا كانت هذا المستخدم في قاعدة البيانات أم لا. [01:29:22] هكذا ترون، كل ذلك المقبلة معا في خادم الويب، وبعد ذلك هناك HTTP واحد لطلب واستجابة HTTP واحد وكل شيء. لذلك تأكد من الرجال فهم هذه الدعوة AJAX لأنه يساعدك على فهم كل من المفاهيم التي نتحدث عنها. [01:29:37] وحتى هنا مثال من AJAX مع مسج. وهنا، ونحن نفعل مع الحصول على JSON. لذلك نحن لا نسعى للحصول على صورة القط هنا، أو بطة. نحن نحاول الحصول على ملف JSON. ثم ننتظر حتى انها فعلت، نقطة القيام به. وهذا يعني أنا في انتظار الرد. قد يستغرق بعض الوقت. ثم، ترى القليل من التحميل. إذا كنت تريد أن تفعل ذلك في موقع الويب الخاص بك. حتى دوت القيام به، ثم ما يحدث عندما يكون القيام به؟ يمكنك تمرير في مجهول وظيفة، تماما مثل رأينا من قبل. لأن ذلك هو الحدث، فقط مثل النقر على الفأرة أو أيا كان، لمسج. لذلك أنت تمر في هذه الوظيفة مع البيانات والنصوص، والوضع، وjqXHR. وأساسا، وهذا فقط بعض المتغيرات التي يمكنك استخدامها في وقت لاحق ل في حالة طلب HTTP، البيانات التي يجري لإرسالها مرة أخرى لك. حتى ذلك الحين يمكنك تفسير ذلك في وقت لاحق وتفعل شيء مفيد معها. واذا فشلت، عندما كان قد تفشل؟ حسنا، عندما يعطي على طلب HTTP لكم 500 أو شيء من هذا القبيل. ثم، انها سوف اقول لكم الوضع، أي نوع من الفشل الذي كان، وجميع أنواع الأشياء. لديك للتأكد من للتعامل مع كلتا الحالتين، وإلا فإن البرنامج يذهب مجنون. [01:30:42] دافين: لذا نعم، هذا هو بالضبط ما رأيت على جهاز الماضي ف مجموعة. الدعوة AJAX الفعلية هي في الحصول على JSON. هذا هو النداء. وبعد ذلك، نقطة فعلت مثل فإنه يتحقق إذا كان ناجحا. إذا كان ناجحا، وتريد أن تفعل شيئا مع البيانات. تحصل مرة أخرى من أن بيانات الطلب JSON. وهذا هو ما تحصل عليه العودة. حتى إذا كنت تذكر من هاتفك ف مجموعة، الكثير منكم كان مثل قوس البيانات ط أو أيا كان، وصلة نقطة أو العنوان. أيا كان يعود من ذلك JSON، أيا كان الحقول في هذا الكائن JSON، هذا ما كنت الحصول على العودة. البيانات هو ما كنت الحصول على العودة. وضع النص، وهو أمر عادل يتيح لك معرفة ما حدث. ومن ثم، فإن jqXHR، وهذا فقط طلب XML HTTP مسج. هذا مجرد مثل كائن. ومن ثم تفشل، تماما مثل قال غابي. غابي: في مثالنا القليل من ABC123 فقط لمعرفة ما اذا كان هذا في قاعدة البيانات أم لا، فإن البيانات سيكون شيئا لك سيفعل، في حالة وجود نقطة البيانات اسم المستخدم، وهو ما ولدت PHP الخاص بك ل كنت، في حالة وجود اسم المستخدم نقطة البيانات، ثم انا ذاهب الى تنبيه، المستعمل الاسم موجود مسبقا. آخر، وأنا ذاهب لمجرد السماح لل المستخدم المضي قدما ملء الاستمارة. OK، والأمن، وبارد. [01:31:50] دافين: تريد مني أن؟ [01:31:52] غابي: أنا أحب هذا واحد. ذلك شيء يبدو مألوفا. ونحن على وشك الانتهاء. لذلك هذا هو مجرد مثال شهد يا رفاق في الصف. كنت تستخدم argv1 هنا. هذا مثل وسيطة سطر الأوامر. ونحن م النسخ التي في المخزن مؤقت من حجم 12. ما هي المشكلة هنا؟ تجاوز سعة المخزن المؤقت! لأن لدينا منطقة عازلة من حجم 12. argv1 قد يكون لها حجم ملياري. لم نفعل أي فحص الحدود. لذلك نحن قد نسخ الكثير من الذاكرة. وسنكون على وجه الخصوص سيئة عن هذا. ماذا يمكن أن نفعل هذا جدا، جدا يعني في هذه الحالة؟ نعم؟ الجمهور: جزء من ملياري الأشياء يحتوي على رمز قابل للتنفيذ وترجع (غير مسموع). غابي: بالضبط. ذلك أن هذا النوع من الشيء التي يستخدمها الناس الهروب من السجن اي فون، على سبيل المثال. لذلك هذا النوع من الشيء. لأنك يمكن أن تجعل مجرد جهاز تنفيذ أي رمز التي تريد. الإصلاح، وبالتالي فإن الإصلاح سيكون أمرا سهلا. انظروا فقط للحدود. قمت بفحص اغية بسبب نحن دائما التحقق لاغية عندما نتعامل مع السلاسل. وبعد ذلك، كنت تأخذ من طول السلسلة قبل. وإذا كانت السلسلة طول سلسلة صالحة الطول، وهو ما ضمن 0 و12، ثم نحن في حالة جيدة. [01:33:03] دافين: إذا كنت لا تحقق ل لاغية، حقيقية سريعة، ماذا سيحدث؟ انها سوف SEG خطأ. لماذا فإنه SEG خطأ؟ لأنك كنت تدعو strlen على باطل. غابي: نعم. صحيحة أو خاطئة، وذلك باستخدام واحد كلمة السر هي فكرة جيدة. [01:33:19] الجمهور: خطأ. [01:33:20] غابي: خطأ. استخدام العديد من كلمات السر، وكبيرة، منها طويلة. الرموز قفل ضمان الأمن. [01:33:26] الجمهور: خطأ. [01:33:27] غابي: خطأ. وهذا لا يعني أي شيء. انها مجرد رمز. SSL يحمي ضد رجل في الهجوم الأوسط. الجمهور: خطأ. غابي: خطأ. OK، لذلك كل تلك ليست صحيحة. لطيفة. [غير مسموع] نريد أن نتحدث عن هذا؟ دورك. دافين: أنواع الهجمات، رجل في الوسط. ما هو رجل في الهجوم الأوسط؟ الجمهور: (غير مسموع). دافين: إذا قمت بإرسال HTTP طلب، فإنها يمكن أن تفعل هذا، أليس كذلك؟ ولكن إذا كنت تقوم بإرسال HTTPS، فإنها ربما لن تكون قادرة على القيام بذلك. هناك الكثير من النقاط على طول الاتصال. لديك أجهزة التوجيه. لديك ملقمات DNS. إذا كان شخص ما قادرا على جسديا ترى ما كنت ترسل، لذلك شخص قادر على في الواقع الحصول على بينكما، العميل، والخادم، وغير قادرا على رؤية ما كنت ترسل، هذا هو رجل في الهجوم الأوسط. لذلك لمعرفة ما كنت تحاول الحصول من الخادم، أو غير قادرة على see-- أسوأ من ذلك، قد تكون قادرا على رؤية الكوكيز أو شيء من هذا القبيل. [01:34:16] هكذا على سبيل المثال، إذا كنت لا تستخدم SSL، وقال انه قد تكون قادرا على رؤية الكوكيز ID الدورة. وهذا ما يسمى اختطاف الجلسة لأنه يرى الكوكيز ID الخاص بك، ثم انه قادر على الذهاب إلى ذلك الموقع وأدعي أن يكون لك. لمجرد ترغب في PHP، تذكر عندما كنا تسجيل الدخول، ماذا نفعل؟ وضعناها معرف جلسة يساوي ID. بحيث يحدد لك. لهذا السبب يمكنك ان ترى محفظتك ومحفظة ليس الجميع آخر. [01:34:38] حسنا، إذا أنا قادرة على الحصول على تلك الكعكة، ثم لا أستطيع الدخول على هذه الصفحة. وبعد ذلك، أستطيع أن أرى فقط الأشياء الخاصة بك والبدء في بيع وشراء الاشياء. ذلك أن اختطاف الدورة. ولكن يجب أن لا يكون قادرا علي: لذلك أنت يمكن استخدام رجل في الهجوم الأوسط حتى لو كنت تستخدم SSL. ولكن يجب أن لا تكون قادرة على. إذا كانت تستخدم SSL، لا يمكنك خطف الدورة. لماذا؟ لأنها مشفرة كل شيء، أليس كذلك؟ إذا انها مشفرة، وأنا ما زلت رجل في وسط، وأنا لا يزال الحصول على البيانات الخاصة بك. هذا جيد. ولكن انها مشفرة. لذلك أنا لا يمكن استخدام ذلك حقا. ذلك أن اثنين. [01:35:09] حقيقية سريعة، عبر الموقع طلب التزوير. هذا فقط إذا كان هناك صلة وهذا الارتباط لا شيء ان كنت لا أعتقد أنه ينبغي القيام به. هكذا على سبيل المثال، إذا كان الارتباط ذاهب لشراء الأسهم أو بيع الأسهم، وكنت لا تعرف ذلك. النقر على الرابط، إرسال طلب، اشترى أو بيعها شيء أنت لا يعني أن تفعل. هذا هو ذلك. [01:35:25] الكتابة عبر الموقع، حتى هنا، كنت تمر في طريق ف متغير، بدلا من تمرير في نوع من القيمة، وربما ف هو مثل الاسم. وذلك بدلا من تمرير متساوين ف دافين أو شيء من هذا القبيل، إذا كنت لا تستخدم HTML أحرف خاصة، إذا كنت لا الهروب من هذا للتأكد من انها OK، ثم أتمكن من تمرير في بدلا من ذلك، دعنا نقول هنا أقوله الطباعة أو شيء من هذا القبيل، ثم أتمكن من تمرير هنا مكالمة النصي. [01:35:51] حتى ذلك الحين، بدلا من مجرد الحصول على متغير، ثم أود أن تنفيذ هذه الدعوة النصي. حتى داخل هذا السيناريو استدعاء، ماذا تفعل؟ وثيقة نقطة الموقع، والتي سيكون ل تغيير موقع من الوثيقة. لذلك أنا ذاهب لإعادة توجيه إلى مكان آخر. انه دعا الرجل السيئ في هذا المثال، جيد جدا. لا يمكن أن نفكر في كلمة واحدة. ومن ثم، ما هو حتى أسوأ من ذلك أن سأشارك لثم تعيين الكعكة، والتي هي بعض متغير لدي في هذا الموقع. انا ذاهب الى تعيين يساوي لملفات تعريف الارتباط وثيقة نقطة. لذلك، انا ذاهب لسرقة الكوكيز. وانا ذاهب الى إعادة توجيه بعض المعلومات إلى موقع على شبكة الانترنت أنه يجب أن لا يكون الوصول. وهذا كله يحدث لأنك لا مفر ما كنت قد رأيت. نعم؟ [01:36:29] الجمهور: هكذا فقط ل جعل ذلك واضحا، انها vulnerable.com أن هو عرضة لذلك. لذلك يمكن أن يظهر هذا الارتباط على أي صفحة معينة. ينقر على ذلك، يذهب إلى vulnerable.com. لديك ارتباط لvulnerable.com. دعنا نقول الفيسبوك هو عرضة، لذلك facebook.com. لديك كعكة الفيسبوك الخاص بك. ما هذا يقوم به، كنت الذهاب إلى facebook.com، انها على الفور إعادة توجيه لك badguy.com، ولكن بما في ذلك معلومات ملف تعريف الارتباط الخاصة بك. لذلك هو إعادة توجيه سريع، ولكن الكوكيز الفيسبوك يتم تضمين مع أن إعادة توجيه، وهذه هي الطريقة التي (غير مسموع). غابي: نعم، هناك بعض الأشياء متوسط ​​جدا أن الناس يمكن أن تفعل إذا كان هناك هذا. على سبيل المثال، إذا ما سمح الفيسبوك الجميع لتغيير اسم المستخدم الخاص بك، وأنها لم تفعل أي الشيكات التعقل، لذلك أنت يمكن إدراج الشيء جافا سكريبت أن يغير صورتك إلى الهامستر. والذي يدرج نفس جافا سكريبت إلى الجميع الذي ينظر صفحتك. لذلك الجميع الذين تنظر صفحتك له نفس الشيء في اسم المستخدم. ولأنه فيروس، انه ينتشر بشكل كبير. دافين: سنقوم تخطي الماضي واحد، ومن ثم ننتهي. لذلك هذا هو مجرد مثال آخر. لذلك هذا هو انهم لا الهروب جدول SQL الخاصة بهم. حتى تتمكن من إسقاطه. لذلك كنت ترغب في الهروب الأشياء. وكان هذا هو المثال السابق مع موقع البرمجة النصية عبر. عذرا هربنا قليلا في وقت متأخر. غدا، آسف! غدا، لدينا ساعات العمل. لذلك ساعات العمل في Cabbot 8:00 حتي 11:00. وساعات العمل هي بدقة لأسئلة المسابقة.