1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Linggo 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Harvard University] 3 00:00:04,740 --> 00:00:07,170 [Ito ay CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Ayos lang. Maligayang pagbabalik. Ito ay CS50, at ito ay ang simula ng linggo 9. 5 00:00:12,350 --> 00:00:16,600 Ngayon naming tumutok sa mga partikular na sa disenyo, hindi na sa konteksto ng C 6 00:00:16,600 --> 00:00:20,010 ngunit sa konteksto ng PHP at isang bit ng SQL at isang bit ng JavaScript, 7 00:00:20,010 --> 00:00:23,730 lalo na patungo sa isang dulo ng parehong pset 7 at din ang iyong panghuling proyekto. 8 00:00:23,730 --> 00:00:26,310 Sa katunayan, kung ikaw ay sa puntong iyon sa iyong huling proyekto 9 00:00:26,310 --> 00:00:30,100 kung saan baka bilang ng isang oras o kaya ang nakalipas sa iyo ng hindi bababa sa na nagsimula upang bigyan ng ilang-iisip 10 00:00:30,100 --> 00:00:33,730 sa iyong panghuling proyekto at pinag-iisipan mo na nais mong makipagtulungan sa 1 o 2 mga kaklase, 11 00:00:33,730 --> 00:00:36,150 kung nagkakaroon ka ng problema sa pagkonekta sa sinabi kaklase, 12 00:00:36,150 --> 00:00:40,570 huwag mag-atubiling upang punan ang form sa cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Nagtatanong ka lang kung sino ka, kung anong uri ng proyekto pinag-iisipan mo tungkol sa, 14 00:00:42,880 --> 00:00:44,870 kung saan ka nakatira lamang para sa mga logistical dahilan. 15 00:00:44,870 --> 00:00:49,510 At pagkatapos ay kung nais mong panatilihin ang isang mata sa sa mga susunod na linggo o kaya spreadsheet URL doon, 16 00:00:49,510 --> 00:00:53,520 maaari mong makita ang isang read-only na bersyon ng Google doc 17 00:00:53,520 --> 00:00:56,010 kung saan kami ay mangolekta ng impormasyon na iyon. 18 00:00:56,010 --> 00:00:58,930 Kaya kung nais mong upang gumana sa isang tao, sa pamamagitan ng lahat ng paraan huwag mag-atubiling makipag-ugnay sa mga tao 19 00:00:58,930 --> 00:01:00,480 sa pamamagitan ng na mekanismo. 20 00:01:00,480 --> 00:01:02,690 Subalit ang karamihan sa mga tao ang trabaho solo. Na lubos fine. 21 00:01:02,690 --> 00:01:06,120 Kaya huwag pakiramdam na ito ay sa anumang paraan sapilitan. 22 00:01:06,120 --> 00:01:09,680 Sa Biyernes ito ay lamang sa akin at ng ilang ng koponan sa dito, 23 00:01:09,680 --> 00:01:11,100 walang laman ang teatro para sa pinaka-bahagi. 24 00:01:11,100 --> 00:01:14,600 Mayroong ay 3 turista sitting doon, kaya na ay isang maliit na mahirap. 25 00:01:14,600 --> 00:01:18,970 Ano usapan natin ang tungkol database at usapan natin ang tungkol pset 7 ng kaunti. 26 00:01:18,970 --> 00:01:22,200 At kung hindi mo mangyari na mahuli sa video pa, na fine. 27 00:01:22,200 --> 00:01:26,770 Kukunin ko na subukan upang tukuyin ang anumang mga tuntunin na namin kung hindi man mang-ahas 28 00:01:26,770 --> 00:01:28,840 batay sa Biyernes ng panayam. 29 00:01:28,840 --> 00:01:32,550 >> Ngunit ngayon na kami ay pagpunta sa subukan upang makakuha ka sa punto 30 00:01:32,550 --> 00:01:34,990 ng hindi lamang upang gawin ang isang bagay tulad ng pset 7 31 00:01:34,990 --> 00:01:37,360 ngunit talagang unawa kung ano ang nangyayari sa ilalim ng hood, 32 00:01:37,360 --> 00:01:41,910 lalo ilan ng abstractions na ilagay namin sa lugar sa file functions.php 33 00:01:41,910 --> 00:01:45,780 upang gumawa ng iyong buhay ng kaunti mas madali ngunit kaya na huli mo maunawaan 34 00:01:45,780 --> 00:01:48,760 sa gayon ay kapag ang mga gulong ng pagsasanay dumating sa loob ng ilang linggo maaari mo pa ring nakataguyod makalipas ang 35 00:01:48,760 --> 00:01:53,750 sa tunay na mundo at gawin ang mga bagay na ito nang walang anumang CS50 framework sa ilalim mo. 36 00:01:53,750 --> 00:01:57,500 Ito $ _SESSION, para sa mga na pamilyar 37 00:01:57,500 --> 00:02:01,960 o na na nahuli ang video sa Biyernes, ano ang nilalaman ng session ipaalam sa gawin sa amin 38 00:02:01,960 --> 00:02:04,330 sa PHP-based web application? 39 00:02:04,330 --> 00:02:09,650 Ito ay isang superglobal variable, na nangangahulugan na katulad sa espiritu sa GET at POST 40 00:02:09,650 --> 00:02:13,970 at ng ilang mga iba, ngunit kung ano ang bagay na ito kapaki-pakinabang para sa? 41 00:02:13,970 --> 00:02:18,320 >> Ano ang session na ginagamit para sa? Oo. [Mag-aaral] Nagla-log in. 42 00:02:18,320 --> 00:02:21,040 Paumanhin? [Mag-aaral] Nagla-log in Nagla-log in. Katunayan. 43 00:02:21,040 --> 00:02:25,100 Sa pset 7 na aming ginagamit session na ito superglobal upang pangasiwaan ang pag-log in. 44 00:02:25,100 --> 00:02:28,600 At kung ano ang magaling tungkol ito superglobal na ito ang isang nag-uugnay array. 45 00:02:28,600 --> 00:02:33,190 Isang nag-uugnay array, manariwa sa diwa, isang array ngunit na indeks ng hindi na kailangang maging numero 46 00:02:33,190 --> 00:02:37,670 tulad ng 012. Maaari silang maging ang mga numero o maaari silang kahit string. 47 00:02:37,670 --> 00:02:44,890 At kaya kung ikaw dived sa pset 7, maaari mong isipin ang na namin ang pag-iimbak ng isang key na tinatawag na ID 48 00:02:44,890 --> 00:02:50,330 sa loob ng ito nag-uugnay array na ang halaga ay isang bagay tulad ng 123 - 49 00:02:50,330 --> 00:02:53,780 anuman ang kasalukuyang naka-log in gumagamit ID ay. 50 00:02:53,780 --> 00:02:59,470 Ang pagganyak para sa na kahit na matapos ang gumagamit ay binisita localhost 51 00:02:59,470 --> 00:03:02,720 o aking website sa mas pangkalahatang at pagkatapos nilang naka-log in, 52 00:03:02,720 --> 00:03:07,320 kahit na hindi sila i-click ang isang link o bumalik sa aking website para sa 5 minuto 53 00:03:07,320 --> 00:03:10,730 o kahit isang oras o kahit sa isang araw ngunit iwanan nila ang kanilang browser window bukas, 54 00:03:10,730 --> 00:03:14,370 sa pamamagitan ng ito superglobal ko matandaan na sila ay naka-log-in. 55 00:03:14,370 --> 00:03:21,140 >> Sa ibang salita, ito ay nagbibigay-daan sa akin upang mag-imbak ng bahagyang pangmatagalang anumang bagay na gusto ko tungkol sa isang user. 56 00:03:21,140 --> 00:03:24,390 At maaari mong tingin nito ay talagang bilang ang pagkakatawang-tao ng isang shopping cart. 57 00:03:24,390 --> 00:03:27,740 Lugar tulad ng Amazon malinaw naman ipaalam mo ilagay ang mga bagay sa isang shopping cart, 58 00:03:27,740 --> 00:03:32,230 ngunit HTTP, ang protocol na nagpapagana sa Web, ay stateless 59 00:03:32,230 --> 00:03:34,230 sa kamalayan na kapag bumisita ka sa isang website, 60 00:03:34,230 --> 00:03:37,290 para sa pinaka-bahagi hindi mo ang ilang mga pare-pareho ang koneksyon ng network 61 00:03:37,290 --> 00:03:39,270 sa pagitan ng iyong browser at ang server. 62 00:03:39,270 --> 00:03:42,190 Sa lalong madaling na-download mo ang HTML at ang mga JPEG na at ang mga GIF at ang lahat ng iyon, 63 00:03:42,190 --> 00:03:48,200 mawala ang koneksyon at mo lamang ng isang kopya ng HTML at watnat mula sa server. 64 00:03:48,200 --> 00:03:53,000 Ngunit kung ang server ang nais upang matandaan ang isang bagay tungkol sa iyo, 65 00:03:53,000 --> 00:03:57,580 pasanin sa server sa aktwal na-record na impormasyon. 66 00:03:57,580 --> 00:04:00,130 At kaya mo ang programmer na may kontrol sa server 67 00:04:00,130 --> 00:04:04,400 ilagay ang karamihan ng anumang nais mo sa loob ng ito superglobal nag-uugnay array 68 00:04:04,400 --> 00:04:06,850 at ito ay doon sa susunod na oras na ang user na ito ay bumalik, 69 00:04:06,850 --> 00:04:12,070 kung ito ay ang mga minuto o kahit araw, maliban kung sila isara ang kanilang mga browser window, 70 00:04:12,070 --> 00:04:14,360 sa puntong session mawala. 71 00:04:14,360 --> 00:04:17,779 Kaya ito ay panandalian imbakan, mabuway, at ito ay sinadya upang pumunta ang layo 72 00:04:17,779 --> 00:04:22,360 sa lalong madaling isinasara ng user ang kanilang browser - hindi lamang na tab, madalas sa buong browser, 73 00:04:22,360 --> 00:04:24,930 sa gayong paraan epektibong pag-log sa user. 74 00:04:24,930 --> 00:04:28,000 Kaya kung paano ay bagay ito aktwal na naipatupad? 75 00:04:28,000 --> 00:04:31,360 Natin ang isang mabilis na pagtingin sa isang simpleng halimbawa na namin ay tumingin sa sa Biyernes. 76 00:04:31,360 --> 00:04:33,340 Para sa mga pamilyar, ito ay kasing simple ng ito. 77 00:04:33,340 --> 00:04:35,910 Ito ay isang web page na ang tanging layunin sa buhay ay upang sabihin sa akin 78 00:04:35,910 --> 00:04:38,000 kung gaano karaming beses na binisita ko ang pahinang ito. 79 00:04:38,000 --> 00:04:41,670 Ito ang unang pagkakataon dito sa Lunes na binisita ko ito, kaya ito sabi ni 0 beses. 80 00:04:41,670 --> 00:04:46,940 >> Ngunit kung sisimulan ko i-reload ang pahinang ito, sinasabi nito 1 oras, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 at ito ay malaon lamang panatilihin sa pagbibilang up, up, up, up, up 82 00:04:49,800 --> 00:04:53,130 para sa bawat oras na aking aktwal na i-click ang I-reload ito. 83 00:04:53,130 --> 00:04:58,830 Kaya kung paano ay pagtatrabaho na ito? Hayaan akong pumunta sa loob ng ang file na ito na tinatawag na counter.php. 84 00:04:58,830 --> 00:05:02,490 Ang tuktok na bahagi ng lahat ng asul na mga komento, ngunit kawili-wiling bahagi ay dito. 85 00:05:02,490 --> 00:05:06,670 Sa linya 13 Tinatawag namin itong function na session_start, 86 00:05:06,670 --> 00:05:09,600 at iyon ay literal ang lahat ng kailangan mong gawin kung gusto mong magkaroon ng access 87 00:05:09,600 --> 00:05:13,610 ito espesyal superglobal tinatawag $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Na ginagawang lahat ng mga posibleng, at makikita namin makita sa isang sandali kung paano na ang lahat ng posibleng. 89 00:05:17,430 --> 00:05:20,350 Sa linya 16 paunawa kung ano ang ako ginagawa. 90 00:05:20,350 --> 00:05:25,960 Kung ang susi, na tinatawag na counter - sa ibang salita, ang halaga ng index - "counter" 91 00:05:25,960 --> 00:05:32,310 umiiral sa loob ng array na ito na tinatawag na session, pagkatapos ay kung ano ang ako ginagawa sa ito sa linya sa ibaba? 92 00:05:32,310 --> 00:05:36,650 Ano ang linya 18 ginagawa? 93 00:05:36,650 --> 00:05:40,360 >> [Hindi marinig na mag-aaral tugon] Ano iyan? [Mag-aaral] pag-iimbak ang halaga. Mabuti. 94 00:05:40,360 --> 00:05:45,800 Ito ay ang pag-iimbak ang halaga na sa session ngayon sa isang bagong lokal na pansamantalang variable, 95 00:05:45,800 --> 00:05:48,250 $ Counter sa lahat ng maliit na. 96 00:05:48,250 --> 00:05:50,770 Pansinin na ang PHP na ng kaunti tamad dito. 97 00:05:50,770 --> 00:05:55,550 Pansinin na hindi namin ang anumang pagbanggit ng int o Float o string o anumang bagay tulad na 98 00:05:55,550 --> 00:06:00,480 dahil PHP ay mahina-type, kung saan hindi mo upang tukuyin ang uri ng variable, 99 00:06:00,480 --> 00:06:03,310 at sa kasong ito dito hindi ko na kahit na ipinahayag ito. 100 00:06:03,310 --> 00:06:08,980 Ako deklarasyon ito sa loob ng mga kulot tirante at hindi tulad ng C, ito ay talagang okay. 101 00:06:08,980 --> 00:06:13,800 Hindi mahalaga kung paano malalim Nested deklarasyon ng variable sa PHP - 102 00:06:13,800 --> 00:06:16,650 sa loob ng kulot suhay, sa loob ng kulot suhay at ang tulad - 103 00:06:16,650 --> 00:06:21,230 ito sa sandaling iyon sa oras umiiral para sa natitira ng programa, 104 00:06:21,230 --> 00:06:22,680 para sa mas mahusay o para sa mas masahol pa. 105 00:06:22,680 --> 00:06:26,930 Kaya agad na magiging global sa lalong madaling mong tukuyin ang mga ito bilang ang ginagawa namin dito. 106 00:06:26,930 --> 00:06:31,620 >> Kung hindi man, kung hindi ko makita na may anumang bagay sa superglobal session, 107 00:06:31,620 --> 00:06:34,680 Tila ako Sinisimulan ito variable counter sa 0, 108 00:06:34,680 --> 00:06:37,580 sa gayong paraan lamang ipagpalagay ang user ay hindi kailanman ay dito bago. 109 00:06:37,580 --> 00:06:40,030 At pagkatapos na ito ng kurso ay incrementing ang counter kung paano? 110 00:06:40,030 --> 00:06:44,480 Ako nag-a-update ng ang halaga na ang nasa loob ng mga ito nag-uugnay array 111 00:06:44,480 --> 00:06:49,530 sa pamamagitan ng pagtatakda ng katumbas ng anumang counter kasalukuyang + 1. 112 00:06:49,530 --> 00:06:53,520 Kung mag-scroll pababa ko dito sa HTML ng pahina, ito ay aktwal na medyo simple. 113 00:06:53,520 --> 00:06:58,920 Ang ko sa katawan ng pahinang ito, "Ikaw binisita ang site na ito kaya-at-kaya beses." 114 00:06:58,920 --> 00:07:00,350 At ito ay bumuo ng PHP. 115 00:07:00,350 --> 00:07:06,080 Kung gagawin mo 00:07:12,600 Talagang katumbas sa isang bagay tulad ng printf, na nakakita kami ng maraming beses sa C, 117 00:07:12,600 --> 00:07:15,940 kahit na bilang ng maaaring alam mo na mula sa spec sa pset 7, 118 00:07:15,940 --> 00:07:20,160 naka-print ay din ng isang function na lamang ng mga Kopya isang bagay ang, hindi ito aktwal na gumamit ng mga code ng format, 119 00:07:20,160 --> 00:07:23,270 at maaari mong aktwal na sabihin echo pati na rin. 120 00:07:23,270 --> 00:07:27,460 Ang mga ito ang lahat ng napaka bahagyang naiiba kahit na ang net na epekto ay huli ang parehong. 121 00:07:27,460 --> 00:07:31,270 Kaya ang paggamit ng equals sign lamang ang uri ng isang eleganteng paraan ng paggawa nito 122 00:07:31,270 --> 00:07:34,910 mas succinctly kaysa sa maaaring iba magagawang. 123 00:07:34,910 --> 00:07:38,370 Kaya na ang lahat ng mga site na ito ay hindi. Ito ng mga Kopya ang halaga ng counter. 124 00:07:38,370 --> 00:07:40,550 Paano ito lahat ng mga aktwal na nangyayari? 125 00:07:40,550 --> 00:07:43,250 Maaari mong isipin ang isang linggo o kaya nakalipas na sinimulan namin ng pagtingin sa ilalim ng hood 126 00:07:43,250 --> 00:07:47,910 sa kung paano gumagana ang isang web page sa pamamagitan ng paggamit ng Inspector tab na ito. 127 00:07:47,910 --> 00:07:51,900 >> Chrome ay may ito pareho sa Mac na bersyon, ang bersyon ng Windows, at kahit na ang Linux bersyon, 128 00:07:51,900 --> 00:07:59,510 at Firefox at IE ay may mga katulad na mekanismo kung saan mayroon kang ang built-in debugger 129 00:07:59,510 --> 00:08:01,400 sa loob ng browser. 130 00:08:01,400 --> 00:08:03,040 Natin tingnan sa sumusunod. 131 00:08:03,040 --> 00:08:06,960 Mayroon kaming ang maramihang mga tab dito, at isipin ang na ang pinakakaliwa isa ay Mga Sangkap ng, 132 00:08:06,960 --> 00:08:10,700 at kahit kung gaano godawful ang HTML at JavaScript sa isang pahina, 133 00:08:10,700 --> 00:08:15,710 isipin ang na gamit ang tab na Mga Elemento ng iyong aktwal na-navigate ang HTML hierarchically 134 00:08:15,710 --> 00:08:17,050 at maganda at makinis. 135 00:08:17,050 --> 00:08:19,370 Kaya't kung sinusubukan mong upang matuto mula sa isang website tulad ng Google o Facebook 136 00:08:19,370 --> 00:08:22,370 o talagang website anumang, Napagtanto na ikaw ay marahil mas mahusay na off 137 00:08:22,370 --> 00:08:26,360 pagtingin sa source code ang paraan na ito bilang kabaligtaran tingnan ang raw pinagmulan, 138 00:08:26,360 --> 00:08:29,580 na maaaring maging isang gulo, bilang nasaksihan namin lalo na sa site ng Google. 139 00:08:29,580 --> 00:08:32,220 Kaya kung ako sa halip ay mag-click sa tab na Mga Network dito, 140 00:08:32,220 --> 00:08:34,830 sabihin makita kung ano ang nangyayari kapag binisita ko ang pahinang ito. 141 00:08:34,830 --> 00:08:38,669 Unang hayaan mo akong i-clear ang aking cache. 142 00:08:38,669 --> 00:08:43,570 Ako pagpunta sa pumunta sa Mga Setting sa Chrome at pagkatapos ay pumunta sa Kasaysayan 143 00:08:43,570 --> 00:08:46,420 at pagkatapos ay I-clear ang lahat ng data sa pag-browse. 144 00:08:46,420 --> 00:08:48,170 Maaari mong gamitin sa ginagawa ito para sa iba pang mga layunin, [tawa] 145 00:08:48,170 --> 00:08:51,990 ngunit pagdating sa pagbuo ng website, ito ay aktwal na kapaki-pakinabang - 146 00:08:51,990 --> 00:08:55,980 kung ikaw ay tumatawa alam mo. [Tawa] 147 00:08:55,980 --> 00:08:59,310 Ang aktwal na talagang kapaki-pakinabang kapag pagbuo ng website dahil ang katotohanan ay 148 00:08:59,310 --> 00:09:04,100 mga bagay tulad ng mga cookies at mga bagay tulad ng mga naka-cache na mga HTML file, naka-cache na JavaScript file 149 00:09:04,100 --> 00:09:06,390 maaaring aktwal na maging isang malaking sakit ng ulo, dahil kung para sa anumang dahilan 150 00:09:06,390 --> 00:09:11,500 browser ang nagpasya sa cache ng ilang mga file at pa nagawa mo na ang mga pagbabago sa file na iyon sa server 151 00:09:11,500 --> 00:09:14,670 ngunit ang browser ay hindi talaga natanto na ang file ay nagbago 152 00:09:14,670 --> 00:09:19,060 at samakatuwid ay hindi aktwal na muling i-download ito kahit na kapag ikaw ay i-click ang pindutan ng I-reload, 153 00:09:19,060 --> 00:09:23,210 isa ng ang pinaka-walang kamali paraan upang tiyakin lamang na kasalanan ay hindi sa iyong code, 154 00:09:23,210 --> 00:09:26,480 ito na ang pag-uugali ng browser, ay upang pumunta sa dito sa iyong browser 155 00:09:26,480 --> 00:09:29,950 at i-clear ang buong kasaysayan nang sa gayon ay ang walang pagkalito. 156 00:09:29,950 --> 00:09:33,210 >> At pagkatapos ay kung gusto mo talagang maging paranoyd, isara ang browser, i-restart ito, 157 00:09:33,210 --> 00:09:35,660 at pagkatapos ay tiyakin na lahat ng mga gumagana gaya ng inaasahan. 158 00:09:35,660 --> 00:09:38,820 Kaya sa maikling salita, clearing cache ay magandang kapag ginagawa unlad. 159 00:09:38,820 --> 00:09:40,690 Kaya dito mayroon kaming ang tab na Network. 160 00:09:40,690 --> 00:09:46,020 Ko dati ay binisita ang site nang 9 beses, ngunit hayaan mo akong magpatuloy ngayon at i-click ang I-reload. 161 00:09:46,020 --> 00:09:47,500 At ako ay bumalik down sa 0. 162 00:09:47,500 --> 00:09:52,100 Natin ang aktwal na makita kung paano ito ay na session na ito superglobal ay ipinatupad. 163 00:09:52,100 --> 00:09:55,990 Ako pagpunta sa mag-click sa 1 HTTP na kahilingan na ginawa, 164 00:09:55,990 --> 00:09:58,810 at pag-debug na window na ito ay nagbibigay-daan sa tumingin ako sa loob ng na. 165 00:09:58,810 --> 00:10:01,970 Dito makita ko lang ang tugon mula sa server, na kung saan ay hindi na interesante. 166 00:10:01,970 --> 00:10:04,030 Nakita ko na ito sa anumang bilang ng mga paraan. 167 00:10:04,030 --> 00:10:06,350 Ngunit kung ano ang technically kawili-wili ang mga header. 168 00:10:06,350 --> 00:10:11,770 Kung mag-scroll pababa ko dito at tumuon sa header ng kahilingan at i-click ang pinagmulan ng pagtingin, 169 00:10:11,770 --> 00:10:14,400 kung ano ang ako pagpunta upang makita literal ang HTTP na kahilingan 170 00:10:14,400 --> 00:10:17,250 na lang nagpunta mula sa aking browser sa server, 171 00:10:17,250 --> 00:10:21,400 GET ang pinaiiral salita at / counter.php pagkatapos ang file name, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 lamang ang bersyon ng HTTP na ang aking browser ay gumagamit. 173 00:10:25,670 --> 00:10:31,070 Ang linyang ito dito ay isang maliit na paalala mula sa browser sa server kung ano ang pangalan ng server ay 174 00:10:31,070 --> 00:10:33,020 na gustong makipag-usap sa. 175 00:10:33,020 --> 00:10:38,200 At pagkatapos ang lahat ng ito ay kawili-wili minsan ngunit hindi nauugnay sa ngayon. 176 00:10:38,200 --> 00:10:40,090 >> Ito lamang ang uri ng isang pagkausyoso. 177 00:10:40,090 --> 00:10:43,530 Misteriyoso bagaman ay ang string na ito, anumang oras ang iyong browser ay bumisita sa isang website 178 00:10:43,530 --> 00:10:47,110 ito ay sa server kung ano ang browser na iyong ginagamit 179 00:10:47,110 --> 00:10:50,040 at kung anong operating system ang ginagamit at kung ano ang bersyon nito. 180 00:10:50,040 --> 00:10:52,650 Kaya kung sakaling mo na kung paano mga website tulad ng CNN at watnat 181 00:10:52,650 --> 00:10:56,860 malaman kung ano ang porsyento ng mga gumagamit ng Mac sa Web, ang mga gumagamit ng PC, 182 00:10:56,860 --> 00:11:00,820 IE mga gumagamit, gumagamit ng Chrome at tulad, ito ay dahil ang lahat ng aming mga browser 183 00:11:00,820 --> 00:11:04,300 ay nagsasabi sa bawat solong website out doon kung ano tayo. 184 00:11:04,300 --> 00:11:07,410 Ito ay hindi kinakailangang naglalaman ng personal na makikilalang impormasyon, 185 00:11:07,410 --> 00:11:13,060 ngunit ito ang sabihin sa server kung ano ang iyong IP address at kung ano ang browser at OS na ginagamit. 186 00:11:13,060 --> 00:11:14,720 Kaya na kung saan ang impormasyon na ito ay. 187 00:11:14,720 --> 00:11:19,960 Ngunit ano mas kawili-wiling ngayon pagdating sa mga sesyon ang tugon header. 188 00:11:19,960 --> 00:11:22,530 Hayaang i-click ang sa akin tingnan ang pinagmulan sa tabi ng tugon. 189 00:11:22,530 --> 00:11:24,590 Ano ang kawili-wili dito ay ang ilang mga bagay. 190 00:11:24,590 --> 00:11:27,580 1, nakuha namin pabalik ng isang code ng katayuan ng 200. 191 00:11:27,580 --> 00:11:29,840 Hindi namin makita ang code ng katayuan na ito dahil ito ay nangangahulugan na lahat na rin. 192 00:11:29,840 --> 00:11:32,920 Ito ay nangangahulugan na literal okay sa kaibahan sa iba pa. 193 00:11:32,920 --> 00:11:36,380 Ano ang isang numero na nakikita namin minsan na masamang? [Mag-aaral] 404. 194 00:11:36,380 --> 00:11:39,860 404, ang file ay hindi nahanap, 403 ka maaaring stumbling kapag na, 195 00:11:39,860 --> 00:11:43,660 na Ipinagbabawal, na nangangahulugan na nakalimutan mo ang chmod isang bagay, malamang. 196 00:11:43,660 --> 00:11:45,190 At may isang bungkos ng iba. 197 00:11:45,190 --> 00:11:47,760 >> Down dito, ito ay isang maliit na mabaliw. 198 00:11:47,760 --> 00:11:52,340 Ko talagang lamang sinulat ni ang file na ito ng ilang minuto ang nakalipas sa pamamagitan ng pag-paste ito sa gedit. 199 00:11:52,340 --> 00:11:57,100 Bakit ang pahinang ito mag-e-expire sa 1981 bago may talaga ng Web? 200 00:11:58,010 --> 00:12:00,730 Kung anong nangyayari sa doon? 201 00:12:00,730 --> 00:12:04,390 >> [Hindi marinig na mag-aaral ng tugon] Ang time stamp. Ngunit bakit? 202 00:12:06,110 --> 00:12:09,120 Medyo arbitrary, ngunit ito ang aktwal na kapaki-pakinabang. 203 00:12:09,120 --> 00:12:15,500 Ano ito ay sinasabi sa aking browser ay ang PHP file na ito na iyong hiniling ay expired na. 204 00:12:15,500 --> 00:12:18,580 Sa katunayan, nag-expire na 30 taon na ang nakakaraan. 205 00:12:18,580 --> 00:12:20,260 Ngunit kung ano ang na talagang ibig sabihin? 206 00:12:20,260 --> 00:12:22,500 Ay nangangahulugan lamang ito sa susunod na pagkakataon ng user ang bumisita sa pahinang ito, 207 00:12:22,500 --> 00:12:25,540 kung sa pamamagitan ng pag-i-reload o pag-type ang URL sa address bar, 208 00:12:25,540 --> 00:12:28,010 tiyakin kang pumunta at makuha ang isang bagong kopya ng. 209 00:12:28,010 --> 00:12:30,840 Ito ay uri ng isang halimbawa ng cache busting, 210 00:12:30,840 --> 00:12:33,790 isang bobo na salita na lamang ay nangangahulugan na ang sinusubukan upang pahinain ang loob ng mga browser 211 00:12:33,790 --> 00:12:37,260 mula sa aktwal na caching HTML na ipinadala mula sa isang server 212 00:12:37,260 --> 00:12:41,490 upang hindi ka aksidenteng pindutin ang reload at pagkatapos ay makita ang parehong bersyon ng file. 213 00:12:41,490 --> 00:12:43,730 Aktwal na nais server upang magpadala ng bagong kopya. 214 00:12:43,730 --> 00:12:47,440 Kaya ang katotohanan na ito ay 1981 ay nangangahulugan na na kung ano ang appliance ay pagpili 215 00:12:47,440 --> 00:12:50,280 bilang isang arbitrary na petsa sa nakalipas. 216 00:12:50,280 --> 00:12:53,380 Ngunit ang tunay na makatas linya ngayon ang isang ito. 217 00:12:53,380 --> 00:12:57,550 Kahit bago 50 malamang vaguely pamilyar sa cookies. 218 00:12:57,550 --> 00:13:01,820 Sa ngayon, lalo na bukod sa mga mas mababa kumportable o sa pagitan, 219 00:13:01,820 --> 00:13:04,120 kung ano ang isang cookie sa iyong pag-unawa sa ngayon 220 00:13:04,120 --> 00:13:06,980 kahit na hindi namin tungkol sa upang gumawa ng karagdagang teknikal na ang iyong pag-unawa? 221 00:13:08,150 --> 00:13:10,070 Ano ang isang cookie? Oo. 222 00:13:10,070 --> 00:13:13,890 [Mag-aaral] Impormasyon tungkol sa user, bang kung nakasulat ang kanilang mga user name o isang bagay. 223 00:13:13,890 --> 00:13:17,370 >> Mabuti. Impormasyon tungkol sa gumagamit, kung nai-type sa kanilang mga user name na. 224 00:13:17,370 --> 00:13:21,190 Cookies ay isang paraan na kung saan ang mga server ay matandaan ang isang bagay tungkol sa isang user. 225 00:13:21,190 --> 00:13:25,810 At kung ano ang isang cookie ay talagang ay isang text file o ilang pagkakasunud-sunod ng mga byte 226 00:13:25,810 --> 00:13:28,340 na nakatanim sa pamamagitan ng ang server sa loob ng iyong browser, 227 00:13:28,340 --> 00:13:31,960 at sa loob ng file na iyon o isa mga byte ilang mga uri ng identifier. 228 00:13:31,960 --> 00:13:35,640 Siguro ito literal ang iyong user name, ngunit mas madalas ito ay isang bagay na mas mukhang misteriyoso- 229 00:13:35,640 --> 00:13:43,700 tulad ng ito bagay dito - bo8dal3ct at iba pa - talagang malaking alphanumeric string 230 00:13:43,700 --> 00:13:47,050 na talagang lamang nilalayong maging isang natatanging identifier para sa iyo. 231 00:13:47,050 --> 00:13:49,790 O maaari mong isipin ng mga ito bilang uri ng isang virtual kamay stamp. 232 00:13:49,790 --> 00:13:53,020 Kung ikaw ay pumunta sa ilang club o isang amusement park, tandaan na aktwal na ang iyong nabayaran 233 00:13:53,020 --> 00:13:55,850 at nawala sa, sila maglagay ng maliit na pulang sticker sa iyong kamay ng uri, 234 00:13:55,850 --> 00:13:59,270 at na reminds ang mga tao sa counter na nabayaran mo na 235 00:13:59,270 --> 00:14:01,340 at maaari mong darating at pumunta bilang ninyo. 236 00:14:01,340 --> 00:14:04,250 Cookies ay isang maliit na katulad sa espiritu na. 237 00:14:04,250 --> 00:14:08,070 Ang unang pagkakataon ko binisita ang website na ito, bilang ko lang ginawa pagkatapos ng pag-clear ang aking cache, 238 00:14:08,070 --> 00:14:11,620 ang web server, ang appliance sa kasong ito, maglagay ng stamp sa aking kamay 239 00:14:11,620 --> 00:14:15,030 na ang pangalan PHPSESSID, session ID, 240 00:14:15,030 --> 00:14:18,260 na ang halaga ay talagang mahaba alphanumeric string. 241 00:14:18,260 --> 00:14:22,470 >> Upang ang uri ng emblazoned na ngayon sa aking kamay kaya na sa susunod na oras na ako pindutin reload 242 00:14:22,470 --> 00:14:25,230 o mano-manong bisitahin ang URL na ito sa isang browser, 243 00:14:25,230 --> 00:14:29,230 ang aking browser sa pamamagitan ng kahulugan ng HTTP upang ipakita ang kamay stamp 244 00:14:29,230 --> 00:14:31,940 muli at muli at muli. 245 00:14:31,940 --> 00:14:34,550 Kaya kahit na ang server ay hindi kinakailangang malaman kung sino ako, 246 00:14:34,550 --> 00:14:39,610 sila ay hindi bababa sa malaman na ako ang parehong gumagamit o hindi bababa sa, higit na partikular, sa parehong browser. 247 00:14:39,610 --> 00:14:45,660 At kaya ito ay sa huli kung paano ang session superglobal ay ipinatupad. 248 00:14:45,660 --> 00:14:51,200 Ang server ay walang ideya kung sino ka kapag ikaw ay muling bisitahin ang isang website para sa pangalawang o pangatlong beses 249 00:14:51,200 --> 00:14:53,410 maliban kung nagpapakita ka ito stamp sa kamay. 250 00:14:53,410 --> 00:14:55,530 At sa lalong madaling nagpapakita sa iyo na stamp sa kamay, 251 00:14:55,530 --> 00:14:59,370 ang web server ay mahalagang napupunta sa isang maliit na database ng sarili nitong 252 00:14:59,370 --> 00:15:06,040 at pagsusuri, okay, lang ako nakita ang kamay stamp ng user bo8dal3ct at iba pa. 253 00:15:06,040 --> 00:15:09,850 Hayaan akong makita kung anong impormasyon programmer ay naka-imbak 254 00:15:09,850 --> 00:15:12,380 sa loob ng ang superglobal tungkol sa user na ito, 255 00:15:12,380 --> 00:15:17,000 at pagkatapos ay hayaan mo akong tiyakin na ang data na muli sa loob ng session superglobal 256 00:15:17,000 --> 00:15:19,830 kaya na programmer muling ma-access ang data na iyon 257 00:15:19,830 --> 00:15:23,360 kahit na ito ay naka-ilang minuto o oras ang nakalipas. 258 00:15:23,360 --> 00:15:26,150 Kaya sa ibang salita, mga cookies, kung saan nakuha ng isang masamang rap para sa ilang oras 259 00:15:26,150 --> 00:15:29,990 dahil sa insecurities sa browser at maaari nilang talagang lumalabag sa aming privacy at ang lahat ng ito, 260 00:15:29,990 --> 00:15:31,900 aktwal na sila ay may mahusay na utility dahil walang mga ito 261 00:15:31,900 --> 00:15:36,110 nais mong patuloy na pag-log in sa bawat pahina ng Facebook na binisita mo 262 00:15:36,110 --> 00:15:40,680 o bawat Gmail email mong basahin kung browser ay hindi magkaroon ng ilang mga paraan ng pag-alala 263 00:15:40,680 --> 00:15:43,320 na napatotohanan mo na. 264 00:15:43,320 --> 00:15:46,640 >> Kaya sa ganitong paraan cookies ay ipinadala pabalik-balik sa kabuuan ng wire. 265 00:15:46,640 --> 00:15:52,470 Isa pang pagkausyoso tungkol sa mga cookies, lalo na dito, ay na ito ay ganap na sa cleartext. 266 00:15:52,470 --> 00:15:54,930 Walang-encrypt na pagpunta sa dito anumang, 267 00:15:54,930 --> 00:15:57,240 at sa katunayan ako gumagamit ng HTTP sa sandaling ito. 268 00:15:57,240 --> 00:16:00,890 Isa ng aming mga sandali sa mga paborito sa CS50, na ngayon ay 2 taon na ang nakakaraan, 269 00:16:00,890 --> 00:16:04,750 ay sa paligid ng oras ng tool na tinatawag Firesheep dumating out. 270 00:16:04,750 --> 00:16:08,320 Ito ay isang libreng piraso ng software na ginawa sa pamamagitan ng seguridad tagapagpananaliksik 271 00:16:08,320 --> 00:16:13,250 ng wake-up na tawag para sa komunidad upang sabihin lamang kung paano atrociously ipinatupad 272 00:16:13,250 --> 00:16:17,900 ay ang ilang mga mekanismo ng authentication sa Web. 273 00:16:17,900 --> 00:16:22,880 Kaya para sa ilang oras, Facebook ay halos ganap na sa paglipas ng HTTP, hindi HTTPS. 274 00:16:22,880 --> 00:16:25,640 At kahit kung mayroon kang mga ideya kung paano gumagana ang ang crypto, S ay ligtas 275 00:16:25,640 --> 00:16:27,950 kaya nangangahulugan itong may hindi bababa sa ilang mga pag-encrypt kasangkot. 276 00:16:27,950 --> 00:16:30,610 Facebook ay ginagamit upang i-encrypt ang mga user name at password, 277 00:16:30,610 --> 00:16:33,560 ngunit sa lalong madaling tiningnan mo ang iyong pokes o ang iyong mga mensahe o sa iyong feed ng balita, 278 00:16:33,560 --> 00:16:35,360 lahat ng na ay unencrypted. 279 00:16:35,360 --> 00:16:37,870 Kaya Gmail hanggang lamang sa isang taon o 2 ang nakalipas. 280 00:16:37,870 --> 00:16:41,100 Anumang oras-log in ka, oo, sila gumamit ng secure na-encrypt, 281 00:16:41,100 --> 00:16:44,300 ngunit pagkatapos noon sila ay hindi. At kung bakit maaaring na maging? 282 00:16:44,300 --> 00:16:49,210 Bakit hindi lamang gamitin ang cryptography lahat ng oras sa mga kaso ng paggamit tulad nito? 283 00:16:49,210 --> 00:16:53,700 Ano iyon? Tingin ko Narinig ko ng isang bagay. [Mag-aaral] Bilis. 284 00:16:53,700 --> 00:16:56,250 Bilis, i-right? May mga paraan sa paligid na ito. 285 00:16:56,250 --> 00:16:59,610 Ngunit kung ikaw uri ng sa tingin tungkol dito lohikal, kung i-encrypt mo ang isang bagay, 286 00:16:59,610 --> 00:17:01,820 mayroon kang hindi bababa sa isang maliit na pang trabaho. 287 00:17:01,820 --> 00:17:05,460 Sa pset 2 kapag ipinatupad Caesar o Vigenere o kahit crack, 288 00:17:05,460 --> 00:17:07,760 lamang na pag-print ng string ay medyo madali. 289 00:17:07,760 --> 00:17:12,040 Encrypt at pagkatapos ng pag-print ng isang string sa Nagnais ng pinakamababang nangangailangan ng kaunti pang trabaho. 290 00:17:12,040 --> 00:17:14,520 >>  Para sa mga napaka-tanyag na mga website tulad ng Google at Facebook, 291 00:17:14,520 --> 00:17:18,839 kung mayroon ka pang trabaho para sa bawat user para sa bawat solong pahina ng web page na binisita nila, 292 00:17:18,839 --> 00:17:20,520 na lang na tumatagal ng higit pang CPU oras. 293 00:17:20,520 --> 00:17:22,920 At kung kailangan mo ng karagdagang CPU oras, baka kailangan mo ng higit pang mga server, 294 00:17:22,920 --> 00:17:24,270 na nangangahulugan na maaari mong kailangan ng mas maraming pera. 295 00:17:24,270 --> 00:17:27,579 At iba pa para sa maraming mga taon na ito lamang talaga ay hindi pinakamahusay na kasanayan. 296 00:17:27,579 --> 00:17:31,440 Mga tao ay gamitin ang SSL-encrypt lamang kapag kailangan nila. 297 00:17:31,440 --> 00:17:34,960 Ngunit ito ay naka-out, at bilang ito kapwa may Firesheep ginawa sobrang malinaw, 298 00:17:34,960 --> 00:17:37,920 kapag ikaw guys na ay kasalukuyang sa Facebook ngayon - 299 00:17:37,920 --> 00:17:39,880 Out sa pagkausyoso, sabihin makita kung makikita mo fess up. 300 00:17:39,880 --> 00:17:42,620 Kung ikaw ay sa Facebook ngayon sa ilang mga tab, kahit na hindi ito foregrounded, 301 00:17:42,620 --> 00:17:46,610 ang iyong URL HTTP o HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Maramihang mga mag-aaral] S. S? [Tawa] 303 00:17:50,560 --> 00:17:55,510 Okay. Anumang HTTP? May 1? Okay. 304 00:17:55,510 --> 00:17:58,940 Kaya lahat sa atin Hack Facebook account na tao ngayon. 305 00:17:58,940 --> 00:18:04,100 Para sa nakararaming bahagi na ito ay naging naka-on bilang default, ng hindi bababa sa ilang mga website. 306 00:18:04,100 --> 00:18:08,120 At mahaba kuwento maikli, kung ang iyong trapiko sa web ay hindi naka-encrypt, 307 00:18:08,120 --> 00:18:12,960 hindi lamang ay ang HTML bumalik-balik sa buong WiFis unencrypted, 308 00:18:12,960 --> 00:18:16,760 kaya ang mga bagay tulad ng cookies bumalik-balik sa buong himpapawid 309 00:18:16,760 --> 00:18:18,940 nang walang anumang paraan ng pag-encrypt. 310 00:18:18,940 --> 00:18:23,540 Kaya kung ikaw ay may kaunting programming savvy o isang bit ng Pag-Google kasanayan 311 00:18:23,540 --> 00:18:27,410 upang mahanap ang libreng software na ito, ang lahat ng kailangan mong gawin ay umupo sa Starbucks 312 00:18:27,410 --> 00:18:30,680 o umupo sa isang airport kung saan mayroong pangkalahatang unencrypted WiFi 313 00:18:30,680 --> 00:18:36,070 at panoorin para sa mga keyword tulad ng Set-Cookie: o PHPSESSID 314 00:18:36,070 --> 00:18:39,300 dahil kung mayroon kang teknikal savvy upang panoorin ang WiFi 315 00:18:39,300 --> 00:18:43,010 para sa lahat ng mga bit na daloy sa buong air para sa ang pattern na ito, 316 00:18:43,010 --> 00:18:50,840 maaari mong sabihin na PHPSESSID tao ang mangyayari sa bo8dal at iba pa. 317 00:18:50,840 --> 00:18:53,890 At muli kung hindi mo sapat technically savvy o ang mga tamang tool, 318 00:18:53,890 --> 00:18:58,890 maaari mong lamang reconfigure iyong sariling browser upang simulan ang pagtatanghal na kamay stamp 319 00:18:58,890 --> 00:19:05,030 Facebook.com, at Facebook ay lamang pagpunta sa ipagpalagay na ikaw na tao 320 00:19:05,030 --> 00:19:09,880 dahil ang alam nila ay hindi na ngunit na mayroon kang natatanging identifier na ito. 321 00:19:09,880 --> 00:19:14,650 Kaya kung magnakaw sa iyo na natatanging identifier at ipakita ito sa web server bilang iyong sariling, 322 00:19:14,650 --> 00:19:16,860 sila ay pagpunta upang ipakita sa iyo ng balita feed na tao 323 00:19:16,860 --> 00:19:18,980 o mensahe na tao o pokes. 324 00:19:18,980 --> 00:19:23,190 >> At gusto ko ang Google ngayon kung paano upang i-activate ang HTTPS para sa Facebook marahil. 325 00:19:23,190 --> 00:19:25,150 Ngunit ito talaga ay bilang simpleng bilang na. 326 00:19:25,150 --> 00:19:27,660 At kaya ang Facebook at Google at ang mga tulad nakuha talagang magandang sa, 327 00:19:27,660 --> 00:19:31,870 ngunit abangan ang lahat ng higit pa para sa anumang mga website na binibisita mo na hindi gumagamit ng HTTP 328 00:19:31,870 --> 00:19:35,020 at magkaroon ng ilang uri ng mga sensitibong impormasyon sa kanila, 329 00:19:35,020 --> 00:19:37,490 kung ito ay ang pinansyal o personal o ang gusto. 330 00:19:37,490 --> 00:19:43,180 Kung hindi nila ginagamit ito, medyo posibleng cookies tulad nito ay napaka madaling ninakaw 331 00:19:43,180 --> 00:19:46,270 at pagkatapos palsipikado, at na eksakto kung ano ang Firesheep ginawa. 332 00:19:46,270 --> 00:19:48,250 Hindi mo na maging isang programmer. 333 00:19:48,250 --> 00:19:51,680 Lahat ng iyong ay gawin na ang isang koneksyon sa Internet, i-download ang libreng tool na ito, 334 00:19:51,680 --> 00:19:56,490 at kung ano ang gagawin mong mag-log in at pagkatapos ay ito ipakita sa iyo ang mga pangalan ng Facebook 335 00:19:56,490 --> 00:20:00,170 ng lahat sa Sanders, sa partikular na pagpapakita, sa paligid mo 336 00:20:00,170 --> 00:20:03,260 at ang lahat ng mayroon kang gawin ay mag-click sa kanilang mga pangalan at software awtomatiko ang proseso 337 00:20:03,260 --> 00:20:05,970 ng sniffing na cookie, pagtatanghal sa Facebook bilang iyong sariling, 338 00:20:05,970 --> 00:20:07,990 at, voila, naka-log in. 339 00:20:07,990 --> 00:20:11,190 Kaya ito ay isa pang isa sa mga "huwag gawin ito" opisyal. 340 00:20:11,190 --> 00:20:14,660 Kung mayroon ka ng iyong sariling home network at gusto mong maghinang, sa ano mang paraan, 341 00:20:14,660 --> 00:20:17,530 ngunit Napagtanto ito ang-cross ang linya sa isang kapaligiran ng unibersidad. 342 00:20:17,530 --> 00:20:20,030 >> Ngunit ang layunin dito ay talagang upang bigyang-diin hindi kung paano gawin ito 343 00:20:20,030 --> 00:20:22,320 ngunit kung paano ipagtanggol laban sa mga ganitong uri ng bagay. 344 00:20:22,320 --> 00:20:26,180 At ang trivia solusyon dito, kahit ito mismo ay flawed, 345 00:20:26,180 --> 00:20:31,360 ay talagang bawasan ang paggamit ng anumang mga site na hindi gumagamit ng HTTPS Patuloy. 346 00:20:31,360 --> 00:20:34,520 Kaya mga site tulad ng Facebook at Google nagiging may mga checkbox 347 00:20:34,520 --> 00:20:36,200 kung saan maaari kang mag-opt in sa ganitong uri ng bagay, 348 00:20:36,200 --> 00:20:40,000 at bangko na nagkaroon ito para sa mga taon para sa katulad na mga dahilan. 349 00:20:40,000 --> 00:20:43,580 Kaya lamang ng kaunting takot kadahilanan kung kaya namin. Ngunit iyon lamang ito sa isang maikling salita. 350 00:20:43,580 --> 00:20:46,420 Iyon ay kung paano Naaalala ng server ng kung sino ka. 351 00:20:46,420 --> 00:20:50,760 At sa lalong madaling maaari nilang tandaan na, maaari nilang maalala ang kahit ano tungkol sa iyo 352 00:20:50,760 --> 00:20:56,140 na programmer ay naka-imbak sa loob ng ito espesyal superglobal tinatawag $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 At para sa pset 7 namin ginagamit ito trivially lamang tandaan ang isang int, 354 00:20:59,750 --> 00:21:02,260 lalo natatanging ID ng gumagamit na naka-log in, 355 00:21:02,260 --> 00:21:05,880 kaya na alam namin pa doon bago. 356 00:21:05,880 --> 00:21:12,450 Anumang mga katanungan pagkatapos ay sa session o mga cookies o ang tulad ng? 357 00:21:12,450 --> 00:21:15,130 Firesheep ay hindi gumagana pati na rin ito, 358 00:21:15,130 --> 00:21:18,310 at kailangan mong ilagay ang iyong computer sa isang espesyal na mode na makati 359 00:21:18,310 --> 00:21:20,700 kaya aktwal na pakikinig para sa trapiko bukod sa sarili. 360 00:21:20,700 --> 00:21:23,940 Kaya kung kasalukuyang nagda-download ka ng Firesheep, Napagtanto ito ay hindi pa madaling 361 00:21:23,940 --> 00:21:26,850 bilang sa sandaling ito ay upang ipakita. 362 00:21:26,850 --> 00:21:29,070 Ayos lang. At huwag gawin ito sa Sanders. Gawin ito sa bahay. 363 00:21:29,070 --> 00:21:30,890 Database. 364 00:21:30,890 --> 00:21:33,580 Isa ng mga bagay na aming ginawa sa pset 7 napaka sadyang 365 00:21:33,580 --> 00:21:37,780 ay kami magbibigay sa iyo ng isang sample ng database ng talahanayan para sa mga gumagamit na may ilang mga ID ng gumagamit, 366 00:21:37,780 --> 00:21:41,020 ilang mga pangalan ng user, at ang ilan ay naka-encrypt ang mga password sa ganyang bagay. 367 00:21:41,020 --> 00:21:44,520 At tulad ng makikita mo, kung hindi mo pa nagagawa, ikaw ay pagpunta sa baguhin ang talahanayan ng kaunti. 368 00:21:44,520 --> 00:21:47,710 Ay pagpunta sa may upang magdagdag ng ilang mga cache sa bawat isa ng ang mga gumagamit sa talahanayan na, 369 00:21:47,710 --> 00:21:51,130 at ikaw ay pagpunta sa may upang magdagdag ng isa pang kasaysayan table, table ng portfolio, 370 00:21:51,130 --> 00:21:53,310 o marahil ay tumawag iba pa. 371 00:21:53,310 --> 00:21:56,740 Ngunit sa mga tuntunin ng pag-iisip tungkol sa kung paano gawin ito, sabihin buksan ang tool na ito 372 00:21:56,740 --> 00:22:00,570 kung saan ginamit namin sa Biyernes, ngunit kung pamilyar, ang appliance ay may isang tool 373 00:22:00,570 --> 00:22:04,680 tinatawag na phpMyAdmin na coincidentally nakasulat sa PHP, 374 00:22:04,680 --> 00:22:07,950 ngunit nito layunin sa buhay, pagkatapos kong mag-log in dito bilang jharvard may pulang-pula, 375 00:22:07,950 --> 00:22:15,160 ay upang bigyan ako ng isang user-friendly na paraan ng pagtingin at pagbabago sa aking database. 376 00:22:15,160 --> 00:22:18,040 >> Ang database na ako tumatakbo sa appliance ay tinatawag na MySQL. 377 00:22:18,040 --> 00:22:23,420 Na ito ay napaka-tanyag, at ito ay isang libreng open source database na kamangha-mangha madaling gamitin, 378 00:22:23,420 --> 00:22:25,620 lalo na front ay nagtatapos tulad nito. 379 00:22:25,620 --> 00:22:29,350 Ano ang tool na ito ay nagbibigay-daan sa akin upang gawin, halimbawa, sundutin sa paligid ng talahanayan. 380 00:22:29,350 --> 00:22:30,890 Hayaan akong magpatuloy at gawin ito. 381 00:22:30,890 --> 00:22:36,580 Sa Biyernes aming ginawa ang isang talahanayan na tinatawag na mag-aaral na sobrang simple. 382 00:22:36,580 --> 00:22:41,680 Ito ay may 3 haligi - id, pangalan, at email - at ko bang mano-manong ipinasok ng ilang mga hilera 383 00:22:41,680 --> 00:22:44,420 tulad ng David at Mike sa partikular na halimbawa na ito. 384 00:22:44,420 --> 00:22:47,290 Hayaan ang mga ito ng kaunti pa, at sabihin ipinapalagay na gusto naming tandaan higit pa 385 00:22:47,290 --> 00:22:49,660 pa sa pangalan at email tungkol sa isang user. 386 00:22:49,660 --> 00:22:53,090 Ipaalam sa akin i-click ang Istraktura dito sa tuktok. 387 00:22:53,090 --> 00:22:55,440 At muli, ang pset ay nagtuturo sa iyo sa pamamagitan ng mga kinakailangang hakbang dito, 388 00:22:55,440 --> 00:22:58,150 kaya huwag mag-alala kung ang ilan sa mga ito ay isang bit mabilis. 389 00:22:58,150 --> 00:22:59,690 Pagkatapos ako mag-click sa dito. 390 00:22:59,690 --> 00:23:02,270 Ako pagpunta sa magdagdag ng ilang bilang ng mga haligi pagkatapos email 391 00:23:02,270 --> 00:23:04,130 dahil gusto ko upang magdagdag ng isang bagay na tulad ng bahay. 392 00:23:04,130 --> 00:23:06,640 Nakalimutan ko ang upang i-record ang bahay ng mag-aaral. 393 00:23:06,640 --> 00:23:11,400 Hayaan i-click ang Pumunta sa akin, at ngayon kami ay may form na ito na sa kasamaang-palad ay isang maliit na malawak na mula kaliwa hanggang kanang, 394 00:23:11,400 --> 00:23:13,710 ngunit ako pagpunta sa tumawag sa pangalan ng bahay field na ito, 395 00:23:13,710 --> 00:23:16,050 at pagkatapos uri ako ngayon upang pumili. 396 00:23:16,050 --> 00:23:18,870 Kaya sabihin ay isang maikling chat tungkol sa iba't ibang uri sa MySQL 397 00:23:18,870 --> 00:23:24,590 dahil kung saan PHP ay mahina-type at uri ng-play ng mabilis at hindi kabit-kabit na may uri, 398 00:23:24,590 --> 00:23:29,430 sa isang database lalo na ito ay sobrang mahalaga sa aktwal na gamitin ang pagta-type sa iyong kalamangan 399 00:23:29,430 --> 00:23:33,260 dahil ang isa ng mga bagay na MySQL at iba pang mga database engine ay maaaring gawin para sa iyo 400 00:23:33,260 --> 00:23:37,910 ay matiyak na hindi mo ilagay ang mga bogus data sa iyong database. 401 00:23:37,910 --> 00:23:41,850 Ito ay uri ng libreng error sa pagsusuri ng magagamit sa iyo. 402 00:23:41,850 --> 00:23:46,250 >> Para sa bahay namin malinaw naman hindi gusto ang mga ito sa isang int, na kung saan ay isang 32-bit na halaga sa MySQL. 403 00:23:46,250 --> 00:23:49,810 Ginawa namin maikling makipag-usap sa Biyernes tungkol sa varchar, na nakatayo para sa variable na haba magpasinda. 404 00:23:49,810 --> 00:23:54,720 Ano ito? Ito ay nagpapahintulot sa iyo na tukuyin na gusto mo ito sa isang string ng mga uri. 405 00:23:54,720 --> 00:23:56,840 Hindi mo talaga alam nang maaga kung gaano ito kahaba, 406 00:23:56,840 --> 00:24:00,100 kaya ipapakita namin mang sabihin ang pangalan ng bahay na 255 character, 407 00:24:00,100 --> 00:24:04,190 ngunit maaari kang pumunta may 32, 64 - anumang bilang ay talagang. 408 00:24:04,190 --> 00:24:10,700 Subalit ang kalamangan ng paggamit ng isang varchar higit sa isang patlang na tinatawag na magpasinda ang? 409 00:24:10,700 --> 00:24:15,110 Lamang intuitively kung mag-scroll down na ko dito, napansin may pansamantalang trabaho at may varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar ay variable na haba magpasinda; magpasinda isang nakapirming haba magpasinda. 411 00:24:19,520 --> 00:24:24,730 Kaya batay lamang sa kahulugan na, kung ano ang bentahe o dehado ng bawat isa sa mga ito? 412 00:24:24,730 --> 00:24:30,490 Sa ibang salita, na nagmamalasakit tungkol sa pagkakaiba, o kung bakit dapat mong pinapahalagahan? 413 00:24:31,660 --> 00:24:35,750 >> Oo. [Mag-aaral] Varchar may higit pang kakayahang umangkop ngunit tumatagal ng up ng higit memory. 414 00:24:35,750 --> 00:24:40,730 Mabuti. Varchar tumatagal hanggang mas - natin makita. Hindi ako sigurado kung Narinig ko na karapatan. 415 00:24:40,730 --> 00:24:42,360 Maaari mong sabihin na sa sandaling higit pa? 416 00:24:42,360 --> 00:24:45,850 [Mag-aaral] sinabi ko varchar marahil ay may higit pang kakayahang umangkop ngunit ito ay tumatagal ng up ng higit memory. 417 00:24:45,850 --> 00:24:51,170 Kawili-wili. Okay. Varchar marahil ay nagbibigay sa iyo ng higit pang kakayahang umangkop ngunit tumatagal ng up ng higit memory. 418 00:24:51,170 --> 00:24:53,220 Ang huli ay hindi kinakailangang totoo. 419 00:24:53,220 --> 00:24:56,290 Depende sa konteksto, ngunit sabihin bumalik na. 420 00:24:56,290 --> 00:25:03,230 >> [Hindi marinig na mag-aaral tugon] Mismong. 421 00:25:03,230 --> 00:25:06,900 Ito ay talagang kaso na pansamantalang trabaho ay karaniwang gamitin ang higit pa memory 422 00:25:06,900 --> 00:25:10,950 dahil sa isang pansamantalang trabaho, tulad ng sa C, ay tulad ng isang string, ang isang hanay ng mga character. 423 00:25:10,950 --> 00:25:13,690 Kaya kung sinasabi mo magpasinda field ng haba 255, 424 00:25:13,690 --> 00:25:16,910 database ay literal pagpunta upang bigyan ka ng 255 na character. 425 00:25:16,910 --> 00:25:22,290 At kung ang bahay ay nagtatapos Mather at 6 kabuuang character, 426 00:25:22,290 --> 00:25:25,090 aksaya ka sa higit sa 200 mga character. 427 00:25:25,090 --> 00:25:29,640 >> Kaya ng varchar epektibo lamang ay gumagamit ng maraming mga character ay kinakailangan 428 00:25:29,640 --> 00:25:31,590 hanggang sa isang maximum na halaga. 429 00:25:31,590 --> 00:25:35,470 Ngunit ang presyo na binabayaran mo ay aktwal na pagganap, potensyal na. 430 00:25:35,470 --> 00:25:39,740 Kung alam mo nang maaga na ang lahat ng iyong mga string ay pagpunta sa 8 character - 431 00:25:39,740 --> 00:25:43,090 halimbawa, ipagpalagay na kailangan mo ng mga password ng haba 8 - 432 00:25:43,090 --> 00:25:47,350 ng bentahe ng gamit ang isang pansamantalang trabaho na field sa okasyon, bagamat hindi madalas, 433 00:25:47,350 --> 00:25:51,100 upang tukuyin ang isang nakapirming haba para sa isang bagay tulad ng isang password 434 00:25:51,100 --> 00:25:53,300 dahil ngayon database ay maaaring maging kahit na mas matalinong. 435 00:25:53,300 --> 00:25:58,160 Kung alam na ang bawat magpasinda field, bawat string sa isang haligi ng parehong haba, 436 00:25:58,160 --> 00:26:00,780 makabalik ka tampok ng random access. 437 00:26:00,780 --> 00:26:05,110 Maaari mong tumalon sa paligid kabilang sa iba't ibang magpasinda mga patlang sa iyong talahanayan ng database 438 00:26:05,110 --> 00:26:07,940 dahil sa tingin ng isang database bilang mga hanay at haligi. 439 00:26:07,940 --> 00:26:11,670 Kaya kung ang bawat isa ng string ay ang parehong haba, 440 00:26:11,670 --> 00:26:17,820 alam mo na ang unang isa sa byte 0, sa susunod na isa sa byte 8 441 00:26:17,820 --> 00:26:20,240 at pagkatapos ay 16 at pagkatapos ay 24 at iba pa. 442 00:26:20,240 --> 00:26:24,500 Kaya kung ang lahat ng mga string ng parehong haba, maaari mong tumalon sa paligid ng mas mahusay. 443 00:26:24,500 --> 00:26:26,710 Kaya na maaaring maging isang benepisyo sa mga tuntunin ng pagganap, 444 00:26:26,710 --> 00:26:29,420 ngunit karaniwang hindi mo ang luxury ng pag-alam nang maaga, 445 00:26:29,420 --> 00:26:32,170 kaya ang isang varchar ay ang paraan upang pumunta. 446 00:26:32,170 --> 00:26:36,030 Narito ang isa pang detalye na kahit Facebook tumakbo sa kalaunan. 447 00:26:36,030 --> 00:26:39,670 Ints ay mahusay, at namin uri ng gamitin ang mga ito sa pamamagitan ng default sa anumang oras na gusto namin ng isang numero, 448 00:26:39,670 --> 00:26:41,750 ngunit lamang 32 bit. 449 00:26:41,750 --> 00:26:46,210 >> At kahit na ang Facebook ay hindi pa magkaroon ng 4 bilyong mga gumagamit na ngayon, 450 00:26:46,210 --> 00:26:48,680 mayroong tiyak na ang ilang mga tao out doon na may maramihang mga account 451 00:26:48,680 --> 00:26:50,960 o mga account na ay binuksan at pagkatapos ay nakasara, 452 00:26:50,960 --> 00:26:55,130 at kaya Facebook mismo naniniwala ako ng ilang taon na ang nakakaraan nagkaroon sa paglipat mula int 453 00:26:55,130 --> 00:27:00,010 sa, bilang ay aptly tinatawag, ang bigint, na may 64 bit sa halip. 454 00:27:00,010 --> 00:27:02,230 Kaya ito masyadong ay isang disenyo na desisyon. 455 00:27:02,230 --> 00:27:06,570 Ay amazingly masuwerteng kung ang iyong huling proyekto lumiliko startup, 456 00:27:06,570 --> 00:27:10,010 ay may 4 bilyong at 1 user, bigyan o tumagal, 457 00:27:10,010 --> 00:27:13,200 kung saan gamit ints ay maaaring maging isang maliit na hindi makakita sa malayo. 458 00:27:13,200 --> 00:27:16,230 Ngunit sa katotohanan, ang talahanayan ng iyong mga user ay maaaring masarap na may ints. 459 00:27:16,230 --> 00:27:19,340 Ngunit para sa isang bagay tulad ng pset 7, tulad ng iyong talahanayan ng kasaysayan, 460 00:27:19,340 --> 00:27:23,700 maaari kang magkaroon ng libo-libo, milyun-milyong ng mga gumagamit kung ikaw ay magbabago sa etrade.com. 461 00:27:23,700 --> 00:27:26,020 Kaya kung saan hindi ka maaaring magkaroon ng higit sa 4 bilyong mga gumagamit, 462 00:27:26,020 --> 00:27:30,070 mga gumagamit na iyon na mayroon kang ay maaaring magkaroon ng higit sa 4 bilyong mga transaksyon sa paglipas ng panahon - 463 00:27:30,070 --> 00:27:33,200 bumibili at nagbebenta at mga bagay sa kanilang kasaysayan. 464 00:27:33,200 --> 00:27:38,090 Kaya kung gagawin mo inaasahan - muli, ito ay mahusay na mga problema kung mayroon kang ito maraming data - 465 00:27:38,090 --> 00:27:40,920 kung gagawin mo inaasahan data na lalampas sa sukat ng isang int, 466 00:27:40,920 --> 00:27:47,740 pagpunta na may isang bagay tulad ng bigint ay isang direksyon na hindi madalas sapat na pinagtibay sa pamamagitan ng designer 467 00:27:47,740 --> 00:27:49,710 dahil sa mga tao sa figure na hindi pagpunta sa maging isang problema, 468 00:27:49,710 --> 00:27:51,930 ngunit ito madaling upang pumili ng isang bagay na mas malaki kaysa sa. 469 00:27:51,930 --> 00:27:55,380 Decimal na aming ginagamit sa pset 7, na tumutukoy nakapirming katumpakan 470 00:27:55,380 --> 00:27:59,840 sa gayon ay maaari mong maiwasan ang mga isyu na kinasasangkutan ng mga kamay at Doubles at reals at ang mga tulad ng. 471 00:27:59,840 --> 00:28:02,440 >> At pagkatapos ay may ilang mga iba pang mga patlang dito. Iwagayway namin ang aming mga kamay sa mga ito sa ilang mga lawak. 472 00:28:02,440 --> 00:28:07,270 Ngunit petsa, beses lahat ng inireseta sa mga format sa MySQL, 473 00:28:07,270 --> 00:28:10,830 at ng kalamangan sa pag-iimbak ng mga petsa ng mga petsa at hindi varchars 474 00:28:10,830 --> 00:28:15,730 ay nangangahulugan na ang database ang maaaring aktwal na i-reformat ang mga ito sa iba't-ibang mga format, 475 00:28:15,730 --> 00:28:18,800 kung ang format ng US o European format o ang tulad - gayunpaman gusto mong - 476 00:28:18,800 --> 00:28:22,700 mas mahusay kaysa sa kung ito ay ilang generic na varchar. 477 00:28:22,700 --> 00:28:25,150 At pagkatapos ay ang ilang iba pang mga binary, varbinary, blobs. 478 00:28:25,150 --> 00:28:28,580 Ito ang binary malalaking bagay, at maaari mo ring i-imbak ang mga binary data 479 00:28:28,580 --> 00:28:30,750 pati na rin geometric data sa isang database. 480 00:28:30,750 --> 00:28:34,350 Ngunit para sa amin namin karaniwang pakialam tungkol sa mga ints at varchars at katulad. 481 00:28:34,350 --> 00:28:36,230 Natin tapusin ito halimbawa may bahay. 482 00:28:36,230 --> 00:28:40,030 House Pupunta ako sa mang sabihin ay 255 char. 483 00:28:40,030 --> 00:28:42,850 Pagkatapos default value maaari naming gawin ito. 484 00:28:42,850 --> 00:28:47,440 Maaaring namin bilang default ilagay lahat sa Mather House, halimbawa. 485 00:28:47,440 --> 00:28:49,710 Iyon ay kung paano namin maaaring tukuyin na ang database 486 00:28:49,710 --> 00:28:52,460 dapat matiyak na ang isang tao ay laging may isang halaga. Ngunit ko bang iwan na maging. 487 00:28:52,460 --> 00:28:55,270 Sa katunayan, para sa mga taong nakatira off campus at hindi sa isang bahay, 488 00:28:55,270 --> 00:28:59,590 maaaring aktwal ko nais upang tukuyin na ang default na halaga para sa bahay ay null, 489 00:28:59,590 --> 00:29:04,890 at pagkatapos ay kailangan kong i-check ang kahong ito at sabihin sa database okay lang kung ang bahay ng gumagamit ay null. 490 00:29:04,890 --> 00:29:07,270 >> Muli, ito ay isa pang pagtatanggol mekanismo na maaari mong ilagay sa lugar 491 00:29:07,270 --> 00:29:10,590 kaya hindi mo kahit na upang ilagay ang mga ito sa iyong code na PHP kinakailangan. 492 00:29:10,590 --> 00:29:14,630 Ang database ay matiyak na ang mga bagay ay o hindi null. 493 00:29:14,630 --> 00:29:17,310 At pagkatapos ay bilang wakas, ang mga Katangian. 494 00:29:17,310 --> 00:29:18,920 Wala sa mga ito ay talagang may-katuturang. 495 00:29:18,920 --> 00:29:22,880 Binary, unsigned - wala ng mga may-katuturan sa isang varchar. 496 00:29:22,880 --> 00:29:24,220 Index. 497 00:29:24,220 --> 00:29:27,320 Nakakaalam ba o tandaan o ng hula sa kung ano ang index ng 498 00:29:27,320 --> 00:29:29,510 para sa isang bagay tulad ng bahay? 499 00:29:29,510 --> 00:29:35,240 Ito masyadong ay talagang isang mahalagang at relatibong madaling disenyo desisyon. 500 00:29:35,240 --> 00:29:39,200 Para sa mga taong hindi pa ito nakikita, sa Biyernes usapan natin ang maikling tungkol sa mga pangunahing key. 501 00:29:39,200 --> 00:29:43,240 Sa isang table ng database, ang isang pangunahing key sa field o haligi 502 00:29:43,240 --> 00:29:46,270 na natatanging nagpapakilala sa mga hilera sa talahanayan. 503 00:29:46,270 --> 00:29:49,150 Kaya sa talahanayan sa kasalukuyang mayroon kaming ID, mayroon kami ng mga pangalan at email. 504 00:29:49,150 --> 00:29:52,050 Alin sa mga ang pinakamahusay na kandidato upang maging isang pangunahing key, 505 00:29:52,050 --> 00:29:55,810 na papel para makilala hilera? 506 00:29:55,810 --> 00:29:57,530 Marahil ID. 507 00:29:57,530 --> 00:29:59,930 Arguably, maaari rin naming gamitin ang kung ano ang kahit na? 508 00:29:59,930 --> 00:30:02,860 Marahil, maaari mong gamitin ang email na ito dahil sa basal natatangi 509 00:30:02,860 --> 00:30:05,380 maliban kung ang mga tao ay pagbabahagi ng mga email account. 510 00:30:05,380 --> 00:30:09,980 Ngunit ang katotohanan ay na kung gumagamit ka ng numeric na ID tulad ng 1234, 511 00:30:09,980 --> 00:30:14,170 na lamang 32 bit, kung saan ang isang email address na ito maraming mga byte o ito maraming byte. 512 00:30:14,170 --> 00:30:16,610 Kaya sa mga tuntunin ng kahusayan para sa mga natatanging mga tagapagpakilala ng, 513 00:30:16,610 --> 00:30:19,270 may kaugaliang mahusay na kasanayan upang gamitin ang isang int 514 00:30:19,270 --> 00:30:23,090 kahit kung mayroon kang ilang mga string kandidato na maaari mong arguably gamitin. 515 00:30:23,090 --> 00:30:26,760 >> Para sa isang bagay tulad ng bahay, ito ay hindi dapat maging isang pangunahing key 516 00:30:26,760 --> 00:30:30,770 dahil ang 1 tao lamang maaaring mabuhay sa Mather at 1 tao sa Currier at ang mga tulad ng. 517 00:30:30,770 --> 00:30:32,790 Gayundin, ito ay hindi dapat maging natatangi. 518 00:30:32,790 --> 00:30:37,830 Ang pagkakaiba sa pagitan ng pangunahin at natatanging ay na sa kaso ng aming kasalukuyang talahanayan, 519 00:30:37,830 --> 00:30:42,620 ID ay pangunahing ngunit ang email ay hindi pangunahing para sa mga dahilan na nabanggit lang namin - 520 00:30:42,620 --> 00:30:44,740 pagganap - ngunit dapat pa rin itong maging natatangi. 521 00:30:44,740 --> 00:30:47,200 Kaya maaari mo pa ring ipatupad natatangi nang hindi gumagawa ang claim 522 00:30:47,200 --> 00:30:49,520 na ito ay isang napaka-mahalagang pangunahing field. 523 00:30:49,520 --> 00:30:52,610 Ngunit ang isang ito ay lubos na kapaki-pakinabang: Index. 524 00:30:52,610 --> 00:30:56,180 Kung alam mo sa maaga para sa iyong huling proyekto, para sa pset 7, o sa pangkalahatan, 525 00:30:56,180 --> 00:30:59,480 na ang patlang na ito ng bahay ay pagpunta sa isang bagay kang maghanap sa maraming 526 00:30:59,480 --> 00:31:01,910 gamit ang mga piling keyword o iba pa, 527 00:31:01,910 --> 00:31:05,180 maaari mong preemptively sabihin sa database upang gumana ang magic 528 00:31:05,180 --> 00:31:10,510 at tiyakin na ito ay lumilikha ng sa memory anumang magarbong mga istraktura ng data na kinakailangan 529 00:31:10,510 --> 00:31:13,770 upang mapabilis ang paghahanap na batay sa bahay. 530 00:31:13,770 --> 00:31:17,860 Siguro ito gamitin ng hash table, maaaring ito ay gumamit ng isang naka-link na listahan. 531 00:31:17,860 --> 00:31:21,260 Sa katotohanan, may kaugaliang na gumamit ng isang puno, madalas ang istraktura ng tinatawag na B-puno - 532 00:31:21,260 --> 00:31:24,090 hindi isang binary puno ngunit ang B-puno - na ay isang malawak na puno 533 00:31:24,090 --> 00:31:27,370 na maaari mong makita sa isang klase tulad ng CS124, ang klase istraktura ng data. 534 00:31:27,370 --> 00:31:31,800 Ngunit sa maikling salita, hindi mo kailangang mag-alala tungkol sa na kapag ginagamit ang smart database software. 535 00:31:31,800 --> 00:31:35,890 Maaari mo lamang sabihin dito, "Index sa field na ito sa gayon ay maaari kong maghanap sa mas mahusay." 536 00:31:35,890 --> 00:31:40,250 >> Kung iniwan mo ito off at subukan mo upang maghanap para sa lahat sa database na nakatira sa Mather, 537 00:31:40,250 --> 00:31:42,710 ito ay malipat sa linear paghahanap. 538 00:31:42,710 --> 00:31:45,360 At kung ikaw Mayroon 6,000 undergrads lahat ng sala sa ilang mga bahay, 539 00:31:45,360 --> 00:31:47,900 ka pagpunta upang maghanap sa buong table upang makita ang mga Matherites, 540 00:31:47,900 --> 00:31:52,190 samantalang kung sinasabi mo Index, sana ay ito ay isang bagay na malapit sa isang logarithmic paghahanap 541 00:31:52,190 --> 00:31:54,510 upang mahanap ang mga uri ng mga mag-aaral. 542 00:31:54,510 --> 00:31:56,750 Ito ay isang libreng tampok upang i-on, 543 00:31:56,750 --> 00:31:59,530 kahit na ito ay sa isang presyo ng ilang halaga ng puwang. 544 00:31:59,530 --> 00:32:02,690 Panghuli, ang auto-pagdagdag, ang Ai field na ito, 545 00:32:02,690 --> 00:32:05,830 kung saan ay nangangahulugan lamang kung ito ay isang int at hindi mo nais na pakialam sa dagdagan ang mga ito sa iyong sarili 546 00:32:05,830 --> 00:32:07,570 sa bawat oras na may isang bagong gumagamit, tingnan na, 547 00:32:07,570 --> 00:32:11,910 at ang bawat user ay makakakuha ng ipinasok ay awtomatikong makakuha ng bagong ID. 548 00:32:11,910 --> 00:32:15,620 Sabihin i-click ang I-save, at ngayon sabihin maghanap ng pula na may ganitong disenyo. 549 00:32:15,620 --> 00:32:20,200 Kung pumunta ako sa browse, notice na parehong Mike at aking bahay null. 550 00:32:20,200 --> 00:32:22,420 Maaari ko bang gamitin ang phpMyAdmin upang i-edit ito nang manu-mano. 551 00:32:22,420 --> 00:32:25,110 Maaari kong pumunta sa dito at uri sa Mather at pagkatapos ay pindutin ang Enter, 552 00:32:25,110 --> 00:32:27,740 at ngayon ay makapansin ng talahanayan ang iba. 553 00:32:27,740 --> 00:32:29,270 Ngunit mapansin ang maaari kong gawin ang iba pa pati na rin. 554 00:32:29,270 --> 00:32:33,530 Ni David ang ID 1, kaya phpMyAdmin muli ng isang administrative tool; 555 00:32:33,530 --> 00:32:35,970 ito ay hindi isang bagay sa iyong mga user ay kailanman pagpunta upang makita. 556 00:32:35,970 --> 00:32:38,810 Kaya kung ako sa halip na i-click ang tab na SQL up sa tuktok - 557 00:32:38,810 --> 00:32:41,450 at muli, pset 7 ay ipakilala sa higit pa ng mga query na ito - 558 00:32:41,450 --> 00:32:45,260 Maaari ko bang mano-manong i-execute SQL query nakabalangkas na wika utos 559 00:32:45,260 --> 00:32:56,410 I-update ang mga gumagamit na itinakda bahay = 'Pfoho' WHERE id = 1. 560 00:32:56,410 --> 00:33:00,830 Mga SQL query sa, mabuti sapat, medyo nababasa mula kaliwa hanggang kanang. 561 00:33:00,830 --> 00:33:04,350 I-update ang mga gumagamit ng talahanayan, itakda ang patlang na tinatawag na bahay sa Pfoho 562 00:33:04,350 --> 00:33:06,830 kung saan ang ID ng gumagamit ay 1. 563 00:33:06,830 --> 00:33:11,480 O maaari ko kahit gawin kung saan ang email = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 Hangga't na natatanging nagpapakilala sa akin, na gumagana pati na rin. 565 00:33:14,860 --> 00:33:18,810 Ngunit ID may kaugaliang upang maging mas mataas na pagganap, kaya sabihin gawin iyon. 566 00:33:18,810 --> 00:33:22,950 Natin i-klik ang Go. Okay, lecture.users ay hindi umiiral. Ano ang aking mga error? 567 00:33:22,950 --> 00:33:26,220 Ano ang talahanayan ng aktwal na tinatawag dito? 568 00:33:26,220 --> 00:33:28,770 Ito ay tinatawag na mag-aaral dahil lang na kung ano ang ginawa namin dito sa kaliwang tuktok. 569 00:33:28,770 --> 00:33:31,860 Ito ay tinatawag na mga mag-aaral, hindi ang mga gumagamit. Kaya i-click ang Pumunta ngayon. 570 00:33:31,860 --> 00:33:34,330 1 hilera apektado. Query sa kinuha 0.01 segundo. 571 00:33:34,330 --> 00:33:38,010 Kung i-click ang ko ngayon-browse ng, ngayon Malan buhay sa Pfoho. 572 00:33:38,010 --> 00:33:42,070 Kaya na isa pang lasa ng SQL, ngunit pset ay dadalhin ka sa pamamagitan ng kaunti higit pa sa na. 573 00:33:42,070 --> 00:33:44,710 >> May isang bobo desisyon ko na ginawa dito. 574 00:33:44,710 --> 00:33:47,820 Gusto ko magtaltalan na ito disenyo ng database ay hindi mabisa 575 00:33:47,820 --> 00:33:51,650 dahil ang higit pang mga tao na idagdag ako sa table ng mga mag-aaral, 576 00:33:51,650 --> 00:33:54,730 ang higit pa sa atin sisimulan ko ang pagdaragdag, ang higit pa ng TFs sisimulan ko ang pagdaragdag ng, 577 00:33:54,730 --> 00:33:58,320 kami ay pagpunta upang simulan upang makita kung ano ang redundancies sa table na ito? 578 00:34:00,840 --> 00:34:06,020 >> Oo. [Mag-aaral] Nakakakita na ito sa mga mag-aaral, kami ay gamit ang parehong [hindi marinig] 579 00:34:06,020 --> 00:34:07,360 Ang parehong - Kanan, eksakto. 580 00:34:07,360 --> 00:34:10,400 Kaya kung 400 tao naninirahan sa Mather, bigyan o, 581 00:34:10,400 --> 00:34:15,000 kalaunan ang talahanayan na ito ay pagpunta sa 400 hilera na sabihin ng "Mather," "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather," "Mather," "Mather." 583 00:34:16,590 --> 00:34:19,820 Kami ay aksaya ang lahat ng mga bytes, at ang ilang mga takeaways doon. 584 00:34:19,820 --> 00:34:23,080 1, ang mabaliw kaso ng sulok kung saan kung ang isang tao ay nagbabayad ng maraming ng pera 585 00:34:23,080 --> 00:34:25,949 mga at renames Mather, na namin ngayon upang baguhin ang aming buong database ng talahanayan. 586 00:34:25,949 --> 00:34:29,730 Na hindi pagpunta sa mangyayari madalas, kahit na Pfoho ay isang beses na tinatawag na North House 15 taon na ang nakalipas, 587 00:34:29,730 --> 00:34:32,310 kaya ang mangyayari. Ngunit na hindi lahat ng nakapanghihimok. 588 00:34:32,310 --> 00:34:36,000 Mas nakakahimok kaysa sa isang sulok kaso tulad ng nangangailangan upang i-update ang data sa maramihan 589 00:34:36,000 --> 00:34:41,150 para sa isang database ay kung bakit ang iyong pag-iimbak Mather muli at muli at muli at muli? 590 00:34:41,150 --> 00:34:43,020 Na ang isang maraming ng char, 6 char. 591 00:34:43,020 --> 00:34:45,500 Hindi ginagawa namin mas mahusay kaysa, lalo na para sa Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Tiyak na maaari naming gawin mas mahusay kaysa maraming character. 593 00:34:48,320 --> 00:34:51,790 Bakit hindi lamang iugnay ang isang natatanging identifier sa bawat bahay 594 00:34:51,790 --> 00:34:55,020 at tindahan na para sa bawat user? Kaya sabihin subukan ito. 595 00:34:55,020 --> 00:35:00,610 Sa halip na lamang gamitin ang talahanayan ng mga mag-aaral, hayaan mo akong pumunta hanggang sa aking database ng panayam hanggang dito sa kaliwang tuktok. 596 00:35:00,610 --> 00:35:02,600 Mapansin dito sinasabi nito ang Lumikha ng talahanayan. 597 00:35:02,600 --> 00:35:04,550 Hayaan akong lumikha ng isang bagong talahanayan na tinatawag na bahay. 598 00:35:04,550 --> 00:35:08,880 Ang bilang ng mga haligi na 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Ngayon Mayroon akong 2 mga patlang. 600 00:35:11,200 --> 00:35:14,600 Pupunta ako upang tumawag ito ang pangalan, at ito ay pagpunta sa isang varchar ng haba 255, 601 00:35:14,600 --> 00:35:18,770 >> ngunit medyo arbitrary. Hayaan akong ilagay ito down na dito sa pamamagitan ng convention. 602 00:35:18,770 --> 00:35:22,840 Kaya maglagay ng ID dito. Natin bigyan ang bawat bahay ng isang natatanging identifier. 603 00:35:22,840 --> 00:35:25,360 Natin bigyan ang bawat bahay ng isang pangalan. 604 00:35:25,360 --> 00:35:30,980 Natin tukuyin na ang identifier na unsigned sa pamamagitan lamang ng convention lang gumamit ng mga positibong numero. 605 00:35:30,980 --> 00:35:35,020 Natin sige at bigyan ito ng isang auto-patong na field sa ngayon. 606 00:35:35,020 --> 00:35:38,160 At kailangan namin ang anumang bagay? 607 00:35:38,160 --> 00:35:41,010 Natin sige at i-click ang I-save. 608 00:35:41,010 --> 00:35:42,480 Ngayon Mayroon akong ng pangalawang talahanayan. 609 00:35:42,480 --> 00:35:45,860 Mapansin bilang isang bukod na ito ay bahagyang misteriyoso SQL utos 610 00:35:45,860 --> 00:35:50,280 na nais mong ay i-type ang mano-mano kung hindi gumagamit ng isang administrative tool tulad phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Kaya isa pang dahilan na ginagamit namin ito. 612 00:35:51,990 --> 00:35:55,480 Ito ay kamangha-mangha kapaki-pakinabang na uri ng pedagogically dahil maaari mong i-click sa paligid 613 00:35:55,480 --> 00:36:01,050 at malaman kung paano ang mga bagay ay gumagana sa pamamagitan ng lamang pagkopya at pag-paste kung ano ang phpMyAdmin ginawa. 614 00:36:01,050 --> 00:36:04,150 Ngunit ang utos Lumikha ng talahanayan ay kung ano ang lamang pinaandar, at dito ay ang aking mga talahanayan. 615 00:36:04,150 --> 00:36:11,370 Hayaan akong magpatuloy ngayon at gamitin ang raw SQL kaysa oversimplify sa pamamagitan ng pag-click ang Ipasok na tab. 616 00:36:11,370 --> 00:36:15,040 Hayaan akong INSERT SA bahay, 617 00:36:15,040 --> 00:36:22,230 at ako pagpunta upang sabihin ang pangalan ng bahay ay pagpunta sa magkaroon ng isang halaga ng 'Mather'. 618 00:36:22,230 --> 00:36:24,790 Iyan na ang lahat. Syntax na ito ay ng kaunti pa misteriyoso. 619 00:36:24,790 --> 00:36:26,660 Ito ay ang pangalan ng field na gusto namin upang ipasok. 620 00:36:26,660 --> 00:36:30,390 Ito ay ang halaga na gusto naming upang ipasok sa mga patlang. Hayaan i-click ang sa akin Pumunta. 621 00:36:30,390 --> 00:36:34,410 1 hilera ang ipinasok kinuha 0.02 segundo. Hayaang i-click ang sa akin-browse ng ngayon. 622 00:36:34,410 --> 00:36:42,020 >> Pansinin kung i-click ko-browse ng, Mather, na ang ID sa pamamagitan ng automation ang bilang 1. 623 00:36:42,020 --> 00:36:45,000 Hayaan ang gawin sa akin ng isa pang isa. Hayaan akong pumunta sa tab ng SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT SA bahay. Ang pangalan ng bahay ay pagpunta sa magkaroon ng isang halaga ng Pfoho at iba pa. 625 00:36:52,950 --> 00:36:56,350 Go. At maaari ba akong patuloy na ginagawa ito muli at muli at muli. 626 00:36:56,350 --> 00:36:59,470 O kung hindi ka nababato gamit phpMyAdmin, maaari mo lamang gamitin ang tab ng Magsingit 627 00:36:59,470 --> 00:37:01,000 at hindi i-type ang raw SQL. 628 00:37:01,000 --> 00:37:04,690 Maaari mo lamang Bang ito nang mas mabilis sa pamamagitan ng pagta-type, halimbawa, Currier, Ipasok, 629 00:37:04,690 --> 00:37:07,610 at ngayon kung i-click namin-browse ng, may Currier na may ID ng 3. 630 00:37:07,610 --> 00:37:09,920 Kaya ito ay kung ano ang ibig sabihin namin sa pamamagitan ng auto-patong. 631 00:37:09,920 --> 00:37:12,280 Ngunit ngayon namin upang ayusin ang isang bagay sa mga mag-aaral. 632 00:37:12,280 --> 00:37:16,240 Sa mga mag-aaral kung ano ang dapat ang data ng uri ng patlang ng house na ngayon? 633 00:37:16,240 --> 00:37:19,450 Dapat ito ay isang int, i-right? 634 00:37:19,450 --> 00:37:23,950 Kaya ang layunin dito ay sa salik, kung hindi man kilala bilang normalize, ang mga talahanayan 635 00:37:23,950 --> 00:37:27,940 sa gayon ay hindi namin imbak ng impormasyon redundantly sa anumang ng aking mga talahanayan. 636 00:37:27,940 --> 00:37:31,130 At muli, ang landas namin sa dito ay pagpunta sa sabihin Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, na napaka kalabisan 638 00:37:34,220 --> 00:37:36,240 sa mga tuntunin ng ang wastefulness ng char. 639 00:37:36,240 --> 00:37:40,820 Kaya hayaan mo akong magpatuloy at baguhin ito sa pamamagitan ng pag-click Istraktura, 640 00:37:40,820 --> 00:37:44,620 at ipaalam sa akin sige at tingnan off ang bahay field, i-click ang Baguhin ang, 641 00:37:44,620 --> 00:37:46,990 at ngayon ako pagpunta sa baguhin ito sa isang int. 642 00:37:46,990 --> 00:37:49,490 255 ay hindi na may-katuturan. 643 00:37:49,490 --> 00:37:54,010 Hayaan akong magpatuloy at sabihin na ang fine kung pa rin null. I-save. 644 00:37:54,010 --> 00:37:55,870 Ngayon talahanayan ng mga mag-aaral ay matagumpay na binago, 645 00:37:55,870 --> 00:37:59,090 at mapansin muli bahay ay isang int. 646 00:37:59,090 --> 00:38:02,220 Bilang isang bukod, balewalain ang numero sa panaklong pagdating sa ints. 647 00:38:02,220 --> 00:38:03,770 >> Ito ay para sa mga kadahilanan ng legacy. 648 00:38:03,770 --> 00:38:06,920 Bumalik sa araw kapag hindi mo GUIs, sa halip ay isang kapaligiran sa linya ng command na, 649 00:38:06,920 --> 00:38:11,580 10 at 11 ayon sa pagkakasunud-sunod na tinukoy kung gaano karaming mga character na dapat mong ipakita 650 00:38:11,580 --> 00:38:13,950 sa terminal na window sa aktwal na ipakita ang mga patlang. 651 00:38:13,950 --> 00:38:19,150 Ay walang kinalaman sa may bit haba ng aktwal na patlang, kaya balewalain lang namin na sa ngayon. 652 00:38:19,150 --> 00:38:20,990 Ngayon ay mayroon akong pumunta sa table na ito. 653 00:38:20,990 --> 00:38:24,610 At kung David nakatira sa Mather, bahay ay hindi dapat ay 0, 654 00:38:24,610 --> 00:38:27,350 na isang default na halaga int na pinakamalapit sa null. 655 00:38:27,350 --> 00:38:29,810 Dapat siya nakatira sa bahay 1. 656 00:38:29,810 --> 00:38:36,870 Sabihin mang sabihin na Mike buhay sa Pfoho, kaya bahay bilang 2. 657 00:38:36,870 --> 00:38:40,160 Ngayon ang aking talahanayan mukhang ng kaunti pa misteriyoso. 658 00:38:40,160 --> 00:38:41,960 Ngunit isaalang-alang ang kahusayan. 659 00:38:41,960 --> 00:38:44,860 Ngayon gumagamit ako ng 32 bit lamang upang matukoy ang bahay, 660 00:38:44,860 --> 00:38:49,530 na nangangahulugan na may lamang 1 canonical kahulugan ng aking bahay Mather at Pfoho 661 00:38:49,530 --> 00:38:52,090 at na sa table ng mga bahay. 662 00:38:52,090 --> 00:38:55,880 Kaya kung gusto ko sa ngayon sumaling muli ang mga talahanayan, sa tingin ito sa ganitong paraan. 663 00:38:55,880 --> 00:39:01,980 Narito Mayroon akong talahanayan ng aking mga mag-aaral, at sa kanang bahagi ay may mga numero, 1 at 2. 664 00:39:01,980 --> 00:39:04,180 1 ay Mather, 2 ay Pfoho. 665 00:39:04,180 --> 00:39:08,580 Mayroon kaming mga parehong numero sa iba pang mga talahanayan na ito, na kung saan ay tinatawag na bahay, 666 00:39:08,580 --> 00:39:11,020 1 at 2 at 3 para sa mga 3 bahay. 667 00:39:11,020 --> 00:39:14,990 Ano namin ngayon ay nais na gawin ay ang kakayahan sa code, PHP at SQL, 668 00:39:14,990 --> 00:39:18,800 upang pag-uri-uriin ng sumaling muli ang mga talahanayan, kung saan kung ito ay ang mga mag-aaral at ito ang mga bahay, 669 00:39:18,800 --> 00:39:22,050 gusto naming pagsamahin ang mga ito sa paanuman upang ang 1 linya up na may 1, 670 00:39:22,050 --> 00:39:25,670 2 linya up na may 2, at sa gayon maaari naming malaman kung saan David 671 00:39:25,670 --> 00:39:28,000 at kung saan Mike at kung saan ang iba nakatira. 672 00:39:28,000 --> 00:39:31,850 Upang gawin ito, maaari naming magsagawa ng isang SQL query tulad ng sumusunod. 673 00:39:31,850 --> 00:39:40,470 Piliin ang * MULA mag-aaral SUMALI bahay SA - 674 00:39:40,470 --> 00:39:43,000 At ngayon kung ano ang mga field ang gusto namin na sumali sa? 675 00:39:43,000 --> 00:39:49,520 Kaya students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Ang isang maliit na misteriyoso, ngunit ang bahagi na ito ay nangangahulugan na literal na lumikha ng isang bagong pansamantalang talahanayan 677 00:39:54,150 --> 00:39:56,690 na ang resulta ng pagsali ng mga mag-aaral at mga bahay. 678 00:39:56,690 --> 00:40:00,340 At kung paano ang gusto mong pagsamahin ang mga tip ng aking mga daliri dito? 679 00:40:00,340 --> 00:40:05,280 Itakda ang katumbas sa bahay 'ID field ng ang mga mag-aaral' house field. 680 00:40:05,280 --> 00:40:10,220 At kung ako ngayon i-click ang Pumunta, nakukuha ko kung ano mismo ang ko umaasa sa. 681 00:40:10,220 --> 00:40:15,890 David sa Mather, Mike ay sa Pfoho, at ko rin makita ang mga natatanging mga tagapagpakilala ng. 682 00:40:15,890 --> 00:40:18,640 Ngunit ang punto ay ngayon mayroon akong isang kumpletong table. 683 00:40:18,640 --> 00:40:23,020 At kaya ang takeaway dito para pset 7 o talagang para sa pangwakas na proyekto: 684 00:40:23,020 --> 00:40:25,830 Kung nakita mo na ang ka sa pag-iimbak ng anumang piraso ng impormasyon redundantly, 685 00:40:25,830 --> 00:40:28,850 kung ito ay isang bahay, maaaring ito ay isang lungsod, estado, at ZIP 686 00:40:28,850 --> 00:40:32,050 kung saan ZIP maaari karaniwang ngunit hindi palaging ginagamit bilang isang natatanging identifier, 687 00:40:32,050 --> 00:40:35,810 huwag pumunta sa pamamagitan ng ehersisyo sa pag-iisip at pagkatapos ay may isang bagay tulad phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 ng factoring out na karaniwang data dahil lalo na ang iyong website ay makakakuha ng mas mahusay na ginagamit 689 00:40:40,660 --> 00:40:45,440 at mas popular na, ito ay kung paano gumawa ka ba na ang lahat ng bagay ay napakabilis na, 690 00:40:45,440 --> 00:40:51,930 sa pamamagitan ng pagbibigay ng database ng maraming mga pahiwatig sa natatangi hangga't maaari. 691 00:40:51,930 --> 00:40:53,860 Na ng maraming. 692 00:40:53,860 --> 00:40:59,010 Anumang mga katanungan? Ayos lang. Natin ng isang 5-minutong break na doon at pangkating muli. 693 00:41:01,600 --> 00:41:03,540 Ayos lang. 694 00:41:03,540 --> 00:41:08,680 Ang sumusunod ay isang halimbawa na ginamit ilang taon na ang nakalipas kapag kinuha ko CS161, 695 00:41:08,680 --> 00:41:10,960 kung saan ay ang operating system ng klase sa kolehiyo 696 00:41:10,960 --> 00:41:15,160 na kung saan ay kilala sa pagiging kamangha-manghang ngunit isang mabaliw halaga ng trabaho, 697 00:41:15,160 --> 00:41:19,810 at nakatutok talaga sa ilang ng mababang antas na mga problema na lumabas dahil sa mga operating system 698 00:41:19,810 --> 00:41:22,700 at din kahit na sa mundo ng mga database. 699 00:41:22,700 --> 00:41:27,040 >> Ang kuwento na Sinabi ng aking propesor, Margo seltser na tubig, ang taon na tulad ng sumusunod. 700 00:41:27,040 --> 00:41:30,990 Ipagpalagay na mayroon kang isang maliit na refrigerator sa dorm para sa iyo at sa iyong mga kasama 701 00:41:30,990 --> 00:41:34,030 at pareho mo talagang gusto gatas. 702 00:41:34,030 --> 00:41:36,360 Kaya dumating ka ng bahay mula sa klase isang araw, ang iyong kasama ay hindi pa doon, 703 00:41:36,360 --> 00:41:39,650 binuksan mo ang refrigerator, at natanto, "Oh mapahamak, hindi namin ng gatas." 704 00:41:39,650 --> 00:41:42,070 Kaya mo isara ang refrigerator, ituturo sa iyo sa kabuuan ng kalye sa CVS 705 00:41:42,070 --> 00:41:45,830 at kumuha sa nagiging mahaba linya upang bumili ng ilang gatas sa CVS. 706 00:41:45,830 --> 00:41:48,470 Samantala, ang iyong kasama sa kuwarto na ito ay tahanan mula sa kanyang klase, 707 00:41:48,470 --> 00:41:51,690 pagdating sa room, nagbukas ng refrigerator talaga na kinakapos ilang gatas, 708 00:41:51,690 --> 00:41:54,130 magbubukas refrigerator at, "mapahamak, walang gatas." 709 00:41:54,130 --> 00:41:57,890 Kaya niya isinasara ang refrigerator, nagtuturo ang pinto, at napupunta sa ABP 710 00:41:57,890 --> 00:42:00,910 o sa ibang lugar kaysa sa mga CVS na kung saan hindi ka pagpunta sa paga sa bawat isa 711 00:42:00,910 --> 00:42:02,790 upang pumunta makakuha ng ilang gatas. 712 00:42:02,790 --> 00:42:04,820 Siyempre ng ilang minuto mamaya, parehong mo bumalik sa bahay 713 00:42:04,820 --> 00:42:07,740 at ngayon ay mayroon kang dalawang beses ng mas maraming gatas bilang iyong aktwal na gusto. 714 00:42:07,740 --> 00:42:10,670 At pagiging gatas, ngayon ito maging masama dahil gusto mo gatas 715 00:42:10,670 --> 00:42:14,200 ngunit hindi mo talagang tulad ng gatas, kaya ngayon ikaw ay may masyadong maraming gatas, kaya ito ay pagpunta sa maasim. 716 00:42:14,200 --> 00:42:16,830 Ito ay isang kahindik-hindik, kakila-kilabot na sitwasyon. 717 00:42:16,830 --> 00:42:22,920 Ano ang maaaring malutas ang suliranin na ito kung ikaw ay ang unang bahay kasama? Oo. 718 00:42:22,920 --> 00:42:25,970 [Mag-aaral] Dapat mong-iwan ng tala. [Tawa] 719 00:42:25,970 --> 00:42:28,090 Mabuti. Dapat mong-iwan ng tala. 720 00:42:28,090 --> 00:42:32,320 Dapat mong ilagay ang isang Post-tala o tulad ng sinasabi, "Wala para sa gatas," 721 00:42:32,320 --> 00:42:36,830 at ang iyong kasama conceptually sana ay nai-lock ng aktwal na ginagawa na. 722 00:42:36,830 --> 00:42:38,010 O maaari kang pumunta 1 hakbang karagdagang. 723 00:42:38,010 --> 00:42:41,060 Maaari mong literal i-lock ang refrigerator na may ilang mga uri ng kandado, 724 00:42:41,060 --> 00:42:44,870 at ngayon ang iyong kasama ay literal na lock out ng refrigerator. 725 00:42:44,870 --> 00:42:48,520 Kung namin ng tuntuning panlahat pabalik sa programming, 726 00:42:48,520 --> 00:42:51,610 Maaari mo halos tingin ng refrigerator bilang ilang mga uri ng variable o isang struct, 727 00:42:51,610 --> 00:42:53,500 ang ilang mga uri ng lalagyan para sa impormasyon. 728 00:42:53,500 --> 00:42:58,290 Ang problema sa panimula dito ay na ang parehong mo ay pinapayagan upang siyasatin 729 00:42:58,290 --> 00:43:02,370 o basahin ang estado ng istrakturang ito ng data, 730 00:43:02,370 --> 00:43:08,050 ngunit tiningnan mo ito sa iba't ibang oras at pa parehong mo gumawa ng desisyon 731 00:43:08,050 --> 00:43:11,920 batay sa estado ng mundo sa mga iba't ibang mga sandali sa oras. 732 00:43:11,920 --> 00:43:15,570 Kaya ay naka-lock mo ang refrigerator, gusto mo na hindi bababa sa Iniwasan ang iyong kasama 733 00:43:15,570 --> 00:43:19,070 mula sa pag-upang siyasatin ang estado ng mundo, 734 00:43:19,070 --> 00:43:22,530 kaya siya ay hindi maaaring ginawa na parehong desisyon. 735 00:43:22,530 --> 00:43:25,780 Kaya database, bilang ito ay lumiliko out, patuloy ang problema na ito. 736 00:43:25,780 --> 00:43:31,050 >> Natin makita kung maaari naming bumuo ng isang sitwasyon. 737 00:43:31,050 --> 00:43:34,310 Ipagpalagay na ikaw ay ang uri ng masamang tao at pumunta ka sa Bank ng Amerika 738 00:43:34,310 --> 00:43:37,950 o isa sa ang iba pang mga lugar sa square na may ilang bahagi ng ATM-tabi, 739 00:43:37,950 --> 00:43:41,200 at sa paanuman mo naisip kung paano i-duplicate ang isang ATM card - hindi lahat na mahirap. 740 00:43:41,200 --> 00:43:42,730 Lamang magnetic strip. 741 00:43:42,730 --> 00:43:45,180 At kaya kung ano ang gusto mong subukang gawin ay play ang laro 742 00:43:45,180 --> 00:43:49,060 kung saan inilagay mo ang 1 card sa 1 machine, isa pang card sa iba pang mga machine, 743 00:43:49,060 --> 00:43:51,980 at gusto mo mahalagang upang subukang mag-withdraw ng pera nang sabay-sabay, 744 00:43:51,980 --> 00:43:54,930 dahil isipin kuwento na napupunta tulad ng sumusunod. 745 00:43:54,930 --> 00:43:57,350 Ang machine sa kaliwa ay tumatagal ng iyong card at ang iyong PIN, 746 00:43:57,350 --> 00:44:00,240 at pagkatapos ay sabihin sa iyo, "Bigyan mo ako $ 100." 747 00:44:00,240 --> 00:44:04,790 Ang ATM program sa unang gawin ng isang piling sa database o ang katumbas - 748 00:44:04,790 --> 00:44:10,780 anumang database gumagamit ito - upang makita ang user na ito may hindi bababa sa $ 100 sa kanyang account? 749 00:44:10,780 --> 00:44:16,180 Kung gayon, pagkatapos ay sabihin ang lahat sa $ 100 at ibawas $ 100 mula sa kanilang balanse. 750 00:44:16,180 --> 00:44:20,470 Ngunit siyempre kung mayroong maramihang mga machine dito o maramihang mga paraan ng inspecting 751 00:44:20,470 --> 00:44:23,560 ang estado ng mundo na, ang bangko hanay ng mga arko, upang makita kung gaano karaming pera ang mayroon kang, 752 00:44:23,560 --> 00:44:26,780 ipagpalagay na sa pamamagitan lamang ng pagkakataon ang machine sa kaliwa at kanan 753 00:44:26,780 --> 00:44:30,140 parehong hinihiling na tanong sa halos parehong sandali sa oras. 754 00:44:30,140 --> 00:44:34,160 >> At ito ay maaaring tiyak na mangyayari. ATM ay mga computer mga araw na ito. 755 00:44:34,160 --> 00:44:37,670 Kaya kung ang machine sa kaliwa sabi, "Oo, mayroon kang hindi bababa sa $ 100," 756 00:44:37,670 --> 00:44:42,150 samantala ang machine sa kanan sabi, "Oo, mayroon kang hindi bababa sa $ 100," 757 00:44:42,150 --> 00:44:47,420 pagkatapos ay pareho sa kanila magpatuloy upang tapusin ang kanilang mga programa at aktwal na sabihin ang lahat ng $ 100 758 00:44:47,420 --> 00:44:50,820 at sabihin, "Dati mayroon kang $ 200." 759 00:44:50,820 --> 00:44:54,890 "Hayaan akong i-update ang variable na ngayon $ 100 na naiwan sa account." 760 00:44:54,890 --> 00:44:58,780 Ngunit kung parehong sa kanila na naka-check ang iyong balanse sa account at nalaman na ito ay $ 200 761 00:44:58,780 --> 00:45:02,000 at ang parehong sa kanila pagkatapos gawin ang matematika at sabihin 200-100, 762 00:45:02,000 --> 00:45:06,990 ang mga machine na potensyal na sabihin ang lahat ng mga dalawang $ 100 bill sa bawat machine, 763 00:45:06,990 --> 00:45:11,360 ngunit lamang sila na-update ang iyong balanse sa account sa kabuuan na $ 100. 764 00:45:11,360 --> 00:45:15,130 Sa ibang salita, nagsagawa ang $ 200, ngunit dahil sila ay siniyasat ang estado ng mundo 765 00:45:15,130 --> 00:45:18,840 nang sabay-sabay at pagkatapos ay ginawa ng isang desisyon na batay sa halaga na, 766 00:45:18,840 --> 00:45:21,930 hindi nila maaaring gawin ang matematika sa huli tama. 767 00:45:21,930 --> 00:45:25,520 Kaya sa isang bank sitwasyon masyadong gusto mo talagang magkaroon ng ilang mga uri ng lockout 768 00:45:25,520 --> 00:45:28,450 sa gayon ay sa lalong madaling mo na masusuri ang estado ng ilang mga variable 769 00:45:28,450 --> 00:45:31,220 na talagang mahalaga, tulad ng iyong balanse sa account, 770 00:45:31,220 --> 00:45:36,070 hindi ipaalam sa sinumang iba pa na gumawa ng mga pagpapasya batay sa na hanggang sa ikaw ay tapos nang ginagawa ang iyong kakayanan, 771 00:45:36,070 --> 00:45:38,920 kung saan sa kasong ito ay ang ATM sa kaliwa. 772 00:45:38,920 --> 00:45:41,160 I-lock ang iba. 773 00:45:41,160 --> 00:45:44,650 Maaari mong aktwal na makamit ang epekto sa loob ng ilang iba't ibang mga paraan. 774 00:45:44,650 --> 00:45:48,660 >> Ang pinakasimpleng paraan sa MySQL ay isang linya ng SQL na ibinigay namin ka 775 00:45:48,660 --> 00:45:52,030 sa detalye ng problema set na mukhang eksakto tulad nito. 776 00:45:52,030 --> 00:45:57,420 Ipasok ang sa talahanayan - anumang ito ay tinatawag na - isang id, simbolo, at ibahagi, ang isang bilang ng mga pagbabahagi, 777 00:45:57,420 --> 00:45:59,660 mga sumusunod na halaga, halimbawa. 778 00:45:59,660 --> 00:46:03,370 Kung hindi mo pa basahin ang spec, ito ay isang halimbawa na kinasasangkutan ng kung paano mo pumunta tungkol sa 779 00:46:03,370 --> 00:46:07,340 pagbili ng 10 pagbabahagi ng ito peni stock para sa Pangulo Skroob, 780 00:46:07,340 --> 00:46:10,340 na user ID mangyayari ang bilang 7? 781 00:46:10,340 --> 00:46:14,070 Nagsasabing INSERT SA talahanayan ang mga sumusunod na id, simbolo, at bilang ng mga pagbabahagi 782 00:46:14,070 --> 00:46:18,200 ng 7, 'DVN.V', at 10. 783 00:46:18,200 --> 00:46:21,510 Ngunit - ngunit, ngunit, ngunit - ang pangalawang linya ang mahalagang. 784 00:46:21,510 --> 00:46:26,310 SA mga duplicate na KEY i-update ang pagbabahagi = pagbabahagi + halaga (pagbabahagi). 785 00:46:26,310 --> 00:46:28,350 Kaya lubos misteriyoso-pagtingin sa unang tingin. 786 00:46:28,350 --> 00:46:31,990 Ngunit ang katotohanan na ang SQL query na ito, kahit na ito bumabalot sa 2 linya sa, 787 00:46:31,990 --> 00:46:35,920 1 mahaba ang query, nangangahulugan ito atomic 788 00:46:35,920 --> 00:46:41,000 sa kamalayan na ang query na ito ay alinman sa pinaandar lahat ng sama-sama o hindi sa lahat. 789 00:46:41,000 --> 00:46:45,100 At sa pamamagitan ng kahulugan ng MySQL, na kung paano sila ipinatupad sa query na ito. 790 00:46:45,100 --> 00:46:51,010 Ito ay sa pamamagitan ng kahulugan sa manu-manong na katiyakan upang maisagawa ang lahat ng sabay-sabay o hindi sa lahat. 791 00:46:51,010 --> 00:46:54,020 Ang pagganyak para sa ay ang mga sumusunod. 792 00:46:54,020 --> 00:46:58,540 Kung sa kasong ito ikaw ay sinusubukan upang bumili ng 10 pagbabahagi ng stock, 793 00:46:58,540 --> 00:47:02,260 ito uri ng ang parehong kuwento bilang gatas, uri ng ang parehong kuwento bilang ng ATM. 794 00:47:02,260 --> 00:47:04,970 >> Kung gumawa ka ng pagkakamali ng hindi gamit ang syntax na ito 795 00:47:04,970 --> 00:47:09,610 ngunit sa halip ng pagpili mula sa database upang makita kung gaano karaming pagbabahagi ng ito peni stock 796 00:47:09,610 --> 00:47:13,750 ang Pangulo Skroob mayroon, at ipagpalagay na siya ay may 10 pagbabahagi, 797 00:47:13,750 --> 00:47:19,330 at pagkatapos ay ang ilang split ikalawang mamaya pagkatapos mo gawin ng isang update statement, 798 00:47:19,330 --> 00:47:24,810 na isa pang pahayag sa SQL na nagsasabing magpatuloy at magdagdag ng 10 pang pagbabahagi 799 00:47:24,810 --> 00:47:28,700 sa kanyang kasalukuyang 10 upang ang perpektong kabuuang ay 20, 800 00:47:28,700 --> 00:47:33,490 ang problema ay dahil sa mga database system ngayon at dahil sa computer na ngayon 801 00:47:33,490 --> 00:47:35,990 mayroon kang maramihang mga processors, maramihang mga core - 802 00:47:35,990 --> 00:47:38,920 sa ibang salita, ang mga computer ay maaaring literal na paggawa ng maramihang mga bagay nang sabay-sabay - 803 00:47:38,920 --> 00:47:44,270 ang walang garantiya na ang iyong piliin at iyong update sa kasong ito 804 00:47:44,270 --> 00:47:46,150 mangyari muli upang i-back. 805 00:47:46,150 --> 00:47:49,140 Kaya masamang sitwasyon ay gagawin mo ang piliin ang 806 00:47:49,140 --> 00:47:51,670 upang makita kung gaano karaming mga pagbabahagi ng ito peni stock ay magkaroon ng Skroob, 807 00:47:51,670 --> 00:47:54,710 at pagkatapos ay sa pamamagitan lamang ng pagkakataon ng isa pang database query ay pinaandar - 808 00:47:54,710 --> 00:47:57,740 siguro ang Skroob nito sa ibang window ng browser sinusubukan upang bumili ng 10 pagbabahagi 809 00:47:57,740 --> 00:48:00,700 sa isa pang window sa kabuuan, tulad ng ATM - 810 00:48:00,700 --> 00:48:05,410 at ipagpalagay na ang isa pang query ay nakakakuha sa pagitan ng piliin ang at ang update. 811 00:48:05,410 --> 00:48:10,210 Ito ay maaaring maging kaso na Skroob ngayon loses ilang bilang ng mga pagbabahagi 812 00:48:10,210 --> 00:48:14,340 dahil ang proseso ng isa pang inspecting ang estado ng kanyang mundo, 813 00:48:14,340 --> 00:48:17,800 o siya ay nakakakuha ng higit pang pagbabahagi sa dapat niyang. 814 00:48:17,800 --> 00:48:23,250 Hindi namin ay pumunta sa particular ng eksakto kung ano ang mga partikular na mga linya ng kuwento ay, 815 00:48:23,250 --> 00:48:28,380 ngunit ang punto ay kung mayroon kang mag-check ng mga variable na halaga at pagkatapos ay gumawa ng desisyon, 816 00:48:28,380 --> 00:48:32,500 kung may panganib ng ibang tao sa paggawa ng isang bagay sa pagitan ng mga 2 pahayag, 817 00:48:32,500 --> 00:48:36,220 na maaaring mangyari sa multiprocessor system, sa multicore system, 818 00:48:36,220 --> 00:48:41,220 computer na may kakayahang gawin ng maraming mga bagay nang sabay-sabay, masamang bagay ay maaaring mangyari 819 00:48:41,220 --> 00:48:44,530 tulad ng bank account debit mali, pagbili ng dalawang beses ng maraming gatas, 820 00:48:44,530 --> 00:48:46,730 o sa kasong ito maling bilang ng mga pagbabahagi. 821 00:48:46,730 --> 00:48:48,370 Ngunit may isang mas madaling paraan upang isipin ang tungkol sa. 822 00:48:48,370 --> 00:48:53,290 >> Ito ay lumiliko out na sa SQL Sinusuportahan din, kung tama mong i-configure ang iyong talahanayan, 823 00:48:53,290 --> 00:48:56,920 isang bagay na tinatawag transaksyon, na Gusto ko magtaltalan ay talagang mas madali upang maunawaan 824 00:48:56,920 --> 00:49:00,650 kaysa ito, ngunit ito ay hindi isang 1-Liner, kaya ito ay talagang isang kaunti pa kasangkot. 825 00:49:00,650 --> 00:49:04,960 May literal isang pahayag sa SQL tinatawag START TRANSAKSYON. 826 00:49:04,960 --> 00:49:08,300 Tulad lamang ng kung piliin, UPDATE, INSERT, TANGGALIN, at SUMALI at ng grupo ng mga iba, 827 00:49:08,300 --> 00:49:10,970 may mga keyword tulad START TRANSAKSYON. 828 00:49:10,970 --> 00:49:13,560 At kung ano ang mong gawin sa konteksto ng pset 7 - 829 00:49:13,560 --> 00:49:17,270 hindi mo na kailangang gawin ito para sa pset 7; Pagwawaksi tahasan ito bilang hindi kinakailangan, 830 00:49:17,270 --> 00:49:18,830 ngunit para sa mga panghuling proyekto maaari itong maging kapaki-pakinabang - 831 00:49:18,830 --> 00:49:22,820 kung tumawag ka ng isang query ng START TRANSAKSYON at pagkatapos ay isa pang query 832 00:49:22,820 --> 00:49:25,620 at isa pang query at pagkatapos ay isa pang, isa pa, at isa pa, 833 00:49:25,620 --> 00:49:31,860 mga query na iyon ay hindi aktwal na ipatupad ang hanggang tawagan mo ang SQL pahayag commit, 834 00:49:31,860 --> 00:49:37,220 sa puntong, kung ito ay ang 2 pahayag o 20 mga pahayag, ay lahat ng mga ito ay ipatupad ang sabay-sabay, 835 00:49:37,220 --> 00:49:42,770 na nangangahulugan na walang sinuman ang maaaring sinasadyang bumili ng masyadong maraming gatas o debit ng masyadong maraming pera 836 00:49:42,770 --> 00:49:46,340 o bumili ng masyadong maraming pagbabahagi dahil ang lahat ng iyong mga query sa execute 837 00:49:46,340 --> 00:49:48,410 bumalik upang i-back i-back upang i-back. 838 00:49:48,410 --> 00:49:51,580 At ito ay sobrang mahalaga, lalo na kapag ikaw ay paggawa ng isang bagay tulad nito. 839 00:49:51,580 --> 00:49:54,900 Ito ay isang arbitrary na halimbawa na nagsasabing natin i-update ang bank account 840 00:49:54,900 --> 00:50:00,200 sa pamamagitan ng pagtatakda ng isang balanse na katumbas ng balanse - $ 1000 kung saan ang account number ay 2. 841 00:50:00,200 --> 00:50:04,260 At pagkatapos ay ang ikalawang pahayag ay ngayon hayaan deposit na $ 1000 842 00:50:04,260 --> 00:50:07,310 sa ibang tao ang bank account na ang account number ay 1. 843 00:50:07,310 --> 00:50:10,400 >> Sa ibang salita, ito ay isang perpektong halimbawa ng kung saan nais mong tiyakin 844 00:50:10,400 --> 00:50:13,590 na ang parehong mga pahayag na ito ay mangyari o hindi sa lahat ng 845 00:50:13,590 --> 00:50:15,450 dahil kung hindi man customer ay pagpunta upang screwed 846 00:50:15,450 --> 00:50:17,670 at ikaw ay pagpunta sa kanilang pera at hindi magdeposito ito sa ibang lugar, 847 00:50:17,670 --> 00:50:20,470 o bangko ay pagpunta upang screwed kung saan ka na magdeposito ng pera 848 00:50:20,470 --> 00:50:23,140 ngunit hindi aktwal na ibawas ang mga ito mula sa account ng user. 849 00:50:23,140 --> 00:50:25,810 Kaya gusto mong pareho sa kanila upang maisagawa nang. 850 00:50:25,810 --> 00:50:29,140 Kaya sinasang-ayunan ang mga transaksyon ng mundo. 851 00:50:29,140 --> 00:50:31,360 Kaya, na ang isang bagay upang panatilihing sa likod ng iyong isip, 852 00:50:31,360 --> 00:50:34,710 hindi kaya magkano para sa mga layunin ng isang pangwakas na proyekto, 853 00:50:34,710 --> 00:50:36,700 ngunit kung nais mong dalhin ang iyong huling proyekto sa isang lugar, 854 00:50:36,700 --> 00:50:39,040 kung nais mong simulan ang ilang mga kumpanya sa paligid nito, 855 00:50:39,040 --> 00:50:41,270 kung nais mong upang malutas ang problema ng ilang mga grupo ng mag-aaral sa campus 856 00:50:41,270 --> 00:50:45,210 at aktwal na magkaroon ng isang live na, aktibong website, ito ay ang uri ng banayad na bug na maaaring lumabas dahil 857 00:50:45,210 --> 00:50:49,480 kung hindi mo lubos na tingin sa pamamagitan ng kung ano ang maaaring mangyari kung ang 2 tao 858 00:50:49,480 --> 00:50:54,190 sinusubukang i-access ang iyong website sa literal ang parehong sandali sa oras, 859 00:50:54,190 --> 00:50:56,890 kung saan ang kanilang mga query na maaaring kung hindi man ay interwoven. 860 00:50:58,840 --> 00:51:01,420 >> Handa na para sa ilang JavaScript, isang teaser nito? 861 00:51:01,420 --> 00:51:04,320 Ito ay aming huling wika para sa semestre. Ayos lang. 862 00:51:04,320 --> 00:51:09,940 Thankfully, ang JavaScript ay mukhang napaka, napaka, na halos kapareho sa 2 wika, C at PHP, 863 00:51:09,940 --> 00:51:11,140 tapos kami na sa gayon ay malayo. 864 00:51:11,140 --> 00:51:14,340 Walang JavaScript sa pset 7, ngunit ito ay isang hindi kapani-paniwalang na kapaki-pakinabang na tool 865 00:51:14,340 --> 00:51:18,840 pagdating sa paggawa ng mga web-based na panghuling proyekto o talagang lamang web programming mas pangkalahatang. 866 00:51:18,840 --> 00:51:20,950 Kaya isang mabilis na pangkalahatang-ideya ng isang bagay na tinatawag DOM. 867 00:51:20,950 --> 00:51:23,600 Narito ang isang napaka-simpleng web page na talagang lamang sabi kumusta, mundo 868 00:51:23,600 --> 00:51:25,970 parehong sa pamagat at sa katawan. 869 00:51:25,970 --> 00:51:29,270 Bilang indentation ay nagmumungkahi para sa ilang oras, 870 00:51:29,270 --> 00:51:31,380 doon ay talagang isang hierarchy sa mga pahina ng web. 871 00:51:31,380 --> 00:51:34,220 Maaari kong iguhit ang parehong snippet ng HTML bilang isang puno, 872 00:51:34,220 --> 00:51:37,470 iniisip pabalik sa aming mga talakayan ng mga istraktura ng data sa C, tulad ng sumusunod. 873 00:51:37,470 --> 00:51:40,710 Mayroon akong ilang mga espesyal na root node tinatawag dokumento node, 874 00:51:40,710 --> 00:51:43,650 at kami na makita ang analog ng ito sa JavaScript sa sandali lamang. 875 00:51:43,650 --> 00:51:48,330 Ang unang anak at lamang na anak ng na sa kasong ito ay ang mga tag na HTML. 876 00:51:48,330 --> 00:51:49,880 Walang direktang pagmamapa ng doctype. 877 00:51:49,880 --> 00:51:53,170 Iyon ay isang espesyal na bagay, kaya dapat balewalain lang namin ang pagdating na ito DOM, 878 00:51:53,170 --> 00:51:55,810 ito Dokumento Bagay Modelo puno. 879 00:51:55,810 --> 00:51:59,530 Pansinin na ang mga HTML tag, na kung saan ko na itinatanghal mang bilang isang parihaba, 880 00:51:59,530 --> 00:52:02,890 may 2 bata: ulo at body. 881 00:52:02,890 --> 00:52:04,840 >> Yaong ay katulad iginuhit bilang mga parihaba. 882 00:52:04,840 --> 00:52:08,970 Ay makahulugang pictorially na ulo sa kaliwa ng katawan. 883 00:52:08,970 --> 00:52:11,960 Implikasyon ay na ulo mauna sa tree. 884 00:52:11,960 --> 00:52:14,910 Kaya ang aktwal na pag-order sa isang puno kapag gumuhit ka ito tulad nito, 885 00:52:14,910 --> 00:52:17,460 kahit na ang mga hugis at watnat arbitrary. 886 00:52:17,460 --> 00:52:20,360 Head samantala ng isang bata na tinatawag na pamagat, 887 00:52:20,360 --> 00:52:25,170 at pamagat aktwal ay may sariling anak, na "hoy, mundo", 888 00:52:25,170 --> 00:52:32,210 kung saan ko sadyang iginuhit bilang isang hugis-itlog sa dito upang gawin itong bahagyang naiiba mula sa parihaba. 889 00:52:32,210 --> 00:52:37,420 Mga parihaba na ito ay elemento, samantalang kumusta, mundo ay talagang isang tekstong node. 890 00:52:37,420 --> 00:52:39,850 Kaya ito ay isang node sa tree, ngunit ito ay isang iba't ibang mga uri ng node 891 00:52:39,850 --> 00:52:41,730 kaya iginuhit ko ito mang naiiba. 892 00:52:41,730 --> 00:52:45,000 Katulad nito ang katawan magkaroon ng anak na tinatawag na kumusta, ang mundo pati na rin, 893 00:52:45,000 --> 00:52:47,910 kaya ibang node kahit hindi sila coincidentally parehong teksto, 894 00:52:47,910 --> 00:52:52,100 ngunit ko ang iginuhit ito gamit ang parehong hugis. Kaya na nagmamalasakit? 895 00:52:52,100 --> 00:52:56,820 Well, kung ano ang magaling tungkol sa HTML na ito ay na ito hierarchical kalikasan. 896 00:52:56,820 --> 00:53:01,010 At kung ano ang magaling tungkol sa JavaScript at partikular na mga aklatan na malayang magagamit 897 00:53:01,010 --> 00:53:07,120 at sikat na tulad ng jQuery, maaari kang mag-navigate ang mala-punong balangkas upang amazingly madaling. 898 00:53:07,120 --> 00:53:11,790 Anumang ng ang mga bagay na aming ginawa sa C na may mga payo at mga puno ng traversing at recursing sa node 899 00:53:11,790 --> 00:53:15,300 kaliwang bata sa kanang anak, ang lahat ng isang biglaang maaari naming pag-uri-uriin ng mang-ahas 900 00:53:15,300 --> 00:53:19,450 bilang amazingly nakapapaliwanag kung hindi isang bit nakakabigo 901 00:53:19,450 --> 00:53:22,470 ngunit hindi halos isang mahusay na paraan upang pumunta tungkol sa programming. 902 00:53:22,470 --> 00:53:24,470 At iba pa na may mga mas mataas na antas ng wika tulad ng JavaScript 903 00:53:24,470 --> 00:53:28,340 magagawa naming i-navigate ang puno mas intuitively. 904 00:53:28,340 --> 00:53:30,430 >> At sa katunayan syntax ay medyo pamilyar. 905 00:53:30,430 --> 00:53:32,950 Kung hindi mo pa nakita ang JavaScript bago, ito ay talagang maganda ang reference 906 00:53:32,950 --> 00:53:35,910 mula sa Mozilla na mga tao, ang mga tao na gumawa ng Firefox, 907 00:53:35,910 --> 00:53:38,370 kaya huwag mag-atubiling upang mag-browse sa iyong kaginhawaan. 908 00:53:38,370 --> 00:53:41,590 Ano ang makikita mo - at ang mga slide na ito ay magkapareho sa kung ano ang ginamit namin sa iba pang mga araw - 909 00:53:41,590 --> 00:53:44,030 katulad, ang pangunahing ay nawala. 910 00:53:44,030 --> 00:53:47,010 Kaya kapag sumulat ka ng isang programa sa JavaScript, ay hindi pangunahing function na. 911 00:53:47,010 --> 00:53:48,690 Mo lamang simulan ang pagsusulat ng code. 912 00:53:48,690 --> 00:53:51,660 Ngunit isang pangunahing pagkakaiba sa pagitan ng JavaScript at C at PHP 913 00:53:51,660 --> 00:53:55,890 ay na kung saan C at PHP sa gayon malayo ay pinaandar server side 914 00:53:55,890 --> 00:53:59,180 ng appliance sa kasong ito o higit pa sa pangkalahatan sa pamamagitan ng isang server, 915 00:53:59,180 --> 00:54:04,270 JavaScript sa pamamagitan ng disenyo ay kadalasang isinasagawa sa pamamagitan ng isang browser. 916 00:54:04,270 --> 00:54:08,440 Sa ibang salita, maaari mong isulat ang code ng JavaScript, dahil hindi namin sa, 917 00:54:08,440 --> 00:54:13,080 sa isang server sa appliance, ngunit isama mo ito kasama ng iyong HTML, bukod sa iyong CSS, 918 00:54:13,080 --> 00:54:16,100 sa iyong mga GIF at iyong mga PNGs at sa iyong mga JPEG 919 00:54:16,100 --> 00:54:19,170 kaya na kapag ang user ay bumisita sa iyong web page, kung gumagamit ka ng JavaScript, 920 00:54:19,170 --> 00:54:21,770 na JavaScript code ay mula sa server sa browser, 921 00:54:21,770 --> 00:54:24,540 at ito ang browser na aktwal na executes ito. 922 00:54:24,540 --> 00:54:27,960 Kaya ito ay may makahulugang mga implikasyon para sa kahit intelektwal na pagmamay-ari. 923 00:54:27,960 --> 00:54:32,600 Uri ng ulok sa kahit na sa tingin tungkol sa pagprotekta ng iyong IP pagdating sa JavaScript code 924 00:54:32,600 --> 00:54:37,560 dahil sa pamamagitan ng likas na katangian ng wika ito ay makakakuha pinaandar karaniwang browser gilid. 925 00:54:37,560 --> 00:54:40,360 >> Maaari mong tumaranta ito, na nangangahulugan na maaari kang magsagawa ng tumingin ito mabaliw at pangit 926 00:54:40,360 --> 00:54:45,400 na walang whitespace, kalagim-lagim variable na pangalan, upang gawin itong mas mahirap para sa mga tao upang nakawin ang iyong IP, 927 00:54:45,400 --> 00:54:48,120 ngunit ang key na ito ay pinaandar browser gilid. 928 00:54:48,120 --> 00:54:51,790 Kahit bilang isang bukod JavaScript ay maaaring magamit bahagi ng server, 929 00:54:51,790 --> 00:54:54,480 pinaka-karaniwang pagkakataon ng paggamit ngayon ay pa rin sa browser. 930 00:54:54,480 --> 00:54:59,800 At narito ang kung ano ang mukhang. Narito ang isang kung-tao kung-tao bumuo tulad ng C, tulad ng PHP. 931 00:54:59,800 --> 00:55:02,420 Dito ay isang Boolean expression kapag ikaw "o" 2 bagay. 932 00:55:02,420 --> 00:55:04,330 Dito ay kapag ikaw "at" 2 bagay. 933 00:55:04,330 --> 00:55:08,300 Narito ang isang lumipat statement, na kung saan ay katulad sa PHP 934 00:55:08,300 --> 00:55:10,810 na maaari mong lumipat sa iba't ibang mga uri ng mga halaga. 935 00:55:10,810 --> 00:55:15,180 Loop ay parehong may para sa loop dito, na kung saan ay nakaayos identically sa kung ano ang nasaksihan namin bago. 936 00:55:15,180 --> 00:55:18,110 Habang loop; Mayroon kaming gawin habang loop. 937 00:55:18,110 --> 00:55:20,290 Variable, napaka bahagyang naiiba. 938 00:55:20,290 --> 00:55:24,560 Mo idineklara ng mga variable tulad ng gagawin mo sa PHP at C, 939 00:55:24,560 --> 00:55:27,860 ngunit katulad JavaScript mahina-type. 940 00:55:27,860 --> 00:55:32,730 Hindi ka tumukoy ng int o Float o string o anumang bagay tulad na karaniwang. 941 00:55:32,730 --> 00:55:34,240 Maaari mong tukuyin var. 942 00:55:34,240 --> 00:55:38,040 Hindi mo upang tukuyin ang var, ngunit ito ay may mga implikasyon kung wala ka. 943 00:55:38,040 --> 00:55:42,000 Karaniwan kung ligtaan mo var, hindi mo sinasadyang lumikha ng isang global variable sa halip ng mga lokal na. 944 00:55:42,000 --> 00:55:46,420 Kaya hayaan mo akong magpanukala na halos palaging lamang sabihin var at pagkatapos ay ang pangalan ng variable. 945 00:55:46,420 --> 00:55:48,740 Ito ay hindi isang uri, lamang var para sa variable. 946 00:55:48,740 --> 00:55:52,930 Ito ay isang halimbawa, kung ito ay ang 123 o "hoy, mundo". 947 00:55:52,930 --> 00:55:58,910 Array ay kasalukuyan at syntactically na katulad sa PHP. 948 00:55:58,910 --> 00:56:03,690 Sasabihin kong var numero at pagkatapos ko bang gamitin muli ang mga square bracket upang idedeklara ang isang variable 949 00:56:03,690 --> 00:56:08,870 na uri ng array na may mga partikular na numero sa mga ito na pinaghihiwalay ng mga kuwit. 950 00:56:08,870 --> 00:56:11,740 At pagkatapos ay sa wakas, ito ay ang isa lamang na talagang ganito ang iba't ibang. 951 00:56:11,740 --> 00:56:16,700 Manariwa sa diwa na sa PHP namin ang nagpatupad ng isang nag-uugnay array para sa isang mag-aaral 952 00:56:16,700 --> 00:56:20,220 tulad Zamyla na maaaring magmukhang ganito, kung saan ang variable ay tinatawag na mag-aaral. 953 00:56:20,220 --> 00:56:23,370 Ang mga square bracket ibig sabihin dito ay isang array. 954 00:56:23,370 --> 00:56:28,500 >> Ang katotohanan na hindi ko ginagamit numeric mga indeks ngunit string - id, bahay, at pangalan - 955 00:56:28,500 --> 00:56:30,990 nangangahulugan na ito ay isang nag-uugnay array, 956 00:56:30,990 --> 00:56:34,490 at ang mga arrow na may equals sign at ang angled bracket 957 00:56:34,490 --> 00:56:37,310 nangangahulugan na ang susi ay "id", ang halaga ay 1; 958 00:56:37,310 --> 00:56:39,310 key ay "bahay", ang halaga ay Winthrop House; 959 00:56:39,310 --> 00:56:41,800 Ang susi ay ang "pangalan", ang halaga ang Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Kaya may 3 susi sa loob ng ito nag-uugnay array, ang bawat isa ay may sariling halaga. 961 00:56:47,110 --> 00:56:52,880 Iyong nakita namin na sa pset 7, o sa lalong madaling panahon, sa JavaScript parehong ideya, 962 00:56:52,880 --> 00:56:55,220 ngunit ito ganito ang hitsura. 963 00:56:55,220 --> 00:57:00,070 Kaya var mag-aaral - walang dollar sign at hindi pagbanggit ng uri pa rin ngunit var - 964 00:57:00,070 --> 00:57:05,860 katumbas at pagkatapos ay buksan ang kulot tirante dahil sa JavaScript kapag mayroon kang pangunahing pares ng halaga, 965 00:57:05,860 --> 00:57:08,900 aktwal mong gamitin ang isang bagay na tinatawag na isang bagay. 966 00:57:08,900 --> 00:57:13,490 At ang mga mo na ay tumagal APCS o ang tulad ng maaaring isipin ang mga bagay mula sa Java 967 00:57:13,490 --> 00:57:15,140 o katulad na mga wika. 968 00:57:15,140 --> 00:57:17,880 JavaScript ay hindi Java, una sa lahat. 969 00:57:17,880 --> 00:57:21,600 Ito ay sinadya na disenyo ng desisyon taon na ang nakakaraan sa magpatumba off ang ibang bagay na sikat na, 970 00:57:21,600 --> 00:57:25,640 ang pangalan nito, kahit na ito ay walang saligan na may kaugnayan sa Java mismo. 971 00:57:25,640 --> 00:57:31,490 JavaScript ay may mga bagay, at lumikha ka ng mga ito sa pamamagitan ng paraan ng kulot suhay pagtatanda. 972 00:57:31,490 --> 00:57:36,710 Objects sa JavaScript ay medyo mas katumbas sa mga nag-uugnay array sa PHP 973 00:57:36,710 --> 00:57:40,030 pagdating sa pag-iimbak ng mga data sa loob ng mga ito. 974 00:57:40,030 --> 00:57:44,100 >> Ngunit mas powerfully sa JavaScript, maaari mong iugnay napaka madaling function 975 00:57:44,100 --> 00:57:48,040 sa loob ng isang bagay, at bagaman maaari mong gawin ito sa iba pang mga wika, 976 00:57:48,040 --> 00:57:50,040 ito ay lubos isang karaniwang paradaym, dahil kakailanganin namin nakikita. 977 00:57:50,040 --> 00:57:54,380 Sa maikli, ang bagay na ito ay kumakatawan sa isang mag-aaral, na lalo Zamyla, 978 00:57:54,380 --> 00:58:00,380 at katulad conceptually, lamang syntactically ibang mula sa. 979 00:58:00,380 --> 00:58:03,840 Natin ang aktwal na gamitin ang JavaScript sa isang file. 980 00:58:03,840 --> 00:58:05,570 Lumiliko out may script tag. 981 00:58:05,570 --> 00:58:08,180 Nakakita kami ng estilo tag at nakakita kami ng iba pang mga tag na HTML. 982 00:58:08,180 --> 00:58:11,510 Ang script tag na aktwal na maglaman ng ilang JavaScript code. 983 00:58:11,510 --> 00:58:15,500 Hayaan akong pumunta sa appliance kung saan mayroon kaming ilang mga source code na pre-ginawa. 984 00:58:15,500 --> 00:58:18,700 Hindi ko pa ito na-post pa sa website, ngunit ko na pagkatapos ng klase. 985 00:58:18,700 --> 00:58:21,770 Natin buksan up na ito isa, blink.html. 986 00:58:21,770 --> 00:58:27,560 Bumalik sa 1990s, ay literal isang HTML na tag na tinatawag na magpikit tag, 987 00:58:27,560 --> 00:58:30,340 at ito ay isa ng ang pinaka-kamangha-mangha baldado tag sa Internet 988 00:58:30,340 --> 00:58:36,140 kung saan gusto mong bisitahin ang ilang 1990s estilo ng pahina ng web at magsisimulang makakita ng teksto na kumikislap tulad nito, 989 00:58:36,140 --> 00:58:39,810 ang mga resulta ng tag ng makwis, na teksto pagpunta tulad nito. 990 00:58:39,810 --> 00:58:45,070 Isa ng ilang mga beses kung saan ang mundo ay aktwal na sumang-ayon sa isang pamantayan ng web, 991 00:58:45,070 --> 00:58:48,250 lahat ng tao sa buong board pinatay ang magpikit tag ilang taon na ang nakalipas. 992 00:58:48,250 --> 00:58:52,860 Ngunit maaari naming muling ibalik ito sa JavaScript bilang isang demonstration ng kapangyarihan na mayroon ka 993 00:58:52,860 --> 00:58:56,660 kapag maaari mong magsulat ng isang programa sa loob ng isang web page. 994 00:58:56,660 --> 00:59:00,240 Una sabihin laktawan sa ibabaw ng bagong bagay-bagay at tumutok lamang sa ang lumang. 995 00:59:00,240 --> 00:59:01,780 >> Narito ang lumang bagay sa halimbawang ito. 996 00:59:01,780 --> 00:59:06,350 Mayroon akong isang HTML tag, tag ng ulo, at ng isang pamagat na tag. 997 00:59:06,350 --> 00:59:11,210 Pagkatapos Mayroon akong body tag dito na may div, na manariwa sa diwa ay isang parihabang division ng pahina 998 00:59:11,210 --> 00:59:14,720 Ibinigay ko ang isang natatanging ID mang "greeting" sa, 999 00:59:14,720 --> 00:59:18,320 lamang kaya mayroon akong isang paraan ng natatanging nagre-refer dito, na may ilang simpleng teksto: 1000 00:59:18,320 --> 00:59:20,220 kumusta, mundo. 1001 00:59:20,220 --> 00:59:23,940 Ngayon hayaan mo akong mag-scroll pataas sa tuktok ng file na ito at makita kung ano ang bago. 1002 00:59:23,940 --> 00:59:27,710 Ang unang bagay na ang bago up tuktok ang script tag, 1003 00:59:27,710 --> 00:59:31,280 at sa loob ng paunawa ng script tag ko na ipinahayag ng isang function. 1004 00:59:31,280 --> 00:59:34,610 Idedeklara ang isang function sa JavaScript, medyo katulad sa PHP, 1005 00:59:34,610 --> 00:59:37,930 literal ka magsulat ng function na ang pangalan ng pag-andar, panaklong, 1006 00:59:37,930 --> 00:59:40,400 at marahil ilang mga argumento kung ito ay tumatagal ng anumang. 1007 00:59:40,400 --> 00:59:43,510 Pagkatapos ko Mayroon aking kulot suhay gaya ng dati, at ngayon ay mayroon kaming ilang mga bahagyang bagong code, 1008 00:59:43,510 --> 00:59:45,230 ngunit sabihin makita kung ano ang ibig sabihin nito ay. 1009 00:59:45,230 --> 00:59:48,670 Kaya var div, ito lamang ay nangangahulugan na bigyan ako ng isang variable na tinatawag na div. 1010 00:59:48,670 --> 00:59:50,530 Ko tinatawag na ito foo, ngunit gusto ko ito sa tinatawag na div 1011 00:59:50,530 --> 00:59:52,620 para sa mga dahilan na maging malinaw sa isang segundo. 1012 00:59:52,620 --> 00:59:57,480 At ito lumiliko sa JavaScript - at ito JavaScript code na naka-embed sa aking pahina ng web - 1013 00:59:57,480 --> 01:00:01,760 may isang espesyal na global variable ng uri na tinatawag na dokumento. 1014 01:00:01,760 --> 01:00:04,780 JavaScript ay sa katunayan isang object-oriented wika. 1015 01:00:04,780 --> 01:00:07,230 Hindi namin pumunta sa detalye sa 50 sa kung ano ito ay nangangahulugan na, 1016 01:00:07,230 --> 01:00:11,180 ngunit sa ngayon malaman na ang isang bagay ay medyo tulad ng isang struct. 1017 01:00:11,180 --> 01:00:14,740 Tulad ng nakita namin ang paraan pabalik kapag sa isa sa pinakamaagang problema nagtatakda 1018 01:00:14,740 --> 01:00:17,150 kung saan namin maglagay ng maraming impormasyon sa isang struct, 1019 01:00:17,150 --> 01:00:21,330 katulad ay idokumento ang isang espesyal na struct na may browser, 1020 01:00:21,330 --> 01:00:24,810 ay may anumang web page. Ito ay hindi isang bagay ko nilikha. 1021 01:00:24,810 --> 01:00:28,210 Sa loob ng dokumentong ito istraktura, bagaman, mayroon kang hindi lamang data 1022 01:00:28,210 --> 01:00:30,010 ngunit mayroon ka ring mga function. 1023 01:00:30,010 --> 01:00:34,090 >> At anumang oras mayroon kang isang function sa loob ng istruktura, sa loob ng isang bagay, 1024 01:00:34,090 --> 01:00:36,490 ito ay tinatawag na paraan ng isang. Ngunit ito ay ang parehong bagay. 1025 01:00:36,490 --> 01:00:40,110 Ay ang paraan ng isang function na lang kaya ang mangyayari sa loob ng iba pa. 1026 01:00:40,110 --> 01:00:42,990 Kaya ito ay nangangahulugan na ito espesyal na global variable na tinatawag na dokumento 1027 01:00:42,990 --> 01:00:47,690 ang function na tinatawag na ng getElementById na literal na ginagawa na. 1028 01:00:47,690 --> 01:00:52,460 Ito ay makakakuha ka ng isang elemento mula sa DOM, puno ng Modelo ng Dokumento Bagay, 1029 01:00:52,460 --> 01:00:55,520 na ang ID ay sa pagbati kaso na ito. 1030 01:00:55,520 --> 01:00:59,200 Sa ibang salita, ang lahat ng oras na namin na ginugol sa istraktura ng data ay sa pag-play dito. 1031 01:00:59,200 --> 01:01:01,400 Ang larawang ito ng isang DOM na nagkaroon kami ng ilang sandali ang nakalipas, 1032 01:01:01,400 --> 01:01:06,100 kahit na ang pahina ay isang maliit na naiiba, kung ako ay nagkaroon ng isang div sa larawan na ito, 1033 01:01:06,100 --> 01:01:11,180 ano document.getElementById ay bumalik sa akin ay epektibong isang pointer 1034 01:01:11,180 --> 01:01:15,440 sa parihaba sa tree, isang reference sa parihaba sa tree. 1035 01:01:15,440 --> 01:01:18,410 Kaya na kung ano ang ibig sabihin nito upang aktwal na tumawag sa isa sa mga function. 1036 01:01:18,410 --> 01:01:21,960 Sa kasong ito muli ng div. Ito ay hindi isang katawan o ng isang pamagat. 1037 01:01:21,960 --> 01:01:26,480 Kaya sabihin makita kung ano pagkatapos kong gawin na ang div ito ngayon na mayroon akong ito sa loob ng ito variable na tinatawag na div. 1038 01:01:26,480 --> 01:01:32,580 Ito lumiliko out na may JavaScript mayroon kang kakayahan upang baguhin ang CSS ng iyong pahina dynamic. 1039 01:01:32,580 --> 01:01:39,060 Hanggang ngayon, ang lahat ng CSS tapos kami na, kahit na limitado, sa mga katangian ng estilo, 1040 01:01:39,060 --> 01:01:41,730 o kung saan ang ibang tao na namin ilagay ang CSS? 1041 01:01:42,730 --> 01:01:45,810 Uri ako ng pinahaba ang buntot na ang isa. Sa estilo tag sa tuktok ng file. 1042 01:01:45,810 --> 01:01:49,180 O third lugar ay sa? 1043 01:01:50,710 --> 01:01:54,590 >> Isang panlabas na file, isang bagay. Css. 1044 01:01:54,590 --> 01:01:56,730 Kaya mga ang 3 lugar tapos kami na CSS sa gayon ay malayo, 1045 01:01:56,730 --> 01:01:59,310 ngunit ang catch ay mahirap namin ang code lahat. 1046 01:01:59,310 --> 01:02:04,060 Napagpasyahan mo habang ikaw ay kalapati sa pset 7, napagpasyahan naming bago panayam kung ano ang aming CSS ay. 1047 01:02:04,060 --> 01:02:07,380 Ngunit kung gusto mong baguhin ang iyong CSS, maaari mong aktwal na gawin iyon 1048 01:02:07,380 --> 01:02:09,370 sa sandaling mayroon kang isang aktwal na wika ng programming. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - hindi mga programa wika. JavaScript. 1050 01:02:13,910 --> 01:02:18,200 Kaya ito lumiliko out na sa lalong madaling panahon bilang mayroon kang isa ng mga parihaba mula sa puno 1051 01:02:18,200 --> 01:02:23,050 na tinatawag na DOM, ito ay mismong ilang mga data sa loob nito. 1052 01:02:23,050 --> 01:02:27,820 Kaya sa div ko lang grabbed mula sa puno ay may kung ano ang makikita namin tumawag sa isang ari-arian sa loob nito 1053 01:02:27,820 --> 01:02:34,390 tinatawag na estilo, at ang estilo ng ari-arian ay may sa mismong isang ari-arian na tinatawag na kakayahang makita. 1054 01:02:34,390 --> 01:02:37,330 Gusto kong malaman ang mga ito lamang sa pamamagitan ng pagtingin manu-manong gumagamit ng CSS. 1055 01:02:37,330 --> 01:02:41,160 Lumiliko out may isang ari-arian ng visibility ng CSS na ginagawa kung ano ang nakasulat. 1056 01:02:41,160 --> 01:02:44,530 Gumagawa ng isang bagay na nakikita o hindi, nakikita o hindi. 1057 01:02:44,530 --> 01:02:46,810 At kung paano gawin mo na ito. 1058 01:02:46,810 --> 01:02:50,510 Ako humihingi programa kung ang pagpapakita ng div na ito ay nakatago, 1059 01:02:50,510 --> 01:02:53,390 ano ang gagawin ko baguhin ito sa? Nakikita. 1060 01:02:53,390 --> 01:02:58,840 Iba Pa kung ang pagpapakita ng pahinang ito ay hindi nakatago, lohikal ko gawin ito nakatagong. 1061 01:02:58,840 --> 01:03:04,070 Mayroon akong walang ideya kung bakit ito ay nakikita at nakatago at hindi nakikita at di-nakikita. 1062 01:03:04,070 --> 01:03:06,000 Ito ay isang mahinang desisyon ng disenyo sa kahabaan ng paraan. 1063 01:03:06,000 --> 01:03:09,530 Ngunit ang mga katunayan opposites sa CSS: nakikita at nakatago. 1064 01:03:09,530 --> 01:03:15,520 Ang lahat ng ito ay nangangahulugan itong baguhin ang CSS ng aking mga file on at off, on at off 1065 01:03:15,520 --> 01:03:16,870 para sa partikular na div. 1066 01:03:16,870 --> 01:03:20,630 Ngunit muli, ito ay isang function na tinatawag na kumurap. Kapag ang kumurap function na tinatawag? 1067 01:03:20,630 --> 01:03:24,080 Ito lumiliko out na may isa pang espesyal na global variable na tinatawag na window, 1068 01:03:24,080 --> 01:03:28,220 katulad sa espiritu sa dokumento, ngunit kung saan ang dokumento ay tumutukoy sa iyong web page, 1069 01:03:28,220 --> 01:03:31,700 tulad ng puno ng DOM, ang HTML na iyong ipinadala mula sa server, 1070 01:03:31,700 --> 01:03:35,250 window ay tumutukoy sa chrome sa paligid nito, ang address bar, ang mga bar ng pamagat, 1071 01:03:35,250 --> 01:03:37,880 at ang lahat ng na mga bagay-bagay sa paligid ng iyong web page. 1072 01:03:37,880 --> 01:03:42,800 >> At lumiliko ito na ang window ng bagay ay may espesyal na function na sa loob ng tinatawag na setInterval 1073 01:03:42,800 --> 01:03:44,360 na ginagawa kung ano ang nakasulat. 1074 01:03:44,360 --> 01:03:48,600 Ito ay magtakda ng isang agwat - sa kasong ito bawat 500 millisecond - 1075 01:03:48,600 --> 01:03:52,270 at, tumagal ng hula, kung ano ang ito pagpunta sa gawin ang bawat 500 millisecond? 1076 01:03:52,270 --> 01:03:55,240 Ito ay upang maisagawa na function na kumurap. 1077 01:03:55,240 --> 01:03:58,560 At kung ano ang magaling dito ay na maaari naming nagawa ito sa C kahit hindi namin ginawa. 1078 01:03:58,560 --> 01:04:01,580 C ang isang bagay na tinatawag payo ng function na kung saan maaari mong ipasa ang mga function sa paligid 1079 01:04:01,580 --> 01:04:03,140 bilang argumento. 1080 01:04:03,140 --> 01:04:07,620 Katulad nito sa JavaScript, maaari mong pumasa sa pangalan ng isang function sa isa pang function na. 1081 01:04:07,620 --> 01:04:10,630 At pansinin kung ano ang ako ginagawa. Hindi ako ginagawa ito. 1082 01:04:10,630 --> 01:04:14,380 Kung ko bang ilagay ang mga panaklong pagkatapos ng magpikit, na ibig sabihin tawagan ang function na sa magpikit. 1083 01:04:14,380 --> 01:04:17,430 Kung ligtaan ko ang mga ito, na nangangahulugang dito magkukurap function na 1084 01:04:17,430 --> 01:04:21,330 kaya setInterval na maaaring tumawag ito bawat 500 millisecond. 1085 01:04:21,330 --> 01:04:28,200 Kaya ang resulta, mabangis bagaman ito ay, na kung pumunta ako sa localhost at pumunta sa blink.html, 1086 01:04:28,200 --> 01:04:32,120 Ako ngayon ito mangyari muli at muli. 1087 01:04:32,120 --> 01:04:34,950 At kung ako aktwal Siyasatin ang Elemento, sabihin makita kung maaari naming makita ito. 1088 01:04:34,950 --> 01:04:38,550 Hayaan akong Siyasatin Element, ipaalam sa akin na mag-scroll pababa ng kaunti lamang, 1089 01:04:38,550 --> 01:04:44,320 hayaan mo akong pumili ng mga Mga Elemento ng sa paglipas dito, at mapansin ang DOM sa loob ng Chrome inspector. 1090 01:04:44,320 --> 01:04:48,840 Literal ito pagbabago pabalik-balik bawat 500 millisecond. 1091 01:04:48,840 --> 01:04:55,660 Kung pumunta kami sa aming kaibigan Nate, 1092 01:04:55,660 --> 01:05:00,020 kung sakaling nagtaka kung paano ito gumagana, katulad ideya na may isang agwat, 1093 01:05:00,020 --> 01:05:04,810 ngunit Nate ay aktwal na paggawa ng epektibong paggamit ng kulay sa partikular na kasong ito dito. 1094 01:05:04,810 --> 01:05:07,350 Kaya kung ano ang higit pa namin ang aktwal na gawin sa mga ito? 1095 01:05:07,350 --> 01:05:09,990 Natin buksan ang isa pang halimbawa at subukan ang isang bagay 1096 01:05:09,990 --> 01:05:12,940 na programa kahit na mas kapaki-pakinabang kaysa sa paggawa ng mga bagay sa magpikit. 1097 01:05:12,940 --> 01:05:17,990 Hayaan akong pumunta sa aming mga form ng direktoryo ngayon at pumunta sa form0. 1098 01:05:17,990 --> 01:05:20,820 Ito ang ugliest na posibleng form na maaari kong makabuo ng, 1099 01:05:20,820 --> 01:05:23,290 at ipaalam sa akin lamang ipakita sa iyo kung ano ang mukhang sa isang browser. 1100 01:05:23,290 --> 01:05:28,960 >> Hayaan akong pumunta sa localhost / form, at ito ay form0. 1101 01:05:28,960 --> 01:05:33,400 Ito ay isang napakabilis na pangit HTML form na may ilang mga patlang para sa email, para sa password, 1102 01:05:33,400 --> 01:05:37,190 password, at pagkatapos ay isang maliit na checkbox upang sumang-ayon sa ilang mga tuntunin at kundisyon. 1103 01:05:37,190 --> 01:05:41,350 Catch ay kung bisitahin ko ang form na ito at hindi ko nais upang bigyan ka ng aking email address, 1104 01:05:41,350 --> 01:05:44,730 Hindi ko nais upang sumang-ayon sa mga tuntunin at kundisyon siguro, ang maaari kong i-click ang Magrehistro 1105 01:05:44,730 --> 01:05:46,920 at ito ay nagbibigay-daan sa akin sa pamamagitan ng anumang paraan. 1106 01:05:46,920 --> 01:05:50,800 Nangyayari ito upang isumite sa bobo PHP file na tinatawag na dump.php. 1107 01:05:50,800 --> 01:05:58,420 Lahat ng ito ginagawa ay i-print ang mga nilalaman ng $ _GET lamang para sa mga layuning pang-diagnostic. 1108 01:05:58,420 --> 01:06:01,580 Iyon ay kung ano ang isinumite ng user ngayon lang. 1109 01:06:01,580 --> 01:06:05,010 Ngunit ipagpalagay na aktwal na namin nais na patunayan ang pagsusumite ng form ng gumagamit. 1110 01:06:05,010 --> 01:06:06,530 Hayaan akong pumunta sa bersyon 1. 1111 01:06:06,530 --> 01:06:11,420 Ito ay form1.html. Hitsura aesthetically lang ng masama, ngunit mapansin kung paano magarbong ito ay. 1112 01:06:11,420 --> 01:06:15,450 Kung iki-click ko Magparehistro walang cooperating, ako yelled sa. 1113 01:06:15,450 --> 01:06:17,320 "Dapat mong ibigay ang iyong email address." 1114 01:06:17,320 --> 01:06:21,670 Ayos lang. Kaya hayaan mo akong subukan na. Kaya malan@harvard.edu. Hindi ko kailangan ng password. 1115 01:06:21,670 --> 01:06:25,100 Magrehistro. "Dapat kang magbigay ng isang password." Ayos lang. 1116 01:06:25,100 --> 01:06:28,470 Kaya ako magbigay ng password ng pulang-pula. Magrehistro. 1117 01:06:28,470 --> 01:06:32,300 "Ang mga password ay hindi tumutugma." Mayroon akong ngayon type sa krimson dito. 1118 01:06:32,300 --> 01:06:35,710 Ko aksidenteng naka-check na. Magrehistro. 1119 01:06:35,710 --> 01:06:39,860 "Dapat kang sumang-ayon sa mga tuntunin at kundisyon." Ayos lang. Sumang-ayon doon. Magrehistro. 1120 01:06:39,860 --> 01:06:43,700 At ngayon ito ay nagpapakita sa akin ang diagnostic output doon. 1121 01:06:43,700 --> 01:06:45,630 >> Kaya kung ano lang nangyari? 1122 01:06:45,630 --> 01:06:48,330 Namin ay ang kakayahan na ito upang patunayan ang pagsusumite ng form. 1123 01:06:48,330 --> 01:06:51,420 Sa katunayan, kung ginawa mo ang dive sa pset 7, ang isang function na humihingi ng paumanhin 1124 01:06:51,420 --> 01:06:54,620 na ginagawang mas kaakit-akit madaling sumigaw sa user na may isang mensahe sa screen. 1125 01:06:54,620 --> 01:06:57,580 Gumagamit ako ng isang bahagyang naiiba mekanismo, ang alerto function na, 1126 01:06:57,580 --> 01:07:03,690 na kung saan ay hindi isang function na smiled kapag dahil ito ay napaka-pangit na mga mensahe ng user. 1127 01:07:03,690 --> 01:07:05,710 Ngunit sabihin makita kung ano ang ako ginagawa dito. 1128 01:07:05,710 --> 01:07:09,620 Na ito ay form1.html, at mapansin na mayroon akong ilang medyo pamilyar syntax: 1129 01:07:09,620 --> 01:07:12,920 body tag, tag ng form na, attribute ng pagkilos, paraan ng attribute. 1130 01:07:12,920 --> 01:07:17,050 Ngunit mapansin Ibinigay ko ang aking form sa isang natatanging ID para sa kaginhawaan. 1131 01:07:17,050 --> 01:07:19,190 Pagkatapos Mayroon akong isang email na field na ang uri ng teksto, 1132 01:07:19,190 --> 01:07:23,780 patlang ng password na uri ng password, pagkumpirma field na ang uri ng password, 1133 01:07:23,780 --> 01:07:28,070 at pagkatapos ay ang isang checkbox na ang pangalan ay kasunduan sa paglipas dito, i-type ang checkbox. 1134 01:07:28,070 --> 01:07:30,380 At pagkatapos Mayroon akong isumite pindutan. 1135 01:07:30,380 --> 01:07:33,050 Ngunit mapansin sa itaas kung ano ang mas mayroon akong. 1136 01:07:33,050 --> 01:07:35,810 Una sa lahat, may isa pang paggamit ng tag ng script. 1137 01:07:35,810 --> 01:07:40,520 Kung mayroon kang ilang mga code ng JavaScript sa isa pang file, tulad ng may CSS maaari mong isama ito. 1138 01:07:40,520 --> 01:07:44,530 At gawin mo na may script pinagmulan, at pagkatapos ay mapansin ako pagkonekta tila 1139 01:07:44,530 --> 01:07:50,349 sa googleapis.com sa isang mahabang landas ngunit na ang pangalan ng file na nagtatapos sa jquery.min 1140 01:07:50,349 --> 01:07:52,420 para sa minimum. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery ay sobrang sikat na library para sa JavaScript na lang ginagawang JavaScript 1142 01:07:55,969 --> 01:07:58,230 ang lahat ng mga mas user-friendly gamitin. 1143 01:07:58,230 --> 01:08:00,610 Epektibo ito ay naging isang talaga pamantayan. 1144 01:08:00,610 --> 01:08:04,090 Kaya kahit na kung ano ang ikaw ay tungkol sa upang makita ay hindi purong JavaScript per se, 1145 01:08:04,090 --> 01:08:09,340 ito ay isang library sa tuktok ng JavaScript tulad ng CS50 library ay isang layer 1146 01:08:09,340 --> 01:08:13,670 sa tuktok ng mababang antas na C code; katotohanan ay halos lahat ng tao sa Internet ay gumagamit ng. 1147 01:08:13,670 --> 01:08:18,030 Kaya ito ay hindi pagsasanay gulong. Ito ay pinakamahusay na magsagawa ng mga araw na ito. 1148 01:08:18,030 --> 01:08:22,830 Ngayon mapansin ibaba na ang aking sariling script tag, at pansinin kung ano ang nagawa ko na dito. 1149 01:08:22,830 --> 01:08:27,450 Ito lumiliko out na jQuery ang isang bagay ng kaunti fancy. 1150 01:08:27,450 --> 01:08:29,660 JavaScript ay may mga palatandaan ng dolyar, ngunit ang mga ito ay walang kahulugan. 1151 01:08:29,660 --> 01:08:32,870 >> Ito ay tulad ng sulat A o B o C. 1152 01:08:32,870 --> 01:08:36,670 jQuery ay lamang pinagtibay ang convention o uri ng inilatag claim na ang katotohanan 1153 01:08:36,670 --> 01:08:40,280 na $ kanilang espesyal na simbolo. 1154 01:08:40,280 --> 01:08:44,950 Ito sa lalong madaling-load mo ito global na JavaScript file dito na may tag ng script, 1155 01:08:44,950 --> 01:08:49,080 mayroon kang access sa isang espesyal na global variable na tinatawag na $. 1156 01:08:49,080 --> 01:08:53,009 Ito ay mas maayos na tinatawag jQuery, ngunit na hindi mukhang halos bilang sexy ng $. 1157 01:08:53,009 --> 01:08:56,250 Ngunit $ ay walang espesyal na kahulugan. Sa PHP may espesyal na kahulugan. 1158 01:08:56,250 --> 01:08:58,440 Ay upang magkaroon ang mga ito sa harap ng isang variable. 1159 01:08:58,440 --> 01:09:01,670 Ito ay isang sexy bagay na kinuha nila sa. 1160 01:09:01,670 --> 01:09:03,389 Ano ang nangyayari sa dito? 1161 01:09:03,389 --> 01:09:08,830 Mapansin ako pagpasa sa jQuery function na aking global variable na dokumento 1162 01:09:08,830 --> 01:09:10,860 at pagkatapos ay ako pagtawag. handa. 1163 01:09:10,860 --> 01:09:15,480 Ano jQuery mahalagang ay ay nagpapahintulot sa iyo na tumagal ng ilang mga banilya JavaScript bagay 1164 01:09:15,480 --> 01:09:17,889 tulad ng dokumento ng bagay, window ng bagay, 1165 01:09:17,889 --> 01:09:20,790 at kung kayo na ipasa ito sa jQuery function na - 1166 01:09:20,790 --> 01:09:24,429 at muli, maging malinaw, ito ay isang function na tinatawag jQuery - 1167 01:09:24,429 --> 01:09:28,240 kung ano ang ginagawa nito ay bumalik sa iyo ng isang espesyal na bersyon ng dokumento 1168 01:09:28,240 --> 01:09:30,700 na may higit pang mga pag-andar na nauugnay dito. 1169 01:09:30,700 --> 01:09:34,760 Kaya sa raw JavaScript ay hindi handa na function na, 1170 01:09:34,760 --> 01:09:37,810 ngunit kung pumasa ka dokumento sa jQuery function na una, 1171 01:09:37,810 --> 01:09:40,960 bumalik sa iyo ng isang espesyal na bersyon ng mga bagay ng dokumento 1172 01:09:40,960 --> 01:09:43,030 na may higit pang mga magarbong mga tampok. 1173 01:09:43,030 --> 01:09:48,230 At na kung bakit ito gusto ng mga tao. Ito lamang ang gumagawa ng mga bagay na madaling gawin, hindi namin tungkol sa upang makita. 1174 01:09:48,230 --> 01:09:49,820 Kaya kung ano ang ang linya ng code na ibig sabihin nito? 1175 01:09:49,820 --> 01:09:52,690 Ang linya ng code dito ay nangangahulugan na kapag ang dokumento ay handa na - 1176 01:09:52,690 --> 01:09:56,830 sa ibang salita, kapag ang browser ay tapos na basahin ang file na ito itaas hanggang sa ibaba - 1177 01:09:56,830 --> 01:09:59,200 sige at isagawa ang mga sumusunod na function na. 1178 01:09:59,200 --> 01:10:03,540 Ano ang talagang kawili-wili sa JavaScript - at PHP ay may ito pati na rin - 1179 01:10:03,540 --> 01:10:05,450 anonymous na function. 1180 01:10:05,450 --> 01:10:10,560 Sa JavaScript, maaari mong ipinapahayag ng mga function na walang pangalan ngunit gawin nilang magkaroon ng katawan. 1181 01:10:10,560 --> 01:10:12,570 Pansinin kung ano ang nangyayari dito. 1182 01:10:12,570 --> 01:10:16,220 >> Ito ay isang function na tinatawag na handa, at ito ay nangangahulugan na gawin ang mga sumusunod 1183 01:10:16,220 --> 01:10:20,220 kapag ang buong web page ay handa na, kapag ang lahat ng ito ay basahin in mula sa server. 1184 01:10:20,220 --> 01:10:23,090 Ano ang gusto mong gawin? Gusto kong magsagawa ng isang tipak ng code. 1185 01:10:23,090 --> 01:10:27,120 Pansinin na hindi namin nais na i-execute ang code na ito agad. 1186 01:10:27,120 --> 01:10:34,350 Kung tinanggal ko na ito, ito ay nangangahulugan agad simulang execute ang mga linya ng code. 1187 01:10:34,350 --> 01:10:39,040 Ngunit ang katotohanan na ako sinasabi hindi, hindi, hindi, I-wrap ang mga ito sa isang hindi nakikilalang na function na tulad nito 1188 01:10:39,040 --> 01:10:43,000 paraan ay hindi nagsagawa pa ito; tumawag ito kalaunan. 1189 01:10:43,000 --> 01:10:45,430 Nakita namin ito ng ilang sandali ang nakalipas sa aming nakaraang halimbawa ng anyo. 1190 01:10:45,430 --> 01:10:49,990 Ano ang function kami tatawag sa kalaunan, 500 millisecond mamaya? Magkukurap. 1191 01:10:49,990 --> 01:10:51,480 Kaya ang parehong ideya. 1192 01:10:51,480 --> 01:10:53,950 Muli, kahit na ang hitsura ng kaunti kakaiba, lang ang dadalhin sa ngayon sa pananampalataya 1193 01:10:53,950 --> 01:10:57,060 na idedeklara ang isang hindi nakikilalang na function na tinatawag na kalaunan, 1194 01:10:57,060 --> 01:11:01,720 mo lamang isulat ang function na () { 1195 01:11:01,720 --> 01:11:05,380 Kaya kung ano ang code ay namin pagpunta upang maisagawa kalaunan? Ang mga sumusunod na. 1196 01:11:05,380 --> 01:11:10,460 Ito masyadong mukhang isang maliit na bago, ngunit ito ay nangangahulugan na dito ang jQuery function na, 1197 01:11:10,460 --> 01:11:13,430 at ito ngayon ay isang shortcut. 1198 01:11:13,430 --> 01:11:18,830 Ang snippet ng HTML sa ibaba ng screen ng kurso ay may ilang puno na representasyon. 1199 01:11:18,830 --> 01:11:21,730 Hindi ito. Ang pahinang ito ay mas kawili-wiling kaysa ito hoy, mundo halimbawa. 1200 01:11:21,730 --> 01:11:25,210 Ngunit ang ilang puno na tumutugon sa ang HTML. 1201 01:11:25,210 --> 01:11:28,910 Ito ay isang sakit sa ulo upang ipatupad ang ilang mga uri ng recursive function na 1202 01:11:28,910 --> 01:11:34,380 magsimula sa root node at pagkatapos ay hanapin ang node na ang ID ay pagpaparehistro. 1203 01:11:34,380 --> 01:11:38,340 Kaya kung ano ang jQuery ginagawang sobrang madali para sa amin ay literal na ito. 1204 01:11:38,340 --> 01:11:43,000 Sige at makakuha ng sa akin ang anumang div o anumang anyo, anumang HTML elemento 1205 01:11:43,000 --> 01:11:45,820 may isang ID ng pagpaparehistro. 1206 01:11:45,820 --> 01:11:52,440 Ito ay katumbas sa document.getElementById ('pagpaparehistro'). 1207 01:11:52,440 --> 01:11:54,170 >> Bakit ang mga tao tulad ng jQuery? 1208 01:11:54,170 --> 01:12:00,110 Dahil ito ay mas maikli i-type. Ngunit iyon lamang ang lahat ng ito ay. Ang parehong ideya. 1209 01:12:00,110 --> 01:12:02,630 Kumuha ng sa akin ang tag na ang ID ay pagpaparehistro. 1210 01:12:02,630 --> 01:12:06,300 At kapag na tag, na mangyayari sa isang form, ay isinumite, 1211 01:12:06,300 --> 01:12:08,300 sige at isakatuparan ang code na ito. 1212 01:12:08,300 --> 01:12:11,320 Kaya sabihin isa tumingin ngayon sa kung paano namin ginagawa form ng pagpapatunay. 1213 01:12:11,320 --> 01:12:15,950 Syntax ay tinatanggap na misteriyoso sa unang, ngunit kung anong nangyayari sa? 1214 01:12:15,950 --> 01:12:21,050 Kung ang linya ng code ay totoo, ako pagpunta sa sumigaw sa gumagamit upang magbigay ng kanyang email address. 1215 01:12:21,050 --> 01:12:22,970 Kaya ano ang linya ng code? 1216 01:12:22,970 --> 01:12:25,560 $ Ay nangangahulugan jQuery. Ngayon mapansin ito. 1217 01:12:25,560 --> 01:12:27,920 Ito ay uri ng tulad ng CSS. 1218 01:12:27,920 --> 01:12:33,370 Kung ikaw dived sa CSS, malalaman mo na ang ibig sabihin nito ay ang elemento na ang ID ay pagpaparehistro. 1219 01:12:33,370 --> 01:12:39,840 Espasyo nangangahulugan makahanap ng isang bata o inapo ng pagpaparehistro na ang pangalan ay input. 1220 01:12:39,840 --> 01:12:42,970 At pagkatapos ay ang bagay na ito sa square bracket ay isang maliit na filter. 1221 01:12:42,970 --> 01:12:47,010 At kahit na ito mukhang misteriyoso, ito ay nangangahulugan lamang pumunta sa ang form na ang ID ay pagpaparehistro, 1222 01:12:47,010 --> 01:12:51,230 pumunta sa loob ng elemento ng input ng na na ang pangalan ay email, 1223 01:12:51,230 --> 01:12:55,440 at pagkatapos ay makakuha ng ang halaga nito, anumang ang halaga nito ang mangyayari upang maging - 1224 01:12:55,440 --> 01:12:59,670 asdf kung na ang lahat ko-type o malan@harvard.edu kung na ang ako-type. 1225 01:12:59,670 --> 01:13:05,250 Kaya kung ang halaga ng email patlang ang form == walang, sumigaw sa user. 1226 01:13:05,250 --> 01:13:09,700 Iba Pa kung ang halaga ng patlang ng password == walang, sumigaw sa user. 1227 01:13:09,700 --> 01:13:19,520 >> Iba Pa kung ang halaga ng patlang ng password ay hindi katumbas ng halaga ng patlang ng pagkumpirma, 1228 01:13:19,520 --> 01:13:22,850 kung saan ang iba pang mga elemento ng anyo, sumigaw sa user. 1229 01:13:22,850 --> 01:13:25,680 At pagkatapos ay sa wakas - at ang isang ito ay may ilang mga bagong syntax ng sarili nitong, 1230 01:13:25,680 --> 01:13:29,270 ngunit sa sandaling nakita mo ang mga ito, hindi bababa sa isang maliit na mas makatwirang - 1231 01:13:29,270 --> 01:13:34,060 tao kung ang form na ang ID ay pagpaparehistro ay isang elemento ng input na ang pangalan ay kasunduan 1232 01:13:34,060 --> 01:13:39,720 at ito ay naka-check, sige at sumigaw sa user. 1233 01:13:39,720 --> 01:13:42,520 Kaya ko lubos umamin na ito ay ganap napakalaki sa unang tingin. 1234 01:13:42,520 --> 01:13:46,530 Ng maraming ng mga bagong syntax. Subalit ang lahat ng jQuery ay sumusunod sa mga ganitong uri ng mga pattern ng. 1235 01:13:46,530 --> 01:13:49,880 At matapat, hindi ko alam ito umiral hanggang ng ilang minuto ang nakalipas. 1236 01:13:49,880 --> 01:13:53,640 Googled ko, "Paano mo suriin kung ang checkbox ay naka-check sa jQuery?" 1237 01:13:53,640 --> 01:13:55,680 at ito ay ang syntax, dahil mayroong iba't ibang mga paraan ng paggawa nito 1238 01:13:55,680 --> 01:13:58,010 may aktwal na raw JavaScript code. 1239 01:13:58,010 --> 01:14:01,030 Kaya ng sa unang pahina ng Problema Set 7 emphasizes, 1240 01:14:01,030 --> 01:14:04,500 pset 7 napaka isang ehersisyo sa bootstrapping iyong sarili 1241 01:14:04,500 --> 01:14:08,650 kung saan nagbigay kami, sana, isang haka-haka framework upang matugunan ang mga pset. 1242 01:14:08,650 --> 01:14:12,280 >> Ngunit bilang ay madalas na ang kaso sa web design, hanggang sa iyo talagang upang sundutin sa paligid, 1243 01:14:12,280 --> 01:14:16,680 isama ang mga snippet ng code at mga halimbawa mula sa Web hangga't banggitin mo ang mga ito 1244 01:14:16,680 --> 01:14:17,960 alinsunod sa mga tuntunin sa na unang sheet, 1245 01:14:17,960 --> 01:14:21,460 at Napag-alaman na ang pag-aaral ng HTML, CSS, JavaScript at kahit SQL 1246 01:14:21,460 --> 01:14:26,020 ay talagang nilalayong ito sa bahay ehersisyo habang sinisimulan namin upang gawin ang mga gulong ng pagsasanay. 1247 01:14:26,020 --> 01:14:29,150 At masyadong Napagtanto may kaya maraming iba pang mga bagay na maaari mong gawin sa isang browser. 1248 01:14:29,150 --> 01:14:33,790 Loob ng karamihan sa mga sangkap na ito ay may iba pang mga bagay na tinatawag na kaganapan handler. 1249 01:14:33,790 --> 01:14:37,140 At kahit lang namin tumingin sa mga tinatawag onsubmit at onready, 1250 01:14:37,140 --> 01:14:40,310 maaari mong gawin mga bagay tulad onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 bang kapag ang user ay touch isang susi, maaari kang makinig para sa at key up. 1252 01:14:43,410 --> 01:14:45,940 Ang Gmail ay may mga shortcut sa keyboard. 1253 01:14:45,940 --> 01:14:49,490 Paano naiiba ang Google ipatupad ang mga shortcut sa keyboard tulad ng C para sumulat? 1254 01:14:49,490 --> 01:14:54,120 Makinig ito ay para sa mga kaganapan, habang ang mga ito ay tinatawag na, tulad ng onkeypress o onkeyup at onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Kung sakaling mo na hovered ang iyong mouse sa paglipas ng ilang pagpipilian ng menu 1256 01:14:56,360 --> 01:15:00,180 at ang lahat ng isang biglaang, voila, ang menu ng lilitaw o graphic pagbabago ng kulay, 1257 01:15:00,180 --> 01:15:01,920 paano sila ginagawa na? 1258 01:15:01,920 --> 01:15:06,940 Sa halip na makinig para sa onready o onsubmit, makinig para sa onmouseover o onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Kaya sa maikling salita, may mga napaka-simpleng mga pangunahing kaalaman na namin ang nagsimula sa scratch sa ibabaw ng ngayon 1260 01:15:10,920 --> 01:15:13,940 at kami na sumisid sa karagdagang sa sa Miyerkules, mayroon ka, nagiging, 1261 01:15:13,940 --> 01:15:17,530 kapangyarihan upang ipatupad ang mga uri ng mga bagay na ikaw ay pamilyar sa. 1262 01:15:17,530 --> 01:15:21,620 Kaya sabihin magtapos doon, at ipagpapatuloy namin ito sa Miyerkules. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]