[Powered by Google Translate] [هفته 9] [دیوید J. مالان - دانشگاه هاروارد] [این CS50 است. - CS50.TV] بسیار خوب. خوش آمدید. این CS50 است، و این است که شروع هفته 9. امروز ما به طور خاص در طراحی، دیگر تمرکز در زمینه C اما در زمینه PHP و کمی از SQL و کمی از جاوا اسکریپت، به خصوص نسبت به پایان از هر دو pset 7 و همچنین پروژه نهایی خود را. در واقع، اگر شما در پروژه نهایی خود را در آن نقطه است که احتمالا به عنوان حداقل از یک ساعت و یا تا پیش آغاز شده است به برخی از اندیشه به طرح نهایی شما و شما به فکر شما می خواهم برای همکاری با 1 یا 2 همکلاسی، اگر شما مشکلی در اتصال با گفت همکلاسی احساس رایگان برای پر کردن فرم در cs50.net/partners/form. این فقط شما می پرسد که شما چه نوع پروژه شما در حال فکر کردن در مورد، جایی که شما فقط به دلایل لجستیکی زندگی می کنند. و سپس اگر می خواهید به نگه داشتن چشم در طی هفته آینده و یا تا URL گسترده وجود دارد، بعد از آن شما می توانید یک نسخه فقط خواندنی از توضیحات گوگل را ببینید که در آن ما در حال جمع آوری این اطلاعات. بنابراین اگر شما می خواهید با کسی کار می کنند، همه به معنی احساس رایگان برای رسیدن به مردم از طریق که مکانیسم. اما اکثریت مردمی انجام انفرادی کار. این کاملا خوب است. پس وقت را احساس نمی کند، این است که به هیچ وجه واجب است. روز جمعه بود فقط من و چند تیم در اینجا، تئاتر خالی در بیشتر قسمت ها. 3 گردشگران وجود دارد نشستن وجود دارد، به طوری که کمی بی دست و پا بود. آنچه که ما در مورد صحبت پایگاه داده بود و ما در مورد pset 7 کمی صحبت کردیم. و اگر شما هم اتفاق نمی افتد برای گرفتن آن بر روی ویدیو فقط رتبهدهی نشده است، که خوب است. من سعی خواهم کرد به تعریف هر واژه ای که ما در غیر این صورت را اعطا بر اساس سخنرانی روز جمعه. اما امروز ما قصد داریم به تلاش شما را به نقطه نه تنها قادر به انجام کاری مثل pset 7 اما واقعا درک آنچه که در زیر هود، به ویژه برخی از انتزاعی که ما در محل را در فایل functions.php قرار زندگی خود را کمی آسانتر می کند، اما به طوری که شما در نهایت درک به طوری که زمانی که چرخ های آموزشی در چند هفته شما هنوز هم می تواند زنده بماند در دنیای واقعی و این مسائل بدون هیچ گونه چارچوب CS50 زیر شما. این _SESSION دلار، برای کسانی از شما که آشنا هستند یا کسانی که در حال حاضر این ویدئو را در روز جمعه گرفتار، چه جلسه اجازه دهید ما انجام می دهید در یک برنامه وب مبتنی بر PHP-؟ این یک متغیر superglobal، که به معنی آن را در روح شبیه به GET و POST و چند دیگران، اما آنچه در این است که کاری مفید است؟ چیست SESSION استفاده می شود؟ آره. [دانشجو] به سیستم وارد شوید ببخشید؟ [دانشجو] به سیستم وارد شوید به سیستم وارد شوید در واقع. در pset 7 ما با استفاده از این superglobal جلسه به منظور تسهیل در سیستم وارد شوید. و چه خوب در مورد این superglobal است که آن را به یک آرایه انجمنی است. آرایه های انجمنی، فراخوان، فقط یک آرایه که شاخصهای دیگر باید اعداد مانند 012. آنها می توانند اعداد و یا می توان آنها را حتی رشته. و به این ترتیب اگر شما به pset 7 شیرجه در عین حال، شما ممکن است به یاد آورید که ما در حال ذخیره کردن یک کلید به نام ID در داخل این آرایه انجمنی است که ارزش آن چیزی شبیه به 123 - هر آنچه را که در حال حاضر در ID کاربر وارد شده است. انگیزه این است که حتی پس از آنکه کاربر بازدید کرده است در localhost و یا وب سایت من به طور کلی و پس از آن، آنها که در سیستم وارد شده، حتی اگر یک لینک کلیک کنید و یا بازگشت به وب سایت من برای 5 دقیقه و یا حتی یک ساعت و یا حتی برای یک روز، اما آنها را ترک پنجره مرورگر خود را باز کرده، از طریق این superglobal می تواند من را به یاد داشته باشید که آنها وارد سایت شوید. به عبارت دیگر، آن را به من اجازه می دهد تا برای ذخیره هر چیزی کمی در دراز مدت من می خواهم در مورد یک کاربر. و شما می توانید از آن فکر می کنم واقعا به عنوان تجسم سبد خرید. مکان هایی مانند آمازون بدیهی است که شما اجازه می دهد چیزهایی را به سبد خرید قرار داده است، اما HTTP، پروتکل است که قدرت وب است، بی به این معنا که در هنگام مراجعه به یک وب سایت، در بیشتر قسمت ها شما برخی از اتصال به شبکه ثابت داشته بین مرورگر شما و سرور است. به محض HTML و عکس JPEG و فایل های gif را دانلود کرده اید و تمام آن، اتصال از بین می رود و شما فقط باید یک نسخه از HTML و فلان چیز را از سرور. اما در صورتی که سرور می خواهد به یاد داشته باشید چیزی در مورد شما، بار بر روی سرور در واقع به سابقه است که اطلاعات می باشد. و بنابراین شما برنامه نویس که کنترل سرور می توانید هر چیزی که شما می خواهید در داخل این آرایه انجمنی superglobal قرار داده است و آن را در آنجا خواهد بود دفعه بعد که کاربر می آید به عقب، که آیا آن دقیقه یا حتی چند روز بعد از آن، مگر آنکه پنجره مرورگر خود را ببندید، که در آن جلسه نقطه ناپدید می شود. پس از آن ذخیره سازی زودگذر، غیر مداوم است، و این به معنای از بین برود به محض آن که کاربر مرورگر خود را میبندد - که فقط تب، اغلب تمام مرورگر، در نتیجه به طور موثر ورود کاربر. پس چگونه است که این چیزی که در واقع اجرا شده است؟ اجازه دهید نگاهی سریع در یک مثال ساده ما در روز جمعه نگاه کرد. برای کسانی که ناآشنا، آن را به عنوان ساده به عنوان این است. این یک صفحه وب است که تنها هدف در زندگی است، به من بگویید چند بار من این صفحه سفر کرده اند. این ساعت هم برای اولین بار در روز دوشنبه که من آن را بازدید است، بنابراین آن را می گوید 0 بار. اما اگر من شروع مجدد این صفحه، آن را می گوید 1 بار، 2، 3، 4، 5، و در نهایت فقط در شمارش نگه دارید، تا، تا، تا، تا برای هر زمانی که من در واقع با کلیک بر روی آن بارگذاری. پس چگونه است که این کار؟ اجازه دهید من به داخل این فایل به نام counter.php. قسمت بالای آن تمام نظرات آبی است، اما بخش جالب توجه اینجا است. در خط 13 ما تماس بگیرید این session_start تابع، و است که به معنای واقعی کلمه همه شما باید انجام دهید اگر شما می خواهید دسترسی داشته باشند به این superglobal خاص به نام $ _SESSION. این باعث می شود آن را همه ممکن است، و ما در یک لحظه که چگونه است که همه ممکن است. در خط 16 اطلاعیه آنچه که من انجام می دهند. اگر کلید، به نام مبارزه - به عبارت دیگر، ارزش شاخص - "" وجود دارد داخل این آرایه به نام جلسه، پس از آن چه من آن را در خط زیر را انجام؟ خط 18 انجام شده است؟ [پاسخ دانش آموز نامفهوم] که چه؟ [دانشجو] ذخیره سازی مقدار است. خوب است. این ذخیره ارزش است که در جلسه در حال حاضر در یک متغیر موقت محلی، $ کانتر در تمام حروف کوچک. توجه کنید که PHP در حال حاضر کمی تنبل. توجه داشته باشید که ما هیچ اشاره ای بین المللی و یا شناور و یا رشته یا هر چیزی شبیه به این نیست که چرا که PHP است ضعیف تایپ، به موجب آن شما را ندارد برای مشخص کردن نوع متغیر، و در این مورد در اینجا من حتی نمی آن اعلام نشده است. من آن را اعلام داخل این آکولاد و بر خلاف C، این است که در واقع درست است. مهم نیست که چقدر عمیقا تو در تو اعلامیه یک متغیر در PHP - در داخل از بریس فرفری، در داخل بریس فرفری و مانند - آن را در آن لحظه در زمان باقی مانده از این برنامه وجود داشته باشد، برای بهتر شدن یا بدتر شدن. پس از آن بلافاصله تبدیل به جهانی در اسرع وقت آن تعریف می کنید همانطور که ما در حال انجام است. در غیر این صورت، اگر من را پیدا کند که هر چیزی در superglobal جلسه وجود دارد، من ظاهرا این شمارنده متغیر مقدار دهی اولیه تا 0، در نتیجه فقط با فرض کاربر بوده است هرگز در اینجا قبل از. و پس از این دوره افزایش متقابل چگونه است؟ من به روز رسانی ارزش است که در داخل این آرایه انجمنی تنظیم آن را به هر آنچه که شمارنده در حال حاضر + 1 برابر است. اگر من در پایین حرکت به HTML صفحه، آن را در واقع بسیار ساده است. من در بدن از این صفحه است، "شما این سایت را بنابراین، و به طوری که بار سفر کرده بود." و این ساختار PHP است. اگر شما <؟، این به طور موثر به آنچه تابع برابر است با؟ این واقعا معادل را به چیزی مانند printf، که ایم چند بار در C دیده می شود، اگر چه شما در حال حاضر ممکن است که از تنظیمات در pset 7، چاپ شده است نیز یک تابع است که فقط چاپ خارج، آن را در واقع نه با استفاده از کدهای قالب، و شما در واقع می تواند اکو و همچنین می گویند. همه آنها تا کنون کمی متفاوت است حتی اگر اثر خالص در نهایت همان است. بنابراین استفاده از این علامت مساوی تنها مرتب کردن بر اساس یک راه ظریف از انجام آن است بیشتر موجز از شما در غیر این صورت ممکن است قادر به. به طوری که این سایت هم اینکار را در مورد شما نمی کنند. چاپ این مقدار شمارنده است. چگونه است که این همه در واقع اتفاق می افتد؟ شما ممکن است یک هفته یا بیشتر به یاد پیش ما شروع به دنبال زیر هود چگونه یک صفحه وب با استفاده از این برگه بازرس کار می کند. کروم تا به این هر دو در نسخه مکینتاش، نسخه ویندوز و حتی نسخه های لینوکس، و Firefox و IE مکانیسم مشابه به موجب آن شما باید این دیباگر ساخته شده است در در داخل مرورگر است. بیایید یک نگاهی به زیر. ما باید یک دسته کامل از زبانه ها در اینجا، و به یاد بیاورید که یکی از سمت چپ است عناصر، و بدون توجه به چه godawful HTML و جاوا اسکریپت در یک صفحه، به یاد که با تب عناصر به شما در واقع می تواند حرکت HTML سلسله مراتبی و خوب و منظمی است. بنابراین اگر شما در حال تلاش برای یادگیری از یک وب سایت مانند گوگل و فیس بوک و یا در واقع هر وب سایت، درک کنند که شما احتمالا بهتر با نگاه کردن به کد منبع این روش به عنوان به مشاهده منبع خام مخالف، که می تواند یک ظرف غذا، به خصوص در سایت گوگل دیده می شود ایم. بنابراین اگر من به جای آن بر روی تب شبکه اینجا را کلیک کنید. بیایید ببینید چه خبر است در زمانی که من در بازدید از این صفحه. اول پاک کردن کش من به من اجازه بده. من قصد دارم به تنظیمات در کروم بروید و سپس به تاریخ و سپس به پاک کردن همه داده های مرور. شما ممکن است برای انجام این کار برای مقاصد دیگر استفاده می شود، [خنده] اما زمانی که آن را به وب سایت های در حال توسعه می آید، آن را در واقع مفید - اگر شما در حال خنده می دانید. [خنده] در واقع واقعا مفید است که در حال توسعه وب سایت ها به دلیل واقعیت این است چیزهایی مثل کوکی ها و چیزهایی مانند کش فایل های HTML، فایل های کش جاوا اسکریپت در واقع می تواند تبدیل به یک سردرد بزرگ، چرا که اگر به هر دلیلی مرورگر تصمیم می گیرد به کش و در عین حال برخی از فایل شما به آن فایل بر روی سرور ساخته شده اما مرورگر واقعا متوجه شدم که فایل تغییر کرده است و در نتیجه در واقع نه آن را دوباره دانلود حتی زمانی که شما با کلیک بر روی دکمه Reload، یکی از مطمئن ترین راه فقط مطمئن شوید که خطا با کد شما نیست، آن را با رفتار مرورگر، این است که در اینجا در مرورگر شما و در تمام تاریخ به طوری که هیچ سردرگمی وجود دارد روشن است. و پس از آن اگر شما واقعا می خواهید به پارانویا، خروج از مرورگر، آن را راه اندازی مجدد، و پس از آن مطمئن شوید که تمام کار به عنوان انتظار می رود. بنابراین در کوتاه مدت، پاکسازی کش خوب است هنگام انجام توسعه است. بنابراین در اینجا ما باید شبکه زبانه. من پیش از این سایت بازدید به حال 9 بار، اما اجازه دهید من به جلو بروید و روی Reload کلیک کنید. و من را به 0. اجازه دهید در واقع ببینید که چگونه آن این است که این superglobal جلسه در حال اجرا است. من قصد دارم تا با کلیک بر روی 1 درخواست HTTP است که ساخته شده بود، و این پنجره اشکال زدایی به شما اجازه می دهد تا من در داخل آن نگاه کنید. در اینجا من فقط پاسخ از سرور، است که جالب نیست. من این کار را در هر تعداد از راه دیده می شود. اما آنچه از لحاظ فنی جالب هدر. اگر من در پایین حرکت اینجا و تمرکز بر روی هدر درخواست کلیک کنید و مشخصات منبع، آنچه من قصد دارم برای دیدن به معنای واقعی کلمه به درخواست HTTP است که فقط از مرورگر به سرور رفت، کلمه از عمل و پس از آن / counter.php نام فایل HTTP/1.1 فقط نسخه ای از HTTP که مرورگر من این است که با استفاده از. این خط در اینجا یک یادآوری کوچک از مرورگر به سرور نام سرور است که آن را می خواهد به صحبت. و سپس بقیه این است که گاهی اوقات اما نه مربوطه در حال حاضر. این نوع کنجکاوی است. مرموز اگر این رشته است، در هر زمان، مرورگر شما بازدیدکننده داشته است یک وب سایت اطلاع رسانی سرور از چه مرورگری که شما با استفاده از و چه سیستم عامل شما و با استفاده از چه نسخه ای از آن است. بنابراین اگر شما همیشه تعجب که چگونه وب سایت ها مانند CNN و فلان چیز می دانم چه درصد از کاربران مکینتاش بر روی وب سایت کاربران PC،، کاربران اینترنت اکسپلورر، کاربران کروم و مانند آن، به این دلیل است که همه از مرورگرهای ما در حال گفتن هر وب سایت تک خارج وجود دارد چیزی است که ما هستند. آن را لزوما حاوی اطلاعات شناسایی شخصی، اما آن را به سرور آدرس IP خود است و چه مرورگر و سیستم عامل شما در حال استفاده است. به طوری که که در آن از این اطلاعات است. اما آنچه جالب توجه تر در حال حاضر زمانی که آن را به این جلسات می آید هدر پاسخ. اجازه دهید کلیک کنید منبع پاسخ مشاهده. چه جالب اینجا چند چیز است. 1، ما یک کد وضعیت 200. ما هرگز این کد وضعیت را ببینید چرا که این بدان معناست که همه خوب است. به معنای درست در مقابل چیز دیگری است. شماره ما گاهی اوقات می بینم که بد چه خبر؟ [دانشجو] 404. 404، فایل یافت نشد 403 شما ممکن است تلو تلو خوردن بر در حال حاضر، که ممنوع است، که به معنی است که شما را به چیزی سطح دسترسی، به احتمال زیاد خود را فراموش کرده است. و یک دسته از دیگران وجود دارد. را در اینجا، این است که کمی دیوانه است. من واقعا فقط چند دقیقه پیش نوشت: این فایل با چسباندن آن را به gedit. چرا این صفحه در سال 1981 منقضی واقعا قبل از وب وجود دارد؟ چه در رفتن وجود دارد؟ [پاسخ دانش آموز نامفهوم] مهر زمان. اما چرا؟ این تا حدودی خودسرانه، اما در واقع مفید است. این است که گفت: به مرورگر من این فایل PHP شما فقط درخواست منقضی شده است. در واقع، آن را 30 سال پیش منقضی شده است. اما چیزی که می کند که واقعا چیست؟ این فقط بدان معناست که کاربر بازدید این صفحه: چه با بارگیری مجدد و یا تایپ URL در نوار آدرس، مطمئن شوید که شما بروید و واکشی یک نسخه جدید از آن. این نوع یک مثال از متلاشیکننده کش است، یک کلمه احمقانه است که فقط به معنای تلاش برای تضعیف مرورگرها واقعا از HTML ذخیره شده است که از سرور فرستاده می شود به طوری که شما به طور تصادفی نمی رسید بازنگری و پس از آن دیدن نسخه های مشابه از فایل است. در واقع شما می خواهید سرور برای ارسال یک نسخه جدید است. بنابراین این واقعیت است که آن را در سال 1981 فقط بدان معنی است که این چیزی است که دستگاه انتخاب به عنوان تاریخ دلخواه در گذشته است. اما خط واقعی آبدار است که در حال حاضر این یکی. حتی قبل از 50 شما احتمالا مبهم با کوکی ها آشنا است. که از سمت راست در حال حاضر، به ویژه در میان کسانی که کمتر و راحت و یا در میان، چه چیزی است که یک کوکی در درک و فهم خود را در حال حاضر حتی اگر ما را به درک خود را فنی تر هستید؟ کوکی چیست؟ آره. [دانشجوی] اطلاعات در مورد کاربر، می خواهم اگر آنها از نام کاربری و یا چیزی نوشته ام. خوب است. این اطلاعات مربوط به کاربر است، که آیا آنها در نام کاربری خود را تایپ کرده اید در حال حاضر است. کوکی یک راه است که در آن سرور می تواند به یاد داشته باشید چیزی در مورد یک کاربر. و آنچه واقعا یک کوکی یک فایل متنی و یا برخی از دنباله ای از بایت ها است که توسط سرور های اختصاصی در داخل مرورگر شما کاشته شده است، و در داخل آن فایل و یا در میان کسانی که به نوعی از شناسه بایت است. شاید آن را به معنای واقعی کلمه نام کاربری خود را، اما اغلب بیشتر از آن چیزی بیش از مرموز، به دنبال مثل این چیز در اینجا - bo8dal3ct و غیره - این واقعا بزرگ رشته الفبایی که واقعا فقط به معنای به یک شناسه منحصر به فرد برای شما. یا شما می توانید از آن به عنوان نوعی از یک تمبر دست مجازی فکر می کنم. اگر شما به برخی از باشگاه و یا یک پارک تفریحی بروید، به یاد داشته باشید که شما در واقع پرداخت می شود و رفته، آنها به یک دشنه کوچک قرمز رنگ بر روی دست خود را از برخی از مرتب کردن بر اساس قرار داده است، و این که به یاد مردم در مقابله که در آن شما در حال حاضر پرداخت می شود و شما می توانید آیند و می روند به عنوان شما لطفا. کوکی ها کمی در روح شبیه به آن است. اولین بار من در بازدید از این وب سایت، من فقط پس از پاک کردن حافظه پنهان من، سرویس دهنده وب، لوازم خانگی در این مورد، یک تمبر را در دست من قرار داده است که نام PHPSESSID، جلسه ID، که مقدار این واقعا بلند رشته الفبایی است. به طوری که در حال حاضر مرتب کردن بر اساس مزین در دست من به طوری که بعد من ضربه بازنگری یا به صورت دستی این URL در مرورگر مراجعه کنید. مرورگر من تعریف HTTP به ارائه تمبر دست دوباره و دوباره و دوباره. بنابراین حتی اگر سرور لزوما نمی دانند که من هستم، آنها به حداقل می دانم که من همان کاربر و یا حداقل، به طور خاص، همان مرورگر است. و بنابراین این در نهایت چگونه superglobal جلسه اجرا می شود. سرور هیچ ایده که شما هنگامی که یک وب سایت برای بار دوم یا بار سوم شما را دوباره مگر اینکه شما در حال حاضر این تمبر دست. و به محض اینکه شما در حال حاضر است که مهر و موم دست، وب سرور در اصل به یک پایگاه داده کوچک از خود را می رود و چک، بسیار خوب، من فقط دیده می شود مهر دست bo8dal3ct کاربر و غیره. به من اجازه دهید ببینید که چه اطلاعاتی را برنامه نویس ذخیره می شود در داخل superglobal در مورد این کاربر نقل قول این ارسال در پاسخ و پس از آن اجازه دهید من مطمئن شوید که آن داده است دوباره به داخل جلسه superglobal به طوری که برنامه نویس می تواند دوباره برای دسترسی به داده ها حتی اگر آن را چند دقیقه یا چند ساعت قبل راه اندازی شد. بنابراین در به عبارت دیگر، کوکی ها، که به رپ بد برای برخی از زمان به دلیل ناامنی در مرورگرها و آنها واقعا می تواند نقض حریم خصوصی ما و این همه، آنها در واقع ابزار بزرگ است زیرا بدون آنها شما دائما ورود به هر صفحه فیس بوک شما بازدید و یا هر ایمیل جیمیل به عنوان خوانده شده | اگر مرورگر به برخی از راه های به خاطر سپردن ندارد که در آن شما در حال حاضر تصدیق شده است. بنابراین در این راه کوکی ها به جلو و عقب در سراسر سیم فرستاده می شود. یکی دیگر از کنجکاوی در مورد کوکی ها، به خصوص در اینجا، این است که این است که به طور کامل در cleartext. بدون رمزنگاری در اینجا آنچه وجود دارد، و در واقع من در حال حاضر با استفاده از HTTP است. یکی از مورد علاقه های شما لحظه ما در CS50، که در حال حاضر 2 سال پیش در سراسر زمان یک ابزار به نام Firesheep بیرون آمد. این یک تکه از نرم افزار که توسط یک محقق امنیتی ساخته شده بود به عنوان یک زنگ خطر برای جامعه چقدر atrociously اجرا برخی از مکانیسم های تأیید هویت در وب سایت بود. بنابراین برای برخی از زمان، فیس بوک تقریبا به طور کامل بر روی HTTP، هیچ HTTPS بود. و حتی اگر شما هیچ ایده رمزنگاری چگونه کار می کند، S امن است پس از آن به معنای حداقل برخی از رمزگذاری درگیر وجود دارد. فیس بوک به رمز در آوردن نام کاربری و کلمه عبور استفاده می شود انجام داد، اما به محض این که شما خود را در نگاه pokes و یا پیام های خود و یا خبر خود را، تمام که شد تکه تکه کردن. تا جیمیل تا زمانی که فقط یک یا 2 سال پیش بود. هر بار که شما وارد سایت نشده اید، بله، آنها با استفاده از رمزگذاری امن، اما پس از آن آنها نیست. و به همین دلیل ممکن است که خواهد بود؟ چرا نه فقط استفاده از رمزنگاری از آن زمان در مورد استفاده شبیه به این؟ که چیست؟ من فکر می کنم که من شنیده ام چیزی. [دانشجو] سرعت. سرعت، درست است؟ در اطراف این راه وجود دارد. اما اگر شما فقط به نوعی در مورد آن فکر می کنم منطقی، اگر چیزی است که شما رمزگذاری، شما را مجبور به انجام حداقل یک کمی بیشتر کار. در pset 2 هنگامی که شما اجرا سزار یا Vigenere و یا حتی کرک فقط چاپ یک رشته نسبتا آسان است. رمزگذاری و پس از آن چاپ یک رشته با حداقل نیاز به کار کمی بیشتر است.  برای وب سایت های فوق العاده محبوب مانند گوگل و فیس بوک، اگر شما را مجبور به انجام کار بیشتر برای هر کاربر برای هر صفحه وب آنها مراجعه کنید، که فقط طول می کشد زمان بیشتری CPU. و اگر شما نیاز به زمان بیشتری CPU، شما ممکن است سرور بیشتری نیاز دارند، به این معنی است که شما ممکن است به پول بیشتری نیاز دارند. و به این ترتیب برای سالهای زیادی این واقعا بهترین شیوه نیست. مردم رمزگذاری SSL تنها زمانی که آنها نیاز به استفاده کنید. اما معلوم شد که این شخص با Firesheep فوق العاده روشن، زمانی که شما بچه ها که در حال حاضر در فیس بوک در حال حاضر - از روی کنجکاوی، بیایید ببینید که اگر شما می خواهید FESS. اگر شما را در فیس بوک در حال حاضر در برخی از تب، حتی اگر آن را foregrounded نیست، URL HTTP یا HTTPS شما است؟ [چندگانه دانش آموزان] S. S؟ [خنده] باشه. هر HTTP؟ فقط 1؟ باشه. پس همه ما می توانید حساب کاربری در فیس بوک است که مرد در حال حاضر هک. در اکثر موارد این تبدیل شده است به طور پیش فرض بر روی تبدیل شده است، حداقل در برخی از وب سایت ها است. داستان کوتاه و بلند مدت، اگر ترافیک وب سایت خود را رمزگذاری نمی کند، نه تنها HTML به عقب و جلو در سراسر WiFis تکه تکه کردن، بنابراین چیزهایی مانند کوکی ها را به عقب و جلو در سراسر هوا بدون هر نوع از رمزنگاری. بنابراین اگر شما فقط یک کمی زرنگ و دانا به برنامه نویسی یا یک بیت از گوگلینگ مهارت برای پیدا کردن نرم افزار رایگان است که این، همه شما باید انجام دهید این است که در استارباکس نشسته و یا نشستن در یک فرودگاه که در آن به طور کلی وجود دارد تکه تکه کردن فای یا PHPSESSID: و فقط برای تماشای کلمات کلیدی مثل کوکی چرا که اگر شما زرنگ و دانا فنی به تماشای فای برای همه بیت که جریان در سراسر هوا برای این الگو، بعد از آن شما می توانید که PHPSESSID مرد اتفاق می افتد، به bo8dal و غیره می گویند. و سپس دوباره اگر شما به اندازه کافی از لحاظ تکنیکی زرنگ و دانا و یا از ابزار مناسب، بعد از آن شما می توانید پیکربندی مرورگر خود را برای شروع ارائه است که مهر و موم دست Facebook.com، و فیس بوک رفتن به فرض که شما این است که مرد چرا که همه آنها می دانند این است که به شما نیست بلکه به این است که شما باید این شناسه منحصر به فرد است. بنابراین اگر شما سرقت که شناسه منحصر به فرد است و در حال حاضر آن را به وب سرور را آن گونه که مایلید تغییر دهید، آنها فقط می خواهم به شما خبر آن شخص را نشان می دهد و یا پیام آن شخص و یا pokes. و من در حال حاضر گوگل چگونه به فعال کردن HTTPS برای فیس بوک شاید. اما واقعا به همین سادگی است. و به این ترتیب فیس بوک و گوگل و مانند آن واقعا خوب است در این بدست، اما نگه داشتن چشم از همه بیشتر برای هر وب سایت شما بازدید هایی که HTTP استفاده نمی و نوعی از اطلاعات حساس بر روی آنها، که آیا آن را مالی یا شخصی و یا می خواهم. اگر آنها استفاده نمی کنید، کاملا احتمالا می تواند کوکی ها شبیه به این باشد به راحتی به سرقت رفته و پس از آن جعلی است، و این دقیقا همان چیزی است که Firesheep انجام شده است. شما به یک برنامه نویس نیست. همه شما تا به حال برای انجام یک اتصال به اینترنت، دریافت این ابزار رایگان، و آنچه که آن را انجام دهید این است که شما وارد سیستم شده و سپس آن را به شما نام فیس بوک نشان می دهد هر کس در ساندرز، در این تظاهرات خاص، در اطراف شما و همه شما تا به حال برای انجام این کار با کلیک بر روی نام خود و نرم افزار خودکار این روند خرناس که کوکی، ارائه آن را به فیس بوک را آن گونه که مایلید تغییر دهید، voila، شما وارد سایت شوید. پس این یکی دیگر از کسانی که رسما "این کار را انجام نمی کنند." اگر شما از شبکه خانگی خود را و شما می خواهید به سرهم بندی کردن، با تمام معنی، اما تحقق این عبور از خط در محیط دانشگاه. اما هدف در اینجا این است که واقعا به تاکید چگونه به انجام این کار اما چگونه می توان به دفاع در برابر این نوع از همه چیز. و راه حل بی اهمیت در اینجا، حتی اگر آن را به خودی خود ناقص است، است واقعا کاهش استفاده از سایتهایی را که به HTTPS استفاده نمی دائما در. بنابراین سایت هایی مانند فیس بوک و گوگل به طور فزاینده ای checkbox را انتخاب که در آن شما می توانید انتخاب کردن به این نوع از چیزی، و بانک ها در این سال به دلایل مشابه داشته است. پس فقط کمی از عامل ترس اگر ما می توانیم. اما آن را به طور خلاصه. این است که چگونه یک سرور که به یاد شما. و به محض این که آنها می توانند به یاد داشته باشید که شما، آنها می توانند هر چیزی را در مورد شما به یاد داشته باشید که برنامه نویس در داخل این superglobal خاص به نام $ _SESSION ذخیره می شود. و برای pset 7 ما آن را با استفاده از جزئیات فقط به یاد داشته باشید بین المللی، یعنی ID منحصر به فرد از کاربر که در سیستم وارد شده، به طوری که ما می دانیم آنها رو شده است وجود دارد. هر گونه سؤال و سپس در جلسه ها یا کوکی ها و یا مانند؟ Firesheep کار نمی کند و همچنین دیگر، و شما را مجبور به قرار دادن کامپیوتر شما را به یک حالت بی قاعده خاص بنابراین شما در واقع برای ترافیک علاوه بر خودتان گوش دادن. بنابراین اگر شما در حال دانلود Firesheep، تحقق بخشیدن به آن را کاملا به عنوان آسان آن را به عنوان یک بار بود برای نشان دادن. بسیار خوب. و آن را در سندرز نمی کنند. انجام این کار در صفحه اصلی است. پایگاه داده ها. یکی از چیزهایی که ما در pset 7 خیلی به عمد ما به شما یک نمونه جدول پایگاه داده را برای کاربران است که برخی از شناسه کاربر، برخی از نام کاربر، و برخی از کلمات عبور رمز شده در آن. و همانطور که خواهید دید، اگر شما در حال حاضر نیست، شما در حال رفتن به جدول به تغییر کمی است. شما در حال رفتن به برخی از Cache را به منظور اضافه کردن به هر یک از کاربران در آن جدول، و شما در حال رفتن به یکی دیگر از جدول تاریخ، برای اضافه کردن یک جدول پرتفوی، یا شاید چیز دیگری تماس بگیرید. اما در فکر کردن در مورد چگونه به انجام این کار، اجازه باز کردن این ابزار که ما آن را در روز جمعه استفاده می شود، اما اگر ناآشنا باشند، این دستگاه همراه با یک ابزار به نام phpMyAdmin به است که اتفاقا در پی اچ پی نوشته شده است، اما هدف خود را در زندگی، پس از من در اینجا به عنوان jharvard ورود به سیستم با زرشکی، کاربر پسند از راه مشاهده و تغییر پایگاه داده من به من می دهد. پایگاه داده است که من در حال اجرا بر روی دستگاه خروجی زیر نامیده می شود. این بسیار محبوب است، و آن را رایگان پایگاه داده منبع باز است که زیبا و آسان برای استفاده است، به خصوص با جلو به پایان می رسد مثل این. چه این ابزار به من اجازه می دهد برای انجام این کار، به عنوان مثال، فشار با نوک انگشت اطراف جداول. اجازه بدهید من به جلو بروید و این کار. روز جمعه ما ایجاد یک جدول به نام دانش آموزانی که ساده و فوق العاده بود. این 3 ستون - شناسه، نام، ایمیل و ها - و من دستی قرار داده شده یک زن و شوهر از ردیف مانند دیوید و مایک در این مثال خاص است. بیایید این بیت بیشتر، و اجازه دهید فرض کنیم که ما می خواهیم به خاطر داشته باشید فقط نام و ایمیل در مورد یک کاربر. ساختار اینجا کلیک کنید تا در اینجا در بالای صفحه. و دوباره، pset شما را قدم به قدم از طریق مراحل لازمه در اینجا، پس نگران نباشید اگر مقداری از این است که کمی سریع است. سپس من قصد دارم با کلیک بر روی اینجا. من قصد دارم به اضافه کردن برخی از تعداد ستون ها بعد از ایمیل چون من می خواهم برای اضافه کردن به چیزی شبیه به خانه. من را فراموش کرده به ضبط خانه یک دانش آموز است. اجازه دهید کلیک کنید، و در حال حاضر ما به این شکل است که متاسفانه کمی گسترده ای از چپ به راست، اما من قصد دارم به نام از خانه این زمینه تماس بگیرید. و پس از آن نوع را انتخاب کنید. پس اجازه چت مختصری در مورد انواع مختلف در MySQL زیرا در حالی که PHP است ضعیف تایپ و آن را مرتب سازی بر اساس نمایشنامه های سریع و با انواع شل، در یک پایگاه داده به خصوص این مهم است که فوق العاده در واقع استفاده از تایپ کردن را به نفع خود چرا که یکی از خروجی زیر همه چیز و دیگر موتورهای پایگاه داده می تواند برای شما انجام دهد اطمینان حاصل شود که شما داده های ساختگی را به پایگاه داده خود قرار داده است. این نوع از خطا چک کردن در دسترس شما است. خانه ما بدیهی است که نمی خواهید آن بین المللی است، که یک مقدار 32 بیتی در MySQL به. آیا این بحث به طور خلاصه در روز جمعه در مورد VARCHAR، که مخفف طول متغیر کاراکتر. این چیست؟ این به شما اجازه می دهد تا مشخص کنید که می خواهید این را به رشته ای از برخی از مرتب کردن بر اساس. شما در پیشبرد چه مدت آن است که واقعا نمی دانند، بنابراین ما خودسرانه به نام خانه می تواند 255 حرف می گویند. اما شما می توانید با 32، 64 - واقعا هر تعداد. اما مزیت استفاده از VARCHAR بیش از یک فیلد به نام کاراکتر چیست؟ اگر من فقط به طور مستقیم در پایین حرکت کنید در اینجا، توجه داشته باشید که کاراکتر وجود دارد و VARCHAR وجود دارد. VARCHAR طول متغیر کاراکتر، کاراکتر یک طول ثابت کاراکتر است. بنابراین تنها در آن تعریف شده است، مزیت یا ضرر هر یک از این چه؟ به عبارت دیگر، که مراقبت در مورد تمایز، و یا چرا باید از شما مراقبت؟ آره. [دانشجوی] VARCHAR دارای انعطاف پذیری بیشتری است اما طول می کشد تا حافظه بیشتر است. خوب است. VARCHAR طول می کشد تا - اجازه دهید را ببینید. من مطمئن هستم که اگر من شنیده ام که حق نیست. که یک بار دیگر به شما می گویند؟ [دانشجو] من گفت VARCHAR احتمالا دارای انعطاف پذیری بیشتری است، اما طول می کشد تا حافظه بیشتر است. جالب است. باشه. VARCHAR احتمالا به شما انعطاف پذیری بیشتری می دهد، اما طول می کشد تا به حافظه بیشتری است. دومی لزوما درست نیست. آن را در چهار چوب بستگی دارد، اما اجازه دهید به دست می آید به آن است. [پاسخ دانش آموز نامفهوم] دقیقا. در واقع این مورد که کاراکتر به طور معمول استفاده از حافظه بیشتر زیرا یک کاراکتر، مانند C، است، آن را مانند یک رشته آرایه ای از کاراکتر ها است. بنابراین اگر شما می گویند که یک رشته کاراکتر طول 255، پایگاه داده است که به معنای واقعی کلمه به شما 255 کاراکتر را. و اگر خانه به پایان می رسد تا مدر و 6 کاراکتر در کل، شما در حال هدر رفتن بیش از 200 کاراکتر است. بنابراین VARCHAR به طور موثر تنها به عنوان شخصیت های بسیاری استفاده می کند که لازم است به یک مقدار حداکثر است. اما قیمت به شما پرداخت شده است که در واقع عملکرد، به طور بالقوه است. اگر شما در پیشبرد دانم که تمام رشته های خود را در حال رفتن به 8 کاراکتر - به عنوان مثال، فرض کنید که شما نیاز به کلمه عبور در طول 8 - حرکت صعودی با استفاده از یک رشته کاراکتر در مناسبت، هر چند اغلب، برای تعیین طول ثابت برای چیزی شبیه به یک رمز عبور زیرا در حال حاضر این بانک اطلاعاتی می تواند حتی دقیق. اگر آن را می داند که هر رشته کاراکتر، هر رشته در یک ستون به طول یکسان است، شما می توانید از ویژگی های با دسترسی تصادفی است. پرش در اطراف شما می توانید در زمینه های مختلف کاراکتر در جدول پایگاه داده خود را زیرا از یک پایگاه داده به عنوان سطر و ستون ها فکر می کنم. بنابراین اگر هر یک از رشته های با طول یکسان است، شما می دانید که یکی از اولین در BYTE 0، بعدی این است که در بایت 8 و سپس به 16 و سپس 24 و غیره. بنابراین اگر تمام رشته ها با طول یکسان هستند، شما می توانید پرش در اطراف خیلی بیشتر موثر است. طوری که می تواند سود از نظر عملکرد، اما به طور معمول شما لوکس دانستن در پیش ندارد، بنابراین VARCHAR راه رفتن است. در اینجا یکی دیگر از جزئیات است که حتی فیس بوک را به سرانجام فرار. نوع داده int هستند، و ما مرتب کردن بر اساس استفاده از آنها به طور پیش فرض هر زمان که ما می خواهیم یک عدد، اما آن را فقط 32 بیت است. حتی اگر فیس بوک کاملا 4 میلیارد کاربر در حال حاضر، قطعا برخی از مردم خارج وجود دارد وجود دارد با چندین حساب یا حساب هایی که باز شده است و پس از آن بسته است، و به همین ترتیب فیس بوک خود من اعتقاد دارم که چند سال پیش برای انتقال از نوع int به، آنگونه که نامیده می شود، bigint است که تنها 64 بیت به جای. پس این هم یک تصمیم گیری طراحی شده است. شما شگفت آور خوش شانس خواهد بود اگر پروژه نهایی خود را راه اندازی تبدیل می شود، 4 میلیارد و 1 کاربر، دادن و یا گرفتن، که در این صورت با استفاده از نوع داده int ممکن است کمی کوته بینانه است. اما در واقعیت، جدول کاربران شما احتمالا خوب با نوع داده int است. اما برای چیزی مانند pset 7، مانند جدول تاریخ خود را، شما ممکن است هزاران، میلیون ها نفر از کاربران اگر شما به etrade.com تکامل داشته باشد. بنابراین در حالی که شما ممکن است بیش از 4 میلیارد کاربر را نداشته باشند، آن دسته از کاربران دارید، ممکن است بیش از 4 میلیارد معاملات در طول زمان - خرید و فروش و چیزهایی در تاریخ خود است. بنابراین اگر شما پیش بینی - باز هم، این مشکلات خوب است که اگر شما این اطلاعات بسیار - اگر شما پیش بینی داده ها بیش از اندازه از بین المللی، رفتن با چیزی شبیه به bigint جهت طراحان اغلب کافی نیست به تصویب رسید از آنجا که شکل مردم که نمی شود یک مشکل، اما این آسان است به چیزی بزرگتر از آن را انتخاب کنید. دهدهی ما در حال استفاده در pset 7، که دقت ثابت را مشخص می بنابراین شما می توانید مسائل مربوط به شناور و دو برابر و ترتیب reals و مانند آن اجتناب کنند. و پس از آن در برخی از زمینه های دیگر در اینجا وجود دارد. خواهیم دست خود را در آنها تا حدی موج. اما تاریخ، زمان فرمت مقرر در خروجی زیر، و استفاده از خرما ذخیره به عنوان تاریخ و نوع متغیر varchar نیست این بدان معنی است که پایگاه داده در واقع می توانید آنها را دوباره فرمت را به فرمت های مختلف، آیا یک فرمت و یا فرمت های اروپایی و یا مانند آن - با این حال شما آن را می خواهم - بسیار موثر تر از اگر آن را تنها برخی VARCHAR عمومی. و پس از آن برخی از باینری دیگر، VARBINARY، حباب وجود دارد. این دوتایی اشیاء بزرگ، و شما همچنین می توانید به ذخیره سازی داده های باینری و همچنین به عنوان داده های هندسی در یک پایگاه داده است. اما ما معمولا در مورد نوع داده int و نوع متغیر varchar و مانند مراقبت. اجازه بدهید پایان این مثال با خانه. خانه من قصد دارم به خودسرانه می گویند 255 کاراکتر. سپس مقدار پیش فرض ما می توانیم این کار را انجام دهند. ما می توانیم از هر کس که به طور پیش فرض در ماتر مجلس قرار داده است، به عنوان مثال. که چگونه ما می تواند مشخص است که پایگاه داده باید اطمینان حاصل شود که کسی که همواره یک ارزش است. اما من ترک می شود که. در واقع، برای افرادی که زندگی می کنند در خارج از محوطه دانشگاه، و نه در خانه، شاید من در واقع می خواهید مشخص کنید که مقدار پیش فرض برای خانه NULL، و پس از آن من نیاز به این جعبه و به پایگاه داده از آن اشکالی ندارد، اگر خانه کاربر NULL است. باز هم، این یکی دیگر از مکانیسم دفاعی شما می تواند در جای خود قرار داده است بنابراین شما حتی نمی باید آن را در کد PHP خود را قرار داده است لزوما. پایگاه داده اطمینان حاصل شود که همه چیز است و یا تهی نیست. و پس از آن در نهایت، ویژگی ها است. هیچ کدام از اینها واقعا مربوطه است. دودویی بدون علامت - هیچ یک از آن ها مربوط به VARCHAR. صفحه اول. آیا هر کسی می دانم و یا به یاد داشته باشید و یا حدس به عنوان شاخص چیزی شبیه به خانه؟ این نیز است که در واقع یک تصمیم مهم و نسبتا آسان طراحی. برای کسانی که هنوز رتبهدهی نشده است دیده می شود، در روز جمعه ما به طور خلاصه در مورد کلیدهای اصلی صحبت کردیم. کلید اصلی در یک جدول پایگاه داده، زمینه و یا ستون است که منحصر به فرد شناسایی ردیف در جدول. پس در جدول در حال حاضر ما باید شناسه، نام و ایمیل. کدام یک از کسانی که بهترین نامزد را به عنوان یک کلید اصلی است. نقش که منحصر به فرد شناسایی ردیف؟ احتمالا ID. مسلما، ما نیز که می تواند هر چند استفاده کنید؟ شاید شما می توانید ایمیل را به دلیل در تئوری آن را منحصر به فرد استفاده کنید مگر اینکه مردم به به اشتراک گذاری حساب های ایمیل. اما واقعیت این است که اگر شما در حال استفاده از یک ID عددی مانند 1234، که تنها 32 بیت، در حالی که یک آدرس ایمیل می تواند از این کلمه در ادامه متن و یا بسیاری از این بایت های بسیاری است. بنابراین از نظر بهره وری برای شناسههای منحصر به فرد، آن را به سمت عمل خوب بین المللی به استفاده از حتی اگر شما باید برخی از رشته نامزد که شما مسلما می تواند از آن استفاده کنید. برای چیزی شبیه به خانه، این نه باید یک کلید اصلی زیرا در این صورت تنها 1 نفر می تواند زندگی در ماتر و 1 نفر در چرخمساز و مانند آن. به همین ترتیب، این نباید منحصر به فرد. تفاوت بین اصلی و منحصر به فرد این است که در مورد جدول فعلی ما است، ID خواهد بود اولیه است اما ایمیل اولیه به این دلیل که ما تنها به ذکر نیست - عملکرد - اما آن را هنوز هم باید منحصر به فرد باشد. بنابراین شما هنوز هم می تواند منحصر به فرد بدون اینکه این ادعا اجرای که آن را فوق العاده مهم رشته اصلی است. اما این یکی بسیار مفید: شاخص است. اگر شما در پیشبرد پروژه نهایی خود را می دانید، برای pset 7، و یا به طور کلی، که این خانه مزرعه است برای رفتن به چیزی است که شما بر روی تعداد زیادی جستجو با استفاده از کلمه کلیدی انتخاب و یا چیز دیگری، پس از آن شما به preemptively می تواند بانک اطلاعاتی سحر و جادو خود را به کار بگویید و مطمئن شوید که آن را در حافظه ایجاد هر گونه ساختار داده فانتزی لازم برای تسریع جستجو بر اساس خانه. شاید آن را به یک جدول هش استفاده کنید، شاید آن را به یک لیست پیوندی استفاده کنید. در واقع، این امر منجر به استفاده از یک درخت، اغلب یک ساختار به نام درخت B - درخت اما درخت B - که یک درخت بسیار گسترده است که شما ممکن است در یک کلاس مانند CS124، کلاس ساختارهای داده را ببینید. اما در کوتاه مدت، شما لازم نیست که به نگرانی در مورد که در هنگام استفاده از نرم افزار پایگاه داده های هوشمند. شما فقط می توانید آن را بگویید، "شاخص این زمینه، بنابراین من می تواند بر روی آن بیشتر موثر است." اگر شما را ترک کردن و شما سعی می کنید برای هر کس که در پایگاه داده است که در ماتر زندگی می کند، آن را به جستجوی خطی واگذاردن. و اگر شما 6000 دانشجویان دوره لیسانس همه موجودات زنده در برخی از خانه، شما در حال رفتن به جستجوی کل جدول را برای پیدا کردن Matherites، در حالی که اگر به شما می گویند اول، امیدوارم از آن خواهد بود چیزی نزدیک به یک جستجوی لگاریتمی برای پیدا کردن این نوع از دانش آموزان است. این فقط یکی از ویژگی های آزاد به نوبه خود بر روی، حتی اگر در قیمت برخی از مقدار فضای آمده است. در نهایت، افزایش خودکار، این زمینه AI، که فقط به این معنی است که اگر آن را از نوع int است و شما نمی خواهید به مراقبت از آن را به خودتان افزایش هر بار یک کاربر جدید وجود دارد، بررسی کنید که و هر کاربر قرار داده می شود که به طور خودکار یک ID جدید را دریافت کنید. بیایید ذخیره را کلیک کنید، و در حال حاضر اجازه دهید پیدا کردن خطا و با این طرح است. اگر من به مرور، توجه کنید که هر دو مایک و خانه من است NULL بروید. من می توانم phpMyAdmin به ویرایش این دستی استفاده کنید. من می توانم در اینجا و به نوع در ماتر و سپس Enter را فشار دهید. و در حال حاضر در جدول متفاوت است اطلاع می دهد. اما متوجه می تواند چیز دیگری نیز هست. 1 ID دیوید است، بنابراین phpMyAdmin به دوباره است فقط یک ابزار مدیریتی است؛ این چیزی است که کاربران خود را در حال رفتن به دیدن نمی باشد. بنابراین اگر من به جای زبانه SQL تا بالا کلیک کنید - و دوباره، pset 7 شما را به بیش از این نمایش داده شد معرفی - من دستی می تواند ساختار دستور زبان پرس و جو SQL اجرا کاربران تکمیلی خانه = 'Pfoho' WHERE ID = 1. این پرس و جو های SQL هستند، به سادگی به اندازه کافی، کاملا قابل خواندن از چپ به راست است. به روز رسانی جدول کاربران، مجموعه ای از میدان به نام خانه Pfoho که در آن ID کاربر 1 است. یا من حتی می تواند انجام دهد که در آن ایمیل = 'malan@harvard.edu'. تا زمانی که منحصر به فرد من را شناسایی، که به کار نیز هست. اما ID گرایش به عملکرد بالاتر، به طوری که انجام این کار بگذارید. بیایید برو کلیک کنید. خوب، lecture.users وجود ندارد. خطای من چه خبر؟ جدول در واقع به نام اینجا چه خبر؟ آن را به نام دانش آموزان فقط به خاطر این است که آنچه که ما در اینجا در بالا سمت چپ. آن را به نام دانشجویان، کاربران نمی شده است. بنابراین در حال حاضر برو کلیک کنید. 1 سطر متاثر می شود. پرس و جو و جو در زمان 0.01 ثانیه صورت گرفت. اگر من در حال حاضر مرور را کلیک کنید، در حال حاضر زندگی مالان در Pfoho. به طوری که یکی دیگر از طعم SQL، اما pset شما را از طریق یک کمی بیشتر از آن راه رفتن است. یک تصمیم احمقانه من در اینجا در حال حاضر ساخته شده است وجود دارد. من استدلال می کنند که این طراحی پایگاه داده ناکارآمد است زیرا مردم بیشتر اضافه کردن به جدول دانش آموزان، بیشتر از ما من شروع به اضافه کردن، بیشتر از TFS من شروع به اضافه کردن، ما در حال رفتن به شروع به دیدن آنچه در این جدول اضافی؟ آره. [دانشجو] دیدن است که آن را در دانش آموزان، ما با استفاده از همان [نامفهوم] همان - راست، دقیقا. بنابراین اگر 400 نفر را در ماتر زندگی می کنند، دادن و یا گرفتن، در نهایت این جدول به 400 ردیف است که می گویند: "مادر"، "ماتر" "ماتر"، "مادر"، "مادر". ما در حال هدر رفتن تمام از این بایت، و زن و شوهر از takeaways وجود دارد. 1، در مورد گوشه ای دیوانه وجود دارد که در آن اگر کسی مقدار زیادی از پول را می پردازد و ماتر تغییر نام، ما در حال حاضر مجبور به تغییر جدول پایگاه داده ما تمام است. که قصد ندارم به اغلب اتفاق می افتد، هر چند Pfoho یک بار به نام خانه شمالی بود 15 سال پیش، پس از آن اتفاق می افتد. اما این همه که قانع کننده نیست. قانع کننده تر از مورد گوشه ای می خواهم که از نیاز به به روز رسانی داده ها را به صورت فله برای یک پایگاه داده است که چرا به شما ذخیره ماتر دوباره و دوباره و دوباره و دوباره؟ که تعداد زیادی از کاراکتر ها، 6 کاراکتر. نمی توانم کار می کنیم و حتی بهتر از آن، به ویژه برای Pforzheimer؟ مطمئنا ما می توانیم انجام دهیم بهتر از آن است که بسیاری از شخصیت های. چرا نه تنها یک شناسه منحصر به فرد با هر یک از این خانه ها مرتبط و ذخیره است که برای هر کاربر؟ بنابراین سعی کنید این اجازه. به جای اینکه فقط با استفاده از جدول دانش آموزان، به من اجازه رفتن را به پایگاه داده سخنرانی من در اینجا در بالا سمت چپ. توجه داشته باشید که در اینجا به آن می گوید: ایجاد جدول است. اجازه بدهید من یک جدول جدید به نام خانه ساخت. تعداد ستون ها می شود 2. را وارد کنید. حالا من 2 زمینه می باشد. من قصد دارم به این نام، و آن را برای رفتن به یک VARCHAR طول 255، اما این کاملا خودسرانه است. اجازه بدهید من قرار دادن این پایین اینجا کنوانسیون. بنابراین ID قرار داده تا در اینجا. اجازه دهید هر خانه یک شناسه منحصر به فرد است. اجازه دهید هر خانه، یک نام است. اجازه دهید مشخص کنید که شناسه بدون علامت فقط با کنوانسیون خواهد بود تنها با استفاده از اعداد مثبت. بیایید پیش بروید و این زمینه را برای افزایش خودکار. و هر چیز دیگری که ما نیاز داریم؟ اجازه دهید به جلو و ذخیره را کلیک کنید. حالا من یک جدول دوم است. توجه داشته باشید که به عنوان یک کنار گذاشته این است که کمی مرموز دستور SQL است که شما را مجبور به تایپ دستی اگر یک ابزار مدیریتی مثل phpMyAdmin به با استفاده از. بنابراین دلیل دیگری که ما از آن استفاده کنید. مرتب سازی بر زیبا و مفید آموزشی به این دلیل است که شما می توانید بر روی اطراف و بفهمند که چگونه همه چیز تنها با کپی و چسباندن چه phpMyAdmin به انجام کار می کنند. اما فرمان جدول ایجاد آن چیزی است که فقط به اعدام شد، و در اینجا جدول. اجازه بدهید من به جلو بروید در حال حاضر و با کلیک کردن بر روی زبانه Insert استفاده از SQL خام به جای ساده است. اجازه دهید به من را به خانه های درج، و من قصد دارم به نام از خانه، رفتن به یک مقدار "ماتر" می گویند. همین. این ترکیب نحوی است کمی بیشتر مرموز. این نام از زمینه ها ما می خواهیم برای وارد کردن است. اینها ارزش های ما می خواهیم به آن زمینه وارد است. اجازه دهید کلیک کنید. 1 ردیف قرار داده و جو در زمان 0.02 ثانیه صورت گرفت. اجازه دهید من در حال حاضر مرور را کلیک کنید. توجه کنید اگر من مرور را کلیک کنید، مدر، که ID اتوماسیون شماره 1 وجود دارد. اجازه دهید من می توانم یکی دیگر. اجازه بدهید به تب SQL بروید. INSERT INTO خانه. نام از خانه رفتن به یک مقدار Pfoho و غیره. برو. و من می توانم به انجام این کار دوباره و دوباره و دوباره. و یا اگر شما بی حوصله و استفاده از phpMyAdmin، شما فقط می توانید زبانه Insert استفاده کنید و نه SQL خام به نوع. به عنوان مثال، شما فقط می توانید آن را به صدای بلند یا محکم با سرعت بیشتری با تایپ چرخمساز، را وارد کنید، و در حال حاضر اگر ما با کلیک بر مرور، چرخمساز وجود دارد با ID 3. بنابراین این چیزی است که ما با خودکار افزایش معنی می باشد. اما در حال حاضر ما باید به حل چیزی در دانش آموزان است. در مورد دانش آموزان چه باید نوع داده از میدان خانه در حال حاضر؟ باید هوشمند، درست است؟ بنابراین هدف در اینجا این است به عامل، در غیر این صورت به عنوان عادی شناخته شده است، جداول به طوری که ما اطلاعات را ذخیره نمی redundantly در هر یک از جداول. و دوباره، راه ما در اینجا در حال رفتن به می گویند مدر، مدر، مدر، ماتر، Pfoho، Pfoho، Pfoho، Pfoho، که بسیار کار برکنار شده است در شرایط استفاده از اسراف از کاراکتر ها است. پس به من اجازه رفتن به جلو و تغییر این ساختار کلیک کردن، و به من اجازه رفتن به جلو و چک کردن زمینه خانه، کلیک کنید تغییر، و در حال حاضر من قصد دارم برای تغییر این بین المللی می شود. 255 است دیگر موضوعیت ندارند. اجازه بدهید من بروم جلو و بگویم که خوب است اگر آن را هنوز هم NULL. ذخیره. در حال حاضر دانش آموزان جدول مخدوش شده است با موفقیت، و دوباره متوجه خانه بین المللی است. تا به کنار، چشم پوشی از شماره در داخل پرانتز زمانی که آن را به نوع داده int می آید. این است که به دلایل میراث است. بازگشت به روز هنگامی که شما رابط گرافیکی را نداشته باشند، شما به جای یک محیط خط فرمان، 10 و 11 به ترتیب مشخص شده که چگونه بسیاری از کاراکتر شما باید نشان می دهد در پنجره ترمینال در واقع زمینه را نشان می دهد. تا به چیزی برای انجام با طول بیت زمینه واقعی، بنابراین ما فقط باید نادیده گرفت که در حال حاضر است. حالا من به این جدول است. و اگر دیوید در ماتر زندگی می کند، خانه اش نمی اندازد باید 0، که یک مقدار پیش فرض بین المللی نزدیک به NULL است. او باید در خانه 1 زندگی می کنند. بیایید خودسرانه می گویند که زندگی مایک در Pfoho، بنابراین خانه شماره 2 است. در حال حاضر جدول به نظر می رسد کمی بیشتر مرموز است. اما در نظر گرفتن بهره وری. من در حال حاضر با استفاده از 32 بیت برای شناسایی خانه، که به معنی تنها 1 تعریف استاندارد از خانه من ماتر و Pfoho وجود دارد و آن را در خانه های جدول. پس اگر من می خواهم به حال پاسخ گفتن این جداول، به این ترتیب فکر می کنم. من در اینجا جدول دانش آموزان، و در سمت راست این اعداد، 1 و 2 وجود دارد. 1 است ماتر، 2 Pfoho است. ما باید کسانی که در این جدول است که به نام خانه، 1 و 2 و 3 برای کسانی که 3 خانه است. چیزی که ما در حال حاضر می خواهم به انجام این کار این است که توانایی در کد، PHP و SQL، به گونه پاسخ گفتن این جداول، که در آن اگر این دانش آموزان هستند و این خانه ها، ما می خواهیم به نحوی آنها را ترکیب به طوری که 1 خط با 1، 2 خط با 2، و به طوری که ما می توانیم از شکل که در آن دیوید و جایی که مایک و که در آن هر کس دیگری زندگی می کند. برای انجام این کار ما می توانیم یک پرس و جوی SQL مانند موارد زیر را اجرا کند. SELECT * از دانش آموزان خانه در - و در حال حاضر چه زمینه هایی را که ما می خواهیم برای پیوستن به در؟ بنابراین students.house = houses.id. کمی مرموز است، اما این بخش به معنای به معنای واقعی کلمه، یک میز جدید به طور موقت ایجاد که در نتیجه پیوستن به دانش آموزان و خانه است. و چگونه شما می خواهم به ترکیب راهنمایی از انگشتان دست من در اینجا؟ میدان خانه برابر به خانه دانش آموزان رشته ID تنظیم کنید. و اگر من در حال حاضر را کلیک کنید برو، من دقیقا همان چیزی است که من به امیدوار. دیوید در ماتر، مایک در Pfoho، و من هم دیدن شناسه منحصر به فرد است. اما نکته این است که در حال حاضر من یک جدول کامل. و به این ترتیب غذای آماده در اینجا برای pset 7 یا واقعا برای پروژه نهایی: اگر شما دریابید که شما در حال ذخیره سازی هر تکه از اطلاعات در redundantly، که آیا آن یک خانه، شاید این شهر، ایالتی، و ZIP است که ZIP معمولا اما نه همیشه می تواند به عنوان یک شناسه منحصر به فرد استفاده می شود، نرو از طریق تمرین ذهنی و پس از آن با چیزی شبیه به phpMyAdmin به مقاطعه می کند که داده های مشترک به دلیل به خصوص که وب سایت شما می شود، بیشتر به خوبی استفاده می شود و بیشتر محبوب، این است که چگونه شما می توانید اطمینان حاصل کنید که همه چیز فوق العاده سریع، با دادن پایگاه داده به عنوان بسیاری از نکات منحصر به فرد به عنوان ممکن است. این زیادی بود. هر گونه سؤال؟ بسیار خوب. بیایید نگاهی به یک استراحت 5 دقیقه ای وجود دارد و دوباره. بسیار خوب. در زیر یک مثال است که چند سال پیش مورد استفاده قرار گرفت و وقتی که من در زمان CS161، که سیستم عامل کلاس در کالج است که برای بودن شگفت انگیز شناخته شده است، اما مقدار دیوانه از کار، و آن را متمرکز است واقعا در برخی از مسائل سطح پایین که در سیستم عامل بوجود می آیند و حتی در جهان از پایگاه های داده. داستان که با استاد من، مارگو دار، گفته شد که در آن سال بود که به شرح زیر است. فرض کنید که شما یک یخچال خوابگاه کمی برای شما و هم اتاقی شما و هر دو از شما واقعا مثل شیر. بنابراین شما به خانه از کلاس یک روز، هم اتاقی شما هنوز وجود دارد، شما برای باز کردن در یخچال، و شما متوجه است، "آه، لعنتی، ما از شیر است." بنابراین یخچال را ببندید، شما را در سراسر خیابان راه رفتن به CVS و در خطوط طولانی به برخی از شیر به CVS خرید. در همین حال، هم اتاقی خود را به خانه می آید یا کلاس خود، می آید به اتاق باز می شود، یخچال واقعا مایل مقداری شیر، یخچال باز می شود، و "لعنتی، نه شیر." بنابراین او می بندد یخچال، پیاده می رود از در خارج بشی، و می رود به ABP و یا در جایی از CVS که در آن شما در حال رفتن به یکدیگر برخورد دیگر برای رفتن به گرفتن برخی از شیر. البته چند دقیقه بعد، هر دوی شما به عقب بر گردیم خانه و در حال حاضر شما باید شیر دو بار به همان اندازه که شما در واقع می خواستم. و بودن شیر، در حال حاضر آن را به رفتن به بد دلیل این که شما مثل شیر اما شما واقعا مثل شیر نیست، بنابراین در حال حاضر شما باید شیر بیش از حد، پس از آن رفتن به ترش. این وضعیت افتضاح است، افتضاح است. چه چیزی می تواند به حل این معضل اگر شما اولین خانه هم اتاقی بود؟ بله. [دانشجوی] شما باید توجه داشته باشید. [خنده] خوب است. شما باید توجه داشته باشید. شما باید توجه داشته باشید پس از آن یا مانند گفت، قرار داده است "رفته برای شیر، و پس از آن هم اتاقی خود را مفهومی می شده اند در واقع از انجام آن قفل شده است. یا شما می توانید به پله 1 بیشتر. شما به معنای واقعی کلمه می تواند یخچال و فریزر را با برخی از نوع قفل قفل، و در حال حاضر هم اتاقی خود را به معنای واقعی کلمه از یخچال قفل شده است. اگر ما تعمیم به برنامه نویسی، شما تقریبا می توانید از یخچال به عنوان نوعی از متغیر و یا یک struct فکر می کنم، نوع ظرف برای کسب اطلاعات است. مشکل اساسی در اینجا این است که هر دو شما را به بازرسی اجازه داده شد یا خواندن دولت از این ساختمان داده، اما شما آن را در زمان های مختلف مشاهده شده و در عین حال هر دو از شما، یک تصمیم در مورد وضعیت جهان در آن لحظات مختلف در زمان استوار است. بنابراین شما قفل شده بود یخچال و فریزر، شما می توانید حداقل اجتناب هم اتاقی خود را از داشتن شده است قادر به بازرسی دولت از جهان، بنابراین او نمی توانست این تصمیم همان است. بنابراین پایگاه داده، همانطور که معلوم است، این مشکل به طور مداوم. بیایید ببینیم که اگر ما می توانیم یک سناریو را ساخت. فرض کنید که شما در حال مرتب کردن بر اساس یک پسر بد و شما را به بانک مرکزی آمریکا یا یکی از جاهای دیگر در مربع که دارای یک زن و شوهر در کنار سمت دستگاههای خودپرداز، و به نوعی شما را نمیفهمد چگونه برای کپی کردن یک کارت ATM - که سخت نیست. این فقط یک نوار مغناطیسی است. و بنابراین، آنچه شما می خواهید سعی کنید برای انجام این بازی به موجب آن شما 1 کارت به 1 دستگاه قرار داده است، یکی دیگر از کارت به دستگاه های دیگر، و شما در اصل می خواهید امتحان کنید برای برداشت پول به طور همزمان، زیرا تصور کنید که می رود به شرح زیر است. دستگاه در سمت چپ طول می کشد کارت و PIN خود را، و پس از آن شما می گویند، "من 100 دلار میدهند." ATM است برنامه ریزی برای انجام یک را انتخاب کنید در پایگاه داده و یا معادل آن - هر پایگاه داده از آن با استفاده از - برای دیدن این کاربر نقل قول این ارسال در پاسخ حداقل 100 دلار در یا حساب خود را؟ اگر چنین است، پس از آن تف 100 دلاری و تفریق $ 100، از تعادل خود را. البته اگر دستگاه های متعدد در اینجا وجود دارد و یا راه های متعدد بازرسی دولت از آن جهان، بانک طاق، تا ببینید که چه مقدار پول دارید، فرض کنید که فقط با شانس دستگاه را در سمت چپ و راست هر دو از این سوال در تقریبا همان لحظه در زمان. و این قطعا می تواند رخ دهد. دستگاههای خودپرداز کامپیوتر این روزها. بنابراین اگر دستگاه در سمت چپ می گوید: "بله، شما باید حداقل 100 $ در عین حال دستگاه در سمت راست می گوید: "بله، شما باید حداقل 100 $ سپس هر دو از آنها ادامه برنامه های خود را به پایان برساند و در واقع تف 100 $ و می گویند: «پیش از شما تا به حال 200 دلار بود." "اجازه بده تا متغیر در حال حاضر $ 100 در سمت چپ حساب را به روز رسانی کنم." اما اگر هر دوی آنها دارای مانده حساب خود را بررسی کردند و دریافتند که آن 200 $ و هر دو از آنها و سپس انجام محاسبات ریاضی و می گویند 200 - 100، ماشین آلات بالقوه بیرون تف 2 100 $ صورتحساب در هر دستگاه، اما آنها فقط به روز شده در مجموع تعادل خود را به حساب 100 $ است. به عبارت دیگر، شما در خارج مبلغ 200 دالر بلکه به این دلیل که آنها بازرسی دولت از جهان همزمان و پس از آن تصمیم بر اساس که ارزش، آنها ممکن است ریاضی در نهایت به درستی انجام نمی. بنابراین در شرایط بانکی بیش از حد شما واقعا می خواهید به نوعی از تحریم به طوری که به محض اینکه شما را بررسی کردهاید و دولت برخی از متغیر که واقعا مهم است، مانند مانده حساب خود، اجازه ندهید که هر کس دیگری تصمیم گیری بر اساس آن تا زمانی که شما انجام می شود انجام می دهید، که در این صورت شما ATM در سمت چپ است. قفل هر کس دیگری. در واقع شما می توانید این اثر را در یک زن و شوهر از راه های مختلف دست یابد. ساده ترین راه در MySQL یک خط از SQL است که ما به شما داد در مشخصات مجموعه مشکل است که به نظر می رسد دقیقا مانند این است. درج جدول - هر چه آن را به نام - یک شناسه، یک نماد، و سهم، تعداد سهام، ارزشها، به عنوان مثال. اگر شما تنظیمات را خوانده نشده است، این یک نمونه مربوط به چگونه شما در مورد خرید 10 سهام این سهام پنی برای رئیس جمهور Skroob، شناسه کاربر که اتفاق می افتد و عدد 7 هست؟ این به این می گوید: INSERT INTO جدول زیر ID، علامت اختصاری، و تعداد سهام 7، DVN.V '، و 10. اما - اما، اما، اما - خط دوم مهم است. سهام تکراری UPDATE KEY = سهام + VALUES (سهام). کاملا مرموز به دنبال در نگاه اول است. اما واقعیت این است که این پرس و جو SQL، حتی اگر آن را بر روی 2 خط پایان می رسد، 1 پرسش طولانی است، به این معنی است که آن را اتمی به این معنا که این پرس و جو خواهد شد یا اعدام می شود همه با هم یا نه در همه. و با تعریف خروجی زیر، که چگونه آنها این پرسش را اجرا. تعریف در کتابچه راهنمای تضمین شده برای اجرای همه در یک بار یا نه در همه. انگیزه برای این کار این است که به شرح زیر است. اگر در این حالت شما در حال تلاش برای خرید 10 سهام، این نوع از داستان همان شیر است، آن نوع از داستان همان ATM است. اگر شما به اشتباه از این ترکیب نحوی با استفاده از اما به جای انتخاب از پایگاه داده برای دیدن چگونه بسیاری از سهام این سهام پنی رئیس جمهور Skroob داشته باشد، و فرض کنید او دارای 10 سهام، و پس از آن برخی از قسمتی از ثانیه پس از آن بعد از آن شما بیانیه تکمیلی، که یکی دیگر از بیانیه ای در SQL است که می گوید پیش بروید و برای اضافه کردن 10 بیشتر سهام است تا 10 فعلی خود را به طوری که در حالت ایده آل در کل 20 است، مشکل این است که چون در سیستم های بانک اطلاعاتی امروز و به دلیل در کامپیوترهای امروزی شما باید پردازنده های چندگانه، هسته های چندگانه - به عبارت دیگر، کامپیوتر به معنای واقعی کلمه می تواند انجام شود چیزهای متعدد در یک بار - هیچ تضمینی وجود ندارد که خود را انتخاب کنید و به روز رسانی خود را در این مورد اتفاق خواهد افتاد پشت به پشت. بنابراین یک سناریوی بد خواهد بود که شما باید انجام دهید را انتخاب کنید برای دیدن چگونه بسیاری از سهام این سهام پنی کند Skroob، و سپس فقط با شانس یکی دیگر از پایگاه داده پرس و جو اجرا شده است - شاید Skroob خود را در پنجره مرورگر دیگر تلاش برای خرید 10 سهام در پنجره دیگری در دسترس نباشد، بسیار شبیه به ATM - و فرض کنید که یکی دیگر از پرس و جو می شود در بین را انتخاب کنید و به روز رسانی است. این می تواند مورد که Skroob در حال حاضر برخی از تعدادی از سهام را از دست می دهد چرا که یکی دیگر از فرایند بازرسی دولت از جهان خود، یا او می شود سهام بیش از او باید. ما نمی خواهد به خاص دقیقا همان چیزی است که آن دسته از خطوط داستان خاص خواهد بود. اما نکته این است که اگر شما به بررسی مقدار متغیر و سپس اتخاذ یک تصمیم، اگر خطر از شخص دیگری انجام کاری در بین کسانی که 2 اظهارات وجود دارد، به عنوان می تواند در سیستم های چند اتفاق می افتد، در چند سیستم، کامپیوتر با توانایی به انجام کارهای متعدد در یک بار، همه چیز بد می تواند رخ دهد مثل حساب های بانکی که بدهکار اشتباه است، خرید شیر دوبرابر، و یا در این مورد اشتباه از سهام است. اما یک راه ساده تر به فکر می کنم در این مورد وجود دارد. معلوم می شود که SQL هم پشتیبانی کند، اگر جدول شما را پیکربندی درستی، در واقع چیزی به نام معاملات، که می خواهم بگویم این است حتی ساده تر به درک از این، اما آن را به 1-بوش نیست، به طوری که آن را در واقع کمی بیشتر درگیر. بیانیه ای در SQL به نام START معامله به معنای واقعی کلمه وجود دارد. درست مثل SELECT، UPDATE، INSERT، DELETE، و پیوستن به وجود دارد و یک دسته از دیگران، کلمات کلیدی مانند معامله START وجود دارد. و آنچه که بعد از آن شما در زمینه از pset 7 - شما لازم نیست که برای انجام این کار برای pset 7، آن ​​را به صراحت به عنوان ضروری نیست رد، اما برای پروژه نهایی می تواند مفید باشد - اگر شما به پرس و جو از معامله START و پس از آن دیگر پرس و جو و پس از آن دیگر پرس و جو و پس از آن دیگر، دیگری، و دیگری، کسانی که نمایش داده شد در واقع اعدام نخواهد شد تا زمانی که با شما تماس بیانیه SQL متعهد، که در آن نقطه، که آیا آن را به 2 بیانیه یا 20 اظهارات، آنها تمام خواهد اعدام شود در یک بار، که بدان معنی است که هیچ کس دیگری به طور تصادفی می تواند خرید شیر بیش از حد یا بیش از حد پول بدهی و یا خرید سهام بیش از حد بسیاری به خاطر پرس و جو خود را اجرا خواهد کرد پشت به پشت به پشت به پشت. و این فوق العاده مهم است، به ویژه هنگامی که شما در حال انجام چیزی شبیه به این. این یک نمونه خودسرانه است که می گوید: بیایید به روز رسانی حساب بانکی است با تنظیم یک تعادل به تعادل - 1000 $ که در آن شماره حساب 2 برابر است. و پس از آن بیانیه دوم در حال حاضر واریز که 1000 $ به شخص دیگری حساب بانکی که شماره حساب است: 1. به عبارت دیگر، این یک مثال کامل که در آن شما می خواهید مطمئن شوید که که هر دو از این اظهارات اتفاق می افتد یا نه در همه چرا که در غیر این صورت مشتری رفتن به پیچ و شما در حال رفتن به گرفتن پول خود را و رسوب آن در جاهای دیگر، و یا بانک در حال رفتن به پیچ که در آن شما در حال رفتن به واریز پول اما در واقع آن را تفریق از حساب کاربر. بنابراین شما می خواهید هر دو آنها را با هم به اجرا. بنابراین وارد معاملات جهان است. به طوری که چیزی در پشت ذهن خود را برای حفظ، نه چندان زیادی برای اهداف فقط یک پروژه نهایی، اما اگر شما می خواهید برای پروژه نهایی خود را در جایی، اگر شما می خواهید برای راه اندازی برخی از شرکت های اطراف آن، اگر شما می خواهید برای حل مشکل برخی از گروه دانشجویی در محوطه دانشگاه و در واقع، وب سایت فعال و زنده، این نوع از اشکالات ظریف است که می تواند بوجود می آیند اگر شما کاملا فکر می کنم از طریق چه اتفاق می افتاد اگر 2 نفر در حال تلاش برای دسترسی به وب سایت خود را به معنای واقعی کلمه در همان لحظه در زمان، در آن نمایش داده شد خود را در غیر این صورت ممکن است آمیخته دریافت کنید. آماده برای برخی از جاوا اسکریپت، یک تیزر آن؟ این زبان برای ترم است. بسیار خوب. خوشبختانه، جاوا اسکریپت به نظر می رسد بسیار، بسیار، بسیار شبیه به 2 زبان، C و PHP، ما تا کنون انجام داده ام. جاوا اسکریپت در pset 7 وجود دارد، اما آن را به یک ابزار فوق العاده مفید هنگامی که آن را به انجام پروژه های مبتنی بر وب نهایی و یا در واقع فقط وب سایت برنامه نویسی به طور کلی می آید. بنابراین یک مرور سریع از چیزی به نام DOM. اینجا است که یک صفحه وب فوق العاده ساده است که واقعا فقط می گوید: سلام، جهان هم در عنوان و هم در بدن است. به عنوان دندانه دار شده است نشان می دهد برای برخی از زمان، سلسله مراتب به صفحات وب است که در واقع وجود دارد. من می توانم این قطعه را از HTML به عنوان یک درخت رسم، فکر به گذشته و به بحث ما از ساختارهای داده ای در C، به شرح زیر است. من در برخی از گره خاص به نام گره سند، و ما آنالوگ از این در جاوا اسکریپت در یک لحظه را ببینید. فرزند اول و تنها فرزند که در این مورد تگ HTML است. نقشه برداری مستقیم از DOCTYPE وجود دارد. این یک چیز خاص است، بنابراین ما فقط باید آن را نادیده گرفت که آن را به این DOM می آید، این سند مدل شیء درخت. توجه داشته باشید که تگ HTML، که من خودسرانه به عنوان یک مستطیل نشان داده شده، دارای 2 فرزند: سر و بدن است. کسانی که به همین ترتیب به عنوان مستطیل کشیده شده است. این است معنی دار pictorially که سر به سمت چپ بدن است. مفهوم این است که سر می آید برای اولین بار در درخت است. بنابراین در واقع سفارش به یک درخت وجود دارد زمانی که شما آن را رسم مثل این، حتی اگر اشکال و فلان چیز کاملا خودسرانه است. سر در عین حال دارای یک فرزند به نام عنوان، و در واقع به عنوان فرزند خود را، که "سلام جهان" است، که من عمدا به عنوان یک بیضی در اینجا به آن را کمی متفاوت از مستطیل را به خود جلب کرد. این مستطیل، عناصری هستند، در حالی که سلام جهان است که در واقع یک گره متن است. پس از آن یک گره در درخت است، اما آن را یک نوع متفاوت از گره بنابراین من آن را کشید خودسرانه متفاوت است. به همین ترتیب بدن یک کودک به نام سلام، جهان و، خیلی متفاوت گره حتی اگر آنها تصادفا همان متن، اما من آن را با استفاده از همان شکل کشیده شده است. پس چه کسی اهمیت میدهد؟ خوب، چه خوب در مورد HTML این است که آیا این ماهیت سلسله مراتبی است. و چه خوب در مورد جاوا اسکریپت و به ویژه کتابخانه ها که آزادانه در دسترس و محبوب مانند jQuery را، شما می توانید ساختار درختی بطرز شگفت انگیزی آسان حرکت. هر یک از این مسائل ما در C با اشاره گرها و درختان عبور و recursing در گره کودک سمت چپ به فرزند راست، همه به طور ناگهانی ما می توانیم از مرتب کردن را اعطا به عنوان تعالی بخش بودن شگفت آور اگر کمی خسته کننده اما تقریبا کارآمد راه برای رفتن در مورد برنامه نویسی. و به این ترتیب با این زبان سطح بالاتر مانند جاوا اسکریپت ما قادر خواهیم بود برای حرکت این درخت خیلی بیشتر به طور مستقیم. و در واقع شکل است به صورت کاملا آشنا است. اگر شما جاوا اسکریپت را ندیده، این مرجع واقعا خوب است از مردمی موزیلا، کسانی که فایرفاکس، بنابراین احساس رایگان به فهرست آن را در راحتی شما. چه شما - پیدا کردن و این اسلاید یکسان هستند به آنچه که ما با استفاده از روز دیگر - به طور مشابه، اصلی از بین رفته است. بنابراین، هنگامی که شما در نوشتن یک برنامه در جاوا اسکریپت است، هیچ عملکرد اصلی وجود دارد. شما فقط شروع به نوشتن کد. اما یک تفاوت کلیدی بین جاوا و C و PHP این است که در حالی که C و PHP تا کنون اعدام شده اند سمت سرور لوازم خانگی در این مورد و یا به طور کلی از طریق یک سرور، جاوا اسکریپت توسط طراحی است که معمولا توسط یک مرورگر اجرا شده است. به عبارت دیگر، شما ممکن است کد جاوا اسکریپت، نوشتن به عنوان ما در مورد، بر روی یک سرور در دستگاه است، اما شما آن را نیز در میان HTML خود را، در میان CSS خود را، در میان های gif و PNGs و عکس JPEG شما به طوری که زمانی که کاربر صفحه وب خود را بار مشاهده شده است، اگر شما با استفاده از جاوا اسکریپت، که کد جاوا اسکریپت از سرور به مرورگر می آید، و آن را به مرورگر است که به واقع آن را اجرا. بنابراین این نتایج معنی دار برای اموال حتی معنوی است. این نوع احمقانه است که حتی در مورد حفاظت از آی پی شما فکر می کنم که آن را به کد جاوا اسکریپت می آید به دلیل ماهیت زبان می شود اعدام معمولا سمت مرورگر است. شما می توانید آن را مبهم و تاریک کردن به این معنی است که شما می توانید آن را نگاه دیوانه و زشت با هیچ فضای خالی، وحشتناک متغیر نام، آن را به سخت تر برای مردم را به سرقت IP خود را، اما مهم این است که آن را به طرف مرورگر اجرا شده است. حتی اگر به عنوان یک سمت سرور را کنار گذاشته جاوا اسکریپت را می توان مورد استفاده قرار گیرد، رایج ترین مورد استفاده از حق در حال حاضر هنوز هم بر روی مرورگر است. و در اینجا چیزی است که آن را مانند به نظر می رسد. در اینجا است که اگر اگر دیگری دیگری درست مانند C ساخت، درست مثل PHP. در اینجا است که یک عبارت بولی زمانی که شما "و یا" 2 چیز با هم. در اینجا این است که هنگامی که شما "و" 2 چیز با هم. در اینجا است که یک بیانیه سوئیچ، که شبیه به PHP که در آن شما می توانید بر روی انواع مختلف از ارزش ها را تغییر دهید. حلقه ها به همین ترتیب برای حلقه ها را در اینجا، که عینا چیزی است که ما را دیده ام قبل از ساختار است. در حالی که حلقه ایم در حالی که حلقه را کردم. متغیرها، همیشه کمی متفاوت است. شما اعلام متغیر مانند شما در PHP و C انجام می دهید، اما به طور مشابه جاوا اسکریپت تایپ ضعیف است. شما بین المللی و یا شناور و یا رشته یا هر چیزی که معمولا مشخص نیست. شما می توانید مشخص کنید VAR. شما لازم نیست که برای مشخص VAR، اما آن را تا به پیامدهای اگر اینکار را نکنید. معمولا اگر شما حذف VAR، شما به طور تصادفی یک متغیر جهانی به جای محلی را ایجاد کنید. بنابراین من پیشنهاد اجازه دهید که شما تقریبا همیشه فقط می گویند VAR و سپس نام متغیر است. این یک نوع نیست، آن را فقط برای متغیر VAR. این امر می تواند به عنوان مثال، که آیا آن را به 123 یا "سلام جهان" است. آرایه ها در حال حاضر و به نحوی شبیه به PHP است. من شماره های VAR و می گویند و سپس براکت دوباره من با استفاده از یک متغیر برای اعلام که نوع آرایه است که این اعداد خاص در آن از هم جدا شده توسط کاما. و پس از آن در نهایت، این یکی که واقعا به نظر می رسد متفاوت است. به یاد بیاورید که در PHP آرایه ای انجمنی برای یک دانش آموز اجرا مانند Zamyla که ممکن است شبیه به این، که متغیر نامیده می شود دانش آموز است. براکت در اینجا یک آرایه می آید. واقعیت این است که من شاخص ها اما رشته های عددی با استفاده از - آیدی، خانه، و نام - این بدان معنی است که این یک آرایه انجمنی، و این پیکان با علامت مساوی و براکت زاویه دار این بدان معنی است که مهم این است که "ID"، مقدار 1 است؛ مهم این است که "خانه"، ارزش وینتروپ خانه است؛ مهم این است که "نام"، مقدار Zamyla چان است. بنابراین این 3 کلید را داخل این آرایه های انجمنی، که هر کدام دارای ارزش خاص خود را وجود دارد. ما که در pset 7، و یا شما به زودی، در ایده جاوا اسکریپت مشابه، دیده می شود اما آن را شبیه به این. تا دانش آموز VAR - هیچ نشانه دلار و هیچ اشاره ای به نوع هنوز اما VAR - برابر و سپس باز کردن آکولاد به دلیل در جاوا اسکریپت زمانی که شما جفت ارزش کلیدی، شما در واقع چیزی به نام یک شی استفاده کنید. و کسانی از شما که را APCS یا ممکن است اشیاء از جاوا به یاد یا مشابه آن زبان است. جاوا اسکریپت جاوا، اول از همه. این بود که سال پیش تصمیم آگاهانه برای دست کشیدن چیز دیگری بود که محبوب، نام خود را، حتی اگر هیچ رابطه اساسی را به خود جاوا است. جاوا اسکریپت اشیاء، و شما آنها را ایجاد راه نماد بریس فرفری. اشیا در جاوا اسکریپت، تقریبا به آرایه های انجمنی در PHP معادل زمانی که آن را به ذخیره سازی داده ها در داخل از آنها می آید. اما حتی با قدرت در جاوا اسکریپت می تواند شما را مرتبط به راحتی توابع در داخل یک شی، و اگر چه شما می توانید این کار را در زبان های دیگر انجام دهید، این کاملا یک الگوی مشترک است، که خواهیم دید. به طور خلاصه، این شیء نشان دهنده یک دانش آموز، که خصوص Zamyla است، و این شبیه مفهومی، به نحوی متفاوت از این است. اجازه دهید در واقع استفاده از جاوا اسکریپت در یک فایل. به نظر می رسد از یک تگ اسکریپت وجود دارد. برچسب سبک ما دیده ایم و دیده ایم تگ های دیگر HTML است. تگ اسکریپت در واقع برخی از کد جاوا اسکریپت باشد. اجازه بدهید من به لوازم خانگی که در آن ما برخی از کد منبع از پیش ساخته شده. من آن را ارسال شده نشده است در وب سایت، اما من بعد از کلاس انجام دهد. اجازه دهید باز کردن این یکی، blink.html. در 1990s، به معنای واقعی کلمه وجود دارد یک تگ HTML به نام تگ چشمک زدن، و این یکی از زیبا بیش از حد مورد استفاده ترین برچسب ها را بر روی اینترنت به موجب آن شما می خواهم برخی از سال 1990s سبک صفحه وب و مشاهده شروع به دیدن متن چشمک زن شما مثل این، برچسب مارکی که متن مثل این رفتن بود. یکی از چند بار که در آن جهان است در واقع توافق بر روی یک استاندارد وب، هر کس در سراسر هیئت مدیره کشته تگ چشمک زدن چند سال پیش. اما ما می توانیم آن را با جاوا به عنوان نمایشی از قدرت شما احیا زمانی که شما می توانید یک برنامه را در داخل یک صفحه وب بنویسید. اول صفحه بر روی چیزهای جدید و تمرکز تنها بر روی قدیمی بگذارید. در اینجا این است که چیزهای قدیمی در این مثال است. من یک تگ HTML، تگ head، و یک تگ عنوان. پس من باید یک تگ body در اینجا با یک دیو، که فراخوان فقط یک بخش مستطیل شکل صفحه که من خودسرانه ID منحصر به فرد از "تبریک" را به داده، فقط تا من یک راه منحصر به فرد با اشاره به آن است که برخی از متن بسیار ساده است: خوش آمدید، جهان. در حال حاضر من رفته تا به بالای این فایل و اجازه دهید ببینیم که چه چیزی جدید. اولین چیزی که بالا تا جدید تگ اسکریپت، و به داخل اطلاع اسکریپت برچسب من اعلام یک تابع است. برای تعریف یک تابع در جاوا اسکریپت، خیلی شبیه به PHP، شما به معنای واقعی کلمه تابع ارسال سپس نام تابع، پرانتز، و شاید برخی استدلال اگر آن طول می کشد هر. سپس من به بریس فرفری من به طور معمول، و در حال حاضر ما برخی از کد کمی جدید، اما اجازه دهید ببینیم که چه چیزی این به این معنی است. بنابراین DIV VAR، این حالت فقط بدان معناست که من یک div متغیر نامیده می شود بدهد. من می توانستم آن را به نام صنایع غذایی، اما من می خواستم آن را به نام دیو دلایلی که در یک ثانیه روشن خواهد شد. سپس آن را معلوم در جاوا اسکریپت - و این کد جاوا اسکریپت جاسازی شده در صفحه وب من است - یک متغیر جهانی و خاص از انواع به نام سند وجود دارد. جاوا اسکریپت است که در واقع یک زبان شی گرا است. ما نمی خواهد به جزئیات در سال 50 به چه معنی می دهد، اما در حال حاضر می دانیم که یک جسم بسیار بسیار شبیه به ساختار است. ما را دیدم راه برگشت وقتی در یکی از اولین مشکل این مجموعه جایی که ما مقدار زیادی از اطلاعات در یک ساختار قرار داده است، به همین ترتیب سند یک ساختار ویژه ای است که می آید با مرورگر، همراه با هر صفحه وب. این چیزی است که من ایجاد نمی شود. در داخل این ساختار سند، هر چند، شما باید نه تنها داده ها اما همچنین شما می توانید توابع. و در هر زمان به شما یک تابع در داخل یک ساختار، در داخل یک شی، آن را به نام یک روش است. اما این همان چیزی است. روش یک تابع است که خیلی اتفاق می افتد به داخل چیز دیگری باشد. بنابراین این بدان معنی است که این متغیر خاص جهانی به نام سند یک تابع به نام getElementById که به معنای واقعی کلمه می کند که. این به شما یک عنصر از DOM، مدل شیئی سند درخت، که ID در تبریک این مورد است. به عبارت دیگر، همه آن زمان ما در ساختارهای داده ای صرف می آید را به بازی اینجا کلیک کنید. این تصویر از DOM است که ما تا به حال یک لحظه قبل، حتی اگر صفحه کمی متفاوت است، اگر من یک div را در این تصویر، چه document.getElementById را به من به طور موثر اشاره گر تا مستطیل در درخت، یک مرجع به مستطیل در درخت است. بنابراین این چیزی است که به این معنی است که در واقع به تماس با یکی از آن دسته از توابع است. در این مورد دوباره آن دیو است. این یک جسم و یا یک عنوان نیست. پس اجازه دهید ببینیم که چه چیزی من و سپس با این دیو در حال حاضر که من آن را در داخل از این دیو متغیر به نام. به نظر می رسد با جاوا اسکریپت شما توانایی به نیشگون گرفتن و کشیدن CSS صفحه خود را به صورت پویا. تا در حال حاضر، همه از CSS ایم، البته محدود انجام شده است در ویژگی های سبک، و یا که در آن دیگری CSS ما را؟ من خراب شده که یکی از نوع. در برچسب سبک در بالای صفحه از فایل. یا مکان سوم قرار داشته است؟ یک فایل خارجی، چیزی CSS. بنابراین کسانی که در 3 مکان ما CSS تا کنون انجام داده ام، اما گرفتن این است که ما به سختی رمزی از آن همه است. شما تصمیم گرفته اید که شما را به pset 7 کبوتر، ما تصمیم گرفت قبل از سخنرانی CSS ما خواهد بود. اما اگر شما می خواهید به تغییر CSS خود را، شما در واقع می توانید که انجام هنگامی که شما یک زبان برنامه نویسی واقعی است. CSS، HTML - برنامه نویسی نه زبان. جاوا اسکریپت است. بنابراین به نظر می رسد که به زودی به شما به عنوان یکی از کسانی که مستطیل از درخت به نام DOM، آن را به برخی از داده ها در داخل آن است. بنابراین دیو که من فقط از درخت برداشت چیزی است که ما به مالکیت در داخل آن تماس بگیرید به نام سبک و ویژگی سبک خود را یک ویژگی به نام دید. من می خواهم این کار را تنها به دنبال کتابچه راهنمای کاربر CSS می دانم. به نظر می رسد از دید ملک CSS وجود دارد که نشانی از آن را می گوید. این باعث می شود چیزی قابل مشاهده است یا نه، قابل مشاهده است یا نه. و چگونه انجام این کار این است. من از برنامه نویسی در صورتی که دید از این دیو پنهان است، آنچه را می توانم آن را تغییر دهید؟ قابل مشاهده است. اگر دیگری دید از این صفحه پنهان است، منطقی من آن را پنهان. من هیچ نظری ندارم که چرا از آن قابل مشاهده است و پنهان و قابل مشاهده نیست و نامرئی است. این یک تصمیم طراحی ضعیف در طول راه بود. ولی برای کسانی که در واقع متضاد در CSS: آشکار و پنهان. همه می کند این است به این معنی تغییر CSS فایل من روشن و خاموش کردن، روشن و خاموش که دیو خاص. اما باز هم، این یک تابع به نام چشمک زدن است. هنگامی که تابع چشمک زدن نامیده می شود؟ به نظر می رسد که یکی دیگر از ویژه جهانی متغیر به نام پنجره وجود دارد، مشابه در روح به سند، اما در حالی که سند اشاره به صفحه وب خود، مانند درخت DOM، HTML شما فرستاده شده از سرور، پنجره اشاره به کروم در اطراف آن، در نوار آدرس، نوار عنوان، و همه از آن چیزهای اطراف صفحه وب خود را. و معلوم است که شی پنجره در داخل تابع خاص از آن را به نام setInterval که نشانی از آن را می گوید. این فاصله را تنظیم کنید - در این مورد، هر 500 میلی ثانیه - و، را حدس می زنم، چه آن را به انجام هر 500 میلی ثانیه؟ رفتن به اجرا است که چشمک زدن تابع. و چه خوب در اینجا این است که ما می توانیم این کار را در C انجام می شود حتی اگر ما هرگز. C چیزی به نام اشاره گر تابع که در آن شما می توانید توابع را در اطراف عبور به عنوان آرگومان. به طور مشابه در جاوا اسکریپت می تواند به نام یک تابع را به یک تابع دیگر را به شما منتقل می کند. و متوجه آنچه که من انجام می دهند. من این انجام نمی دهد. اگر من پرانتز پس از هم زدن قرار داده است، که به این معنی است که فراخوانی تابع چشمک زدن. اگر من آنها را حذف، این بدان معناست که در اینجا تابع چشمک به طوری که setInterval هر 500 میلی ثانیه می توانید تماس بگیرید. بنابراین نتیجه نهایی، همین هر چند از آن است، این است که اگر من به localhost را و رفتن به blink.html، من در حال حاضر این اتفاق می افتد دوباره و دوباره. و اگر من در واقع عنصر بازرسی، بیایید ببینید که اگر ما می توانیم این را ببینید. عنصر بازرسی من، به من اجازه حرکت کردن فقط کمی، اجازه دهید عناصر اینجا را انتخاب کنید، و متوجه داخل DOM بازرس کروم است. این به معنای واقعی کلمه در حال تغییر به عقب و جلو هر 500 میلی ثانیه است. اگر ما به دوست ما مقابله، اگر شما تا کنون چگونه این کار می کند، ایده مشابه با فاصله تعجب، اما مقابله است که در واقع استفاده بسیار موثر از رنگ در این مورد خاص در اینجا. پس چه بیشتر می تواند ما در واقع با این کار؟ بیایید باز کردن یک مثال دیگر کنید و سعی کنید به چیزی که برنامه نویسی حتی مفید تر از هم زدن همه چیز است. اجازه دهید من را در دایرکتوری ما به اشکال و به form0. این زشت ترین شکل ممکن بود که من می توانم آمد تا با و اجازه دهید من فقط به شما نشان می دهد آنچه که آن را در مرورگر به نظر می رسد. اجازه بدهید من به اشکال / localhost را، و این form0. این فوق العاده زشت فرم HTML است که زمینه برای ایمیل، رمز عبور، رمز عبور، و سپس چک باکس کوچک به توافق برسند به برخی از قوانین و مقررات و شرایط. گرفتن است اگر بازدید از این فرم و من نمی خواهم به شما آدرس ایمیل من را، من نمی خواهم به موافقت خود را با قوانین و مقررات و شرایط ممکن، من می توانم بر روی ثبت نام و آن را به من اجازه می دهد تا از طریق هر حال. این اتفاق می افتد برای ارسال به یک فایل احمقانه PHP به نام dump.php. همه آن را نشانی نسخه قابل چاپ کردن مطالب از $ _GET فقط برای مقاصد تشخیصی. که چیزی بود که توسط کاربر ارائه شد و فقط در حال حاضر. اما فرض کنید ما در واقع می خواهم به اعتبار فرم ثبت نام کاربر. اجازه بدهید من را به نسخه 1. این form1.html. به نظر می رسد زیبا فقط به عنوان بد است، اما متوجه فانتزی آن است. اگر من کلیک کنید ثبت نام بدون همکاری، من فریاد می زدند. "شما باید آدرس ایمیل خود را فراهم کند." بسیار خوب. بنابراین من سعی کنید که اجازه می دهد. بنابراین malan@harvard.edu. من می توانم یک رمز عبور نیاز ندارد. ثبت نام کنید. "شما باید یک رمز عبور." بسیار خوب. بنابراین من رمز عبور قرمز را فراهم خواهد کرد. ثبت نام کنید. "رمزهای عبور با هم مطابقت ندارند." من در حال حاضر در اینجا قرمز تایپ کنید. من به طور تصادفی چک که. ثبت نام کنید. "شما باید به قوانین و مقررات و شرایط به توافق برسند." بسیار خوب. موافق نخواهند بود. ثبت نام کنید. و در حال حاضر آن را نشان می دهد به من خروجی تشخیصی بیش از وجود دارد. پس چه چیزی اتفاق افتاده است؟ ما تا به حال این توانایی به اعتبار فرم ارسالی. در واقع، اگر شما شیرجه رفتن به pset 7 انجام داد، یک تابع عذرخواهی وجود دارد که باعث می شود آن را بسیار آسان به کاربر با یک پیام بر روی صفحه نمایش داد. من با استفاده از یک مکانیسم کمی متفاوت، عملکرد هشدار، که یک تابع که لبخند زد بر از آن را می سازد پیام کاربر بسیار زشت نمی باشد. اما اجازه دهید ببینیم که چه چیزی من انجام می دهند در اینجا. این form1.html، و توجه کنید که من به برخی از نحو کاملا آشنا: تگ body تگ فرم، صفت، صفت روش. اما متوجه من شکل من یک ID منحصر به فرد برای راحتی. سپس من یک فیلد ایمیل که نوع متن، رمز عبور زمینه است که نوع رمز عبور، زمینه تایید که نوع رمز عبور، و سپس چک باکس که نام توافق در اینجا، نوع چک باکس است. و بعد من یک دکمه ارسال. اما متوجه بالا چه بیشتر داشته باشم. اول از همه، یکی دیگر از استفاده از تگ اسکریپت وجود دارد. اگر شما از برخی از کدهای جاوا اسکریپت در یک فایل دیگر، درست مثل با CSS شما می توانید از آن باشد. و شما که با منبع اسکریپت، و سپس متوجه من اتصال ظاهرا به googleapis.com به یک مسیر بسیار طولانی است اما نام فایل که به پایان می رسد در jquery.min برای به حداقل رساندن JS. ذکر کرد که jQuery یک کتابخانه عمومی فوق العاده برای جاوا اسکریپت است که فقط باعث می شود جاوا اسکریپت همه بیشتر کاربر پسند استفاده کنید. این منجر به تبدیل شدن به یک استاندارد بالفعل است. بنابراین حتی اگر شما برای دیدن خالص جاوا اسکریپت در SE نیست، آن است که یک کتابخانه در جاوا بسیار شبیه به کتابخانه CS50 یک لایه در بالا از سطح پایین کد C، واقعیت این است که تقریبا هر کسی در اینترنت از آن استفاده می کند. بنابراین این چرخ آموزش. این است که فقط به بهترین شیوه این روزها. در حال حاضر زیر توجه داشته باشید که تگ اسکریپت خود من، و متوجه آنچه که من انجام داده ام. به نظر می رسد که jQuery هیچ چیزی که کمی فانتزی است. جاوا اسکریپت علائم دلار، اما آنها بی معنی است. آنها مانند حرف A یا B یا C. jQuery را به سادگی کنوانسیون یا مرتب کردن بر اساس ادعای گذاشته به این واقعیت به تصویب رسید دلار خواهد بود نماد خاص خود را. بنابراین به محض این که این فایل جاوا اسکریپت جهانی شما بار تا اینجا با برچسب اسکریپت، شما دسترسی به یک متغیر خاص جهانی که به نام دلار است. این بیشتر به درستی به نام jQuery را، اما که به نظر نمیرسد تقریبا به عنوان به عنوان دلار سکسی. اما دلار هیچ معنا و مفهوم خاصی دارد. در PHP آن را تا به حال به معنی خاص است. شما تا به حال به آن را در مقابل یک متغیر داشته باشد. این است که فقط به یک چیز مورد علاقه ای که آنها در گرفت. چه خبره اینجا؟ توجه داشته باشید که من عبور به تابع jQuery سند متغیر جهانی من و پس از آن من خواستار آماده شده است. چه jQuery را در اصل آن است که اجازه می دهد تا شما را به برخی از چیزهایی جاوا اسکریپت وانیلی مانند شی سند، شی پنجره، و اگر آن را به شما منتقل می کند به تابع jQuery - و دوباره روشن می شود، این یک تابع به نام جی کوئری - آنچه در آن است آن را به شما یک نسخه خاص از سند را بر می گرداند است که دارای قابلیت های بیشتری را در ارتباط با آن است. بنابراین در جاوا اسکریپت خام تابع آماده وجود دارد، اما اگر شما تصویب سند به تابع jQuery اول، آن را به شما برمی گرداند نسخه ویژه ای از شی سند که دارای ویژگی های بیشتری فانتزی. و به همین دلیل است که مردم آن را دوست دارم. این فقط باعث می شود همه چیز آسان تر برای انجام این کار، همانطور که ما در مورد برای دیدن هستید. پس چه این خط از کد چیست؟ این خط از کد را در اینجا به معنای زمانی که سند آماده است - به عبارت دیگر، هنگامی که مرورگر به خواندن این فایل بالا به پایین انجام می شود - برو جلو و تابع زیر را اجرا کنید. آنچه که واقعا جالب در جاوا اسکریپت - و PHP است و همچنین - توابع بی نام است. در جاوا اسکریپت شما می توانید توابع است که بدون نام، اما آنها مجبور به بدن اعلام می دارد. توجه داشته باشید که چه چیزی اتفاق می افتد در اینجا. این یک تابع به نام آماده است، و این حالت فقط بدان معناست زیر را انجام دهید هنگامی که کل صفحه وب آماده است، هنگامی که آن را تمام شده است را از سرور خوانده شود. چه چیزی را می خواهید انجام دهید؟ من می خواهم برای اجرای یک تکه کد. توجه داشته باشید که ما نمی خواهیم از این کد برای اجرای حق دور. اگر من حذف شده، بلافاصله این به این معنی است که شروع به اجرای این خط از کد. اما حقیقت این است که من و گفت نه، نه، نه، بسته بندی کردن این کار را در یک تابع بی نام شبیه به این معنایش این است آن را اجرا نشده است، آن را در نهایت. ما شاهد این یک لحظه پیش در مثال شکل قبلی ما است. چه تابع ما تماس بگیرید در نهایت، 500 میلی ثانیه بعد؟ چشمک زدن. بنابراین همان ایده است. باز هم، حتی اگر این به نظر می رسد کمی عجیب و غریب است، فقط در حال حاضر در ایمان که برای اعلام یک تابع بی نام که به نام سرانجام شما به سادگی تابع () ارسال { پس چه کد می خواهیم به اجرا در نهایت؟ شرح زیر است. این نیز کمی جدید به نظر می رسد، اما این به این معنی در اینجا تابع جی کوئری، و این اکنون یک میانبر است. این قطعه از HTML را در پایین صفحه نمایش البته تا به برخی از نمایندگی درخت. این نیست. این صفحه جالب تر است از این میهمان گرامی، به عنوان مثال. اما برخی از درختی که مربوط به این HTML وجود دارد. این امر می تواند درد در گردن به نوعی از تابع بازگشتی به پیاده سازی برای شروع در گره ریشه و سپس پیدا کردن گره که ID ثبت نام است. پس چه jQuery را فوق العاده آسان می سازد برای ما به معنای واقعی کلمه این است. برو جلو و به من هر شکل دیو و یا هر چیز دیگری، هر عنصر HTML ID از ثبت نام. این معادل است به document.getElementById ('ثبت نام'). چرا افرادی مانند jQuery را؟ از آنجا که آن را کوتاه تر تایپ کنید. اما این تمام آن است. این همان ایده است. تگ ID است که ثبت نام کنید. و هنگامی که آن برچسب، که اتفاق می افتد به یک فرم، ارائه، پیش بروید و این کد را اجرا. پس گرفتن اجازه دهید یک نگاه در حال حاضر ما در حال انجام اعتبار سنجی فرم. این نحو است مسلما های مرموز در ابتدا، اما چه خبر است؟ اگر این خط از کد درست است، من قصد دارم به کاربر داد به ارائه آدرس خود را به ایمیل. پس چه شده است این خط از کد؟ دلار به معنای JQuery می کنند. در حال حاضر این اطلاع می دهد. این نوع مانند CSS است. اگر شما به CSS شیرجه با این حال، شما می دانم که این به معنی عنصر که ID ثبت نام است. فضا به معنای پیدا کردن یک فرزند و یا از نوادگان ثبت نام که نام ورودی است. و پس از این چیزی که در میدان براکت یک فیلتر کوچک است. و حتی اگر این به نظر می رسد مرموز، این حالت فقط بدان معناست رفتن به فرم ID است که ثبت نام، رفتن به داخل ورودی عنصر که که نام ایمیل، و پس از آن ارزش خود را، هر چه مقدار آن اتفاق می افتد - asdf در صورتی که من تایپ یا malan@harvard.edu اگر این چیزی است که من تایپ. بنابراین اگر ارزش زمینه ایمیل فرم == هیچ چیز، در به کاربر داد. اگر دیگری ارزش == هیچ چیز، از فیلد رمز عبور به کاربر داد. اگر دیگری ارزش از فیلد رمز عبور ارزش این زمینه تایید می کند برابر نیست، که عنصر شکل دیگری بود، در کاربر داد. و سپس در نهایت - و این یکی بیش از حد برخی از نحو خاص خود را دارد، اما هنگامی که شما آن را دیده، آن را حداقل کمی معقول تر است - دیگر در صورتی که ID است که ثبت نام یک عنصر ورودی است که نام توافق و از آن است که بررسی می شود، به جلو و داد در کاربر. بنابراین من کاملا این است که به طور کامل در مورد قریب به اتفاق در نگاه اول بپذیرد. بسیاری از تگ های جدید است. اما همه از jQuery به دنبال این نوع از الگوها است. و صادقانه، من حتی نمی دانند این موجود تا چند دقیقه پیش. من گوگل،: "چگونه می توانم شما بررسی کنید اگر یک چک باکس در jQuery بررسی می شود؟" و این نحو است، چرا که شیوه های متفاوتی برای انجام آن وجود دارد با واقعی کد جاوا اسکریپت خام. بنابراین به عنوان اولین صفحه از مجموعه مشکل 7 بر، pset است 7 بسیار ورزش در bootstrapping خودتان جایی که ما ارائه کرده ایم، امیدوارم، یک چارچوب مفهومی که با آن به مقابله با pset. اما اغلب به عنوان مورد با طراحی وب سایت، آن را به شما واقعا به بهم زدن در اطراف، ترکیب قطعه از کد ها و نمونه هایی از وب سایت تا زمانی که شما به آنها استناد در هر شرایط که در آن جدول اول، و درک کنند که یادگیری HTML، CSS، JavaScript در مرورگر و حتی SQL واقعا به معنای به این ورزش در خانه ما شروع به گرفتن این چرخ آموزش. و ببینی که بیش از حد بسیاری از بیشتر چیزهایی که شما می توانید با یک مرورگر انجام دهید وجود دارد. در داخل بسیاری از این عناصر، چیزهای دیگری هستند که به نام گرداننده رویداد وجود دارد. و حتی اگر ما فقط در آنهایی که نگاه به نام onsubmit و onready شما می توانید همه چیز را انجام دهد، مانند onkeydown، هم OnKeyUp دوست دارم زمانی که کاربر در لمس یک کلید، شما می توانید برای آن کلید را گوش دهید. جیمیل دارای میانبرهای صفحه کلید می باشد. چگونه گوگل پیاده سازی میانبرهای صفحه کلید مانند C برای نوشتن؟ آنها برای رویدادها گوش، به عنوان آنها نامیده می شود، مانند onkeypress یا هم OnKeyUp و onkeydown. اگر تا کنون موس خود را بر روی برخی از گزینه منو نورانی کردن و همه به طور ناگهانی، voila، یک منو ظاهر می شود و یا گرافیک تغییر رنگ، چگونه انجام این کار؟ به جای گوش دادن برای onready یا onsubmit، شما برای onmouseover و onmouseout گوش. بنابراین در کوتاه مدت، با این اصول بسیار ساده است که ما کرده ایم شروع به خراش سطح از امروز و ما بیشتر به روز چهارشنبه فرو رفتن، شما داشته باشد، به طور فزاینده ای، قدرت برای پیاده سازی انواع چیزهایی که شما در حال حاضر با آن آشنا است. بنابراین پایان دادن وجود دارد، و ما این کار را در روز چهارشنبه ادامه خواهد داد. [CS50.TV]