[Powered by Google Translate] [ندوة] [الشبكة العالمية للتنمية: من الفكرة إلى التنفيذ] [بن كوهن] [بيلي Janitsch] [جامعة هارفارد] [هذا CS50] [CS50.TV] [بيلي] مرحبا، أنا بيلي وهذا هو بن. >> [بن] مرحبا. ونحن في طريقنا إلى أن نتحدث عن تطوير الشبكة اليوم. [webdev] [بيلي Janitsch وبن كوهن] قليلا حول لنا أولا. بن هو نوع من الرجل الخلفية. وقال انه يجعل الأشياء تعمل. ثم أذهب في وجعلها جميلة. أنا متورطة إلى حد كبير مع المزيد من الواجهة الأمامية تصميم تخطيط النوع من الاشياء، وبن، من ناحية أخرى، يعرف ماذا يفعل ذلك فهو يعمل على الاشياء الخلفية. معا حققنا بعض الأشياء. على سبيل المثال، في العام الماضي عملنا على Gimblium الذي هو على الانترنت استوديو تطوير اللعبة. وكان هذا المشروع هدفنا النهائي لفئة، ومنذ ذلك الحين قمنا بها جامعة هارفارد الفئة وهو إطار لتصفح الانترنت والدورات التسوق في جامعة هارفارد. ونحن في طريقنا للبدء مع هذه الفكرة لموقعنا. ونحن في طريقنا لجعل الفيسبوك، ولكن للقطط. قبل أن الواقع جعل هذا الموقع، لا تجعل هذا الموقع لأنها ليست جيدة، ولكن سنقوم استخدامه كإطار وتذهب من خلال عملية كيف نأخذ هذه الفكرة وتحويله إلى موقع على شبكة الانترنت الحقيقية التي يمكن استخدامها. سنبدأ عن طريق كسر موقع أسفل. مثل قمت به في CS50، تحتاج إلى التفكير حول ما هي المكونات الفعلية التي تدخل في هذا الموقع. يحولها أساسا من فكرة الذي هو مجرد نوع من مفهوما مجردا في الحقيقية، الشيء الملموسة التي يمكن أن تقوم بها. نبدأ بطرح بعض الأسئلة. ما هو هذا الموقع؟ لماذا نحن جعل ذلك؟ ما هو الذهاب الى استخدامها ل؟ هذا النوع من الشيء. في حالة الفيسبوك القط، نحن نريد في الأساس موقع على شبكة الانترنت الذي يتيح القطط الشبكة الاجتماعية مع بعضها البعض. والفكرة هي أنها تستطيع كتابة على الجدران بعضها البعض، فإنها يمكن أن تجعل تعليقات، وهذا النوع من الشيء. وذلك حيث نأتي إلى مكونات وظيفية. لدينا الآن هذا النوع من إطار - لدينا ملفات تعريف المستخدمين، لدينا تعليقات، ونحن تتمكن من المشاركة. ربما يوما ما سنقوم مؤثر يحب وهذا النوع من الشيء. ونحن نوع من تريد إعطاء الأولوية لهذه الميزات تسير في. نريد أن نقول مثل، حسنا، من المهم حقا أن الجميع لديه ملف ويمكن للجميع إضافة على الجدران بعضها البعض. الثانوية إلى ذلك، سوف يكون لطيفا تعليقات. ربما في وقت لاحق سنقوم مؤثر يحب. لذا، كنت تريد أن يكون فكرة عن ما هو أساسي لمشروعك وما هو نوع من ميزة أكثر عمومية التي يمكن تطبيقها في وقت لاحق. كنت تريد أن يكون نوعا من قائمة محددة في الاعتبار، ولكن المشروع الذي تبدأ لن يكون المشروع الذي الانتهاء مع. وبعبارة أخرى، فإن الأمور ستتغير في الوقت الذي نعمل على تطوير الموقع، وتريد أن تترك مجالا لذلك. انا اقلبه لبن الذي يحدث لنتحدث قليلا عن الهيكل. [بن] انا ذاهب الى أن نتحدث عن الجانب التقني أكثر من تطوير الشبكة. دعونا نذهب فقط على بعض الأساسيات أولا. عندما كنت تفعل التطبيق على شبكة الإنترنت، التقسيم الرئيسي الذي كنت ستكون لدينا لدينا هو وأنت تسير في الحصول على بعض الاشياء يحدث في جانب العميل - وهذا هو، التعليمات البرمجية التي كنت متصفح يأخذ من موقع وجافا سكريبت، HTML، CSS الاشياء. هذا كل شيء على جانب العميل. وأنت تسير أن يكون التعليمات البرمجية الأخرى التي يتم تشغيلها على جانب الملقم الذي يتتبع كافة البيانات التي ترسل في الناس لكم، تقرر الذين لإعطاء ما، أشياء مثل ذلك. هذه مجرد بعض المصطلحات بحيث أنتم جميعا على دراية ما نتحدث عنه. ما وراء هذا التقسيم أنه من الجيد أن نفكر في التطبيق الويب الخاص بك من حيث اثنين من عناصر متميزة. عندما كنت تفعل وتطوير الشبكة واحدة من الأشياء التي يجب عليك دائما أن تحاول القيام به هو للحد من التعقيد. أكثر تعقيدا التعليمات البرمجية هو اكثر من فرصة هناك لجعل الحشرات، كلما كان من الصعب تغيير في وقت لاحق. لذلك، إذا كنت تستطيع تفريق التطبيق الخاص بك في بعض المجالات الوظيفية المتميزة التي من شأنها - وأنت يمكن أن تقلل من كمية نوع من الاتصالات عبر المنطقة - التي من شأنها أن تساعدك كثيرا في المدى الطويل من حيث الحد من البق. أن تكون محددة، وعادة الناس تقسيم التطبيق على شبكة الإنترنت إلى - هذه هي نوع من العبارات الطنانة الآن، ولكنها لا تزال مفيدة. كنت قد سمعت الناس يتحدثون عن نماذج وطرق العرض والتحكم. النماذج هي البيانات الفعلية التي التطبيق الخاص بك هو الذهاب للتعامل معها. على سبيل المثال، في القط الفيسبوك الخاص بك، سوف تكون النماذج الخاصة بك - كنت قد نموذجا للوظائف مثل، ونموذجا لتعريف المستخدمين، أشياء من هذا القبيل. وجهات نظركم وكيف أن تقديم البيانات للمستخدمين. قد يكون لديك 1 العرض لتبحث في وظيفة واحدة وجميع التعليقات وجهة نظر مختلفة عن الحائط الخاص بك يحتوي على قائمة بجميع الوظائف التي موجه لك، وجهة نظر مختلفة لتغذية الأخبار الخاصة بك - أشياء من هذا القبيل. أخيرا، لديك وحدات تحكم التي هي في الأساس عندما نرسل لك الناس المشاركات وإجراء التحديثات لنظام نهاية ظهرك، يمكنك زيادة حفنة من العدادات، وأيا كان. تلك هي وحدات التحكم الخاصة بك. انا ذاهب الى أن نتحدث في معظمها حول النماذج. وجهات النظر من الناحية الفنية ليس من الصعب، والمسألة هي أكثر مع تصميم لهم وحدات التحكم ستكون محددة على كل ما كنت تصميم. ولكن هناك بعض التقنيات العامة جميلة يمكنك استخدامها لجعل النماذج الخاصة بك أجمل وأسهل للعمل مع أنني أعتقد هي مفيدة جدا. وهذا هو الغالب ستكون حول كيفية التعامل مع البيانات تطبيقات الويب الخاصة بك بطريقة لطيفة. القضايا الرئيسية مع نماذج هي أنهم يعيشون على العميل والخادم وكان لديك لمعرفة أ) كيفية الحصول عليها - كل منها ذات الصلة - من الملقم إلى العميل، وب) كيفية الاحتفاظ بها في المزامنة. المستخدمين وتريد الذهاب الى جعل بعض التحديثات. انهم ذاهبون الى تريد أن تجعل وظائف جديدة. انهم ذاهبون تريد أن تحب الأشياء والأشياء إذا كان لديك يحب. تلك هي التحديات التقنية الرئيسية في التعامل مع النماذج. الشيء الأول الذي كنت تريد الذهاب الى تسأل نفسك أي نوع من البيانات يذهب في هذا النموذج ونوع من الاستفسارات نحن ذاهبون تريد أن تفعل - وهذا هو، كيف نحن ذاهبون للنظر في النماذج؟ لديك القط الفيسبوك سبيل المثال، مشاركتك سوف يكون مؤلف المرتبطة به، بعض النصوص جدار آخر، والمستفيد من آخر جدار. ومن ثم قد ترغب في أن الاستعلام في مجموعة من الطرق المختلفة. هل تريد أن ننظر إليها من قبل الذين كتبوا التي آخر، من قبل الذين تلقوا الذي نشر، وربما حسب تاريخ نشرت. ولكن إذا كنت تنوي القيام به من قبل التاريخ، ثم لديك لإضافة حقل آخر لمشاركتك متى تم نشر فعلا. هذه العوامل 2 - ما هي البيانات التي تريد استخدامها وكيف تريد مشاهدته - يجب أن نفكر بها أولا لأنها تعتمد على بعضها البعض، وانها سوف تكون أكثر صعوبة لإضافتها في وقت لاحق. هناك بعض الاعتبارات الأخرى. عندما كنت تفكر في كيفية التعامل مع النماذج على ملقم ما تريده هو أن ننظر - تريد أساسا لجعل الخادم بسيطة بقدر الإمكان. تفعل الاشياء على جانب العميل عموما أسرع بكثير إذا كنت تستطيع ان تفعل ذلك محض على العميل دون أن تفعل أي نوع من طلب الشبكة. والفكرة هي أن تفعل أكبر عدد ممكن من الاستعلامات ما تستطيع على العميل. المشكلة الوحيدة مع هذا هو أنه إذا كنت تطلب جميع البيانات الخاصة بك في بداية ثم وهذا سوف يستغرق وقتا طويلا لتحميل. لذلك، والفكرة هي لضرب وسيلة سعيدة بين وجود بيانات كافية على العميل يمكنك أن تفعل أكثر من عملك هناك ولكن ليس فقط جلب كل شيء في آن واحد بحيث تحصل أوقات تحميل بطيء حقا في البداية. على سبيل المثال، للبيانات القط ربما كنت ترغب في جلب حفنة من المشاركات الحائط الأخيرة. كنت لا تريد لجلب كل منهم لأن ذلك قد تعود لبضع سنوات. ولكنك لا ترغب في جلب لهم في وقت واحد لأن ذلك من شأنه أن يعرض الكثير من النفقات العامة الشبكة. فإنه غالبا ما يكون من الصعب جدا - مرة واحدة لديك قاعدة بيانات تشغيل - فإنه غالبا ما يكون من الصعب جدا لتغيير ما هي البيانات التي لديك في ذلك - وهذا هو، إضافة عمود قاعدة بيانات جديدة أو شيء من هذا - لذلك استراتيجية واحدة جيدة هو في الواقع فقط للحفاظ على الكثير من البيانات الخاصة بك في فقاعة النص - فقاعة جسون - جسون كونه جافا سكريبت تدوين كائن - السبب في أن من المفيد لأن ثم يمكنك إضافة خصائص جديدة لجميع هذه النقط جسون دون تغيير قاعدة البيانات الخاصة بك. الجانب السلبي الوحيد لهذا هو أنه إذا كان لديك مجموعة من الحقول التي قمت بإضافتها في وقت لاحق - مثل مخبأة في أن فقاعة جسون - ثم أنه من الصعب للاستعلام منهم داخل قاعدة البيانات. على سبيل المثال، إذا كنت في وقت لاحق - إذا كان لديك نموذج آخر الخاص الذي ناقشنا في وقت سابق فقط مع المؤلف، المتلقي والنص - هل يمكن أن يكون أيضا فقاعة جسون ثم إذا أردت لاحقا لإضافة حقل تاريخ فإنك لن تضطر إلى تغيير قاعدة البيانات الخاصة بك. هل يمكن أن مجرد إضافة التواريخ وتعرف على كافة حقول النص. ثم هل سيكون قادرا على النظر في تلك على جانب العميل، ولكنك لن تكون قادرة على الاستعلام منهم على جانب الملقم لأنها مخبأة داخل ذلك النص. والمسألة الأخرى التي تريد التفكير كيف هو العميل الخاص بك والخادم الخاص بك تسير على التواصل. كنت عادة تريد أن تبقي هذه بسيطة بقدر الإمكان. هل يمكن أن يكون تماما مثل لي بين الحصول على هذا الطلب البيانات، لإنشاء واحد في وجوه جديدة لشيء، وطلب التحديث وعمره وجوه. وهذه سوف تكون كلها عناوين مختلفة على خادم لكم - أن المتصفح سوف - يمكنك استخدام طلبات AJAX لجميع هذه وإما تلقي البيانات أو آخر. مرة أخرى، لدينا القط الفيسبوك سبيل المثال، هل يمكن أن يكون هذا العنوان للحصول على آخر الفردية، وسوف يكون لديك URL لإنشاء آخر جدار جديد وربما URL لتحميل الصورة الشخصية، أشياء من هذا القبيل. ولكن مرة أخرى، هذا إلى ما قبل جلب معظم البيانات الخاصة بك بحيث لم يكن لديك للحفاظ على تقديم طلبات الشبكة. لهذا السبب، قد لا تريد أن يكون هذا الطلب الحصول على الفرد لشغل وظيفة واحدة، وبدلا من ذلك وكنت ترغب فقط طلب الحصول على 1 للجدار بأكمله. ثم إذا كنت تحاول تحقيق توازن لأنه - هذا يحدث أيضا أن تعتمد على التطبيق الخاص بك. لأنه إذا كنت تتوقع أن الناس لديهم 10 أو 20 وظيفة الجدار فقط التي سيكون على ما يرام. ولكن إذا كنت تتوقع أنها سوف تضطر الآلاف ثم أن الطلب سيستغرق وقتا طويلا، وهكذا قد ترغب في إضافة معلمة الحصول على الجميع وظائف منذ. لكافة هذه ربما كنت تريد الذهاب الى لمزامنة البيانات الخاصة بك في جسون - جافا سكريبت تدوين كائن. الى حد كبير يتعامل مع كل لغة جسون بشكل جيد للغاية. مسج لديه هذا getJSON وظيفة لطيفة التي سوف تفعل كل العمل الشاق بالنسبة لك. وعلى PHP هناك أيضا وظائف الاتصالات جسون لطيفة جدا. لذلك، وهذا هو على الارجح أفضل تنسيق لإرسال النماذج الخاصة بك ذهابا وإيابا. كمثال على ما تحدثنا بشأنه حتى الآن، وهنا على سبيل المثال لتدفق القط الفيسبوك التطبيق الخاص بك. فإنه يبدأ مع المتصفح طلب URL قاعدة موقعنا. خادم ربما سترسل أكثر من ساكنة HTML وجافا سكريبت و CSS بعض. انها عادة ما تكون الأفضل عدم القيام بأي التقديم على الخادم. وربما كنت لا تريد - ما الخادم لا تفعل هناك نزول قائمة حائط وتوليد HTML لبعض كل واحد ويرسل أن أكثر. انها عادة ما تكون أفضل للقيام بذلك على جانب العميل لأن خلاف ذلك في كل مرة كنت ترغب في إعادة رسم شيء ما، لديك لتقديم طلب الخادم. والتي تمنحك بسرعة كبيرة الكثير من النفقات العامة. انها عادة ما تكون أفضل فقط لشحن أنزل ثابت HTML ثم جافا سكريبت و CSS التي من شأنها أن تفعل التقديم على جانب العميل. بمجرد أن الأشياء تأتي في، ثم هل يمكن أن يكون - في جافا سكريبت - يمكنك القيام طلبات البيانات الجدار وأشياء من هذا القبيل، وبعد أن الخادم هو في الأساس مجرد القيام استعلامات قاعدة البيانات وفحص الأذونات. الشيء الوحيد المهم هو أنه لا يمكن إرسال أكثر من بعض المستخدمين حائط الأخرى ان كنت لا يسمح لنرى. يمكن أن يكون أساسا طبقة رقيقة جدا الوصول إلى قاعدة البيانات الخاصة بك، وبعد ذلك كل من تظهر البيانات - جميع وجهات النظر والاشياء - تلك يمكن أن يحدث في المستعرض الخاص بك، ومن ثم عندما تريد جعل وظيفة أو شيء يمكنك فقط إرسال طلب آخر. هناك أيضا بعض الاشياء يتوهم يمكنك القيام به على رأس هذا. من حيث المعلومات التقنية أكثر تحديدا، يمكن وضع في سهل جافا سكريبت تكون مؤلمة قليلا، لذلك هناك بعض المكتبات والأدوات التي سوف تساعدك كثيرا في ذلك. أعتقد أنك ربما سمعت عن كل مسج مما يجعل القيام تقديم HTML والتلاعب أسهل كثيرا - لديك الكثير من وظائف نزوة ليتلاشى داخل وخارج، والقيام الرسوم المتحركة رشيق. هناك أيضا هذه المكتبة تسمى Underscore.js. انها لديها الكثير من وظائف أداة مفيدة، والأشياء التي كنت تتوقع أن يكون جافا سكريبت أنه حقا دويسنت - أشياء مثل خلط صفيف، إزالة التكرارات من قائمة، أو تسطيح قائمة من القوائم. هذا هو مجرد نموذج التعليمات البرمجية الصغيرة. تسطير وقد طن من هذه الوظائف لطيفة التي ترغب عملتم في كل وقت. وبعد ذلك هناك أكثر من 1 مكتبة أود أن تنفق قليلا من الوقت على دعا Backbone.js لأن العمود الفقري يساعد حقا على التعامل مع نماذج على جانب العميل والكثير من البلبلة التي يمكن أن تسببها. العمود الفقري يمنحك هذا المفهوم من النماذج ومجموعات في جافا سكريبت التي هي أساسا تماما مثل كائنات جافا سكريبت في صفائف جافا سكريبت ولكن لديهم الأحداث عند تغيير خصائصها. مثلما هو الحال في جافا سكريبت، هل يمكن أن يكون حدث عندما يحصل على النقر على زر أو شيء وهذه النماذج العمود الفقري العمود الفقري ومجموعات بث أشياء مثل أنهم عندما تتغير. وهذا يعني أنه يمكنك مجرد كتابة شيء مثل هذا مقتطف من التعليمات البرمجية هنا - هذا يقول: كلما قمت بإضافة أي شيء إلى الوظائف مجموعة لك إعادة رسم الجدار كله. وهذا من شأنه أن يقول كلما تغير عدد وظيفة من أمثال، أن يخطر المستخدم بأن شخص يحب موقعهم. أو كلما أي ممتلكات آخر التغييرات التي تعيد رسم آخر. وأشياء من هذا القبيل سيوفر لك طن من التعقيد لأن خلاف ذلك إذا لم يكن لديك بعض إطار مثل هذا ثم في كل مرة في التعليمات البرمجية التي قمت بتغيير أي شيء عن وظيفة، وكنت قد لتذكر نفسك لدعوة كل من تقدم وظائف وأشياء من هذا القبيل، وإذا كنت أريد أن أضيف شيئا جديدا ما حدث في كل مرة قمت بتعديل وظيفة وكنت يجب أن تمر عبر كل مكان في حياتك التعليمات البرمجية التي قمت بتعديلها وإضافة وظيفة هذا الشيء الجديد. وهناك مثل هذا الإطار إزالة الكثير من ذلك التواصل بين طبقة الذي يجعل التعليمات البرمجية المعقدة والصعبة للمحافظة عليه. هناك قليلا عن وجهات أيضا. أنا ذاهب إلى ترك معظم هذا إلى بيلي لانهم من الناحية الفنية ليس من الصعب جدا. استخدام مسج لوجهات نظركم. انها عمليا وكأنه ضرورة في هذه المرحلة. انها فقط يجعل كل شيء أسهل بكثير. هناك الكثير من المكتبات. إذا كان لديك معقدة عناصر واجهة المستخدم، إذا كنت ترغب في شيء الإكمال التلقائي أو ما شابه واحدة من تلك نزوة محددات متعددة - إذا كنت تريد أي شيء من هذا القبيل، ربما يجب عليك فقط بحث حول ويمكنك العثور على مكتبة جيدة من شأنها أن تفعل ما تريد. سوف بيلي شرح المزيد عن أجزاء من الصعب في الواقع من وجهات النظر. أيضا، كملاحظة جانبية، العمود الفقري لديها بعض الوظائف لجعل التواصل جهات النظر لطيف مع نماذج - النظر في وثائق كل من هذه المكتبات، في الواقع. مجرد إلقاء نظرة على مستندات. انهم مكتوبة بشكل جيد جدا وسهلة لمتابعة. بشكل عام، يمكنك الى حد كبير جوجل فقط إذا كان لديك مشاكل. هناك الكثير من الناس استخدامها. وأعتقد أن هذا هو كملاحظة نهائية. وهناك أيضا بعض الأشياء أكثر تقدما التي يمكنك القيام به إذا كنت تبحث لجعل التطبيق الويب الخاص بك اضافية رهيبة. يمكنك القيام به - مواصفات HTML5 الجديدة لديها الكثير من الأشياء يتوهم يمكنك القيام به. التخزين المحلي - الذي هو أنت يمكن تخزين البيانات في المتصفح - بدلا من الاضطرار إلى العودة والإطلاع على الخادم لكل شيء، يمكنك الاحتفاظ ببعض منه على العميل وأنه حتى يتيح للناس - في بعض الحالات، يمكن أن تسمح حتى كنت تستخدم حاليا صفحة ويب. هناك هذا الشيء يسمى websockets التي هي نوع مختلف من شبكة الاتصالات حيث بدلا من مجرد جعل لكم طلب واحد، وتحصل على استجابة والانتهاء من ذلك، واصلتم فتح اتصال إلى ملقم وهكذا يمكنك أن تفعل أشياء مثل تحديثات في الوقت الحقيقي. لذلك، إذا كنت تحاول أن تجعل التطبيق دردشة، هل يمكن استخدام websockets للتواصل ذهابا وإيابا حتى يتسنى لك لن يكون للحفاظ على الطالبة، "أوه، الخادم، أن أحدا لم يرسل لي محادثة؟" كل 10 ثانية أو شيء من هذا. وهناك أيضا ميزة HTML5 مثيرة للاهتمام حيث يمكنك جعلها تبدو وكأنها عنوان URL للصفحة يتغير من دون الاضطرار إلى إعادة تحميله في الواقع. يمكنك استخدام أزرار الخلف وإلى الأمام دون أن تفعل حفنة من طلبات شبكة الاتصال. أشياء من هذا القبيل هو في الحقيقة مفيد من حيث جعله سريع ولكن أيضا تعمل مثل التطبيق على شبكة الإنترنت ينبغي. وهناك أيضا هذا الشيء يسمى CoffeeScript. CoffeeScript هي لغة مختلفة، في الواقع، أن يجمع وصولا الى جافا سكريبت. سوف أكتب لكم كل ما تبذلونه من التعليمات البرمجية في CoffeeScript، ثم تشغيل هذا المجمع، ويبصق ملف جافا سكريبت التي يمكن أن تدرج في صفحات الويب الخاصة بك. السبب الذي CoffeeScript هو لطيف لأنه يتخلص من الكثير من حالات غريبة أن جافا سكريبت لديه حيث تساوي متساوين، ويساوي يساوي تفعل أشياء مختلفة، أو ما شابه - كان لديه جملة أجمل للتعامل مع المصفوفات والوظائف. هذا هو مقتطف قليلا من CoffeeScript التي تنتج قائمة من جميع الساحات من 10 ^ 2-1 ^ 2 في ترتيب عكسي. كما ترون، CoffeeScript غالبا ما يتيح لك التعبير عن 1 في خط ما سيستغرق 5 خطوط جافا سكريبت. يمكن أن يجعل الأمور أسهل كثيرا. انها قليلا من جملة جديدة للتعلم في البداية، ولكنه بالتأكيد سوف تجعلك أكثر إنتاجية على المدى الطويل. يمكنك أيضا استخدام لغات أخرى على الخادم من PHP - لغات مثل روبي، بايثون، أو حتى أن هناك مشروع يسمى node.js التي من شأنها أن تتيح لك استخدام جافا سكريبت على الخادم. شخصيا، أنا حقا، حقا يكرهون PHP. أنا لا أستمتع بالعمل معها. إذا كنت، أيضا، أعتقد أنه هو cluge فظيعة من لغة، ثم يمكنك استخدام واحدة من هذه بدلا من ذلك. بشكل عام، إذا كنت تريد أن تفعل شيئا، وكنت لا أعرف حقا كيف كنت تفعل ذلك، مجرد البحث على الإنترنت. هناك أطنان وأطنان من الموارد وخاصة على - ستاكوفيرفلوو هو واحد كبير. انها هذا الموقع حيث تسأل كل الأسئلة الأخرى المبرمجين. كنت قد واجهت إذا كنت تواجه مشكلة في مجموعات مشكلة CS50. وهناك طن من المكتبات للقيام حد كبير أي شيء كنت تريد. إذا كنت تريد أن تفعل شيئا وأنت لا تعرف كيف تفعل ذلك، لا تفترض أنه من المستحيل. فقط انظر حولك وكنت قد تجد بعض موارد جيدة. كجنرال يختتم، والوجبات الرئيسية هي ابقاء الامور بسيطة. أكثر تعقيدا التعليمات البرمجية في بداية وكلما كنت تحاول ان تفعل الاشياء الهوى، وسوف يستغرق وقتا أطول للحصول على شيء في الواقع وظيفية وسيكون من الصعب تغيير في وقت لاحق. لذلك، تفعل أشياء غبية الطريقة، السهلة أولا. للذهاب إلى جانب ذلك، لا يكون خائفا من رمي القانون القديم أو تنظيف الامر كثيرا. بشكل عام، وبمجرد الانتهاء من العمل في الواقع شيئا، انه من الاسهل بكثير للتفكير مما كانت عليه عندما كنت لا تزال في المراحل الأولى كيف يمكنني وضع كل هذا معا. فمن الأفضل لجعل التصميم أغبى الممكن أن يعمل ومن ثم تحسينه تكرارا من محاولة الحصول على كل شيء الحق في المرة الأولى. من حيث التقسيم خدمة العملاء، ومحاولة الحفاظ على الخادم الخاص بك بسيطة جدا - مجرد قاعدة البيانات والتوثيق وبعض لا تفعل أي عمل شاق هناك. تفعل كل الاشياء تعقيدا على الجانب العميل في المستعرض في جافا سكريبت بقدر ما تستطيع. ننظر حولنا لالمكتبات التي تجعل حياتك أفضل. دائما الأفضل استخدام التعليمات البرمجية التي كتب شخص آخر إذا كنت - وليس لكتابة ذلك بنفسك. هناك الكثير من الاشياء على شبكة الإنترنت. جوجل هو أفضل صديق. جوجل هو أفضل صديق للمبرمج. نعم، بالتأكيد لا تخافوا لننظر حولنا لالاشياء. حسنا. وأكثر من لبيلي. [بيلي] في الواقع، قبل أن أبدأ مع بعض الاشياء التصميم، لا أحد لديك أي أسئلة عن بن عن أي شيء تحدث عنه؟ حسنا، جيد. مرة أخرى، واسمحوا لنا أن نعرف إذا كان أي شيء غير واضح أو إذا كنت تريد منا أن يذهب أكثر من شيء أكثر قليلا. انا ذاهب الى التراجع قليلا والتحدث حول أجزاء أكثر أهمية من التصميم. بن المذكورة نموذج يسمى - آسف، ونموذج نظام الرؤية تحكم وهو نوع من الجانب التقني، لذلك أنا ذاهب لننظر إلى جهات النظر على وجه التحديد، وأنا ذاهب لبدء مع كيف كنت تصميم طريقة عرض التي تبدو لطيفة. وهنا نوع من قالب الأساسية حقا لدينا القط الفيسبوك. أعتقد أن هناك بعض الأساسيات في تصميم واجهة المستخدم الحديثة التي تستحق التقاط. يمكن لاحظت أن هناك الكثير من المساحة البيضاء في جميع أنحاء الصفحة، مجالا رحبا للأشياء. لا أشعر بأن لديك لسحق الأشياء في الصفحة. كنت تريد أن تترك الكثير من الغرفة مفتوحة، وإذا ذهبت إلى أي موقع تقريبا الحديثة سترى هناك البيضاء في كل مكان. هناك الأبيض في الأماكن التي لا تتوقعها. لديك هذه لوحة الألوان، وانه من الحكمة في بداية لاختيار لوحة الألوان التي أنت ذاهب للعمل مع والتطور. أنت أيضا - أنها تساعد على اختيار محرف، وبهذه الطريقة كنت نوع من العمل مع هذه الأسس ملموسة من التصميم. لديك نوع، لديك الألوان الخاصة بك، ثم يمكنك نوع من تناسب كل شيء آخر في الحاجة إليها كما. لذلك، كما قلت، مع نظام الألوان الذي تريد استخدام ألوان أكثر جرأة من مخطط لونك ماما. رؤوس لطيفة. الأزرار هي لطيفة لديك كبيرة حقا، والألوان البراقة. ولكن بصفة عامة، إذا كان لديك موقع على شبكة الانترنت يحتوي على الألوان في كل مكان، جميع يحدق في وجهك، يبدو مجرد تشوش، وهذا ليس جيدا. كنت ترغب في استخدام الألوان الفاتحة عموما. محاولة، ومرة ​​أخرى، واختيار نظام الألوان متماسكة جدا. هل يمكن أن يكون هذه البقع قليلا من الكثير من اللون - التي يمكن أن تبدو لطيفة جدا، ولكن كنت تريد استخدامها لماما جميلة. كما قلت، كنت تريد أن تكون ضئيلة. أقل هو دائما تقريبا أكثر من ذلك. إذا كان يمكنك عرض شيء أو لا شيء عرض، وكنت غير متأكد من نوع ما إذا كان ينبغي أن يكون هناك افتراضيا - ربما كنت أفضل حالا ترك ذلك. يمكنك دائما إضافتها في وقت لاحق. نعم، ابقاء الامور بسيطة. ولكن الأهم من ذلك، كنت ترغب في النظر في تصاميم متعددة. لا أعتقد أن عند إجراء الموقع، لديك في رأسك أنك ذاهب ل جعل الموقع بطريقة معينة، وانها سوف تبدو تماما مثل هذا. انها ستكون لدينا رأس الأزرق في أعلى وشريط الجانب الأزرق ثم الأصفر الشيء رأس الفرعية. كنت تريد أن تجعل القوالب متعددة. يمكنك إما - إذا كنت جيدة مع فوتو شوب، يمكنك فتح هذا النوع من صعودا و تصميم موقع على شبكة الانترنت كما تريد أن تبدو. إذا لم يكن كذلك، يمكنك فقط استخدام القلم والورق، ولكن الصفر حتى تصاميم متعددة. كنت تريد أن يكون أساسا لإعداد حيث لديك الكثير من تصاميم مختلفة، وإذا كان واحد ينتهي العمل، ثم هذا أمر عظيم. إذا كان واحد ينتهي بالفشل، ثم لديك دائما واحدة آخر يلجأ إليه. بشكل عام، لا تشعر وكأنك يجب أن تكون مقيدة إلى أي التصميم الذي تقرر في البداية على. التصاميم هي متغير جدا، وجزء من أهمية النموذج نظام الرؤية تحكم هو أنه يمكنك مبادلة الدخول والخروج وجهات النظر المختلفة التي تريد. يمكنك التأثير في البيانات طريقة واحدة، ومن ثم تقرر، أوه، في الواقع، أن لا يعمل بشكل جيد. اعتقد انها نوع من التعقيد أو هناك جزء هنا أن لا يعمل حقا، لذلك أنا مجرد الذهاب الى التخلي تماما هذا الرأي والمبادلة في واحدة جديدة تماما. يمكننا الاستمرار في استخدام النماذج القديمة والتحكم القديمة. يمكننا أن نفعل كل شيء على الخادم والعميل كما كنا من قبل. ولكن موجة من البيانات الفعلية كما هو معروض ستكون مختلفة قليلا. بقدر تنفيذ في الواقع التصميم الذي تريده، وبمجرد الانتهاء من رسم بعض التصاميم على الورق أو على فوتو شوب أو أيا كان، هناك عدد من الأدوات التي تتاح لك. أول كنت على دراية جدا مع الذي هو HTML الخاص بك، PHP، أو أيا كان اللغة التي تستخدمها لمجرد رمز لصفحات ثابتة على موقع الويب الخاص بك. كنت قد عملت كثيرا مع HTML أي نوع من يمنحك هذه العلامات يمكنك وضع الأمور في، وأساسا انها وسيلة لتنظيم المحتوى الخاص بك. على سبيل المثال، لديك رأس هناك، حتى وأنت تسير أن يكون علامة الرأس، وانها ستكون لدينا بعض النصوص داخل منه والتي من المحتمل ان تكون في علامة أخرى. ثم لديك الشريط الجانبي ربما مع بعض الروابط المختلفة، وتلك ذاهبون لنكون جميعا في العلامات منفصلة. لذلك، في الأساس HTML في قلبها هو وسيلة لتقسيم الصفحة كيف تريد في نهاية المطاف إلى تنسيق عليه. ذلك مرة أخرى، كنت قد رأيت ذلك من قبل. كنت مرتاحا جدا مع العمل معها الآن بالنظر إلى أن كنت قد فعلت pset مشاركة نأمل، بحيث يجب أن تكون هناك مشكلة. ثم لديك CSS الذي يعالج أساسا كل من التصميم جوانب ثابتة. فإنه التعامل مع جميع الألوان، كل من المواقع من العناصر المختلفة، أين يذهبون مع الاحترام لبعضهم البعض، كيف تكون كبيرة، وأنواع مختلفة من positionings التي عملتم - وبعبارة أخرى، هل يمكن أن يكون الأشياء ثابتة بحيث عند التمرير إلى أسفل بقائهم، أو هل يمكن أن يكون الأشياء بالنسبة إلى العناصر الأخرى. كل هذا النوع من الاشياء هو في CSS. وعلاوة على ذلك، يمكنك القيام به زخارف مختلفة، ويمكن أن يكون لديك ألوان النص و تأثيرات النص، وجميع هذا النوع من الاشياء. وقدم بن ندوة جيدة حقا على هذا في نهاية الأسبوع الماضي، ولذا فإنني بالتأكيد التحقق من ذلك إذا كنت تخطط أن تفعل بعض الأشياء يتوهم مع CSS. CSS3 هو في الواقع أحدث نسخة من CSS، وأنها يمكن أن تفعل كل أنواع الأشياء لطيف حقا. يمكن أن تفعل التدرجات؛ هل يمكن أن يكون لطيفا، تدوير زوايا، ويمكنك أن تفعل كل أنواع الأشياء لجعل موقع الويب الخاص بك تبدو أكثر عصرية والهوى. الأداة التالية هي جافا سكريبت مسج والتي تحدث بن قليلا عن، ولكن سأحضر أبعد قليلا في. جافا سكريبت، وكنت قد عملت معه قليلا، أو على الأقل ينظر في المحاضرة، هو نوع من طريقة لفعل الاشياء بشكل حيوي في HTML. HTML، كما تعلمون، هو ثابت، وذلك بمجرد أن يكون لديك HTML لا يمكنك تعديله. ولكن جافا سكريبت، في بعض النواحي، هو وسيلة لتكون قادرة على تعديل HTML. حتى تتمكن من القيام بذلك، وهذا أمر عظيم، ولكن جافا سكريبت هو حقا للعمل مع الألم. انها طويلة جدا ومنفرجة والقيام حتى بأبسط الأشياء يتطلب الكثير من خطوط جافا سكريبت. لذلك، مسج هو في الأساس لمكتبة جافا سكريبت أن يبسط كل ذلك. تقول، حسنا، إذا كنت تريد أن يكون لها مربع مربع تأتي من اليسار وتتلاشى في الصفحة بحيث انها في الوسط، في جافا سكريبت التي من شأنها أن تأخذ - أنا لا أعرف، ومئات من الخطوط القيام به، وأنه سيكون من الألم، وأنت تخرج من ذلك كره كل شيء عن برمجة الويب. مسج لديك أساسا عنصر الدوت تتلاشى في، أو شيء من هذا القبيل. وظائف جدا، جدا، جدا بسيطة سيتيح لك ان تفعل كل أنواع الرسوم المتحركة بارد وهذا النوع من الشيء. الشيء الآخر أن هذه 2 هي فعلا جيدة للهو مجرد فعل الأشياء الديناميكية مع الموقع. لذلك، بدلا من مجرد وجود صفحة HTML الخاصة بك - والذي يعرض بعض البيانات ولكن لا فعلا فعل أي شيء - سوف جافا سكريبت مسج والسماح لديك الأزرار التي يمكنك النقر على، ويمكنك سحب العناصر وإعادة ترتيب لهم وفرزها، ولها عناصر جديدة إضافة أو إزالة. يمكنك إضافة، حذف، وهذا النوع من الشيء. لذلك، لا مسج طن من الأشياء باردة. وفيبول يعطي في الواقع حلقة دراسية حول ذلك اليوم، في اعتقادي، في 5 صباحا، حتى إذا كنت يمكن أن يلتصق حول لفترة طويلة، وهذا من شأنه - 5 أو 4؟ أربعة. آسف. انها في الواقع بعد هذا الحق، لذلك أنصح شائكة حولها لذلك إذا كنت تستطيع. مسج فائقة، سوبر مفيدة، وعليك أن تكون قادرة على أن تفعل الكثير من الأشياء لطيف معها الى حد كبير أي مشروع تطوير الشبكة. الآن انا ذاهب للوصول الى نوع من التمييز. لقد تم الحديث في الأساس عن واجهة المستخدم. واجهة المستخدم هو مجرد تصميم للموقع. ولكن هناك نوعا من مفهوم آخر وهو تجربة المستخدم. وهما مختلفة جدا. واجهة هو بالتأكيد جزء من هذه التجربة. وبعبارة أخرى، عندما تذهب إلى موقع، نظرتم الى الواجهة. هذا جزء من الطريقة التي واجهت الموقع. ولكن تجربة المستخدم هو أكثر من ذلك. تجربة المستخدم هو حول ما الانطباع الذي يحصل المستخدم من موقعك. لذلك، من الواضح، واجهة هو جزء من ذلك. وانها بالتأكيد جزء ضروري، لكنه ليس كافيا. وبعبارة أخرى، إذا كان لديك واجهة جميلة، وانها جميلة وملونة وكل ذلك، هذا أمر عظيم، ولكن إذا يذهب المستخدم إلى موقع الويب الخاص بك، يرى تخطيط جميلة وانها الخلط من قبل كل شيء، ليس لديه فكرة عن كيفية القيام بأي شيء، فمن الواضح قمت بها حقا الفقراء الموقع. وهذا النوع من أين يأتي تجربة المستخدم فيها انا ذاهب الى الحديث قليلا عن تصميم UX - UX قصيرة لتجربة المستخدم - ونوع من كيف يمكنك التأكد من أن لديك تجربة جيدة للمستخدم. النقطة الأولى هي أنك قد تصميم موقع على شبكة الانترنت حيث يمكن للمستخدم القيام بأي شيء ربما يريد هذا المستخدم. ولكن إذا كان المستخدم لا يمكن معرفة كيفية القيام تلك الأشياء - وبعبارة أخرى، إذا لم يكن لدى المستخدم فكرة جيدة عندما يذهبون إلى موقع الويب الخاص بك من، "أوه، إذا كنت ترغب في تحديث معلوماتي الشخصية، ثم النقر على هذا الزر، أو إذا كنت تريد نشر على جدار شخص ما، ثم أذهب إلى الجدار وانقر على مربع قليلا ". إذا لا يعرف المستخدم ذلك، ثم لديك بفعالية يست في الواقع تنفذ هذه الوظيفة بشكل صحيح. جزء من تنفيذ وظيفة هي أن المستخدمين هي فعلا قادرة على استخدامها. وأنه قد يكون محبطا - قد جعل موقع، وأنها يمكن أن تفعل كل أنواع الأشياء الرائعة، ولكن بعد ذلك سيكون لديك الناس اختباره ويقول: "لا يمكن أن تفعل هذا. لماذا لا يمكن أن تفعل هذا؟ "وكنت أقول لهم مرة أخرى، "حسنا، فإنه يمكن. عليك أن تذهب إلى القائمة المنسدلة 7 على هذا غامضة الصفحة التي يتم العثور عليها إلا من خلال وصلة في أسفل الزاوية اليمنى "أو شيء من هذا. من الواضح، أنك لا تريد ذلك. تريد أن يكون واضحا للمستخدمين ما كنت من المفترض القيام به، وينبغي أن تكون بسيطة وبديهية بالنسبة لهم. وشيء آخر أن كنت ترغب في محاولة القيام به هو، إذا كان شخص ما يحدث للذهاب إلى موقع الويب الخاص بك و 9 من أصل 10 مرات تفعل العمل A، و 1 من أصل 10 مرات تفعل العمل B، ربما كنت ترغب في التركيز على تجربتهم العمل A. وبعبارة أخرى، وتريد أن تجعل من كيف جدا، واضح جدا أن تفعل A. وينبغي أن تكون الجبهة والوسط - انتقل إلى موقع، نرى ذلك؛ أوه، انها هناك حق. في حين B الواضح أنك تريد أن تكون واضحة، ولكن يمكنك ترك الأمر أكثر قليلا في الخلفية. ديفيد يعطي خير مثال على ذلك في المحاضرة، وهو نظام بوسطن تي. عندما تذهب إلى بوسطن T، وترغب في شراء تذكرة، لديك للوصول الى 5 القوائم قبل أن تتمكن من شراء تذكرة الواقع بقيمة 2 دولار، و2،50 $، والذي هو كم يستغرق لركوب المترو في اتجاه واحد. هذه مشكلة، لأن معظم الناس الذين يركبون المترو ربما تريد فقط أن تذهب إلى مكان واحد، وشراء التذاكر، والحصول على الفور. فإنه لا يعقل أن لديهم للذهاب من خلال الكثير من القوائم المختلفة للوصول إلى هناك. ومن شأن تجربة أفضل للمستخدم أن يكون زر سريع على الصفحة الأولى تقول فقط، 'شراء تذكرة في اتجاه واحد "، والذي من شأنه أن يضع في كل من مستوى القيم الافتراضية، وبعد ذلك إذا كان هناك شخص يريد أن يشتري تذكرة مختلفة من ذلك، أنها لا تزال، بطبيعة الحال، لديك الخيار ل، ولكن كنت قد الأمثل ل حالة الاستخدام المشترك وهو أمر مهم حقا. يمكنك مشاهدة أمثلة على هذا في الفيسبوك، أليس كذلك؟ إذا ذهبت إلى الفيسبوك وترغب في مرحلة ما بعد الوضع، انها الحق في الجزء العلوي وهو ما كنت غالبا ما تريد القيام به. بمجرد دخول الصفحة، يمكنك أن تفعل الأشياء الأكثر شيوعا التي ما تريد القيام به. إذا كنت تريد أن تفعل أشياء قليلا أكثر تعقيدا مثل، أقول إنني أريد أن أذهب إلى الجدار صديقي وإضافة صورة على ذلك - التي سوف تريد أن تفعل في كثير من الأحيان، ولكن ليس بقدر ما نشر تحديثات الحالة - حتى في هذه الحالة، وأنا اكتب اسمه في مربع في الجزء العلوي، انقر على ملفهم الشخصي، ومن ثم، لا يزال، انها الحق في الجزء العلوي هناك مرة واحدة لقد حصلت على صورتهم. مرة أخرى، لقد الأمثل في الأولوية للحالات الأكثر شيوعا استخدام. شيء آخر مهم هو أن في كثير من الأحيان فإن الناس نوع من محاولة للالتفاف على هذا بالقول، حسنا، حتى لقد جعلت من الموقع والناس يجدون مربكة، وهذه مشكلة، أليس كذلك؟ من الواضح، وأنا لا أريد الناس أن يكون الخلط من جانب المحتوى من موقعي. ولكن وسيلة لحل هذا هو ليس لديهم شيء يطفو على السطح قائلا: مهلا، انا ذاهب الى يعلمك كيفية استخدام هذا الموقع. الخطوة 1 - انقر على هذا الزر. الخطوة 2 - اذهب هنا. بالتأكيد، هذا هو وسيلة من حوله - انها الطريقة التي يمكن أن نقول للناس ما يجب القيام به، لكنه الحقيقة ليست الطريقة المثلى. إذا ذهبت إلى موقع على شبكة الانترنت، وفجأة وأنا قصفت مع هذا البرنامج التعليمي وهذا ما تقول لي ماذا تفعل وأين تذهب وكل ذلك، وهذا ليس متعة بالنسبة لي. انها ليست تجربة جيدة بالنسبة لي. انها نوع من الألم. أريد أن أبدأ مجرد القيام الاشياء. الناس تسير لإغلاق مربع الحوار، و أو الخروج من البرنامج التعليمي، لا يعرف ماذا يفعل، ثم يشكو ل لم تكن قد قال لهم ما يجب القيام به. الطريق إلى حل هذا ليس بإعطاء أي نوع من البرنامج التعليمي أو الاتجاهات - أي شيء من هذا القبيل. بقدر ما يمكن تجنب ذلك، كنت حقا تريد أن تظهر للمستخدم ماذا تفعل فقط من خلال طبيعة كيف وضعت الموقع خارج. وبعبارة أخرى، إذا ذهبت إلى الفيسبوك دون تسجيل الدخول، أول ما أرى على الصفحة الرئيسية - انها مربع تسجيل الدخول قليلا. لذلك، دوه. لا بد لي من تسجيل فيها انها هناك حق. في حين، إذا ذهبت إلى الفيسبوك واضطررت الى فوق ارتباط قليلا في الجزء السفلي وقال ان 'تسجيل الدخول' وكان بقية الصفحة فقط نوعا من الصورة أو شيء من هذا، أنا لا أعرف حقا ما يجب القيام به، أليس كذلك؟ وأود أن يكون الخلط. لذلك، فإنه يمكن أن تقول لي للذهاب الى هناك وانقر على زر تسجيل الدخول، أو سجل في زر يمكن أن يكون على حق في الجزء العلوي حيث أنا ذاهب لرؤيتها. تريد دائما أن تظهر للمستخدم ما يجب القيام به، والتي يجب أن تكون متأصلة في الصفحة نفسها. وعند الانتهاء من التفكير في التصاميم والاستهزاء حتى طرق مختلفة ل معربا عن موقعك، وتريد حقا أن نفكر في ما المستخدمين ذاهبون ل أن تفعل وكيف يمكنك تبين لهم ما يجب القيام به. آخر شيء واحد هو الاختبار هو حقا، المهم حقا. انه امر رائع للحصول على شخص - الحصول على صديق، الحصول على شخص لا تعرفه حتى - من الذي لم يسبق له مثيل في الموقع قبل استخدام الموقع. لأنك قد تم العمل على الموقع لعدة ساعات، وكنت قد تم يحدق في ذلك، وأنت تعرف بالضبط ماذا تفعل ذلك من الواضح أنك على وشك أن يختبر الأشياء التي كنت قد تم العمل على وعليك أن تعرف العمل. ولكن إذا كان شخص آخر يأتي على طول ويستخدم الموقع الذي تستخدم أبدا من قبل، هذا هو تجربة فريدة من نوعها لأنه لديك شخص ليس لديه معرفة مسبقة الموقع الخوض في ذلك، حتى انهم ذاهبون لديك أي فكرة على نحو فعال ما يجب القيام به أو أي نوع من حالات الاستخدام موجودة بالنسبة لهم. هذا أمر عظيم. هذا فريدة من نوعها لأنهم في الأساس شخص مع فارغة للعقل. يمكن أن أقول لكم إذا كان هناك شيء غير مربكة أو غير واضحة. يمكن أن تعطيك فكرة عن بالضبط ما تجربة المستخدم من موقعك. يمكن أن يكون من الصعب جدا ان اقول ان نفسك، لذلك بالتأكيد أود أن أشجعكم كما نعمل على تطوير المشاريع الخاصة بك - إذا كنت تفعل مشاريع على شبكة الإنترنت - للحصول على الأشخاص الذين يستخدمون الموقع في أقرب وقت لديك نوعا من التجريبي وظيفية. الآن انا ذاهب الى الحديث قليلا حول كيفية إدارة مشروع تطوير الشبكة. انتقلنا على كيف يمكنك أن تفعل الجانب الخلفي التقنية، كيف يمكنك تصميم موقع جيد حقا، وهذا أمر عظيم إذا كنت تعمل من نفسك ولكن - حتى لو كنت تعمل من نفسك وخاصة إذا كنت تعمل في فريق، يصبح إدارة المشروع مشكلة كبيرة. كنت قد سمعت عن نوع من إدارة المشاريع في أشكال مختلفة منذ المدرسة الابتدائية عندما قيل لك العمل الجماعي. عليك أن تتعاون، والتواصل، كل ذلك. أن كل شيء لا يزال ينطبق هنا، ولكن هناك بعض الظروف الفريدة مع علوم الكمبيوتر الذي تريد أن تكون على علم، وتريد للتأكد من التعامل بشكل جيد. سأتحدث أولا قليلا عن الفريق الذي سوف تكون فيه. من المهم جدا لاختيار الحجم الصحيح للفريق للعمل على، والمشروع النهائي الخاص بك اعتقد ان لديك الخيار لاختيار بين 1 و 4 أشخاص إذا أنا الصحيح. تريد للتأكد من أن كنت لا مجرد اختيار عدد من الناس ان كنت تريد العمل مع لأنهم أصدقائك. تريد لاختيار الفريق الذي هو حجم جيد والتي سوف تحصل على هذه المهمة. هناك مفاضلة في وجود عدد أكبر من الناس مقابل أقل الناس. إذا كان لديك عدد أكبر من الناس، ويمكن أن يتم من الواضح مزيد من العمل لأن لديك الكثير من الناس، والكثير من التعليمات البرمجية، والكثير من الأفكار، وهذا هو كل شيء عظيم. ولكنه يتطلب أيضا الكثير من إدارة وأكثر بكثير الاتصالات. وبعبارة أخرى، إذا كان لديك 4 أشخاص يعملون في نفس المشروع وانهم جميعا تحرير نفس الرمز، أكثر أو أقل هم كل نوع من الحاجة إلى معرفة ما يحدث لذلك يتطلب منك - إذا قمت بإضافة بعض من وظيفة جديدة لديك نوع من ان نقول للناس - أنا مضيفا بذلك، أنا تغيير هذا في هذا الطريق - خاصة إذا كنت تحصل في الاشياء العميقة حقا مثل نماذج وحدات التحكم التي تسير فعلا على التأثير على الكيفية التي يعمل بها الموقع. يحتاج الفريق بأكمله ليكون على بينة منه، لذلك كنت بحاجة للتأكد من أنك لا اختيار كبير جدا على الفريق الذي سيكون من الصعب لجعل هذا الاتصال. أنت أيضا لا تريد أن تختار فريق صغير بما يكفي أنك لن تكون قادرة على التواصل لأنه مجرد لك. شيء آخر هو أن تنظر إلى توازن فيها مهاراته الناس هي. انه لشيء رائع إذا كنت كل المبرمجين جيدة حقا. ولكن إذا كنت كل الناس الخلفية، ثم موقع الويب الخاص بك لن تبدو جيدة جدا لأن لديك هذه قاعدة بيانات كبيرة، وأنه لا استعلامات البحث وبسرعة فائقة - وهو أمر عظيم - ولكن عندما تذهب إليه، انها مثل موقع 1990 مع الأحمر والأزرق في كل مكان، وهذا ليس جيدا سواء. تلاحظ أن بن وأنا العمل كفريق واحد لطيفة جدا لأنني نوع من أكثر في الواجهة الأمامية، ونحن على حد سواء تتفاعل في منتصف نهاية، وهذا جيد حقا مع بن الاشياء الخلفية، ذلك أن يعمل بشكل جيد حقا لأننا لا نستطيع تصميم أي موقع وأساسا الثقوب في ذلك الموقع التي تحتاج إلى أن تملأ يمكن شغلها من قبل أي واحد منا، أو ربما الاثنين معا. كنت ترغب في التأكد من أنه لا توجد ثقوب في فريقك. لا بأس إذا كان هناك قليلا من التداخل. وبعبارة أخرى، إذا كان لديك 2 الناس التي هي على حد سواء جيدة مع نهاية الظهر، التي يمكن أن تكون جيدة وكذلك لأنها يمكن أن تساعد بعضها البعض مع مشاكل بأن لديها. يمكن أن يكون مشكلة إذا كان لديك فقط 1 شخص مسؤول عن شيء معين وأنها واجهت مشكلة، لذلك كنت لا تريد أن يكون لها قليلا من التداخل ولكن الأهم من ذلك تريد للتأكد من أن كل من الثقوب ممكن تمتلئ. آخر شيء - وهذا ينبغي أن يكون واضحا، لكنه في كثير من الأحيان لا. كنت تريد حقا أن يكون لها متعة. وجهة هذا المشروع النهائية في CS50 وغالبا ما تكون نقطة تطوير الشبكة بشكل عام ليس لمجرد القيام بعمل لأنه يحتاج به. كنت تريد حقا أن يكون لها متعة، وتريد أن صنع شيء وهذا ما تحفيز لك للعمل على ذلك. إذا ما كنت صنع هو الألم للجلوس والعمل على، ثم كنت لا اختيار المشروع الصحيح. كنت ترغب في اختيار شيء أن تجد مثيرة للاهتمام، كنت تريد حقا أن نرى النتيجة، وكنت متحمس عندما تحصل على فكرة جديدة حول شيء يمكن القيام به - لذلك هناك جميع أنواع المشاريع هناك والتي أنا متأكد يمكنك أن تجد - كل من لديه شيء من شأنه أن دسيسة حقا لهم إذا يفعلونه مشروع على شبكة الإنترنت. سأقولها مرة أخرى في الوقت الحالي. إذا يبدو مشروعك مثل الألم، وكنت لا تريد أن تعمل على ذلك، اختيار المشروع آخر. اختيار ما يلهم حقا لك. بن ذكرت هذا مفهوم التكرار قليلا، وأريد أن أذهب على أكثر من ذلك قليلا. من المهم حقا للعمل في الزيادات التي تحصل شيء وظيفية. يمكن أن تكون كبيرة إذا كان لديك هذه الخطة لموقع على شبكة الانترنت وهذا ما تنوي القيام به A، B، و C، وأنه في نهاية المطاف سوف نصل الى هناك. ولكن كنت عالقا في هذه المرحلة حيث كنت تعمل عليها، وتعمل على ذلك، ولكن لا شيء هو الحصول على القيام به. لم يكن لديك أي شيء لرؤية و، الشيء الوظيفية ملموسة. ما كنت تريد حقا أن تفعل الكثير كما يبدو نوع من الألم في بعض الأحيان إلى العمل على شيء ثم نوع من سقف تشغيله بحيث انها على الأقل مستقر، تشغيل نسخة حتى لو كان لا يملك كل الميزات التي تريدها. وربما هناك بعض الميزات التي كنت تريد حقا لإضافة ولكن لا يمكنك فقط لأنك ترغب في الحصول على هذا الموقع إلى نقطة وظيفية. وهكذا كنت تريد أن يكون نوع من عملية التنمية برمتها تبدو وكأنها ذلك. كنت تريد أن تبدأ في مكان ما وظيفية - أو أساسا تبدأ مع أي شيء - ولكن كنت ترغب في الحصول على مكان أساسي جدا والوظيفية. ثم مرة أخرى، وجعل نوعا من القفز والحصول على وظيفية في مكان ما مرة أخرى. عليك بناء ببطء، وأنه قد يذهب أبطأ قليلا مما كان على خلاف ذلك، ولكن في المدى الطويل إذا كنت عالقا باستمرار في هذه المرحلة وسطا حيث كنت لم يكن لديك أي شيء يعمل في الواقع، يمكن أن يكون الإحباط كبيرة حقا للعمل على المشروع الخاص بك لأنك دائما قريبا جدا من الحصول على عمل، وانها لم تعمل في الواقع. كنت ترغب في العمل في هذه الزيادات وظيفية، وتحتاج أيضا إلى القيام ببعض التأمل بعد كل واحدة. وبعبارة أخرى، مرة كنت في نقطة حيث تعمل الآن على الموقع - انها لا تملك كل ما تريد ولكنها تقوم ببعض الأشياء - تحتاج إلى التفكير، حسنا، هل هذا موقع انجاز الهدف الذي أنا وضعت القيام به؟ وبعبارة أخرى، إذا كان الموقع هو الذهاب الى القيام X، هو ما كنت قد تعمل في اتجاه X؟ كلها من وظائف التي أردت هناك؟ وعلاوة على ذلك، وأنها تخدم الغرض العام الذي أريد؟ إذا كنت تجد أن موقعك هو بداية لتنحرف في اتجاه مختلف أو ربما مجرد نوع من الأشياء التي لا تعمل بها، قد يكون الوقت قد حان لتغيير التروس قليلا. وبعبارة أخرى، انها تستحق النظر - انها تستحق رمي الأفكار إذا لزم الأمر وبالنظر أنا حقا تعمل من أجل ما أريد أن أكون. وأعتقد أن بلدي النقطة التالية. لا تخافوا على التخلي عن الأفكار. فقط لأنك تنفق الكثير من ساعات العمل على ميزة وأخيرا حصلت على عمل ولكن هل حقا لا تسير على ما يرام - انها ليست مثل أن من المفيد أو المستخدمين يواجهون صعوبة في استخدامه - هذا النوع من الشيء - لا تخافوا لرميها بعيدا. انها تمتص أن كنت قد قضيت الكثير من الوقت في العمل على ذلك، ولكن في نهاية المطاف كنت لا تريد موقع هذا نوع من وضعتها هذه القطع التي النوع من العمل ولكن لا يتم تقديم ذلك جيدا. أيضا، لا تخافوا لاحتضان الأفكار الجديدة. إذا يأتي شخص ما على طول ويقول: مهلا، هذا الموقع يبدو باردا حقا ولكن لن يكون كبيرا حتى أنه لو كان كذلك فعل هذا؟ فقط لأن هذا هو الشيء الذي كنت لا تنوي شيئا وهذا ليس في الخاص المواصفات، وهو الأمر الذي لم تكن قد عقدت العزم على تحقيقه، لا تخف أن تأخذ على ومن ثم العمل معها. لأنه غالبا الأفكار التي تقوم بتشغيل جميع أنحاء مع مسار التنمية في نهاية الأمر الميزات الرائعة حقا للموقع. لقد قلت هذا من قبل. سأقولها مرة أخرى. اختبار السوبر، السوبر مفيدة. محاولة للحصول على الناس الذين لم يروا الموقع قبل تسجيل الدخول ومعرفة ما يجري لأنها يمكن أن اختبار ليس فقط فائدة الموقع وتجربة المستخدم، ولكنها يمكن أيضا اختبار الأداء الوظيفي في الطرق التي لا يمكن. إذا قمت بإجراء بعض الميزة التي لا شيء معين وأنت تعرف أنه ذاهب للقيام بذلك الشيء نفسه بشكل صحيح في كل مرة واحدة، وهذا أمر عظيم. ولكن يمكن أن يكون من الصعب في كثير من الأحيان لحساب قضايا الركن حيث القوة المستعمل اكتب شيئا أنك لم تكن تتوقع - على وجه التحديد لأنك تعرف الميزات نفسك. لذلك، أن يكون شخص ما تأتي على من ليس لديه فكرة عن كيفية استخدام الموقع وكسرها فقط في أي الطرق التي يمكنك القيام به هو مفيد حقا لأنك الحصول على فكرة من منظور مختلف تماما عن ما على موقعك يعمل وما يحتاج إلى إصلاح. الماضي، انا ذاهب الى الحديث عن بعض الممارسات الجيدة عموما، وكنت قد رأيت الكثير من هؤلاء في CS50، لكنها أيضا حقا، حقا تطبيق في إعداد المشروع. واحد هو تعليق. التعليق دائما التعليمات البرمجية الخاصة بك وخاصة إذا كنت تعمل في فريق كبير. يمكن أن يكون مزعج جدا أن يكون مجرد كتلة عملاقة من التعليمات البرمجية التي شخص مكتوب وربما كان يعمل، وربما لم يحدث ذلك، ولكن لديك أي فكرة عما تقوم به، بحيث يكون لديك أي فكرة سواء كانت مفيدة أم لا أو ما إذا كان ينبغي أن يكون هناك أم لا، وإذا كنت تعمل على شيء آخر فإنه من الممكن حتى أن كنت تعمل على نفس الشيء، حتى مجرد أن يكون حذرا جدا أن تراعي من أقرانك ورمز الكتابة التي وثقت بشكل جيد. لم يكن لديك للذهاب أبعد من ذلك لفعل الشيء كله حيث تحب إذا زيادة عداد ديك تعليق الذي يقول: أنا مضيفا 1 إلى هذا العداد. فإنه ليس من الضروري أن يكون ذلك تفصيلا، ولكن عن أي وظيفة التي كنت تكتب أي وقت مضى يجب أن يكون بعض الوثائق ما أن وظيفة بالضبط يفعل، ما هي مدخلاته، وماذا يجب أن تعود. وبهذه الطريقة يمكنك استخدام غيرها من مكونات الشعب للموقع ويمكنك العمل من أجل بناء شيء كبير. شيء آخر مهم هو ما تريد القيام به عمليات التنظيف العادية. كود يحصل فوضوي. لا تظن السوء إذا التعليمات البرمجية الخاصة بك هو مجرد غير قابل للقراءة تماما وفوضى العملاقة. ما يحدث في تطوير الشبكة دائما. كنت إضافة ميزات جديدة، وإزالة القديمة. الاشياء ستكون هناك والتي لا ينبغي أن يكون. هذا شيء طيب، ولكن كنت ترغب في التأكد من أن التعامل مع بانتظام. كنت لا تريد السماح لها بناء ما يصل الى نقطة حيث لا يمكنك أن تجد أي شيء في التعليمات البرمجية، وكان لديك أي فكرة عما يفعل أي شيء. هذا هو الحال مع HTML. في بعض الأحيان سوف ينتهي بك الأمر مع الكائنات التي لا تحتوي على أي شيء، وسوف تحتاج إلى التخلص من تلك. في CSS، يمكنك أن تشير إلى عناصر ليست هناك بعد الآن، لذلك تريد التخلص من هذا الرمز. في جافا سكريبت، كنت قد لإزالة شيء من HTML. لذلك، وتريد للتأكد من أن كنت تنظيف دائما، مما يجعل الأشياء جميلة بقدر ما تستطيع على أساس منتظم. ويرد آخر شيء مفيد حقا أنني لا أفكر كثيرا جدا في CS50 ولكن الامر يستحق الدخول في هو التحكم في الإصدار. فكرة التحكم في الإصدار هو عندما كنت في الأساس حفظ المسار من كل التقدم قمت بها نحو موقعك وإذا كان في أي نقطة كنت أدرك، أوه، هذا كان يعمل منذ فترة لكنه لا يعمل أي أكثر من ذلك، يمكنك العودة إلى الإصدارات السابقة ونرى ما الذي تغير منذ ذلك الحين، وهذا النوع من الشيء. الطريقة الأساسية لتحقيق ذلك هي مع جيت، جيت وهذا النوع من النظام الذي كله أعتقد أعطى تومي MacWilliam ندوة حول العام الماضي. إذا ذهبت إلى الندوات CS50 لعام 2011، يمكنك مشاهدة ندوة له على ذلك. فكرة جيت هو في الأساس على فترات منتظمة أن كنت صنع هذه الالتزامات والتي هي وسائل للقول الموقع هو في نسخة مستقرة جدا الآن الحق في ذلك أنا التعبئة والتغليف منه وإرساله بعيدا إلى الخادم، ومن ثم يمكنك الذهاب إلى هذا الخادم وننظر في كل الإصدارات السابقة من التعليمات البرمجية الخاصة بك، ونرى كيف انها تقدم عليه وجميع هذا النوع من الاشياء الجيدة. لذلك، وهذا هو الأساس عليه. بقدر تطوير الشبكة، ونحن سعداء لعصا حولها والرد على أي الأسئلة بقدر العرض الذي قدمناه. هذا هو. شكرا. >> [بن] شكرا. [تصفيق] [بيلي] الموظفين، لا أحد لديك أي أسئلة عن الأشياء التي كنا قد غطت أو الأشياء التي كانت لدينا لا تغطيها أنهم كانوا يأملون كنا تغطية؟ سنكون سعداء للرد على تلك. أي شخص؟ [عضو الجمهور] ما هي إيجابيات وسلبيات استخدام روبي أو باستخدام بيثون؟ [بن] وكان السؤال، ما هي إيجابيات وسلبيات استخدام روبي أو بايثون بدلا من مثل PHP. الايجابيات هي أن روبي وبايثون هي لغة أفضل بكثير من PHP. على الأقل في رأيي، وأعتقد أن في الكثير من آراء الناس الآخرين أيضا. وقد صممت أنها أكثر للقيام الأشياء المعقدة، وأقل الضرب معا لصفحات الويب بسرعة حقا مع قليلا من المحتوى الديناميكي. السلبيات هي أن هناك قليلا من - هناك أكثر من منحنى التعلم للحصول عليها اقامة. وهذا هو، في مثل PHP، هل يمكن أن يكون مجرد ملف HTML وتكتب أقل من، علامة استفهام، ثم تكتب بعض التعليمات البرمجية، ثم تكتب علامة استفهام، أكبر من، ثم الانتهاء من ذلك. بلغات أخرى مثل روبي أو بايثون، عليك أن تذهب من خلال أكثر قليلا العمل للحصول على موقع تشغيل الأولي. هناك أيضا - على الأقل كان عليه أن يكون الحال - أن هناك مزيد من الوثائق متوفرة للPHP فقط لأن هناك المزيد من الناس استخدامه. أعتقد أن هذا ليس بكثير من قضية بعد الآن. هناك بالتأكيد وثائق جيدة جدا لأشياء مثل روبي على القضبان أو جانغو لبيثون هو ما يعادلها. PHP هو أن الجميع تم استخدام لسنوات، وأنت تعرف كيف يعمل. روبي وبايثون هي قليلا أقل نضجا. [عضو الجمهور] لو كنت لتختار بين واحد منهم لمعرفة أو التقاط، الذي تفضل؟ بصراحة، أعتقد أن يعتمد على الشخص. أنا آسف. كان السؤال الذي سوف تختاره لشخص ما لمعرفة؟ أجد بيثون اجمل شخصيا. هناك الكثير من الناس الذين - فعلت أول مشروع ديف الويب الخاص بي في بيثون وجانغو. هناك الكثير من الناس الذين يحبون روبي على القضبان أيضا. ربما أكثر الناس الذين يعرفون روبي على القضبان. بصراحة، أود أن اذهبوا مع أيا كان الناس من حولك يعرفون بحيث يكون لديك شخص لطرح الأسئلة. كان السؤال - على الخوادم المشتركة هو نوع من الصعب العمل على بايثون؟ التي تعتمد على الاستضافة. هناك عدد من المضيفين على الشبكة التي سيتم نشر الاشياء بيثون. WebFaction يفعل ذلك، أليس كذلك؟ WebFaction واحد هو أن بيلي ولقد استخدمت لبعض المشاريع. انهم كبيرة حقا. أنها تدعم معظم لغات. ولكنه صحيح أن PHP هو أكثر من ذلك بكثير بتأييد واسع. لذلك، إذا كنت عالقا على استضافة المواقع على الشبكة التي لا PHP فقط، وهذا سبب وجيه لاستخدام PHP. [عضو الجمهور] أنا فقط حصلت في تعلم كيفية الاستعلام بعض قواعد البيانات، وأنا أعرف بلدي SQL هو في كل مكان، ولكن أنا حصلت مؤخرا تتعرض ل- وكنت أشير إلى. ترى جسون وقواعد البيانات القابلة للتوسيع. بلدي SQL لا يزال في كل مكان. كيف ترى ذلك يحدث؟ وسيكون هناك اتجاه متزايد لمزيد من توسيع (غير مسموع)؟ كان السؤال - لا أعتقد أن هناك سيكون اتجاها نحو قواعد البيانات غير SQL. على سبيل المثال، مثل MongoDB. أعتقد أن هذا صحيح بالتأكيد. ونصيحتي معظمها المتعلقة الخلية هنا فقط لأن الخلية هو معيار الصناعة. شخصيا، أنا أفضل بكثير قواعد البيانات التي ليس لديها مثل schemos MongoDB حيث لم يكن لديك قضية، أوه، أنا بحاجة إلى إضافة عمود آخر. ويل لي، مثل ما أفعل؟ انه من الصعب جدا أن تفعل ذلك على الخلية، ولكن عندما يكون لديك شيء من هذا القبيل مونغو انها أجمل بكثير. الشيء الجميل الآخر حول مونغو هو أن السجلات الخاصة بك هي في الواقع كائنات جافا سكريبت. ليس هناك نوع من خطوة التحويل حيث تحتاج إلى أن تأخذ هذه الصفوف قاعدة البيانات وتحويلها إلى كائن جافا سكريبت وثم إرسالها عبر السلك. أعتقد أشياء من هذا القبيل ستكون جدا، مفيدة جدا لتطوير الشبكة السريعة في المستقبل. [بيلي] شيء أود أن أضيف الذي هو مجرد نقطة عامة هي أن لا تشعر وكأنك يجب أن تعلموا كل اللغات ناقشناه من ندوة لدينا. من الواضح أن هذه النقطة هي لتعطيك فكرة عن ما هناك، وإذا كنت مفتون بها أي من الأشياء التي قمنا المذكورة يمكنك جوجل لهم وتقرأ عليها. وكما ذكرت، هناك عدد قليل من الحلقات الدراسية التي تتعامل مع هذه الأمور على وجه التحديد. بل هناك المزيد من الندوات التي لم أذكرها ربما أن ندخل في هذه الاشياء كذلك. الفكرة هي أنه إذا كنت تريد أن تعمل على شيء، وهنا هي الأدوات تحت تصرفكم. لا يشعر بالإرهاق إذا لم تكن متأكدا حقا ما تفعله هذه الأدوات بالضبط، ولكن نعرف أنهم هناك، والتي يمكنك الاستفادة منها واسعة من قبل جوجل. [عضو الجمهور] ما هو نوع من الأشياء ما عليك القيام به للتأكد من موقع الويب الخاص بك تبدو جيدة على الأجهزة المحمولة؟ [بيلي] الأجهزة المحمولة من الصعب قليلا. هناك 2 طرق يمكنك الاقتراب منه. الطريقة الأولى هي أن لديك بالفعل موقع على شبكة الانترنت المتنقلة. وبعبارة أخرى، يمكنك تنفيذ نوعا من الكشف في بداية عند المستعرض يجعل الطلب إلى موقع الويب الخاص بك والذي يقول إما العودة وجهة النظر هذه - التي ستكون وجهة لمتصفحات سطح المكتب أو الكمبيوتر المحمول - وهذا الرأي الأخرى للأجهزة النقالة. وهذا هو المكان الذي يوجد فيه وجهات النظر لطيف في ما تستطيع الى حد كبير مبادلة لل اثنين من ولها واجهة التي تعمل بشكل جيد حقا على الأجهزة النقالة ولها واحدة مختلفة تماما أن يعمل بشكل جيد على الأجهزة المتصفح. المشكلة مع ذلك هو أنه يستغرق وقتا طويلا لأنه يعني الترميز واجهة مختلفة تماما. الطريقة الأخرى التي يمكنك القيام به هو - والكثير من الهواتف الحديثة عرض المواقع، ومحاولة جعلها كما تفعل مستعرض، وأنها تبذل قصارى جهدها. يمكنك نوع من محاولة للبقاء الضوء على مبلغ مسج جافا سكريبت كنت تستخدم والتي تميل إلى أن تكون فيها يمكن أن تسوء الأمور قليلا. هذا هو نوع من الطريقة التي يجب استخدامها إذا لم يكن لديك الكثير من الوقت. إذا كان لديك الوقت للعمل على واجهة الهاتف النقال، وهذا هو الواضح الخيار أفضل ما لديكم. أعتقد عموما لمشاريع CS50، كنت تريد الذهاب الى اختيار واحد أو آخر. وبعبارة أخرى، هل تريد أن تجعل من التطبيق المحمول أو كنت تريد أن تجعل موقع على شبكة الانترنت سطح المكتب. وهذا النوع من يحدد المكان الذي تذهب مع ذلك. ولكن إذا كنت تريد توسيعه في وقت لاحق، وربما أفضل رهان هو لجعل واجهة أخرى للطرف الآخر. لدي القليل من الخبرة في تطوير المواقع القائمة على وورد. أنا استضاف موقع شخصي على وورد لحظة. تلك الأنواع من الأطر يمكن أن تكون الأمور مثلما أساسية جدا لطيفة. في كثير من الأحيان عليك فقط تشغيل في الكثير من القضايا على الرغم من التفصيل. فأنت تريد أن يكون شيئا ننظر بطريقة معينة أو أن يكون وسيلة معينة وأنت لا يمكن فقط لأنه من الصعب السلكية في نظام هذه هي الطريقة التي يجب أن نفعل الأشياء التي يمكن أن تكون جزء من المشكلة. منذ ذلك الحين لقد كنت أكثر ميلا النوع من العمل مع المواقع من الألف إلى الياء. لأشياء مثل قواعد البيانات بلوق وهذا النوع من الاشياء انها حقا ليس من الصعب أن بناء الإطار. إذا كنت حقا امتدت لوقت، يمكنك بالطبع استخدام شيء مثل وورد أو شيء من هذا القبيل لبلوق. أنواع الأشياء التي تقوم بتخزين بلوق والقيام ليست حقا من الصعب بما فيه الكفاية أن إذا كنت تشغل في أي من تلك الأنواع من الأشياء، وربما كنت أفضل فقط ل جعل نسخة في المنزل. أعتقد ذلك حول هذا الموضوع، لذلك شكرا مرة أخرى على حضوركم. نحن حقا يتمتع أتحدث إليكم الرجال، ونأمل أن تعلمت بعض الاشياء. [بن] نحن سعداء للحديث - لدينا للذهاب ولكن نحن سعداء للحديث أكثر خارج إذا كان لديك سؤال آخر. شكرا مرة أخرى. [تصفيق] [CS50.TV]