[عزف الموسيقى] DAVID مالان: هذا هو CS50، و هذه هي بداية من الأسبوع الثامن. ونحن متحمسون جدا للترحيب مرة أخرى، مفاجأة كبيرة، رامون CS50 الخاصة جالفان، أحد كبار ارتفاع الذي كان أمضى الأشهر القليلة الماضية منذ يوليو في لوس انجليس، في هوليوود، تعمل حرفيا على التلفزيون العلامة التجارية الجديدة عرض يسمى مستعمرة، خالق الذي هو في الواقع الشب هارفارد نفسه. ولذا فإننا متحمسون جدا لرؤية هذا لاول مرة على شبكة USA كانون الثاني الجاري. حتى لا تنزعج لذلك، ولل أكثر رامون خلال الأسابيع القادمة. نعرف الآن أن النهاية قريبة. وما يعنيه هذا هو أنه ليس هناك كل ما تركت الكثير من CS50، المحزن أن أقول. لدينا ثلاثة مشكلة فقط مجموعات left-- هناك مشكلة تعيين six-- الذي هو في يديك الآن أو قريبا سوف يكون، بسبب وقت لاحق هذا week-- يهدف الى سد عوالمنا من سطر الأوامر، حيث لقد قضينا معظم وقتنا باستخدام C، وعالم برمجة الويب. حسنا، سترى الكثير من الأفكار اقترضت من عمل سطر الأوامر، ولكن أيضا الكثير من الجديد وأفكار مثيرة للاهتمام التي تجري أيضا أن يكون وثيق ل تطبيقات الهاتف المحمول والتكنولوجيا، بشكل عام، والتي يمكنك الرجال هم على دراية في الوقت الحاضر جميع على أجهزة الكمبيوتر المحمولة والهواتف وما شابه ذلك. لذلك عليك أن لا تنفذ صفحة على شبكة الإنترنت، أو موقع على شبكة الانترنت في حد ذاته، وإنما هو خادم الويب الفعلي. سوف تكتب بقية خادم الويب مكتوب في C، هدفها في الحياة هو لتلقي طلبات HTTP، تلك المغلفات الافتراضية نستمر في الحديث حول علاوة على الرد في الواقع إما مع بعض content-- ثابت مثل نقطة HTML ملف، أو نقطة أو JPEG أي عدد آخر من الملفات، أو حتى ملف PHP حيث الويب الخاص بك الخادم هو الذهاب الى تفسير ذلك PHP رمز وبصق النتائج. الآن، وفرنا لك قدرا كبيرا من الإطار لit-- الواقع كود التوزيع للمشكلة تعيين ستة هو أكثر من 1000 طوابير طويلة، وهو الكثير منها هو تعليق، لتكون fair-- ولكن هذا هو المقصود حقا أن تكون فرصة للحصول على يديك الغوص القذرة في مشروع كبير إلى حد ما بعد أن قمنا على وجه التحديد جدا اقتطعت قطعة من لك، بحيث حقا عند الخروج وCS50 دخول عالم الحقيقي للبرمجة وتريد أن اشتغل في أي عدد من المشاريع، سيكون لديك أكبر من ذلك بكثير راحة تحميل بعض المصادر رمز، بعض المصادر المفتوحة مشروع على شبكة الإنترنت، والغوص في، وجعل التغييرات التي تراها ملائمة لك. مجموعة مشكلة سبع سيكون حول مما يجعل تطبيق على شبكة الإنترنت الخاصة بك يأخذ مدخلات حيوية و ينتج إخراج الديناميكي في شكل موقع على شبكة الانترنت مثل etrade.com. وحددت المشكلة ستركز على بعد ثمانية لغة أخرى تعرف باسم جافا سكريبت. وفي الوقت نفسه، المباراة النهائية المشروع هو في الأفق. ما يسمى ما قبل اقتراح ويرجع أسبوع من اليوم. قبل proposal-- فقا للمواصفات، وهو على website-- CS50 ل هي فرصة جميلة لعارضة لك بإرسال رسالة بريد إلكتروني مقتضبة جدا لزميل التعليم الخاص فقط لإبلاغه أو لها ما كنت أفكر، ل استخدام له أو لها مسبارا. ويكون التعقل check-- سواء كنت تفكر حول قضم جدا كثيرا أو ربما قليلا جدا، أو ربما لديك أي فكرة على الإطلاق وتريد الدخول في محادثة. هو بعد ذلك اقتراحا وتقرير الحالة، ما يسمى hackathon CS50 هنا في كامبريدج لجامعة هارفارد وييل الطلاب سواء. المشروع النهائي ل ومن المقرر ثم التنفيذ. ثم معرض CS50 هنا، في كامبريدج، وكذلك آخر في نيو هافن. لذلك الاقتراح، نلقي نظرة على الموقع لتلك التفاصيل. ولكن أكثر المثير أيضا هو فرصة للحصول على أيديكم القذرة، وعقولكم مفتوحة أمام ككل مجموعة من الموضوعات والأدوات والتقنيات التي هي التبعية إلى المنهج الأساسية للدورة، و ولكنها مع ذلك ذات الصلة. وأيضا معابر رائع ل القيام المشاريع النهائية باردة حقا أن الذهاب إلى ما وراء المادة ما ناقشناه رسميا في المشكلة يحدد أو في المحاضرة. لذلك يذهب إلى موقع الويب CS50 ل القائمة الكاملة للندوات. إذا كنت لا تسجل حتى الآن، فلا بأس. المضي قدما والاشتراك لا يزال، ونحن سوف متابعة مع وصلة بث مباشر، اليوم والوقت على الموقع. وسيكون كل شيء سجلت ووضع على الانترنت إذا كنت لا يمكن أن تجعل من أيام وأوقات معينة. أما فيما يتعلق بما ينتظرنا جيدا thereafter--، بالطبع، هناك من hackathon CS50. هذه الصورة، نذكر من الأسبوع الصفر أخذت حول 04:00 ليلة واحدة في السنوات الماضية. المعرض CS50، الذي مرة أخرى سيعقد في كلتا المدينتين. وبعد ذلك، فقط لزرع البذور، وعلى الرغم من أننا لا نزال يكون شهر زائد تبقى من الفصل الدراسي، وإذا كنت ترغب في الانضمام التدريس CS50 الخاصة الموظفين، وتريد أن تبدأ التفكير في أن تصبح CA، أو زميل التدريس، ونعرف أن سنبدأ الحديث أكثر عن ذلك في وقت لاحق هذا الفصل الدراسي. ولكن الصورة هنا معظم فريق هذا العام. وهكذا، كان PHP-- وأنا حزين جدا الاسبوع الماضي ان [؟ Allyse؟] تفضلت ذهب إلى جهد للحصول على لنا هذه الدعائم رائعة أنني لم ينتهي باستخدام، لذلك في الحقيقة مجرد بدا نوع من الغباء أن كان لدينا مجرفة يجلس هنا فقط يوم الأربعاء الماضي، وقليل من ملعقة. ولكن هذا كان لي المجازي وسيلة لمحاولة لرسم صورة لماذا نحن بصدد تحويل من C إلى لغة مثل PHP. ويمكن قول الشيء نفسه من أي عدد languages-- جافا، بيثون، روبي أو عناقيد من بالآخرين ولكن في حين أنه في C، على سبيل المثال، كتابة البرنامج في C قد يكون عادة مثل أخذ ملعقة من هذا القبيل وحفر حفرة في الأرض، في الرمل أو التراب. PHP يسمح لك أن تأخذ من ذلك بكثير لدغات أكبر من المشكلة، الكتابة أقل بكثير كود باستخدام أداة أصغر بكثير، لأن هناك أكثر من ذلك بكثير وظائف تجميعها في. الآن، إذا كنا حقا المسرحية، سيكون لدينا شيء لمجرفة هنا، ولكن فليكن ذلك. وفي الوقت نفسه، والآخر استعارة توصلنا مع هو، بطبيعة الحال، هل يمكن استخدام شيء مثل وجع أن تدق في ما يشبه مسمار. ولكن بطبيعة الحال، والحق أداة لاستخدام يسير أن تكون وليس ذلك بكثير على اللغة دعا C-- وأنا الآن مجرد ازعاج [؟ ساندرز، و؟] ربما، سنقوم إصلاح ذلك later-- ذلك الأداة الصحيحة لاستخدام كثير من الأحيان لا سيكون هذه الأداة مستوى أدنى. وبالفعل، C ليست لغة أكثر من أي وقت مضى كنت تنوي استخدام، أو يجب أن تستخدم بالضرورة مرة أخرى. في واقع الأمر، قليلا secret-- المرة الوحيدة يمكنني استخدام C نفسي هو الى حد كبير بين سبتمبر وديسمبر من كل خريف نصف السنة. وهذا لأننا استخدامه بمثابة فرصة لتعليم أساسيات البرمجة، ومعه كمبيوتر أساسيات العلوم والبيانات الهياكل والخوارزميات و like-- لكن بشكل سريع جدا سيكون لك نرى الآن أن بناء الجملة والأفكار الكامنة C هكذا هي رائعة تحويل إلى أكثر حداثة لغات المستوى العالي، مثل PHP وبايثون وبيرل وجافا والهدف-C-- في الواقع، وليس ذلك بكثير الهدف-C-- لكن سويفت، وهذه أحدث اللغات أن العديد منكم ثم اشتغل معك المشروع النهائي. ذلك دون مزيد من اللغط، دعونا الواقع استخدام PHP على حل بعض المشاكل. أذكر أنه في وقت مبكر، وأخيرا الأسبوع، كنا فقط CS50 IDE، كتبنا البرنامج قليلا دينكي التي قال فقط، "مرحبا العالم". وبعد ذلك حفظها في ملف يسمى hello.php. ثم ركضت هذا الأمر. ولماذا؟ في اللغة الإنجليزية، ما الذي يحدث هنا؟ ما أفعل عندما ركضت هذا الأمر؟ نعم؟ الحضور: هناك بعض من وظيفة PHP الذي يقرأ ما يفهم in-- ذلك. DAVID مالان: جيد، هناك بعض من وظيفة PHP-- واسمحوا لي أن أكون أكثر تحديدا، هناك برنامج يسمى PHP، الملقب مترجم، يفهم محتويات hello.php، ويفسر ذلك أعلى إلى أسفل، اليسار إلى اليمين، ويفعل ما يقول تلك الأوامر. الأوامر في hello.php، بطبيعة الحال، هو مجرد مصدر code-- وظائف والمتغيرات والحلقات و مثل، أننا أنفسنا لقد بدأت الكتابة في PHP. ولكن خلافا C، الذي هو لغة مترجمة، PHP تكتب للتو، وتشغيله. تخطيت هذه الخطوة سيط لل تحويلها إلى أصفار ومنها، ثم تشغيله. وماذا في ذلك هو الاتجاه الصعودي هذا؟ لماذا نحن تخطي الخطوة؟ لماذا اللغات الأكثر حداثة تميل إلى تخطي هذه الخطوة؟ ما هو صالح؟ أو مجرد حدسي؟ حتى لو أننا لم كتب الكثير PHP من قبل، ما هو مفيد حول عدم ترجمة التعليمات البرمجية الخاصة بك رأيك؟ لا؟ لا ارتكاب؟ الخدش رأسك؟ نعم. الحضور: أكثر ديناميكية. DAVID مالان: أكثر ديناميكية؟ ماذا تعني؟ الحضور: (غير مسموع) DAVID مالان: OK، جيدة، لذلك اعتمادا على المدخلات، لم يكن لديك لتجميع في كل مرة. وهذا هو حقا كما بهذه البساطة هكذا- يضرب ما هي نقطة المستمرة ترجمة التعليمات البرمجية الخاصة بك؟ هذا هو مجرد خطوة هذا making-- هذا يتطلب، لالماضية أسابيع، ضعف عدد الخطوات كما مجرد تشغيل البرنامج. انها كانت مفيدة في التأكد من أن لك ترى بعض رسائل الخطأ وهكذا دواليك، لكنه ما زال مجرد خطوة مزعج. وهكذا أدرك المبرمجين مع مرور الوقت، لماذا نحن لا البدء في كتابة اللغات التي لا تحتاج هذه الخطوة الميكانيكية إلى حد ما، بحيث يمكن الكتابة فقط رمز وبك تشغيله. ولكن ماذا كان الثمن الذي رأيناه دفعنا الأسبوع الماضي، مع مثال واحد معين؟ نعم فعلا؟ السرعة. هكذا [؟ ما هو؟] المترجمين الفوريين أبطأ قليلا، في هذا الآحاد والأصفار و هي لطيفة وسريعة للكمبيوتر لفهم، لأن إنتل وحدة المعالجة المركزية، أو أيا كان، يفهم فقط ما يحدث على مع تلك الأنماط من البتات. في حين مترجم هو برنامج حقا أن قراءة مصدر أسكي التعليمات البرمجية التي قمت بكتابتها، وتحويله، إذا جاز التعبير، أو معرفة كيف يحول في نهاية المطاف إلى أصفار ومنها. لذلك لا يتطلب قليلا قليلا من ضرب الأداء. لذلك فمن قليلا من المفاضلة. الآن اذا لم نفعل هذا هنا، اسمحوا لي نمضي قدما ونفعل مثال على النحو التالي. إذا ذهبت هنا، ملف جديد، وانا ذاهب لحفظ هذا مرة أخرى هو hello.php. والآن انا ذاهب الى المضي قدما ويقول: "الطباعة مرحبا العالم" - وأذكر أنني يمكن استخدام الطباعة، وأنا لا لديك لاستخدام الطباعة-F. والآن إلى هنا، إذا كنت تفعل PHP من hello.php، huh-- I لا يبدو أن تفسيره. أي خطأ ارتكبت؟ الحضور: الأساور الزاوية. DAVID مالان: نعم، تحتاج أن أعلى زاوية قوس يصل. حتى انها نوع من مزعج، ولكن أن تعتاد على ذلك بسرعة. إذا كان لدي لكتابة رمز PHP، I عموما بحاجة لنقول للبرنامج، أو نقول للمترجم، مهلا PHP، وهنا يأتي بعض رمز PHP. ثم لحسن التدبير، وأود أن إغلاق هذا ليس مع هذا، وإنما مع السؤال عادل علامة الزاوية قوس، حتى الآن إلى هنا، إذا قمت بتشغيل هذا مرة أخرى، الآن أحصل على النتيجة المرجوة. الآن دعونا نفعل التحسين الطفيف، فقط حتى أن كنت قد رأيت من قبل. هذا هو نوع من مزعج بأنني لديك لتشغيل PHP hello.php الفضاء، لأنه في الأول الماضي يمكن فقط إرسال مائل نقطة اسم البرنامج، الذي هو نوع من لطيفة. انها نوع من تجربة أفضل للمستخدم. هكذا اتضح يمكنك القيام بذلك في PHP مع I following-- يمكن استخدام هذا خفي إلى حد ما التعويذة في الجزء العلوي هنا، وهو ما يسمى عموما كوخ، حيث هذا هو رمز حاد، إذا جاز التعبير، وهذا هو الانفجار أو تعجب. وهذا الآن هو المسار إلى برنامج على نظام لينكس النموذجية التي ويسمى البيئة، أو الحياة الفطرية. وهذا line-- قصة طويلة سطر واحد فقط short-- يقول: مهلا الكمبيوتر، والعثور على PHP مترجم بالنسبة لي في البيئة، العثور عليه في الذاكرة الخاصة بك، إذا جاز التعبير. وما هو لطيف الآن، و أنه إذا ذهبت إلى هنا، يمكنني القيام به نقطة مائل مرحبا دوت بي، or-- هم. تم رفض الإذن. حسنا، سترى أكثر من هذا مع مشكلة تعيين سبعة، إذا كنت لم تقم بالفعل، مع أذونات. اتضح أن أحتاج لتنفيذ هذا الأمر دعا [؟ chamod؟] من أجل التغيير mode-- زائد س hello.php. أحتاج [غير مسموع] هذا واحد إضافي الخطوة التي يقول جهاز الكمبيوتر الخاص بي، جعل تنفيذ hello.php. والآن مشاهدة ما happens-- نقطة خفض hello.php، فإنه يعمل فقط. ولست بحاجة إلى تحديد المترجم بعد الآن. وأنا يمكن أن تجعل من أجمل، لا يزال، لو قمت بإعادة تسمية هذا الشيء. إذا انتقلت إلى hello.php فقط Hello-- ذلك تلاحظ في أعلى اليسار، اسم البرنامج هو في الواقع الآن مجرد مرحبا. الآن يمكنني جعلها تبدو وكأنها برنامج C، على الرغم من أنه مكتوب في PHP-- أو بصراحة أي عدد من لغات أخرى. لذلك تعزيز هامشي، لا فرق الوظيفي. ولكن هذا مجرد القليل من الفضول الآن، بحيث يمكنك كتابة برامج في أي لغة، ويقوم المستخدم لا أن تعرف أو رعاية ما هي هذه. حسنا، دعونا ننظر في أكثر مثال مقنع الآن أنني جلد مقدما. وهذا ما يسمى quote.php. وأنها متاحة على الانترنت. وتلاحظ أنه short-- جدا ولكن هذا برنامج سطر الأوامر هذا الذهاب للبحث عن أسعار الأسهم بالنسبة لي، الذي يجري فعلا أن يكون وثيق لمشكلة مجموعة السبع. لذلك دعونا نرى ما أفعله. في أعلى جدا أنا عندي فتح قوس علامة استفهام PHP. ثم لقد حصلت على هذا الخط، حيث أنا تتطلب ملف يسمى functions.php-- ونحن في طريقنا لرؤية المزيد عن هذا في شيء، ولكن هذا هو مثل لC نسخة حادة تشمل، الى اين تريد الذهاب تشمل ملف آخر. PHP تسميه تتطلب، على الرغم من أنه لديها أيضا تشمل وظيفة. واتضح أن function.php هو كتبت مجرد شيء قبل فئة. وضعه في نفس الدليل، ل أردت أن عامل بها بعض التعليمات البرمجية أننا قد ترغب في استخدام أي مكان آخر. وفي الوقت نفسه، يمكنك على الأرجح نستنتج ما يحدث هنا. هذا هو مختلفة قليلا من C-- لكن ماذا أعني ضمان الاستخدام السليم؟ ترجمة هذا أكثر من الناحية الفنية. تحت أي ظروف أنا الانسحاب من البرنامج، أو الخروج؟ نعم؟ الحضور: عندما لم يكن لديك اثنين من وسائط سطر الأوامر. DAVID مالان: عندما لم يكن لديك لقيادة خط الحجج. وتذكر أن واحدة من تلك الحجج هي اسم البرنامج نفسه. والثانية ستكون كلمة أخرى أنا اكتب بعد موجه. لذلك تماما مثل C، هذا هي طريقتي في التحقق، لم المستخدم تتعاون و تشغيل البرنامج كما كنت أنوي؟ الآن، هناك شيء مختلفة قليلا مع أول C-- من كل ما لدينا يكون هذا علامة الدولار، وماذا يفعل الدولار توقيع دلالة في PHP؟ مجرد متغير. هذا all-- متغير فقط تليها كل ما تريد أن نسميها فعلا. لاحظ أن هناك شيئا المفقودين من برنامج PHP بلدي، تماما كما كان في عداد المفقودين الماضي الأسبوع، مقابل C، الذي ما هو؟ وأنواع، ولكن أيضا شيئا آخر. لا يوجد شيء function-- الوظيفة الرئيسية. ليس هناك وظيفة الرئيسية. كنت مجرد بداية الكتابة التعليمات البرمجية الخاصة بك دون الحاجة ما يدعو للقلق تعسفية إلى حد ما اتفاقية تسمية بعض الافتراضي وظيفتها الرئيسية. حتى ARG C هو مجرد حقا متغير عمومي أن المترجم يجعل المتاحة لي. الآن، هذا مثير للاهتمام. وذلك للبحث عن أشياء. الأسهم الدولار هو على غادر، وهذا متغير بلدي. على جهة اليد اليمنى، هناك على ما يبدو وظيفة في PHP دعت البحث التي أنا تمرير خط بلدي الأمر الأخير حجة to-- مهما كانت الكلمة. وسنرى كيف أن هذا يعمل في لحظة. ثم أخيرا أنا الإبلاغ عن السعر. أنا طبع واحد حصة كذا وكذا. وتذكر، وهذا هو الطريقة PHP-- وسيلة في PHP-- حيث لم يكن لديك للقيام الدولار S بعد الآن. يمكنك فقط استخدام الأقواس المجعدة وسد العجز في بعض متغير. لم يكن لديك ما يدعو للقلق باستخدام printf في نفس الطريق. وبوصفها جانبا، عند وضع متغير داخل التنصيص من هذا القبيل، كنت تستخدم تقنية الهوى ودعا الاستيفاء متغير. وهو ما يعني مجرد سد المتغير هنا. وبوصفها جانبا، البعض منكم الذين يأتون من الخلفيات البرمجة الأخرى، لا يجوز لك استخدام علامات الاقتباس المفردة حول سلاسل للقيام بذلك. يجب عليك استخدام علامات الاقتباس المزدوجة ل الاستيفاء متغير للعمل. وإلا فسوف حرفيا رؤية تلك الأقواس المعقوفة. حتى أخيرا، دعونا نمضي قدما وتشغيل هذا. اسمحوا لي أن محطة بلدي أكبر قليلا. اسمحوا لي أن المضي قدما وتشغيل داخل بلدي دليل الاقتباس. [؟ CDsource؟] [؟ AM؟] [؟ الاقتباس؟] PHP الاقتباس نقطة PHP، وانا ذاهب للبحث عن شيء مثل GOOG، وهو رمز السهم لها، وسهم واحد من اسمها الجديد، الأبجدية المؤتمر الوطني العراقي، يكلف 717 $، وذلك اعتبارا من اليوم. كل الحق، وإذا كنا نريد أن تشغيل هذا مرة أخرى، أي شخص يكون مؤشر الأسهم أخرى أنها تريد أن تبدو تصل؟ مايكروسوفت أعتقد أنه هذا واحد، MSFT-- 53 $. أعتقد ياهو هو ربما ذلك. والفيسبوك هو ذلك. فما هو هذا البرنامج تفعل؟ السحر ويبدو أن تكون جزءا لا يتجزأ في تلك الوظيفة البحث. لذلك دعونا نلقي نظرة سريعة. وتبين أن لا يأتي مع PHP، انها في functions.php. ونحن لن تمر هذا بقدر كبير من التفصيل، ولكن لاحظ كلمة المنطوق هنا أنه في خط ستة من functions.php-- أنا أقول حرفيا وظيفة. I تحديد اسم وظيفتي. وبعد ذلك تحديد أي الحجج، أو المعلمات، أريد أن الوظيفة لtake-- أي أنواع. وبعد ذلك تنفيذ ذلك. وسوف موجة يدي في التنفيذ، لأنه هو الحق متقدمة الى حد ما الآن، ولكن سنرى مرة أخرى في الواقع في غضون أسبوع في مشكلة تعيين سبعة. ولكن يمكنني تنظيف هذا أيضا. وأود أيضا أن تدرج في كود اليوم نسخة من الاقتباس، والتي لا يوجد لديه ملف نقطة PHP. لأن ما هو المفترض في العلوي من البرنامج فقط ودعا أقتبس؟ أن ما يسمى shebang-- لل الرقية خفي إلى حد ما تقول تجد PHP ثم تشغيله على قانون بلدي هنا. كل الحق، بحيث يجلب لنا حيث توقفنا time-- آخر ولكن مع بعض الأمثلة أكثر تقدما. أي أسئلة حتى الآن حول PHP أو ما نفعله؟ No-- كل الحق. نعم؟ الحضور: داخل ملفات HTML، لا you-- [؟ هل ؟] [؟ فقط نسميها؟] و(غير مسموع) ملف PHP؟ DAVID مالان: سؤال جيد. في سياق شبكة الإنترنت، والتي نحن حول حرفيا للانتقال إلى، كنت لا تستخدم ما يسمى كوخ في القمة، لأن server-- على شبكة الإنترنت في كثير من الأحيان برنامج يسمى أباتشي أو مايكروسوفت IIS، ملقم معلومات إنترنت، أو أي عدد من غيرها من البرامج خادم الويب، يعرف أنه عندما يرى ملف نقطة PHP، أنه يجب تشغيل مترجم على ذلك. أنها لا تبدو في ذلك السطر الأول. حتى هذا الخط خدعة الأولى هو فقط عندما كنت كتابة سطر الأوامر programs-- ونحن لن نفعل فائقة في كثير من الأحيان، لكنه طريقتنا في سد أمثلة C لدينا الآن لدينا PHP. لذلك دعونا بالفعل في سد هذا العالم من العالم سطر الأوامر على شبكة الإنترنت عن طريق القيام بما يلي. اسمحوا لي أن نمضي قدما ورسم هنا لمجرد لحظة. حتى إذا كان لدينا خادم الويب، أو بالأحرى اذا كان لدينا جهاز الكمبيوتر المحمول أكثر من هنا، وأنا أوجه هذا القبيل. وهنا لدينا الإنترنت بشكل أو بآخر. ثم أكثر من هنا، لدينا ملقم في building-- هذه هي الطريقة الإنترنت works-- وهنا هو خادم مع بعض الاضواء ربما. ما يجري في الواقع على بين هذه اتصالين؟ حتى في هذا المبنى هو خادم الويب. هذا مجرد جهاز كمبيوتر وهذا ما تعمل بعض التشغيل system-- ربما البرمجيات الحرة ودعا أباتشي، الذي يشغل CS50 IDE. لذلك يمكنك في الواقع التفكير في هذا المبنى كما يجري بناء في والتي يتم تخزينها CSt0 IDE. حيث ان كل من لديك الحسابات، حيث كل واحد منكم لدينا خادم الويب الخاص بك تشغيل، ولكم جميعا لدينا عناوين المواقع الفريدة الخاصة بك، كما بدأنا لمناقشة، وسترى أكثر في وضع P. ستة. وهنا جهاز الكمبيوتر المحمول في مكان ما آخر على الإنترنت. وذلك عندما أقوم بزيارة URL الذي ينتمي بالنسبة لي، أن حركة المرور على الإنترنت سوف أكثر من الخادم، الخادم تلقي HTTP request-- مثل الحصول على index.html و وانها في معرض رده على أن صفحة الويب. لذلك هذا هو النموذج العام. في حين أن كل شيء حتى الآن اليوم، كل شيء يحدث فقط في حدود هذا المبنى. كنت تستخدم جهاز الكمبيوتر المحمول، ولكن كان ارتباطي CS50 IDE، لذلك كل من هذه البرامج كنت اخوض كان داخل هذا الخادم، في حد ذاته. ولكن الآن، دعونا نبدأ إعادة استخدام PHP لكتابة بعض البرامج الفعلية التي يتم تقديم من قبل خادم الويب. وللقيام بذلك، وانا ذاهب للذهاب في مجمله مجموعة من الأمثلة أن إدخال هذه الفكرة هنا. لذلك هذا هو نوع من طريقة يتوهم من يصف نموذج البرمجة. في واقع الأمر، كما يمكنك الخروج CS50 أو العمل على المشاريع النهائية، أو اتخاذ بعض اتبع على الطبقة، عليك أن تبدأ أن نرى أن world-- خصوصا بعد أن كبروا مع لغات مثل C التي هي منخفضة السوبر level-- ندرك أن هناك أفضل طرق كتابة البرامج. هناك بعض أنماط يمكنك متابعة، بعض الطرق لتنظيم ملفاتك وسبل تسمية المهام الخاصة بك، بحيث قصة قصيرة طويلة، لقد حان العالم يصل مع مجموعة كاملة من اختصارات وأسماء لطرق البرمجة. هذه هي التقنيات فقط قد تستخدم. واحد منهم يسمى MVC، لنموذج عرض المراقب المالي. وهذا هو فقط، ل الآن، وهي معقدة أكثر من اللازم طريقة للقول كيف يجب أن تحدد موقع على شبكة الانترنت على أساس PHP، في حالتنا. كيف يمكنك تنظيم ملفاتك، كيف يمكن تنظيم المنطق الخاص، بطريقة تجعل من السهل ل إرسال مواقع أكثر تعقيدا؟ وبالفعل، وسوف نقوم بسرعة نصل الى هناك مع ف مجموعة السبع. حتى في عالم MVC، وأنت تسير أن نرى أن لدينا قانون يمكن عموما وصفها بأنها إما مدونة نموذجية، أو رمز وحدة تحكم، أو رمز الرأي. وانا ذاهب الى تبسيط أنها follows-- وحدة تحكم هو أدمغة البرنامج، انها فيها كل من يحدث منطق مثيرة للاهتمام. لذلك كل شيء كنا الكتابة حتى الآن في الصف، هو نوع من مثل تحكم code-- انها السيطرة البرنامج، الحلقات، ك الشروط مهامكم والمتغيرات وكل ذلك. جهات النظر، والآن، وسوف يكون قليلا أكثر وضوحا في العالم على شبكة الإنترنت. A الرأي جماليات من موقع الويب الخاص بك. هذا ما sees-- المستخدم الصور، جداول HTML، علامات HTML، وجميع لذلك، كل من الجمالية رقيق الاشياء التي ليس من الصعب أن يكتب، ولكن هو فقط ما كنت توليد، هو ما يسمى نظر، وعلم الجمال. والنموذج، في نهاية المطاف، هو الذهاب أن تكون قاعدة البيانات التي stuff-- سنبدأ الغوص في جميع والمزيد من هذا الأربعاء. هكذا تحكم هو المنطق، الرأي هو الاشياء الجمالية، والنموذج سيكون فيها نقوم بتخزين البيانات الفعلية لدينا. لذلك دعونا ننظر إلى هذا بشكل ملموس مع المثال التالي. انا ذاهب للذهاب إلى دليل بلدي هنا المصدر اليوم code-- كلها متاح على الانترنت. وانا ذاهب للذهاب إلى النسخة الصفر. وهنا is-- دعونا نسميها نسخة الصفر من موقع CS50 ل. ليس هناك الكثير هنا على الإطلاق. انها صفحة ويب بسيطة جدا هذا ربما باستخدام ما HTML tags-- فقط تخمين من الأمثلة السابقة؟ ما هذا؟ H1-- ربما لأنه كبير جريئة العنوان، أن شعار يصل أعلى، CS50. وماذا هو في اللعب؟ نعم؟ الحضور: قائمة غير مرتبة. DAVID مالان: list-- غير مرتبة حتى العلامة UL وربما بضع علامات LI. وإذا كنت لا تذكر هذه، ذلك بصراحة لا يهم. هذه هي نوع رقيق من تفاصيل تنفيذ HTML ان نظرتم بسرعة وكنت مرة أخرى في طريقك. سنركز أكثر على البرمجة الأفكار التي هي القطع عصيرا. لذلك دعونا مجرد إلقاء سريعة ننظر إلى HTML-- والواقع إذا كنت فتح عرض المصدر هنا، نعم، هذا هو بالضبط ما يحدث هنا. هناك علامة UL. تداخل داخل تلك هي علامات LI. ثم اقترضت URL من المنهج الفعلي هنا. ثم في lectures.php على ما يبدو صفحة أخرى ديناميكيا التي ستكون لدينا، دعونا see-- آه، في الأسبوعين الأولين من المحاضرة. حتى الأسبوع الصفر وأسبوع واحد، دعونا ننظر this-- لو عرض مصدر الصفحة، أيضا سوبر بسيطة. هذه هي الرائدة في صفحتين دعا week0.php، وweek1.php. والنظر في ذلك ما يحدث الآن. عندما اضغط على week0.php، جهاز الكمبيوتر المحمول تم تقديم طلب للweek0.php. خادم الويب، الملقب، CS50 IDE، يتلقى هذا الظرف الظاهري. انها رؤية رسالة مثل، الحصول على week0.php. ومن ثم تفسير ملف، أعلى إلى الأسفل، من اليسار إلى right-- الملف دعا وweek0.php-- بصق على النتائج. حتى داخل هذا الملف، week0.php، يجب أن يكون منطق التحكم الذي يعمل على إنشاء هذه HTML، وسنرى قريبا ذلك. لكنه الآن، اسمحوا لي أن النقر على الأسبوع الصفر، والآن لدينا الأربعاء والجمعة، والآن لدينا الشرائح ببطء من الأسبوع الصفر. وربما تذكرون هذا من طريق العودة عندما. ذلك أن كل هذا الموقع يقوم به. لذلك دعونا النظر في الكيفية التي يفعل ذلك. انا ذاهب للذهاب مرة أخرى في شفرة المصدر هنا، في CS50 IDE، وانا ذاهب لفتح index.php. في الجزء العلوي من هذا الملف حفنة من التعليقات. ثم في منتصف هذا الملف، اتضح، لم كود PHP على الإطلاق. لأنه إذا لم يكن لديك أي من قوس مفتوح به علامة استفهام PHP، أنت حر لمجرد وضع HTML. لأن ما يقوم به PHP ومن المفترض مترجم القيام به، عندما يقرأ هذا الملف-- الأعلى إلى الأسفل، من اليسار إلى right-- فإنه يفسر كود تراه بين فقط تلك أقواس زاوية علامة استفهام. وأي شيء آخر أنه لا كما تعترف PHP، فإنه يبصق للتو. وHTML من بين الاشياء وسوف يبصقون لتو. لذلك يمكن أن يكون هذا الملف تم index.html ودعا، ولكن أنا تسمية كل شيء نقطة PHP كنقطة انطلاق. Lectures.php-- بالمثل مخيب، انها مجرد بعض HTML. Week0.php، وبالمثل فقط بعض HTML. ولكن الآن دعونا نضع على قبعة الهندسة المثل، وتنظر كيف يمكننا تحسين هذه. ليس من الصعب أن تفعل ذلك، ولكن النوع الأول من آلت إلى نسخ ولصق. وفي الواقع، إذا قمت بعمل أسبوعين، كنت أعرف ما أنا ربما تنوي القيام به؟ انا ذاهب للذهاب الى week1.php، وأنا الذهاب لتسليط الضوء على كل شيء. انا ذاهب الى نسخه، لصقه في ملف جديد يسمى week2.php، قرص بعض عناوين المواقع، ويكون في طريقي. مستندا في ذلك على ما لدينا ينظر في C بالفعل، هذا لا يشعر الصحيح، ونأمل. نسخ ولصق نادرا ما الحل الصحيح. ذلك ما يمكن أن نبدأ القيام به لتحسين هذه؟ أين هي فرص لتصميم أفضل؟ بحلول الوقت الذي تحصل على الأسبوع ثمانية، انه سيكون أن يكون مزعج حقا إذا كنت تريد تغيير على الخط كل واحد صفحاتي، أو إذا كنت تريد لتغيير هيكل للتخطيط. فأين هي الفرصة لتصميم أفضل؟ حسنا، دعونا النظر في ما هو المشترك في جميع هذه الملفات. وهنا أسبوع واحد، وهنا الأسبوع الصفر، وهنا lectures.php، وهنا index.php-- ما هو نفسه و ما هو مختلف، تحدث تقريبا، في كل من هذه الملفات؟ نعم؟ الحضور: (غير مسموع) DAVID مالان: OK، وحسن. لذلك هناك نمط، بالتأكيد، حيث في كل مرة وأنا اخترت محاضرة I، وأرجو أن يولد الصفحة متشابهة جدا. وهكذا ربما يمكنني الاستفادة حقيقة أن حقا، نحن عمدا عدديا فهرستها lectures-- لدينا اذا كنت استطيع وضع أكثر كلمات في إجابتك. وما هو الشيء الوحيد، حقا، أن يتغير بين أسبوع واحدا-- واسمحوا لي أن انتقل لأسفل حتى انها ل تقريبا في نفس place-- حتى هنا هو الأسبوع الصفر، تقريبا في الجزء العلوي. هنا هو أسبوع واحد، الأسبوع صفر، أسبوع واحد، الأسبوع الصفر. OK، حرفيا إذا كنت تعرف لا يوجد برنامج على الإطلاق، هذا هو الآن تماما مثل نمط مطابقة لعبة. فما هو الفرق؟ نعم؟ الحضور: (غير مسموع) DAVID مالان: جيد، وبالتالي فإن عنوان يتغير، أي وقت مضى حتى قليلا. صفر يجري، بطبيعة الحال، إلى واحد. نفس الشيء يحدث في العلامة H1. ونحن لا نرى ذلك تماما كما بسهولة، لأن عناوين طويلة قليلا. ولكن تلك عناوين تتغير قليلا. ولكن ما لم يتغير هو، أجرؤ أقول، معظم محتويات page-- العلامة HTML نفس الشيء، والرأس هو نفس، والعنوان هو نفسه تقريبا، الجسد هو نفسه، و كل شيء آخر تقريبا هو نفسه باستثناء تلك بتعديل القليل. فكيف يمكننا أن نذهب عن العوملة بعض من ذلك؟ حسنا اسمحوا لي أن أقترح بالضبط أنه في النسخة المقبلة. حتى هنا في إصدار واحد، ولدي بالضبط نفس الملفات، بالإضافة إلى اثنين آخرين. وهنا index.php-- وحتى لو كنت لم أر PHP من قبل، ما أنا ربما تفعل لحل هذا problem-- بناء على ما تراه هنا؟ نعم، هو أن التزام طفيف؟ لا؟ نعم، على المضي قدما. الحضور: (غير مسموع) DAVID مالان: نعم. الحضور: (غير مسموع) DAVID مالان: أنا بحاجة لكم ل أتكلم فقط قليلا بصوت أعلى. الحضور: (غير مسموع) DAVID مالان: OK، وحسن. وأنا think-- كان من الصعب أن نسمع you-- لكنني أعتقد أن ما تحصل عليه في أن العلامات التي كانت شائعة حتى أعلى، والعلامات التي كانت شائعة في أسفل، وقد تم الآن يؤخذ بها، أو هبط إلى ما هي الملفات؟ Header.php وfooter.php-- ونحن في طريقنا لجعل بعض القرص ل معالجة قلق عليك فقط أثير حول تغيير الأرقام، ل سبيل المثال، إذا كنت سمعت بشكل صحيح. ولكن يبدو أن هذا جوهر ذلك. إذا كان هناك كمية كبيرة من التكرار في الجزء العلوي من الصفحة، وكمية كبيرة من التكرار في الجزء السفلي، دعونا حرفيا تسليط الضوء فقط وخفض هذا المحتوى من، وضعها في الملف-- منفصلة تماما مثل فكرة CSS، حيث أننا يؤخذ بها جماليات متشابهة جدا، وطرح في ملف نقطة PHP منفصل، استخدام تتطلب mechanism-- التي هو مثل C include-- حادة الذي هو في الأساس مثل قوله ذهاب الاستيلاء على محتويات header.php، ونسخها ولصقها هنا. ولكن ما يعنيه هذا هو أنه الآن في index.php، ولدي هذين الخطين. في lectures.php، وأنا أيضا لدينا هذين الخطين. في week0.php، وأنا أيضا لدينا هذين الخطين. وحتى الآن، وإذا كنت تريد تغيير عنوان كل صفحاتي، أو أريد أن تغيير البنية الأساسية، يمكنني تغييره الآن في مكان واحد فقط، أو اثنين من الأماكن-رأس وتذييل، على التوالي. الآن الانطلاق رمز لتبدو أكثر من ذلك بقليل خفي، أليس كذلك؟ ولكن إذا كنت تفكر في ما الصفحة وdoing-- إذا أنا الطالبة week0.php، تماما مثل علي الرسم على here-- عند طلب week0.php، ماذا يعني ذلك؟ حرفيا، هذا الملف طلب من قبل المتصفح. الملقب شبكة الإنترنت server-- CS50 ID-- الاستيلاء على هذه ملف، week0.php، ويقرأ كان الأعلى إلى الأسفل، من اليسار إلى اليمين. على سطر واحد، أنه واجه فورا قوس فتح علامة استفهام PHP، تتطلب رأس دوت PHP، وهكذا ما المترجم PHP does-- المضمن في شبكة الإنترنت الخادم، لأننا تكوينها ذلك لأنه يذهب تلقائيا you-- في header.php، نسخ محتويات، يلصق عليها هنا. ولكن بعد ذلك لقاءات مترجم علامة استفهام قوس وثيق، لذلك فمن كل ذلك التفكير. الآن أنه يبصق فقط عمياء من الخطين خلال السبعة، لأنه مجرد HTML الخام. يحصل على خط الثمانية، ويفعل ذلك السحر نفسه again-- فتح الملف، الاستيلاء على محتويات، و تتطلب منهم أو صقها الحق في ذلك الحين أو هناك. لكنني لمحت مجرد وجود خطأ. هذا هو خطوة جزئية الى الوراء، لأنه إذا نظرنا في header.php، لقد نوع من قطع الزاوية. ما الميزة لم أكن التخلي من أجل للحصول على هذا التصميم الأفضل القول؟ نعم؟ الحضور: (غير مسموع) DAVID مالان: نعم، النوع الأول من قطع الزاوية غير بديهي. أشرتم إلى أن ما تم تغيير كان العنوان والرقم في العنوان، وعدد في H1. لذلك كان الحل بلدي، OK، دعونا فقط إعادة تسمية الصفحة، وعدم التعامل مع هذا مشكلة على الإطلاق. ذلك أن جزئية خطوة إلى الوراء للتأكد. ولكن ما هو جدير بالملاحظة هنا هو أن ما قمت به ويؤخذ على خلاف ذلك كل الاشياء المشتركة. وفي footer.php، لاحظ أنا حللت من كل ذلك، وإن كان أقل، الاشياء المشتركة. لذلك أنا بحاجة إلى أن يكون بطريقة أو بأخرى قادرة الآن على اتخاذ خطوة أخرى إلى الأمام، وإصلاح أن القضايا العنوان. لذلك دعونا نفعل ذلك. اسمحوا لي ان اذهب الى بلدي النسخة الثانية هنا، والتي، مرة أخرى، لديه نفس الملفات باستثناء واحد إضافة جديدة. وانها اكثر قليلا مطول، ولكن دعونا نرى ما اذا كنا يمكن ندف بصرف النظر عما يحدث هنا. وذلك بدلا من مطالبة header.php، وfooter.php، يبدو لي أن تتطلب واحد فقط الملف-- دعا، بطبيعة الحال، helpers.php. واسمحوا لي أن تنص الآن، ما هو داخل helpers.php هو مجرد حفنة من الوظائف التي كتبت، تماما مثل قبل. لكنني يطلق عليه helpers.php. الآن على ما يبدو، في السطر الثالث و 10، وأنا داعيا اثنين functions-- تقديم رأس، وتجعل تذييل الصفحة. تلك لا تأتي مع PHP، كتبت تلك نفسي. وأنا وضعت لهم في helpers.php. الآن، رأينا فقط هذا النحو مرة واحدة، وكان السوبر وجيزة. ولكن هذا على ما يبدو حجة لجعل رأس، وظيفة. لماذا أنا أعرف ذلك؟ حسنا ها هي paren قريب، ها هي paren مفتوحة. وبطبيعة الحال، تماما كما في C، أي شيء بين هذين القوسين هو input-- أو حجة على وظيفة. ما هو نوع البيانات لهذه الحجة، بناء على ما قمت الضوء؟ ما يفعله هؤلاء قوسين معقوفين تشير، على أساس الأسبوع الماضي؟ نعم، انها array-- على وجه التحديد لمجموعة النقابي. وبناء الجملة هذا باعتراف الجميع هو القليل من غير تقليدي، ولكن هذا هو مجرد عابرة في زوج قيمة مفتاح واحد. والمفتاح هو، بين قوسي الإقتباس العنوان، والقيمة هي CS50. إذا كان علينا القيام به هذا في C، فإنه قد بدلا من ذلك تبدو أشبه هذا، مجرد الإقتباس CS50-- أو في الواقع سيكون مجعد الأقواس، أو شيء من هذا القبيل في C، حيث المفتاح هو صفر، وكانت القيمة CS50. ولكن مرة أخرى، في PHP، على الرغم من أن بناء الجملة، ومرة ​​أخرى، غريبة بعض الشيء، فإنه يسمح لك بالمرور في الكلمات بدلا من الأرقام لربط مفاتيح مع القيم. فماذا يعني كل هذا؟ إذا ذهبت إلى helpers.php، دعونا ننظر في هذه الوظيفة. renderHeader.php، بدلا renderHeader غير عملي، وأنا أعرف ذلك لأنني أرى وظيفة الكلمة هنا. هذا هو الجديد من C-- أنه على ما يبدو يأخذ حجة دعا data-- ولكن كان يمكن أن يسمى هذا أي شيء، لكنني يطلق عليه البيانات، لمجرد أن يكون قليلا وclean-- مجرد إلقاء تخمين، وخاصة إذا كنت قد برمجت في بعض الدول الاخرى أعلى مستوى اللغة من قبل، شيء فوق C، من الناحية النظرية. ماذا قوس مفتوح على قدم المساواة قوس مربع ربما يعني؟ أو ما قد يعني ذلك؟ لم نشهد هذا في C. نعم؟ صفيف فارغ. على وجه التحديد، وهذا يعني أنه إذا المستخدم لا يدعو renderHeader مع وسيطة، وأنا لا تزال جارية لديك حجة دعا البيانات، ولكن قيمته الافتراضية هي سيكون صفيف فارغ. حتى انها مجرد راحة لطيفة. ليس لدي الصراخ المستخدم، أو نقول لكم استخدام الدالة لي خطأ. يمكنني فقط إعطاء المستخدم الافتراضي القيمة، وإذا كنت لا تهتم بشكل خاص. الآن هذه الوظيفة، وأنا الذهاب إلى موجة يدي في. ولكن هذه الوظيفة تتيح استخراج لنا لتمرير هذه المتغيرات في البيانات في header.php على النحو التالي. وهذا هو آخر قطعة، أعتقد، من جملة غير تقليدي. هنا هو بلدي إصدار جديد من header.php-- ذلك كان يقول، حرفيا، مفتوحة قوس عنوان CS50، وأنه كان عليه. ونفس الشيء بالنسبة للH1. الآن تقول ما يبدو شيء غير تقليدي جدا. واسمحوا لي أن تبسيط هذا لحظة على النحو التالي. هذا ما لدي تغيير لقبي أن يكون. ومع ذلك، هو الحصول على القبيح قليلا إلى أقواس مفتوحة باستمرار مع PHP، ثم استخدم وظيفة الطباعة. اتضح أن PHP لديه الاختزال التدوين لهذا، الذي هو مجرد علامة المساواة، والتي هي من الناحية الفنية وظيفة تسمى صدى بدلا من الطباعة، ولكن من الشيء نفسه، وعلى نحو فعال. أن مجرد تبدو أفضل. انها مجرد نحوي السكر، اذا صح التعبير، أن يجعل قانون بلدي تبدو أفضل قليلا. ولكن اتضح، و سنرى هذا مرة أخرى قبل فترة طويلة، وعلينا أن نسمي هذا مزعج وظيفة الطويل الذي يسمونه أحرف خاصة في HTML PHP، لأنه اتضح هناك مدخلات معينة أن المستخدم قد تعطينا، أو أن المستخدمين قد تعطينا، التي تجري لكسر موقعنا. ولكننا سوف نرى أن القادم الأسبوع مع جافا سكريبت. ولكن الآن، ونعرف تماما أن هذا الملف، headers.php، ببساطة يأخذ العنوان الذي مررت في، فإنه جعل تأكد من أنها آمنة ليتم حقنه في شبكة الإنترنت الصفحة، ويبصق بها كما قبي وكما بلدي H1. حتى إذا ذهبت إلى هذا الإصدار الآن، تلاحظ أن المحاضرات ديها عنوانه الوراء، الأسبوع الصفر له عنوانه الوراء، و في الواقع، وأنا توليد HTML غير مطابق لما أول نسخة بلدي was-- باستثناء بلدي بيضاء، لأنني قد بدأت لتنسيق قانون بلدي بشكل مختلف قليلا. ولكني ولدت كل رمز يهمني. لذلك اسمحوا لي وقفة ل مجرد لحظة ونرى إذا كان هناك أي أسئلة أو الارتباك لقد خلق. كل الحق، لذلك دعونا تطور اصعب قليلا هنا لمعرفة ما إذا كان هناك أحد فرصة للتحسين. كان Helpers.php أيضا هذه وظيفة، ودعا renderFooter. وما هو جدير بالملاحظة حول renderHeader، وrenderFooter؟ ومرة أخرى، لأغراض اليوم، ونعرف أن وظيفة استخراج هي فقط طريقتي في الحجج عابرة في header.php وfooter.php. آسف؟ الحضور: (غير مسموع) DAVID مالان: نعم، أنا فقط غيرت يتطلب خط. لذلك حرفيا، لقد ارتكبت خطيئة من النسخ واللصق، ولكن مرة أخرى. انها ليست عدد هائل من الخطوط، ولكن يأتي on-- إذا أنا نسخ ولصق كل شيء فقط لتغيير كلمة واحدة صغيرة، وكلمة واحدة القليل الذي يشير آلان من غير التذييل هنا، مقابل رأس هنا. خلاف ذلك، كل شيء متطابقة، باستثناء، وبطبيعة الحال، أسماء الدالة. ذلك ما يمكن أن نقوم به بشكل أفضل؟ حسنا اسمحوا لي أن فتح هذا الإصدار هنا، حيث في helpers.php، لماذا لا استطيع مجرد الحصول على قليلا أكثر ذكاء حول هذا الموضوع؟ إرسال قليلا أكثر تعقيدا رمز، ولكن نسميها تجعل؟ وذلك ما قد غيرت جذريا؟ فإنه يأخذ حجة now-- حجتين، لا تزال البيانات. ثم ما هو أول اسم ربما تستخدم ل، بناء على ما كنت تقرأ هنا؟ حتى لو كان بعض من بناء جملة لا تزال جديدة. ما هو القالب الدولار؟ آسف؟ الحضور: رأس أو تذييل الصفحة. DAVID مالان: رأس أو تذييل الصفحة. لذلك على ما يبدو، قررت أنه إذا الشيء الوحيد الذي تغير ما أريد قالب لprint-- والقالب أعني هذا هو مخطط ل التعليمات البرمجية التي أريد أن الإخراج، ولكن أريد أن سد العجز في بعض values-- حتى لو كان رأس الوحيد أو تذييل الصفحة، لماذا لا استطيع بالحدود هذا وندعو الدولار الحجة قالب؟ ومن ثم بناء الجملة هذا غير تقليدي يسمح لي لإنشاء مسار في متغير هنا. حتى مسار الدولار هو متغير. ماذا يعني هذا النحو القيام به، إذا كنت على دراية؟ نعم؟ الحضور: (غير مسموع) DAVID مالان: بالضبط. إذا القالب، الإقتباس، رأس، أو إذا كان القالب، الإقتباس وذيلها، وهذا الخط هناك أنني قد سلط الضوء، خط الثمانية، هو ببساطة أخذ هذا الاسم، مثل رأس، ووصل مع PHP نقطة. لذلك لم يكن لدينا هذا المشغل في C. هذا المشغل هو نقطة شيء مدهش في PHP-- إذا كنت دراية جافا سكريبت أو جافا، يمكنك استخدام زائد التوقيع على قيام سلسلة. في C، بل هو ألم في neck-- وأنا آسف لذلك، في مجموعة P ستة، وأنت تسير لفعله this-- ذلك هو الألم في الرقبة لسلسلة السلاسل. لماذا ا؟ حسنا، لأنه إذا كنت قد حصلت على سلسلة هذا هو كل هذا الوقت، وسلسلة أخرى هذا كل هذا الوقت، لا يمكنك مجرد سد لهم معا. ماذا لديك بدلا من ذلك إلى القيام به في C؟ نعم؟ الحضور: (غير مسموع) DAVID مالان: عليك أن malloc الذاكرة، أو استخدام مجموعة في بنية تخزين العناصر. وكان لديك فعلا ل جعل هذا مجموعة كبيرة بما يكفي لتناسب هذا بالإضافة إلى هذا، بالإضافة إلى مائل الصفر. ثم سلسلة معا باستخدام يحرك القط أو يدويا مع لحلقة، أو أي عدد من التقنيات. ونعرض لكم زوجين في ست سنوات المنصوص ص. انها الألم في الرقبة. وهذا هو حقا ما أعنيه حول هذا مقابل this-- مثل C مقابل PHP. كنت مجرد الحصول على أكثر من ذلك بكثير وظائف مجانا، بحيث يمكنك التركيز، من الناحية المثالية، على المرح جزء من الترميز، و المشروع الذي تريد حلها، بدلا من مستوى الدخول في تفاصيل منخفضة. ولذلك فإن هذا يولد فقط header.php أو footer.php على أساس واحد الذي أسميه. والواقع إذا ذهبت إلى index.php، لاحظ كل ما changed-- بدلا من داعيا تجعل رأس أو تذييل تقديم، ادعو تقديم، تليها اسم القالب الذي أريد القيام به. وسترى هذا، أيضا، في مشكلة تعيين سبعة، حيث نسمح لك استخدام نفس الوظيفة لجعل عناقيد وعناقيد من صفحات الويب المختلفة. وذلك بدلا من يسكن جدا أكثر من ذلك بكثير على تلك details-- التي سترى مرة أخرى في مجموعة مشكلة seven-- دعونا ننظر في الآن بداية الحل إلى مشكلة أكثر إثارة للاهتمام. حتى الآن، لا شيء قمنا فعلت لديها البيانات المحفوظة. في الواقع، والمرة الوحيدة التي حفظتها من أي وقت مضى شيء فعلناه في هذه الفئة وعندما كان لدينا عرض بسيط جدا لحظة مرة أخرى، حيث كنا ملف IO في C، وأعتقد أنني كتبته في اسمي، و اسم هانا، واسم ماريا، أو ربما اسم اندي، و ثم أنقذنا من الملف-- CSV مفصولة بفواصل ملف القيم. وكنا fopen-- أعتقد كنا fprintf على ما أذكر، ونحن حفظ الملف. الآن، وهذا هو أبسط شكل قاعدة بيانات. إذا كنت تريد أن تجعل موقع على شبكة الانترنت ل برنامج Frosh الرسائل الفورية، حيث الجدد يمكن التسجيل للحصول على الرياضة، وكنت مثالي تريد أن تفعل شيئا مع تلك البيانات. في الأسبوع الماضي، ونحن لم تفعل شيئا مع data-- قلنا فقط، كنت مسجل، ليست في الحقيقة. أو ربما أنا بالبريد الإلكتروني بروكتور، وأنه كان عليه. ولكن سيكون من الجميل لو استطيع إعطاء هذا بروكتور ملف CSV، مثل ملف Excel. أو الأفضل من ذلك، فإنه يكون لطيفا إذا لم أستطع وضع أسماء هؤلاء المستخدمين و النوم أسماء وكل ذلك في قاعدة بيانات يعيش فقط إلى الأبد، حتى اخترت لحذف البيانات. A قاعدة البيانات التي تسمح لي الاستعلام عن معلومات. والواقع، وهذا ما هو قاعدة البيانات. ونحن نقدم اليوم، و الأسبوع القادم أيضا، وهي تقنية دعا SQL-- استعلام منظم اللغة، وهي لغة أخرى. انها في الأساس البرمجة اللغة، ولكن لقواعد البيانات. وقاعدة بيانات حتى الآن، فقط التفكير في كإصدار السوبر يتوهم من Microsoft Excel، أو جوجل جداول البيانات، أو أرقام أبل. انها عموما البرنامج الذي يسمح لك لتخزين مجموعة كاملة من البيانات في الصفوف والأعمدة، تماما وكأنك قد في Excel. ولكن ما هو جميل، وخاصة إذا نحن لسنا على دراية فائقة إكسل، ما SQL يسمح لك القيام به هو الاستعلام هذا المعلومات من خلال كتابة أسطر من التعليمات البرمجية حيث يمكنك، حتى إذا كان لديك قاعدة بيانات لديها مليون الصفوف في ذلك، يمكنك العثور على الأشياء بسرعة فائقة. في الواقع، إكسل بشكل خاص سيئا على مجموعات كبيرة من البيانات. في واقع الأمر، وتصل إلى عدد قليل منذ سنوات، اتضح سوف تتفوق تسمح لك لتخزين ما يصل إلى 65،535 صفوف من data-- التي يبدو مثل الكثير، ولكن في كنت مرة طالب دراسات عليا، وأتذكر بثلاثة اضعاف خلال هذا لأنني كنت توليد ملفات CSV لبحثي وI يريد تحليلها بسرعة فقط عن طريق فتح في Excel. بالطبع، جهاز الكمبيوتر الخاص بي تحطمت تماما، لأنه كان أكثر من 65،000 الصفوف. ولكن من أين حصل 65،535 يأتي من؟ ما كان يقوم به مايكروسوفت، ويفترض؟ إذا كنت جيدة مع الصلاحيات الخاصة بك من اثنين؟ نعم، كانوا يستخدمون 16 بت قيمة لتمثيل رقم الصف. واثنين من ل16 غير 65،536-- ناقص واحد، لأنه إذا مؤشر الصفر يعني أن كان أكبر عدد من الصفوف الأول يمكن أن يكون. وكان مجرد قرار تصميم. عن طريق توفير 16 بت، فإنها تقتصر لي إلى 16،000 الصفوف، بدلا من 4 مليار دولار، والتي يمكن أن يكون قد مثالي. ولكن الآن، ونحن في طريقنا ل يعرض هذا أكثر في سياق شبكة الإنترنت. وما هو لطيف حول SQL هو أنه حتى على الرغم من انها قوية جدا وجميلة متطورة، يغلي حقا وصولا الى أربع عمليات رئيسية، أربعة وظائف رئيسية، إذا كنت will-- تحديد، لاسترجاع البيانات، والبحث للبيانات. حذف أو حذف البيانات؛ إدراج لإضافة الصفوف إلى قاعدة البيانات؛ وتحديثها. لذلك إذا كنت قد استخدمت من أي وقت مضى جوجل جداول البيانات، أرقام أبل، مايكروسوفت إكسل، كنت قد أعدم، على الأرجح، عن هذه العمليات كإنسان من قبل فقط باستخدام لوحة المفاتيح وmouse-- إدخال البيانات، وذلك باستخدام عينيك لتحديد أو البحث عن البيانات، أو تحديث البيانات، أو حذف البيانات. فماذا يعني هذا؟ حسنا، مثبتة مسبقا في CS50 IDE هو برنامج يسمى الخلية. انها ومفتوحة المصدر المجانية قاعدة بيانات سوبر شعبية. الفيسبوك، على سبيل المثال، يستخدم لهذا اليوم، من بين غيرها من الأدوات التي يستخدمونها. والكثير من المواقع شعبية جدا استخدام في جزء كبير منه بسبب انها سريعة، ولأنه مجاني. على الرغم من وجود بدائل بالتأكيد. والبعض منكم قد اشتغل مع بدائل للمشاريع النهائية. هذا هو لقطة، وفي الوقت نفسه، من أداة على شبكة الإنترنت يسمى بريس. بل هو من قبيل المصادفة أن هذه الأداة على شبكة الإنترنت أيضا مكتوب بلغة، PHP، ولكن ما من المفترض أن تفعل ويعطينا على شبكة الإنترنت واجهة لقاعدة بيانات. لأن الخلية هو عادة شيء، من الناحية التاريخية، ل سوف تتفاعل مع فقط مع سطر الأوامر. وسيكون سوبر مزعج وغامضة ل لكتابة الأوامر النصية لتحديد البيانات، إدخال البيانات، وحذف البيانات. وحتى بعض الناس على شبكة الإنترنت كتب برنامج على شبكة الإنترنت أن مجرد السماح لنا إدارة البيانات في قاعدة البيانات الخاصة بنا. انها مثل النقر المزدوج على Excel و تشغيل النسخة الموجودة على الانترنت منها. وماذا كنت تنوي استخدام هذه ل في نهاية المطاف الأسبوع المقبل، وليس في ست سنوات المنصوص ع، ولكن لبناء شيء دعا CS50 المالية، التي وستكون لدينا قاعدة بيانات ل المستخدمين، مع أسماء المستخدمين وكلمات المرور، يبلغ الدولار أنهم لديهم في حساباتهم المصرفية. انها سوف تكون شيء تستخدمه لتخزين رموز والكميات من الاسهم التي المستخدمين وقد اشترى باستخدام الظاهري الدولارات التي سوف تعطي لهم. وانها سوف تسمح للمستخدمين للتسجيل في موقع الويب الخاص بك، ذلك أنه حتى أصدقائك يمكن أن تصل قيمتها إلى موقع الويب الخاص بك وسجل في الواقع، تسجيل الدخول، واللعب في جميع أنحاء ومحاولة للعثور على خطأ في التعليمات البرمجية الخاصة بك، ومحاولة ايجاد الخلل في موقع الويب الخاص بك. وأنها سوف تسجل ببساطة عن طريق إضافة أنفسهم، على نحو فعال، عبر مدونة تكتب إلى قاعدة البيانات الخاصة بك. على سبيل المثال، وهذا هو لقطة سريعة ما قاعدة بيانات قد تبدو. كان هذا من أحد solutions-- العام الماضي هذا هو مثل مصغرة إكسل ملف، وتخزينها في قاعدة البيانات الخاصة بنا، تخزينها في هذا البرنامج يسمى الخلية. على الجانب الأيسر، لقد يبدو نظرا لكل مستخدم رقم فريد. في العمود الثاني، لقد أعطيت الجميع مستخدم name-- بلدي بينهم. وعلى الجانب الأيمن، لقد أعطاهم تجزئة. الآن هذا هو في الواقع كلمة السر، ولكنها ليست كلمة مرور نص عادي. انها كلمة المرور المشفرة، إذا صح التعبير، أو كلمة مرور التجزئة. الذي سوف نعود إلى ما قبل فترة طويلة. ولكن إذا كنت قد قرأت أي وقت مضى مقال حول كيفية كلمة السر في بعض البنوك أو بعض ربما تكون قد تأثرت على شبكة الإنترنت، يمكن أن تعني عموما واحدا من أمرين. لذلك هذا هو مجرد مقتطفات من ستة المستخدمين. كل واحد منكم الآن ان الرقم من خلال القرصنة أو تكسير ما هي كلمات السر لدينا ستة الناس. ولكن إذا كنت قد حصلت من أي وقت مضى تنبيه أو الاعتذار من شركة أو موقع المثل، آسف، اندلعت القراصنة في قاعدة البيانات الخاصة بنا، يجب تغيير ربما لديك كلمة السر، ما قد يعني ذلك؟ حسنا، واحد، يمكن أن يعني كانت الشركة أكثر مغفل، وتم تخزين كلمة المرور في عمود من هذا القبيل، غير مشفرة. مما يعني أن الخصم، الذين سرقوا قاعدة البيانات، حرفيا يعرف بك اسم المستخدم وكلمة المرور. هذا هو أسوأ سيناريو ممكن. وكما سترى في ف مجموعة سبعة، من السهل جدا لتجنب. ليست هناك اي عذر لذلك شكل الغباء في شبكة الانترنت اليوم. Two-- وسوف نجد بعض المواد للشهادة على حقيقة أن هذا لا يزال يحدث، nonetheless-- اثنين، وربما الخصم سرق هذا الإصدار من قاعدة البيانات. الذي لا يزال نوع سوء، لأنه الآن أنهم يعرفون أن لدي ستة عملاء، أنا أعرف أسماء المستخدمين من هؤلاء العملاء الستة، وأنا أعلم أن مشفرة الإصدارات أو الإصدارات تجزئته، كلمات السر هؤلاء العملاء الست. ولكن كل واحد منكم قد فعلت [؟ القراصنة 2؟] حيث يمكنك تصدع كلمات السر، أو أخذت نظرة في هذا الإصدار من المشكلة مجموعة، لماذا لا يزال قليلا يثير القلق إذا كان العدو يعرف التجزئة الخاصة بك كلمات السر؟ الحضور: لأن ما في وسعهم دخول القاموس كله في وظيفة تجزئة. وإذا كانت كلمة المرور هي القاموس كلمة، [؟ أنها يمكن أن match-- فقط؟] DAVID مالان: بالضبط، وعدو تستطيع فقط كتابة التعليمات البرمجية، مثل بعض منكم فعلت ل[؟ القراصنة؟] (2)، حيث يمكنك تكرار عبر جميع الكلمات في القاموس، أو كل مزيج ممكن من A من خلال Z واحد من خلال nine-- الذي يبدو مثل الكثير، وغير ذلك. ولكن للكمبيوتر، انها جميلة سريع الرتق. في واقع الأمر، هو أن نقطة [؟ القراصنة 2،؟] كان أن تأخذ الاشياء التي يبدو حرفيا مثل هذا، والهندسة العكسية ما هو عليه بالفعل. ولذا فإننا سوف ننظر كيف يمكننا تخزين هذا بشكل أكثر كفاءة. اتضح، والحمد لله في الخلية، هناك سوف تكون أنواع البيانات. واحدة من المرح أجزاء عن تصميم قاعدة البيانات، لنكون صادقين، وتقرر في الواقع لنفسك كيف يجب أن تمثل البيانات؟ يجب أن تمثل رقم الهاتف كما عدد صحيح، مثل عدد كبير، أو لفترة طويلة؟ أم أنك تفعل ذلك في الواقع كما سلسلة من حرف؟ ويمكن أن يكون هناك جدا الآثار غير تافهة من هذا. في الواقع، واحدة من أقرب، قصص ثيق متعة عندما كان مارك زوكربيرج بناء الفيسبوك، كانت مكتوبة اصلا في، وما زال هو مكتوب إلى حد كبير في PHP. واحدة من أكبر التحديات التي واجهوها في وقت مبكر والتوسع. عندما أبقى مضيفا المدرسة بعد المدرسة بعد انتهاء اليوم الدراسي، على حد علمي، أحد الحلول الأصلية كان أساسا لنسخ ولصق بعض قواعد البيانات وبعض من القانون، بحيث كان هارفارد التي تعمل على الخادم الخاص بها، ومعهد ماساتشوستس للتكنولوجيا والتي تعمل على الخادم الخاص بها. وهذا هو سبب لبعض من منكم الذين قد نتذكر، لا يمكن أن يكون أصدقاء في الشبكات الأخرى. وربما كنت لم يكن لديك أصدقاء في MIT أو هارفارد قبل 10 سنة أو نحو ذلك، ولكن لا يمكن أن تمتد شبكات لهذا السبب جزئيا. واحدة من أكبر التحديات التي تواجه مارك وبالنسبة للشركات مثل الفيسبوك هو في الواقع التعامل مع مئات والآلاف والملايين الطلبات في الثانية الواحدة. وبالتالي فإن الأمور سنبدأ نتحدث عن هذا الاسبوع تسير حقا أن يكون وثيق ل كتابة برامج جيدة، وشعبيا أدوات الناجحة التي يمكن التعامل مع الكثير من المستخدمين. ولذا فإننا سوف نتحدث عن أشياء مثل الفهرسة والبحث، ولكن هذا هو عليه اليوم. سوف نرى لك لأكثر يوم الاربعاء. [MUSIC - "ساينفيلد" THEME] DAVID مالان: يمكنك ل ذلك، وطرح منه. ولم يكن لديك التمسك بعض مبلغ محدد مسبقا من الذاكرة. حسنا، ما الذي على وشك أن يسمى؟ رئيس 1: حسنا، ما الذي يحدث؟ المتحدث 2: ماذا تقصد؟ انه يعطي محاضرة. DAVID مالان: ويمكننا استخدام استدعاء الدالة malloc إلى memory-- رئيس 1: لماذا لا يتم تحريك ذراعيه؟ المتحدث 2: حسنا that's-- كما تعلمون، وهذا طبيعي. انها مجرد مثل لديه فقط النقانق كبيرة معلقة هناك. رئيس 1: هذا طبيعي؟ المتحدث 2: نعم، أعتقد أننا مجرد افتراض أنه عن طريق الخطأ استبدال مزيل العرق له مع superglue.