[Powered by Google Translate] [9 ہفتہ] [ڈیوڈ J. Malan - ہارورڈ یونیورسٹی] یہ [CS50 ہے. CS50.TV] - ٹھیک ہے. واپسی پر خوش آمدید. یہ CS50 ہے، اور یہ 9 ہفتے کے آغاز ہے. آج ہم نے خاص طور پر ڈیزائن، اب کوئی C کے تناظر میں توجہ مرکوز لیکن پی ایچ پی کے سیاق و سباق اور SQL تھوڑا سا اور جاوا سکرپٹ کے تھوڑا سا میں، خاص طور پر دونوں 7 pset کے آخر کی طرف بھی اپنی حتمی منصوبہ. اصل میں، اگر آپ کو اپنے حتمی منصوبے میں اس نقطہ پر ہیں شاید کے طور پر ایک یا اس گھنٹے آپ پہلے جہاں کم از کم کچھ سوچ دینے شروع کر دیا آپ کی آخری منصوبہ اور تم سوچ رہی ہو آپ کو 1 یا 2 ہم جماعتوں کے ساتھ مل کر کام کرنا چاہتے ہیں کر رہے ہیں، اگر آپ کو تکلیف ہونے کے ساتھ منسلک رہے ہیں ہم جماعتوں نے کہا کہ، باہر cs50.net/partners/form پر فارم کو بھریں بلا جھجھک. یہ صرف آپ سے کہتا ہے کہ تم کون ہو، منصوبے کی تم کس طرح کے بارے میں سوچ رہے ہیں، جہاں آپ کو صرف انتظامی وجوہات کی بناء پر رہتے ہیں. اور پھر اگر آپ اگلے ہفتے یا تو وہاں کے سپریڈ شیٹ URL پر نظر رکھنا چاہتے ہیں، آپ کو گوگل DOC کے ایک ورژن صرف پڑھنے کے تو دیکھ سکتے ہیں جس میں ہم وہ معلومات جمع کر رہے ہیں. تو اگر آپ کسی کے ساتھ مل کر کام کرنا چاہتے ہیں، تمام اسباب کی طرف سے لوگوں کو باہر تک پہنچنے کے لئے آزاد محسوس کرتا ہوں اس طریقہ کار کے ذریعے. لیکن لوگوں کی اکثریت کا کام اکیلے کرتے ہیں. وہ بالکل ٹھیک ہے. تو نہیں لگتا ہے کہ یہ کسی بھی واجب راہ میں ہے. جمعہ کے روز یہ صرف آپ کے وزٹرز کا ریکارڈ رکھا اور یہاں میں ایک ٹیم کے چند تھا، سب سے زیادہ حصہ کے لئے خالی تھیٹر. تاکہ 3 سیاحوں بیٹھے ہوئے تھے وہاں، یہ تھوڑا عجیب تھا. ہم کس کے بارے میں بات کی تھی ڈیٹا بیس کی تھی اور ہم نے 7 تھوڑا سا pset کے بارے میں بات کی ہے. اور یہ کہ اگر آپ کے پاس ہے کہ ویڈیو پر ابھی تک پکڑنے نہیں ہوا، یہ ٹھیک ہے. میں کسی بھی لفظ کی وضاحت کرنے کی کوشش کریں کہ ہم نے کے لئے حاصل کی جاچکی دوسری صورت میں لیں گے کریں گے جمعہ کے لیکچر پر مبنی ہے. لیکن آج ہم آپ کو پوائنٹ حاصل کرنے کے لئے کوشش کرنے کے لئے جا رہے ہیں 7 pset کی طرح کچھ کرنے کے قابل نہ ہونے کا لیکن حقیقت کو سمجھنے ہڈ کے نیچے جا رہا ہے، خاص طور پر abstractions کہ ہم functions.php فائل میں جگہ میں ڈال دیا کچھ آپ کی زندگی تھوڑی آسان لیکن پڑتا ہے کہ آپ بالآخر سمجھ تاکہ جب تربیت کے پہیوں کو چند ہفتوں میں تم اب بھی زندہ رہ سکتے ہیں حقیقی دنیا میں آپ کے نیچے کسی بھی CS50 فریم ورک کے بغیر یہ سب کرتے ہیں. تم میں سے ان لوگوں کے لیے جو واقف ہیں یہ ڈالر _SESSION، یا جو پہلے ہی جمعہ کے روز ویڈیو پکڑ لیا، جو سیشن ہمیں کیا ہے ایک پی ایچ پی کی بنیاد پر ویب ایپلیکیشن میں؟ یہ ایک superglobal متغیر ہے، جس کا مطلب ہے کہ یہ روح میں اسی طرح ہے اور پوسٹ کرنے کے ہے اور کچھ دوسروں کو، لیکن ہے کہ اس بات کو مفید ہے کے لئے ہے؟ سیشن کیا ہے کے لئے استعمال کیا جاتا ہے؟ جی ہاں. [طالب علم] لاگ ان معاف کیجئے گا؟ [طالب علم] اندر اندر یقینا لاگنگ لاگنگ. 7 pset میں ہم اس سیشن superglobal کا استعمال کرتے ہوئے کی سہولت کے لاگ ان کر رہے ہیں اور کیا اس superglobal کے بارے میں اچھی بات ہے یہ ہے کہ یہ ایک ساہچری سرنی ہے. ساہچری سرنی، یاد ہے، صرف ایک صف ہے، لیکن جن کے سوچکانکوں نہیں رہ تعداد ہونا پڑے گا 012 کی طرح. وہ تعداد یا وہ بھی ڈور کر سکتے ہیں کر سکتے ہیں. اور اگر ایسا ہے تو آپ کو 7 pset میں dived ابھی تک ہے آپ کو یاد ہے، کہ ہم نامی ایک اہم ID ذخیرہ کرنے کر رہے ہیں کر سکتے ہیں اس ساہچری سرنی جن کی قیمت 123 کی طرح کچھ ہے کے اندر - جو کچھ بھی اس وقت صارف ID میں ریکارڈ ہے. اس کے لئے حوصلہ افزائی ہے کہ اس کے بعد بھی صارف localhost کا دورہ کیا ہے یا میری ویب سائٹ عام طور پر اور پھر وہ ریکارڈ ہے، یہاں تک کہ اگر وہ ایک لنک پر کلک کریں نہ کریں یا 5 منٹ کے لئے میری ویب سائٹ پر واپس یا بھی ایک گھنٹہ یا ایک دن بھی لیکن وہ ان کے براؤزر ونڈو کو کھلا چھوڑ اس superglobal کے ذریعے مجھے یاد ہے کہ وہ اندر کا ریکارڈ کر سکتے ہیں دوسرے الفاظ میں، یہ مجھے تھوڑا طویل مدتی میں ایک صارف کے بارے میں کچھ کرنا چاہتے ہیں کو محفوظ کرنے کی اجازت دیتا ہے ہے. اور تم خریداری کی ٹوکری کے اوتار کے طور پر اس سے سچ میں سوچ سکتے ہیں. ایمیزون جیسی جگہوں واضح طور پر آپ کو ایک خریداری کی ٹوکری میں چیزیں ڈال، لیکن HTTP، پروٹوکول ہے کہ ویب طاقتوں، بے وطن ہے معنی میں، کہ جب تم میں سے کسی ایک کو آپ کو ایک ویب سائٹ کے سب سے زیادہ حصہ کے لئے آپ کو کچھ مسلسل نیٹ ورک کنکشن کی ضرورت نہیں ہے آپ کے براؤزر اور سرور کے درمیان. جیسے ہی آپ HTML اور JPEGs اور GIFs ڈاؤن لوڈ کر لیا ہے اور تمام اس کے کنکشن دور چلا جاتا ہے اور آپ کو سرور سے HTML اور whatnot کی ایک کاپی ہے. لیکن اگر سرور نے آپ کے بارے میں کچھ یاد کرنا چاہتا ہے، بوجھ اصل میں اس کی معلومات کے ریکارڈ کے سرور پر ہے. اور تاکہ آپ پروگرامر جو سرور پر کنٹرول ہے سب سے زیادہ کچھ ہے جو آپ چاہتے ہیں اس superglobal ساہچری سرنی کے اندر ڈال سکتے ہیں اور یہ وہاں اگلی بار صارف واپس آتا ہو جائے گا، چاہے وہ منٹ ہے یا بھی دن کے بعد، جب تک کہ وہ ان کے براؤزر ونڈو کو بند کرتے ہیں، جس میں نقطہ سیشن غائب. تو یہ الپکالک سٹوریج ہے، غیر مسلسل ہے، اور اسے دور جانے کا مقصد ہے جیسے ہی صارف ان کا براؤزر بند - ٹیب صرف یہ ہے کہ نہیں، اکثر پورے براؤزر، اس سے مؤثر طریقے سے صارف لاگ آؤٹ. تو یہ کس طرح بات اصل میں لاگو کیا جاتا ہے؟ کی ایک سادہ مثال کے طور پر ہم نے جمعہ کو دیکھا میں ایک فوری نظر ڈالیں. ان مجریچت کے لئے، اس کے طور پر کے طور پر آسان تھا. یہ ایک ویب صفحہ ہے جن کا واحد مقصد زندگی کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے متعلق بتانا ہے ہے کتنی بار میں اس صفحے کا دورہ کیا ہے. یہ پیر کو پہلے یہاں وقت آ گیا ہے کہ میں اس کا دورہ کیا ہے، تو اس میں 0 مرتبہ کا کہنا ہے کہ. لیکن اگر میں اس صفحے کو دوبارہ لوڈ کرنا شروع وقت 1، 2، 3، 4، 5 کا کہنا ہے کہ، اور یہ گنتی پر آخر میں رکھ دے گا،،، ہر وقت کے لئے میں نے اس پر اصل کو دوبارہ لوڈ کریں پر کلک کریں. تو یہ کس طرح کام کر رہا ہے؟ کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہ کہا جاتا counter.php فائل کی اندر جانے دو اس کے سب سے اوپر حصہ نیلے کے تبصرے ہے، لیکن دلچسپ حصہ یہاں ہے. 13 لائن پر ہم نے اس تقریب session_start کہتے ہیں، اور یہ کہ لفظی ہے آپ کی ضرورت ہے اگر آپ تک رسائی حاصل کرنا چاہتے ہیں اس خصوصی superglobal $ کرنے کے لئے فون _SESSION. یہ ممکن تمام کرتا ہے، اور ہم نے ایک لمحے کس طرح ہے کہ ہر ممکن میں نظر آئے گا. لائن 16 نوٹس ہے کہ میں کیا کر رہا ہوں میں. اگر چابی، جسے انسداد - دوسرے الفاظ میں، انڈیکس قدر - "انسداد" اس صف کے اندر موجود ہے بلایا سیشن، تو میں کیا سطر میں اس کے ساتھ ذیل میں کر رہے؟ 18 لائن کر رہی ہے؟ [اشراوی طالب علم کے جواب] یہ کیا ہے؟ [طالب علم] قدر ذخیرہ کرنے. اچھی بات ہے. یہ ایک نیا مقامی عارضی متغیر میں قیمت ہے کہ اجلاس میں ذخیرہ کرنے کا ابھی تمام چھوٹے میں دہشت ڈالر. نوٹس ہے کہ پی ایچ پی نے پہلے ہی تھوڑا سست ہو رہی ہے یہاں. نوٹس ہم int یا فلوٹ یا سٹرنگ یا ایسا کچھ بھی کوئی ذکر نہیں ہے کہ کیونکہ پی ایچ پی کو کمزور ٹائپ ہے، آپ کو ایک متغیر کی قسم کی وضاحت کرنے کے جس نہیں کرتے، اور میں یہاں اس صورت میں بھی نہیں ہے ابھی تک اعلان کر دیا. میں نے اسے اندر اعلان کر رہا ہوں ان گھوبگھرالی منحنی خطوط وحدانی کی اور C کے برعکس، یہ اصل میں ٹھیک ہے. کوئی بات نہیں کس طرح دل کی گہرائیوں سے ایک متغیر کا اعلان اندر در اندر پی ایچ پی میں ہے - - کے اندر اندر گھوبگھرالی منحنی خطوط وحدانی اور اس طرح کی گھوبگھرالی تسمہ، پروگرام کے باقی کے لئے وقت میں اس وقت موجود ہے، بہتر یا بدتر کے لئے. تو اس کا فوری طور پر عالمی ہو جاتا ہے جیسے ہی کے طور پر آپ اس کے طور پر ہم یہاں کر رہے ہیں کی وضاحت. دوسری صورت میں، میں اگر نہ ملے کہ سیشن superglobal میں کچھ کرتے ہیں، میں بظاہر 0 یہ متغیر انسداد ابتدا کر رہا ہوں، اس طرح صرف سنبھالنے صارف یہاں کبھی نہیں ہے پہلے. اور یقینا تو اس انسداد کس طرح incrementing ہے؟ میں اس ساہچری سرنی کی قیمت ہے جو اندر ہے کو اپ ڈیٹ کر رہا ہوں جو انسداد 1 + ہے برابر مقرر کر. اگر میں نیچے صفحے کے HTML سکرال یہاں، یہ واقعی بہت آسان ہے. میں اس صفحے کے جسم میں ہے، "تم اس طرح اور وقت اس سائٹ کا دورہ کیا." اور یہ ایک پی ایچ پی کی تعمیر ہے. اگر آپ <=، یہ تقریب کیا مؤثر طریقے سے برابر ہے.؟ کیا یہ واقعی printf طرح کچھ، جو ہم C میں کئی بار دیکھا ہے کے برابر ہے، کے طور پر آپ کو 7 pset میں رپورٹ سے پہلے ہی معلوم ہو سکتا ہے اگرچہ پرنٹ بھی ایک تقریب ہے جو صرف کچھ پرنٹ ہے، اس کی شکل کوڈ اصل میں نہیں استعمال کرتا ہے، اور آپ اصل میں گونج کے ساتھ کہہ سکتے ہیں. وہ سب کبھی تو تھوڑا سا مختلف اگرچہ خالص اثر بالآخر ایک ہی ہے. تو اس کا استعمال علامت برابر کرنے کے ایک خوبصورت راستے سے ترتیب دیں succinctly سے آپ کو کرنے کے قابل دوسری صورت میں ہو سکتا ہے. تو یہ ہے اس سائٹ کرتا ہے. یہ انسداد کی قدر پرنٹ. یہ سب کس طرح اصل میں ہو رہا ہے؟ آپ کو ایک ہفتے کو یاد کرتے ہیں یا تو پہلے ہم ہڈ کے نیچے دیکھ کر شروع کر دیا کر سکتے ہیں میں کس طرح ایک ویب صفحہ اس انسپکٹر کے ٹیب کا استعمال کرتے ہوئے کی طرف سے کام کرتا ہے. کروم میک ورژن، ونڈوز ورژن، یہاں تک کہ اور لینکس ورژن میں دونوں یہ ہے، اور فائر فاکس اور IE اسی طرح کے میکانزم ہے جس کے تحت آپ اس بلٹ میں debugger ہے اندر کے براؤزر کی. مندرجہ ذیل میں ایک نظر ڈالیں. یہاں ٹیبز کی ایک پوری چڑھانے ہے، اور یاد کہ leftmost ایک عناصر ہے، اور کوئی بات نہیں کس طرح godawful HTML اور جاوا سکرپٹ ایک صفحہ میں ہے یاد کہ عناصر کے ٹیب کے ساتھ HTML اصل hierarchically پر کر سکتے ہیں اور اچھا اور صفائی کے ساتھ. تو اگر آپ گوگل یا فیس بک کی طرح ایک ویب سائٹ سے سیکھنے کی کوشش کر رہے ہیں یا واقعی کسی بھی ویب سائٹ کا احساس ہے کہ آپ شاید دور ہو بہتر ، ماخذ کوڈ میں اس طرح کے طور پر خام ذریعہ دیکھنے کی مخالفت کی تلاش جو ایک گندگی ہے، جیسا کہ ہم نے خاص طور پر گوگل کی سائٹ پر دیکھا ہے کر سکتے ہیں. تو اگر میں نیٹ ورک کے ٹیب پر بجائے یہاں کلک کریں چلو دیکھتے ہیں کیا ہو رہا ہے جب میں نے اس صفحے کو ملاحظہ کریں. پہلے مجھے اپنی کیش کو خالی. میں کروم میں کی ترتیبات میں جانے کی اس کے بعد کی تاریخ پر جا رہا ہوں اور پھر تمام براؤزنگ کی ڈیٹا صاف کریں. آپ کو دوسرے مقاصد کے لئے یہ کر رہی میں استعمال کیا جا سکتا ہے، [ہنسی] لیکن جب وہ ترقی ویب سائٹ پر آتا ہے، اصل میں مفید ہے - اگر تم ہںس رہے ہو تم جانتے ہو. [ہنسی] یہ اصل میں واقعی مفید ہے جب ویب سائٹ کی ترقی کیونکہ حقیقت یہ ہے عارضی HTML فائلوں، عارضی جاوا اسکرپٹ فائلوں کی طرح کوکیز اور چیزوں کی طرح چیزوں اصل میں ایک بڑا سر درد بن سکتے ہیں کیونکہ اگر کسی بھی وجہ سے براؤزر کچھ فائل کیش کرنے کا فیصلہ کرتا ہے اور ابھی تک آپ کو سرور پر اس فائل میں تبدیلی کر دیا ہے لیکن براؤزر واقعی اس فائل کو تبدیل کر دیا گیا ہے کا احساس نہیں ہے اور اسی وجہ سے اصل میں نہیں ہے اس کو دوبارہ ڈاؤن لوڈ، اتارنا اس وقت بھی جب آپ کو دوبارہ لوڈ کریں بٹن پر کلک کریں، سب سے زیادہ surefire صرف اس بات کا یقین کر لیں کہ آپ کے کوڈ کے ساتھ غلطی نہیں ہے بنانے کے طریقے میں سے ایک، براؤزر کے رویے کے ساتھ ہے، یہاں میں آپ کے براؤزر میں جانا ہے اور ساری سرگزشت صاف تاکہ کوئی الجھن نہیں ہے. اور پھر اگر تم واقعی پاگل ہو چاہتے ہیں، براؤزر چھوڑ، یہ دوبارہ شروع کریں، اور پھر یقین ہے کہ تمام کام کے طور پر توقع کی جاتی ہے. تو مختصر میں، کلیرنگ کیشے اچھا ہے جب ترقی کر رہی ہے. تو ہم یہاں نیٹ ورک کے ٹیب ہے. میں پہلے سائٹ کا دورہ کیا 9 مرتبہ تھا، لیکن مجھے آگے اب جاؤ اور کو دوبارہ لوڈ کریں پر کلک کریں. اور میں واپس نیچے 0 ہوں. چلو، اصل میں یہ دیکھنے کی ضرورت ہے کہ یہ کس طرح ہے کہ اس سیشن superglobal عملدرآمد کیا جا رہا ہے. میں 1 HTTP درخواست کیا گیا تھا پر کلک کرنے کے لئے جا رہا ہوں، اور یہ بگ ونڈو کی اجازت دیتا ہے کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے اس کے اندر دیکھو. یہاں میں صرف سرور، جو دلچسپ نہیں ہے سے جواب دیکھتے ہیں. میں کئی طریقوں میں سے کسی میں نے یہ دیکھا ہے. لیکن کیا تکنیکی طور پر دلچسپ ہے ہیڈرز ہیں. اگر میں یہاں نیچے سکرال کریں اور درخواست کے ہیڈر پر توجہ مرکوز کریں اور مسودہ پر کلک کریں، جو میں دیکھنے جا رہا ہوں لفظی HTTP درخواست ہے جو صرف اپنے براؤزر سے سرور پر چلا گیا، آپریٹو لفظ ہونے کی وجہ، تو / فائل کے نام ہونے کی وجہ counter.php HTTP/1.1 صرف HTTP کے ورژن ہے کہ اپنے براؤزر کا استعمال کرتے ہوئے کر رہا ہے ہے. یہ لائن براؤزر سے ایک چھوٹا سا سرور یاددہانی سرور کا نام کیا ہے کہ اس سے بات کرنا چاہتا ہے. اور پھر اس کے باقی بعض اوقات دلچسپ نہیں بلکہ متعلقہ ابھی ہے. یہ تجسس کی صرف ایک قسم ہے. کسی بھی وقت اگرچہ میں اس جملے کو خفیہ ہے، آپ کے براؤزر میں ایک ویب سائٹ کا دورہ اس سرور کو مطلع آپ کیا براؤزر استعمال کر رہے ہیں اور کیا آپ آپریٹنگ سسٹم کا استعمال کرتے ہوئے اور جو اس ورژن رہے ہیں. اگر ایسا ہے تو سی این این اور whatnot جیسے تم نے کبھی کہ کس طرح ویب سائٹ حیران ہے معلوم ہے کہ کیا فی صد ویب، PC صارفین پر میک صارفین کے IE کے صارفین، کروم، صارفین اور طرح، یہ اس لئے کیونکہ ہماری تمام براؤزرز کی کر رہے ہیں ہر ایک ویب سائٹ کو وہاں سے کہہ کہ ہم کیا ہیں. یہ ذاتی طور پر قابل شناخت معلومات ضروری نہیں ہے، پر مشتمل لیکن یہ سرور بتاو کہ کیا آپ کے آئی. پی (IP) ایڈریس ہے اور براؤزر اور OS آپ استعمال کر رہے ہیں ہے. تو یہ ہے کہ یہ معلومات کہاں ہے. لیکن کیا اب زیادہ دلچسپ ہے جب ان سیشن آتا ہے جواب ہیڈر ہے. مجھے ماخذ دیکھیں جواب اگلا پر کلک کریں. کیا دلچسپ یہاں ہے کچھ چیزیں ہے. 1، ہمیں 200 کی حیثیت کوڈ ہے. ہم نے اس کی حیثیت کا کوڈ دیکھ کبھی نہیں کیونکہ اس کا مطلب ہے کہ سب کچھ ٹھیک ہے. یہ کچھ اور کے برعکس میں لفظی ٹھیک ہے کا مطلب ہے. ایک بڑی تعداد ہے ہم کبھی کبھی دیکھتے ہیں کہ بری بات ہے کیا ہے؟ 404 [طالب علم. 404 فائل نہیں مل سکا ہے، 403 آپ صلی اللہ علیہ وسلم نے پہلے ہی کر سکتے ہیں ٹھوکر کھا، جو جو حرام ہے، کا مطلب ہے کہ آپ chmod کچھ، کا امکان سب سے زیادہ بھول گیا. اور دوسروں کے ایک گروپ ہے. نیچے یہاں، یہ تھوڑا پاگل ہے. میں واقعی میں gedit میں چسپاں کر کے اس فائل کو چند منٹ پہلے لکھا. اس صفحہ کو 1981 میں پہلے کیوں واقعی میں ایک ویب تھا وقت کی حد ختم ہو؟ وہاں کیا ہو رہا ہے؟ [اشراوی طالب علم کے جواب] وقت سٹیمپ. لیکن کیوں؟ یہ کسی حد تک صوابدیدی ہے، لیکن یہ اصل میں مفید ہے. کیا یہ اپنے براؤزر کو کہہ رہا ہے یہ پی ایچ پی فائل آپ نے پہلے ہی میعاد ختم ہو کی درخواست کی ہے. اصل میں، یہ 30 سال پہلے ختم ہوگیا ہے. لیکن کیا یہ واقعی مطلب ہے؟ یہ صرف اگلی بار جب صارف اس صفحے کا دورہ کا مطلب ہے کہ، ، چاہے دوبارہ لوڈ کریں یا ٹائپ ایڈریس بار میں یو آر ایل کی طرف سے اس بات کا یقین کر لیں کہ آپ جا کر اور اس کی ایک نئی کاپی کی بازیافت ہے. یہ طرح کی کیشے busting کی ایک مثال کے ہے، ایک پاگل لفظ ہے جو صرف براؤزر کی حوصلہ شکنی کرنے کی کوشش کا مطلب ہے کہ اصل میں کیشنگ HTML سے ایک سرور سے بھیجا گیا ہے تاکہ تم دوبارہ لوڈ اتفاقی طور پر نہیں مارا اور اس کے بعد فائل کے اسی ورژن دیکھیں. تم واقعی ایک نئی کاپی بھیجنے کے لئے سرور کی ضرورت ہے. تو حقیقت یہ ہے کہ یہ 1981 ہے کا مطلب صرف اتنا ہے کہ اس کا کیا آلے ​​کا انتخاب کر رہا ہے ماضی میں ایک صوابدیدی تاریخ کے طور پر. لیکن اصلی رسیلی لائن اب اس میں سے ایک ہے. بھی 50 سے پہلے آپ شاید کوکیز کے ساتھ vaguely واقف ہیں. جیسا کہ ابھی، خاص طور پر کم آرام دہ اور پرسکون یا درمیان میں ان کے درمیان کیا آپ کی سمجھ میں کوکی ابھی ہے اگرچہ ہم آپ کی سمجھ بوجھ زیادہ تکنیکی بنانے کے لئے کے بارے میں؟ کوکی کیا ہے؟ جی ہاں. [طالب علم کے صارف کے بارے میں معلومات چاہتے ہیں اگر وہ اپنے صارف نام یا کچھ اور لکھا ہے. اچھی بات ہے. اس صارف کے بارے میں معلومات ہے، چاہے وہ اپنے صارف کا نام میں ٹائپ پہلے ہی ہے. کوکیز کا ایک طریقہ ہے جس میں سرورز کو ایک صارف کے بارے میں کچھ یاد کر سکتے ہیں ہیں. اور جو واقعی ایک کوکی ہے ایک ٹیکسٹ فائل یا بائٹس کی کچھ ترتیب ہے جو سرور کی طرف سے اپنے براؤزر کے اندر لگایا ہے، اور اندر اس فائل کی یا ان بائٹس میں کچھ قسم کی شناخت کنندہ کے ہے. شاید یہ لفظی آپ کے صارف کے نام ہے، لیکن زیادہ کثرت سے مزید خفیہ نظر آنے والے کچھ ہے bo8dal3ct اور وغیرہ - - یہ واقعی بڑی اکشرانکیی سٹرنگ یہاں اس بات کی طرح کہ واقعی صرف آپ کے لئے ایک منفرد شناخت کنندہ مراد ہے. یا پھر آپ کو اس کی طرح کی ایک مجازی ہاتھ سٹیمپ کے طور پر سوچ سکتے ہیں. اگر آپ کو کچھ کلب یا ایک تفریحی پارک میں جانا یاد ہے کہ تم اصل میں ادا کیا ہے میں چلی گئی ہے، وہ کسی قسم کے آپ کے ہاتھ پر ایک چھوٹا سا سرخ سٹکر ڈال، اور یہ کہ لوگوں کو کاؤنٹر ہے کہ آپ کے پاس پہلے سے ہی ادا کیا ہے یاد کر لیتا ہے تم آ جاؤ جیسا کہ آپ براہ مہربانی کر سکتے ہیں. کوکیز تھوڑا ہے کہ روح میں اسی طرح کی ہیں. پہلی بار میں نے اس ویب سائٹ کا دورہ کیا، کے طور پر میں صرف اپنے کیش کو خالی کرنے سے کرنے کے بعد کیا تھا، ویب سرور، آلات، اس معاملے میں میرے ہاتھ پر ٹکٹ دیا جس کا نام ہے PHPSESSID، سیشن ID، جس کی قیمت یہ واقعی طویل اکشرانکیی سٹرنگ ہے. تو تو ہے کہ اب میرے ہاتھ پر emblazoned طرح کی ہے کہ اگلی بار مجھے مارا دوبارہ لوڈ یا دستی طور پر ایک براؤزر میں اس URL پر، HTTP کی تعریف کی طرف سے اپنے براؤزر کو ہاتھ سٹیمپ پیش کرنے جا رہا ہے بار بار بار. تو اگرچہ سرور ضروری ہے میں کون ہوں نہیں ہے جانتے ہیں، انہوں نے کم از کم پتہ ہے کہ میں نے ایک ہی صارف یا کم از کم، زیادہ خاص طور پر، ایک ہی براؤزر ہوں. اور اس طرح یہ بالآخر یہ ہے کہ کس طرح سیشن superglobal لاگو کیا جاتا ہے. سرور کو کوئی اندازہ نہیں ہے کہ تم کون ہو جب تم دوسرے کے لئے ایک ویب سائٹ یا تیسری بار نظرثانی ہے جب تک آپ اس کے ہاتھ سٹیمپ پیش کرتے ہیں. اور جیسے ہی کے طور پر تم نے اس ہاتھ سٹیمپ پیش کرتے ہیں، ویب سرور بنیادی طور پر اپنی ایک چھوٹی سی ڈیٹا بیس میں جاتا ہے اور چیک ٹھیک ہے، میں صرف صارف bo8dal3ct کے ہاتھ سٹیمپ دیکھا ہے اور وغیرہ. مجھے جو معلومات پروگرامر محفوظ ہے کے اندر اس صارف کے بارے میں superglobal اور پھر مجھے اس بات کا یقین کر لیں کہ ہے کہ اس ڈیٹا کو دوبارہ superglobal سیشن کے اندر تاکہ پروگرامر ہے کہ ڈیٹا کو دوبارہ تک رسائی حاصل کر سکتے ہیں یہاں تک کہ اگر یہ کچھ منٹ یا گھنٹے پہلے قائم کیا گیا تھا. تو دوسرے الفاظ میں، کوکیز، جس میں کچھ وقت کے لئے ایک بری ریپ ہے براؤزر میں عدم تحفظ کی وجہ سے وہ ہماری رازداری اور یہ سب واقعی کی خلاف ورزی کر سکتے ہیں، وہ اصل میں کیونکہ ان کے بغیر بڑی افادیت ہے آپ کو مسلسل ہر فیس بک کا صفحہ آپ کی جائے گی میں لاگ ان یا Gmail کا ہر ای میل آپ کو پڑھا اگر براؤزر کی یاد کے کوئی نہ کوئی راستہ نہیں تھا کہ آپ کے پاس پہلے سے ہی کی توثیق ہے. تو اس طرح سے کوکیز تار بھر آگے اور پیچھے بھیجے جاتے ہیں. کوکیز کے بارے میں ایک اور تجسس، خاص طور پر یہاں ہے، کہ یہ مکمل طور پر cleartext میں ہے. کوئی نہیں یہاں جو کچھ خفیہ کاری ہے، اور بیشک میں اس وقت HTTP کا استعمال کرتے ہوئے کر رہا ہوں. CS50 میں ہمارے پسندیدہ لمحات میں سے ایک، جو کہ اب 2 سال پہلے، وقت کے ارد گرد نامی Firesheep آلہ باہر آئے. یہ سافٹ ویئر کی ایک مفت ٹکڑا ہے جو کہ آپ نے ایک سیکورٹی محقق کی طرف سے بنایا گیا تھا ہے وہ یہ کہ یہ ہے کمیونٹی کے لئے ایک کال بيدار کے طور پر کہتے ہیں کہ کس طرح atrociously نافذ بعض ویب پر تصدیق کے میکنزم کے تھے. تو کچھ وقت کے لئے، فیس بک HTTP، کوئی HTTPS کے اوپر تقریبا مکمل طور پر تھا. اور S بھی اگر آپ کو کوئی اندازہ نہیں ہے کس طرح crypto کام ہے، محفوظ ہے تو اس کا مطلب ہے کہ کم از کم کچھ خفیہ کاری شامل ہے. فیس بک صارف نام اور پاس ورڈ کو خفیہ کرنے کے لئے استعمال کیا جاتا تھا، لیکن جیسے ہی کے طور پر آپ نے آپ کو دیکھا pokes یا آپ کے پیغامات یا آپ کی خبر فیڈ، یہ سب غیرخفیہ کردہ کیا گیا تھا. تو Gmail کو صرف ایک سال یا 2 پہلے تک تھا. کسی بھی وقت آپ لاگ ان، جی ہاں، وہ محفوظ خفیہ کاری کا استعمال کیا، لیکن اس کے بعد انہوں نے نہیں کیا. اور یہ ہو سکتا ہے کیوں؟ خفیہ نگاری صرف وقت کی سب کیوں اس طرح استعمال کی صورتوں میں نہیں استعمال کرتے ہیں؟ یہ کیا ہے؟ مجھے لگتا ہے کہ میں نے کچھ سنا. [طالب علم] رفتار. سپیڈ، ٹھیک ہے؟ اس کے ارد گرد طریقے ہیں. لیکن اگر آپ صرف کی قسم اس کے بارے میں کیا سوچتے منطقی طور پر، اگر آپ کو کچھ خفیہ، آپ کو کم سے کم ایک چھوٹا سا کام کرنا ہے. 2 pset میں جب آپ کیسر یا Vigenere عملدرآمد یا اس سے بھی ٹوٹ صرف ایک سٹرنگ پرنٹ کرنا نسبتا آسان ہے. اور پھر خفیہ کاری ایک تار minimally چھپائی تھوڑی زیادہ کام کی ضرورت ہے.  ، گوگل اور فیس بک کی طرح سپر مقبول ویب سائٹس کے لئے اگر آپ ہر ایک ویب صفحے کے لیے وہ کے ہر صارف کے لئے زیادہ کام کرنا ہے، کہ صرف CPU وقت لگتا ہے. اور اگر آپ کو زیادہ CPU وقت کی ضرورت ہے، آپ کو زیادہ سے زیادہ سرورز کی ضرورت ہو سکتی ہے، جس کا مطلب ہے کہ آپ کو مزید رقم کی ضرورت ہو سکتی ہے. اور اتنے سال کے لئے یہ صرف واقعی بہتر طرز عمل نہیں تھا. پیپلز SSL خفیہ کاری استعمال کریں گے صرف اس وقت جب وہ کرنے کی ضرورت ہے. لیکن یہ پتہ چلا، اور Firesheep کے ساتھ اس کے ساتھی کے طور پر سپر واضح کر دیا ہے، جب لوگ تم میں سے جو اس وقت فیس بک پر ہیں ابھی - تجسس کے باہر جانے دو، دیکھو، اگر آپ کو fess گے. اگر آپ کو فیس بک پر ابھی کچھ ٹیب میں ہیں، یہاں تک کہ اگر یہ نہیں foregrounded ہے، اپنی URL HTTP یا HTTPS ہے؟ [ایک سے زیادہ طالب علموں] S S.؟ [ہنسی] ٹھیک ہے. کوئی HTTP؟ صرف 1؟ ٹھیک ہے. تو ہم سب کو اس آدمی کے فیس بک اکاؤنٹ ہیک کر سکتا ہے. سب سے زیادہ حصہ اس کے لئے بن ڈیفالٹ کی طرف سے پر کر دیا کچھ ویب سائٹس میں سے کم از کم ہے. اور لمبی کہانی مختصر ہے، اگر اپنی ویب کی ٹریفک کے مرموز نہیں ہے، نہ صرف HTML غیرخفیہ کردہ WiFis بھر کے آگے اور پیچھے ہے، جانا کوکیز کی طرح چیزیں ہوا بھر پیچھے کرتے ہیں خفیہ کاری کے بغیر کسی بھی شکل کے. لہذا اگر تم صرف پروگرامنگ پریمی کے تھوڑا سا یا مہارت Googling کا تھوڑا سا ہے مفت سافٹ ویئر ہے کہ یہ اس کی تلاش کرنے کے لئے سٹاربکس میں تمام تمہیں کیا کرنا ہے، بیٹھ ہے یا ایک ہوائی اڈے میں بیٹھ جہاں عام طور پر وائی فائی غیرخفیہ کردہ ہے یا PHPSESSID: اور مرتب کریں کوکی جیسے مطلوبہ الفاظ کے لئے دیکھ کیونکہ اگر آپ کو تکنیکی پریمی ہے صرف وائی فائی دیکھنے بٹس اس طرز کے لئے ہوا بھر میں بہاؤ ہے کہ سب کے لئے، تو تم کہہ سکتے ہیں کہ لڑکے کا PHPSESSID bo8dal اور وغیرہ ہوتا ہے. اور پھر اگر آپ کافی تکنیکی پریمی ہیں یا صحیح آلہ ہے، آپ کو صرف reconfigure تو آپ اپنے براؤزر ہے کہ ہاتھ سٹیمپ پیش شروع Facebook.com، اور فیس بک فرض ہے کہ تم اس لڑکے ہیں جا رہا ہے کیونکہ انہیں معلوم ہے کہ نہیں ہے کہ تم کون ہو، لیکن ہے کہ آپ کو یہ منفرد شناخت کنندہ ہے. تو اگر آپ نے اس منفرد شناخت کی چوری اور آپ کے اپنے ویب سرور کو پیش کر، وہ صرف آپ کو اس شخص کی خبر فیڈ دکھانے کے لئے جا رہے ہیں یا اس شخص کے پیغامات یا pokes. اور اب میں گوگل ہے کہ کس طرح فیس بک کے لئے HTTPS شاید چالو کریں گے. لیکن یہ سچ میں اس کے طور پر کے طور پر آسان ہے. اور اس فیس بک اور گوگل اور اس طرح اس میں واقعی اچھے ہو گیا ہے، لیکن کسی بھی ویب سائٹ آپ HTTP استعمال نہیں کرتے کے لئے سب کو ایک نظر رکھنے کے اور ان پر کچھ قسم کی حساس معلومات کے چاہے وہ مالی یا ذاتی ہے یا پسند. اگر وہ اس کا استعمال نہیں کر رہے ہیں، بہت ممکن ہے اس طرح کوکیز بہت آسانی سے چوری ہو سکتی ہے اور پھر جعلی ہے، اور کہ بالکل کیا Firesheep کیا ہے. تم ایک پروگرامر کی ضرورت نہیں تھی. تم کرنا پڑا تھا ایک انٹرنیٹ کنکشن، اس مفت کے آلے پر ڈاؤن لوڈ، اتارنا ہے، اور ہے کہ وہ کیا کرتے ہے، تم میں لاگ ان کریں اور پھر اس کے بعد آپ فیس بک کا نام دکھائیں گے Sanders میں اس مخصوص مظاہرے میں سے ہر ایک، آپ کے ارد گرد، اور تم سب کو کرنا چاہیے تھا ان کے نام پر کلک کریں اور سافٹ ویئر کے عمل کو خود کار طریقے سے اس کوکی سنفنگ، آپ کے اپنے فیس بک پر یہ پیش اور voila، تم اندر ریکارڈ کر رہے ہیں تو یہ ان میں سے ایک ہے سرکاری طور پر "یہ نہ کرو". اگر آپ کو اپنے گھر کے نیٹ ورک ہے اور آپ کو ٹنکر کرنا چاہتے ہیں، سب کا مطلب ہے کی طرف سے، احساس لیکن اس یونیورسٹی کے ماحول پر لائن پار ہے. لیکن یہاں مقصد واقعی ہے پر زور نہیں کہ کس طرح ایسا لیکن اس طرح کی چیزوں کی ان کے خلاف کس طرح کے دفاع کے لئے. اور یہاں چھوٹی سی حل، اگرچہ وہ خود نظم و ضبط میں بہت سی خامیاں ہیں جن کی بنا پر ہے، واقعی سائٹس جو کہ HTTPS کا استعمال نہیں کر رہے ہیں مسلسل کے استعمال کو کم کرنے کے ہے. تو فیس بک اور گوگل جیسی سائٹس تیزی سے چیک باکس ہے آپ کو اس طرح کی بات کی جہاں میں داخل کر سکتے ہیں، اور بینکوں سال کے لئے اسی طرح کی وجوہات کی بناء پر یہ دیکھا گیا ہے. تو اگر ہم کر سکتے ہیں ایک خوف کے عنصر کے صرف تھوڑا سا. لیکن اس کے یہ مختصر میں ہے. یہی وجہ ہے کہ کس طرح ایک سرور یاد ہے تم کون ہو. اور جیسے ہی وہ یاد ہے تم کون ہو سکتا ہے، وہ آپ کے بارے میں کچھ یاد کر سکتے ہیں کہ اس خصوصی ملاقات کی $ _SESSION superglobal پروگرامر کے اندر محفوظ ہے. اور ہم 7 pset کے لئے trivially استعمال کر رہے ہیں صرف ایک int یاد صارف جو میں ریکارڈ ہے یعنی منفرد ID، تا کہ ہم جانتے ہیں کہ وہ وہاں سے پہلے کیا گیا ہے. پھر سیشن یا کوکیز یا جیسے کوئی سوال؟ Firesheep کے طور پر کام نہیں ہے، اور آپ کو ایک خصوصی promiscuous موڈ میں آپ کے کمپیوٹر پر ڈال ہے تو آپ کو اصل میں اپنے آپ کے علاوہ ٹریفک کے لیے سن رہے ہیں. تو اگر آپ کے پاس فی الحال Firesheep ڈاؤن لوڈ کر رہے ہیں، اس کا احساس نہیں بہت آسان ہے کیونکہ یہ ایک بار کا مظاہرہ تھا. ٹھیک ہے. Sanders میں ایسا نہیں ہے. گھر میں کیا. ڈیٹا بیس. چیزیں ہم 7 pset میں نے بہت جان بوجھ میں سے ایک تھا کہ ہم صارفین کو کچھ صارف کی شناخت ہے آپ کے لئے ایک نمونہ ڈیٹا بیس کی میز دے، کچھ صارف نام، اور کچھ خفیہ پاس ورڈ وہاں. اور جیسا کہ آپ دیکھیں گے، اگر آپ کے پاس پہلے سے ہی نہیں ہے، آپ کو میز کو تھوڑا سا تبدیل کر جا رہے ہیں. آپ اس ٹیبل میں صارفین میں سے ہر ایک کو کچھ کیشے میں شامل کرنے جا رہے ہیں، اور آپ کو ایک اور تاریخ، میز، محکموں کی میز کو شامل کرنے کی ضرورت کے لئے جا رہے ہیں، یا شاید اسے کچھ اور کہتے ہیں. لیکن کس طرح ایسا کرنے کے بارے میں سوچ کے لحاظ سے، اس آلے کو کھولنے کے جو ہم نے جمعہ کو استعمال کیا ہے، لیکن اگر مجریچت، آلات، ایک آلہ کے ساتھ آتا ہے ہے phpMyAdmin جو اتفاق PHP کے وزٹرز کا ریکارڈ رکھا جائے گا ہے کہا جاتا ہے، لیکن زندگی میں اس کا مقصد، میں کرمسن کے ساتھ jharvard کے طور پر یہاں لاگ ان کریں کے بعد کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے دیکھنے اور تبدیل کرنے سے اپنے ڈیٹا بیس کی ایک صارف دوستانہ طریقہ فراہم کرنا ہے. ڈیٹا بیس ہے کہ میں آلے پر چل رہے ہوں ایس کیو ایل کہا جاتا ہے. یہ بہت مقبول ہے، اور یہ ایک مفت اوپن سورس ڈیٹا بیس ہے کہ wonderfully استعمال کرنے کے لئے آسان ہے ہے، خاص طور پر کے ساتھ سامنے اس طرح ختم ہوتا ہے. اس آلے کو کیا آپ کے وزٹرز کا ریکارڈ کرنے کے لئے کی اجازت دیتا ہے، مثال کے طور پر، ٹیبل کے ارد گرد ڑکیلنا ہے. آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور اس کام کو کرنے دو جمعہ کے روز ہم نامی طالب علم جو سپر سادہ تھا ٹیبل بنایا. ID، نام، اور ای میل - - 3 کالم تھی اور میں دستی طور پر قطار کے ایک جوڑے کے داخل داؤد اور اس مخصوص مثال میں مائیک کی طرح. چلو، مزید یہ تھوڑا سا لگے، اور چلو مان لیتے ہیں کہ ہم کو یاد کرنے کی چاہتے ہیں سے ایک صارف کے بارے میں صرف نام اور ای میل. مجھے ڈھانچہ سب سے اوپر کے لئے یہاں کلک کریں. اور پھر، pset آپ کو یہاں ضروری اقدامات کے ذریعے چلتا ہے، تو فکر کرنے کی ضرورت نہیں ہے اگر اس میں سے کچھ تھوڑا جلدی ہے. پھر میں یہاں پر کلک کریں کی جا رہی ہوں. میں ای میل کے بعد کالم میں سے کچھ تعداد کو شامل کرنے کے لئے جا رہا ہوں کیونکہ میں گھر کی طرح کچھ اضافہ کرنا چاہتے ہیں. میں ایک طالب علم کے گھر کو ریکارڈ کرنے کے لئے بھول گیا. مجھے دیکھیں کلک کریں، اور اب ہم اس فارم ہے جو بدقسمتی سے بائیں سے دائیں جانب تھوڑا وسیع ہے ہے، لیکن میں اس فیلڈ کے گھر کے نام کو بلانے جا رہا ہوں، اور اس کے بعد کی قسم اب میں کرنے کا انتخاب کرتے ہیں. تو ایس کیو ایل میں مختلف اقسام کے بارے میں ایک مختصر بات چیت ہے کیونکہ، جبکہ پی ایچ پی کو کمزور ٹائپ ہے اور اس طرح کی اقسام کے ساتھ تیز رفتار اور ڈھیلا ادا کرتا ہے خاص طور پر ایک ڈیٹا بیس میں یہ انتہائی ضروری ہے اصل میں آپ کے فائدہ پر ٹائپنگ کا استعمال کیونکہ چیزوں کو ایس کیو ایل اور دیگر ڈیٹا بیس انجن کی ایک آپ کے لئے کیا کر سکتے ہیں ہے اس بات کا یقین کرنے کے لئے کہ آپ کو آپ کے ڈیٹا بیس میں جعلی اعداد و شمار نہیں کرتے. اس طرح کی مفت آپ کو دستیاب کی جانچ پڑتال کرنے میں غلطی کی ہے. گھر کے لئے ہم نے واضح طور پر یہ ایک int، جس میں ایس کیو ایل میں ایک 32 بٹ کی قیمت ہے نہیں کرنا چاہتا. ہم نے جمعہ کو مختصر varchar، جو متغیر چار کی حد کے لئے کھڑا ہے کے بارے میں بات نہیں کی. یہ سب کیا ہے؟ یہ آپ کی وضاحت ہے کہ آپ اس کو کسی قسم کا ایک تار کرنا چاہتے ہیں کی اجازت دیتا ہے ہے. آپ پہلے کتنی دیر تک ہے میں واقعی نہیں جانتے، تو ہم منمانے ایک گھر کا نام 255 حروف ہو سکتے ہیں کہیں گے، لیکن آپ 32 64 کے ساتھ جا سکتے ہیں - کسی بھی تعداد سچ میں. لیکن نامی چار فیلڈ پر varchar استعمال کرنے کا فائدہ کیا ہے؟ نوٹس صرف intuitively اگر میں یہاں نیچے سکرال، وہاں چار ہے اور اس varchar ہے. Varchar متغیر حروف کی حد کے ہے، چار ایک مقررہ حروف کی حد کے ہے. تو صرف اس تعریف پر مبنی ہے، ان میں سے ہر ایک کا فائدہ یا نقصان کیا ہے؟ دوسرے الفاظ میں، امتیاز کے بارے میں کسے پرواہ ہے، یا آپ کو اس کی پرواہ کیوں چاہئے؟ جی ہاں. [طالب علم] Varchar زیادہ لچک ہے لیکن زیادہ میموری لیتا ہے. اچھی بات ہے. Varchar اپ لیتا ہے - چلو دیکھتے ہیں. مجھے یقین ہے کہ اگر میں اس نے صحیح سنا نہیں ہوں. ہے کہ آپ ایک بار کہہ سکتا ہے؟ [طالب علم] میں نے کہا varchar شاید زیادہ لچک ہے لیکن یہ زیادہ میموری لیتا ہے. دلچسپ. ٹھیک ہے. Varchar شاید آپ کو زیادہ لچک فراہم کرتا ہے لیکن زیادہ میموری لیتا ہے. مؤخر الذکر لازمی طور پر درست نہیں ہے. یہ سیاق و سباق پر منحصر ہے، لیکن اس واپس آ. [اشراوی طالب علم کے جواب] بالکل. یہ دراصل معاملہ ہے کہ چار زیادہ میموری عام طور پر استعمال کریں گے کیونکہ ایک چار، C کی طرح، ایک تار کی طرح ہے، یہ کرداروں میں سے ایک صف ہے. اگر ایسا ہے تو آپ کو 255 کی لمبائی کی چار فیلڈ کا کہنا ہے کہ، ڈیٹا بیس لفظی آپ کو 255 حروف دینے جا رہا ہے. اور اگر گھر ختم ہو جاتی ہے MATHER اور 6 حروف کے کل ہونے، آپ کو 200 حروف سے زیادہ برباد کر رہے ہو. تو ایک مؤثر طریقے سے varchar صرف بہت سے حروف کے طور پر استعمال کیا جاتا ہے کے طور پر ضروری ہے زیادہ سے زیادہ رقم ہے. لیکن قیمت ادا کرنی اصل میں کارکردگی ہے، ممکنہ طور پر ہے. اگر آپ کو پہلے سے معلوم ہے کہ اپنے تمام ڈور کے 8 حروف کا ہونا جا رہے ہیں - مثال کے طور پر، مان لیں کہ آپ کو 8 لمبائی کا پاس ورڈ کی ضرورت ہوتی ہے - اس موقع پر ایک چار فیلڈ کا استعمال کرتے ہوئے، لیکن نہیں اکثر کے اوپر، ایک پاس ورڈ کی طرح کسی چیز کے لئے ایک مقررہ لمبائی کی وضاحت ہے کیونکہ اب ڈیٹا بیس کو ہوشیار بھی ہو سکتا ہے. اگر یہ کہ ہر چار فیلڈ جانتا ہے، ایک کالم میں ہر سٹرنگ ایک ہی کی حد ہے، آپ بے ترتیب رسائی کی اس سہولت کا ملتا ہے. آپ کو مختلف چار شعبوں کے درمیان آپ کے ڈیٹا بیس کے ٹیبل میں کے ارد گرد کود کر سکتے ہیں کیونکہ قطاروں اور کالموں کے طور پر ایک ڈیٹا بیس کے بارے میں سوچو. تو اگر ڈور میں سے ہر ایک میں ایک ہی کی حد ہے، اگلی بار آپ کو معلوم ہے کہ سب سے پہلے 0 بائٹ میں ہے، 8 بائٹ میں ہے اور 16 پھر اور پھر 24 اور وغیرہ. لہذا اگر تمام ڈور اسی کی لمبائی کی ہیں، آپ کے ارد گرد بہت زیادہ مؤثر طریقے سے کود کر سکتے ہیں. تو اس کی کارکردگی کے لحاظ سے ایک فائدہ ہو سکتا ہے، لیکن عام طور پر آپ کو پہلے سے جاننے کے عیش و آرام کی ضرورت نہیں ہے، تو ایک varchar جانا کرنے کا طریقہ ہے. یہاں ایک اور تفصیل ہے کہ فیس بک بھی بالآخر میں بھاگ گیا ہے. Ints عظیم ہیں، اور ہم طرح ان ڈیفالٹ کی طرف سے کسی بھی وقت ہم نے ایک نمبر کی ضرورت ہے کا استعمال، لیکن یہ صرف 32 بٹس ہے. اور اگرچہ فیس بک 4 ارب صارفین کافی نہیں ہے اب یقینی طور سے ایک سے زیادہ اکاؤنٹس کے ساتھ ہے وہاں کچھ لوگ یا اکاؤنٹ کی گئی ہے اور اس کے بعد کھول بند اور تو فیس بک خود مجھے یقین ہے کہ چند سال پہلے int سے منتقلی تھا ، کے طور پر aptly کہا جاتا ہے، bigint، جس میں 64 بجائے صرف بٹس ہے تو یہ بھی ایک ڈیزائن فیصلہ ہے. آپ حیرت انگیز خوش ہو اگر آپ کی آخری منصوبے کے آغاز بدل جاتا ہے، 4 ارب اور 1 صارفین، یا اٹھانے کے لئے دیتے ہیں، جس صورت میں ints کا استعمال کرتے ہوئے تھوڑا shortsighted ہو سکتا ہے. لیکن حقیقت میں، شاید آپ کے صارفین کی میز ہے ints کے ساتھ ٹھیک ہے. لیکن 7 pset کی طرح کسی چیز کے لئے، اپنی تاریخ کے ٹیبل کی طرح آپ ہزاروں، لاکھوں صارفین کی ہے اگر آپ etrade.com میں تیار ہو سکتا ہے. تو جبکہ آپ کو 4 ارب سے زائد صارفین نہیں ہو سکتا ہے، ان صارفین کو آپ کو یہ کرنا ہے کہ وقت کے ساتھ 4 ارب سے زائد لین دین کر سکتے ہیں - خریدتا ہے اور فروخت کرتا ہے اور ان کی تاریخ میں چیزوں. تو اگر آپ کی امید کرتے ہیں - پھر یہ اچھا اگر آپ کو یہ زیادہ ڈیٹا مسائل ہیں - اگر آپ کو ایک int کے سائز سے زیادہ ڈیٹا اندازہ کرتے ہیں، bigint طرح کچھ کے ساتھ ڈیزائنرز کی طرف سے بار بار کافی نہیں اپنایا سمت ہے کیونکہ لوگوں کے اعداد و شمار ہے کہ ایک مسئلہ نہیں ہے، لیکن یہ اس سے بڑا کچھ منتخب کرنے کے لئے یہ آسان ہے. دشملو ہم 7 pset، جو مقررہ صحت سے متعلق وضاحت کرتا ہے میں استعمال کر رہے ہیں تاکہ آپ floats اور ڈبلز اور reals طرح کے معاملات سے بچنے کر سکتے ہیں. اور پھر کچھ دوسرے شعبوں میں یہاں ہے. ہم نے ان میں کسی حد تک ہمارے ہاتھ لہر کریں گے. لیکن تاریخوں، اوقات تمام ایس کیو ایل میں ایک مقررہ فارمیٹ ہے، اور تاریخوں اور varchars کے طور پر ذخیرہ کرنے کی تاریخوں کا فائدہ کا مطلب ہے کہ ڈیٹابیس کے انہیں مختلف شکلوں میں اصل میں دوبارہ سوروپت کر سکتے ہیں، کہ ایک امریکی کی شکل یا یورپی فارمیٹ یا جیسے - تاہم آپ اسے چاہتے ہیں - بہت زیادہ مؤثر طریقے سے اگر یہ صرف کچھ کلی varchar تھے سے. اور پھر کچھ دوسرے بائنری، varbinary، blobs ہے. یہ بائنری بڑی اشیاء ہیں، اور آپ کو بائنری ڈیٹا بھی جمع کر سکتے ہیں کے ساتھ ساتھ ایک ڈیٹا بیس میں ہندسی اعداد و شمار کے طور پر. لیکن ints اور varchars اور اس طرح کے بارے میں ہم نے ہمارے لئے خاص طور پر دیکھ بھال کریں گے. آو کے گھر کے ساتھ اس مثال کو ختم. ہاؤس میں منمانے کہنے جا رہا ہوں میں 255 حروف ہو جائے گا. پھر ڈیفالٹ قدر ہم یہ کر سکتے ہیں. ہم سب پہلے سے طے شدہ کی طرف سے Mather ہاؤس میں ڈالا، مثال کے طور پر کر سکتے ہیں. اس کا ہے کہ ہم کس طرح کی وضاحت کر سکتا ہے کہ ڈیٹا بیس اس بات کا یقین کرنے کے لئے کہ کوئی ہمیشہ ایک قیمت ہے. میں چلتا ہوں لیکن یہ ہو جائے گا. اصل میں، ان لوگوں کے جو کیمپس میں رہتے ہیں اور ایک گھر میں نہیں شاید میں واقعی میں کی وضاحت کرنا چاہتے ہیں کہ اس کے گھر کے لئے پہلے سے طے شدہ کی قیمت خالی ہے، اور پھر میں اس باکس کو چیک کرنے کے لیے اور ڈیٹا بیس بتاو یہ ٹھیک ہے اگر صارف کے گھر خالی ہے کرنے کی ضرورت ہے. ایک بار پھر، یہ ایک اور دفاعی میکانزم آپ اس میں ڈال کر سکتے ہیں ہے تو آپ کو آپ کی پی ایچ پی کوڈ میں ضروری ڈال بھی نہیں ہے. ڈیٹا بیس کو اس بات کا یقین کرنے کے لئے کہ چیزیں ہیں یا نل نہیں ہیں. اور پھر آخر میں، صفات. ان میں سے کسی نے بھی واقعی متعلقہ ہیں. ثنائی، اہستاکشرت - ان میں سے کوئی بھی ایک varchar سے متعلقہ ہیں. انڈیکس. کیا کسی کو یا انڈیکس کیا ہے کے طور پر ایک اندازہ یاد معلوم گھر کی طرح کچھ کے لئے؟ یہ بھی اصل میں ایک اہم اور ڈیزائن فیصلہ نسبتا آسان ہے. وہ لوگ جو ابھی تک نہیں دیکھا ہے کے لئے، ہم نے جمعہ کو بنیادی چابیاں کے بارے میں مختصر طور پر بات کی تھی. ایک ڈیٹا بیس کے ٹیبل میں، ایک بنیادی کلید فیلڈ یا کالم ہے جو منفرد ٹیبل میں قطاروں کی نشاندہی کی گئی ہے. تو موجودہ ٹیبل ہم شناخت ہے، ہم نام اور ای میل ہے. ان میں سے کون سی بنیادی کلید کا بہترین امیدوار ہیں، جس کا کردار منفرد قطاروں کی نشاندہی کی ہے؟ شاید ID. Arguably، لیکن کیا ہم بھی استعمال کر سکتے ہیں؟ ہو سکتا ہے آپ کو ای میل کا استعمال کرتے ہیں کیونکہ اس کی تھیوری اور اس میں منفرد ہے ہے جب تک لوگوں کے ای میل اکاؤنٹ کا اشتراک کر رہے ہیں. لیکن حقیقت ہے کہ، اگر آپ کو 1234 کی طرح ایک عددی ID کا استعمال کرتے ہوئے کر رہے ہیں جو صرف 32 بٹس ہے، جبکہ ایک ای میل ایڈریس یہ بہت بائٹس یا اس کئی بائٹس ہو سکتا ہے. تو، میں کارکردگی کے لحاظ سے منفرد identifiers کے لئے یہ صرف ایک int کو استعمال کرنے کے لئے کے لئے اچھی پریکٹس جاتا یہاں تک کہ اگر آپ کچھ سٹرنگ امیدوار ہے کہ آپ استعمال کر سکتے ہیں arguably ہے. کے گھر کی طرح کچھ کے لئے، یہ ایک بنیادی کلید نہیں ہونا چاہئے کیونکہ اس وقت صرف 1 شخص Mather میں رہنے Currier طرح میں 1 شخص اور کر سکتے ہیں. اسی طرح، اس منفرد نہیں ہونا چاہئے. ہمارے موجودہ ٹیبل کے معاملے میں پرائمری اور منفرد کے درمیان فرق یہ ہے کہ، ID بنیادی ہو سکتا ہے لیکن ای میل کی وجہ سے ہم صرف ذکر کے لئے بنیادی نہیں ہے - کارکردگی - لیکن یہ منفرد اب بھی ہونا چاہئے. تو آپ کے دعوے کئے بغیر انفرادیت کے نفاذ کر سکتے ہیں کہ یہ ایک انتہائی اہم بنیادی فیلڈ ہے. لیکن یہ بھی بہت مفید ہے: انڈیکس. اگر آپ کو اپنے حتمی منصوبہ کے لئے پیشگی پتہ ہے، 7 pset کے لئے، یا عام طور پر، کہ اس فیلڈ کے گھر کچھ آپ کو بہت تلاش کی جا رہی ہے منتخب مطلوبہ لفظ یا کچھ کا استعمال کرتے ہوئے، تو آپ ڈیٹا بیس preemptively اس کا جادو کام بتا سکتے ہیں اور اس بات کا یقین کر لیں کہ ہے کہ یہ یاد میں پسند ہیں ڈیٹا کے ڈھانچے کی تخلیق ضروری ہے گھر پر کی بنیاد پر تلاش کو تیز کرنے کے. ہو سکتا ہے یہ ایک ہیش ٹیبل استعمال کریں گے، شاید یہ ایک لنک کی فہرست کا استعمال کریں گے. حقیقت میں، یہ ایک درخت کو استعمال کرنے کے لئے جاتا ہے، اکثر ڈھانچہ B درخت قرار دیا ہے - ایک بائنری درخت نہیں بلکہ ایک B درخت - جس میں ایک بہت وسیع درخت ہے کہ آپ ایک کلاس میں CS124، ڈیٹا ڈھانچے کلاس کی طرح دیکھ سکتے ہیں. لیکن مختصر میں، آپ جب ہوشیار ڈاٹا بیس سوفٹ ویئر کا استعمال کرتے ہوئے اس کے بارے میں فکر کرنے کی ضرورت نہیں ہے. تم نے یہ صرف بتا "انڈیکس اس میدان تو میں زیادہ مؤثر طریقے سے اس پر تلاش کر سکتے ہیں." ​​کر سکتے ہیں اگر آپ اسے بند چھوڑ دو اور آپ ڈیٹا بیس Mather میں رہتا ہے میں سب کے لئے تلاش کرنے کی کوشش کرتے ہیں، لکیری تلاش میں devolve گے. اور اگر آپ کو 6،000 undergrads نے تمام زندہ ہے کسی کے گھر میں، آپ پورے میز Matherites تلاش کرنے کے لئے تلاش کرنے جا رہے ہیں، جبکہ اگر آپ کا کہنا ہے کہ انڈیکس، امید ہے کہ یہ لوگارتمی تلاش کے قریب کچھ ہو جائے گا ان قسم کے طلباء کو تلاش کرنے کے لئے. یہ صرف ایک مفت خصوصیت یہ ہے چالو، اگرچہ اس علاقے میں سے کچھ رقم کی قیمت میں آیا ہے. آخر میں،، آٹو اضافہ، اس AI میدان جس میں صرف کا مطلب ہے کہ اگر یہ ایک int ہے اور آپ کو خود اضافہ کی پرواہ نہیں کرنا چاہتا ہر بار ایک نیا صارف ہے، کہ چیک کرنے کے لیے، اور ہر صارف ہے جو داخل ہو جاتا ہے ایک نئی شناخت کو خود کار طریقے سے ہو جائے گا. چلو پر کلک کریں محفوظ کریں، اور اب اس ڈیزائن کے ساتھ غلطی تلاش کریں. اگر میں براؤز کریں، نوٹس کہ دونوں مائیک اور اپنے گھر خالی ہے میں جاتے ہیں. میں phpMyAdmin کا ​​استعمال کرتے ہوئے دستی طور پر اس میں ترمیم کرنے کی کر سکتے ہیں. میں میں Mather میں یہاں اور قسم اور پھر کر سکتے ہیں درج کریں مارا، اور اب محسوس میز مختلف ہے. نوٹس لیکن میں کچھ اور کے ساتھ کر سکتے ہیں. ڈیوڈ ID 1 ہے، پھر phpMyAdmin صرف ایک انتظامی آلہ ہے. اس بات پر کبھی بھی اپنے صارفین کو دیکھنے جا رہے ہیں نہیں ہے. - تو اگر میں اوپر بجائے SQL کے ٹیب پر کلک کریں اور پھر سے، 7 pset آپ کو ان سوالات کے متعارف کرائے گا - میں SQL تشکیل استفسار زبان کمانڈ دستی طور پر پھانسی کر سکتے ہیں اپ ڈیٹ صارفین نے گھر = 'Pfoho' WHERE ID = 1 کو مقرر کیا ہے. یہ SQL سوالات ہیں، اچھی طرح سے کافی خوبصورت بائیں سے دائیں جانب پڑھنے کے قابل ہے. صارفین کی میز کو اپ ڈیٹ کریں، Pfoho کہا جاتا گھر فیلڈ ترتیب صارف ID 1 کہاں ہے. نہیں تو میں بھی کر سکتا ہے جہاں ای میل = 'malan@harvard.edu'. جب تک کہ منفرد آپ کے وزٹرز کا ریکارڈ رکھا نشاندہی کی گئی ہے، جو اس کے ساتھ ساتھ کام کریں گے. لیکن ID زیادہ اعلی کارکردگی کے لئے جاتا ہے، تو چلو ایسا کریں. کلک کریں. ٹھیک ہے، lecture.users کا کوئی وجود نہیں ہے. میری کیا غلطی ہے؟ اصل میں یہاں بلایا ٹیبل کیا ہے؟ یہ طالب علموں کو کہا جاتا ہے کہ صرف اس وجہ سے ہے جو ہم نے یہاں سب سے اوپر بائیں میں کیا ہے. یہ طالب علموں، صارفین کو کہا جاتا ہے. تو اب دیکھیں کریں پر کلک کریں. 1 صف متاثر ہوئے ہیں. طلب 0.01 سیکنڈ تک جاری رہی. اگر اب میں براؤز کریں، اب Pfoho میں Malan زندگی کلک کریں. تو یہ SQL کے ایک ذائقہ ہے، لیکن آپ کو تھوڑا سا اس سے زیادہ کے ذریعے pset چلے جائیں گے. ایک احمقانہ فیصلہ ہے یہاں میں نے پہلے ہی کر دیا ہے. میں یہ کہنا چاہتا ہوں کہ یہ ڈیٹا بیس ڈیزائن غیر فعال ہے کیونکہ جن لوگوں کو میں طالب علموں کی میز پر شامل ہم میں سے زیادہ میں انہوں نے کہا کہ TFs میں انہوں نے مزید کہا شروع شروع، ہم دیکھتے ہیں جو اس کے ٹیبل میں redundancies شروع کرنے جا رہے ہیں؟ جی ہاں. [طالب علم] دیکھ رہا ہوں کہ یہ طالب علموں میں ہے، ہم ایک ہی استعمال کر رہے ہیں [اشراوی] اسی - ٹھیک ہے، بالکل. تو اگر 400 لوگ Mather میں رہتے ہیں، یا اٹھانے کے لئے دیتے ہیں، بالآخر اس جدول 400 قطاروں "Mather،" "Mather کا کہنا ہے کہ، ہو رہا ہے" "Mather،" "Mather،" "Mather." ہم نے ان تمام بائٹس کی برباد کر رہے ہیں، اور اس takeaways کے ایک جوڑے کے وہاں ہے. 1، پاگل کونے معاملہ ہے جہاں اگر کوئی رقم کا ایک بہت ادا کرتا ہے اور نیا نام دیتا ہے Mather، اب ہم ہمارے پورے ڈیٹا بیس کی میز کو تبدیل کرنا ہوگا. یہ اکثر ہونے والا نہیں ہے، اگرچہ Pfoho ایک بار شمالی ہاؤس سے کہا گیا تھا 15 سال پہلے، تو یہ ہوتا ہے. لیکن اس سے وہ سب مجبور نہیں ہے. بلک میں اعداد و شمار کو اپ ڈیٹ کرنے کی ضرورت ہے کہ کی طرح ایک کونے کیس سے زیادہ مجبور ایک ڈیٹا بیس کے لئے کیوں ہے آپ MATHER بار بار ذخیرہ کرنے اور بار بار یہ حروف، 6 حروف کا ایک بہت ہے. ہم خاص طور پر Pforzheimer کے لئے اس سے بھی بہتر کرتے ہیں، نہیں کر سکتا ہے؟ بیشک ہم ہے کہ بہت سے حروف سے بہتر کر سکتے ہیں. ہر گھر کے ساتھ ایک منفرد شناخت کنندہ کیوں نہیں منسلک اور ہر صارف کے لئے سٹور؟ تو اس کی کوشش ہے. بجائے صرف طالب علموں کی میز کا استعمال کریں، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے سب سے اوپر بائیں میں میرے لیکچر ڈیٹا بیس تک یہاں. یہاں نوٹس کا کہنا ہے کہ ٹیبل بنائیں. آپ کے وزٹرز کا ریکارڈ رکھا نامی ایک نئی گھروں ٹیبل بنا دو. کالموں کی تعداد 2 جا رہا ہے. درج کریں. اب میں 2 شعبوں ہے. میں اس نام کو فون کرنے جا رہا ہوں، اور یہ 255 کی لمبائی کی varchar ہونے جا رہا ہے، لیکن یہ بہت غیر منطقی ہے. مجھے یہ یہاں ذیل کنونشن کی طرف سے ڈال. تو ایک ID یہاں ڈال. ہر گھر ایک منفرد شناخت دے دو. ہر گھر ایک کا نام دے دو چلو، کی وضاحت کریں کہ شناخت کنندہ صرف کنونشن کی طرف سے اہستاکشرت صرف مثبت تعداد کا استعمال کریں گے. چلو آگے بڑھو اور اب کے لئے یہ ایک فیلڈ آٹو اضافہ دے. اور کیا ہم کسی اور چیز کی ضرورت ہے؟ چلو آگے بڑھو اور محفوظ کریں پر کلک کریں. اب میں ایک دوسرے کی میز ہے. نوٹس ایک طرف ایک کے طور پر یہ تھوڑا سا خفیہ SQL کمانڈ ہے ہے کہ آپ کو دستی طور پر اگر phpMyAdmin کی طرح ایک انتظامی آلہ استعمال نہیں کر ٹائپ ہوتا ہے. تو کسی دوسرے کی وجہ سے ہم اس کا استعمال کرتے ہیں. pedagogically wonderfully مفید طرح ہے کیونکہ آپ کے ارد گرد کلک کر سکتے ہیں اور اعداد و شمار کس طرح چیزوں کو صرف کاپی اور پیسٹ کیا phpMyAdmin کیا کام کرتے ہیں. لیکن بنائیں میز کمانڈ ہے جو صرف پھانسی دے دی گئی ہے، اور یہاں میری میز ہے. مجھے آگے اب جاؤ اور داخل ٹیب پر کلک کرکے خام بجائے SQL oversimplify کا استعمال. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے گھروں میں INSERT کرتے ہیں، اور میں کہتا ہوں کہ گھر کا نام 'Mather' قیمت پر کی جا رہی ہے کے لئے جا رہا ہوں. کہ یہ ہے. یہ نحو تھوڑا زیادہ خفیہ ہے. یہ شعبوں ہم داخل کرنا چاہتے ہیں کے نام پر ہے. ان کی اقدار سے ہم ان خانوں میں داخل کرنا چاہتے ہیں ہیں. آپ کے وزٹرز کا ریکارڈ رکھا دیکھیں کلک کریں. 1 داخل صف 0.02 سیکنڈ تک جاری رہی. چلو، مجھے اب براؤز کریں پر کلک کریں. نوٹس اگر میں براؤز کریں پر کلک کریں، Mather، جس کی ID آٹومیشن کی طرف سے نمبر 1 ہے. مجھے ایک دوسرے سے کرتے ہیں. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے SQL ٹیب میں جانے دو. گھروں میں ڈالیں. گھر کا نام Pfoho کی قیمت جا رہی ہے اور وغیرہ. جاؤ. اور میں نے یہ کر رہی بار بار بار رکھ سکتے ہیں. یا اگر آپ phpMyAdmin کا ​​استعمال کرتے ہوئے ؤب، آپ داخل ٹیب کا استعمال کر سکتے ہیں اور خام SQL ٹائپ کرنا نہیں ہے. ، تم نے یہ صرف ٹائپنگ کی طرف سے باہر پھینک زیادہ تیزی سے کر سکتے ہیں، مثال کے طور پر، Currier درج کریں، اور اب اگر ہم براؤز کریں پر کلک کریں، 3 ID کے ساتھ Currier ہے. تو یہ ہے جو ہم آٹو اضافہ کی طرف سے مطلب ہے. لیکن اب ہم طالب علم میں کچھ طے ہے. طالب علموں میں کیا گھر فیلڈ کے اعداد و شمار کی قسم اب ہونا چاہئے؟ یہ ایک int چاہئے، ٹھیک ہے؟ تو یہاں کا مقصد باہر عنصر ہے، دوسری صورت میں کے طور پر معمول پر جانا جاتا ہے، میزیں تاکہ ہم میری ٹیبل میں سے کسی ایک میں معلومات جمع نہیں redundantly. اور پھر، ہم یہاں پر تھے راستے Mather Mather کہنا جا رہا ہے، Mather، Mather، Pfoho، Pfoho، Pfoho، Pfoho، جو بہت بے کار ہے حروف کی wastefulness کی شرائط میں. ، تو آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور پر کلک ساخت کی طرف سے اسے تبدیل اور آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھو اور گھر فیلڈ چیک کرنے کے لیے، تبدیل کریں پر کلک کریں، اور اب میں یہ int تبدیل کرنے جا رہا ہوں. 255 اب متعلقہ نہیں ہے. آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور کا کہنا ہے کہ ٹھیک ہے اگر یہ اب بھی ہے نل. محفوظ کریں. اب میز کے طالب علموں کو کامیابی کے ساتھ تبدیل بار گھر ایک int ہے نوٹس ایک طرف ایک کے طور پر، قوسین میں نمبر نظر انداز جب ints پر آتا ہے. یہ میراث بھی ویسی ہی وجوہات کی بناء پر ہے. پیچھے اگلا، دوسرا دن میں جب آپ GUIs نہیں تھا، آپ نے بجائے ایک کمانڈ لائن کے ماحول تھا، بالترتیب 10 اور 11 مخصوص حروف کتنے آپ کو دکھانا چاہیئے ٹرمنل ونڈو میں اصل شعبوں کو ظاہر کرنے کے لئے. اس کا اصل فیلڈ کی بٹ کی لمبائی کے ساتھ کوئی تعلق نہیں ہے، تو اب ہم صرف نظر انداز کریں گے. اب میں اس ٹیبل میں جانے کے لئے ہے. اور اگر ڈیوڈ Mather میں رہتا ہے، اور گھر 0 نہیں کرنا چاہئے، جو ڈیفالٹ int شہوت انگیز null قریب کی گئی ہے. انہوں نے 1 کے گھر میں رہنا چاہئے. چلو منمانے کا کہنا ہے کہ Pfoho میں مائیک زندگی، تو گھر نمبر 2. اب میری میز تھوڑا خفیہ لگتا ہے. لیکن کارکردگی پر غور کریں. میں اب صرف 32 بٹس کا استعمال کرتے ہوئے کر رہا ہوں گھر کی شناخت کے لئے، جس کا مطلب ہے کہ صرف میرے گھر Mather اور Pfoho 1 وہیت تعریف ہے اور یہ کہ گھروں ٹیبل میں ہے. تو اگر میں اب ان کی ٹیبلز پر دوبارہ کرنا چاہتے ہیں، اسے اس طرح کے بارے میں سوچو. یہاں میں اپنے طالب علموں کی میز ہے، اور دائیں ہاتھ پر ان کی تعداد، 1 اور 2. 1 2 Mather ہے، Pfoho ہے. ہم نے اس دوسرے ٹیبل میں وہی تعداد، جو گھروں میں کہا جاتا ہے ہے، 1 اور 2 اور ان 3 گھروں کے لئے 3. اب ہم کیا کرنا چاہتے ہیں کوڈ میں صلاحیت، پی ایچ پی اور SQL ہے، کی ترتیب ان کے ٹیبل کو دوبارہ، جہاں اگر ان طلباء ہیں اور یہ گھر ہیں، ہم 1 کے ساتھ کسی بھی طرح انہیں تاکہ 1 لائنوں تک جمع کرنا چاہتے ہیں، 2 کے ساتھ 2 لائنیں، اور تاکہ ہم ڈیوڈ جہاں اعداد و شمار کر سکتے ہیں اور جہاں مائیک اور کہاں اور ہر شخص کی زندگی. ایسا کرنے کے لیے ہم نے مندرجہ ذیل کی طرح ایک SQL استفسار پھانسی کر سکتے ہیں. طلبہ پر گھروں شمولیت سے * منتخب کریں - اور اب ہم کن شعبوں پر اپنے ساتھ شامل کرنا چاہتے ہیں؟ تو students.house = houses.id. ایک چھوٹا سا خفیہ، لیکن اس حصے کا مطلب لفظی ایک نیا عارضی ٹیبل بنانے کے ہے جو طلباء اور گھروں میں شمولیت کا نتیجہ ہے. اور کس طرح تم نے میری انگلیوں کے تجاویز کو یہاں جمع کرنا چاہتے ہیں؟ طلباء کا ID میدان گھر کے گھروں کے برابر میدان 'مقرر کریں. اور اگر میں اب جاؤ کریں پر کلک کریں، مجھے واپس جانا بالکل وہی جو میں نے امید ظاہر کی ہے. داؤد نے Mather میں ہے، مائیک Pfoho میں ہے، اور میں بھی منفرد identifiers دیکھ. لیکن بات یہ ہے میں ایک مکمل میز ہے. اور اس طرح 7 pset کے لئے یہاں takeaway یا واقعی حتمی منصوبے کے لئے: اگر آپ کو لگتا ہے کہ آپ کی معلومات کے کسی بھی حصے ذخیرہ کرنے redundantly کر رہے ہیں، چاہے وہ ایک گھر ہے، شاید یہ ایک شہر، ریاست، اور زپ ہے جہاں زپ ہمیشہ عام طور پر نہیں بلکہ ایک منفرد شناخت کنندہ کے طور پر استعمال کیا جائے سکتا ہے، phpMyAdmin کی طرح کچھ کے ساتھ مشق کے ذریعے ذہنی طور پر اور پھر جاتے ہو کہ عام ڈیٹا باہر فیکٹرنگ کی وجہ سے خاص طور پر اس صورت حال میں جبکہ آپ کی ویب سائٹ کو زیادہ اچھی طرح سے استعمال کیا جاتا ہے اور زیادہ مقبول، یہ ہے کہ آپ کس طرح اس بات کا یقین کر لیں کہ کہ یہ سب کچھ انتہائی تیز رفتار ہے، انفرادیت کے طور پر ہر ممکن حد تک بہت سے اشارے کے طور پر ڈیٹا بیس کو دے کر. یہ ایک بہت تھا. کوئی سوال؟ ٹھیک ہے. 5 منٹ کی ایک وقفے وہاں لے اور regroup دو. ٹھیک ہے. مندرجہ ذیل ایک مثال ہے کہ کچھ سال پہلے استعمال کیا جاتا ہے جب میں CS161 لیا تھا ہے، جو کالج میں آپریٹنگ سسٹم کلاس ہے ، جو حیرت انگیز ہونے کے لئے نام سے جانا جاتا ہے لیکن کام کی ایک پاگل مقدار اور یہ کم سطح کے مسائل جو آپریٹنگ سسٹمز میں پیدا میں سے کچھ واقعی توجہ مرکوز اور ڈیٹا بیس کی دنیا میں بھی. کہانی ہے کہ اس سال میرے پروفیسر Margo Seltzer، کی طرف سے بتایا گیا تھا کے طور پر مندرجہ ذیل ہے. لگتا ہے کہ آپ کو آپ کے اور آپ کے روممیٹ کے لئے ایک چھوٹا سا چھاترالی فرج یا ہے اور آپ دونوں کو واقعی دودھ پسند ہے. آپ کی روممیٹ تو آپ کلاس ایک دن سے گھر آتے ہیں، ابھی تک وہاں سے نہیں ہے، آپ کو فرج یا کھولتے ہیں، اور آپ کو احساس ہوتا ہے "اوہ، لات، ہم نے دودھ سے باہر ہو گیا ہے." تو آپ کو فرج یا بند، آپ کو سڑک کے پار CVS چل اور تیزی سے طویل لائنوں میں CVS میں تھوڑا دودھ خریدنے. اس دوران، آپ روممیٹ اس کا یا اس کی کلاس سے گھر آتا ہے، واقعی میں تھوڑا دودھ چاہتے فرج یا کمرے میں آتا ہے، کھولتا، فرج یا کھولتا ہے، اور "وفف، کوئی دودھ." تو وہ فرج یا بند، دروازہ چلتا ہے، اور اے بی پی جاتا ہے یا CVS آپ کہاں جا رہے ایک دوسرے سے ٹکرانا نہیں کر رہے ہیں کے مقابلے میں کہیں دوسرے تھوڑا دودھ حاصل کرنے کے لئے. کورس کے چند منٹ کے بعد تم دونوں کو گھر واپس جاؤ اور اب آپ کو دو بار زیادہ سے زیادہ دودھ کے طور پر آپ اصل میں چاہتی تھی ہے. اور دودھ ہونے کے، اب یہ برا جا ہے کیونکہ آپ نے دودھ پسند لیکن آپ واقعی دودھ کی طرح نہیں ہے، تو اب آپ کو بہت زیادہ دودھ ہے، تو اسے ھٹا ہو رہا ہے. یہ ایک خوفناک، خوفناک صورت حال ہے. اس حیثیت کیا ہے حل کیا جا سکتا ہے اگر آپ کو پہلے روممیٹ گھر تھے؟ جی ہاں. [طالب علم] آپ کو ایک نوٹ چھوڑ دینا چاہئے. [ہنسی] اچھی بات ہے. آپ کو ایک نوٹ چھوڑ دینا چاہئے. آپ کہہ رہے ہو، جیسے نوٹ پوسٹ یا ڈال دیا کرنا چاہیے "دودھ کے لئے گیا، اور پھر آپ روممیٹ conceptually کیا گیا ہوتا اصل میں یہ ہے کہ ایسا کرنے کے بند کر دیا. یا آپ مزید مرحلہ 1 جا سکتا ہے. آپ پیڈلاک کے کچھ قسم کے ساتھ فرج لفظی تالا لگا سکتا ہے، اور اب آپ روممیٹ لفظی فرج یا رکھا جائے گا بند کر دیا. اگر ہم پروگرامنگ واپس سامانییکرن، آپ متغیر کی کسی قسم یا struct کے طور پر فرج یا تقریبا سوچ سکتے ہیں، کچھ قسم کی معلومات کے لئے کنٹینر کے. مسئلہ بنیادی طور پر یہ ہے کہ تم دونوں کو معائنہ کی اجازت دی گئی یا یہ آنکڑا ڈھانچہ کی حالت کو پڑھنے کے، لیکن تم نے اسے مختلف اوقات میں دیکھا اور پھر تم دونوں کو ایک فیصلہ کیا وقت میں ان مختلف لمحات میں دنیا کی حالت پر مبنی ہے. تو کیا تم فرج یا بند کر دیا تھا، تو آپ کم از کم اپنے روممیٹ سے گریز ہے دنیا کی حالت کا معائنہ کرنے کے قابل ہو گیا تو وہ ہیں یا پھر وہ اس نے بھی یہی فیصلہ نہیں ہو سکتا. ڈیٹا بیس تو ہے، کے طور پر یہ پتہ چلتا ہے، اس مسئلہ کو مسلسل ہے. چلو دیکھتے ہیں اگر ہم حالات کی تعمیر کر سکتے ہیں. لگتا ہے کہ آپ ایک برا آدمی کی طرح ہیں اور آپ کو بینک آف امریکہ میں جاؤ یا ایک چوک میں دوسری جگہوں پر ہے کہ پارٹی کی طرف سے ایک جوڑے کو اے ٹی ایمز کی طرف ہے، اور کسی نہ کسی طرح آپ کو سوچا کہ کس طرح ایک ATM کارڈ کی نقل - کہ تمام مشکل نہیں ہے. یہ صرف ایک مقناطیسی پٹی ہے. اور اس وجہ سے کہ آپ کیا کرنے کی کوشش کرنا چاہتے ہیں اس کھیل کھیلتے ہیں جس سے آپ نے 1 مشین میں 1 کارڈ ڈال دوسری مشین میں ایک اور کارڈ اور آپ کو بنیادی طور پر پیسے ایک ساتھ واپس لینے کی کوشش کرنا چاہتے ہیں، کیونکہ یہ تصور کریں کہ کہانی مندرجہ ذیل جاتا ہے. بائیں پر مشین سے آپ کے کارڈ اور پن لیتا ہے، اور پھر آپ کا کہنا ہے کہ، "مجھے 100 ڈالر دے دو." ATM نے سب سے پہلے اس کی ڈیٹا بیس یا اس کے مساوی پر منتخب کیا پروگرام ہے - جو بھی ڈیٹا بیس کا استعمال کرتے ہوئے - دیکھ کر اس صارف کو اس کا یا اس کے اکاؤنٹ میں کم از کم 100 ڈالر کی ہے؟ اگر ایسا ہے تو، تو باہر 100 ڈالر تھوکنے اور ان کی میزان سے 100 ڈالر منہا. لیکن کورس کے اگر ایک سے زیادہ مشینیں یہاں ہے یا معائنہ کرنے کے ایک سے زیادہ طریقے اس دنیا کی حالت، بینک والٹ دیکھ، کتنا پیسہ ہے، بائیں طرف دیے گئے پر مشین میں موقع کی طرف سے صرف یہ ہے کہ فرض اور دائیں دونوں وقت میں تقریبا اسی وقت اس سوال پوچھتے ہیں. اور یہ ضرور ہو سکتا ہے. اے ٹی ایمز کمپیوٹر ان دنوں ہیں. لہذا اگر بائیں جانب مشین کا کہنا ہے کہ، "جی ہاں، آپ کم از کم 100 ڈالر ہے،" دوران دائیں طرف مشین کا کہنا ہے کہ، "جی ہاں، آپ کم از کم 100 ڈالر ہے، تو ان میں سے دونوں کو ان کے پروگراموں کو ختم کرنے کے لئے کارروائی اور اصل میں 100 ڈالر تھوکنے اور، کا کہنا ہے کہ "پہلے آپ 200 ڈالر تھا." "مجھے اب 100 ڈالر کے اکاؤنٹ میں چھوڑ متغیر کو اپ ڈیٹ کریں." لیکن اگر ان میں سے دونوں کو آپ کے اکاؤنٹ کے میزان کی جانچ پڑتال کی ہے اور پتہ چلا ہے کہ یہ 200 ڈالر 100 - اور ان میں سے دونوں تو ریاضی اور 200 کا کہنا ہے کہ مشینیں ممکنہ طور پر ہر ایک مشین میں دو 100 ڈالر کے بل کو تھوکنے لیکن وہ صرف اپنے رقم کے اکاؤنٹ کے میزان کو اپ ڈیٹ کر دیا ہے 100 ڈالر ہے. دوسرے الفاظ میں، آپ کو نکال لیا $ 200 ہے، بلکہ اس لئے کہ انہوں نے دنیا کی حالت کا معائنہ کیا ایک ہی وقت میں اور اس کے بعد کہ قیمت کی بنیاد پر فیصلہ کیا، وہ ریاضی کے آخر میں صحیح طریقے سے نہیں ہو سکتا ہے. تو ایک بینک کی صورت حال میں بھی تم سچ میں طالابندی کے کچھ قسم ہے کرنا چاہتے ہیں تاکہ جیسے ہی تم نے کچھ متغیر کی حالت کی جانچ کیا ہے کہ آپ کے اکاؤنٹ کے میزان کی طرح بہت ضروری ہے، دیتے نہیں کسی اور کو اس کی بنیاد پر فیصلے جب تک آپ اپنی بات کر کیا کر رہے ہیں،، آپ اس معاملے میں جہاں بائیں طرف کے ATM ہے. باقی سب بند کر دو. آپ کو مختلف طریقوں میں سے ایک جوڑے میں اس سلسلے میں اصل میں حاصل کر سکتے ہیں. SQL کے ایس کیو ایل میں آسان طریقہ ایک لائن ہے کہ ہم نے تمہیں دیا تھا ہے مسئلہ سیٹ کی تفصیلات جو کہ بالکل اس طرح لگ رہا ہے. جو کچھ بھی کہتے ہیں - - ایک کی شناخت، ایک علامت، اور ایک حصہ، حصص کی ایک بڑی تعداد، ٹیبل میں داخل مندرجہ ذیل اقدار، مثال کے طور پر. اگر آپ نے ابھی تک رپورٹ نہیں پڑھی ہے، یہ شامل کہ آپ کس طرح کے بارے میں کیا ہو مثال کے طور پر ہے صدر Skroob کے لئے اس پینی اسٹاک کی 10 حصص خریدنے جس کا صارف ID نمبر 7 پر ہوتا ہے؟ اس کا کہنا ہے کہ میز مندرجہ ذیل کی شناخت، سنہرے بالوں والی، اور حصص کی تعداد میں ڈالیں 7، 'DVN.V'، اور 10. لیکن - لیکن، لیکن، لیکن - دوسری لائن ضروری ہے. = مصنوعی چابی اپ ڈیٹ حصص حصص + اقدار (حصص). تو مکمل طور پر پہلی نظر میں خفیہ رہے ہیں. لیکن حقیقت یہ ہے کہ اس SQL استفسار، اگرچہ یہ 2 لائنوں پر wraps، 1 طویل استفسار ہے، اس کا مطلب یہ ہے کہ یہ جوہری ہے احساس ہے کہ یا تو یہ استفسار سب یا نہیں رکھا جائے گا پھانسی بالکل. اور ایس کیو ایل کی تعریف کی طرف سے، یہ ہے کہ وہ کس طرح اس کے سوال کو نافذ کیا. یہ تمام میں ایک بار یا نہیں پھانسی کی ضمانت دی دستی میں تعریف کی طرف سے ہے. اس کے لئے حوصلہ افزائی کے طور پر مندرجہ ذیل ہے. اگر آپ کو اس کیس میں اسٹاک کی 10 حصص خریدنے کی کوشش کر رہے ہیں، یہ دودھ کے طور پر ایک ہی کہانی کی طرح ہے، ATM کے طور پر ایک ہی کہانی کی طرح ہے. اگر تم غلطی یہ نحو نہیں استعمال کرتے ہوئے بلکہ اس کی بجائے ڈیٹا بیس سے منتخب پینی اسٹاک کتنے شیئروں کو دیکھنے کے لئے کیا صدر Skroob ہے، اور لگتا ہے کہ وہ 10 حصص ہے، اور پھر بعد میں کچھ تقسیم دوسرا آپ کے پاس تو ایک اپ ڈیٹ کے بیان کرتے ہیں، جو SQL میں ایک بیان میں کہا ہے جو یہ کہتا ہے کہ آگے بڑھیں اور 10 مزید حصص شامل ہے تاکہ ان کی موجودہ 10 سے مثالی طور پر کل 20 ہے، مسئلہ کیونکہ آج کے ڈیٹا بیس کے نظام میں اور اس وجہ سے ہے آج کے کمپیوٹر میں آپ ایک سے زیادہ پروسیسرز، ایک سے زیادہ cores ہے - دوسرے لفظوں میں، کمپیوٹر لفظی ایک ہی بار میں کیا جا سکتا ہے ایک سے زیادہ چیزوں کو کر رہے - وہاں کوئی ضمانت نہیں ہے کہ آپ کو منتخب کریں اور اس صورت میں آپ کی تازہ کاری واپس واپس ہونے جا رہا ہے. ایک بری منظر نامے تو ہو گا آپ نے منتخب کیا Skroob کس طرح اس پینی اسٹاک کی کئی حصص ہے، اور پھر صرف موقع کی طرف سے ایک اور ڈیٹا بیس کی کیوری کو پھانسی دے دی ہے - شاید کسی دوسرے براؤزر ونڈو میں اس Skroob 10 حصص خریدنے کی کوشش کر رہے ایک دوسرے ونڈو میں مجموعی طور پر، بہت ATM کی طرح - فرض ہے اور یہ کہ ایک دوسرے سوال کو منتخب کریں اور اپ ڈیٹ کے درمیان میں ہو جاتا ہے. یہ کیس ہو سکتا ہے کہ اب Skroob شیئروں کی تعداد کچھ کھو دیتا ہے کیونکہ کسی دوسرے عمل اس دنیا کی حالت کا معائنہ کر رہا ہے، یا وہ زیادہ حصص اس سے ہونا چاہئے ملتا ہے. ہم ان مخصوص کہانی لائنوں بالکل کیا ہو گا تفصیلات میں نہیں جائیں گے، لیکن بات یہ ہے کہ اگر آپ کو ایک متغیر کی قدر اور چیک کرنے کے لیے اس کے بعد کوئی فیصلہ کرنے میں ہے، اگر کسی اور کو ان 2 بیانات کے درمیان میں کچھ کرنے کے خطرہ ہے، کے طور پر نظام multicore میں multiprocessor نظام میں ہو، کر سکتے ہیں، ایک بار میں ایک سے زیادہ کام کرنے کی صلاحیت کے ساتھ کمپیوٹر بری چیزیں ہو سکتا ہے، جیسے بینک اکاؤنٹس کو غلط طریقے سے ڈیبٹ کیا جا رہا ہے، دو بار زیادہ سے زیادہ دودھ خرید، یا حصص کی اس معاملے میں غلط نمبر. لیکن وہاں ایک آسان طریقہ ہے اس کے بارے میں سوچنا ہے. یہ پتہ چلا ہے کہ SQL بھی حمایت کرتا ہے، اگر آپ کو آپ کی ٹیبل کو درست طریقے سے ترتیب دیں، کچھ کہا جاتا لین دین میں جو بحث اصل میں بھی آسان ہے سمجھنے کی اس سے، لیکن یہ ایک 1 لائنر نہیں ہے، لہذا یہ اصل میں تھوڑا سا زیادہ ملوث ہے. لفظی SQL میں ایک بیان بلایا START ٹرانزیکشن ہے. جیسا کہ، اپ ڈیٹ کو منتخب کریں، INSERT کریں، خارج کر دیں، اور شمولیت ہے اور دوسروں کے ایک گروپ ہے، START ٹرانزیکشن کی طرح مطلوبہ الفاظ ہیں. اور کیا اس وقت تم 7 pset کے سیاق و سباق میں کیا - آپ 7 pset کے لئے اس کی ضرورت نہیں ہے، یہ واضح طور پر ضروری نہیں کے طور پر disclaimed ہے، لیکن یہ آخری منصوبوں کے لئے مفید ہو سکتے ہیں - اگر آپ کو شروع کے لین دین کی ایک سوال اور اس کے بعد ایک دوسرے سوال کے کہتے ہیں اور تو ایک دوسرے سوال کے اور پھر دوسرے، دوسرے اور دوسرے ان سوالات کو اصل میں پھانسی نہیں رکھا جائے گا جب تک کہ آپ کو فون SQL بیان کا ارتکاب، کس موڑ پر، چاہے وہ 2 بیانات یا 20 کے بیانات، وہ سب کے سب ایک ہی بار میں رکھا جائے گا پھانسی، جس کا مطلب ہے کہ کوئی نہیں بہت زیادہ دودھ یا بہت زیادہ پیسہ ڈیبٹ اتفاقی طور پر خرید سکتے ہیں یا بہت سے حصص خریدنے کے اپنے تمام سوالات کے وجہ سے قتل واپس واپس، واپس واپس. اور یہ سپر ضروری ہے، خاص طور پر جب آپ اس طرح کچھ کر رہے ہیں. یہ ایک صوابدیدی مثال کے طور پر ہے جو یہ کہتا ہے کہ لشکر بینک اکاؤنٹ کو اپ ڈیٹ کریں 1000 ڈالر جہاں اکاؤنٹ نمبر 2 ہے - توازن کے برابر توازن قائم کرنے کی طرف سے. اور پھر دوسری بیان اب کہ 1000 ڈالر جمع میں کسی اور بینک اکاؤنٹ اکاؤنٹ جن کی تعداد 1 ہے ہے. دوسرے الفاظ میں، یہ جہاں آپ کو اس بات کا یقین کرنا چاہتے ہیں کی ایک بہترین مثال ہے کہ تمام ان دونوں بیانات یا نہیں ہو کیونکہ دوسری صورت میں کسٹمر کو خراب کرنے کے لئے کی جا رہی ہے اور آپ کو ان کے پیسے لے لو اور اسے جمع نہیں دوسری جگہوں پر جا رہے ہیں، یا بینک کو خراب کرنے کے لئے جا رہا ہے تم نے پیسے کہاں جمع کرنے جا رہے ہیں لیکن اس صارف کے اکاؤنٹ سے اصل میں نہیں منہا. تو کیا تم ان دونوں کو ساتھ پھانسی کرنا چاہتے ہیں. اس طرح دنیا لین دین میں داخل کرتی ہے. تو وہ آپ کے دماغ کی پشت میں رکھنے کے لئے کچھ ہے، ، صرف ایک حتمی منصوبے کے مقاصد کے لئے بہت زیادہ نہیں لیکن اگر آپ اپنی حتمی منصوبہ کو کہیں لے جانا چاہتا ہوں، اگر آپ کو اس کے ارد گرد کچھ کمپنی شروع کرنا چاہتے ہیں، اگر آپ کو کیمپس کچھ طالب علم گروپ کے مسئلہ کو حل کرنا چاہتے ہیں اور اصل میں ایک زندہ، فعال ویب سائٹ ہے، یہ ٹھیک ٹھیک کیڑے پیدا کر سکتے ہیں کی طرح ہیں اگر آپ کے ذریعے کافی نہیں سوچتے کیا ہو سکتا ہے اگر 2 افراد وقت میں لفظی ایک ہی لمحے میں آپ کی ویب سائٹ تک رسائی حاصل کرنے کی کوشش کر رہے ان کے سوالات ورنہ جس interwoven ہو سکتی ہے. کچھ جاوا سکرپٹ، اس جھلکی کے لئے تیار ہیں؟ سمسٹر کے لئے یہ ہماری آخری زبان ہے. ٹھیک ہے. شکر ہے، جاوا سکرپٹ بہت، بہت، بہت 2 زبانوں، سی اور پی ایچ پی کی طرح لگتا ہے، ہم نے اس طرح دور کیا ہے. 7 pset میں کوئی جاوا اسکرپٹ ہے، لیکن یہ ایک ناقابل یقین حد تک مفید آلہ ہے ویب کی بنیاد پر فائنل منصوبوں کر رہے یا واقعی صرف ویب پروگرامنگ عام طور پر جب آتا ہے. کہا جاتا DOM کچھ تو ایک فوری جائزہ. یہ ایک سپر آسان ویب صفحہ ہے جو واقعی صرف کا کہنا ہے کہ ہیلو دنیا ہے دونوں کے عنوان میں اور جسم میں. کے طور پر پوٹ کاری دیا گیا ہے، کچھ وقت کے لئے تجویز واقعی ویب صفحات پر ایک درجہ واری ہے. میں ایک درخت کے طور پر HTML کے اس ایک ہی ٹکڑا اپنی طرف متوجہ کر سکتے ہیں، ڈیٹا ڈھانچے C میں ہماری بات چیت پر واپس سوچ، کے طور پر مندرجہ ذیل ہے. میں کچھ خصوصی طور پر جڑ سے ملاقات کی دستاویز نوڈ نوڈ ہے، اور ہم صرف ایک لمحے میں جاوا اسکرپٹ میں اس کے مطابق دیکھیں گے. اس کیس میں پہلے بچے اور اس کی اکلوتی اولاد HTML ٹیگ ہے. doctype کی کوئی براہ راست تعریفیں نہیں ہے. یہ ایک خاص بات ہے، ہم یہ صرف جب وہ اس DOM آتا ہے کو نظر انداز کرنا چاہئے، اس مسودہ کو آبجیکٹ ماڈل درخت. کہ نوٹس HTML ٹیگ، جس میں ایک مستطیل کے طور پر منمانے دکھائے جانے والے تاثر کیا ہے، سر اور جسم: 2 بچے ہیں. اور اسی طرح وہ rectangles کے طور پر تیار کر رہے ہیں. یہ بامعنی pictorially یہ ہے کہ سر جسم کے بائیں ہے. مطلب یہ ہے کہ سر درخت میں پہلے آتا ہے. تو وہاں اصل میں ایک درخت کا حکم جب تم نے اسے اس طرح سے اپنی طرف متوجہ، اگرچہ شکل اور whatnot صوابدیدی ہیں. دوران ہیڈ نامی ایک واحد عنوان بچہ ہے، اور عنوان اصل میں اس کے خود کے بچے، جس میں "ہیلو، دنیا" ہے، جو میں نے جان بوجھ کر ایک یہاں اوول مستطیل سے تھوڑا سا مختلف ہے کے طور پر متوجہ کیا. یہ rectangles عناصر ہیں، جبکہ ہیلو، دنیا واقعی ایک متن نوڈ ہے. تو اس درخت میں ایک نوڈ ہے، لیکن یہ نوڈ کی ایک مختلف قسم کی ہے تو میں نے اسے منمانے مختلف بنائے. اسی طرح جسم ایک بچے کہا جاتا ہیلو، ساتھ ساتھ دنیا ہے، اتنی مختلف نوڈ اگرچہ وہ اتفاق وہی متن ہے، لیکن میں نے اسے تیار کی ایک ہی شکل کا استعمال کرتے ہوئے ہے. تو کسے پرواہ ہے؟ ٹھیک ہے، کیا HTML کے بارے میں اچھی بات ہے وہ یہ ہے کہ اس درجہ بندی فطرت ہے. اور جاوا اسکرپٹ اور خاص طور پر لائبریریوں جو آزادانہ طور پر دستیاب ہیں کے بارے میں کیا اچھا لگتا ہے اور jQuery طرح مقبول، تم درخت اتنی حیرت انگیز آسان ڈھانچے پر کر سکتے ہیں. چیزیں ہم نے اشارہ اور traversing کے درخت کے ساتھ C میں کیا تھا کوئی اور نوڈس پر recursing بائیں دائیں بچے بچے، اچانک ہم الگ الگ کر سکتے ہیں لے کے لئے حاصل کی جاچکی حیرت انگیز روشن ہے، اگر نراشا تھوڑا سا نہیں کے طور پر لیکن پروگرامنگ کے بارے میں جانے کے لئے کے لئے ایک مؤثر طریقہ تقریبا نہیں. اور اس طرح ان اعلی جاوا اسکرپٹ جیسے سطح زبانوں کے ساتھ ہم اس پیڑ سے بہت زیادہ intuitively پر کرنے کے قابل ہو جائے گا. اور یقینا نحو بہت واقف ہو جا رہا ہے. اگر آپ کو جاوا سکرپٹ کے پہلے کبھی نہیں دیکھا، یہ ایک بہت اچھا حوالہ ہے موزیلا لوگوں سے لوگ ہیں جو فائر فاکس بنا، تو ہے کہ آپ کی سہولت میں براؤز کرنے کے لئے آزاد محسوس کرتے ہیں. کیا آپ کو تلاش کر لیں گے - اور یہ سلائڈ دوسرے دن جو ہم کرتے تھے جیسا ہے - اسی طرح، مرکزی گئی ہے. تو جب آپ کو جاوا سکرپٹ میں ایک پروگرام لکھتے ہیں، کوئی اہم تقریب ہے. تم صرف کوڈ لکھنا شروع کریں. لیکن جاوا سکرپٹ اور سی اور پی ایچ پی کے درمیان ایک اہم فرق یہ ہے کہ جبکہ سی اور پی ایچ پی کی اس طرح دور کیا گیا ہے سرور سائیڈ کو پھانسی اس معاملے میں آلات کی طرف سے یا اس سے زیادہ عام طور پر ایک سرور کی طرف سے ڈیزائن کرتے ہوئے JavaScript کو عام طور پر ایک براؤزر کی طرف سے پھانسی ہے. دوسرے الفاظ میں، آپ کو جاوا سکرپٹ کے کوڈ لکھنے، جیسا کہ ہم ہیں ہو سکتا ہے، آلے میں ایک سرور، لیکن آپ یہ آپ کے HTML کے درمیان آپ کی سی ایس ایس کے درمیان میں شامل ہیں، پر، آپ کے GIFs اور آپ کے PNGs اور اپنے JPEGs میں تاکہ جب صارف آپکے ویب صفحے کا دورہ کرتا ہے، اگر آپ کو جاوا سکرپٹ کا استعمال کر رہے ہیں، کہ جاوا سکرپٹ کے کوڈ کو سرور سے براؤزر کے لئے آتا ہے، اور یہ براؤزر ہے کہ اصل میں یہ executes ہے. تو یہ کے بوددک املاک بھی کے لئے پر بامعنی منفی اثرات مرتب ہوں ہے. یہ حماقت کی طرح ہے یہاں تک کہ آپ اپنے آئی پی کی حفاظت کے بارے میں لگتا ہے کہ جب یہ جاوا سکرپٹ کے کوڈ کو آتا ہے کیونکہ یہ عام طور پر زبان کی نوعیت کی طرف سے پھانسی براؤزر کی طرف ہو جاتا ہے. تم obfuscate، کر سکتے ہیں جس کا مطلب ہے کہ آپ اسے پاگل اور بدسورت دیکھ سکتے ہیں کوئی وائٹ کے ساتھ، خوفناک متغیر کے نام، اس مشکل کے لئے لوگوں کو اپنی IP چوری لیکن چابی ہے کہ یہ براؤزر کی طرف سے پھانسی ہے. اگرچہ باجو میں جاوا سکرپٹ کے استعمال کیا جا سکتا ہے ایک سرور سائیڈ کے طور پر، سب سے زیادہ عام استعمال کے معاملہ ابھی براؤزر پر اب بھی ہے. اور یہاں ہے جو اس کی طرح لگتا ہے. یہ ایک ہے کہ اگر اور صرف پی ایچ پی کی طرح اگر اور صرف C کی طرح تعمیر،. یہاں ایک بولین اظہار ہے جب آپ کو "یا" 2 چیزیں ایک ساتھ. یہاں ہے جب آپ "اور" 2 چیزیں ایک ساتھ مل کر. یہاں ایک سوئچ بیان ہے، جو کہ پی ایچ پی کی طرح ہے اقدار کی مختلف اقسام پر ہے کہ میں آپ کو تبدیل کر سکتے ہیں. Loops اسی طرح loops کے لئے یہاں ہے، جس سے جو ہم نے پہلے دیکھا ہے identically کا ڈھانچہ ہیں. اگرچہ loops، ہم loops جبکہ ملا ہے. متغیرات، کبھی تو تھوڑا سا مختلف ہے. آپ متغیر کا اعلان جیسے آپ کو پی ایچ پی اور سی کرتے ہیں، لیکن اسی طرح جاوا اسکرپٹ کا کمزور ٹائپ ہے. آپ int یا فلوٹ یا سٹرنگ یا عام طور پر اس طرح کچھ بھی وضاحت نہیں ہے. تم متغیر کی وضاحت کر سکتے ہیں. تم متغیر کی وضاحت کرنے کی ضرورت نہیں ہے، لیکن یہ اثر پڑتا ہے اگر آپ ایسا نہیں کرتے. عام طور پر اگر آپ متغیر ترک، آپ نے اتفاقی طور بجائے مقامی ایک عالمی متغیر تخلیق کرتے ہیں. تو آپ کے وزٹرز کا ریکارڈ رکھا تجویز ہے کہ آپ تقریبا ہمیشہ صرف متغیر کا کہنا ہے کہ اور پھر متغیر کے نام. یہ ایک قسم نہیں ہے، ویرئیےبل کے لئے متغیر ہے. یہ ایک مثال ہے، چاہے وہ 123 یا "ہیلو دنیا" ہے گی. Arrays موجودہ اور syntactically پی ایچ پی کی طرح ہوتے ہیں. میں متغیر کی تعداد کا کہنا ہے کہ اور پھر میں مربع بریکٹ پھر سے استعمال ایک متغیر کا اعلان کریں گے جس کی قسم کی صف ہے جو کہ اس میں خاص طور پر ان کی تعداد کوما کے ذریعے الگ ہے ہے. اور پھر آخر میں، یہ صرف ایک ہے جو واقعی بہت مختلف لگ رہا ہے ہے. یاد ہے کہ ہم پی ایچ پی میں ایک طالب علم کے لئے ایک ساہچری سرنی کو لاگو ہوتا Zamyla کی طرح ہے کہ اس طرح نظر آئے، جہاں متغیر طالب علم کہا جاتا ہے ہو سکتا ہے. مربع بریکٹ کا مطلب ہے کہ یہاں ایک صف آتا ہے. حقیقت یہ ہے کہ میں عددی سوچکانک لیکن ڈور کا استعمال نہیں کر رہا ہوں - شناخت، گھر، اور نام - کا مطلب یہ ہے کہ یہ ایک ساہچری سرنی ہے، اور یہ تیر علامت اور angled بریکٹ برابر قیمت کا مطلب یہ ہے کہ چابی "شناخت" ہے، 1؛ قدر کے بٹن کو "گھر" ہے، Winthrop ہاؤس ہے. قیمت کلید "کا نام" ہے، Zamyla چان ہے. تو اندر اس ساہچری سرنی، جن میں سے ہر ایک اس کی اپنی قدر ہے 3 چابیاں ہے. ہم اس pset 7، یا آپ میں جلد ہی جاوا اسکرپٹ اسی خیال میں، دیکھا ہے لیکن یہ اس طرح نظر آئے جا رہا ہے. تو متغیر طالب علم - ڈالر کی کوئی علامت اور قسم کا کوئی ذکر نہیں لیکن پھر بھی متغیر - برابر، اور پھر گھوبگھرالی منحنی خطوط وحدانی کی وجہ سے جاوا اسکرپٹ میں جب سے آپ کو ان کلیدی قدر جوڑوں کھول آپ اصل میں ملاقات کی کسی چیز کو کچھ کا استعمال کریں. اور تم میں سے وہ لوگ جو APCS لے یا کیا طرح جاوا سے چیزوں کو یاد کر سکتے ہیں یا اسی طرح کی زبانوں. جاوا سکرپٹ جاوا نہیں ہے، سب سے پہلے. یہ ایک جان بوجھ ڈیزائن فیصلہ سال پہلے کی بات ہے کچھ اور جو مقبول تھا دستک اس کا نام ہے، اگرچہ اس کا کوئی بنیادی خود جاوا تعلق نہیں ہے. جاوا اسکرپٹ اشیاء کی ہے، اور آپ ان گھوبگھرالی تسمہ سنکیتن کی راہ کی طرف سے تشکیل. جاوا اسکرپٹ میں آبجیکٹ بہت زیادہ پی ایچ پی میں ساہچری arrays کے برابر ہیں یہ ان کے اندر ذخیرہ کرنے کا اعداد و شمار کو کب آتا ہے. لیکن اس سے بھی زیادہ طاقتور جاوا اسکرپٹ میں بہت آسانی سے آپ کو افعال منسلک کر سکتے ہیں کے اندر کسی چیز کی، اور اگرچہ آپ کو دیگر زبانوں میں یہ کر سکتے ہیں، یہ بہت عام مثال ہے، ہم کے طور پر نظر آئے گا. مختصر میں، یہ اعتراض ایک طالب علم کی نمائندگی کرتا ہے، جو خاص طور پر Zamyla ہے، اور یہ اسی طرح conceptually ہے، صرف اس سے syntactically مختلف ہے. میں اصل میں ایک فائل میں جاوا سکرپٹ کا استعمال ہے. اس کا بدل جاتا ہے وہاں ایک سکرپٹ ٹیگ ہے. ہم نے ایک انداز ٹیگ کو دیکھا ہے اور ہم دوسرے HTML ٹیگ کو دیکھا ہے. سکرپٹ ٹیگ اصل میں کچھ جاوا سکرپٹ کے کوڈ پر مشتمل ہے. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے آلے میں جہاں ہم کچھ منبع کوڈ پہلے بنایا ہے. میں اسے شائع نہیں کیا ابھی تک ویب سائٹ پر، لیکن مجھے کلاس کے بعد کروں گا. چلو، ایک اس کو کھولنے، blink.html. واپس 1990s میں، وہاں لفظی نامی ایک HTML جھپک ٹیگ ٹیگ اور یہ انٹرنیٹ پر سب سے زیادہ wonderfully overused ٹیگ میں سے ایک تھا آپ جس 1990s کچھ انداز ویب صفحے کا دورہ اور متن دیکھ کر تم سے اس طرح چمکتا شروع ہوتا، مارکوئس ٹیگ کے نتائج، جو متن اس طرح جا رہا تھا. چند بار میں جہاں دنیا اصل میں ایک ویب کے معیار پر اتفاق کیا ہے میں سے ایک، بورڈ بھر میں ہر کسی کو جھپک ٹیگ کچھ سال پہلے مار ڈالا. لیکن ہم طاقت آپ کے ایک مظاہرے کے طور پر جاوا اسکرپٹ کے ساتھ اسے زندہ کر سکتے ہیں جب آپ ایک ویب کے صفحے کے کے اندر ایک پروگرام لکھ سکتے ہیں. پہلے ہم نئی چیزیں زائد اور پرانی صرف توجہ مرکوز ہے. اس مثال میں پرانی چیز ہے. میں ایک HTML ٹیگ سر ٹیگ اور ایک عنوان ٹیگ ہے. جو یاد اس کے بعد میں ایک div کے ساتھ یہاں ایک جسم کا ٹیگ ہے، صرف اس صفحے کے ایک آئتاکار ڈویژن ہے کہ میں "سلام" کا ایک منفرد منمانے ID دیا ہے، ابھی تو میں منفرد اس کا حوالہ دے کا ایک طریقہ ہے، کچھ بہت آسان متن کی ہے: ہیلو، دنیا. اب مجھے اس فائل کے سب سے اوپر تک سکرال کریں اور دیکھیں کہ کیا نیا ہے. پہلی بات یہ ہے کہ نئے اوپر سکرپٹ ٹیگ ہے، اور اندر میں سکرپٹ ٹیگ نوٹس کی ایک تقریب کا اعلان کر دیا ہے. جاوا اسکرپٹ میں ایک تقریب، کافی پی ایچ پی کی طرح کا اعلان کرنے کے لئے، آپ لفظی تقریب پھر تقریب کے نام، قوسین لکھنے، کچھ دلائل اور ہو سکتا ہے اگر اس کے ذہن میں کوئی لیتا ہے. پھر میں نے ہمیشہ کی طرح میری گھوبگھرالی تسمہ ہے، ہے اور اب ہم نے کچھ تھوڑا نیا کوڈ ہے، لیکن دیکھتے ہیں کیا اس کا مطلب یہ ہے کہ. متغیر div تو یہ صرف مجھے ایک متغیر نام نہاد div دے کا مطلب ہے. میں اسے FOO فون کر سکتے ہیں، لیکن میں اسے div کہا کرنا چاہتا تھا وجوہات کی بناء پر ہے جو کہ ایک سیکنڈ میں واضح ہو جائے گا کے لئے. اس کے بعد یہ جاوا سکرپٹ میں بدل جاتا ہے - اور یہ جاوا سکرپٹ اپنے ویب کے صفحے میں سرایت کوڈ آن ہے - کہا جاتا دستاویز قسم کی ایک خصوصی عالمی متغیر ہے. جاوا سکرپٹ حقیقت میں ایک زبان شئی کو پر مبنی ہے. ہم میں سے 50 تفصیل میں کیا اس کا مطلب نہیں کرے گا، لیکن اب پتہ ہے کہ ایک اعتراض ایک struct کی طرح بہت زیادہ ہے. جیسا کہ ہم جس طرح دیکھا تھا جب جلد سے جلد اس مسئلے کا ایک میں ڈوبتا ہے جہاں ہم struct میں معلومات کا ایک بہت ڈال، اسی طرح ایک خاص struct ہے جو براؤزر کے ساتھ آتا ہے دستاویز ہے، کسی بھی ویب کے صفحے کے ساتھ آتا ہے. اس میں کچھ پیدا نہیں ہے. ، تاہم، اس دستاویز کی ساخت کے اندر آپ کو نہ صرف ڈیٹا ہے لیکن تم بھی کام کرتا ہے. اور کسی بھی وقت آپ کو ایک ڈھانچے کے اندر اندر کسی چیز کی ایک تقریب ہے، یہ ایک طریقہ کہا جاتا ہے. لیکن یہ ایک ہی بات ہے. ایک طریقہ ایک تقریب ہے کہ صرف تو کچھ اور اندر ہوتا ہے. تو اس کا مطلب یہ ہے کہ یہ خصوصی عالمی متغیر دستاویز کہا جاتا ہے ایک تقریب getElementById کہ لفظی کہ اس کی ملاقات کی. یہ آپ DOM سے ایک عنصر ہے، دستاویز آبجیکٹ ماڈل کا درخت ملے گا، جن ID اس کیس کے سلام میں ہے. دوسرے الفاظ میں، اس وقت ہم ڈیٹا ڈھانچے پر خرچ کھیل میں یہاں آتا ہے. DOM کی یہ تصویر ہے جو ہم نے ایک لمحے پہلے تھا، اگرچہ پروفائل تھوڑا مختلف ہے، اگر میں نے اس تصویر میں ایک div کیا document.getElementById مجھ سے واپس کریں گے پوائنٹر مؤثر طریقے سے ہو گی درخت، درخت میں مستطیل پر ایک حوالہ میں مستطیل. تو یہی اصل میں ان کے افعال میں سے ایک پر کال کا مطلب ہے. اس صورت میں دوبارہ یہ div ہے. یہ ایک جسم ہے یا ایک عنوان نہیں ہے. تو چلو دیکھتے ہیں تو کیا میں اس div کے ساتھ کیا کیا اب جب کہ میں نے اسے نامی اس متغیر div کے اندر ہے. یہ جاوا سکرپٹ کے ساتھ پتہ چلتا ہے آپ کو آپ کے صفحے کے CSS کو متحرک طور پر موافقت کرنے کی صلاحیت ہے. اب تک، CSS ہم نے محدود پیمانے پر ہی سہی، کیا ہے، سب انداز صفات میں ہے، یا کوئی اور جہاں ہم CSS ڈال دیا ہے؟ بگڑ ایک میں ہے. فائل کے سب سے اوپر دیئے گئے ٹیگ انداز میں. یا تیسرے نمبر پر رہا ہے؟ کوئی بیرونی فائل، کچھ سی ایس ایس. تو ان 3 مقامات پر ہم ابھی تک سی ایس ایس کیا ہے ہیں، لیکن پکڑنے ہے ہم مشکل یہ سب کوڈت ہے. تم نے فیصلہ کیا کے طور پر آپ کو 7 pset میں کبوتر، ہم نے فیصلہ کیا ہے اس سے پہلے تقریر ہمارے CSS کیا جائے گا. لیکن اگر آپ اپنے CSS کو تبدیل کرنا چاہتے ہیں، آپ کہ اصل میں کیا کر سکتے ہیں ایک بار آپ کو ایک حقیقی پروگرامنگ زبان ہے. CSS، HTML - نہیں پروگرامنگ زبانوں. جاوا سکرپٹ ہے. تو یہ پتہ چلتا ہے کہ جیسے ہی آپ کو درخت سے ان rectangles میں سے ایک ہے DOM کہا جاتا ہے، وہ خود اس کے اندر کچھ ڈیٹا ہے. تو div ہے کہ میں نے ابھی درخت سے پکڑا ہے جو ہم نے اس کے اندر ایک خاصیت کو فون کرتا ہوں کہا جاتا ہے، سٹائل، اور انداز جائیداد خود کو نامی نمائش کو جائیداد ہے. میں صرف ایک CSS صارف دستی دیکھ کر یہ پتہ چل جائے گی. اس کا بدل جاتا ہے وہاں کی نمائش CSS جائیداد ہے کہ ہے کہ یہ کیا کہتے ہیں کہ نہیں ہے. یہ نظر آتا ہے یا نہیں، نظر آتا ہے یا نہیں کچھ کرتا ہے. اور کس طرح تم کرتے ہو کہ یہ ہے. میں پروگرام کا سوال ہے کہ اس div کی مرئیت چھپا رہی ہے، کیا میں اسے تبدیل کروں؟ نظر آتا ہے. دوسری صورت میں اگر اس صفحے کی مرئیت نہیں پوشیدہ ہے، منطقی طور پر میں نے اسے مخفی کر سکتا ہوں. مجھے کوئی اندازہ نہیں ہے کیوں یہ نظر آتا ہے اور پوشیدہ اور ظاہر نہ ہوں اور پوشیدہ ہے. اس راستے میں ایک غریب ڈیزائن فیصلہ تھا. لیکن وہ یقینا CSS میں مخالف ہیں: نظر آتا ہے اور پوشیدہ ہے. یہ سب کچھ ہے اور اس کا مطلب یہ ہے میری فائل کی سی ایس ایس کو تبدیل اور، پر اور اس مخصوص div کے لئے. لیکن پھر یہ کہا جاتا جھپک ایک تقریب ہے. جھپک تقریب میں جب کہا جاتا ہے؟ یہ پتہ چلا ہے کہ ایک خاص عالمی متغیر کہتے ہیں ونڈو ہے، دستاویز کی روح میں اسی طرح کی ہے، لیکن جبکہ دستاویز آپ کے ویب کے صفحے سے مراد، DOM درخت کی طرح، HTML آپ کو سرور سے بھیجا، ونڈو سے مراد اس کے ارد گرد کروم، ایڈریس بار، عنوان بار، اور ہے کہ آپ کے ویب کے صفحے کے ارد گرد چیزیں. اور یہ پتہ چلا ہے کہ ونڈو اعتراض اس کی ایک خصوصی تقریب اندر بلایا setInterval ہے ایسا کرتا ہے کہ وہ کیا کہتی ہے. اس معاملے میں ہر 500 milliseconds - یہ ایک وقفہ ترتیب دے گا - اور ایک اندازہ کیا ہر 500 milliseconds جا رہا ہے؟ یہ اس تقریب کی جھپک پر عمل کرنے جا رہا ہے. اور کیا اچھا یہاں ہے یہ ہے کہ ہم C کیا کر سکتے تھے اگرچہ ہم نے کبھی نہیں کیا. C بلایا تقریب اشارہ کچھ جہاں آپ کے ارد گرد افعال کو منتقل کر سکتی ہیں ہے دلائل کے طور پر. اسی طرح جاوا سکرپٹ میں آپ کو ایک اور تقریب میں ایک تقریب کے نام منتقل کر سکتی ہیں. نوٹس اور جو میں کر رہا ہوں. میں یہ نہیں کر رہا ہوں. اگر میں جھپک کے بعد قوسین ڈال، جو جھپک تقریب کو کال کا مطلب ہو گا. اگر میں ان کا ترک ہے، جو یہاں کا مطلب ہے کہ جھپک تقریب ہے تاکہ setInterval یہ ہر 500 milliseconds کو فون کر سکتے ہیں. تو نتیجہ ہے، اگرچہ atrocious ہے، کہ اگر میں localhost میں جاکر blink.html جانے کی، اب میں یہ بار بار ہو رہا ہے. اور اگر میں اصل عنصر کا معائنہ، دیکھو، اگر ہم یہ دیکھ سکتے ہیں. آپ کے وزٹرز کا ریکارڈ رکھا عنصر کا معائنہ دو، آپ کے وزٹرز کا ریکارڈ رکھا صرف تھوڑا سا سکرال، دو کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یہاں عناصر کو منتخب کریں، اور کروم انسپکٹر کی DOM اندر محسوس. یہ لفظی اور پیچھے ہر 500 milliseconds تبدیل کرنا. اگر ہم ہمارا دوست نیٹ، اگر تم نے کبھی ایک وقفہ کے ساتھ یہ کس طرح کام کر رہا ہے، اسی طرح خیال حیران، لیکن نیٹ اصل میں یہ خاص طور پر یہاں کے معاملے میں رنگ کا بہت ہی مؤثر استعمال کر رہا ہے. تو اور کیا واقعی ہم نے اس کے ساتھ کیا کر سکتے ہیں؟ چلو، ایک اور مثال کو کھولنے کے اور کچھ کرنے کی کوشش کریں کہ پروگرام چیزوں جھپک کرنے سے بھی زیادہ فائدہ مند ہے. آج کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ہمارے فارم ڈائریکٹری میں جاؤ اور form0 میں جانے دو. یہ ممکن ugliest شکل ہے کہ میں اس کے ساتھ آ سکتا ہے تھا، اور مجھے صرف تمہیں دکھاتا ہوں کہ یہ ایک براؤزر میں کی طرح لگتا ہے. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے localhost / فارم میں جانا ہے، اور اس form0 ہے. یہ ایک سپر بدسورت HTML قسم ہے جو کہ ای میل کے لئے چند شعبوں پاس ورڈ کے لئے ہے، ہے، پاس ورڈ، اور اس کے بعد ایک چھوٹا سا دیے گئے چیک باکس کو کچھ شرائط و ضوابط سے اتفاق کرتا ہوں. پکڑنے ہے اگر میں اس فارم کا دورہ کریں اور میں آپ کو اپنا ای میل ایڈریس نہیں دینا چاہتا، میں شاید شرائط و ضوابط سے متفق نہیں کرنا چاہتے ہیں، میں کلک کر سکتے ہیں رجسٹر اور یہ آپ کے وزٹرز کا ریکارڈ رکھا اجازت دیتا ہے کے ذریعے ویسے بھی. یہ پی ایچ پی کے ایک پاگل بلایا dump.php فائل جمع کرنے کے لئے ہوتا ہے. سب اس سے فرق پڑتا ہے تشخیصی مقاصد کے لئے صرف _GET ڈالر کے مندرجات پرنٹ. یہ تھا جو ابھی صارف کی طرف سے پیش کیا گیا ہے. لیکن لگتا ہے کہ ہم واقعی صارف فارم جمع کرانے کی توثیق کرنا چاہتے ہیں. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے 1 ورژن میں جانے دو. یہ form1.html ہے. یہ صرف برا کے طور پر خوبصورت دکھائی دیتی ہے، لیکن محسوس کتنا پسند ہے. اگر میں تعاون کے بغیر رجسٹر پر کلک کریں، میں چللایا ہو جاتے ہیں. "آپ کو آپ کے ای میل ایڈریس مہیا کرنا ضروری ہے." ٹھیک ہے. تو مجھے اس کی کوشش. تو malan@harvard.edu. میں ایک پاس ورڈ کی ضرورت نہیں ہے. رجسٹر کریں. "آپ کو ایک پاس ورڈ مہیا کرنا ضروری ہے." ٹھیک ہے. تو میں نے کرمسن کے ایک پاس ورڈ فراہم کریں گے. رجسٹر کریں. "پاس ورڈ مماثل نہیں ہے." اب میں کرمسن یہاں ٹائپ ہے. میں نے غلطی سے اس کی جانچ پڑتال کی ہے. رجسٹر کریں. "تم شرائط و ضوابط سے متفق ہونا ضروری ہے." ٹھیک ہے. وہاں اتفاق کرتا ہوں. رجسٹر کریں. اور اب یہ کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے وہاں تشخیصی پیداوار کو ظاہر کرتا ہے. تو کیا صرف ہوا ہے؟ ہم اس فارم گذارشات کو درست کرنے کی صلاحیت ہے. اصل میں، اگر آپ کو 7 pset میں ڈوبکی نے، اس سے مستثنی مانگتی ہوں تقریب ہے کہ یہ خوبصورت سکرین پر ایک پیغام کے ساتھ صارف چللانا آسان بنا دیتا ہے. میں تھوڑا سا مختلف نظام ہے، الرٹ تقریب کا استعمال کرتے ہوئے کر رہا ہوں، جو ایک تقریب نہیں ہے، اس مقصد مسکرایا ہے کیونکہ یہ بہت بدسورت صارف پیغامات کرتا ہے. لیکن میں یہاں کیا کر رہا ہوں. یہ form1.html ہے، اور دیکھیں گے کہ میں نے کچھ بہت واقف نحو ہے: جسم ٹیگ، فارم کا ٹیگ، کارروائی وصف، طریقہ وصف ہے. نوٹس لیکن میں نے اپنے طور سہولت کے لئے ایک منفرد شناختی نمبر دے دیا ہے. اس وقت میں ایک ای میل میدان جس کی قسم متن ہے ہے، ایک پاس ورڈ کا خانہ جن کی قسم، پاس ورڈ کی تصدیق میدان جس کی قسم پاسورڈ ہے ہے، اور پھر ایک چیک باکس جس کا نام یہاں پر معاہدہ ہے، قسم، چیک باکس ہے. اور پھر میں نے جمع کرانے کے بٹن مل گیا ہے. لیکن سب سے اوپر محسوس کیا میں نے. سب سے پہلے، اسکرپٹ ٹیگ ایک اور فائدہ ہے. اگر آپ کو ایک اور فائل میں صرف طرح CSS کے ساتھ کچھ جاوا سکرپٹ کے کوڈ ہے، آپ اسے شامل کر سکتے ہیں. اور آپ کو اسکرپٹ کے ذریعہ کے ساتھ ایسا، اور پھر نوٹس میں بظاہر منسلک رہا ہوں ایک بہت لمبا راستہ googleapis.com لیکن جن کی فائل کے نام jquery.min میں ختم ہو جاتی ہے کم از کم کے لئے JS. jQuery جاوا سکرپٹ کے لئے ایک انتہائی مقبول لائبریری ہے کہ صرف جاوا اسکرپٹ کرتا ہے ہے اور بھی زیادہ استعمال کرنے کے لئے صارف دوست ہے. یہ مؤثر طریقے سے ایک اصل معیار بن گیا ہے. اگرچہ جو تم کو دیکھنے کے لئے کے بارے میں پاک جاوا اسکرپٹ فی SE نہیں ہے، CS50 لائبریری کی طرح جاوا سکرپٹ کے سب سے اوپر پر ایک لائبریری ہے ایک پرت ہے کم سطح کے سی کوڈ کے سب سے اوپر پر حقیقت یہ ہے انٹرنیٹ پر تقریبا ہر کسی کو اس کا استعمال کرتا ہے. تو یہ تربیت کے پہیوں نہیں ہیں. یہ ہے کہ ان دنوں کے بہترین طرز عمل ہے. اب ذیل میں دیکھیں گے کہ میری اپنی سکرپٹ ٹیگ ہے، اور محسوس کیا میں نے یہاں کیا ہے. یہ پتہ چلا ہے کہ jQuery کچھ تھوڑا سا پسند کرتا ہے. جاوا اسکرپٹ ڈالر نشانیاں ہیں، لیکن وہ معنی ہیں. وہ خط A B یا سی کی طرح ہیں jQuery صرف اس بات کی رکھی دعوی کے کنونشن یا طرح اپنایا کہ ڈالر ان کی خصوصی علامت ہو جائے گا. تو جیسے ہی آپ کو اس عالمی جاوا اسکرپٹ فائل سکرپٹ ٹیگ کے ساتھ یہاں لوڈ، آپ کو ایک خصوصی عالمی متغیر ہے کہ ڈالر کہتے ہیں کو رسائی حاصل ہے. یہ زیادہ مناسب طریقے سے jQuery کہتے ہیں، لیکن اس سے تقریبا ڈالر کے طور پر کے طور پر تلاش نہیں لگتی ہے. لیکن ڈالر کوئی خاص معنی ہے. پی ایچ پی میں یہ خاص معنی تھا. تم نے اسے ایک متغیر کے سامنے میں تھا. یہ صرف ایک کی تلاش میں بات یہ ہے کہ وہ لیا ہے. یہاں کیا چل رہا ہے؟ نوٹس میں jQuery فنکشن سے گزر میری عالمی متغیر دستاویز رہا ہوں اور اس کے بعد میں فون کرنے کے لئے تیار ہوں. کیا jQuery بنیادی طور پر یہ ہے کہ یہ آپ کو کچھ ونیلا جاوا اسکرپٹ چیزیں لینے کے لئے کی اجازت دیتا ہے ہے ہے دستاویز اعتراض کی طرح،، ونڈو اعتراض اور اگر تم اس کے jQuery تقریب میں پاس - اور پھر صاف ہو جائے، یہ ایک ملاقات کی jQuery جشن ہے - کیا اس سے فرق پڑتا ہے یہ ہے کہ یہ آپ کو دستاویز کے ایک خصوصی ورژن واپس ہے کہ اس کے ساتھ منسلک فعالیت ہے. تو خام جاوا اسکرپٹ میں کوئی تیار تقریب ہے، لیکن اگر آپ jQuery تقریب دستاویز پہلے گزر یہ آپ کو دستاویز کے اعتراض کا ایک خصوصی ورژن واپس جو کہ زیادہ پسند ہیں خصوصیات ہیں. اور یہی وجہ ہے کہ لوگوں کو یہ پسند ہے. یہ صرف کام کرنا آسان بناتا ہے، جیسا کہ ہم کو دیکھنے کے لئے کے بارے میں ہے. تو کوڈ کے اس لائن کا مطلب کیا ہے؟ کوڈ کا یہ لائن کا مطلب ہے کہ جب دستاویز تیار ہے - دوسرے لفظوں میں، ایک بار براؤزر اس فائل کے سب سے اوپر نیچے کو پڑھنے کے کیا جاتا ہے - آگے بڑھیں اور مندرجہ ذیل تقریب پھانسی. جاوا اسکرپٹ میں واقعی دلچسپ کیا ہے - اور پی ایچ پی کی ہے، اس کے ساتھ ساتھ - گمنام افعال ہے. جاوا اسکرپٹ میں آپ افعال کا اعلان کر سکتے ہیں کہ اس کا کوئی نام نہیں ہے لیکن وہ ایک جسم ہے. نوٹس یہاں کیا ہو رہا ہے. نامی تیار فنکشن ہے، اور یہ صرف مندرجہ ذیل کام کا مطلب ہے جب پورے ویب صفحہ کے لئے تیار ہے، جب یہ سب ہے سرور سے میں پڑھا ہے. آپ کیا کرنا چاہتے ہیں؟ میں کوڈ کا ایک حصہ کو مکمل کرنے چاہتے ہیں. یاد رکھیں کہ ہم اس کوڈ کو فورا پھانسی نہیں کرنا چاہتے ہیں. اگر میں اس لپ، یہ فوری طور پر مطلب کوڈ کا ان لائنوں کو قتل کرنا شروع کریں گے. لیکن اس طرح ایک گمنام تقریب میں حقیقت یہ ہے کہ میں نہیں، نہیں، نہیں کہہ رہا ہوں، اس لپیٹ کا مطلب یہ پھانسی نہیں ابھی تک، یہ آخر میں فون ہے. ہم یہ ہمارے پچھلے فارم مثال کے طور پر میں نے دیکھا ایک لمحے پہلے. کیا تقریب میں ہم آخر میں نے فون کیا تھا، 500 milliseconds کے بعد؟ پلکیں جھپکاتی. ایک ہی خیال تو. ایک بار پھر، یہاں تک کہ اگر یہ تھوڑا عجیب لگتا ہے، صرف ایمان اب لے کہ ایک گمنام تقریب ہے کہ آخر کہتے ہیں کا اعلان، آپ کو صرف فنکشن () لکھنے { تو ہم کیا کوڈ آخر کار پر عمل کرنے جا رہے ہیں؟ مندرجہ ذیل. یہ بھی ایک چھوٹا سا نیا لگتا ہے، لیکن اس کا مطلب ہے کہ jQuery تقریب ہے، اور اب یہ ایک شارٹ کٹ ہے. کورس کی سکرین کے سب سے نیچے دیئے گئے HTML کا یہ ٹکڑا کسی درخت نمائندگی ہے. یہ نہیں ہے. اس صفحے کو اس خوش مثال کے طور پر، دنیا کے مقابلے میں زیادہ دلچسپ ہے. لیکن کچھ درخت اس HTML کے مساوی ہے. گردن میں درد پنراورتی تقریب کی کسی قسم کو لاگو کرنے کے لئے کی ضرورت جڑ نوڈ کو شروع کرنے اور پھر نوڈ جس کی ID رجسٹریشن ہے. تو کیا jQuery سپر آسان بناتا ہے کے لئے ہم سے لفظی ہے. آگے بڑھو اور مجھے لے جو بھی div یا جو کچھ بھی شکل، جو بھی HTML عنصر رجسٹریشن کے ایک ID ہے. یہ document.getElementById (رجسٹریشن) کے برابر ہے. jQuery جیسے لوگوں کیوں نہیں کرتے؟ کیونکہ یہ چھوٹا ہے ٹائپ کریں. لیکن یہ ہے. یہ وہی خیال ہے. مجھے ٹیگ جن کی ID رجسٹریشن ہے حاصل کریں. اور اس ٹیگ،، جس میں ایک فارم ہوتا ہے جب پیش ہے، آگے بڑھو اور اس کوڈ کو پھانسی. تو چلو کہ ہم کس طرح فارم کی توثیق کر رہے ہیں پر اب دیکھو. نحو سب سے پہلے میں اس کا اقرار بھی خفیہ ہے، لیکن کیا ہو رہا ہے؟ اگر لائن کوڈ کے اس سچ ہے، میں صارف میں اس کا یا اس کے ای میل ایڈریس کو فراہم کرنے کے لئے چللانا جا رہا ہوں. تو کوڈ کے اس لائن ہے؟ $ jQuery کا مطلب ہے. اب یہ نوٹس. یہ CSS طرح طرح کی ہے. اگر آپ سی ایس ایس میں dived ابھی تک ہے، آپ جانتے ہیں، کہ یہ عنصر جس کی ID رجسٹریشن ہے کا مطلب ہے کہ گے. خلا کا مطلب ہے کہ ایک بچے یا رجسٹریشن کی اولاد جس کا نام ان پٹ ہے. اور پھر مربع بریکٹ میں اس چیز ایک چھوٹا سا فلٹر ہے. اور یہ بھی اگر یہ خفیہ لگتا ہے، صرف کا مطلب ہے کہ فارم جس کی ID رجسٹریشن ہے، ، کہ جس کا نام ای میل یہ ہے کے ان پٹ عنصر اندر جانے کی اور پھر اس کی قیمت حاصل ہے، جو بھی اس کی قدر کا ہوتا ہے - asdf جو میں ٹائپ شدہ یا malan@harvard.edu ہے اگر یہی ہے جو میں ٹائپ ہو. تو اگر صارف فارم ای میل فیلڈ == کچھ نہیں کی قدر چللاو. ورنہ اگر پاس ورڈ کا خانہ کی قدر صارف میں کچھ نہیں == چللاو. دوسری صورت میں، اگر پاس ورڈ کا خانہ کی قدر کی تصدیق کی فیلڈ کی قیمت کے برابر نہیں ہے جو دوسرے فارم عنصر تھا، صارف پر چللاو. اور پھر آخر میں - اور اس سے بھی اس کے اپنے کچھ نئے نحو ہے، لیکن ایک بار آپ نے اسے دیکھا ہے، اسے کم سے کم تھوڑا سا زیادہ مناسب ہے - اور اگر فارم جس کی ID رجسٹریشن ہے ایک ان پٹ عنصر ہے جس کا نام معاہدہ ہے ہے اور اس کی جانچ پڑتال کی ہے، آگے جاؤ اور صارف میں چللانا. تو میں مکمل طور پر تسلیم کرتے ہیں، یہ پہلی نظر میں مکمل طور پر غالب ہے. یہ نئے نحو کی ایک بہت ہے. لیکن jQuery کے تمام نمونوں کی ان اقسام مندرجہ ذیل ہے. اور سچ میں، میں بھی نہیں تھا کہ یہ موجود جب تک چند منٹ پہلے جانتے ہیں. میں Googled، "آپ کس طرح چیک کرنے کے لیے اگر ایک چیک باکس jQuery میں جانچ پڑتال کر رہا ہے؟" اور یہ نحو ہے، کیونکہ کرنے کے مختلف طریقوں اصل خام جاوا سکرپٹ کے کوڈ کے ساتھ. تاکہ مسئلہ 7 سیٹ کے بہت پہلے صفحے پر زور دیتا ہے، 7 pset بہت خود bootstrapping میں ایک مشق ہے ہم فراہم جہاں امید ہے، جس کے ساتھ pset سے نمٹنے تصوراتی فریم ورک ہے. لیکن جیسا کہ اکثر ویب ڈیزائن کے ساتھ معاملہ ہے، آپ پر منحصر ہے واقعی ارد گرد ڑکیلنا ویب سے کوڈ کے ٹکڑوں اور مثالیں بہت لمبے وقت کے طور پر تم نے ان کا حوالہ دیتے شامل اس پہلی شیٹ پر کی شرائط کے مطابق، احساس اور یہ کہ HTML، CSS، جاوا سکرپٹ بھی SQL سیکھنے واقعی میں اس مشق میں گھر کے طور پر ہم ان تربیت پہیوں کو لے جانے کے شروع ہونا چاہیے. کا احساس اور بھی وہاں تو بہت زیادہ چیزیں آپ کو ایک براؤزر کے ساتھ کیا کر سکتے ہیں ہے. ان عناصر کا سب سے زیادہ کے اندر دوسرے سے ملاقات کی ایونٹ handlers چیزیں ہیں. فون کیا اور اگرچہ ہم صرف والوں میں دیکھا onsubmit اور onready آپ onkeydown، onkeyup کی طرح باتیں کر سکتے ہیں، جب صارف ایک چابی سے مباشرت چاہیں، تو آپ کہ اور اہم اپ کے لئے سن سکتے ہیں. Gmail کے کی بورڈ شارٹ کٹس ہیں. گوگل کے لئے تحریر کیسے C کی طرح کی بورڈ شارٹ کٹس پر عملدرآمد کرتا ہے؟ وہ واقعات کے لئے، مدد، کے طور پر وہ onkeypress یا onkeyup اور onkeydown کی طرح، کہا جاتا رہے ہیں. اگر تم نے کبھی کچھ مینو کے اختیارات پر اپنے ماؤس کو معلق اور اچانک voila، تمام، ایک مینو ظاہر ہوتا ہے یا گرافک تبدیلیاں رنگ، کہ وہ کس طرح کر رہے ہیں؟ بجائے onready یا onsubmit کے لئے مدد، آپ onmouseover یا onmouseout کے لئے مدد. تو مختصر میں، یہ بہت سادہ مبادیات کے ساتھ ہے کہ ہم آج کی سطح قلم ھیںچنا شروع کیا ہے اور ہم نے بدھ کے روز مزید کودو، آپ ہیں، تیزی سے کریں گے، قسم کی چیزیں ہیں جو آپ نے پہلے ہی سے واقف ہو پر عملدرآمد کرنے کی طاقت ہے. تو وہاں ختم، اور ہم نے بدھ کے روز اس کو جاری رکھیں گے. [CS50.TV]