[Jwe mizik] DAVID Malan: Sa a se CS 50, ak sa a se kòmansman an nan semèn nèf. Ak sa ki nou te panse nou ta fè jodi a se pa sèlman fèmen chapit la sou semèn pase a materyèl kote nou konsantre sou sèvè pwogram entènèt kòt ak PHP ak SQL, kèk bagay baz done. Nou pral pale sou yon ti jan nan jodi a sekirite ak Lè sa a, tranzisyon nan yon pwogram bò kliyan lang li te ye tankou JavaScript. Men, anvan, gen kèk Bondye vin delivre. Ou ka sonje ke sou Mèkredi, mwen mete soti yo ekri yon sit entènèt ki te pran nan opinyon itilizatè a pa yon HTML fòme ki Lè sa a, ki estoke ke non opinyon itilizatè, telefòn chif, ak cellphone transpòtè nan baz done a. Lè sa a, mwen te gen yon ti kras lòd liy script ekri nan PHP ki te sipoze repekte sou ranje yo nan baz done a e pou voye soti mesaj tèks. Malgre plizyè, tantativ plizyè, nou pa t 'jwenn ki k ap travay nan fen an. Se konsa, mwen depanse tout semèn sa a ap travay sou sa Kòd jwenn nou sot pase pwen an kote nou te kite, annakò ak sa tout Mwen te resevwa nan fen Mèkredi te sa a mesaj tèks soti nan Mago jan mwen plede, ki te swiv pa yon mesaj tèks soti nan yon lòt kondisip klas, Ou te gen sa a David. Ki te swiv pa yon sèl sa a, bèl ankouraje. Kenbe sou prale a, trè ankourajan. Mwen prèske te resevwa li jiskaske then-- ak sa a, se nòt la nou te fini nan Mèkredi. Lè sa a, aktyèlman petèt mwen pi renmen, yon ti moman pita, sa a te vin nan. Modi Viv Stream. Se konsa, jounen jodi a, nou ranje sa a ak yon rapid gade nan ki sa mwen te fè depi. Se konsa, tout nan kòd sa a se disponib sou entènèt nan semèn pase a, semèn uit, sous kòd. Men, ou pral wè ke mwen te ale nan, ak mwen aktyèlman netwaye bagay sa yo yon ti jan. Mwen prezante yon koup lòt karakteristik nan yon baz done SQL. Pou egzanp, olye ke jis fè konpayi asirans nan var Char jan mwen panse ke mwen te fè sou vole a semèn pase a. Mwen olye defini li kòm sa ki rele yon enumerasyon. Se konsa, kèk nan ou ta ka gen pou wè sa a kòm nou eksplore C. anom se aktyèlman yon karakteristik nan C kote ou ka resanse yon pakèt antye nan konstan epi plase yo valè otomatik, tankou yonn, de, twa, kat san yo pa gen nimewo Kòd difisil. Se konsa, SQL sipòte menm bagay la tou, annakò ak sa si ou gen yon jaden baz done ke ou sèlman vle pran sou youn nan fini valè, ou ka literalman presize l ' jan mwen te fè gen pou kat popilè US cellphone transpòtè. Se konsa, mwen te fè sa. Apre sa, mwen te fè yon kantite chanjman kòm byen, ki pi enpòtan an nan yo ki te jwenn imel k ap travay paske sonje, ke pwogram sa a konte sou ki jeneralman yo rele yon imèl bay SMS pòtay, ki se jis yon fason anpenpan nan li di ke Verizon, ak AT & T, ak lòt jan sipòte yon sèvè, kote si li resevwa imel, li konvèti li nan SMS epi voye soti yon tèks mesaj bay telefòn yon moun. Se konsa, si m 'te fè sa a kòrèkteman, isit la se yon nouvo ak amelyore fòm ki pral pou pale ak nouvo ak amelyore Kòd, ki ou ka jwe ak sou entènèt. Epi li pral èspere ke fè m ' BEEP telefòn nan jis moman yon. Se konsa, premye, mwen pral tape nan non mwen. Dezyèmman, mwen pa pwal fè sa a tan sa a. Mwen pral Enspekte Eleman. Lè sa a se jis yon ti bagay konsa, mwen pa fè sa kreye èdtan nan pòs pwodiksyon travay jan mwen te fè dènye tan. Gen kounye a se nimewo telefòn mwen. Mwen pral chwazi Verizon. Ak isit la, se pou yo vire sou mikwofòn sa a isit la, ak bi sa a nan telefòn mwen isit la. Mwen pral klike sou Anrejistre, ki ta dwe èspere ke mete l 'nan baz done a. Koulye a, mwen pral pou yo ale nan la pwogram liy lòd, ki te rapèl rele dot koupe tèks, ak travèse dwèt ou. Isit la nou ale. [Dings TELEFÒN] [Aplodisman] DAVID Malan: Se konsa, plezi pi plis pase this-- li a plezi, nan kou, si mwen jwenn nan li. Men, li la plezi pi plis, mwen te panse, si nou kreye youn nan moman sa yo fim kote tankou yon bagay ki reyèlman move te rive nan mond lan, ak renmen tout pèp la nan NSA cellphones kòmanse bip ak mesaj tèks avèrtir yo sa a reyalite. Se konsa, mwen te panse nou ta eseye rkree menm bagay la tou isit la, annakò ak sa pa lè l sèvi avèk yon baz done, Mwen olye nan avanse te ekri yon pwogram ki sanble tankou sa a. Sa a se yon index.php-- ak mwen mete kòd sa a sou entènèt kòm well-- ki aparamman jis rann form.php, lè l sèvi avèk yon style paradigm mv ke nou pale sou nan plis detay nan seri pwoblèm sèt. Fòm Sa se trè senp. Li nan ale nan soumèt a yon dosye rele here.php via pòs. Epi li aparamman pral mande pou yon non, ak yon nimewo telefòn, ak Lè sa a via nan sa yo rele Chwazi meni an, li nan pral ba ou nan omwen kat popilè US transpòtè cellphone, ak Lè sa a pèmèt ou efektivman pran prezans pa klike isit la. Ak isit la, pandan se tan, ki pral prete kèk nan Kòd la soti nan dènye fwa. Men, si ou jis koudèy sa a, ou pral wè ke gen nan yon pakèt antye nan erè kont kouran. Men, bote a nan fen an se ke nou pa ap ekri nan yon baz done jodi a. Nou ap kenbe li senp epi jis voye soti èspere ke yon mesaj tèks via fonksyon mwen te ekri sou sot pase kèk jou rele nan Tèks, ki se nan Fonksyon. php, ki se ankò disponib sou entènèt. Se konsa, si ou ta renmen patisipe nan sa a. Nou pa ap ale nan dwe estoke anyen. Ale nan URL sa a isit la nan tan reyèl. pa soumèt li jis ankò, men kite a wè si nou ka gen youn nan sa yo fim moman kote tout moun nan cellphone kòmanse bip, èspere ke jis yon fwa ane sa a kontrèman ak nan 2011 ki kote sa a te ale oribleman courbe. E yon fwa ou ale nan adrès sa, ou ta dwe wè yon fòm super senp ke si ou gen yon non, yon telefòn selilè nimewo, ak yon konpayi asirans cellphone ki matche lis la gen, ale pi devan epi ranpli fòm nan. Men, pa frape soumèt jis ankò. Fòm nan k ap pase yo gade tankou sa a. Ale pi devan epi tape nan non ou, nimewo telefòn. Op, yon moun k ap pase devan yo nan koub la. Li nan OK. OK, tout moun nan ranpli fòm nan. Sa a ta dwe travay sou yon telefòn, tou, si ou vle. Tout dwa, sou mak ou, debarase mete, ale. Frape isit la. Ki sa? No Mwen fè sèman devan Bondye, mwen fè tès sa a plizyè fwa jodi a. Ou te resevwa li? [Entèrpozisyon vwa] DAVID Malan: OK, erè itilizatè petèt. Sa a de. Li te travay pou de soti nan yon kèk santèn, twa, kat. OK, sa a, se bon. Kat soti nan senk pou Correct ki jan sou. Se konsa, sa jis rive? Se konsa, prezimableman, san yo pa wè ou ekran, poukisa ta ka li te errored? Li pwobableman ke nou te jis ap eseye fè twòp koneksyon sèvè lapòs Harvard la tout nan yon fwa soti nan adrès la IP menm. Mwen jis devine depi m 'pa t' gen liksye a nan tès Kòd sa a ak kèk 300 moun nan avanse men pou kounye a reyalize ke ke omwen yo ta dwe gen vinn travay la fè tan sa a. Tout dwa, Se konsa, poukisa se tout la sa a plis konvnabl nan sa k ap pase sou? Oke premye, yon rapid koup la anons. Se konsa, yon sèl, si ou ta renmen yo rantre nan Chang, ak Nick, ak lòt moun yo nan manje midi sa a Vandredi, fè RSVP nan URL la abityèl la. Si w ap panse a konsantre nan oswa fè yon segondè nan CS, si wi ou non ou se yon sophomore, oswa elèv nevyèm ane, oswa menm jinyò oswa ansyen nan pwen sa a epi yo ka toujou peze nan kou yo, reyalize ke lekòl la jeni se rasanble pou gratis Ben ak Krèm glase Jerry a ak konsèy sa a yon ti tan apre klas Mèkredi nan 4:00 PM nan bilding lan CS nan Maxwell Dworkin. Si sa a se twò vit sou ekran an, jis ale cs50.harvard.edu pou yon lyen nan evènman an Facebook kote ou ka wè plis detay. Pandan se tan, mwen te panse mwen ta korije yon lòt bagay mwen goofed nan Mèkredi. Sanble ke ID Mak la sou Facebook pa t 'twa. Li te kat. Vire soti li te gen plis tès kont pase mwen sonje. Men, sa ki sa a te santi tankou yon opòtinite fè se rale moute yon URL tankou sa a. Se konsa, li sanble ke Facebook te gen yon API, Aplikasyon pou pwogramasyon Entèfas, ki se yon mekanis annakò ou ka mande done programe nan Facebook ak jwenn tounen machin enfòmasyon lizib, pa paj wèb men tèks jis anvan tout koreksyon, yon bagay rele JavaScript Notasyon objè. Ak an reyalite, si mwen ale nan sa a URL, ak rale nan, pa default, sa a se Mak la piblikman enfòmasyon ki aksesib. Ak detay nan enteresan isit la se jis ke li ID se vre, nimewo kat, ki mwen reyalize pi vit ke m 'te fè sa a. Ou ka fè sa tèt ou si ou konnen non itilizatè Facebook ou a si ou gen youn. Jis tape l 'moute tèt la. E pa youn nan sa a se prive. Mwen jis ap fè sa a menm nan mòd nan enkoyito. Se konsa, mwen pa menm louvri sesyon an. Epi ou ap wè ke mwen aparamman te nimewo itilizatè 6.454 sou Facebook, ki se pa twò move jou sa yo. Se konsa, kanmèm, ou ap wè tou plis enfòmasyon la. Epi aspè nan itil nan ki se ke ou ta ka ekri lojisyèl pwòp ou a, ki yon jan kanmenm entegre done tankou sa a nan aplikasyon pwòp ou yo. Ou ka pèmèt itilizatè yo ale nan sit entènèt ou, pa lè l sèvi avèk pwòp yo koutim ak non itilizatè modpas men petèt login Facebook yo epi pou yo jwenn enfòmasyon menm sou zanmi yo, si yo apwouve sa yo, oswa menm jan an. Se konsa, sonje ke CS50, tou, gen kèk nan APIs pwòp li yo, yonn pou done yo kou catalogue, kèk pou bon akolad meni yo nan manje a koulwa, nan tout la bilding ak kote sou lakou lekòl la nou gen yon API pou kòm byen ke ou ka sijè rechèch Menm jan an tou epi pou yo jwenn tounen done textuelle ke ou ka entegre nan yon PHP, oswa JavaScript, oswa menm, menm si mwens souvan, yon C baze sou pwojè final la. Vreman vre devan yo pou final la pwojè se yon jalons kèk. Ou te resevwa yon imèl nan men nou lòt jou a. Reyalize ke pwopozisyon an se akòz sa a ap vini Lendi. Li nan pa nesesèman obligatwa, men ou bezwen resevwa zanmi ansèyman ou apwobasyon anvan yo fè nenpòt ki chanjman apre sa. Lè sa a, devan yo se yon kantite lòt jalons. Se konsa, yo toumante ou, tou, ak kèk posiblite, nou gen yon pakèt moun sou sa yo anpoul limyè Hue. Se konsa, kèk nan ou nèg kounye a gen kèk nan sa yo nan chanm dòtwa ou kòm byen. Apre sa, yo tou gen yon API. Se konsa, sonje moun semèn anpoul binè de sa ki DAN BRADLEY ak Ansel Duff kreye pou nou. Yo te konn itilize yon koòdone lojisyèl sa a anpoul limyè, ki nan moman sa a se konekte nan elektrisite ak Lè sa a via fil se ki konekte nan yon ti bagay rele Bridge la desann isit la, tankou yon ti propriétaires routeur nan aparèy sa a an patikilye. Men, li sanble si mwen konnen ki jan yo voye mesaj HTTP, menm jan nou tout kounye a fè, Mwen ka voye yon mesaj tankou sa a anpoul sa a limyè yo vire l 'limen oubyen etenn oswa fè nenpòt ki kantite operasyon lòt sou li. Remake li pa nan jwenn, li pa nan post. Genyen yon lòt yon sèl rele mete. Genyen aktyèlman yon kèk lòt vèb sa yo. Men, remake gen nan yon chemen a, koupe API, koupe pwomotè nouvo, koupe limyè, koupe yon sèl, koupe eta. Sa a aparamman jis la chemen ki konpayi an, Philips, deside ou gen frape ak yon demann HTTP si ou vle chanje eta a nan anpoul la lè l sèvi avèk HTTP 1.1. Lè sa a, remake liy lan vid. Lè sa a, anfen sa ki sanble kalite yon etalaj nan kèk sòt, sa a ankò ki pral yo dwe rele JavaScript Notasyon objè, oswa Jason. Ak ki sa ou wè isit la se ke gen twa kle valè pè. Yon kle rele sou. Ak valè li yo aparamman ki pral yo dwe vre. Luminozite se 128, ki se kèk kalite Int. Lè sa a, tan tranzisyon se zewo, ki se aparamman konbyen tan li k ap pase yo pran yo vire bagay sa a sou. Se konsa, kounye a anpoul sa a limyè se nan. Men, si mwen fè egzakteman this-- kite m 'ale nan yon fèy twonpe ti kras ki Dann mete kanpe nan advance-- ak mwen pral ale pi devan ak fè kopi lòd sa a. Pli, kòm kèk nan nou ta ka yo te rete ranmase grap lòj sou CS50 Diskite se yon sèvis piblik tankou telne sa yo ke ou ka simulation demann HTTP, espesyalman mete. Mwen ka voye done sa a, espesyalman sa nou jis te wè yon ti moman de sa espesyalman nan URL sa a sou isit la. Lè sa a, Pli ki pral okipe tout nan tèt yo voulu ak analyzes gen nan. Se konsa, tout mwen dwe fè se kopi sa a nan yon fenèt tèminal ak Lè sa a frape Mete. Epi anpoul la limyè ale sou. Lè sa a se tout ale atravè tout òdinatè mwen wirelessly yon jan kanmenm desann nan pon an, ki se lè sa a ap pale ak anpoul sa a limyè. Mwen kapab fè yon lòt bagay. Mwen ka fè bagay sa a ale wouj pou egzanp. Mwen ka pou egzanp fè bagay sa a ale vèt. Mwen ka fè l 'ale ble. Ak Avi nan chak nan sa yo sikonstans yo, tout ke mwen chanje se sa yo rele valè a Hue aktyèlman ba li kèk koulè. Se pou m 'kole yon sèl sa a nan kòm byen. Kounye a li nan ble. Epi ou ka fè menm amateur bagay where-- kite a ale nan vèt. Apre sa, mwen te kapab fè sa a nan kou ak Kòd pwòp mwen. Men, menm API nan tèt li sipòte operasyon fenki tankou sa a, ki pral kounye a bezwen deranje nou pou pwochen 30 segonn yo. Se konsa, sa a, se yon sèl gou nan sa ou ta ka fè ak yon API, yon sèl sa a ki enplike anpoul limyè. Remake byen ke CS50 gen yon koup pè Google Glass si ou ta renmen atake yon bagay sou liy sa yo, Arduino Uno, ki yo se ti òdinatè ti kras, esansyèlman, sou yon tablo sikwi ti kras ke ou kapab konekte fil kouran ak lòt bagay ak aktyèlman kontwòl anviwònman reyèl mond ou. Lè sa a, gen yon koup jwèt nan nouvo ke nou genyen. Sa a yon sèl literalman jis te rive nan Lòt jou pa lapòs, yon Myo Brasher. Apre sa, mwen te panse li nan yon fason yo fè ou jwenn eksite sou pwojè ke ou ta ka sèvi ak ak pyès ki nan konpitè sa a ta gen yo jwe sa a kout clip yo ke yo itilize yo toumante jan ke nou ap viv kounye a nan tan kap vini an. [Jwe mizik] DAVID Malan: Se konsa, nan jis yon kèk semèn, ou twò bon pou yo fre nan jis la CS50. Yon lòt aparèy ki nou gen yon pakèt moun sou ke nou ap kè kontan yo prete soti pou pwojè yo rele yon kontwolè mouvman. Sa a se yon aparèy ti kras USB ou konekte nan yon òdinatè ki pèmèt ou kominike avèk laptop ou, Mac oswa PC, tankou si ou te gen tankou yon Xbox Kinect ak aktyèlman fè mosyon fizik anpil tankou nou wè nan sa a vizyon nan tan kap vini an. [Jwe mizik] DAVID Malan: Se konsa, menm si ou gen okenn lide ki jan yon bagay tankou sa kapab pètèt dwe envante oswa nan travay ou sou yon nivo pyès ki nan konpitè, pa gen pwoblèm. Menm apre jis yon kèk mwa nan CS50, ak yon konpreyansyon sou pwogram plis jeneralman, ak pwogram entènèt plis dènyèman, ak Lè sa a tou APIs, ak HTTP, ou pral gen aksè via APIs lojisyèl si ou vle prete youn nan sa yo aparèy ki aktyèlman pale ak li epi yo pa gen enkyete sou aplikasyon an kache detay, ki se konplètman ki konsistan avèk sa a nosyon nan stratifikasyon yon distraksyon ke nou te gen wè nan tout semès la. Se konsa, tou pandan fen semèn nan, te wè yon moso koup la nouvèl. Ale premye, ale nan seminè si ou ta renmen aprann yon bagay plis sou nenpòt ki kantite sijè. Al gade nan URL la a. Lè sa a yon sèl te voye nan m 'pa Chang, ki moun ki ou konnen, ki moun ki nan enprime lame nou an nan elefan. Epi li te yon gran tit jan sa a. Mwen se pè anpil nan nouvo televizyon mwen. Poukisa mwen se pè yo vire sa a Bagay sou yo ak sou ou ta ka twò. Se konsa, nou ap kounye a nan la pwen nan semès la, tou, kote menm si ou gen mwendr an nan konpreyansyon nan ki jan entènèt la ap travay, ak HTTP, ak sekirite, bagay sa yo tankou sa a ta dwe kòmanse trape je ou. Men, tou, ou pral konprann si wi ou non bagay sa yo se oswa yo pa menas vrè. Se konsa, mwen te pran yon kèk Ekstrè soti nan atik sa a isit la. Ak istwa a se jan sa a. Mwen se kounye a mèt kay la nan yon nouvo televizyon entelijan, ki pwomès yo delivre difizyon miltimedya kontni, jwèt, app, medya sosyal, ak entènèt Navigasyon, o ak televizyon tou. Pwoblèm nan sèlman se ke mwen se kounye a pè yo sèvi ak li, di otè a. Ou ta dwe, tou, si ou li nan politik la vi prive 46 paj pou televizyon ou. Kantite lajan an nan done sa Kolekte bagay se stupéfiants. Li journaux kote, ki lè, ki jan, ak pou konbyen tan ou sèvi ak televizyon an. Li kouche swiv bonbon, kòm nou te diskite, ak alèt fèt yo detekte lè ou gen wè kontni an patikilye oswa yon mesaj imel patikilye si ou vle tcheke imel sou televizyon ou. Li anrejistre apps yo ou sèvi ak, sou sit entènèt yo ou vizite, ak fason ou kominike avèk kontni, fè tout sa via televizyon entelijan ou. Li te tou, creepier yet-- sa a, se mwen addition-- gen yon bati nan kamera ak rekonesans vizaj. Rezon ki se bay kontwòl jès pou televizyon an ak pèmèt ou antre nan pèsonalize kont lè l sèvi avèk figi ou. Sou tèt la, imaj yo se sove sou televizyon a olye pou yo Uploaded nan yon sèvè rèstriktirasyon. Sou anba kote an, entènèt la koneksyon fè televizyon an antye vilnerab a entru ki moun ki te demontre kapasite nan yo pran konplete kontwòl sou machin nan. Plis boulvèsan, tankou si ki pa te entelijan ase, se mikwofòn la. TV a gen anpil yon vwa rekonesans karakteristik ki pèmèt telespektatè yo kontwole ekran an ak kòmandman vwa. Men, sèvis la vini ak yon avètisman olye menasan. Tanpri dwe okouran ke si mo pale ou gen ladan yo pèsonèl oswa lòt sansib enfòmasyon, ke enfòmasyon yo pral nan mitan done yo pran epi ki transmèt nan yon twazyèm pati. Got sa? pa di pèsonèl oswa sansib bagay nan devan televizyon ou. Se konsa, sa a se aktyèlman pou reyèl. Lè li nan difisil pa wè si ou ale nan Pi bon Achte oswa tankou an pou televizyon jou sa yo. Yo ap tout entelijan nan kèk fason. Apre sa, yo ap vin pi entelijan ak creepier. Apre sa, yo ap tou senpleman kolekte done nan fason ki nou te pale sou ak Lè sa a transfere li via HTTP oswa kèk lòt pwotokòl nan kèk sèvè. Se konsa, sa a te nan yon atik nan yon plezi nan sit entènèt sa a sou entènèt isit la, ki te pale osijè de yon ensèk patikilye oswa fè erè Kòd ke nou ka aktyèlman mare nan diskisyon semèn pase a. Se konsa, gran tit sa a te kòm sa a, istwa a ale isit la, Josh Breckman te travay pou yon konpayi ki te ateri yon kontra yo devlope yon jesyon kontni sistèm, oswa CMS ke yo ap rele, pou yon sit entènèt gouvènman jistis gwo. Anpil nan pwojè a ki enplike devlope yon sistèm jesyon kontni se konsa ke anplwaye ta dwe kapab bati epi kenbe janm chanje nan kontni pou sit yo. Bagay sa yo te ale trè byen pou yon kèk jou apre ou fin ale viv. Men, sou jou sis, bagay sa yo te ale pa konsa pou sa byen. Tout moun nan kontni an sou la te sit entènèt konplètman disparèt. Epi tout paj mennen nan default la, tanpri antre paj entènèt kontni. Whoops. Josh te rele nan mennen ankèt, ak remake ke youn patikilyèman anbarasman adrès ekstèn IP te gen ale nan ak efase tout nan kontni an sou sistèm nan. Adrès la IP pa t 'fè pati nan kèk Bent HACKER lòt bò dlo sou detwi itil enfòmasyon gouvènman an. Li rezoud a googlebot.com, Anpil pwòp sit entènèt rale Spider Google la. Whoops. Apre yon ti jan nan rechèch ak eskalade alantou sa yo jwenn yon backup noncorrupt, Josh te jwenn pwoblèm nan. Te gen yon itilizatè kopye ak kopye kèk kontni soti nan yon paj nan yon lòt, ki gen ladan yon Edit ipèrtèkst edite kontni an sou paj la. Nòmalman sa a pa ta dwe yon pwoblèm depi yon itilizatè deyò ta bezwen antre nan yon non ak modpas, men sistèm nan otantifikasyon CMS, sistèm nan login, pa t 'pran an kont sofistike ranje andedan teknik nan Google Spider. Whoops. Kòm li vire soti, Google Spider pa sèvi ak bonbon, ki vle di ke li kapab fasil kontoune yon chèk pou la ki louvri sesyon sou seri bonbon yo dwe fo. Li te tou pa peye atansyon sou JavaScript, ki ta nòmalman pouse ak redireksyon itilizatè ki pa louvri sesyon an. Li sepandan swiv chak HyperLink sou chak paj li jwenn, ki gen ladan moun ki gen Efase Page nan tit la. Whoops. Se konsa, sa sa vle di nan plis tèm teknik men san patipri aksesib? Li jis vle di ke nan tout sit entènèt yo, yo te gen URL pa kontrèman ak yon sèl sa a ki ou ta ka wè nan pwoblèm mete sèt. Rapèl nan pwoblèm mete sèt oswa ou konnen nan pwoblèm mete sèt ke w ap defye, pami lòt bagay, nan vann aksyon sou non nan itilizatè. Men, mete ann aplikasyon ke karakteristik nan chemen nan jwenn atravè lyen nan itilizatè ou koòdone, pwobableman pa lide a intélijant paske si sit ou se yon jan kanmenm aksesib swa pa yon moun ki moun ki nan klike alantou oswa achte yon bot tankou Google la oswa yon Spider menm jan yo ap rele sa se sèlman rale entènèt la, nan ap eseye endèks entènèt la kòm yon motè rechèch, yo te kapab trè fasil frape atravè jwenn sa a kalite URL. Epi sa a, fonksyonèl ekivalan a, nan ka sa a, vann tout aksyon nan Google. Koulye a, franchman, li nan konplètman so ki CMS nan itilize JavaScript ak bonbon aplike sistèm login li yo epi yo pa fè sa bò sèvè, kòm ou nèg fè epi yo pral nan pset 7-- gen nan yon login.php file-- toujou, toujou, toujou sekirite yo ta dwe fè sou bò a sèvè, pa sou bò a kliyan paske, tankou sa a Atik sijere epi ou ta ka tèt ou wè nan kèk pwen, li se trivial pou yon itilizatè, bon oubyen move, a jis fèmen JavaScript nou pa mansyone bonbon. Se konsa, se sa ki WTF chak jou ou. Genyen yon sèl plis, ki se jis kalite pè, se konsa mwen pral mansyone li si sèlman kòm yon leson lavi. Chak fwa ou sèvi ak yon aplikasyon rele tankou Snapchat oswa tankou an ki di foto sa yo sèlman pase pou senk segonn, dis segond, oswa etajèr. Yo ap efemèr Sa se absoliman pa ka a. Menm jan ak pa gen okenn fason, nimerik, aplike kèk fòm videyo, oswa imaj, oswa textuelle pataje sa yo ke yon moun k ap resevwa sou fen nan lòt pa ka yon jan kanmenm konsève pou done yo. Nan fason ki pi nayif, yon moun te kapab pran telefòn yo. Apre sa, yo genyen yon dezyèm fenèt 10 pandan y ap gade nan kèk menen jis pran kèk lòt telefòn ak foto l ', evidamman. Se konsa, ou ka prezève yon bagay nimerik ki fason. Gen kèk nan ou konnen ki jan yo pran Ekran sou telefòn ou. An reyalite, si ou pa konnen sa a, reyalize ke omwen Snapchat, e mwen panse lòt aplikasyon pou jou sa yo, omwen fè w konnen si nan moun k ap resevwa gen aktyèlman pran yon D 'nan imaj ou. Men, pi mal ankò, sa a te snappening a, kòm yon moun envante li dènyèman, kote kèk 100,000 mèt te lage nan sa ki rele yon dosye torrent sou sit entènèt divès kalite finalman. Ak sa yo ki genyen yon pakèt antye nan mesaj prive ak posts. Li sanble pi fò nan yo Benign, Se konsa, pa sa ou ta ka atann. Men, paske se moun ki te gen itilize yon sit entènèt twazyèm pati, antre nan ak Snapchat yo non itilizatè ak modpas ak Lè sa a ekonomize tout nan mèt yo sou sa a sit entènèt twazyèm pati. Epi li te ke twazyèm pati sit entènèt ki te rache, ki jis vle di ke yon moun kalkile konnen kouman jwenn tout 100,000 plis nan imaj sa yo nan pwòp yo kondwi difisil pou pataje ki vin apre. Franchman, isit la tou, li nan sòt nan so ki Snapchat se aplike nan yon fason ke yon twazyèm pati ka sòt nan segman aks dèz done yo e ke li pa nan mare nan ou pwòp aplikasyon kouri sou telefòn nan. Men, isit la, tou, reyalize ke sa yo bagay sa yo pa ta dwe trape ou pa sipriz, oswa omwen gen yo ta dwe gen yon leson lavi nan isit la. Si w ta renmen teknik la detay, ale nan ki URL gen sa a, se nan glisad a jodi a. Tout dwa, nenpòt kesyon sou leson lavi jodi a nan CS? Vire ki la. Nenpòt bagay nan tout? Nenpòt bagay nan tout? Mwen te gen yon anpil nan moun tcheke Snapchat yo oswa yon bagay kounye a. Tout dwa, se konsa SQL, Estriktire rekèt Lang. Se pou yo vlope sa a. Epi tou, menm si nou ap jis grate sifas la nan sa a lang, nou pral ba ou ase nan lang lan nan fòm lan nan pset 7 pou ke ou ka atake kèk san patipri komen fonctionnalités. Men mwen reyalize gen yon koup bagay sa yo nou pa mande pou ou, men yo ap ale nan dwe enpòtan vini pwojè final ak sètènman vini fè aktyèl sit ak itilizatè aktyèl se desizyon sa a konsepsyon. Li sanble ke nan yon baz done miskl, ou gen grap nan chwa ki genyen tankou kalite yo done pou kolòn ou ak lòt bagay, men ou yo te genyen tou chwa a nan yon depo sa yo rele motè pou tout moun nan done ou a, sòt nan nan sistèm dosye, si w ap yo konnen yo, pou tout moun nan done ou. Ki sa ki fòma se li finalman ki estoke nan? Ak sa ki pi komen an, petèt, te gen MyiSAM ak InnoDB, tèm teknik ke nou pral pran swen sou sèlman nan limit ki ke yon moun gen ak youn pa gen karakteristik sa a. Sipoze ke ou gen yon ti kras dòtwa frijidè. Epi ta kwè ke ou menm ak ou kolokasyon, ki moun ki pataje frijidè sa a, yo se reyèlman fanatik nan lèt di. Lè sa a se, an reyalite, ki jan la te istwa te di m 'fason tounen nan jou a lè m 'te pran yon kou rele CS 161 Operating Systems, ki Menm jan an tou eksplore sijè sa a. Se konsa, ou te gen frijidè sa a. W ap soti nan lèt. Epi ou vin lakay ou, kolokasyon ou a toujou nan klas oswa kèlkeswa sa, epi ou deside, mwen pral ale deyò epi yo jwenn kèk lèt. Se konsa, ou fèmen frijidè a, prisons chanm nan dòtwa, ale lòtbò lari a CVS oubyen nenpòt kote, epi pou yo jwenn nan liy yo achte kèk lèt. Pandan se tan, kolokasyon ou vin lakay ou soti nan klas la, rantre nan sal la dòtwa, ouvè frijidè a, tou reyalize ooph, nou ap soti nan lèt. Se konsa, li oswa li te fèmen nan frijidè ak Lè sa a k ap pase pou yo ale nan lòt CVS a, ki k ap pase yo dwe yon blòk lwen lòt CVS yo nan kare la, ak vin nan liy gen jwenn kèk lèt. Koulye a, nan kou, yon kèk minit apre, ou tou de jwenn tounen, ak pi move a nan tout posib rezilta te rive fèt. Tou de nan nou gen lèt. Epi ou pa fè sa vrèman tankou lèt ki anpil. Se konsa, youn nan yo se jis ale nan kòwonp nan kèk pwen. Se konsa, kounye a ou gen yon kantite lajan twòp nan lèt nan frijidè a tout paske poukisa? [Fèbl] DAVID Malan: Yeah, ou pa t ' yon jan kanmenm kominike youn ak lòt ke ou te resevwa lèt. Se konsa, nan pi senp la fason nan mond lan imen, ki jan ou ta ka evite sa a komik senaryo sa yo soti nan pase ke ou sèlman fini ak yon sèl. Tèks yo, repons lan se wi bon. Men, ki jan lòt bagay? Post-li nòt. DAVID Malan: Yon Post-li nòt. Nenpòt fòm kominikasyon ki di kolokasyon ou pa antre nan frijidè a pou lèt. Mwen pral ale réapprovisionnement sou pwòp mwen. Se konsa, ou yon jan kanmenm bezwen fèmen resous sa a. Se konsa, nou ka fè sa nou kapab this-- kalite ruin istwa a ak vire nan yon istwa CS kijan panse a sa a kòm jis tankou yon varyab, ki se estoke kèk valè. E yo gen dwa kounye a, nan valè nan lèt se zewo, ki ou pa vle ou kolokasyon yo enspekte varyab sa ak Lè sa a pran yon desizyon l 'oswa tèt li baze sou eta a nan varyab sa si w ap nan pwosesis la nan chanje eta a nan varyab sa a. Se konsa yonn nan liy yo nan SQL ke nou ba ou nan pset 7 spesifikasyon se yon sèl sa a isit la. Apre sa, nou pa depanse yon gwo kantite tan pale sou li. Men, li vire soti, si ou yo ap eseye achte kèk aksyon nan CS50 finans ki ou deja genyen kèk aksyon nan, ou vle kapab fè yon nimewo de bagay sa yo imedyatman yo ansanm. Ou vle pou kapab efektivman, sou yon nivo segondè yo, tcheke tout dwa, si mwen vle yo achte plis aksyon nan gratis, nou nan stock peni pale sou nan espèk a, Mwen vle premye chèk konbyen aksyon m 'genyen. Epi ta kwè li nan senk. Epi ta kwè mwen vle achte 10 plis, mwen finalman vle gen 15 aksyon nan stock. Se konsa, mwen gen mande de kesyon. Ki sa ki nan eta a nan varyab la? Ki sa ki nan eta a nan ranje a? Konbyen aksyon mwen genyen kounye a? Lè sa a, ou vle ale pi devan epi mete ajou li. Se konsa, sa a, se analòg la nan lèt nan ke ou tcheke ranje a, ak Lè sa a ou vle mete li paske si ou vle achte 10 aksyon, ou pa ta vle chanje ranje a nan 10, ou vle chanje li nan 5 plis 10 oswa, nan kou, 15. Sa a liy nan kòd asire ke sa yo de lide konseptyèl ekspresyon rive ansanm oswa pa nan tout. Pa gen moun ki, ki gen ladan kèk lòt itilizatè ki moun ki nan louvri sesyon an sou sit wèb la menm, ka yon jan kanmenm entèwonp kont kouran an nan ranje a ak jour an nan ranje a, nan chwazi epi mete ajou a si ou pral. Ak sentaks la se pa super evidan, men liy yon sèl sa a, depi lontan se li se, asire ke de operasyon sa yo tcheke varyab la oswa tcheke ranje a epi mete ajou ranje a rive atomically. Oh, isit la nou ale ankò. Mesaj tèks sou telefòn mwen. Se konsa, kite a fè sa a yon ti kras pi plis konkrè. Sipoze ke ou pa ap mete ann aplikasyon yon frijidè, epi ou pa ap mete ann aplikasyon PSet 7 men yon bank aktyèl, oswa yon ATM, yon Otomatik Teller Machin, annakò ak sa ou yon jan kanmenm vle pou kapab pèmèt itilizatè yo transfere lajan soti nan yon kont nan yon lòt. OK, kwoke sou. Mwen pral bèbè sa a kounye a, di ou mèsi. Se konsa, nou vle pou avanse pou lajan soti nan yon nimewo kont nan yon kont diferan Nimewo, espesyalman $ 100. Se konsa, sa a se kalite yon abitrè egzanp, annakò ak sa nou la a, ATM lan, ta ka vle egzekite de SQL demann, fè soustraksyon soti nan yon kont, epi ajoute nan lòt kont lan. Men, ou vle asire ke sa yo de liy tou de rive oswa ou pa nan tout. Ou pa vle yon bagay ap resevwa koupe. Ou pa fè sa kèk move nèg entelijan yon jan kanmenm kanpe nan Bank of America ak de ATM nan devan nan l 'ak yon jan kanmenm sòt de sezisman nan la kòmande nan menm tan an, èspere ke ap eseye dedwi $ 200 olye pou nan $ 100 ak sèlman li te gen $ 100 kredite. Nan ti bout tan, ou vle sa a yo konpòte egzakteman jan ou atann. Ak wout la ou fè sa a nan SQL baz done se ou vlope l 'nan sa ki nan rele yon tranzaksyon. Literalman nan SQL, ou ka rele CS50 nan fonksyon rechèch ak quote unquote kòmansman tranzaksyon. Lè sa a, ou ka egzekite nenpòt ki kantite nan demann SQL ki vini apre, men pa youn nan yo pran efè sou baz done a jiskaske ou rele sijè rechèch quote unquote komèt, si ankò lè l sèvi avèk PHP. Ak nan fason sa a, ou ka asire ke menm si ou gen 1,000 itilizatè tout frape baz done ou an menm tan an, SQL pral pwomèt ke sa yo de demann yo pral aplike yon sèl dwa apre lòt la. Se konsa, ou pa fini ak excès de lèt oswa kantite lajan an sa ki mal, finalman, nan lajan. Se konsa, kenbe sa a nan tèt ou, pa tèlman pou pset 7 men pou pwojè final si w ap aktyèlman ap eseye pou avanse pou pi alantou done atravè tab menm jan ou ta ka isit la. Men, petèt menm ki pi senp ak plis evidan ak konprann ak yon egzanp se yon sèl sa a isit la. Men, yon moun par nou sou sa a jis lòt jou a lè l 'wè yon bagay ki sanble sou entènèt. Se konsa, nan konesans mwen, sistèm nan PIN se pa vilnerab a atak sa a. Apre sa, mwen pa gen okenn lide si li menm itilizasyon baz done a SQL anba kapo a. Men, kite a sèvi ak li pou dedomajman pou la nan diskisyon. Isit la nan ekran an ki Jan yo gen tandans Harvard wè lè antre nan ak yo Nimewo ID Harvard ak peny yo. Epi ta kwè ke sistèm lan te PIN aplike nan PHP ak miskl ak yon baz done a, kòd a ke yon moun ane ta ka yo te ekri de sa ta ka gade tankou sa a. Premyèman, deklare yon varyab rele non itilizatè. Ak jis jwenn ki soti nan supèrglobal la POST. Lè sa a, jwenn yon lòt varyab rele modpas ak fè menm bagay la. Lè sa a, jis egzekite sa a sijè rechèch lontan isit la, chwazi zetwal soti nan itilizatè ki kote non itilizatè egal sa yo ak sa ak modpas egal sa yo ak sa yo. Remake Curly a aparèy òtopedik mwen te itilize isit la jis vle di PHP, ale pi devan epi ranplase valè a nan sa yo de varyab la a. Yo ap pa estrikteman nesesè, men yo gen tandans pou fè pou evite erè sentaks sibtil. Se konsa, sa a sanble konplètman kòrèk nan premye gade. Epi li se. Ou te kapab aplike nan sistèm PIN nan fason sa. Men, si ke yon super lespri ak move elèv D 'sa a kòm peny li. Se konsa, mwen te retire bal la siy isit la nan Metye moute a, epi mwen te aktyèlman te revele sa li oswa li te ta ka sezisman. Lè li nan yon ti kras etranj. Men, sa ki sote soti nan ou nan potansyèlman inkyétant sou D 'itilizatè a, menm si ou pa gen okenn lide ki sa yon atak piki SQL vle di. Poukisa sa a gade yon ti kras bagay ki rete kèsyonab? Ki sa ki nan sa? [Fèbl] DAVID Malan: oswa a se yon ti kras sispèk. An reyalite, sa a, se yon mo kle soti nan SQL. Se konsa, ki pa anonse byen. Lefèt ke gen nan tout sa yo quotes sèl there-- an reyalite, youn nan pi fasil la fason yo kraze kèk baz done se lè ou tape nan yon non tankou O'Reilly ki gen yon apostwòf nan li paske si moun nan ki te ekri kòd a dèyè sèn nan pa pran an kont ke gen ta kapab quotes sèl nan yon itilizatè a D ', ak li oswa li te ap itilize ap itilize quotes sèl nan kòd yo, move bagay ka rive. An reyalite, pi mal ankò, konsidere sa a. Si sa a te ankò kòd la ke yon moun nan ane Harvard Anons sa pibliye depi te ekri pou pikèt la sistèm, remake sa ki nan sou jwenn ranplase pou non itilizatè ak modpas si itilizatè a kalite nan ankò skroob kòm non itilizatè yo ak Lè sa a yon sèl, de, twa, kat, senk, quote oswa quote unquote yon sèl egal site yon sèl. Ak Avi sa ki nan kle isit la se itilizatè a pa te te kòmanse modpas yo oswa PIN yo ak yon quote. Apre sa, yo pa gen te fini li ak yon quote paske li oswa li te se an konsideran ke si la pwogramè pa t 'konsa byen file, yo pral gen moun ki quotes sèl nan kòd yo. Se konsa, isit la nan kòd la. Epi sibstitisyon a ki ta ka kounye a rive se sa a. Apre sa, mwen te souliye sa te itilizatè a tape nan. Se konsa, anvan, apre yo fin. Ak Avi sa ki nan léjèrman inkyétant kounye a apeprè mwatye nan dwa nan sa a kòd SQL? Li se yon ti kras pi plis konplèks, Byensir, pase demann sa yo nou te wè. Men, sa a pa kapab pètèt gen yon bon bagay si ou se li di chwazi zetwal, ki se chwazi tout bagay soti nan tab itilizatè a la kote non itilizatè egal skroob ak modpas egal yon sèl, de, twa, kat, senk oswa yon sèl egal yon sèl. Ki sa ki nan enplikasyon a ki lojik nan ki sot pase a kloz prezimableman? Se jis nan toujou vrè. Epi paske nou te sòt de dvine oswa kalkile konnen pa esè ak erè ki pwogramè a ki te ekri sa a kòd pa t ' antisipe yon moun moun oubyen move sezisman nan quotes sèl kòm byen, nou ka syntactically ranpli rechèch la SQL ak yon bagay absurde men yon bagay ki se syntactically kòrèk ki toujou evalye vre. Se konsa, si se sa a kòd ki te itilize yo reponn kesyon an vre oubyen fo yo ta dwe dwe itilizatè sa a pèmèt yo pase a, repons se toujou aparamman pral yo dwe vre paske sa a se toujou pral yo ka chwazi yon bagay nan men baz done a paske yon sèl nan kou toujou egal yon sèl. Se konsa, sa ki nan solisyon an? Oke nan pset 7, nou aktyèlman evite sa a tout ansanm. Nou ba ou yon fonksyon rechèch, epi nou ankouraje w sèvi ak mak kesyon kòm placeholders, menm jan nan Lespri Bondye a% s printf a, men sa ki nan kle sou mak yo kesyon isit la se si ou aktyèlman li nan functions.php, kote nou an se fonksyon rechèch aplike, moun mak kesyon yo chape, annakò ak sa anyen ki kapab yon danje tankou se yon quote yon sèl vire nan yon sèl chape quote. Se konsa, sa a se sa ki nan k ap fèt vreman si ou itilize fonksyon rechèch CS50 a oswa nenpòt ki kantite nan twazyèm pati bibliyotèk gratis ki fè menm bagay la. pa gen pwoblèm nan ka sa a, nan vèt, si gen itilizatè a tape nan yon quote yon sèl paske rechèch la fonksyon ki nou te ekri se pral ajoute backslashes anvan nenpòt ki sa yo quote danjere. Se konsa, sa a se pa, nan reyalite, ap pase yo dwe legi. Sa a se tankou sezisman nan yon fou kap modpas sa a, se, nan kou, pa pral yo dwe aktyèl modpas skroob la. Se konsa, Takeaway a pou CS50 se youn, absoliman toujou sèvi ak yon bagay tankou fonksyon rechèch CS50 nan oswa nan bibliyotèk ki kache, ki k ap pase yo dwe rele apelasyon. Men, pa janm, pa janm, pa janm fè kòd tankou sa a san yo pa chape oswa foubi menm jan yo di entrain ou yo. Epi ou pral nan kèk pwen pwobableman vini nan tout kèk sit entènèt tankou sa a. An reyalite, li sanble yo dwe ka a tankou nan ayopò yo ak otèl nan kote kote yo gen gratis Wi-Fi aksè ki di ou gen konekte yo, sit entènèt sa yo yo toujou oribleman aplike. Se konsa, yon sòt de plezi nan fè egzèsis nan kay la, pa pou rezon move oswa plis nan yon plezi sou wout la fè egzèsis, se yo jis tape yon apostwòf, yon quote yon sèl, nan yon fòm sou kèk sit entènèt ak wè sa ki rive. Men, si sèvè a aksidan oswa bay ou kèk kalite mesaj erè, li ka trè byen se ki yon moun pa te antisipe sa a. Lè sa a, ou ta dwe alète apwopriye a otorite ak kontinye pa gen plis. Se konsa, kounye a ou ta dwe èspere ke mesye konprann yon ti jan pi plis imè geek isit la. [Ri] DAVID Malan: Ou konnen ou se yon geek. Pou pwochen plizyè nan ane, ou pral sonje ki moun ki ti kras Tablo Bobby se paske nan desen sa a isit la. Se konsa, kenbe sa nan tèt ou kòm nou kontèks switch yon dènye tan jodi a JavaScript. Nou te depanse relativman ti kras tan sou sentaks la nan PHP paske li la aktyèlman super menm jan ak C. Ak joliman ase, JavaScript twò se super ki sanble ak sentaks C a kòm byen ke nou pral wè nan jis yon ti moman epi kòm nou pral wè pita semèn sa a an patikilye. Ki sa ou kapab fè avèk lang sa a, menm si, se tout plis la pwisan, sitou ak APIs. Men, anvan yon toune rapid. Se konsa, yon sèl, nan JavaScript, gen nan pa gen okenn fonksyon prensipal yo, ki se bèl. Menm jan ak PHP, ou ka jis ekri kòd. Kondisyon gade tankou sa a. Ak ekspresyon Boolean ta ka gade tankou sa a oswa tankou sa a. Switch egziste, epi yo ta ka gade tankou sa a. Kat pasan gade tankou sa a. Pandan y ap pasan gade tankou sa a. Èske whiles gade tankou sa a. Lè sa a, ranje gade tankou sa a, trè menm jan ak PHP. Men, remake, ki nan JavaScript ou deklare yon varyab pa avèk yon dola siyen, pa avèk yon kalite done, men literalman lè li di var pou varyab anvan li. Li twò se blesi tape nan ke li genyen kalite, men ou pa klèman deklare yo. Lè sa a, yon fisèl, pou egzanp, ta ka gade tankou sa a, ki fisèl yo te rele nan nan ka sa a. Lè sa a, yon objè. Ak sa yo nou pral wè plis anvan lontan. Epi yon objè se petèt youn nan la pi souvan wè done estrikti nan yon JavaScript ki baze pwogram paske li pèmèt ou asosye abitrè valè kle pè jis tankou ranje asosyatif PHP a ak jis tankou pwòp tab regle ou oswa eseye jan nou aplike yon kèk semèn tounen. Se konsa, kite a aktyèlman wè sa ki nou ka fè ak JavaScript. Ak nan patikilye, sa a se yon lis lesiv nan karakteristik ki navigatè gen sa pèmèt nou zen JavaScript nan yon sit entènèt nan fason ki anba la a. JavaScript se souvan yo itilize kòm yon kliyan bò lang scripting. Li pa nan konpile. Li twò se entèprete. Men, kontrèman ak PHP, ki te kouri sou sèvè a, nan sèvè wèb la, oswa andedan gwo twou san fon nan la kliyan, JavaScript se diferan nan ke li anjeneral kouri nan navigatè a. Se konsa, nenpòt Kòd JavaScript ou kòmanse ekri pou 8 PSet, oswa pwojè final ou a, oswa nan mond reyèl la se jeneralman ale yo dwe sove sou sèvè a, absoliman nan yon HTML dot dot oswa JS pou JavaScript dosye. Men, navigatè a ki pral nan download ki JavaScript Kòd egzanp pwòp ou a Chrome, oswa IE, oswa Firefox, oswa kèlkeswa sa. Ak kòd la se aktyèlman pral jwenn egzekite andedan nan navigatè pwòp ou yo. Jis fè sa-a plis reyèl, kite a wè sa a nan fòm konkrè. Nou pa gen okenn lide ki sa Kòd sa a fè san yo pa reyèlman lekti atravè li. Men, kite m 'ale nan Facebook.com san yo pa antre nan. Kite m 'ale nan Enspekte Eleman epi ale nan, kite la di, Rezo ak Reload paj la. Epitou, n ap see-- kite m 'chanjman nan Reload Page jwenn tout demann yo nan nouvo. Ak anpil premye a dosye mwen wè se CSS, CSS. Isit la nan premye a JavaScript dosye, e mwen gen okenn lide ki sa sa a fè, men isit la se kèk nan kòd la JavaScript ki kondui Facebook. Li pa menm reyèlman ki revele rale nan. Li nan toujou menm jan absurde. Men, ou pral wè menm desann anba a, gen nan menm plis nan dosye JavaScript sa yo. Whoops. Sa se yon ping. Ann al desann yon ti kras pi lwen, pi lwen, pi lwen. Genyen yon sèl. Genyen yon sèl. Genyen yon sèl. Se konsa, menm si Facebook, dèyè a sèn, ki ekri nan pati nan PHP ak Facebook a vèsyon pwòp ladan l ', gen nan yon kantite lajan gwo JavaScript. An reyalite, nenpòt nan la diskite ou fè sou Facebook, nenpòt nan dènye yo aliye delè ki rive nan tan reyèl, nan tout sa se kondwi pa JavaScript. Yeah? ODYANS: Mwen pa si si sa a se Facebook, men mwen te panse ke Facebook devlope pwòp Kòd ak lang nan-kay yo? DAVID Malan: Yo te fè sa. Se konsa, Se poutèt sa mwen di yon divèjans nan PHP rele Hip Hop yo ke yo aktyèlman te ajoute karakteristik nan tankou ke lè Mak premye aplike Facebook, li te ekri nan PHP. Ak ki sòt de te rete sòt nan nan lang fen devan yo ke yo itilize pou anpil nan kodaj yo, men li pa te gen yon lang sa a, se balans patikilyèman byen dè milya nan moun. Se konsa, yo gen te ajoute pwòp yo amelyorasyon dèyè sèn nan. Apre sa, yo sèvi ak nenpòt ki kantite nan lòt lang pou plizyè moso nan enfrastrikti yo. Se konsa, repons lan se wi, li nan yon divèjans nan ki sa nou kounye a konnen kòm PHP. Se konsa, kite a pran yon gade nan yon koup nan egzanp nan ki jan nou ta ka sèvi ak JavaScript isit la. Nan kòd sous la jodi a, nou gen yon pakèt moun sou dosye, premye a nan yo ki, kite a rele Dom zewo. Se konsa, Dom zewo sanble jan sa a. Kite m 'ale nan anyè sa a epi louvri moute domzero.html, tèt la nan ki te gen yon kalite doc deklarasyon, li di isit la vini HTML 5. Epi, koulye a isit la nan yon tag HTML. Isit la nan tag nan tèt. Ak isit la nan sa ki nouvo jodi a. Nou kounye a gen yon tag script andedan nan tèt la nan paj la. Lè sa a aparamman fè trè ti kras, men avi ke mwen te defini yon script, yon JavaScript. Epi kòm yon sou kote, depi sa a se yon miskonsepsyon komen, JavaScript gen absoliman anyen fè ak Java, lang nan ke kèk nan ou ta ka te aprann nan APCs. Li te plis nan yon maketing Bagay pase anyen, monte coattails yo nan Java ane de sa. Men, JavaScript, anyen fè ak Java, jis Menm jan an tou, ak annoyingly, konfizyon yo te rele. Se konsa, isit la se kouman ou deklare yon fonksyon nan JavaScript, literalman di fonksyon, Lè sa a, non an nan fonksyon an, Lè sa a, nenpòt agiman li ta ka pran, jis tankou nan PHP. Vire soti nan JavaScript, youn nan pi plis nan fonksyon anmèdan ki egziste se Avètisman. Sa a se yon fenèt ti kras ki pral pòp leve, li alète ou nan kèk moso nan enfòmasyon. Li nan jeneralman dezaprouve sou li. Men, nou pral sèvi ak li kòm nou an premye fè egzèsis isit la. Remake yon karakteristik kèk nan JavaScript. Quotes sèl ak quotes doub pa aktyèlman gen pwoblèm ankò. Quotes sèl ak doub quotes ka echanje, Lè nou konsidere ke nan C, ou gen yo sèvi quotes doub pou strings, epi ou gen de sèl site pou charaktèr. Nan mond lan JavaScript, anpil moun, pi fò moun sèvi ak quotes sèl alantou strings jis paske li nan yon bagay stylistic. Men, sa ki nan operatè a plis isit la, ki nou pa te wè anvan? ODYANS: seri. DAVID Malan: seri. Se konsa, C pa menm gen sa a. PHP gen operatè a dot, ki fè sa ki sa a. JavaScript gen operatè a plis, ki konfizyon se jis tankou Java. Kounye a ki sa k ap pase sou isit la? Se konsa, isit la nan kote yon debaz konpreyansyon yo genyen sou foto sa a nou jete moute yon koup jou de sa vin antre nan jwe. Sonje lè nou te gen yon senp vèsyon an yon HTML page-- li jis te di, alo nan lemonn. Lè sa a, nou te trase yon pye bwa a dwat a, ki te gen yon pakèt moun sou rektang ak liy konekte yo tankou yon pyebwa fanmi yo. Se konsa, sa a, se sa yo rele Dom la oswa Dokiman objè ki gen konpòtman egzanplè. Epi li vire soti ke ou kapab jwenn aksè nan rektang nan ki pye bwa ak sentaks tankou sa ki annapre yo. Ou literalman di dokiman, ki se yon espesyal varyab mondyal nan yon JavaScript pwogram ki gen yon fonksyon asosye ak li ke ou kapab jwenn aksè nan menm jan ak yon struct, men ou tou senpleman di dot ak Lè sa a non fonksyon an, jwenn eleman pa ID. Eleman nan mwen vle jwenn se aparamman site non unquote. Lè sa a, mwen vle jwenn valè li yo. Koulye a, nou ap vin devan yo nan tèt nou. Mwen pa menm asire ki sa tout sa a se sou yo. Se pou yo vit pou pi devan pou HTML a sou paj la, ki se super senp. Avi ke mwen te defini yon fòm desann isit la. Avi mwen te bay li yon inik ID, menm si nou pa te itilize atribi sa a anvan. Men, sa a egziste nan HTML. Ou ka inikman idantifye kèk moso nan HTML ak yon idantifyan tankou sa a. Avi kounye a this-- vire soti HTML sipòte, pou chak ke lis lesiv yon ti moman de sa, yon antye pakèt moun sou pòtè evènman. Lè sa a kap okipe-evènman di sou soumèt. Sou soumèt a itilizatè a sa a fòm, rele Kòd sa a. Ak kòd la ki k ap pase yo dwe rele oswa egzekite se egzakteman sa a, grèk la fonksyon ki te swiv pa retounen fo. Tout lòt bagay yo ta dwe dwe trè yo konnen yo. Isit la se yon D 'nan tèks kalite, ki gen ID, nan ka sa a, se pral fè non. Nou pa gen yon non atribi aktyèl time-- sa a ak yon bouton soumèt. Se konsa, paj la ki kapab lakòz sanble tankou sa a. Ak konpòtman an ki kapab lakòz, ou pral wè, sanble tankou sa a. Paj la li gen tout pouvwa a lokal yo di, alo David, diman yon estetik plezi fason yo voye bonjou pou yon itilizatè. Men, sa ki aktyèlman ale sou? Oke, konsidere sa sa a se. Sa a se yon jaden tèks. Ak selon a HTML isit la, mwen te bay li yon idantifyan inik rele quote Non unquote. Pandan se tan, mwen te di lè itilizatè a soumèt fòm sa a pa frape Mete oswa klike soumèt nan bouton, rele fonksyon an rele Di ak Lè sa a retounen fo. Se pou nou konsidere moun ki nan do. Avi lè mwen klike sou soumèt a, URL nan paj sa a pa chanje. Icon navigatè a pa t 'kòmanse bondi. Mwen pa t 'ale nenpòt kote, epi ki nan literalman paske mwen te di retounen fo. Retounen Fo sikui kout oswa arè konpòtman an default nan yon fòm. Se konsa, ki Lè sa a, kite nou ak yon sèl sa a final kesyon. Ki sa ki Di fè? Oke, Di aparamman rele yon fonksyon rele Alert, pase nan yon sèl lontan agiman sa a, se rezilta a nan konkatenan ansanm yon pakèt moun sou chèn, alo espas vigil, Lè sa a, tou sa sa a tounen lakay la. Se konsa, dokiman, se tankou yon mondyal varyab ak sa yo ki rasin nan ki pye bwa, rele yon fonksyon espesyal, otreman kounye a li te ye kòm yon metòd. Yon fonksyon sa a, se andedan nan yon varyab se rele yon metòd olye pou yo yon fonksyon. Se konsa, jwenn eleman pa ID. Ki sa ki eleman ou vle jwenn pa ID li yo? Site non unquote ak Lè sa a, espesyalman apresye. Se konsa, nan lòt mo, ki tou senpleman Kòd jwenn jaden an tèks ki gen ID se non ak Lè sa a vin valè li yo. Se konsa, si m 'te chanje sa a epi di Davin olye pou yo David, , epi klike soumèt, kounye a nou gen yon salitasyon pou Davin. Tout dwa, se konsa tout bon ak bon. Men, kite a wè si nou ka fè sa a yon ti kras cleaner depi jis ekri kòd tankou sa a se jeneralman yo pral dezaprouve sou li. Sa a se pral fè yon gade scarier. Men, sa ki nan premye a diferans ke ou sonje isit la nan vèsyon sa-a san konte nan non chanje Dom youn? Ki sa ki struktural parèt diferan sou sa a kont lòt la? Yeah? ODYANS: Èske fòm lan sou tèt nan script la kounye a? DAVID Malan: Yeah, fòm la se sou tèt nan script la pou kèk rezon kirye. Se konsa, sa a, se premye bagay la ki sote soti nan m ', tou. Ak Erezman omwen, pati sa a se ki idantik. Se konsa, bagay la sèlman ki sanble yo dwe diferan se sa a. Se konsa, isit la nan sa ki nan pwòp sou JavaScript 2. Epi li fè li difisil yo konprann nan premye gade, espesyalman pou pwojè final si w ap chèche a echantiyon Kòd sou entènèt, men li klou desann nan kèk debaz karakteristik Massachusetts Institute of Technology. Isit la ankò se ke mondyal plase dokiman. Isit la ankò se metòd ki oswa fonksyon ki di jwenn eleman nan pa ID. Fwa sa a, mwen vle jwenn ID la te rele Demo. Ki kote se sa? Sa a aparamman dwa isit la, fòm nan tèt li. Epi, koulye a remake ke aparamman si mwen jwenn tounen ki ne soti nan pye bwa a ki reprezante fòm nan tèt li, se pa yon jaden tèks, li vire soti ke fòm, ki ne oswa rektang soti nan pye bwa a, gen sa nou ap rele yon pwopriyete, trè, trè, trè menm jan an nan Lespri Bondye a yon struct nan C. Se jis yon manm done andedan nan rektang sa a. Se konsa, mwen te gen fòm nan isit la, ak mwen atache, oswa mwen plase, Sou li yo soumèt kap okipe ou pito Nan soumèt pwopriyete fonksyon sa a. Lè sa a se, pa lwen, fou a Bagay konsa byen lwen syntactically. Li sanble nan JavaScript ak nan PHP, ak franchman pou ki matyè nan C, menm si nou pa fè l ', ou kapab ajoute nameless, anonim, oswa AKA LAMBDA fonksyon ki pa gen yon non men yo ka rele Alòske. Se konsa, sa m ap fè isit la se mwen plase sa a Sou soumèt pwopriyete, ki se andedan nan sa a ne nan pye bwa Dom mwen, yon fonksyon, konsèy fonksyon si ou pral. Ki fonksyon pa gen okenn non, men sa pa fè sa gen pwoblèm paske nou pral wè nan yon moman ki jan yo rele li. Lè yo rele fonksyon sa a, Kòd sa a vin egzekite, lè sa a fo yo voye li tounen jis tankou anvan. Men, remake sa m 'te fè. Nan pwen sa a nan la istwa, mwen gen yon fòm. Li nan te resevwa yon ID inik rele Demo. Desann isit la, mwen gen yon tag script ki ègzekutra Kòd sa a. Li tache nan ki ne nan pye bwa a yo li nan Sou soumèt pwopriyete sa a fonksyon isit la. Ak jis pa nati nan ki jan navigatè travay, lè m 'kounye a klike sou soumèt oswa frape Antre, ki fonksyon ki pral jwenn yo rele. Li pa bezwen yon non paske moun ki èk an gen sousi ki sa li yo rele. Tan la sèlman li nan tout tan tout tan pral jwenn rele se lè mwen soumèt fòm nan. Gen nan pa gen bezwen pou m ', pwomotè a imen, yo aktyèlman rele li nenpòt lòt kote. Koulye a, jis kòm yon kol, tankou si ki pa te lide koube ase, nou ka menm fè sa-a gade plis skre lè l sèvi avèk yon bibliyotèk super popilè rele jQuery. An reyalite jQuery ak JavaScript yo souvan conflated. Ak sa ki nou pral fè nan Mèkredi se kòmansman lè l sèvi avèk lang sa a ak bibliyotèk sa yo yo bati de pli zan pli asenkron ak aplikasyon pou dinamik tankou kat jeyografik ap resevwa aplikasyon pou, aplikasyon pou ki ajou Paj Web la nan byen tan, anpil tankou Facebook oswa Gchat fè, ak pa gen okenn ankò Fèmen tèt nou nan frape soumèt pa yon jwenn oswa jis pòs pou kont li. Se konsa, mwen pral wè ou nan Mèkredi. [Jwe mizik]