1 00:00:00,000 --> 00:00:01,940 >> [Musika sa pag-play] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> David MALAN: Ito ang CS 50, at ito ay ang simula ng linggo siyam. 4 00:00:14,620 --> 00:00:18,240 At kung ano ang naisip namin na gusto naming gawin ngayon ay hindi isara lang ang kabanatang ito sa huling linggo 5 00:00:18,240 --> 00:00:22,670 materyal na kung saan namin na nakatutok sa server web programming side na may PHP at SQL, 6 00:00:22,670 --> 00:00:23,549 ang ilang mga database ng mga bagay-bagay. 7 00:00:23,549 --> 00:00:25,590 Susubukan naming makipag-usap tungkol sa isang kaunting seguridad ngayon at pagkatapos ay 8 00:00:25,590 --> 00:00:29,590 paglipat sa isang client side programming wika na kilala bilang ang JavaScript. 9 00:00:29,590 --> 00:00:31,330 Ngunit una, ang ilang pagkuha. 10 00:00:31,330 --> 00:00:35,030 >> Maaari mong isipin na sa Miyerkules, ako magse-set out 11 00:00:35,030 --> 00:00:37,550 magsulat ng isang website na kinuha sa pag-input ng user 12 00:00:37,550 --> 00:00:41,120 sa pamamagitan ng isang HTML na bumubuo na pagkatapos ay naka-imbak na pangalan ng input ng user, telepono 13 00:00:41,120 --> 00:00:43,124 numero, at cellphone carrier sa database. 14 00:00:43,124 --> 00:00:45,540 At pagkatapos ay nagkaroon ako ng isang maliit na command linya ng script na nakasulat sa PHP 15 00:00:45,540 --> 00:00:47,956 na dapat na umulit sa ibabaw ng hilera sa database 16 00:00:47,956 --> 00:00:49,400 at nagpapadala ng mga text message. 17 00:00:49,400 --> 00:00:53,870 Sa kabila ng ilang, ng ilang mga pagtatangkang, namin Hindi makakuha ng mga na pagtatrabaho sa pagtatapos. 18 00:00:53,870 --> 00:00:57,820 >> Kaya ginugol ko ang buong linggo nagtatrabaho sa na code upang makakuha amin lagpas sa puntong 19 00:00:57,820 --> 00:01:01,220 kung saan iniwan namin off, kung saan lahat ng Nakatanggap ako sa pagtatapos ng Miyerkules 20 00:01:01,220 --> 00:01:05,500 ay ang text message mula Margo bilang struggled ko, 21 00:01:05,500 --> 00:01:09,940 sinundan sa pamamagitan ng isang text message mula sa isa pang kamag-aaral, nakuha mo ang David. 22 00:01:09,940 --> 00:01:14,030 Sinusundan ng isang ito, kamangha-mangha nakasisigla. 23 00:01:14,030 --> 00:01:15,840 Iningatan dumalo, napaka heartening. 24 00:01:15,840 --> 00:01:20,960 Halos nakuha ko ito hanggang then-- at iyon ang tala Natapos namin sa Miyerkules. 25 00:01:20,960 --> 00:01:25,850 At pagkatapos ay aktwal na marahil ang aking mga paboritong, ng ilang sandali mamaya, ito ay dumating sa. 26 00:01:25,850 --> 00:01:27,000 Mapahamak Live Stream. 27 00:01:27,000 --> 00:01:31,080 >> Kaya ngayon, ayusin namin ito sa isang mabilis tumingin sa kung ano ang iyong ginawa ko dahil. 28 00:01:31,080 --> 00:01:35,440 Kaya lahat ng code na ito ay magagamit online mula sa huling linggo, linggo walong, 29 00:01:35,440 --> 00:01:36,300 source code. 30 00:01:36,300 --> 00:01:39,425 At makikita mo na nagpunta ako sa pamamagitan ng, at talagang ako nalinis up ng mga bagay ng kaunti. 31 00:01:39,425 --> 00:01:42,080 Ipinakilala ako ng ilang iba pang mga mga tampok ng isang database SQL. 32 00:01:42,080 --> 00:01:45,300 Halimbawa, sa halip na gumawa lamang ng carrier ng var pansamantalang trabaho 33 00:01:45,300 --> 00:01:47,310 sa pag-iisip ko ginawa ko sa mabilisang noong nakaraang linggo. 34 00:01:47,310 --> 00:01:49,820 Sa halip ko tinukoy ito bilang kung ano ang tinatawag na isang enum. 35 00:01:49,820 --> 00:01:53,310 >> At maaaring nakita ang ilan sa inyo bilang namin nagalugad C. Enum ay talagang 36 00:01:53,310 --> 00:01:56,820 isang tampok ng C kung saan maaari kang magbilang ang maramihang mga constants 37 00:01:56,820 --> 00:01:59,640 at magtalaga ng mga ito sa awtomatikong mga halaga, tulad ng isa, dalawa, tatlo, apat 38 00:01:59,640 --> 00:02:01,330 nang hindi na kinakailangang numero na hard code. 39 00:02:01,330 --> 00:02:04,780 Kaya sumusuporta sa SQL ang parehong, kung saan kung mayroon kang isang patlang ng database na lamang 40 00:02:04,780 --> 00:02:09,389 nais na kunin sa isa sa may hangganan mga halaga, maaari mong literal na tumukoy ito 41 00:02:09,389 --> 00:02:13,120 bilang ko pa tapos doon para sa apat sikat na US cellphone carrier. 42 00:02:13,120 --> 00:02:13,819 >> Kaya ginawa ko na. 43 00:02:13,819 --> 00:02:16,610 At ginawa ko ang isang bilang ng mga pagbabago tulad ng na rin, ang pinakamahalaga 44 00:02:16,610 --> 00:02:20,090 ay upang makakuha ng pagtatrabaho ng email dahil pagpapabalik, ang programang ito umaasa sa kung aling mga 45 00:02:20,090 --> 00:02:23,470 Sa pangkalahatan ay tinatawag na isang email sa SMS gateway, na kung saan ay lamang 46 00:02:23,470 --> 00:02:27,670 isang magarbong paraan ng pagsabi na ang Verizon, at AT & T, at iba pang mga tao ay sumusuporta sa server, 47 00:02:27,670 --> 00:02:30,740 kung saan kung natatanggap nito e-mail, nag-convert nito ito sa SMS 48 00:02:30,740 --> 00:02:33,290 at ipapadala ang isang teksto mensahe sa telepono ng isang tao. 49 00:02:33,290 --> 00:02:37,010 Kaya kung ginawa ko ito nang tama, dito ay isang bago at pinahusay na form 50 00:02:37,010 --> 00:02:39,259 na pagpunta sa makipag-usap sa bago at pinahusay na code, na 51 00:02:39,259 --> 00:02:40,300 Maaari mong i-play sa online. 52 00:02:40,300 --> 00:02:44,140 At ito ay inaasahang gumawa ng aking pugak ng telepono sa isang sandali lamang. 53 00:02:44,140 --> 00:02:47,240 >> Kaya unang, pupunta ako mag-type sa aking pangalan. 54 00:02:47,240 --> 00:02:51,400 Pangalawa, hindi ako pupunta upang gawin ito ngayon. 55 00:02:51,400 --> 00:02:53,920 Pupunta ako sa ko Siyasatin ang Elemento. 56 00:02:53,920 --> 00:02:56,710 At ito lamang ang maliit na bagay kaya gagawin ko hindi 57 00:02:56,710 --> 00:02:59,250 lumikha ng mga oras ng post na produksyon gumana tulad ng ginawa ko huling beses. 58 00:02:59,250 --> 00:03:02,300 Mayroong ngayon ang aking numero ng telepono. 59 00:03:02,300 --> 00:03:03,560 >> Magtatagal ako pumili ng Verizon. 60 00:03:03,560 --> 00:03:10,260 At dito, ni i-on ang mikropono ipaalam dito, at naglalayong ito sa aking telepono dito. 61 00:03:10,260 --> 00:03:13,130 Pupunta ako sa i-click ang Magrehistro, na dapat sana ay 62 00:03:13,130 --> 00:03:14,530 ilagay ito sa database. 63 00:03:14,530 --> 00:03:16,780 Ngayon Pupunta ako sa pumunta sa programa command line, na 64 00:03:16,780 --> 00:03:20,825 pagpapabalik ay tinawag na tuldok slash teksto, at krus ang mga daliri. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Narito pumunta namin. 67 00:03:26,527 --> 00:03:27,501 >> [PHONE DINGS] 68 00:03:27,501 --> 00:03:28,962 >> [Palakpakan] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 David MALAN: Kaya mas masaya kaysa this-- ito ay masaya, siyempre, kung nakukuha ko ito. 71 00:03:34,940 --> 00:03:38,004 Ngunit ito ay mas masaya, naisip ko, kung namin Nilikha ang isa sa mga sandali ng pelikula 72 00:03:38,004 --> 00:03:40,420 kung saan tulad ng isang bagay na talagang masama ang nangyari sa mundo, 73 00:03:40,420 --> 00:03:42,860 at tulad ng lahat ng mga tao NSA cellphones simulan beeping 74 00:03:42,860 --> 00:03:44,860 may mga text message inaalerto mo ang mga ito sa katotohanan. 75 00:03:44,860 --> 00:03:47,026 Kaya naisip ko na nais naming subukan upang muling likhain ang parehong dito, 76 00:03:47,026 --> 00:03:49,610 kung saan hindi gumagamit ng isang database, Ko sa halip nang maaga 77 00:03:49,610 --> 00:03:51,490 nagsulat ng isang program na ganito ang hitsura. 78 00:03:51,490 --> 00:03:53,660 >> Ito ay isang index.php-- at ko bang ilagay ang code na ito sa online 79 00:03:53,660 --> 00:03:56,710 bilang well-- na tila lamang-render form.php, 80 00:03:56,710 --> 00:04:00,990 gamit ang isang MVC style tularan na namin makipag-usap tungkol sa nang mas detalyado sa hanay ng problema 81 00:04:00,990 --> 00:04:01,650 pitong. 82 00:04:01,650 --> 00:04:02,910 Form na iyon ay medyo simple. 83 00:04:02,910 --> 00:04:06,634 Nangyayari ito na sumailalim sa isang file na tinatawag na here.php sa pamamagitan ng post. 84 00:04:06,634 --> 00:04:09,300 At tila ito ng pagpunta sa magtanong para sa isang pangalan, at numero ng telepono, 85 00:04:09,300 --> 00:04:11,400 at pagkatapos ay sa pamamagitan ng tinatawag na Piliin ang menu na ito, 86 00:04:11,400 --> 00:04:14,250 pagpunta sa magbibigay sa iyo ng hindi bababa sa apat sikat na US cellphone carrier, 87 00:04:14,250 --> 00:04:17,470 at pagkatapos ay i-daan sa iyo upang epektibong tumagal ng pagdalo sa pamamagitan ng pag-click dito. 88 00:04:17,470 --> 00:04:20,471 >> At dito, samantala, ay pagpunta sa hiramin ang ilan sa mga code mula sa huling panahon. 89 00:04:20,471 --> 00:04:22,553 At kung sagapin mo lamang ito, makikita mo na mayroong 90 00:04:22,553 --> 00:04:23,900 ang maramihang mga error checking. 91 00:04:23,900 --> 00:04:26,640 Ngunit ang kagandahan sa dulo ay ang hindi kami ay sumusulat sa isang database ngayon. 92 00:04:26,640 --> 00:04:29,130 Pinananatili namin ito simple at lamang sa pagpapadala sana 93 00:04:29,130 --> 00:04:32,190 ng text message sa pamamagitan ng pagpapaandar na ako nagsulat sa nakalipas na ilang araw tawag 94 00:04:32,190 --> 00:04:36,270 Teksto, na kung saan ay sa Paggana sa. php, na kung saan ay muli na magagamit online. 95 00:04:36,270 --> 00:04:38,210 >> Kaya kung nais mong makibahagi sa ito. 96 00:04:38,210 --> 00:04:40,190 Hindi namin pagpunta sa ay nag-iimbak ng anumang bagay. 97 00:04:40,190 --> 00:04:43,809 Pumunta sa URL na ito dito sa real time. 98 00:04:43,809 --> 00:04:46,850 Huwag itong isumite ngayon, ngunit sabihin makita kung maaari kaming magkaroon ng isa sa mga pelikula 99 00:04:46,850 --> 00:04:49,830 sandali kung saan cellphone ng lahat Nagsisimula beeping, sana lamang 100 00:04:49,830 --> 00:04:53,580 isang beses sa taong ito hindi tulad noong 2011 kung saan ito nagpunta horribly pilipit. 101 00:04:53,580 --> 00:04:58,910 At sa sandaling kang pumunta sa address na iyon, dapat mong makita ang isang napaka-simpleng form 102 00:04:58,910 --> 00:05:03,884 na kung mayroon kang isang pangalan, isang cell phone numero, at isang cellphone carrier na 103 00:05:03,884 --> 00:05:06,175 Tumutugma ang listahan doon, pumunta Magpatuloy at punan ang form. 104 00:05:06,175 --> 00:05:07,880 Ngunit huwag pindutin ang isumite pa lamang. 105 00:05:07,880 --> 00:05:10,850 >> Ang form pupuntahan ganito ang hitsura. 106 00:05:10,850 --> 00:05:13,660 Sige at i-type sa iyong pangalan, numero ng telepono. 107 00:05:13,660 --> 00:05:17,670 Oop, ang isang tao ang nangyayari maaga ang curve. 108 00:05:17,670 --> 00:05:18,170 Ito ay ang OK. 109 00:05:18,170 --> 00:05:19,340 OK, lahat ng tao ay napuno ang form. 110 00:05:19,340 --> 00:05:21,400 Ito ay dapat gumana sa isang telepono, masyadong, kung gusto mo. 111 00:05:21,400 --> 00:05:23,695 Ang lahat ng mga karapatan, sa iyong mga marka, makakuha ng set, pumunta. 112 00:05:23,695 --> 00:05:24,195 Pindutin ang Narito. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Ano? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Hindi. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Sumusumpa ako sa Diyos, sinubukan kong ito nang maraming beses ngayon. 119 00:05:40,250 --> 00:05:41,720 Nakakuha ka ito? 120 00:05:41,720 --> 00:05:43,145 >> [INTERPOSING boses] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> David MALAN: OK, error ng gumagamit marahil. 123 00:05:49,560 --> 00:05:50,550 Iyon ang dalawa. 124 00:05:50,550 --> 00:05:53,300 Ito ay nagtrabaho para sa dalawang out sa isang ilang daang, tatlo, apat. 125 00:05:53,300 --> 00:05:55,940 OK, na mabuti. 126 00:05:55,940 --> 00:05:58,520 Apat na out ng limang para sa kawastuhan kung paano tungkol. 127 00:05:58,520 --> 00:05:59,810 >> Kaya kung ano lamang ang nangyari? 128 00:05:59,810 --> 00:06:02,727 Kaya siguro, nang hindi nakikita ang iyong screen, kung ano ang maaaring na-errored? 129 00:06:02,727 --> 00:06:05,518 Ito ay marahil na namin lamang sinusubukan mong gumawa ng masyadong maraming mga koneksyon 130 00:06:05,518 --> 00:06:08,110 sa server ng mail Harvard ang lahat sa -sabay mula sa parehong IP address. 131 00:06:08,110 --> 00:06:10,740 Lang ako sa paghula dahil ako ang hindi may luxury ng pagsubok 132 00:06:10,740 --> 00:06:13,220 ang code na ito sa ilang mga 300 mga tao nang maaga 133 00:06:13,220 --> 00:06:16,040 ngunit sa ngayon mapagtanto na na hindi bababa sa dapat 134 00:06:16,040 --> 00:06:18,250 nakuha ng trabaho tapos oras na ito. 135 00:06:18,250 --> 00:06:22,880 >> Ang lahat ng mga karapatan, kaya kung bakit ay ang lahat ng higit pa dyermeyn sa kung ano ang nangyayari sa? 136 00:06:22,880 --> 00:06:24,900 Well una, isang mabilis ilang mga anunsyo. 137 00:06:24,900 --> 00:06:29,350 Kaya isa, kung gusto mo bang sumali sa Chang, at Nick, at iba pa sa tanghalian ito Biyernes, 138 00:06:29,350 --> 00:06:32,400 gawin RSVP sa karaniwan URL doon. 139 00:06:32,400 --> 00:06:35,650 Kung ikaw ay nag-iisip ng pagtuon in o paggawa ng pangalawang sa CS, 140 00:06:35,650 --> 00:06:38,941 kung ikaw ay isang sopomor, o presman, o kahit na junior o senior sa puntong ito 141 00:06:38,941 --> 00:06:42,490 at maaari pa ring kurutin sa mga kurso, Napag-alaman na ang engineering paaralan 142 00:06:42,490 --> 00:06:45,620 ay nag-iipon para sa libreng Ben at Ice cream at payo Jerry ni 143 00:06:45,620 --> 00:06:48,910 ito Miyerkules sa ilang sandali pagkatapos ng klase sa 4:00 sa CS gusali 144 00:06:48,910 --> 00:06:49,771 sa Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Kung ito ay masyadong mabilis sa screen, pumunta lamang 146 00:06:51,520 --> 00:06:55,260 sa cs50.harvard.edu para sa isang link sa kaganapan Facebook 147 00:06:55,260 --> 00:06:57,140 kung saan maaari kang makakita ng higit pang mga detalye. 148 00:06:57,140 --> 00:07:01,390 >> Samantala, naisip ko na gusto kong itama isa iba pang mga bagay ko goofed sa Miyerkules. 149 00:07:01,390 --> 00:07:04,400 Ino-out ID Markahan na sa Facebook ay hindi tatlo. 150 00:07:04,400 --> 00:07:05,230 Ito ay apat. 151 00:07:05,230 --> 00:07:08,330 Ino-out siya ay mayroong higit pagsubok mga account sa isipin ko. 152 00:07:08,330 --> 00:07:12,400 Ngunit kung ano ang nadama tulad ng pagkakataon gawin ay makuha ang isang URL na katulad nito. 153 00:07:12,400 --> 00:07:16,680 >> Kaya ito ay lumiliko out na mayroong isang Facebook API, application programming interface, 154 00:07:16,680 --> 00:07:20,070 kung saan ay isang mekanismo kung saan mo ay maaaring humiling ng data sa programa 155 00:07:20,070 --> 00:07:24,480 sa Facebook at makabalik machine nababasa impormasyon, hindi sa mga web page 156 00:07:24,480 --> 00:07:28,690 ngunit lamang ang mga raw na teksto, isang bagay na tinatawag na JavaScript Bagay pagtatanda. 157 00:07:28,690 --> 00:07:32,150 At sa katunayan, kung bibisitahin ko ito URL, at mag-zoom in, sa pamamagitan ng default, 158 00:07:32,150 --> 00:07:34,960 ito ay Mark sa publiko -access ang impormasyon. 159 00:07:34,960 --> 00:07:37,430 >> At ang mga kawili-wiling mga detalye dito lamang na ang kanyang ID 160 00:07:37,430 --> 00:07:40,670 ay sa katunayan, bilang apat, na aking natanto sa lalong madaling ginawa ko ito. 161 00:07:40,670 --> 00:07:44,260 Magagawa mo ito sa iyong sarili kung alam mo ang iyong username Facebook kung magkaroon ng isa sa iyo. 162 00:07:44,260 --> 00:07:45,440 -Type ito lamang up tuktok doon. 163 00:07:45,440 --> 00:07:46,640 At wala sa mga ito ay pribado. 164 00:07:46,640 --> 00:07:48,670 Ako ginagawa lang ito kahit na sa mode na incognito. 165 00:07:48,670 --> 00:07:49,900 Kaya hindi ako kahit nakalog-in. 166 00:07:49,900 --> 00:07:54,440 At nakakakita ka na ako sa malas ay gumagamit numero ng 6454 167 00:07:54,440 --> 00:07:56,480 sa Facebook, na hindi Masyadong maganda ang mga araw na ito. 168 00:07:56,480 --> 00:07:59,900 Kaya sa papaano mang paraan, makikita mo rin ang karagdagang impormasyon doon. 169 00:07:59,900 --> 00:08:02,150 >> At ang mga kapaki-pakinabang na aspeto ng na na 170 00:08:02,150 --> 00:08:06,890 maaaring isulat ang iyong sariling software na kahit papaano Sumasama data tulad nito 171 00:08:06,890 --> 00:08:08,170 sa iyong sariling application. 172 00:08:08,170 --> 00:08:10,650 Maaari mong bigyang kapangyarihan ang mga gumagamit sa -log in sa iyong website, 173 00:08:10,650 --> 00:08:14,190 hindi gamit ang kanilang sariling mga pasadyang username at password ngunit marahil ang kanilang mga pag-login sa Facebook 174 00:08:14,190 --> 00:08:16,170 at makakuha ng impormasyon kahit na tungkol sa kanilang mga kaibigan, 175 00:08:16,170 --> 00:08:18,740 kung aprubahan nila dito, o pareho. 176 00:08:18,740 --> 00:08:21,430 Kaya tandaan na CS50, masyadong, May ilan sa kanyang sariling mga API, 177 00:08:21,430 --> 00:08:24,620 isa para sa data kurso catalog, ilang para sa mga hugs sa dining 178 00:08:24,620 --> 00:08:26,730 halls, ang lahat ng mga mga gusali at lokasyon 179 00:08:26,730 --> 00:08:30,930 sa campus na mayroon kami ng isang API para sa pati na rin na maaari mong i-query ang kaparehong at makakuha ng 180 00:08:30,930 --> 00:08:35,520 bumalik tekstuwal data na maaari mong isama sa isang PHP, o JavaScript, o kahit na, 181 00:08:35,520 --> 00:08:38,320 kahit na mas karaniwang, isang C batay huling proyekto. 182 00:08:38,320 --> 00:08:41,190 >> Sa katunayan maaga para sa pangwakas na proyekto ang ilang mga milestone. 183 00:08:41,190 --> 00:08:42,980 Nakakuha ka ng isang email mula sa amin sa ibang mga araw. 184 00:08:42,980 --> 00:08:45,761 Napag-alaman na ang panukala ay dahil ito darating na Lunes. 185 00:08:45,761 --> 00:08:49,010 Ito ay hindi kinakailangan na may-bisang, ngunit kailangang matanggap ang iyong Fellows pagtuturo 186 00:08:49,010 --> 00:08:51,260 bago sa pag-apruba sa paggawa ng anumang mga pagbabago pagkatapos. 187 00:08:51,260 --> 00:08:54,280 At pagkatapos ay magpatuloy ang bilang ng iba pang milestone. 188 00:08:54,280 --> 00:08:56,542 >> Kaya upang mang-ulol sa iyo, masyadong, na may ilang mga posibilidad, 189 00:08:56,542 --> 00:08:58,250 mayroon kaming ng grupo ng mga mga kulay na ilaw na mga bombilya. 190 00:08:58,250 --> 00:09:01,190 At ang ilan sa iyo guys ay mayroon na ngayong ilang ng mga ito sa iyong dorm room pati na rin. 191 00:09:01,190 --> 00:09:02,920 At sila ay masyadong magkaroon ng isang API. 192 00:09:02,920 --> 00:09:07,300 Kaya isipin ang mga binary na mga bombilya linggo nakalipas na Dan Bradley at Ansel 193 00:09:07,300 --> 00:09:08,780 Puding na nilikha para sa amin. 194 00:09:08,780 --> 00:09:12,560 Ginagamit ang mga ito ng isang software interface upang ang liwanag bombilya, na sa sandaling ito 195 00:09:12,560 --> 00:09:15,232 naka-plug in sa koryente at pagkatapos ay sa pamamagitan ng wireless na 196 00:09:15,232 --> 00:09:17,690 ay konektado sa isang maliit na bagay tinatawag na Bridge down na dito, 197 00:09:17,690 --> 00:09:21,280 tulad ng isang maliit na router pagmamay-ari sa partikular na aparato. 198 00:09:21,280 --> 00:09:26,540 >> Ngunit ito ay lumiliko out kung alam ko kung paano magpadala ng mga mensahe HTTP, bilang namin ang lahat ng gawin ngayon, 199 00:09:26,540 --> 00:09:31,670 Maaari ba akong magpadala ng isang mensahe tulad nito sa ang ilaw bombilya upang i-on o i-off ito 200 00:09:31,670 --> 00:09:34,000 o gawin ang anumang bilang ng mga iba pang mga pagpapaandar dito. 201 00:09:34,000 --> 00:09:36,110 Pansinin na hindi ito makuha, hindi ito mag-post. 202 00:09:36,110 --> 00:09:37,760 Mayroong isa pa na tinatawag na ilagay. 203 00:09:37,760 --> 00:09:39,630 Mayroong talaga ng ilang iba pang mga naturang pandiwa. 204 00:09:39,630 --> 00:09:42,920 Ngunit mapansin mayroong isang path doon, iwa API, iwa bagong developer, 205 00:09:42,920 --> 00:09:44,990 iwa liwanag, iwa isa, iwa estado. 206 00:09:44,990 --> 00:09:49,060 >> Iyon ay tila lamang ang path na ang kumpanya, Philips, 207 00:09:49,060 --> 00:09:51,640 nagpasya na mayroon ka upang pindutin ang sa isang HTTP na kahilingan 208 00:09:51,640 --> 00:09:55,010 kung gusto mong baguhin ang estado ng bombilya ng paggamit ng HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Pagkatapos mapansin ang blangkong linya. 210 00:09:56,380 --> 00:10:00,170 At pagkatapos ay sa wakas kung ano ang hitsura tulad ng uri ng isang hanay ng mga uri, 211 00:10:00,170 --> 00:10:04,730 ito muli ay pagpunta sa ay tinatawag na JavaScript Bagay pagtatanda, o Jason. 212 00:10:04,730 --> 00:10:08,000 At kung ano ang iyong nakikita dito ay ang may tatlong pangunahing mga pares ng halaga. 213 00:10:08,000 --> 00:10:09,115 >> Isa key ay tinatawag na sa. 214 00:10:09,115 --> 00:10:10,990 At ang halaga nito sa malas ay magiging totoo. 215 00:10:10,990 --> 00:10:13,612 Liwanag ay 128, na ay ilang mga uri ng int. 216 00:10:13,612 --> 00:10:15,820 At pagkatapos ng panahon ng paglipat ay zero, na tila 217 00:10:15,820 --> 00:10:17,970 kung gaano katagal ito ng pagpunta sa gawin upang i-on bagay na ito. 218 00:10:17,970 --> 00:10:19,890 >> Kaya ngayon ay off ang ilaw bombilya. 219 00:10:19,890 --> 00:10:22,880 Ngunit kung gagawin ko eksaktong this-- ipaalam sa akin pumunta sa isang maliit na impostor sheet 220 00:10:22,880 --> 00:10:25,200 na-set up Dan sa advance-- at pupuntahan ko 221 00:10:25,200 --> 00:10:27,920 upang magpatuloy at kopyahin ang sumusunod na command. 222 00:10:27,920 --> 00:10:30,200 Mabaluktot, pati na ang ilan sa iyo maaaring gleaned sa CS50 223 00:10:30,200 --> 00:10:35,080 Talakayin ay isang utility tulad ng Telnet tulad na maaari mong gayahin ang mga kahilingan ng HTTP, 224 00:10:35,080 --> 00:10:36,360 partikular na naglalagay. 225 00:10:36,360 --> 00:10:39,710 Maaari ba akong magpadala ng data na ito, partikular kung ano ang namin lamang 226 00:10:39,710 --> 00:10:43,430 Nakita ng ilang sandali ang nakalipas partikular na sa URL na ito sa paglipas dito. 227 00:10:43,430 --> 00:10:46,310 At pagkatapos ay kulutin ay pagpunta upang pangasiwaan ang lahat ng mga kinakailangang mga header 228 00:10:46,310 --> 00:10:47,600 at pag-parse ng doon. 229 00:10:47,600 --> 00:10:54,700 >> Kaya lahat Mayroon akong gawin ay kopyahin ito sa pindutin ang isang terminal na window at pagkatapos ay pindutin ang Enter. 230 00:10:54,700 --> 00:10:56,000 At ang liwanag bombilya napupunta sa. 231 00:10:56,000 --> 00:10:59,060 At ito ay ang lahat ng pagpunta sa pamamagitan ng aking computer wireless 232 00:10:59,060 --> 00:11:01,960 kahit papaano pababa sa tulay, na pagkatapos ay pakikipag-usap sa ito ilaw bombilya. 233 00:11:01,960 --> 00:11:02,960 Ang maaari kong gawin ibang bagay. 234 00:11:02,960 --> 00:11:07,050 Maaari ba akong gumawa ng bagay na ito pumunta pula para sa mga halimbawa. 235 00:11:07,050 --> 00:11:11,040 Maaari halimbawa ba akong gumawa bagay na ito pumunta berde. 236 00:11:11,040 --> 00:11:12,220 Ang maaari kong gawin itong pumunta asul. 237 00:11:12,220 --> 00:11:14,760 >> At mapapansin sa bawat isa sa mga pagkakataon, ang lahat na ako sa pagbabago 238 00:11:14,760 --> 00:11:18,540 ay ang tinatawag na halaga sa kulay talagang bigyan ito ng kulay. 239 00:11:18,540 --> 00:11:20,320 Kaya hayaan mo akong ilagay ang isang ito sa pati na rin. 240 00:11:20,320 --> 00:11:21,000 Ngayon ay asul. 241 00:11:21,000 --> 00:11:24,672 >> At maaari mong gawin kahit na may interes ng pumunta sa berdeng mga bagay where-- ipaalam. 242 00:11:24,672 --> 00:11:26,630 At maaari kong gawin ito ng Siyempre gamit ang aking sariling mga code. 243 00:11:26,630 --> 00:11:30,670 Ngunit kahit ang mismong API Sinusuportahan ng funky mga pagpapatakbo 244 00:11:30,670 --> 00:11:35,510 tulad nito, na kung saan ay ngayon mag-abala amin para sa susunod na 30 segundo. 245 00:11:35,510 --> 00:11:39,170 >> Kaya na isang lasa ng kung ano ang maaari kang gawin sa isang API, ang isang ito na kinasasangkutan 246 00:11:39,170 --> 00:11:40,010 ilaw na mga bombilya. 247 00:11:40,010 --> 00:11:42,510 Tandaan na CS50 ay may ilang pares ng Google Glass kung ikaw ay 248 00:11:42,510 --> 00:11:45,380 i-pansing isang bagay sa kahabaan mga linya, Arduino Unos, na 249 00:11:45,380 --> 00:11:48,670 mga maliliit na maliit na mga computer, mahalagang, sa isang maliit na circuit board 250 00:11:48,670 --> 00:11:50,470 na maaari mong kumonekta wire at iba pang mga bagay 251 00:11:50,470 --> 00:11:52,732 sa at aktwal na kontrol ang iyong tunay na kapaligiran mundo. 252 00:11:52,732 --> 00:11:54,940 At pagkatapos ay may ilang ng bagong mga laruan na mayroon kami. 253 00:11:54,940 --> 00:11:59,294 Isa ito literal lamang dumating ang iba pang mga araw sa pamamagitan ng koreo, ang isang Myo gasa. 254 00:11:59,294 --> 00:12:01,710 At naisip ko na ito ay isang paraan upang makakuha ka nasasabik tungkol sa mga proyekto 255 00:12:01,710 --> 00:12:03,720 na maaari mong gamitin sa ito hardware gagawin 256 00:12:03,720 --> 00:12:08,900 maging upang i-play ang maikling clip na ginagamit nila upang mang-ulol mga tao 257 00:12:08,900 --> 00:12:10,500 na ngayon kami ay naninirahan sa hinaharap. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [Musika sa pag-play] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> David MALAN: Kaya sa loob lamang ng ilang linggo, mo Masyadong maaaring maging na cool na sa CS50 patas. 262 00:13:37,109 --> 00:13:39,150 Ang isa pang device na namin Mayroon ng grupo ng mga na kami ay 263 00:13:39,150 --> 00:13:42,090 masaya na pautang out para sa mga proyekto ay tinatawag na isang motion controller. 264 00:13:42,090 --> 00:13:45,030 Ito ay isang maliit na USB device kumunekta ka sa isang computer na 265 00:13:45,030 --> 00:13:47,520 Binibigyang-daan sa iyo upang makipag-ugnayan sa iyong laptop, Mac o PC, 266 00:13:47,520 --> 00:13:51,570 na waring kayo ay nagkaroon tulad ng isang Xbox Kinect at aktwal na gumawa ng pisikal na galaw ng marami 267 00:13:51,570 --> 00:13:54,509 tulad ng nakikita natin sa pangitain ng hinaharap. 268 00:13:54,509 --> 00:13:56,505 >> [Musika sa pag-play] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> David MALAN: Kaya kahit kung mayroon kang kung paano walang ideya ang isang bagay tulad na 271 00:15:06,260 --> 00:15:10,050 maaaring posibleng mai-imbento o trabaho sa isang antas ng hardware, hindi mahalaga. 272 00:15:10,050 --> 00:15:13,520 Kahit na pagkatapos lamang ng ilang mga buwan ng CS50, at ng pang-unawa ng programming 273 00:15:13,520 --> 00:15:19,460 mas pangkalahatang paraan, at web programming higit pa kamakailan lamang, at pagkatapos din API, at HTTP, 274 00:15:19,460 --> 00:15:21,830 magkakaroon ka ng access sa pamamagitan ng software na API kung 275 00:15:21,830 --> 00:15:24,680 nais na humiram ng isa sa mga mga aparato upang aktwal na makipag-usap sa ito 276 00:15:24,680 --> 00:15:27,180 at hindi kailangang mag-alala tungkol sa ang nakapailalim na pagpapatupad 277 00:15:27,180 --> 00:15:30,220 mga detalye, na kung saan ay ganap na pare-pareho na may ganitong pagkaunawa ng layering 278 00:15:30,220 --> 00:15:33,610 isang abstraction na hindi namin nakita sa buong semestre. 279 00:15:33,610 --> 00:15:37,990 >> Kaya din sa ibabaw ng katapusan ng linggo, Nakita ng ilang mga piraso ng balita. 280 00:15:37,990 --> 00:15:40,640 Pumunta sa unang, pumunta sa seminar kung nais na matuto ng isang bagay 281 00:15:40,640 --> 00:15:42,160 higit pa sa anumang bilang ng mga paksa. 282 00:15:42,160 --> 00:15:43,340 Tingnan ang URL doon. 283 00:15:43,340 --> 00:15:45,890 At ang isang ito ay ipinadala sa sa akin sa pamamagitan ng Chang, na alam mo na, 284 00:15:45,890 --> 00:15:47,850 kung sino ang pag-print ng aming hukbo ng mga elepante. 285 00:15:47,850 --> 00:15:49,910 At ito ay isang headline tulad ng sumusunod. 286 00:15:49,910 --> 00:15:51,280 Ako ay terrified ng aking bagong TV. 287 00:15:51,280 --> 00:15:54,301 Bakit ako natakot upang i-ito bagay sa iyo at nais masyadong. 288 00:15:54,301 --> 00:15:56,050 Kaya kami ngayon sa ituro sa semestre, 289 00:15:56,050 --> 00:15:58,860 Masyadong, kung saan kahit na mayroon kang ang slightest ng pag-unawa 290 00:15:58,860 --> 00:16:02,620 ng kung paano gumagana ang web, at HTTP, at seguridad, mga bagay na tulad nito 291 00:16:02,620 --> 00:16:03,980 dapat na magsimula sa mahuli ang iyong mata. 292 00:16:03,980 --> 00:16:07,450 Ngunit din, makikita mo maunawaan kung ang mga bagay ay o hindi 293 00:16:07,450 --> 00:16:08,430 aktwal na mga banta. 294 00:16:08,430 --> 00:16:10,940 >> Kaya kinuha ko ng ilang mga sipi mula sa artikulong ito dito. 295 00:16:10,940 --> 00:16:12,540 At ang kuwento ay ang mga sumusunod. 296 00:16:12,540 --> 00:16:14,300 Ako ngayon ang may-ari ng isang bagong matalinong TV, na 297 00:16:14,300 --> 00:16:18,470 pangako upang makapaghatid ng streaming nilalaman multimedia, mga laro, app, 298 00:16:18,470 --> 00:16:21,450 social media, at internet -browse, oh at TV masyadong. 299 00:16:21,450 --> 00:16:24,410 Ang tanging problema ay na ako ngayon natatakot na gamitin ito, sinasabi ng may-akda. 300 00:16:24,410 --> 00:16:29,592 Gusto mo, masyadong, kung basahin mo sa pamamagitan ng ang patakaran sa privacy ng 46 pahina para sa iyong TV. 301 00:16:29,592 --> 00:16:31,800 Ang halaga ng data na ito Kinokolekta ng bagay ay pagsuray. 302 00:16:31,800 --> 00:16:35,710 -Log nito kung saan, kailan, paano, at para sa kung gaano katagal mong gamitin ang TV. 303 00:16:35,710 --> 00:16:38,190 Ito Nagtatakda tracking cookies, bilang na tinalakay namin, 304 00:16:38,190 --> 00:16:40,560 at beacon idinisenyo upang matukoy kapag mayroon kang 305 00:16:40,560 --> 00:16:43,185 tiningnan partikular na nilalaman o isang partikular na mensaheng e-mail 306 00:16:43,185 --> 00:16:45,230 kung nais mong suriin ng email sa iyong TV. 307 00:16:45,230 --> 00:16:48,430 Itinatala nito ang app na gamitin, ang mga website na iyong binibisita, 308 00:16:48,430 --> 00:16:52,280 at kung paano ka nakikipag-ugnayan sa nilalaman, paggawa ng lahat ng iyon sa pamamagitan ng iyong smart TV. 309 00:16:52,280 --> 00:16:55,470 Mayroon din, creepier yet-- na aking addition-- 310 00:16:55,470 --> 00:16:58,140 ay isang built in camera may facial recognition. 311 00:16:58,140 --> 00:17:01,010 >> Ang layunin ay upang magbigay galaw control para sa TV 312 00:17:01,010 --> 00:17:05,490 at daan sa iyo upang mag-log in sa personalized na account gamit ang iyong mukha. 313 00:17:05,490 --> 00:17:08,940 Sa nakabaligtad, mga imahe -save sa TV sa halip na na-upload 314 00:17:08,940 --> 00:17:09,940 sa isang corporate server. 315 00:17:09,940 --> 00:17:12,520 Sa downside, sa internet koneksyon ay gumagawa ang buong TV 316 00:17:12,520 --> 00:17:14,811 mahina laban sa mga hacker na na nagpakita ng kakayahan 317 00:17:14,811 --> 00:17:16,700 gumawa ng kumpletong kontrol ng machine. 318 00:17:16,700 --> 00:17:20,880 >> Higit pang mga troubling, na parang na hindi sapat na smart, ay ang mikropono. 319 00:17:20,880 --> 00:17:23,599 Ipinagmamalaki ng TV ng boses Ang tampok na pagkilala 320 00:17:23,599 --> 00:17:26,859 na nagbibigay-daan sa mga manonood upang makontrol ang screen na may mga utos ng boses. 321 00:17:26,859 --> 00:17:30,290 Ngunit ang serbisyo ay may isang halip nagbabala babala. 322 00:17:30,290 --> 00:17:33,030 Mangyaring magkaroon ng kamalayan na kung ang ang iyong mga pasalitang salita isama 323 00:17:33,030 --> 00:17:36,210 personal o iba pang sensitibong impormasyon, na ang impormasyon 324 00:17:36,210 --> 00:17:40,310 Magiging kabilang sa mga data nakunan at ipapadala sa isang ikatlong partido. 325 00:17:40,310 --> 00:17:40,870 Nakuha ko na? 326 00:17:40,870 --> 00:17:45,860 Huwag sabihin ng personal o sensitibong mga bagay-bagay sa harap ng iyong TV. 327 00:17:45,860 --> 00:17:47,280 >> Kaya ito ay talagang para sa real. 328 00:17:47,280 --> 00:17:50,530 At ito ay mahirap hindi upang makita kung pumunta sa Best Buy o ang katulad para sa TV 329 00:17:50,530 --> 00:17:51,030 mga araw na ito. 330 00:17:51,030 --> 00:17:52,540 Ang mga ito ay na smart lahat sa ilang mga paraan. 331 00:17:52,540 --> 00:17:54,740 At sila ay nakakakuha ng mas matalinong at creepier. 332 00:17:54,740 --> 00:17:57,490 At sila lang ang naka-pagkolekta ng data sa mga paraan na na-usapan natin ang tungkol 333 00:17:57,490 --> 00:18:01,840 at pagkatapos ay pag-upload ito sa pamamagitan ng HTTP o ilang iba pang mga protocol sa ilang mga server. 334 00:18:01,840 --> 00:18:05,720 >> Kaya ito ay ng isang masaya artikulo sa mga online na website 335 00:18:05,720 --> 00:18:08,940 dito, na usapan tungkol sa isang partikular na bug o maling code 336 00:18:08,940 --> 00:18:11,340 na maaaring aktwal na namin itali sa talakayan huling linggong ito. 337 00:18:11,340 --> 00:18:15,730 Kaya ito ang ulo ay bilang susunod, pupunta ang kuwento dito, 338 00:18:15,730 --> 00:18:18,720 Magbiro Breckman nagtrabaho para sa isang kumpanya na dumarating sa isang kontrata 339 00:18:18,720 --> 00:18:22,390 upang bumuo ng isang pamamahala ng nilalaman system, o CMS habang ang mga ito ay tinatawag na, 340 00:18:22,390 --> 00:18:24,380 para sa isang medyo malaking website ng pamahalaan. 341 00:18:24,380 --> 00:18:27,300 Karamihan sa mga proyekto kasangkot pagbuo ng sistema ng pamamahala ng nilalaman 342 00:18:27,300 --> 00:18:29,840 upang ang mga empleyado ay magiging magagawang upang bumuo at mapanatili ang 343 00:18:29,840 --> 00:18:31,877 ang kailanman ang pagbabago nilalaman para sa kanilang mga site. 344 00:18:31,877 --> 00:18:34,210 Mga bagay nagpunta mahusay para sa ng ilang araw pagkatapos ng pagpunta live na. 345 00:18:34,210 --> 00:18:37,020 Ngunit sa araw na anim, mga bagay nangyaring hindi kaya mahusay. 346 00:18:37,020 --> 00:18:39,500 Ang lahat ng mga nilalaman sa website ay ganap vanished. 347 00:18:39,500 --> 00:18:42,950 At lahat ng mga pahina na humantong sa default, mangyaring ipasok ang nilalaman ng web page. 348 00:18:42,950 --> 00:18:43,810 Oops. 349 00:18:43,810 --> 00:18:46,080 Magbiro ay tinawag sa siyasatin at napansin 350 00:18:46,080 --> 00:18:49,390 na ang isa partikular na mapanggulo Nagkaroon panlabas na IP address 351 00:18:49,390 --> 00:18:53,380 nawala sa at tinanggal ang lahat ng ang nilalaman sa system. 352 00:18:53,380 --> 00:18:56,290 >> Ang IP address ay hindi nabibilang sa ilang ibang bansa hacker nakatungo 353 00:18:56,290 --> 00:18:58,340 sa pagsira kapaki-pakinabang impormasyon ng pamahalaan. 354 00:18:58,340 --> 00:19:05,190 Malutas ito sa googlebot.com, Sariling web sa pag-crawl ng spider ng Google. 355 00:19:05,190 --> 00:19:06,010 Oops. 356 00:19:06,010 --> 00:19:09,150 Pagkatapos ng isang bit ng pananaliksik at scrambling sa paligid upang makahanap ng noncorrupt backup, 357 00:19:09,150 --> 00:19:10,180 Natagpuan magbiro ang problema. 358 00:19:10,180 --> 00:19:12,700 >> Ay kinopya ng isang user at -paste ang ilang nilalaman mula sa isa 359 00:19:12,700 --> 00:19:15,670 pahina papunta sa isa pa, kabilang ang I-edit ang isang Hyperlink 360 00:19:15,670 --> 00:19:17,577 i-edit ang nilalaman sa pahina. 361 00:19:17,577 --> 00:19:20,160 Karaniwan ito ay hindi magiging isang isyung ito dahil sa isang labas ng user gagawin 362 00:19:20,160 --> 00:19:24,320 kailangan magpasok ng isang pangalan at password, ngunit ang CMS pagpapatotoo system, 363 00:19:24,320 --> 00:19:27,520 ang sistema ng pag-login, Hindi isinasaalang-alang ng 364 00:19:27,520 --> 00:19:30,980 sopistikadong Pag-hack mga diskarte ng Google Spider. 365 00:19:30,980 --> 00:19:31,700 Oops. 366 00:19:31,700 --> 00:19:33,610 >> Bilang ito ay lumiliko out, ang Google Spider ay hindi gumagamit ng 367 00:19:33,610 --> 00:19:36,950 cookies, na nangangahulugan na maaari itong madaling-bypass ang isang tseke para sa 368 00:19:36,950 --> 00:19:39,840 ay naka-log sa hanay ng cookie upang maging totoo. 369 00:19:39,840 --> 00:19:42,620 Hindi rin bigyang-pansin JavaScript, na gagawin nang normal 370 00:19:42,620 --> 00:19:45,170 -prompt at i-redirect ang mga user na hindi naka-log in. 371 00:19:45,170 --> 00:19:48,610 Gayunpaman ito ay sundin ang bawat hyperlink sa bawat pahina nahahanap nito, 372 00:19:48,610 --> 00:19:51,700 kabilang ang mga may Tanggalin ang Pahina sa pamagat. 373 00:19:51,700 --> 00:19:52,650 Oops. 374 00:19:52,650 --> 00:19:56,070 >> Kaya kung ano ang ibig sabihin nito sa higit pa teknikal ngunit medyo naa-access termino? 375 00:19:56,070 --> 00:19:58,340 Ibig sabihin lamang nito na ang sa kanilang website, 376 00:19:58,340 --> 00:20:02,287 Nagkaroon sila ng mga URL ay hindi hindi tulad ng isang ito na maaari mong makita sa set problema pitong. 377 00:20:02,287 --> 00:20:04,620 Pagpapabalik sa problema magtakda ng pitong o alam sa problema magtakda ng pitong 378 00:20:04,620 --> 00:20:06,411 na kayo ay hinamon, bukod sa iba pang mga bagay, 379 00:20:06,411 --> 00:20:08,570 magbenta ng mga stock sa ngalan ng user. 380 00:20:08,570 --> 00:20:14,010 Ngunit ang pagpapatupad ng tampok na iyon sa pamamagitan ng paraan ng sa pamamagitan ng mga hyperlink sa iyong mga user 381 00:20:14,010 --> 00:20:16,880 interface, marahil hindi ang smartest ideya 382 00:20:16,880 --> 00:20:20,300 dahil kung ang iyong site ay sa paanuman naa-access alinman sa pamamagitan ng isang tao 383 00:20:20,300 --> 00:20:23,577 sino ang nag-click sa paligid o bumili ng bot gaya ng Google o ng Spider 384 00:20:23,577 --> 00:20:26,160 habang ang mga ito ay tinatawag na ito lamang pag-crawl sa web sinusubukang i-index 385 00:20:26,160 --> 00:20:29,060 web bilang isang search engine, maaari nilang napaka-madali 386 00:20:29,060 --> 00:20:31,340 hit sa pamamagitan makakuha ng ganitong uri ng URL. 387 00:20:31,340 --> 00:20:33,770 At iyon ang pagtakbo katumbas ng, sa kasong ito, 388 00:20:33,770 --> 00:20:37,000 pagbebenta ng lahat ng mga pagbabahagi ng Google. 389 00:20:37,000 --> 00:20:40,030 >> Ngayon lantaran, ito ay ganap na tanga na ang CMS 390 00:20:40,030 --> 00:20:43,240 gamit na ang JavaScript at cookies upang ipatupad ang kanyang sistema sa pag-login 391 00:20:43,240 --> 00:20:47,100 at hindi mahusay na bahagi ng server, bilang mo guys gawin at ito ay mangyayari sa PSet 7-- 392 00:20:47,100 --> 00:20:49,940 mayroong isang login.php file-- palagi, lagi, 393 00:20:49,940 --> 00:20:52,789 laging seguridad ay dapat na tapos na sa gilid ng server, 394 00:20:52,789 --> 00:20:56,080 hindi sa gilid ng client dahil, bilang na ito Iminumungkahi ng artikulo at maaari mo ang iyong sarili 395 00:20:56,080 --> 00:20:59,600 makita sa isang punto, ito ay walang kuwenta para sa isang gumagamit, mabuti o masama, 396 00:20:59,600 --> 00:21:02,860 upang i-off lamang ng JavaScript hindi banggitin ang mga cookies. 397 00:21:02,860 --> 00:21:06,020 Kaya na ay ang iyong pang-araw araw WTF. 398 00:21:06,020 --> 00:21:07,970 >> May isang nang higit pa, na lamang ang uri ng nakakatakot, 399 00:21:07,970 --> 00:21:11,360 kaya makikita ko banggitin ito kung lamang bilang isang aralin buhay. 400 00:21:11,360 --> 00:21:14,850 Sa tuwing ginagamit mo ang isang application tinatawag na tulad ng Snapchat o mga katulad 401 00:21:14,850 --> 00:21:19,380 na nagsasabing ang mga larawang ito tatagal lamang para sa limang segundo, sampung segundo, o watnat. 402 00:21:19,380 --> 00:21:21,680 Ang mga ito ay ephemeral Iyon ay talagang hindi ito ang kaso. 403 00:21:21,680 --> 00:21:25,670 Tulad ng walang paraan, digital, upang ipatupad ng ilang mga paraan ng video, 404 00:21:25,670 --> 00:21:30,150 o larawan, o tekstuwal pagbabahagi ng naturang na ang isang tatanggap sa kabilang dulo 405 00:21:30,150 --> 00:21:31,660 Hindi maaaring kahit papaano i-save ang data. 406 00:21:31,660 --> 00:21:34,300 >> Sa karamihan ng mga musmos na paraan, ang isang tao Maaaring magtagal ang kanilang mga telepono. 407 00:21:34,300 --> 00:21:36,850 At ang mga ito ay may 10 segundo window habang tumitingin sa ilang iglap 408 00:21:36,850 --> 00:21:39,410 upang kumuha lamang ng ilang mga iba pang mga telepono at larawan nito, nang walang alinlangan. 409 00:21:39,410 --> 00:21:41,660 Kaya maaari mong mapanatili ang isang bagay digital na paraan. 410 00:21:41,660 --> 00:21:44,620 Ang ilan sa iyo kung paano gumawa ng mga screenshot sa iyong telepono. 411 00:21:44,620 --> 00:21:49,290 Sa katunayan, kung hindi mo alam ito, Napag-alaman na hindi bababa sa Snapchat, 412 00:21:49,290 --> 00:21:51,040 at sa tingin ko iba pang application mga araw na ito, 413 00:21:51,040 --> 00:21:53,720 hindi bababa sa sabihin sa iyo kung ang Ang tatanggap ay talagang 414 00:21:53,720 --> 00:21:55,310 kinuha ng isang screenshot ng iyong imahe. 415 00:21:55,310 --> 00:22:00,870 >> Ngunit mas masahol pa, ito ang snappening, bilang isang tao likha ito kamakailan, 416 00:22:00,870 --> 00:22:04,680 kung saan ang ilang 100,000 snaps ay inilabas 417 00:22:04,680 --> 00:22:09,310 sa kung ano ang tinatawag na isang torrent ng file sa iba't-ibang mga website sa huli. 418 00:22:09,310 --> 00:22:12,000 At ang mga nakapaloob ang maramihang ng mga pribadong mensahe at mga post. 419 00:22:12,000 --> 00:22:15,210 Ito ay lumiliko ang karamihan sa mga ito kaaya-aya, kaya hindi kung ano ang maaari mong asahan. 420 00:22:15,210 --> 00:22:17,580 Ngunit dahil ang mga tao ay nagkaroon ng gumamit ng isang third party website, 421 00:22:17,580 --> 00:22:20,270 pag-log in gamit ang kanilang Snapchat username at password at pagkatapos ay 422 00:22:20,270 --> 00:22:23,470 nagse-save ang lahat ng kanilang snaps sa mga third party na website. 423 00:22:23,470 --> 00:22:26,130 At ito ay ang third party website na-hack, 424 00:22:26,130 --> 00:22:30,710 na nangangahulugang lamang isang tao naisip kung paano upang makakuha ng lahat ng mga 100,000 plus ng mga larawan 425 00:22:30,710 --> 00:22:33,822 sa kanilang sariling hard drive para sa kasunod na pagbabahagi. 426 00:22:33,822 --> 00:22:36,030 Nang tapat, narito Masyadong, ito ay pag-uuri ng tanga na Snapchat 427 00:22:36,030 --> 00:22:39,360 ay ipinatupad sa paraan na isang third party na maaaring ayusin ng punto ng pagtawid 428 00:22:39,360 --> 00:22:43,310 ang data at na ito ay hindi nakatali sa iyong sariling application na tumatakbo sa telepono. 429 00:22:43,310 --> 00:22:46,947 Subalit, dito, Napag-alaman na ang mga mga bagay na hindi dapat mahuli sa iyo sa pamamagitan ng sorpresa, 430 00:22:46,947 --> 00:22:49,030 o hindi bababa sa dapat na mayroong maging isang aralin buhay in dito. 431 00:22:49,030 --> 00:22:52,220 Kung gusto mo ng teknikal na mga detalye, pumunta sa URL na iyon doon 432 00:22:52,220 --> 00:22:53,570 na nasa slide ngayon. 433 00:22:53,570 --> 00:23:00,960 Ang lahat ng mga karapatan, anumang mga katanungan sa mga aralin sa buhay ngayon sa CS? 434 00:23:00,960 --> 00:23:02,710 I-off na. 435 00:23:02,710 --> 00:23:04,970 Anumang bagay sa lahat? 436 00:23:04,970 --> 00:23:06,301 Anumang bagay sa lahat? 437 00:23:06,301 --> 00:23:09,050 Mayroon akong ng maraming mga tao ng pagsusuri kanilang Snapchat o isang bagay na ngayon. 438 00:23:09,050 --> 00:23:11,690 >> Ang lahat ng mga karapatan, kaya SQL, Naka-istrakturang Wika Query. 439 00:23:11,690 --> 00:23:12,509 Ni-wrap ito Hayaan. 440 00:23:12,509 --> 00:23:14,300 At din, kahit na lang kami scratching 441 00:23:14,300 --> 00:23:16,310 sa ibabaw ng mga ito wika, bibigyan ka namin ng 442 00:23:16,310 --> 00:23:18,930 sapat ng wika sa anyo ng mga PSet 7 443 00:23:18,930 --> 00:23:22,140 sa gayon maaari mong matugunan ang ilang mga walang kinikilingan karaniwang mga pag-andar. 444 00:23:22,140 --> 00:23:24,912 Ngunit Napagtanto mayroong ilang mga bagay na hindi namin nangangailangan ng sa iyo, 445 00:23:24,912 --> 00:23:27,120 ngunit sila ay magiging mahalaga ay panghuling proyekto 446 00:23:27,120 --> 00:23:30,760 at tiyak na dumating sa paggawa ng aktwal na mga website na may mga aktwal na user 447 00:23:30,760 --> 00:23:32,040 ay desisyon disenyo na ito. 448 00:23:32,040 --> 00:23:34,460 >> Ito ay lumiliko out na sa isang MySQL database, mo 449 00:23:34,460 --> 00:23:37,460 Mayroon bunches ng mga pagpipilian tulad ng ang mga uri ng data para sa iyong mga haligi 450 00:23:37,460 --> 00:23:41,670 at iba pang mga bagay, ngunit mayroon ka ring ang pagpili ng isang tinatawag na imbakan 451 00:23:41,670 --> 00:23:44,570 engine para sa lahat ng iyong data, ang uri ng file system, 452 00:23:44,570 --> 00:23:46,700 kung pamilyar ka, para sa lahat ng iyong data. 453 00:23:46,700 --> 00:23:48,830 Ano ang format ng huli ay itong naka-imbak sa? 454 00:23:48,830 --> 00:23:53,300 At ang pinaka-karaniwang, marahil, ay naging MyiSAM at InnoDB, teknikal na termino 455 00:23:53,300 --> 00:23:56,060 na makikita pinapahalagahan namin ang tungkol lamang sa lawak ng isa na may 456 00:23:56,060 --> 00:23:58,500 at isa ay walang ang mga sumusunod na tampok na ito. 457 00:23:58,500 --> 00:24:00,390 >> Ipagpalagay na mayroon kang medyo dorm refrigerator. 458 00:24:00,390 --> 00:24:03,030 At ipagpalagay mo na at ang iyong kasama sa kuwarto, na ibahagi ang refrigerator, 459 00:24:03,030 --> 00:24:04,682 ay talagang hibang na hibang ng sabihin nating gatas. 460 00:24:04,682 --> 00:24:07,140 At ito ay, sa katunayan, kung paano ang kuwento ay Sinabi sa akin na paraan pabalik 461 00:24:07,140 --> 00:24:10,890 sa araw noong kinuha ko ang isang kurso tinatawag CS 161 Mga Operating System, na 462 00:24:10,890 --> 00:24:12,580 katulad explores paksang ito. 463 00:24:12,580 --> 00:24:13,760 Kaya mayroon mo ang refrigerator. 464 00:24:13,760 --> 00:24:14,630 Naubusan ka na ng gatas. 465 00:24:14,630 --> 00:24:17,000 At dumating ka sa bahay, ang iyong mga kasama sa kuwarto ni pa rin sa klase o anumang, 466 00:24:17,000 --> 00:24:19,208 at nagpasya kang pupuntahan ko pumunta out at makakuha ng ilang gatas. 467 00:24:19,208 --> 00:24:22,630 Kaya isinara mo ang refrigerator, pagkulong ang dorm room, pumunta sa tapat ng kalye 468 00:24:22,630 --> 00:24:25,330 sa CVS o kung saan man, at makakuha ng sa linya upang bumili ng ilang gatas. 469 00:24:25,330 --> 00:24:28,960 >> Samantala, ang iyong kasama sa kuwarto ay nakakakuha ng bahay mula sa klase, nakakakuha papunta sa dorm room, 470 00:24:28,960 --> 00:24:31,802 nagbukas ang refrigerator, napagtanto rin ooph, hindi namin out sa gatas. 471 00:24:31,802 --> 00:24:33,760 Kaya siya isinara ang refrigerator at pagkatapos ay mangyayari 472 00:24:33,760 --> 00:24:35,610 upang pumunta sa iba pang CVS, na kung saan ang mangyayari sa maging 473 00:24:35,610 --> 00:24:38,470 Isang bloke ang layo mula sa iba pang CVS sa plaza, at nakakakuha sa linya 474 00:24:38,470 --> 00:24:40,230 doon upang makakuha ng ilang gatas. 475 00:24:40,230 --> 00:24:42,524 Ngayon, siyempre, ang ilang mga minuto sa ibang pagkakataon, pareho kayong makabalik, 476 00:24:42,524 --> 00:24:44,690 at ang pinakamasama sa lahat ng mga posibleng kinalabasan ay nangyari. 477 00:24:44,690 --> 00:24:45,792 Pareho ka ng gatas. 478 00:24:45,792 --> 00:24:47,500 At hindi mo talaga tulad ng gatas na magkano. 479 00:24:47,500 --> 00:24:49,625 Kaya isa sa mga ito ay lamang pagpunta sa maasim sa ilang mga punto. 480 00:24:49,625 --> 00:24:55,941 Kaya ngayon mayroon kang isang labis na halaga ng gatas sa refrigerator dahil ang lahat bakit? 481 00:24:55,941 --> 00:24:57,072 >> [Hindi marinig] 482 00:24:57,072 --> 00:24:59,780 David MALAN: Oo, hindi mo ginawa kahit papaano makipag-ugnayan sa isa't isa 483 00:24:59,780 --> 00:25:00,904 na ikaw ay pagkuha ng gatas. 484 00:25:00,904 --> 00:25:04,320 Kaya sa pinakasimpleng ng mga paraan sa mundo ng tao, 485 00:25:04,320 --> 00:25:08,390 kung paano maaari mong maiwasan ang mga nakakatawa Ang sitwasyong mangyari tulad 486 00:25:08,390 --> 00:25:09,750 na nagtatapos up ka lamang sa isa. 487 00:25:09,750 --> 00:25:10,840 I-text ang mga ito, oo mabuti. 488 00:25:10,840 --> 00:25:12,877 Ngunit paano pa? 489 00:25:12,877 --> 00:25:13,460 Post-ito Liss. 490 00:25:13,460 --> 00:25:14,626 David MALAN: Isang Post-ito tala. 491 00:25:14,626 --> 00:25:17,150 Anumang paraan ng komunikasyon na nagsasabi sa iyong mga kasama sa kuwarto 492 00:25:17,150 --> 00:25:18,670 huwag pumunta sa refrigerator para sa gatas. 493 00:25:18,670 --> 00:25:20,440 Pupunta ako sa pumunta magtustos na muli sa aking sarili. 494 00:25:20,440 --> 00:25:22,770 Kaya kahit papaano ay kailangan mo upang i-lock sa mapagkukunan na ito. 495 00:25:22,770 --> 00:25:27,180 Sa gayon ay maaari kaming magsagawa ng this-- aming makakaya uri ng sanhi ng kapahamakan ang kuwento at maging isang CS kuwento 496 00:25:27,180 --> 00:25:30,360 kung saan sa tingin ng ito bilang tulad lamang ng variable, na kung saan ay pag-iimbak ng ilang mga halaga. 497 00:25:30,360 --> 00:25:32,570 At ngayon, ang halaga ng gatas ay zero, 498 00:25:32,570 --> 00:25:35,410 na kung saan hindi mo nais ang iyong kasama sa kuwarto upang siyasatin variable na 499 00:25:35,410 --> 00:25:38,730 at pagkatapos ay gumawa ng sa kanya o ang kanyang sarili ng desisyon batay sa katayuan ng variable na 500 00:25:38,730 --> 00:25:42,430 kung ikaw ay nasa proseso ng pagbabago ng estado ng variable na iyon. 501 00:25:42,430 --> 00:25:46,140 >> Kaya ang isa sa mga linya ng SQL na namin magbibigay sa iyo sa PSet 7 detalye 502 00:25:46,140 --> 00:25:47,310 ay ang isang ito dito. 503 00:25:47,310 --> 00:25:49,740 At hindi namin gumastos ng malaking tagal ng oras ng pakikipag-usap tungkol dito. 504 00:25:49,740 --> 00:25:55,100 Ngunit ito ay lumiliko out, kung sinusubukan upang bumili ng ilang mga stock sa CS50 pananalapi 505 00:25:55,100 --> 00:25:58,000 na mayroon ka ilang pagbabahagi ng, mo 506 00:25:58,000 --> 00:26:01,750 Nais na magawang gawin ang isang numero ng mga bagay na agad na magkakasama. 507 00:26:01,750 --> 00:26:04,360 Gusto mong magagawang epektibo, sa isang mataas na antas, 508 00:26:04,360 --> 00:26:06,700 suriin ang lahat ng karapatan, kung gusto ko upang bumili ng higit pang pagbabahagi ng Libre, 509 00:26:06,700 --> 00:26:08,780 ang malaking halaga ng stock namin makipag-usap tungkol sa spec, 510 00:26:08,780 --> 00:26:10,660 Gusto kong unang check kung gaano karaming mga pagbabahagi Mayroon akong. 511 00:26:10,660 --> 00:26:11,810 At ipagpalagay na ito ay limang. 512 00:26:11,810 --> 00:26:14,600 At ipagpalagay na nais kong bumili ng 10 higit pa, ako sa huli 513 00:26:14,600 --> 00:26:17,069 Nais na magkaroon ng 15 pagbabahagi ng stock. 514 00:26:17,069 --> 00:26:18,360 Kaya ko bang hilingin sa dalawang mga tanong. 515 00:26:18,360 --> 00:26:20,230 Ano ang estado ng variable? 516 00:26:20,230 --> 00:26:21,470 Ano ang estado ng mga hilera? 517 00:26:21,470 --> 00:26:22,970 Gaano karaming mga pagbabahagi kasalukuyan akong magkaroon? 518 00:26:22,970 --> 00:26:24,636 Pagkatapos mo nais na magpatuloy at i-update ito. 519 00:26:24,636 --> 00:26:27,720 Kaya iyon ang analog sa gatas sa na tingnan ang sunud-sunod, 520 00:26:27,720 --> 00:26:30,730 at pagkatapos ay nais mong i-update ito dahil kung gusto mong bumili ng 10 pagbabahagi, 521 00:26:30,730 --> 00:26:32,521 hindi mo nais na baguhin ang hilera upang 10, mo 522 00:26:32,521 --> 00:26:35,300 nais na baguhin ito sa 5 kasama ang 10 o, siyempre, 15. 523 00:26:35,300 --> 00:26:40,030 >> Ang linya ng code nagsisiguro na ang mga dalawang pangkonseptong ideya 524 00:26:40,030 --> 00:26:42,810 mangyari nang sama-sama o hindi sa lahat. 525 00:26:42,810 --> 00:26:46,920 Walang sinuman, kabilang ang ilang iba pang mga gumagamit sino ang nag-log in ka sa parehong website, 526 00:26:46,920 --> 00:26:49,900 Maaari kahit papaano ay makakagambala ang checking ng row 527 00:26:49,900 --> 00:26:52,960 at ang pag-update ng hilera, ang piliin ang at ang update kung habilin sa iyo. 528 00:26:52,960 --> 00:26:57,360 At ang syntax ay hindi sobrang halata, ngunit ito isang linya, ang haba ay ito ay, 529 00:26:57,360 --> 00:27:01,150 Sinisiguro nito na ang dalawang mga pagpapatakbo ng mga suriin ang variable o tingnan ang hilera 530 00:27:01,150 --> 00:27:04,660 at i-update ang hilera mangyari atomically. 531 00:27:04,660 --> 00:27:06,849 >> Oh dito pumunta kami muli. 532 00:27:06,849 --> 00:27:07,890 Ang text message sa aking telepono. 533 00:27:07,890 --> 00:27:09,954 Kaya ipaalam gumawa ng ito sa isang kaunti pa kongkreto. 534 00:27:09,954 --> 00:27:12,120 Ipagpalagay na ikaw ay hindi pagpapatupad ng isang refrigerator, 535 00:27:12,120 --> 00:27:16,400 at hindi ka naka-pagpapatupad PSet 7 ngunit isang aktwal na bangko, 536 00:27:16,400 --> 00:27:20,000 o isang ATM, ang isang Automated teller Machine, kung saan mo kahit papaano 537 00:27:20,000 --> 00:27:22,960 nais na magagawang magbigay ng kapangyarihan mga user upang maglipat ng pera 538 00:27:22,960 --> 00:27:24,500 mula sa isang account patungo sa isa pa. 539 00:27:24,500 --> 00:27:25,100 OK, mag-hang sa. 540 00:27:25,100 --> 00:27:26,683 Pupunta ako upang i-mute ito ngayon, salamat sa iyo. 541 00:27:26,683 --> 00:27:30,450 Kaya gusto naming ilipat ang pera mula sa isang numero ng account 542 00:27:30,450 --> 00:27:33,600 sa ibang account numero, partikular na $ 100. 543 00:27:33,600 --> 00:27:37,690 Kaya ito ay uri ng isang arbitrary Halimbawa, kung saan ka, ang ATM, 544 00:27:37,690 --> 00:27:41,060 Maaaring gusto upang magsagawa ng dalawang SQL mga query, ibawas mula sa isang account, 545 00:27:41,060 --> 00:27:42,430 at magdagdag sa mga iba pang account. 546 00:27:42,430 --> 00:27:46,766 Ngunit nais mong tiyakin na ang mga dalawang linya ng parehong mangyari o hindi sa lahat. 547 00:27:46,766 --> 00:27:48,640 Hindi mo gusto ang isang bagay nagsisimula nagambala. 548 00:27:48,640 --> 00:27:51,440 Ikaw ay hindi ilang mga smart masamang tao kahit papaano ay nakatayo sa Bank of America 549 00:27:51,440 --> 00:27:53,270 na may dalawang mga ATM sa harap sa kanya at kahit papaano 550 00:27:53,270 --> 00:27:55,270 uri ng pag-type sa utos sa parehong panahon, 551 00:27:55,270 --> 00:28:01,230 sana ay sinusubukan na ibawas $ 200 sa halip ng $ 100 at lamang pagkakaroon ng $ 100 kredito ang. 552 00:28:01,230 --> 00:28:04,450 Sa maikli, gusto mo ito sa kumilos nang eksakto tulad ng iyong inaasahan. 553 00:28:04,450 --> 00:28:06,540 >> At ang paraan ng ginagawa mo ito sa SQL database ay 554 00:28:06,540 --> 00:28:09,350 balutin mo ito sa kung ano ang na tinatawag na isang transaksyon. 555 00:28:09,350 --> 00:28:14,290 Literal sa SQL, maaari mong tawagin CS50 ni query function na may quote magpanipi ng pagsisimula 556 00:28:14,290 --> 00:28:15,370 transaksyon. 557 00:28:15,370 --> 00:28:18,640 Pagkatapos ay maaari kang magsagawa ng anumang numero ng ng kasunod na mga query SQL, 558 00:28:18,640 --> 00:28:20,870 ngunit wala sa kanila ang tumagal Epekto sa mga database 559 00:28:20,870 --> 00:28:25,880 hanggang sa tawagan ka query quote magpanipi gumawa, kung muli gamit ang PHP. 560 00:28:25,880 --> 00:28:29,810 At sa ganitong paraan, maaari mong matiyak na ang kahit kung mayroon kang 1,000 mga gumagamit sa lahat ng 561 00:28:29,810 --> 00:28:32,080 naaabot ang iyong database sa parehong oras, SQL 562 00:28:32,080 --> 00:28:34,540 ay nangangako na ang mga dalawang mga query ay magiging 563 00:28:34,540 --> 00:28:36,740 ipinatupad sa isang karapatan pagkatapos ng iba pang mga. 564 00:28:36,740 --> 00:28:40,330 Kaya hindi ka humantong sa may labis sa gatas o ang maling halaga, sa huli, 565 00:28:40,330 --> 00:28:40,830 ng pera. 566 00:28:40,830 --> 00:28:43,110 >> Kaya panatilihin ito sa isip, Hindi kaya magkano para sa PSet 7 567 00:28:43,110 --> 00:28:45,250 ngunit para sa huling proyekto kung ikaw talaga 568 00:28:45,250 --> 00:28:49,690 sinusubukan mong maglipat ng data sa paligid sa kabuuan ng talahanayan bilang maaari kang dito. 569 00:28:49,690 --> 00:28:53,980 Ngunit marahil kahit na mas simple at mas halata na maunawaan na may isang halimbawa 570 00:28:53,980 --> 00:28:54,860 ay ang isang ito dito. 571 00:28:54,860 --> 00:28:57,760 At may isang taong nag-email sa amin ang tungkol sa ito lamang ang iba pang mga araw 572 00:28:57,760 --> 00:28:59,600 kapag nakita niya isang bagay na katulad sa online. 573 00:28:59,600 --> 00:29:03,480 >> Kaya sa aking kaalaman, ang pin ng system Hindi mahina sa pag-atake na ito. 574 00:29:03,480 --> 00:29:06,637 At wala akong mga ideya kung ito ang ginagamit ng kahit na ang database ng SQL sa ilalim ng hood. 575 00:29:06,637 --> 00:29:08,470 Ngunit gamitin natin ito para sabihin ang alang-alang ng talakayan. 576 00:29:08,470 --> 00:29:10,178 Narito ang screen na Harvard tao ay may posibilidad 577 00:29:10,178 --> 00:29:13,620 upang makita kung kailan pag-log in gamit ang kanilang Numero ng Harvard ID at ang kanilang pin. 578 00:29:13,620 --> 00:29:19,020 At ipagpalagay na ang pin sistema ay ipinatupad sa PHP at may MySQL 579 00:29:19,020 --> 00:29:22,000 database, ang code na ang isang tao Maaaring nakasulat na taon na ang nakaraan 580 00:29:22,000 --> 00:29:23,270 ay maaaring magmukhang ito. 581 00:29:23,270 --> 00:29:25,230 Una, ipinahahayag ng variable na tinatawag na username. 582 00:29:25,230 --> 00:29:27,560 At kumuha lamang na mula sa ang POST superglobal. 583 00:29:27,560 --> 00:29:30,140 Pagkatapos ay kumuha ng isa pang variable tinatawag password at gawin ang parehong. 584 00:29:30,140 --> 00:29:33,080 At pagkatapos ay isagawa lamang ang haba ng query dito, 585 00:29:33,080 --> 00:29:36,690 piliin ang bituin mula sa mga user kung saan username ay katumbas sa takda 586 00:29:36,690 --> 00:29:38,510 at password ay katumbas ng tulad at tulad. 587 00:29:38,510 --> 00:29:40,660 >> Pansinin na ang kulot brace ginamit ko na dito 588 00:29:40,660 --> 00:29:42,880 ang ibig sabihin lamang sa PHP, pumunta Magpatuloy at kapalit 589 00:29:42,880 --> 00:29:45,400 ang halaga ng mga dalawang variable doon. 590 00:29:45,400 --> 00:29:50,090 Ang mga ito ay hindi mahigpit na kinakailangan, ngunit sila ay may posibilidad upang maiwasan ang banayad na mga syntax error. 591 00:29:50,090 --> 00:29:53,650 Kaya lubos na ito ay mukhang tama sa unang tingin. 592 00:29:53,650 --> 00:29:54,240 At ito ay. 593 00:29:54,240 --> 00:29:56,680 Maaari mong ipatupad ang mga pin sistema sa ganitong paraan. 594 00:29:56,680 --> 00:30:00,460 >> Ngunit ipagpalagay na ang isang super matalino at mga nakakahamak na mag-aaral 595 00:30:00,460 --> 00:30:03,020 -input na ito bilang kanyang pin. 596 00:30:03,020 --> 00:30:05,550 Kaya inalis ko na ang mga bullet palatandaan dito sa kunwaring up, 597 00:30:05,550 --> 00:30:08,760 at talagang ako nagsiwalat kung ano ang maaaring maging siya type. 598 00:30:08,760 --> 00:30:10,350 At ito ay isang maliit na kakaiba. 599 00:30:10,350 --> 00:30:13,850 Ngunit kung ano ang jumps out sa iyo sa potensyal na nakakaligalig tungkol sa pag-input ng user, 600 00:30:13,850 --> 00:30:16,450 kahit na wala kang mga ideya kung ano ang isang SQL iniksyon-atake ay nangangahulugan. 601 00:30:16,450 --> 00:30:20,300 Bakit ang hitsura ng isang maliit na hindi kapani-paniwala? 602 00:30:20,300 --> 00:30:21,050 Ano iyon? 603 00:30:21,050 --> 00:30:21,550 [Hindi marinig] 604 00:30:21,550 --> 00:30:24,260 David MALAN: Ang o ay isang maliit na kahina-hinala. 605 00:30:24,260 --> 00:30:26,310 Sa katunayan, iyon ay isang keyword mula sa SQL. 606 00:30:26,310 --> 00:30:28,105 Kaya na hindi maghudyat na rin. 607 00:30:28,105 --> 00:30:29,980 Ang katotohanan na mayroong lahat ng mga solong panipi 608 00:30:29,980 --> 00:30:32,646 there-- sa katunayan, ang isa sa mga pinakamadaling mga paraan upang buksan ang ilang mga database 609 00:30:32,646 --> 00:30:35,880 ay sa pamamagitan ng pag-type sa isang pangalan tulad ng O'Reilly na may isang kudlit sa loob nito 610 00:30:35,880 --> 00:30:38,600 dahil kung ang tao na nagsulat ang code sa likod ng mga eksena 611 00:30:38,600 --> 00:30:41,570 Hindi isinasaalang-alang na mayroong Maaaring maging single quote sa isang user 612 00:30:41,570 --> 00:30:45,060 input, at siya ay gumagamit ng solong panipi sa kanilang mga code, 613 00:30:45,060 --> 00:30:46,040 Maaari itong mangyari masamang bagay. 614 00:30:46,040 --> 00:30:47,870 >> Sa katunayan, mas malala pa, isaalang-alang na ito. 615 00:30:47,870 --> 00:30:50,600 Kung ito ay muli ang code na ang isang tao sa Harvard taon 616 00:30:50,600 --> 00:30:53,100 nakalipas na sinulat para sa pin system, mapapansin kung ano ang 617 00:30:53,100 --> 00:30:56,220 tungkol upang makakuha ng substituted para sa username at password 618 00:30:56,220 --> 00:30:59,780 kung type ng user muli sa skroob bilang kanilang username 619 00:30:59,780 --> 00:31:03,960 at pagkatapos ay isa, dalawa, tatlo, apat, limang, quote o quote magpanipi isang equals 620 00:31:03,960 --> 00:31:04,660 Ilagay sa mga sipi isa. 621 00:31:04,660 --> 00:31:07,220 At mapansin kung ano ang key dito ay ang gumagamit ay hindi 622 00:31:07,220 --> 00:31:09,900 Nagsimula ang kanilang password o kanilang pin na may quote. 623 00:31:09,900 --> 00:31:12,610 At hindi nila natapos na ito may quote dahil siya 624 00:31:12,610 --> 00:31:16,315 ay sa pag-aakala na kung ang programmer ay hindi kaya matalim, 625 00:31:16,315 --> 00:31:18,690 ang mga ito ay pagpunta sa may mga solong panipi sa kanilang mga code. 626 00:31:18,690 --> 00:31:19,860 >> Kaya narito ang code. 627 00:31:19,860 --> 00:31:23,820 At ang pagpapalit na maaaring mangyari ngayon ay ito. 628 00:31:23,820 --> 00:31:26,350 At ko na nakasalungguhit kung ano ang gumagamit ay nai-type sa. 629 00:31:26,350 --> 00:31:28,480 Kaya bago, pagkatapos. 630 00:31:28,480 --> 00:31:33,330 At mapansin kung ano ang nang mahinahon nakakaligalig ngayon tungkol sa mga karapatan kalahati ng SQL code? 631 00:31:33,330 --> 00:31:36,300 Ito ay isang maliit na mas kumplikado, tinatanggap na, kaysa sa query sa nasaksihan namin. 632 00:31:36,300 --> 00:31:38,550 Ngunit hindi ito maaari marahil maging isang magandang bagay kung ikaw ay 633 00:31:38,550 --> 00:31:42,240 sinasabi piliin ang star, na kung saan ay piliin ang lahat mula sa talahanayan ng gumagamit 634 00:31:42,240 --> 00:31:46,630 kung saan username ay katumbas ng skroob at ay katumbas ng password ng isa, dalawa, tatlo, apat, 635 00:31:46,630 --> 00:31:49,610 lima o isa ay katumbas ng isa. 636 00:31:49,610 --> 00:31:53,860 Ano ang lohikal na implikasyon ng na huling sugnay na siguro? 637 00:31:53,860 --> 00:31:55,650 Laging lamang Ito ay totoo. 638 00:31:55,650 --> 00:31:59,930 >> At dahil uri ng namin nahulaan o may korte out sa pamamagitan ng pagsubok at error 639 00:31:59,930 --> 00:32:02,760 na ang mga programmer na nagsulat ang code na ito ang hindi 640 00:32:02,760 --> 00:32:07,250 asahan ang isang tao ng tao o hindi magandang -type sa solong panipi pati na rin, 641 00:32:07,250 --> 00:32:10,350 maaari naming syntactically kumpletuhin ang SQL query 642 00:32:10,350 --> 00:32:12,260 na may isang bagay na walang kabuluhan ngunit isang bagay na 643 00:32:12,260 --> 00:32:15,930 syntactically hindi tama ay na laging sinusuri sa true. 644 00:32:15,930 --> 00:32:19,130 Kaya kung ang code na ito ay ginagamit upang sagutin ang tanong totoo o hindi dapat 645 00:32:19,130 --> 00:32:22,930 ang gumagamit na ito ay pinapayagan upang pumasa, ang sagot ay palaging tila pagpunta 646 00:32:22,930 --> 00:32:26,930 para maging totoo dahil ito ay palaging pagpunta upang pumili ng isang bagay mula sa database 647 00:32:26,930 --> 00:32:29,280 dahil ang isa sa kurso palaging katumbas ng isa. 648 00:32:29,280 --> 00:32:30,360 >> Kaya ano ang solusyon? 649 00:32:30,360 --> 00:32:33,290 Well sa PSet 7, kami talaga maiwasan ang lahat ng sama-sama. 650 00:32:33,290 --> 00:32:37,360 Bigyan ka namin ng isang function query, at kami Hinihikayat ka upang gamitin ang mga tandang pananong 651 00:32:37,360 --> 00:32:40,430 bilang placeholder, katulad sa espiritu sa printf ni% s, 652 00:32:40,430 --> 00:32:43,710 ngunit kung ano ang key ng tungkol sa mga tandang pananong dito ay kung aktwal mong basahin ang 653 00:32:43,710 --> 00:32:46,950 functions.php, kung saan ang aming function ng query ay ipinatupad, 654 00:32:46,950 --> 00:32:52,780 mga tandang pananong ay nakatakas, kung saan ang anumang bagay potensyal na mapanganib 655 00:32:52,780 --> 00:32:58,210 tulad ng isang solong panipi naka sa isang nakatakas solong quote. 656 00:32:58,210 --> 00:33:00,590 >> Kaya ito ay kung ano ang talaga nangyayari kung 657 00:33:00,590 --> 00:33:04,850 gamitin ang CS50 ng query function na o anumang bilang ng third party libreng library na 658 00:33:04,850 --> 00:33:06,000 gawin ang parehong. 659 00:33:06,000 --> 00:33:09,850 Hindi ba mahalaga sa kasong ito, sa berde, kung ang gumagamit ay nai-type sa isang solong quote 660 00:33:09,850 --> 00:33:12,070 dahil ang query -andar na aming sinulat ni ay 661 00:33:12,070 --> 00:33:15,120 pagpunta sa magdagdag ng backslash bago anumang naturang mga mapanganib na quote. 662 00:33:15,120 --> 00:33:17,360 Kaya ito ay hindi, sa katunayan, magiging legit. 663 00:33:17,360 --> 00:33:20,910 Ito ay tulad ng pag-type sa isang nakatutuwang naghahanap password na, siyempre, hindi pupunta 664 00:33:20,910 --> 00:33:23,490 maging skroob ng aktwal na password. 665 00:33:23,490 --> 00:33:28,260 >> Kaya ang takeaway para sa CS50 ay isa, walang pasubali laging gumamit ng isang bagay 666 00:33:28,260 --> 00:33:30,860 tulad ng query function na CS50 ni o ang kalakip na library, 667 00:33:30,860 --> 00:33:32,560 na kung saan ang mangyayari sa tawagin PDO. 668 00:33:32,560 --> 00:33:35,880 Ngunit hindi kailanman, hindi kailanman, Hindi magawa ng code tulad ng ito 669 00:33:35,880 --> 00:33:39,472 walang escaping o pagkayod bilang sinasabi nila ang iyong input. 670 00:33:39,472 --> 00:33:42,430 At magpo ka sa isang punto marahil matagpuan ang ilang mga website na katulad nito. 671 00:33:42,430 --> 00:33:46,060 Sa katunayan, parang ito upang maging ang kaso tulad ng sa airport at hotel sa lugar 672 00:33:46,060 --> 00:33:48,880 kung saan mayroon silang libreng Wi-Fi access na mayroon kang mag-login upang, 673 00:33:48,880 --> 00:33:51,010 mga website na ito ay palaging horribly ipinatupad. 674 00:33:51,010 --> 00:33:55,680 At kaya isang uri ng kasiyahan sa bahay ehersisyo, Hindi para sa nakakahamak na mga layunin o higit pa 675 00:33:55,680 --> 00:33:59,170 ng isang masaya sa kalsada mag-ehersisyo, ay i-type lamang 676 00:33:59,170 --> 00:34:02,850 isang kudlit, ang isang solong quote, sa isang form sa ilang mga website 677 00:34:02,850 --> 00:34:03,810 at tingnan kung ano ang mangyayari. 678 00:34:03,810 --> 00:34:06,660 At kung ang server nag-crash o nagbibigay sa ka ng ilang mga uri ng error na mensahe, 679 00:34:06,660 --> 00:34:09,690 maaaring napaka rin itong maging na may isang taong hindi inaasahang ito. 680 00:34:09,690 --> 00:34:15,239 At pagkatapos ay dapat mong alertuhin ang tamang awtoridad at magpatuloy walang karagdagang. 681 00:34:15,239 --> 00:34:20,843 >> Kaya ngayon mo guys dapat sana ay Nauunawaan ng kaunti pang Geek katatawanan dito. 682 00:34:20,843 --> 00:34:24,120 >> [Tawa] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 David MALAN: Alam mo ikaw ay isang Geek. 685 00:34:29,070 --> 00:34:30,944 Para sa susunod na ilang taon, ikaw ay matandaan 686 00:34:30,944 --> 00:34:33,520 na kaunti Bobby Tables ay dahil sa cartoon dito. 687 00:34:33,520 --> 00:34:36,760 Kaya panatilihin na sa isip bilang namin paglipat ng konteksto ng isang huling pagkakataon 688 00:34:36,760 --> 00:34:38,770 ngayon sa JavaScript. 689 00:34:38,770 --> 00:34:41,600 Na ginugol namin medyo maliit oras sa syntax ng PHP 690 00:34:41,600 --> 00:34:43,440 dahil ito ay talagang sobrang pareho sa C. 691 00:34:43,440 --> 00:34:47,300 At mabuti sapat, JavaScript masyadong ay sobrang pareho sa syntax ng C 692 00:34:47,300 --> 00:34:49,639 pati na rin namin makita sa lamang ng ilang sandali at bilang kami ay 693 00:34:49,639 --> 00:34:51,205 tingnan sa ibang pagkakataon sa linggong ito sa partikular na. 694 00:34:51,205 --> 00:34:54,080 Ano ang maaari mong gawin sa mga wikang ito, bagaman, ay ang lahat ng mga mas malakas na, 695 00:34:54,080 --> 00:34:55,790 lalo na sa mga API. 696 00:34:55,790 --> 00:34:56,960 >> Ngunit una ng mabilis na paglilibot. 697 00:34:56,960 --> 00:35:00,450 Kaya isa, sa JavaScript, mayroong walang pangunahing pag-andar, kung saan ay mabait. 698 00:35:00,450 --> 00:35:02,650 Tulad ng sa PHP, maaari mong isulat lang code. 699 00:35:02,650 --> 00:35:04,310 Inaasahan Kundisyon na katulad nito. 700 00:35:04,310 --> 00:35:07,100 At Boolean expression maaari ganito ang hitsura o katulad nito. 701 00:35:07,100 --> 00:35:09,530 Lilipat umiiral, at sila ay ay maaaring magmukhang ito. 702 00:35:09,530 --> 00:35:10,970 Inaasahan apat na mga loop na katulad nito. 703 00:35:10,970 --> 00:35:12,390 Habang loop ganito ang hitsura. 704 00:35:12,390 --> 00:35:14,160 Gawin panahon hitsura ito. 705 00:35:14,160 --> 00:35:16,850 At pagkatapos ay array hitsura ito, na halos kapareho sa PHP. 706 00:35:16,850 --> 00:35:20,740 Ngunit mapansin, na sa JavaScript ka Ipinahahayag ng variable na hindi sa isang dolyar 707 00:35:20,740 --> 00:35:25,190 -sign, hindi sa isang uri ng data ngunit literal sa pamamagitan ng pagsasabi var para sa variable na bago ito. 708 00:35:25,190 --> 00:35:27,900 Ito ay masyadong maluwag na-type sa na ito ay may mga uri, 709 00:35:27,900 --> 00:35:29,729 ngunit hindi mo tahasang ipinapahayag sa kanila. 710 00:35:29,729 --> 00:35:31,520 At pagkatapos ay isang string, para sa Halimbawa, maaaring tumingin 711 00:35:31,520 --> 00:35:34,350 tulad nito, na string na tinatawag na mga sa kasong ito. 712 00:35:34,350 --> 00:35:35,410 At pagkatapos ay isang bagay. 713 00:35:35,410 --> 00:35:37,010 At makikita ang mga namin makita ang higit pang bago ang haba. 714 00:35:37,010 --> 00:35:41,470 At ang isang bagay ay marahil ang isa sa mga pinakakaraniwang nakikita kaayusan data 715 00:35:41,470 --> 00:35:44,050 sa isang JavaScript na batay sa programa dahil pinapayagan nito 716 00:35:44,050 --> 00:35:46,680 mong iugnay arbitrary key pares ng halaga lamang 717 00:35:46,680 --> 00:35:51,240 tulad ng nag-uugnay array PHP ni at tulad lamang ng iyong sariling hash talahanayan 718 00:35:51,240 --> 00:35:54,042 o subukan ang bilang namin ipinatupad ilang linggo likod. 719 00:35:54,042 --> 00:35:56,250 Kaya sabihin aktwal na makita kung ano ang maaari naming gawin sa JavaScript. 720 00:35:56,250 --> 00:35:59,410 At sa partikular, ito ay laundry listahan ng mga tampok 721 00:35:59,410 --> 00:36:02,300 na mga browser mayroon na -daan sa amin upang Hook ng JavaScript 722 00:36:02,300 --> 00:36:05,470 sa isang website sa mga sumusunod na paraan. 723 00:36:05,470 --> 00:36:09,340 JavaScript ay madalas na ginagamit bilang isang client side scripting wika. 724 00:36:09,340 --> 00:36:10,130 Hindi ito pinagsama-sama. 725 00:36:10,130 --> 00:36:11,370 Ito masyadong ay binigyang-kahulugan. 726 00:36:11,370 --> 00:36:15,740 Ngunit hindi tulad ng PHP, na kung saan ay tumatakbo sa server, sa web server, 727 00:36:15,740 --> 00:36:18,220 o malalim sa loob ng kliyente, JavaScript 728 00:36:18,220 --> 00:36:22,190 ay naiiba sa na ito karaniwang tumatakbo sa browser. 729 00:36:22,190 --> 00:36:26,060 >> Kaya ang anumang code ng JavaScript na simulan mo ang pagsulat para sa PSet 8, o ang iyong huling proyekto, 730 00:36:26,060 --> 00:36:29,890 o sa tunay na mundo ay karaniwang nangyayari i-save sa server, walang pasubali 731 00:36:29,890 --> 00:36:33,110 sa isang tuldok HTML o tuldok JS para sa JavaScript na file. 732 00:36:33,110 --> 00:36:35,770 Ngunit ang browser ay pagpunta upang i-download na JavaScript 733 00:36:35,770 --> 00:36:39,530 code sa iyong sariling halimbawa ng Chrome, o IE, o Firefox, o anumang. 734 00:36:39,530 --> 00:36:43,870 At ang code ay talagang pagpunta upang makakuha ng isagawa sa loob ng iyong sariling mga browser. 735 00:36:43,870 --> 00:36:46,560 Lamang upang gawin ang higit pang real, tingnan natin ito sa kongkreto form. 736 00:36:46,560 --> 00:36:50,120 >> Wala kaming ideya kung ano ang ginagawa ang code na ito walang tunay na pagbabasa sa pamamagitan nito. 737 00:36:50,120 --> 00:36:52,670 Ngunit hayaan mo akong pumunta sa Facebook.com nang hindi nagla-log in. 738 00:36:52,670 --> 00:37:00,440 Hayaan akong pumunta sa Siyasatin ang Elemento at pumunta sa, sabihin nating, Network at I-reload ang pahina. 739 00:37:00,440 --> 00:37:04,150 At kami see-- ipaalam sa akin ilipat I-reload ang Page upang makakuha ng lahat ng mga kahilingan sa bagong. 740 00:37:04,150 --> 00:37:08,850 At ang pinakaunang file nakikita ko ang CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Narito ang unang JavaScript na file, at mayroon akong 742 00:37:10,880 --> 00:37:14,600 walang ideya kung ano ang gumagana, ngunit dito ay ilan sa mga code ng JavaScript 743 00:37:14,600 --> 00:37:16,180 na humihimok sa Facebook. 744 00:37:16,180 --> 00:37:18,400 Ito ay hindi kahit na talagang na inilalantad upang mag-zoom in. 745 00:37:18,400 --> 00:37:20,260 Ito ay pa rin tulad ng walang saysay. 746 00:37:20,260 --> 00:37:24,341 >> Ngunit makikita mo ang kahit pababa sa ibaba, mayroong kahit na higit pa sa mga file na ito ang JavaScript. 747 00:37:24,341 --> 00:37:24,840 Oops. 748 00:37:24,840 --> 00:37:25,440 Yan ang ping. 749 00:37:25,440 --> 00:37:28,550 Sabihin bumaba ng kaunti higit, higit, higit pa. 750 00:37:28,550 --> 00:37:29,894 Mayroong isa. 751 00:37:29,894 --> 00:37:31,238 Mayroong isa. 752 00:37:31,238 --> 00:37:31,880 Mayroong isa. 753 00:37:31,880 --> 00:37:35,820 >> Kaya kahit Facebook, sa likod ng eksena, ay nakasulat sa bahagi sa PHP 754 00:37:35,820 --> 00:37:39,100 at sariling bersyon noon Facebook ni, mayroong isang malaking halaga ng JavaScript. 755 00:37:39,100 --> 00:37:41,330 Sa katunayan, alinman sa mga -chat mo sa Facebook, 756 00:37:41,330 --> 00:37:45,520 alinman sa mga update sa mismong linya timeline na nangyari sa real time, sa lahat ng na 757 00:37:45,520 --> 00:37:47,944 ay hinimok sa pamamagitan ng JavaScript. 758 00:37:47,944 --> 00:37:48,444 Oo? 759 00:37:48,444 --> 00:37:50,235 >> Madla: Hindi ako sigurado kung ito ang Facebook, 760 00:37:50,235 --> 00:37:53,624 ngunit naisip ko na binuo Facebook kanilang sariling mga in-house na wika code? 761 00:37:53,624 --> 00:37:54,540 David MALAN: ginawa nila. 762 00:37:54,540 --> 00:37:58,110 Kaya na ang dahilan kung bakit sinasabi ko ang isang pag-iiba ng Na tinatawag na PHP Hip Hop na sila talaga 763 00:37:58,110 --> 00:38:03,440 Idinagdag tampok sa naturang na kapag Markahan unang ipinatupad Facebook, 764 00:38:03,440 --> 00:38:04,710 ito ay nakasulat sa PHP. 765 00:38:04,710 --> 00:38:07,370 At na uri ng nanatili ang uri ng front end ng wika 766 00:38:07,370 --> 00:38:09,030 na ginagamit nila para sa mas ng kanilang mga coding, ngunit ito 767 00:38:09,030 --> 00:38:11,870 Hindi pa ng isang wika na mga antas ay partikular na mahusay sa bilyon-bilyong 768 00:38:11,870 --> 00:38:12,630 ng mga tao. 769 00:38:12,630 --> 00:38:15,300 At kaya naidagdag na nila ang kanilang mga sarili pagpapabuti sa likod ng mga eksena. 770 00:38:15,300 --> 00:38:17,049 At ginagamit nila ang anumang bilang ng iba pang mga wika 771 00:38:17,049 --> 00:38:19,170 para sa iba't ibang piraso ng ang kanilang imprastraktura. 772 00:38:19,170 --> 00:38:24,080 Kaya oo, ito ay isang pag-iiba ng kung ano ang namin sa ngayon ng PHP. 773 00:38:24,080 --> 00:38:26,610 >> Kaya ipaalam sa tumagal ng isang hitsura sa isang pares ng mga halimbawa 774 00:38:26,610 --> 00:38:28,890 ng kung paano namin maaaring gamitin ang JavaScript dito. 775 00:38:28,890 --> 00:38:32,530 Sa source code ngayon, mayroon kaming isang bungkos ng mga file,, ang unang na kung saan 776 00:38:32,530 --> 00:38:34,090 hayaan na tinatawag na DOM zero. 777 00:38:34,090 --> 00:38:36,770 Kaya DOM zero ang hitsura tulad ng sumusunod. 778 00:38:36,770 --> 00:38:40,730 Hayaan akong pumunta sa direktoryong ito at buksan up domzero.html, 779 00:38:40,730 --> 00:38:44,970 sa itaas ng na may isang uri ng doc pagpapahayag, na sinasabi dito ay ang HTML 5. 780 00:38:44,970 --> 00:38:46,440 At ngayon narito ang isang HTML na tag. 781 00:38:46,440 --> 00:38:47,540 Narito ang head tag. 782 00:38:47,540 --> 00:38:49,210 At narito ang kung ano ang bago ngayon. 783 00:38:49,210 --> 00:38:52,620 >> Ngayon Mayroon kaming isang script tag sa loob ng ulo ng pahina. 784 00:38:52,620 --> 00:38:55,290 At ito tila gumagana napakaliit, ngunit abiso 785 00:38:55,290 --> 00:38:58,410 na tinukoy mo akong script, isang JavaScript. 786 00:38:58,410 --> 00:39:01,050 At bilang isang bukod, dahil ito ay isang karaniwang maling kuru-kuro, 787 00:39:01,050 --> 00:39:05,220 JavaScript ay ganap na walang ang gagawin sa Java, ang wika 788 00:39:05,220 --> 00:39:08,010 na ang ilan sa iyo maaari na natutunan sa APCS. 789 00:39:08,010 --> 00:39:10,480 Ito ay higit pa sa isang marketing bagay sa anumang bagay, 790 00:39:10,480 --> 00:39:12,980 riding ang coattails ng Java taon na ang nakakaraan. 791 00:39:12,980 --> 00:39:17,300 Ngunit ang JavaScript, walang kinalaman sa Java, katulad lamang, at annoyingly, 792 00:39:17,300 --> 00:39:18,480 confusingly na may pangalang. 793 00:39:18,480 --> 00:39:21,890 >> Kaya dito ay kung paano mo ipinapahayag ng isang function sa JavaScript, literal nating pag-andar, 794 00:39:21,890 --> 00:39:24,556 pagkatapos ay ang pangalan ng function, pagkatapos ay anumang argumento maaaring tumagal, 795 00:39:24,556 --> 00:39:25,530 gusto lang sa PHP. 796 00:39:25,530 --> 00:39:28,990 Ino-out sa JavaScript, isa sa mga pinaka nakakainis na mga pag-andar na umiiral ang Alert. 797 00:39:28,990 --> 00:39:31,392 Ito ay isang maliit na window magpa-pop up at alertuhan ka 798 00:39:31,392 --> 00:39:32,600 sa ilang piraso ng impormasyon. 799 00:39:32,600 --> 00:39:33,766 Sa pangkalahatan ito ay frowned sa. 800 00:39:33,766 --> 00:39:35,980 Ngunit gagamitin namin ito bilang aming unang exercise dito. 801 00:39:35,980 --> 00:39:37,900 >> Pansinin ang ilang mga tampok ng JavaScript. 802 00:39:37,900 --> 00:39:41,524 Single quote at double quote hindi tunay na mahalaga ngayon. 803 00:39:41,524 --> 00:39:43,690 Single quotes at double quote maaaring interchanged, 804 00:39:43,690 --> 00:39:46,220 samantalang sa C, mayroon kang gamitin ang double quote para sa mga string, 805 00:39:46,220 --> 00:39:48,150 at mayroon kang dalawang single quote para sa karakter. 806 00:39:48,150 --> 00:39:51,150 Sa JavaScript mundo, maraming tao, karamihan ng mga tao 807 00:39:51,150 --> 00:39:54,970 gamitin ang solong panipi sa paligid ng mga string dahil lang sa ito ay isang pangkakanyahan bagay. 808 00:39:54,970 --> 00:39:58,330 Ngunit ano ang plus operator dito, na hindi pa namin nakikita dati? 809 00:39:58,330 --> 00:39:59,836 >> Madla: pagdudugtong. 810 00:39:59,836 --> 00:40:00,960 David MALAN: pagdudugtong. 811 00:40:00,960 --> 00:40:02,450 Kaya C ay hindi kahit na mayroon ito. 812 00:40:02,450 --> 00:40:04,820 May tuldok operator PHP, na ginagawa ito. 813 00:40:04,820 --> 00:40:09,710 May plus operator JavaScript, na confusingly ay tulad ng Java. 814 00:40:09,710 --> 00:40:11,440 Ngayon kung ano ang nangyayari sa dito? 815 00:40:11,440 --> 00:40:14,260 >> Kaya narito ang kung saan ang pangunahing -unawa ng na larawan 816 00:40:14,260 --> 00:40:17,010 threw up kami ng ilang mga araw na nakalipas ay sa pag-play. 817 00:40:17,010 --> 00:40:19,620 Tandaan kapag nagkaroon kami ng simple bersyon ng isang HTML page-- 818 00:40:19,620 --> 00:40:20,830 Sinabi lang ito, kumusta mundo. 819 00:40:20,830 --> 00:40:22,770 At pagkatapos ay iginuhit namin ng isang puno sa kanan, na 820 00:40:22,770 --> 00:40:27,320 ay nagkaroon ng isang bungkos ng mga parihaba at mga linya pagkonekta ng mga ito tulad ng isang pamilya tree. 821 00:40:27,320 --> 00:40:30,820 Kaya iyon ang tinatawag na DOM o Dokumento Bagay Modelo. 822 00:40:30,820 --> 00:40:36,759 At ito ay lumiliko out na maaari mong ma-access ang parihaba para sa na puno na may syntax 823 00:40:36,759 --> 00:40:37,550 tulad ng mga sumusunod. 824 00:40:37,550 --> 00:40:41,370 Literal mong sabihin dokumento, na isang espesyal na global variable sa isang JavaScript 825 00:40:41,370 --> 00:40:45,890 programa na may isang function na nauugnay dito na maaari mong ma-access ang 826 00:40:45,890 --> 00:40:50,280 katulad ng isang struct, ngunit mo lamang sabihin na tuldok at pagkatapos ay ang pangalan ng function na ay, 827 00:40:50,280 --> 00:40:52,390 makakuha ng mga elemento sa pamamagitan ng ID. 828 00:40:52,390 --> 00:40:55,460 >> Ang elemento Gusto kong makakuha ay sa malas quote magpanipi pangalan. 829 00:40:55,460 --> 00:40:57,150 At pagkatapos Gusto kong makakuha ng halaga nito. 830 00:40:57,150 --> 00:40:58,330 Ngayon kami ay nakakakuha ng mas maaga sa ating mga sarili. 831 00:40:58,330 --> 00:41:00,038 Hindi ako kahit sigurado kung ano ang lahat ng ito ay tungkol sa. 832 00:41:00,038 --> 00:41:03,000 Sabihin mabilis inaabangan ang panahon na ang HTML sa ng pahina, na kung saan ay napaka-simple. 833 00:41:03,000 --> 00:41:05,370 >> Abiso na iyong tinukoy ko isang bumubuo pababa dito. 834 00:41:05,370 --> 00:41:07,940 Abisuhan ang ibinigay ko na ito sa isang natatanging ID, kahit na hindi na namin gagamitin 835 00:41:07,940 --> 00:41:08,870 katangiang ito bago. 836 00:41:08,870 --> 00:41:11,300 Ngunit ito ay umiiral sa HTML. 837 00:41:11,300 --> 00:41:15,570 Maaari mong matukoy nang natatangi ang ilang tipak ng HTML na may identifier na katulad nito. 838 00:41:15,570 --> 00:41:19,880 >> Abiso sa ngayon this-- lumabas HTML Sinusuportahan, sa bawat na laundry listahan 839 00:41:19,880 --> 00:41:22,490 ilang sandali ang nakalipas, isang buo bungkos ng handler ng kaganapan. 840 00:41:22,490 --> 00:41:25,060 At handler ng kaganapan na ito sinasabi sa isumite. 841 00:41:25,060 --> 00:41:28,730 Sa pagsusumite ng user ng ito form na ito, tawagan ang sumusunod na code. 842 00:41:28,730 --> 00:41:31,360 At ang code na nangyayari na tinatawag o ipinatupad 843 00:41:31,360 --> 00:41:35,260 ay eksaktong ito, ang mga Griyego function na sinusundan ng return false. 844 00:41:35,260 --> 00:41:37,360 Lahat ng iba pa ay dapat na maging medyo pamilyar. 845 00:41:37,360 --> 00:41:42,050 >> Narito ang isang input ng uri ng teksto, na ang ID, sa kasong ito, ay magiging pangalan. 846 00:41:42,050 --> 00:41:45,430 Hindi namin magkaroon ng aktwal na katangian pangalan ito time-- at isang pindutan ng isumite. 847 00:41:45,430 --> 00:41:48,330 Kaya mukhang ganito ang nagresultang pahina. 848 00:41:48,330 --> 00:41:52,890 At ang nagreresultang pag-uugali, makikita mo, ganito ang itsura. 849 00:41:52,890 --> 00:41:56,940 Ang pahinang ito lokal na host nagsasabing, kumusta David, marahil ay hindi isang aesthetically kasiya-siya 850 00:41:56,940 --> 00:41:58,340 paraan upang salubungin ang isang gumagamit. 851 00:41:58,340 --> 00:41:59,950 Ngunit kung ano ang talagang nangyari? 852 00:41:59,950 --> 00:42:01,360 >> Well, isaalang-alang kung ano ito ay. 853 00:42:01,360 --> 00:42:02,310 Ito ay isang patlang ng teksto. 854 00:42:02,310 --> 00:42:04,635 At ayon sa HTML dito, ibinigay ko ito 855 00:42:04,635 --> 00:42:07,350 isang natatanging tagatukoy tinatawag na quote magpanipi pangalan. 856 00:42:07,350 --> 00:42:09,770 Samantala, ang sinabi ko kapag isinusumite ang form na ito user 857 00:42:09,770 --> 00:42:13,820 sa pamamagitan ng pagpindot ang Enter o i-click ang Isumite pindutan, tawagan ang function na tinatawag na bumati 858 00:42:13,820 --> 00:42:15,410 at pagkatapos ay bumalik Mali. 859 00:42:15,410 --> 00:42:16,870 Isaalang-alang natin sa mga nasa reverse Hayaan. 860 00:42:16,870 --> 00:42:20,590 Pansinin kapag click ako sa Isumite, ang URL ng pahina na ito ay hindi nagbabago. 861 00:42:20,590 --> 00:42:22,420 Icon ng browser Hindi nagsimula umiikot. 862 00:42:22,420 --> 00:42:27,050 Hindi ko pumunta sa kahit saan, at iyon ang Literal dahil sinabi ko bumalik Mali. 863 00:42:27,050 --> 00:42:31,534 Bumalik Mali maikling circuits o hinto ang default na pag-uugali ng isang form. 864 00:42:31,534 --> 00:42:33,700 Kaya na pagkatapos ay nag-iwan sa amin ng ang isang huling tanong. 865 00:42:33,700 --> 00:42:34,764 Ano ang bumati gawin? 866 00:42:34,764 --> 00:42:36,680 Well, bumati sa malas tawag ng isang function na tinatawag na 867 00:42:36,680 --> 00:42:39,250 Alerto, ipapasa sa isa mahabang argumento na 868 00:42:39,250 --> 00:42:43,950 ang resulta ng concatenating-sama ng bungkos ng substrings, kumusta na pinaghihiwalay ng puwang, 869 00:42:43,950 --> 00:42:45,810 pagkatapos ay anumang ito ay nagbabalik. 870 00:42:45,810 --> 00:42:51,490 Kaya dokumento ay tulad ng isang global variable sa na ugat ng puno na, 871 00:42:51,490 --> 00:42:55,560 pagtawag ng isang espesyal na function, kung hindi man ay kilala na ngayon bilang paraan. 872 00:42:55,560 --> 00:42:57,650 Ang isang pag-andar na sa loob ng isang variable ay 873 00:42:57,650 --> 00:42:59,640 na tinatawag na isang pamamaraan sa halip ng isang function. 874 00:42:59,640 --> 00:43:01,570 >> Kaya makakuha ng mga elemento sa pamamagitan ng ID. 875 00:43:01,570 --> 00:43:03,940 Ano ang elemento ng ginagawa mo Gusto upang makakuha ng ID nito? 876 00:43:03,940 --> 00:43:06,970 Ilagay sa mga sipi magpanipi pangalan at pagkatapos ay partikular na Pinahahalagahan. 877 00:43:06,970 --> 00:43:12,000 Kaya sa ibang salita, ang code na iyon lamang hahanapin ng patlang ng teksto na kung saan ang ID ay pangalan 878 00:43:12,000 --> 00:43:13,380 at pagkatapos ay makakakuha ng halaga nito. 879 00:43:13,380 --> 00:43:16,460 Kaya kung ako ay upang baguhin ito at sabihin Davin sa halip na si David, 880 00:43:16,460 --> 00:43:20,670 at i-click ang Isumite, na kami ngayong magkaroon ng pagbati para sa Davin. 881 00:43:20,670 --> 00:43:22,890 >> Ang lahat ng mga karapatan, sa gayon ang lahat ng mga fine at mabuti. 882 00:43:22,890 --> 00:43:25,480 Ngunit sabihin makita kung maaari kaming magsagawa ng ang isang maliit na mas malinis dahil lang 883 00:43:25,480 --> 00:43:28,190 pagsusulat ng code tulad ng ito ay Sa pangkalahatan ay pagpunta sa ay frowned sa. 884 00:43:28,190 --> 00:43:30,060 Ito ay pagpunta sa hitsura scarier. 885 00:43:30,060 --> 00:43:32,330 Ngunit kung ano ang unang pagkakaiba na tandaan dito 886 00:43:32,330 --> 00:43:35,970 sa bersyong ito maliban sa pangalanan ang pagbabago sa DOM isa? 887 00:43:35,970 --> 00:43:41,110 Ano structurally hitsura ng iba't ibang tungkol sa kumpara sa iba pang? 888 00:43:41,110 --> 00:43:41,932 Oo? 889 00:43:41,932 --> 00:43:43,890 Madla: ba ang form sa tuktok ng script ngayon? 890 00:43:43,890 --> 00:43:46,570 David MALAN: Oo, ang form ay nasa tuktok ng script para sa ilang mga kataka-taka dahilan. 891 00:43:46,570 --> 00:43:48,736 Kaya iyon ang unang bagay na na jumps out sa akin, masyadong. 892 00:43:48,736 --> 00:43:50,990 At Sa kabutihang palad hindi bababa sa, bahaging ito ay magkapareho. 893 00:43:50,990 --> 00:43:53,470 Kaya ang tanging bagay na tila sa iba ay na ito. 894 00:43:53,470 --> 00:43:55,296 >> Kaya narito ang kung ano ang kapong baka tungkol sa JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 At ito ay ginagawang mahirap Nauunawaan sa unang tingin, 896 00:43:57,420 --> 00:44:00,670 lalo na para sa huling proyekto kung tinitingnan mo ang sample code sa online, 897 00:44:00,670 --> 00:44:04,200 ngunit ito kahulihan babagsak ito sa ilang pangunahing sintaktik mga tampok. 898 00:44:04,200 --> 00:44:06,230 Narito muli ay ang dokumento global variable. 899 00:44:06,230 --> 00:44:09,540 Narito muli ay ang pamamaraan o function na na nagsasabing makuha ang elemento ng ID. 900 00:44:09,540 --> 00:44:11,570 Ito oras na nais kong makuha ang ID na tinatawag na demo. 901 00:44:11,570 --> 00:44:12,490 Saan na? 902 00:44:12,490 --> 00:44:15,400 Iyon ay tila karapatan dito, ang mismong form. 903 00:44:15,400 --> 00:44:20,010 >> At ngayon mapansin na tila kung ako makabalik na node mula sa puno na 904 00:44:20,010 --> 00:44:22,940 Kinakatawan ang form mismo, hindi isang patlang ng teksto, 905 00:44:22,940 --> 00:44:26,970 ito ay lumiliko ang form na iyon, na node o parihaba mula sa puno, 906 00:44:26,970 --> 00:44:30,450 May kung ano ang makikita namin tumawag sa isang ari-arian, napaka, napaka, na halos kapareho 907 00:44:30,450 --> 00:44:35,390 sa espiritu sa isang struct sa C. Ito ay lamang isang miyembro ng data sa loob ng parihaba. 908 00:44:35,390 --> 00:44:38,300 >> Kaya Mayroon akong form dito, at ako naglalakip, 909 00:44:38,300 --> 00:44:44,650 o ako magtatalaga, upang Sa nito Isumite handler o sa halip Sa Magsumite ng ari-arian 910 00:44:44,650 --> 00:44:45,740 ang mga sumusunod na function. 911 00:44:45,740 --> 00:44:49,000 At ito ay, sa pamamagitan ng malayo, ang craziest bagay kaya sa ngayon syntactically. 912 00:44:49,000 --> 00:44:53,610 Ito ay lumiliko out sa JavaScript at sa PHP, at tapat para sa na bagay sa C, 913 00:44:53,610 --> 00:44:58,990 kahit na hindi namin gawin ito, maaari mong magdagdag ng hindi mailarawan, anonymous, o aka lambda 914 00:44:58,990 --> 00:45:03,000 mga function na walang isang pangalan ngunit maaaring tinatawag na gayunman. 915 00:45:03,000 --> 00:45:07,050 >> Kaya kung ano ang ako paggawa dito ay ako magtatalaga sa On Magsumite ng ari-arian, na 916 00:45:07,050 --> 00:45:14,330 ay nasa loob ng node ng aking mga DOM tree, isang function, function na pointer kung habilin sa iyo. 917 00:45:14,330 --> 00:45:16,310 Function na ay walang pangalanan ang, ngunit hindi 918 00:45:16,310 --> 00:45:19,110 mahalaga dahil namin makita sa isang sandali kung paano tawagan ito. 919 00:45:19,110 --> 00:45:21,780 Kapag ang function na ito ay tinatawag na, ang code na ito ay makakakuha pinaandar, pagkatapos ay 920 00:45:21,780 --> 00:45:24,210 false ay ibinalik tulad ng dati. 921 00:45:24,210 --> 00:45:25,800 >> Ngunit mapansin kung ano ang iyong ginawa ko. 922 00:45:25,800 --> 00:45:27,830 Sa puntong ito sa kuwento, mayroon akong isang form. 923 00:45:27,830 --> 00:45:30,190 Ito ay nakuha ng isang natatanging ID na tinatawag na demo. 924 00:45:30,190 --> 00:45:33,740 Down dito, mayroon akong isang script tag na executes ang sumusunod na code. 925 00:45:33,740 --> 00:45:37,720 Ito attaches sa na node sa ang tree upang ito Sa Isumite 926 00:45:37,720 --> 00:45:40,260 ari-arian ang function na ito dito. 927 00:45:40,260 --> 00:45:44,310 At sa pamamagitan lamang ng likas na katangian ng kung paano gumagana ang mga browser, kapag ako ngayon i-click ang Isumite o pindutin ang Enter, 928 00:45:44,310 --> 00:45:45,889 na function ay pagpunta upang tinatawag. 929 00:45:45,889 --> 00:45:48,680 Hindi nito kailangang ng pangalan dahil sino pinahahalagahan ang ano ba kung ano ang tawag. 930 00:45:48,680 --> 00:45:52,540 Ang tanging pagkakataon ito ng pagpunta upang makakuha ng na tinatawag ay kapag isinumite ko ang form na ito. 931 00:45:52,540 --> 00:45:55,130 Hindi na kailangan para sa akin, ang nag-develop ng tao, 932 00:45:55,130 --> 00:45:57,330 upang aktwal na tawagan ito kahit saan pa. 933 00:45:57,330 --> 00:46:00,720 >> Ngayon lamang bilang isang teaser, na parang na Hindi na bale sapat na baluktot, 934 00:46:00,720 --> 00:46:03,330 Maaari rin naming gumawa ng mga ito Mas mukhang misteryosong gamit 935 00:46:03,330 --> 00:46:05,850 super sikat na library na tinatawag na jQuery. 936 00:46:05,850 --> 00:46:08,760 Sa katunayan jQuery at JavaScript ay madalas na conflated. 937 00:46:08,760 --> 00:46:12,790 At kung ano ang gagawin namin sa Miyerkules ay pagsisimula gamit ang wika at mga aklatan 938 00:46:12,790 --> 00:46:16,030 upang bumuo lalong asynchronous at dynamic na mga application 939 00:46:16,030 --> 00:46:18,950 tulad ng pagkuha ng mapa application, application 940 00:46:18,950 --> 00:46:22,360 na i-update ang webpage sa tunay oras, tulad ng Facebook o Gchat 941 00:46:22,360 --> 00:46:27,130 gawin, at hindi na nakaratay sa banig ating sarili sa Isumite ang pagpindot ng isang get o lamang post 942 00:46:27,130 --> 00:46:27,630 nag-iisa. 943 00:46:27,630 --> 00:46:29,055 Kaya ako ay nakikita mo sa Miyerkules. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [Musika sa pag-play] 946 00:46:35,550 --> 00:48:09,728