DAVID Malan: Tout dwa. Sa a se CS50, e sa se nan fen nèf semèn nan. Li te yon gwo toubouyon sou sot pase yo jou yo kèk. Ak pwoblèm pran sèt, si ou jenou gwo twou san fon nan li, reyalize gen nan byen yon ti jan nouvo sa a, se nan la. Men, kite a wè si nou pa ka moso tout bagay ansanm isit la yon ti tan anvan Lè sa a, veering wete nan ankò yon lòt direksyon ak wè ki lòt kote nou ka ale. Se konsa, konsa byen lwen, nou te pale osijè de HTML. Nou te pale osijè de CSS. Nou te pale osijè de PHP. Ou te te kòmanse fè eksperyans SQL. Jodi a, nou pral pale yon ti jan sou JavaScript. Men, ki jan fè tout moun sa yo disparate lang anfòm ansanm? Se konsa, nou te pale semèn pase a sou la nosyon ki gen yon sèvè. Se konsa, kite a jis trase rektang sa a kòm yon sèvè wèb isit la. Men, yon sèvè sit entènèt sèvi siman dosye. Se konsa, kèk nan moun ki dosye ka dosye HTML. Se konsa yonn nan bagay sa yo ke yon rezo sèvè ka krache soti ta kapab yon dosye ki nou pral jis trase tankou sa a ki gen kèk HTML. Se konsa, an tèm pwofàn la, ki sa ki HTML kite ou fè? ODYANS: Page gade bèl. DAVID Malan: OK, fè yon paj gade bèl, byenke Mwen panse mwen te pwouve ki otreman. Se konsa, HTML kite ou kouche soti nan paj struktural, epi li pèmèt ou sòt de estetik make moute yon paj, make moute estatik kontni, pou ke ou ka Lè sa a wè li ak yon navigatè entènèt. Men, sa a kle a. Li nan kontni estatik. Ou ekri li, ou sove li, ak lè sa a ou bato li. Men, sèvè wèb la Lè sa a, sèvi l 'moute nan vizitè ou. Men, nou stilize bagay sa yo lè l sèvi avèk yon diferan lang tout ansanm. Nou te kòmanse sèvi ak yon atribi style sou etikèt sèten. Men, atribi nan style se pou nou mete bagay sa yo tankou font size ak koulè. Men, ou te pwobableman te kòmanse dekouvri, oswa ou byento pral pou final pwojè ki kapab, men lòt pwopriyete ke ou ka itilize nan CSS. Se konsa, an tèm pwofàn la, ki sa ki reyèlman Lè sa a, CSS fè? Moun sa yo ki yo se jis egzanp ladan l '. Ki sa sa se pou ou fè sa HTML pa sanble yo soti nan sa ki nou te wè konsa byen lwen? ODYANS: Defini estil nan tèt ou. DAVID Malan: Esplike estil nan tèt ou. Se konsa, defini bagay sa yo tankou kou jan ou gen pouvwa rankontre, oswa inikman idantifye nœuds nan yon dokiman pou ke ou ka stilize yo. Men, plis espesyalman, mwen ta di ke CSS vrèman pèmèt ou pran nan bagay sa yo mil dènye e pèmèt ou presize anpil plis jisteman estetik yo, Lè nou konsidere ke HTML pou pati ki pi pèmèt ou estrikti paj ou yo. Men, menm si gen kèk défaut, tankou nou te wè tag a pou yon tag tit, ki apeprè pale fè bagay sa yo ak gwo karaktè fonse. Sa se yon definisyon trè jenerik nan tag a - ak gwo karaktè fonse. Ki sa ki font size se sa? Ki koulè se sa? Ki jan fonse se sa? Men, CSS pèmèt ou plis tise byen melodi bagay sa yo tankou sa. Kòm byen ke Layout yo, jan kèk nan nou te wè. Men, franchman, CSS se yon ti jan nan yon lang sal. Li trè pwisan nan ke ou ka fè literalman nenpòt ki sit entènèt ke ou te wè sou entènèt la jodi a ak li, men li li nan kalite yon doulè nan kou an. Se konsa, kèk nan nou te frape tèt ou kont miray ranpa yo deja jis fè yon bagay estipid tankou sant yon meni sou pwoblèm pran sèt si ou te vinn pwen sa deja. Men, reyalize, bagay sa yo jwenn pi fasil sou tan. Ou kòmanse a yon avi modèl. Li di ankò, Google yo pral zanmi ou pou fason yo divès kalite nan ki ou kapab rezoud kalite pwoblèm sa yo. Apre sa, mwen bay gabèl di avèk CSS, ak HTML plis jeneralman, ou ka rezoud pwoblèm nan anpil plis fason yo, tout nan yo ki ta ka trè byen, se pou kòrèk, pase ou te kapab nan yon bagay tankou C, menm kounye a PHP, oswa JavaScript. Gen yo se jis anpil diferan fason yo mete bagay sa yo soti. Men, sa a te kòmanse jwenn sal, nou te di. Jis kalite commingling HTML ou ak CSS ou a ak atribi nan style te yon peu ti kras. Se konsa, nou olye te di, sòt de abstrè pale, ke ou ta dwe omwen kòmanse faktè soti CSS ou pwobableman. Pa atribi style ou, men omwen sèvi ak tag a style andedan sa ki yon pati nan paj wèb la? ODYANS: Head. DAVID Malan: Nan tèt la. Jiska kounye a, nou sèlman te gen tit la moute gen, men ou ka ajoute tou yon style tag, epi ou ka mete CSS ou apeprè pale nan direksyon tèt la nan paj la. Men, Lè sa a, nou te pran bagay sa yo yon sèl etap plis epi nou konsidere ke plis nan yon dosye apa a. Se konsa, sa yo dosye de te yon jan kanmenm kounye a lye. Ak tout bon li te la tag ki te fè sa. Ak sa ki te youn nan global la motivasyon pou faktè soti CSS nou tout pi plis la? ODYANS: reutilizasyon. DAVID Malan: reutilizasyon. Dwa? Ou ka te wè nan p mete-sèt deja ke yon anpil nan paj sa yo, achte nan paj, paj an vann, paj dosye pou yo, yo se pwobableman estriktire yon ti jan Menm jan an tou. Genyen yon logo finans CS50 nan tèt la eksepte si yo te deside chanje li. Genyen yon footer nan la anba nan paj. Men, CSS pèmèt ou Lè sa a, faktè li soti li nan yon dosye apa se konsa ke si ou vle chanje yon bagay globalman atravè sit antye ou, ou ka reyèlman jis chanje li nan yon sèl kote. Men, gen yon pri ou peye potansyèlman pa gen faktè soti nan CSS soti nan HTML dosye mwen nan yon separe pote indican l 'ak nan tag, ki nou te wè nan Lendi. Ki sa ki anba kote an ta kapab nan sa a? Panse tounen yon semèn de sa lè nou ap ap pale de HTTP ak TCP / IP ak ki jan entènèt la travay. Yon bagay sou isit la? ODYANS: Li pran plis tan. DAVID Malan: Li pran plis tan. Pou ki sa? ODYANS: [fèbl]. DAVID Malan: Yeah. Se konsa, li joui pran yon ti jan pi plis tan. Paske yon sèl, CSS la se evidamman pa nan dosye a menm. Se konsa, kounye a ou gen fè pa yon sèl, men de demann. Epitou, chak nan demann sa yo kòm nou te wè nan Chrome nan Enspektè la sa yo rele, epi nou gade tab la rezo a, chak nan tout sa yo dosye mande pou yon sèl HTTP demann, ki nou te wè pran kèk kantite tan. Koulye a, petèt li pa yon anpil. Petèt li sèlman 20 milisgond. Petèt li 200 milisgond. Men, panse osijè de yon paj tankou Facebook, oswa CNN, oswa Google yo, ki se anpil pi gwo pase egzanp sa yo nou te gen gade konsa byen lwen. Paj Moun sa yo ki ta ka gen plizyè douzèn dosye, chak nan yo ki ka mande yon download nan yon dosye. Se konsa, bagay sa yo kapab potansyèlman kòmanse ralanti. Apre sa, espesyalman jou sa yo lè nou tout gen telefòn mobil nan pòch nou yo ak pi dousman koneksyon entènèt, gen rete tann yon tijan plis milisgond, yon kèk plis milisgond pou plis dosye ka aktyèlman ap ralanti. Latansi se pawòl Bondye a ki dekri nan kalite ap tann ke ou gen ke ou santi lè ap tann pou kèk moso nan enfòmasyon. Men, gen yon tèt. Se konsa, li se pa tout sòt de yon - li aktyèlman se yon ti jan nan yon baskil isit la. Inconvénient kounye a, men sa ki navigatè ka fè si yo ap entelijan yo nan lòd pou fè pou evite li te gen pou mande pou menm styles.css la pote ankò kapab fè sa? Cache li. Se konsa, caching - C-A-C-H-E - jeneralman vle di isit la jis pou konsève pou la pote ou mande premye fwa, ak Lè sa a, tcheke kachèt ou pou li a. Tcheke w ap sòt de veso pou konsève, epi si w deja gen yon kopi styles.css, menm si kèk lòt paj nan P-mete nan, oswa nenpòt ki sou sit wèb, mande l 'ankò, jis bay la itilizatè ki menm kopi kach. pa anmède mande li. Inconvénient la, menm si, jan kèk moun pami nou te trebiche sou nan P-gwoup la. Si ou fè yon chanjman sou sèvè a ak ou ale tounen nan navigatè a, epi ou Reload epi, pafwa, navigatè a fè ou yon favè epi yo pa anmède re-Téléchargez dosye styles.css ou paske, vin sou, ki sa yo chans yo ki diferan estil sa yo ki Facebook sèvi ak yo ale nan chanje èdtan kèk èdtan oswa jou an jou? Li trè ba. Yo ka chanje apre yon sèten tan, men se pa pa minit la oswa pa èdtan an. Se konsa, yon Trick, jis Fyi lè w ap fè entènèt devlopman, se souvan kenbe desann nan chanjman kle pou egzanp ak Lè sa a, klike sou Reload nan navigatè ou a, epi ki pral tipikman di Reload nan navigatè tout bagay, menm si w deja gen li nan kachèt la. Se konsa, ankò, upsides ak enkonvenyans, Men, tout nan yo finalman konsepsyon desizyon yo. Se konsa, koulye a, nou te fè sa se pa sèlman fini istwa a isit la. Si m 'koulye a tounen ladan l epi retounen lakay yo epi retounen lakay yo epi tounen, nou te kòmanse prezante pa sèlman HTML, men PHP. Se konsa, an tèm pwofàn la, ki sa ki PHP se pou nou fè? ODYANS: [fèbl]. DAVID Malan: Ki sa ki nan sa? ODYANS: Entwodwi lojik nan Kòd la. DAVID Malan: Yeah, prezante lojik nan Kòd ou. Se konsa, li nan yon lang programmation vre ki gen pasan, ak varyab, epi fonksyon, ak kondisyon yo, ak tout bagay sa yo nou ve yo te lè l sèvi avèk fason tounen lè depi grate. Apre sa, PHP, nou te wè, yo ka itilize swa nan liy lan lòd - li pa bezwen gen anyen fè ak entènèt la, menm si sa a, se reyèlman orijin li epi ki sa li gen tandans yo dwe bon nan ak fezab nan - men ou ka sèvi ak PHP senpleman pa nati nan lefèt ke li gen yon ekri an lèt detache () fonksyon, ak yon printf () fonksyon, oswa yon eko () fonksyon. Genyen grap nan fason ou kapab enprime tèks ak PHP. Se poutèt sa, ou ka sèvi ak pwogram sa a lang nan pwodiksyon egzakteman ki sa nou te pale sou anvan. Ou ka dynamique jenere HTML ou yo. Petèt se pa tout nan li. Petèt ou Kòd bagay sa yo difisil, tankou nan header, ak footer a, ak logo la, ak dra style ou a, ak nan tout sa. Men, pou yon bagay tankou p-mete sèt, kote w ap manipile aksyon ak ki montre dosye itilizatè a, ki se ale nan dynamique chanje, ou ta ka siman itilize PHP ak lojik la li bay ou kòm yon lang programmation pwodiksyon dynamique ansanbl paj la. Se konsa, lè ou pale osijè de sou sit entènèt dinamik, oswa pwogram entènèt, sa a, se ki sa w ap reyèlman ap pale de. Lè l sèvi avèk yon lang tankou PHP, oswa bagay rele Piton, oswa Ruby, oswa Java, oswa ankò lòt lang, nan sijè rechèch yon baz done souvan, oswa yon lòt sèvè, ak Lè sa a, dynamique krache soti HTML. Koulye a, rezilta nan fen, kòm yon sou kote, se ki HTML a nan pi fò sit entènèt, ki gen ladan p-mete sèt ou a, se pwobableman pral fè yon gwo dezòd si ou gade nan sous la Kòd nan yon navigatè. Sa se pa yon kontra gwo. Nan pwen sa a, lè nou pran swen sou style, nou pran swen sou la bagay ke ou ekri. Nou pa pral pran swen sou bagay la ke sa rezilta Kòd ou. Se konsa, pa enkyete sou mark isit la si li nan PHP sa a, se aktyèlman sorti bagay. Apre yo tout, navigatè a pa pral pran swen, ak yon moun pa pral kap nan sous la de tout fason. Nou anplwaye a, pou egzanp, ta dwe gade nan PHP ou. Se konsa, kite m 'bay yon egzanp rapid kounye a sou rezon ki fè lòt moun sa a ta ka itil. Se konsa, franchman, mwen pa ka sonje dènye a tan mwen itilize C rive nan rezoud yon pwoblèm nan mond reyèl la. Li te pwobableman nan lekòl diplome lè Mwen te bezwen yo sèvi ak yon lang ki te san patipri ba nivo ak te ban m 'an opòtinite yo fè yon bagay trè wo fè reyèlman sove kòm anpil CPU sik ke mwen te kapab, nan gwo pati paske mwen te lè l sèvi avèk ansanm done gwo, ak chak sik CPU konte. Apre sa, franchman, menm nan bagay sa yo tankou telefòn jou sa yo ak lòt aparèy ki kote ou pa byen gen kòm anpil memwa epi ou pa byen gen kòm anpil CPU, lè l sèvi avèk pi vit lang se toujou fè apèl kont. Men, nan mond reyèl la, lè ou jis vle voye jete kèk pwogram ansanm nan analize kèk done, oswa ou te kolekte yon pakèt tout anrejistreman pou kèk gwoup elèv, epi ou vle trè byen vit otomatize voye Imèl youn pa youn nan chak youn nan moun ki inscrit, w ap ale nan rive pou yon lang pi wo nivo pase C se konsa yo pale. Yon bagay tankou PHP oswa Piton, oswa Ruby, oswa yon mwatye yon douzèn lòt moun ki egziste jou sa yo. Men, moun twa yo se pwobableman pi plis tandans a kounye a. Ak sa ki sa sa vle di se ke ou ka louvri moute yon editè tèks tankou jdi oswa anyen ki pi lòt moun ak Lè sa a jis kòmanse ekri kòd san yo pa gen enkyete sou konpile, san yo pa gen reyèlman enkyete sou jesyon memwa, kenbe nan tèt ou menm si ke yon ti kras sloppiness pral evantyèlman tounen vin mòde ou si ansanm done a vin pi gwo oswa pwoblèm nan vin gwo. Men, sa ki sa sa vle di pou nou se sa ki annapre yo. Kite m 'ale pi devan epi kouri ortograf soti nan pwoblèm mete sis. Se konsa, sa a se aplikasyon trye ki baze sou mwen an ke mwen itilize sou gwo a tablo kote mwen fè pa konsa pou sa byen. Nou ap tounen nan tan yon semèn la epi revize moun ki t 'fini anlè a gwo tablo a konferans dènye nou an. Men, pou kounye a, kite m 'ale pi devan ak jis kouri solisyon m 'ki nan tèks yo, epi nou pral fè FREE Online Haitian Creole a, ak isit la nou ale. Se konsa, moun yo tout nan swadizan la w mal ekri mo soti nan FREE Online Haitian Creole la. Ak aplikasyon m 'te pran mwatye yon dezyèm nan total. Se konsa, pa twò move sou sa a patikilye òdinatè. Men, panse a konbyen lajan Kòd Mwen te oblije ekri. Panse konbyen Kòd ou te gen ekri. Panse konbyen èdtan ou pase nan la D-sal oswa dòtwa ou oubyen nenpòt kote aktyèlman kod sa ki solisyon an. Oke, si mwen gen aktyèlman yon pi wo nivo lang tankou PHP, pran nòt nan kisa m ka fè isit la. Premyèman, ta kwè ke sa a se olye pou Kòd distribisyon ou. Sa a se yon dosye rele ortograf. Li nan disponib kòm yon pati nan jodi a distribisyon kòd. Apre sa, mwen pral balanse men m 'nan pifò an detay yo, men sa a se aktyèlman yon egzanp enteresan nan ki jan ou ka pò yon lang tankou C nan men PHP. Mwen literalman louvri de fenèt tèks, yon sèl ak vèsyon C m 'lan nan speller.c, ak mwen jis te kòmanse tradui l 'nan mwen tèt nan PHP ak sezisman li soti lè l sèvi avèk ki pi pre fonksyon yo ekivalan. Se konsa, kèk nan bagay sa yo, se diferan. Nou te wè dènye fwa ke PHP pa sèvi ak mete nan byen menm jan an. Li itilize mande pou tipikman, menm si gen ladan yo fè sa ki egziste. Defini se yon ti kras diferan soti nan # Defini nan C, men sa a ki jan nou fè yon konstan. $ Arg li vire soti egziste nan PHP, Se konsa, nou te wè ke anvan. Sa yo se sèlman varyab, nan tout ki kòmanse ak siy dola. Sonje byen sa yo, se jis yon pakèt nan pwen k ap flote. Se konsa, istwa long kout, w ap akeyi yo baskile nan sa a si kirye, sa a se prèske yon konvèsyon nan la liy-pou-liy C vèsyon an speller.c nan PHP. Apre sa, ou ta ka fè sa a ankò pou yon demi douzèn lòt lang. Men, sa ki nan enteresan an se sa a. Oswa sa ki nan franchman dekourajan se sa a. Kite m 'ale pi devan epi tape sou dictionary.php, ak reklamasyon ke mwen se ale nan ale pi devan epi re-aplike pwoblèm mete sis isit la. Se konsa, kite a pwopoze premye ke nan ka sa dosye, ki pral aplike nan PHP, se konsa kite m 'louvri Tags mwen an tankou sa. Kite m 'ba tèt mwen yon mondyal varyab, $ gwosè vin zewo. Apre sa, mwen pral bay tèt mwen yon tab hash. Mwen pral sèvi ak yon tab hash pou bagay sa a. Kouman pou mwen deklare yon tab hash nan PHP? Fè. OK. Se konsa, louvri bracket fèmen bracket reprezante sa ki nan PHP, jan nou te wè? Yon etalaj, men yon etalaj ki te kapab gen yon etalaj asosyatif. Yon etalaj asosyatif se yon estrikti done ki asosye kle ak valè. Koulye a, nan ki pi senp lan nan numériquement Catalogue etalaj, kle sa yo se ki sa? Zewo, yonn, de, twa, dwa? Fin vye granmoun lekòl stuff tounen soti nan C. Men, li kapab tou gen pou strings tankou foo, ak ba, oswa Maxwell, oswa nenpòt ki fil sa yo. Se konsa, mwen kapab jwenn ki nan jis moman sa a. Kite m 'ale pi devan epi deklare yon fonksyon tankou - kite a fè chay () an premye. Se konsa, chay fonksyon (). Apre sa, PHP se yon ti kras diferan nan ki ou literalman tape fonksyon, men ou pa tape yon kalite retou. Mwen pral ale pi devan epi di ke nan chaj () fonksyon yo ta dwe pran an agiman $ diksyonè, jis tankou C vèsyon te fè sa. M ap fè ki soti nan memwa. Apre sa, mwen pwopoze ke mwen se pral fè sa a. Mwen tou senpleman pral fè fortch. Mwen pral rele yon fonksyon rele pote (), pase nan non ki pote, ki se varyab la $ Diksyonè kòm $ mo. Lè sa a, andedan nan mwen pou bouk isit la, mwen se ale nan ale pi devan epi estoke nan mwen $ Tab ki $ mo vin vre. Fè. Oh, rete tann. Fè. OK. Sa se chay la () fonksyon di nan PHP. Koulye a, poukisa ke travay? Apre sa, mwen ap kalite fason ou kapab triche isit la. Se konsa, yon sèl, fortch nou te wè yon ti tan dènye fwa. Li jis vle di ke ou ka repňte sou yon etalaj san yo pa trakase ak mwen ak n ak plis plis, ak nan tout sa. Dictionary se nan kou non an ranpli, yon bagay tankou gwo oswa piti, de la diksyonè nou itilize dènye fwa. File se yon fonksyon ki ouvè tèks ranpli, li l 'nan liy pa liy, ak men ou tounen yon etalaj gwo, chak nan eleman ki gen se yon liy de sa dosye. Se konsa, sa a, se konbinezon an nan fopen, ak frèd, ak pandan y ap bouk, ak fkloz, ak nan tout sa. Finalman, kòm pawòl jis vle di sa a, se la varyab Mwen pral gen aksè a sou chak iterasyon nan sa a bouk. Se konsa, nan ti bout tan, sa a revètman yon sèl isit la vle di louvri moute dosye a ki gen non se nan diksyonè, varyab la, repňte sou li liy pa liy, epi chak fwa ou jwenn yon liy, magazen nan yon mo varyab rele, ak Lè sa a, fè yon bagay ak mo. Ki sa mwen vle fè? Mwen vle mete pawòl nan tab hash m 'yo. Oke, mwen ka mete yon bagay nan mwen Hash tab jis tankou nan C lè l sèvi avèk parantèz kare. Sa a se non an pou tab hash m 'yo. Mwen pral endèks nan ki hash tab nan kote sa a. Se konsa, pa bracket zewo, pa bracket yon sèl. Bracket quote unquote yon bagay, tou sa mo sa a se. Apre sa, jis tankou ou ta ka genyen nan ou trye travay tab hash, ou jis magazen efektivman yon Boolean, chal oswa klèman. Fè. Mwen estoke valè a vre. Koulye a, gen nan yon koup de bagay sa yo Mwen koupe kwen sou isit la. Teknikman, gen k ap pase yo dwe genyen yon anmèdan nouvo liy, / n, nan fen chak nan pawòl sa yo. Se konsa, mwen ta dwe pwobableman rele yon fonksyon PHP rele koupe (), ki pral byen literalman koupe ke la. Apre sa, mwen aktyèlman bezwen fè yon lòt bagay. Mwen ta pwobableman enkreman gwosè sou chak iterasyon, se konsa mwen kenbe tras globalman nan sa li ye. Apre sa, franchman, ak sa a se youn nan la stupider aspè nan PHP, si w ap lè l sèvi avèk yon varyab mondyal, ou bezwen klèman di ke ou se. Se konsa, mwen pral aktyèlman tape nan mondyal $ Gwosè, $ tab mondyal, e kounye a, fonksyon mwen an se konplè. Se konsa, pa byen kòm senp tankou anvan, men pwobableman pran mwens tan pase C a vèsyon, petèt? OK. Se konsa, kounye a kite a fè chèk la () fonksyon. Ann wè si sa a omwen pran an èdtan sou fen ke li te pran nou nan C. Se konsa, kite m 'ale pi devan epi deklare tcheke kòm yon fonksyon. Pran nan agiman mo, ki se ale nan soti nan ortograf. Apre sa, mwen jis ale nan tcheke si la yo ise varyab, tablo bracket strtoloe nan pawòl Bondye - kite a balanse nan tout parantèz mwen an - Lè sa a, retounen vre. Lòt Bagay - sa ki te vrèman difisil nan yon pati nan pwogram sa a. Lòt Bagay, retounen fo. Fè. Sa a chèk (). Koulye a, poukisa sa a ap travay? Oke, yon sèl mwen te pase nan yon mo, ki se yon kòd. De, mwen tcheke andedan nan hash la tab, ki moun ki yo rele $ tab. Mwen fòse l 'bay miniskil lè w rele yon fonksyon byen menm jan toloe () nan C, men sa a fè pawòl Bondye a tout antye, pa yon karaktè sèl. Men, si se sa ki mete, nan lòt mo gen se yon valè mete, nan lòt mo, si li nan vre, Lè sa a, repons lan se wi, sa a se yon mo. Paske mwen mete l 'la ansanm ak chaj (). Men, si se pa sa, mwen pral tounen bay manti. Koulye a, lòt moun yo fasil. Gwosè Fonksyon (), kijan pou m 'fè sa? Mwen esansyèlman fè retounen $ gwosè. Men, mwen teknikman bezwen fè bagay sa a anmèdan. Apre sa, aktyèlman moute tande la a, mwen te koupe yon kwen twò anpil. Mwen vrèman bezwen fè $ tab mondyal la. Men, sa yo te di, dechaje). Dechaje () se etonan. Fonksyon debake (). Kouman pou mwen vle aplike debake ()? Fè. OK. Se konsa, dechaje (), jesyon memwa se konplètman pran swen nan pou ou nan yon bagay tankou PHP ak yon anpil nan lang ki pi wo-nivo. Se konsa, sa a se dwòl. Menm jan ak poukisa lanfè a t 'nou te pase sot pase a uit semenn plis sou C ekri aparamman vrèman dousman, reyèlman tan konsome pwoblèm ki genyen ak dè dizèn de èdtan nan travay anba senti nou an? Oke, pou yon sèl bagay, sa a kapab travay amann pou pwogram piti. Li sètènman sped moute m ' devlopman tan. Men, kite a wè sa ki rive nan mond lan reyèl. Kite m 'ale nan anyè sa a nan yon fenèt tèminal. Genyen ortograf. Apre sa, remake kòm yon sou kote, epi ou ta ka yo te rankontre sa a nan pwoblèm mete sis oubyen pwoblèm mete sèt moun. Ou pa entèdi gen fini PHP dosye avèk yo. php. Si ou mete yon liy tankou sa youn premye nan tèt la anpil, ki nan yon liy espesyal nan sentaks ki esansyèlman vle di jwenn pwogram lan te rele PHP ak sèvi ak li nan entèprete sa a ranpli. Se konsa, koulye pesonn pa vrèman konnen ki Mwen kouri yon pwogram PHP. Mwen ka kouri li menm jan si li yo te yon bagay konpile nan C. Men, isit la bagay la. Aktyèlman, se pou yo fè sa ankò. Dropbox/pset6 /. Genyen ortograf. OK, 0.44 segonn. Li te rive pi vit tan sa a. Koulye a, kite a ale nan vèsyon an PHP. Nice manyen. Men, jis panse konbyen tan Mwen sove nan lè biwo louvri. OK. Se konsa, 3.59 segonn, ki aktyèlman pa fè son egzat swa. Men, sa a paske istwa long kout, lè w ap enprime soti yon kantite lajan gwo nan bagay nan ekran an, ki tèt li ralanti bagay sa yo desann. Ki sa sa te vrèman pran CPU a nan la aparèy te 3.59 segonn, nan Kontrèman a C, ki te pran 0.44 segonn pi resamman. Sa a se vre wi: yon lòd pou grandè diferan. Se konsa, ki kote ke pri vini soti nan? Poukisa li tèlman pi dousman? Poukisa PHP fè Se konsa, mal? Danielle? ODYANS: Ou pa t reyèlman sèvi ak yon tab hash. DAVID Malan: m 'te fè pa reyèlman sèvi ak yon tab hash. Se konsa, mwen kalite te fè sa. Se konsa, li yon etalaj asosyatif. Pifò gen anpil chans si moun ki nan PHP yo vrèman entelijan, yo te konn itilize anba la kapo yon tab hash aktyèl aplike nan yon bagay tankou C oswa C + +. Men,. Yeah. ODYANS: [fèbl]. DAVID Malan: Yeah. Se konsa, chak nan fonksyon yo mwen te ekri kounye a - aktyèlman, èske ou kapab di ke yon fwa plis yon ti kras pi fò? ODYANS: Chak nan fonksyon yo ki ou mete gen yon anpil plis plen kapasite pase - DAVID Malan: Se konsa, sa a, se trè vre. Genyen yon anpil plis sou tèt ke nou ap pa vrèman wè pa konsantre sèlman sou dictionary.php, ki mwen jis te ekri. Nan kontras, gen yon entèprèt tout ale nan background nan. Vreman vre, lè m 'kouri pwogram sa a, li pa t 'kouri konpile zewo ak moun yo ki fèt pou CPU Intel mwen. Olye de sa, li te kouri liy pa liy PHP kòd ki sanble egzakteman tankou nou tape li. Se konsa, chak fwa ou itilize yon lang entèprete, ou aktyèlman peye sa a pri. Li pral pran kèk tan yo li tèt dosye ou a anba, gòch a dwat li, li Lè sa a, egzekite chak liy ankò e ankò. Koulye a, an reyalite, espesyalman sou entènèt la, ou ka aktyèlman akselere pwosesis sa a pa caching rezilta yo nan la Kòd PHP a vle. Apre sa, ki fè sans sou entènèt la, paske si ou gen pa gen yon sèl itilizatè tankou m 'isit la, men 1,000 oswa 10,000 itilizatè yo, Lè sa a, petèt premye fwa a dosye a se jwenn aksè li nan ralanti, men apre sa li nan anpil pi vit. Men, sa a tou, ankò, se yon nan komès. Se pou yon bagay tankou yon done rechèch mete, oswa menm yon bagay gwo tankou sa a, itilizatè ou pral evantyèlman kòmanse santi ke ralentissement. Se konsa, nan ti bout tan, entèprete lang yo anpil nan lamòd, trè popilè, ak franchman yo se pwobableman lang yo ou ta dwe rive pou lè rezoud pwoblèm apre CS50. Men mwen reyalize konbyen lajan ou ap reyèlman pran pou yo akòde anba kapo a reyèlman sa yo plizyè semèn sot pase yo nan hash tab, ak pye bwa, ak ap eseye, ki yo te itilize finalman ki aktyèlman aplike bagay sa yo tankou louvri bracket, bracket kare, ki nou kapab kounye a gratitude pran pou yo akòde. Se konsa, kite a pran yon gade kounye a nan yon kontèks entènèt sa a. Apre sa, mwen mansyone dènye fwa ke gen nan yon pakèt moun sou superglobals nan PHP ki yo se pa reyèlman ki enpòtan nan liy lan lòd. Yo ap plis ki enpòtan nan yon kontèks nan lè l sèvi avèk PHP nan yon kontèks entènèt. Se konsa, kouri PHP sou yon sèvè sit entènèt yo nan lòd jenere bagay tankou HTML. Epi nou regarda nan $ _GET ak $ _POST, ak sa a, se kote otomatikman itilizatè ' D 'fini moute tou senpleman si ou soumèt yon fòme nan yon dosye ki mete fen nan. php sou yon sit entènèt sèvè tankou aparèy la. Men, se pou yo gade yon ti tan nan $ _COOKIE Ak $ _SESSION. An tèm pwofàn la, sa ki se yon bonbon kòm ou konprann li nan yon kontèks lè l sèvi avèk entènèt la? ODYANS: File sou òdinatè a. DAVID Malan: Yeah. Li se yon dosye sou òdinatè itilizatè a yo plante bò tou sa sou sit wèb ou rive nan vizit. Se konsa, lè ou ale nan Facebook, lè ou ale bankofamerica.com, lè ou ale google.com, lè ou ale nan prèske nenpòt ki sit entènèt nan mond lan jou sa yo, ki gen ladan cs50.net, se yon bonbon plante sou òdinatè ou, ki se swa yon valè ki estoke nan RAM nan ou òdinatè nan memwa navigatè ou a, oswa pafwa tout bon yon dosye ki estoke sou kondwi difisil ou. Ak sa ki nan anjeneral yo estoke nan ki dosye se pa non itilizatè ou, pa ou modpas, tipikman pa yon bagay sansib sof si sit entènèt la se pa konsa pou bon ak sekirite yo, men pito li se yon gwo idantifyan inik nan mitan lòt bagay. Li se yon gwo nimewo tiraj osò te plante sou ou òdinatè men ou ka panse a kòm sòt de yon koupon pou achte men vityèl tankou soti nan yon klib oubyen kèk pak amizman ki pèmèt anplwaye a, mèt pwopriyete yo nan ki sèvis, sonje ki moun ou ye. Se konsa, si nimewo nan gwo o aza, se tankou 12345678, byenke sa a, se evidamman pa twò o aza, panse a ki jan nan koupon pou achte men ki lè ou vizite facebook.com la pou premye fwa a, yo koupon pou achte ladan nimewo sou men ou. Lè sa a, paske ou pale HTTP, ou yo te yon navigatè, epi paske Facebook evidamman pale menm bagay la tou kòm yon sit entènèt sèvè, HTTP nan pwotokòl di ke nenpòt lè ou imedyatman ale nan facebook.com, si li nan yon dezyèm apre sa, yon èdtan pi ta, menm jou kap vini an, toutotan ou pa gen klèman louvri sesyon soti, ki efektivman se tankou lave men w. HTTP di ou ta dwe prezante ou koupon pou achte men chak fwa ou retounen nan ki sou sit wèb. Ki sa ki Facebook Lè sa a, se yo gade nan koupon pou achte ki men ak yo di, oh, 123456789. Mwen pa konnen nan premye gade ke sa a se David Malan nan Cambridge, Massachusetts, men yo ka tcheke yo baz done epi di, o, moun nan sou ki gen òdinatè nou te plante 123456789 se David Malan soti nan Cambridge, Massachusetts. Se pou yo fè montre ke itilizatè Lè sa a, pwofil l ' paj oswa Nouvèl Feed l 'yo. Men, gen yon pwoblèm isit la si sa a ki jan entènèt la tout bon travay. Ann pran yon gade nan yon egzanp rapid. Se pou yo aktyèlman ale nan di facebook.com. Men, anvan nou te ka ale la, se pou m 'ale pi devan epi louvri moute nan Chrome Enspektè desann isit la. Kite m 'gade nan tab la rezo-a. Epi, koulye a kite a ale pi devan epi tape nan https://facebook.com. Apre sa, mwen ap fè ke pou nou pa wè tout moun ki redireksyon ak dechè tan kap nan sa yo. Kite m 'frape antre. Tout dwa. Nou wè yon pakèt antye nan demann. Gen vini Facebook. Genyen yon pakèt tout nan dosye. Ak isit la, pou chak mansyone mwen an latansi tan sot pase a, ki nan yon anpil nan HTTP demann. Men, yonn nan premye se pwobableman pi enteresan an. Se konsa, kite a desann isit la, ak Mwen pral rale nan nan yon dezyèm fwa. Sa a se pral fè kalite yon dezòd, men kite a wè. Facebook ap voye nou yon tout pakèt moun sou bagay. Men, ola, ki enteresan. Yo ap plante pa gen yon sèl, men kat men koupon pou sou men m 'isit la. Set-bonbon, derape-bonbon, mete-bonbon, mete-bonbon. Men, gen yon karakteristik kèk isit la. Tout moun nan yo mansyone kèk kalite ekspirasyon an. Men, li sanble Facebook an espere sonje m 'jis nan 2015. Se konsa, sa a, se prezimableman tan an pa ki Mwen dwe ale deyò oswa yo pral jis otomatikman asime mwen se pa tounen. Se konsa, sa a, se aktyèlman yon desan kantite tan. Men, gen kèk lòt bagay sa yo ale sou isit la. Sa a bonbon parèt yo dwe lafòs efase nan di li ekspire an 1970 anvan bonbon egziste. Se konsa, navigatè a se jis ale asime OK, ki nan tankou lave koupon pou achte nan men ou. Men koulye a, lè navigatè mwen an fè yon demann ki vin apre - kite m 'ale pi devan epi fè sa ankò, li Reload. Koulye a, kite m 'tounen nan woulo liv la tèt demann ak desann isit la, Tèt mande sa. Avi sa a. Se konsa, koulye a, mwen se anba pa Tèt repons, men remake li di Tèt mande sa. Men, remake ke navigatè mwen an kòm yon pati nan demann li yo apre Reload frape gen voye omwen sa ki annapre yo enfòmasyon. Pa mete-bonbon, men bonbon. Se konsa, sa a se liy lan, header nan HTTP se konsa yo pale, kote navigatè mwen an se sòt nan san yo pa konnen m 'li prezante men m 'pou enspeksyon Facebook a. Se konsa, sa yo bonbon yo ka itilize Lè sa a, pou ki sa? Sonje ki moun ou ye, oswa sonje ki jan anpil fwa ou te yo te la, oswa vrèman anyen. Se konsa, isit la se counter.php. Men, kite m 'rale nan sou font la. Men, chak fwa mwen Reload paj sa a, remake li nan sonje konbyen fwa Mwen te la. Oke, sa a, se pa tout sa ki enpresyonan. Se pou yo jis fèmen ke tab, e kounye a, kite a tounen nan http://localhost/counter.php. Oh, sa a, se enteresan. Li toujou chonje, menm si mwen fèmen tab la. Men, franchman, si mwen fèmen navigatè a, si aplike nan chemen ki dwat la, mwen te ka toujou sonje ke sa a itilizatè a se ki moun li oswa li te premye fwa, ak sèlman yon fwa mwen ale nan meni Chrome a, ki sou isit la se isit la, epi ale nan Istwa, epi klike sou Done Brase Klè, tankou kèk ladan ou ka gen nan la sot pase yo, sèlman Lè sa a pral bonbon ou aktyèlman dwe efase pandan entènèt devlopman. Se konsa, si n 'al jwenn - kite a fèmen jiska jdi isit la. Men, si nou ale kounye a sa a dosye. Kite m 'ale nan nou an vost / lokalost / piblik, ak kite m 'fè counter.php. Remake sa a se yon trè senp pwogram nan. Li se yon sit entènèt trè senp. Se konsa, tèt la nan dosye a se jis kòmantè. Men, isit la yon liy nouvo ke ou ka te wè deja nan p mete-sèt, session_start (). Sa a se yon liy nan Kòd PHP ki esansyèlman di sèvè a entènèt, fè asire w ke ou so sou men yo ak fè asire w ke ou tcheke koupon pou men yo. Sa a tout sa ki liy fè, epi li fè tout pwosesis sa a pou nou. Lè sa a, remake Mwen te jis te resevwa de branch isit la. Si anndan an kle vann san preskripsyon sa a espesyal varyab mondyal rele Se $ _SESSION mete - nan lòt mo, si gen nan kèk valè gen - kite a jwenn li ak magazen li nan yon lokal varyab yo rele $ vann san preskripsyon. Lòt Bagay, se pou yo bay $ vann san preskripsyon default valè a nan 0. Koulye a, isit la nan yon sèl aspè nan PHP sa a, se tou de yon benediksyon ak madichon yon. PHP se yon ti kras peu. Se konsa, Lè nou konsidere ke nan C, ki sa ki la ta yo te sijè ki abòde nan vann san preskripsyon te swa isit la oswa isit la? Li ta yo te nan prizon bay moun aparèy òtopedik Curly. Devine ki sa? Nan PHP, li egziste menm deyò nan sa yo aparèy òtopedik Curly, isit la, ak isit la, ak isit la, ak isit la, ak menm desann anba a. Se konsa, mwen di sa a se yon benediksyon nan sans ke ou pa bezwen panse kòm difisil jan nou te fè semèn de sa. Men, li la tou yon ti jan nan yon madichon nan ki pa gen pwoblèm ki kote ou sèvi ak yon varyab nan PHP, omwen nan yon pwogram tankou sa a, li nan globalman aksesib pou pi bon oswa pou vin pi mal. Se konsa, ou gen kenbe nan tèt ou kounye a ke varyab ou ka pa defini. Ou ka gen defini yo yon lòt kote. Men, sa ki 'yo, mwen pral fè finalman? Mwen pral nan magazen andedan nan ki mondyal varyab kòm yon valè de a vann san preskripsyon kle rezilta a nan fè vann san preskripsyon plis 1. Se konsa, sa a se jis aritmetik a ki fè a incrementation nan ki vann san preskripsyon. Ak lefèt ke mwen estoke ki valè tounen nan isit la se vle di esansyèlman mete ajou baz done a sonje ke te itilizatè 123456789 te isit la de fwa. Lè m 'fè l' ankò tan kap vini an mwen Reload paj la, li pral tcheke men m 'koupon pou achte manje ak di, oh, itilizatè 123456789 gen kounye a te la pandan twa fwa. Se konsa, sa ki PHP ak menm jan an lang yo ap fè pou nou an se yo lè n ap kalkile konnen ki jan ak ki kote ak pou konbyen tan nan magazen valè nan sa a espesyal supèrglobal. Lè sa a supèrglobal tan kap vini an mwen vizite paj la se sòt de maji pre-peple, plen ak valè ki te gen tan ki sot pase a ou te vizite, si wi ou non ki te yon dezyèm de sa, yon semèn de sa, oswa nan 2013 ak nou ap kounye a ap pale sou 2015. PHP ak sèvè wèb la pran swen nan tout sa pou ou. ODYANS: [fèbl]. DAVID Malan: Varyab nan PHP yo esansyèlman toujou mondyal sof si ou deklare yo andedan nan yon fonksyon, ak Lè sa a yo lokal yo fonksyon a sèlman. Men, paske mwen pa te ekri nenpòt ki fonksyon yo, yo yo kounye a se efektivman mondyal nan tout dosye antye m 'isit la. ODYANS: Èske gen yon fason fè yo lokal yo? DAVID Malan: Èske gen nenpòt fason yo fè yo lokal yo? Se sèlman pa vlope yo nan fonksyon. Ki nan vèsyon an dènye nan PHP, ou ka fè sa ak yon fonksyon anonim. Men, plis sou sa nan la kontèks nan JavaScript. Men, repons lan kout gen okenn. Yon repons ki pi long se wi. Nice. Bon egzamen kesyon. Tout dwa. Se konsa, alafen, paj la li menm se aktyèlman trè senp. Remake, yon fwa mwen sòti PHP mòd, sonje ke tout bagay sa a desann Anba la a se jis pral jwenn krache soti premyè nan navigatè a. Ki se amann, paske mwen vle voye itilizatè a kèk HTML, men mwen vle dynamique aktyalizasyon ki HTML. Men, yon fason mwen ka fè sa a se sòt nan trè byen vit lage tounen nan PHP mòd, sèvi ak louvri mak kesyon bracket egal siy, ak Lè sa a, pwodiksyon valè a nan vann san preskripsyon. Oswa si sa a sanble yon ti kras skre, sa a siy egal se aktyèlman sèlman kèk Massachusetts Institute of Technology sik pou sa a printf ($ vann san preskripsyon). Men, franchman, sa se sèlman yon lèd ti kras ak yon anmèdan ti tape. Se konsa, PHP trè joliman ofri karakteristik sa a kote ou ka jis di li plis suksen nan menm fason an. Se konsa, sa k ap pase sou anba kapo a? Se pou yo byen vit gade nan rezo a tab isit la pou counter.php. Men, kite m 'ale pi devan epi premye kite a klè bonbon ou. Klè done Navigasyon Ann depi nan konmansman an nan tan. Koulye a, kite a tounen sou isit la. Koulye a, kite nan Reload paj la. Apre sa, mwen se tounen nan zewo. Paske gen koupon pou men m 'te lave, Mwen kounye a jwenn yon bonbon nouvo. Vreman vre si mwen gade nan tab la rezo ak gade nan Tèt repons, remake ki aparèy la ap voye m ' yon bonbon ki gen non se yon ti jan abitrèman, men kalite rezonab, PHPSESSID. Epi li voye m 'sa a vrèman gwo nimewo o aza. Li pa byen yon kantite. Li pa byen ekzadesimal. Li nan kèk kalite fisèl alfa, men prezimableman li nan o aza. Apre sa se Koupon pou Achte nan men se konsa yo pale ke mwen refere li a. Pandan se tan si mwen klike sou Reload ak Lè sa a, gade nan liy sa a dezyèm pou dezyèm m ' demann, remake kounye a ke demann mwen Tèt genyen ladan PHPSESSID egal sa a, pa mete-bonbon, men bonbon jis. Epi sa a, prezantasyon navigatè mwen an nan koupon pou achte men mwen. Se konsa, kounye a kòm yon kol, epi nou pral pale plis sou sa a nan yon semèn oswa konsa, men nan ki fason sa a fè ou frajil yo, kont Facebook ou a frajil, ak lòt sa yo kont vilnerab? ODYANS: Si yon moun gen bonbon ou. DAVID Malan: Yeah, si yon moun gen bonbon ou. Mwen vle di se vre wi:, anpil tankou kèk nan ou ta ka yo te eseye nan tankou klib yon oswa yon amizman pak, si ou eseye yon bagay tankou sa a kapab bay kopi koupon pou achte a, kwake bak sou men yon lòt moun nan, ak Lè sa a li oswa li te prezante li kòm pwòp yo, si li aktyèlman gade ki idantik, 123456789, Lè sa a entènèt la sèvè se aparamman jis ale nan konfyans ke ki itilizatè a se ou. Lè sa a se vre yon fondamantal menas nenpòt ki lè ou itilize bonbon paske si yon moun jis spoofs se konsa yo pale bonbon ou a, figi konnen ki sa ki li se, swa pa vrèman kopye li pa gade òdinatè w lan epi yo te tankou, OK. Bonbon David la se JJ3JIK ak pou fè, ak Lè sa a yo ap entelijan ase yo konnen ki jan yo sòt de manyèlman voye ki bonbon ki sòti nan yon navigatè oswa ki sòti nan yon pwogram yo ap ekri, yo te kapab totalman ale nan yon sit entènèt jan ou. Li se pa sa ki difisil yo pretann yo dwe yon lòt moun sof si nou revize p-seri de, ki entwodwi ki sa? ODYANS: chifreman. DAVID Malan: Yon ti kras ti jan nan chifreman. Senp chifreman, nan omwen nan la estanda edisyon, men chifreman Alòske. mwens. Se konsa, li vire soti si ou ankripte tout sa yo Tèt lè l sèvi avèk yon bagay ke ou ka kounye a konnen plis familyerman kòm SSL, sekirite priz kouch, oswa URL https://, Lè sa a, tout bagay sa yo nou te te ensidan nan yo aktyèlman chiffres, ki vle di ke li nan tankou ou pa kapab li koupon pou achte nan men yo. Se sèlman facebook.com kapab, oswa google.com, oswa nan ka sa a, aparèy la kapab li sa koupon pou men yo. Trajik menm si, e ankò, sa a se tout twò apwopriye avèk bagay la NSA nan an reta, menm SSL se ki ka kraze si. Men, li la aktyèlman pa sa ki difisil jouk yo rive nan krak ki chifreman. Pa tèlman pa bravo chifreman a, men pa tricking la navigatè nan dechifre done yo prematireman. Men, ankò, nou pral toumante ou ak sa yo ki lontan anvan. Pou kounye a, jis bezwen pè. Li nan trajik kalite vre. Tout dwa. Se konsa, kote sa a kounye a kite nou fè? Oke, kite la fè sa. Se pou yo ale pi devan epi pran yon rapid kol anvan nou pran yon ti repo. Apre sa, mwen panse ke nou pral retade ankò yon ti jan pi long jodi a, men nou pwal plonje nan mak yon bagay nouvo ak sexy, ki pral file bèl apeti ou pou menm plis. Se konsa, sa a, se kol la. Se konsa, SQL, nou te kòmanse pale sou tout tan tout tan se konsa yon ti tan dènye fwa. Ou pral vrèman pran men ou sal ak kèk nan l 'nan p mete-sèt. Men, an tèm pwofàn la, ki sa ki SQL - S-Q-L - fè pou nou? Ki sa ki se li? Yeah. ODYANS: Se pou yo ba ou aksè done. DAVID Malan: Yeah. Li kite a ou aksè done nan yon baz done. Estriktire rekèt Lang. Lè sa a se esansyèlman se yon pwogramasyon lang. Gen karakteristik nan li ki nou pa pral menm sèvi ak nan klas la. Men, ou kapab efektivman defini fonksyon. Yo ap rele estoke pwosedi nan SQL. Men, nou pral kenbe l 'jistis senp ak jis sèvi ak li pou kèk operasyon debaz yo tankou chwazi done, mete done, à done, ak efase done. Epi ou ka panse reyèlman a yon baz done, tankou yon baz done SQL, kòm jis yo te Microsoft Excel. Paske SQL refere a yon relasyon baz done, kote relasyon jis vle di tab. Ranje ak kolòn. Se konsa, anyen ou ka mete nan yon calcul tankou sa a oswa Google Docs, ou ta ka mete nan yon baz done SQL pa deklare yon tab. Koulye a, ki jan ou aktyèlman gen aksè nan enfòmasyon sa a? Oke, ak kòmandman oswa demann tankou sa a. Chwazi, insert, aktyalizasyon, ak efase. Men, pou pati ki pi, sa yo se a kat engredyan sèlman ou pral bezwen fè yon bagay byen pwisan nan pwoblèm pran sèt. Koulye a, tounen nan jounen an, ou ta aktyèlman kominike avèk yon baz done nan yon nwa ak blan tèminal fenèt nan yon èd memwa kliyote tankou sa a. Men, baz done a nou ap kouri sou la aparèy yo rele miskl, ki se gratis epi yo louvri motè baz done sous. Si ou Google ak li Wikipedia la atik, ou pral konnen ke non a se yon ti jan nan tranzisyon pou kèk vèsyon an Linux. Maria baz done se aktyèlman yon fouchèt se konsa yo pale nan miskl. Long istwa kout, Oracle te achte miskl. Oracle a yon konpayi gwo. Moun yo te enkyete ke li ta pa gen okenn ankò rete byen kòm sous louvri, Se konsa sa a se jis yon kopi miskl sa a, se toujou gratis, toujou louvri sous, ak enstale nan Fedora Linux pa default. Men, sa a se kalite yon doulè nan la kou jwenn konnen ak yon baz done nan fason sa. Se konsa, nou mete nan aparèy la CS50 yon gratis sous louvri zouti rele fpmyadmen. Jis yon konyensidans ki li a ekri nan PHP. Gen nan pa gen fondamantal bezwen pou PHP isit la. Men, sa a se jis yon zouti ki baze sou wèb ki nou telechaje yo pou gratis, enstale nan aparèy la, ki pèmèt nou gen yon grafik itilizatè koòdone ak ki yo eksplore p-seri sèt baz done a ak ki kreye baz done nouvo, di pou pwojè pwòp ou a final si ou ta renmen, ak finalman kreye sou sit entènèt dinamik tankou CS50 Finans ki pèmèt ou sijè rechèch done ak rafrechi done dynamique. Ou pa ap ale nan gen yo sèvi ak jis yon dosye tèks ki senp oswa CSV. Ou ka aktyèlman itilize yon baz done entelijan pwogram pou ke ou ka egzekite plis demann sofistike pase jis lekti nan tout bagay linear. Se konsa, pou egzanp, sa a se sa nou bay ou soti nan bwat la pou p mete-sèt. Sa a se yon tab la avèk aparamman omwen twa kolòn, youn nan ki se non itilizatè, youn nan ki se regle, ak lòt la nan ki se ID. Men, bagay la enteresan, ak jis toumante soti yon sèl te panse isit la, non itilizatè se prezimableman deja inik, dwa? Mwen vle di, ki pi nenpòt ki sou sit wèb, si ou gen yon non itilizatè, gen pa ka gen de caesars. Gen pa ka gen de malans. Gen pa ka gen de jharvards. Inik li. Sinon, yo pa konnen ki jharvard li aktyèlman se. Se konsa, sa ta ka motivasyon an pou tou li te gen yon kolòn twazyèm sou bò gòch la gen rele ID, ki sanble yon nimewo ki nan Menm jan an tou inik? Li santi l yon ti kras redondants m 'nan premye gade. Poukisa ta ka li dwe irezistib gen pa sèlman usernames inik, men tou, nimewo inik? ODYANS: Yo te kapab gen modpas la menm. DAVID Malan: Moun ka gen modpas la menm, asire w. Sa ka absoliman rive. Men, si yo gen sa a non itilizatè inik, mwen ta diskite ke ki fè pa reyèlman pwoblèm, paske si yo tape nan yo non itilizatè, mwen sèlman bezwen tcheke yo modpas, ladan l 'regle yo. Poukisa lòt bagay? ODYANS: Pi vit chache. DAVID Malan: Pi vit chache. Poukisa? ODYANS: ID se jis yon sèl. DAVID Malan: ID se jis yon karaktè, oswa yo dwe plis presi, li nan yon nimewo, se konsa li la pwobableman 32 Bits oswa yon bagay tankou sa. Lè nou konsidere ke non itilizatè a, aparamman Jason Hirschhorn a jiska gen sòt de ridikil long, ak li a ale nan pran m 'yon anpil plis tan fisèl konpare H-I-R-S-C-H-H-O-R-N, e petèt yon 0 / oswa yon bagay tankou sa, yo nan lòd yo gade jiska Jason, kòm opoze a jis li di, ban m 'kantite itilizatè de. Sa a 32 miyèt moso. Li se yon INT sèl ki ou gen yo konpare. Ak tout bon, se te ekzakteman poukisa baz done yo gen tandans bay idantite ki inik nan ranje nan yo. Koulye a, kalite done ki lòt ki genyen san konte INT ak aparamman strings tankou sa a? Oke, yo dwe plis apwopriye, SQL baz done, tankou Miskl yo, yo gen jaden CHAR. Apre sa, Char yon ti kras tor se pa yon CHAR sèl. Yon jaden CHAR nan yon baz done miskl se youn oswa plis karaktè, men li nan yon fiks kantite karaktè. Se konsa, pou egzanp, si m 'ale nan men fpmyadmen jan ou ka gen deja, oswa byento pral yon pwoblèm pran sèt, epi mwen ale nan baz done m 'yo, ak jis pou plezi, kite a kreye yon tab nouvo rele teste ak jis de kolòn. Mwen pral Lè sa a, klike sou Ale. Lè sa a yo ap vin san patipri yo konnen yo, espesyalman jan ou Tinker alantou sou pwòp ou yo. Men mwen ta ka tape ID yo kreye yon tab nouvo nan kalite INT. Men, isit la mwen ta ka tape non itilizatè rkree ki tab pi bonè. Apre sa, remake mwen gen yon pakèt tout nan kalite yo chwazi nan. Lè sa a twò se poukisa fpmyadmen se kalite bèl. Li nan kalite pwòp tèt ou-ansèyman nan ke ou ka jis kalite pwen, epi klike sou, ak gade nan meni deroulan, ak dégager soti nan ke sa pouvwa SQL ban nou an. Ak tout bon, si mwen chwazi CHAR, mwen Lè sa a, gen ou presize longè a, oswa ki jan valè anpil moun, ki jan anpil charaktèr. Valè Se konsa, trè komen yo se bagay sa yo tankou 255, men sa a yon ti kras lontan. Souvan se uit pou yon non itilizatè. Men, sa a yon ti kras ti jou sa yo. Se konsa, sa a se yon desizyon konsepsyon. Èske li 8 karaktè max, 32, 255, 1,000? Li nan reyèlman moute nan ou. Men, yon jaden CHAR se yon nimewo fiks yo. Se konsa, chwazi tou kèk epi w ap kalite vise si ou vle yon non itilizatè pi long lan. Chwazi twòp lekòl epi sa ki nan anba kote an? ODYANS: [fèbl]. DAVID Malan: Se inutil. Jis tankou nan C, si ou gen yon pi gwo moso nan memwa pase ou bezwen, w ap jis gaspiye tan ak gaspiye espas. Se konsa, kòm yon altènativ, gen egziste Varchar, ki rezoud pwoblèm sa a pa trete longè pa tankou yon longè fiks, men kòm yon longè maksimòm, ak lè l sèvi avèk yon nimewo varyab nan charaktèr, ki Lè sa a, gen tandans yo itilize sèlman kòm anpil charaktèr jan ou aktyèlman bezwen. Sa ki son pafè. Poukisa nou pa nou debarase m de la Done CHAR tape lè sa a? Ki sa ki ta kapab anba kote an nan lè l sèvi avèk VARCHARs, ki son tankou li nan yon genyen bèl? Yeah? ODYANS: [fèbl]. DAVID Malan: OK, bon. Se konsa, si tout done ou se menm bagay la longè, sa ki nan enkyetid an? ODYANS: Paske w ap gaspiye done pa di yo tout. DAVID Malan: Se konsa, si tout nan done ou a menm longè, menm si, mwen ta diskite ki espesifye yon longè maksimòm sou varchar se pa diferan de ki espesifye yon longè fiks sou CHAR si ou konnen ke nimewo an davans. Men, gen tout bon, epi mwen pral sòt de ekstrè soti nan ke repons reyalite a ki di ke gen la toujou yon max, sa ki kapab dwe anmèdan, espesyalman si w rankontre non yon moun nan ki nan trè long ke ou pa t ' antisipe. Apre sa, li la tou yon ti kras mwens efikas ki aktyèlman rechèch sou VARCHARs kòm yo te opoze ak chèche charaktèr, espesyalman pou tab long ki gen anpil bagay ak anpil nan done. Se konsa, isit la tou, tematik se ankò pa gen okenn chwa evidan. Se konsa, jis ba ou yon sans de lòt kalite done ki kapab nan enterè swa pou p-mete sèt oswa nan tan kap vini an, gen nan INT. Genyen bigen, ki se tankou lontan lontan. Li gen tandans ka 64 miyèt moso. Genyen desimal, ki ou pral wè nan pwoblèm seri a, ki se yon pi cleaner repons a pwoblèm sa yo nou rankontre ak flote ak k ap flote pwen enpresizyon. Lè sa a, gen nan dattim. Genyen literalman yon kalite done ki gen yo gade tankou yon ane, yon mwa, yon jou, ak yon èdtan, minit, epi dezyèm fwa. Men, baz done SQL yo te genyen tou bagay sa yo nou pral rele endis. Apre sa, yon endèks la se yon bagay ke ou presize lè y ap kreye tab la fè fouy ak lòt operasyon pi efikas. Espesyalman, gen nan yon bagay yo rele endèks la PRIMARY ke ou ta ka deklare jan sa a. Nou te fè sa a pou ou ak nan itilizatè tab nou ba ou. Men, remake si mwen te manyèlman rkree itilizatè tab la isit la bay li yon non nan itilizatè. Mwen deja espesifye ID. Mwen espesifye INT. Mwen espesifye non itilizatè ak maksimòm 32 karaktè. Men, si nou kenbe defile nan sa a san patipri fenèt lajè, avi gen yon pakèt moun sou lòt bagay mwen ka presize. Youn, mwen ka presize atribi tankou, ou konnen ki sa, sa a INT yo ta dwe siye. Mwen pa vle nimewo negatif, Se konsa, kite a fè l 'siye. Nil se pa enpòtan isit la paske Mwen vle chak itilizatè gen yon nimewo inik. Mwen pa vle li nan dwe nil. Men, sa a se enteresan. Mwen ka presize ke ID se swa nan kle prensipal la baz done sa a, oswa li nan inik, oswa li a Catalogue, oswa tèks plen. Se konsa, pou rezon jodi a, depi lontan istwa ti bout tan, PRIMARY vle di ke sa a va tou de concept ak teknikman jaden an ke nou itilize nan inikman idantifye itilizatè. Se konsa, lè nou gade moute itilizatè yo, sa a se sòt nan yon pwomès yo gade yo moute sitou pa ki idantifyan inik. Apre sa, baz done a pral asire ke si ou gen yon nimewo itilizatè 3, ou pa kapab fizikman insert yon lòt itilizatè avèk nimewo sa a menm 3. Baz done a pral jis refize pou konsève pou chanjman ou. Ki se yon bon bagay, paske ou kapab pwoteje tèt ou kont tèt ou. pwòp tèt ou Altènativman, pou non itilizatè. Se konsa, dezyèm ranje a, sonje, se jaden an non itilizatè. Se konsa, dezyèm ranje a, isit la se non itilizatè, jan nou te fè sou byen lwen kite a gen. Se konsa, sa lòt bagay mwen ta ka vle presize? Mwen pa pèmèt yo, dapre SQL, ou presize de kle prensipal. ou ka presize yon kle kote ou jwenti gade nan tou de jaden yo, men yo pa kapab endividyèlman gen kle prensipal. Se konsa, sa a, se deyò nan kesyon an. Se konsa, ki ta ka mwen vle yo chwazi? Oke, inik se menm jan an nan Lespri Bondye a yon prensipal kle kote ou presize sa a jaden va inik, men li la pa ale nan fè yon sèl la Mwen sèvi ak tout tan tout tan an. Apre sa, nou pa ap ale nan sèvi ak yon sèl sa a tout lè pou yo fè sa ki rezon ki fè ankò? Li nan pi dousman potansyèlman si li nan yon non itilizatè lontan. Se jis yon fatra nan tan. Main Index, pandan se tan, presize ke li nan pa ale nan dwe inik, men mwen ta renmen ou fè travay ou majik ou anba a kapo a fè l 'pi vit pou mwen pou m rechèch sou jaden sa a. Se konsa, sa a pwobableman se pa enpòtan isit la. Pou non itilizatè, mwen ta diskite ke Inik se yon repons bon. Men, si ke nou te fè divinò plis enteresan pase jis usernames, achaj, ak nimewo ID. E si nou te bay pèp non plen? E si nou te ba yo adrès ak lòt done sou yo? Bon, si ou presize ke yon kolòn nan yon se baz done Catalogue, ki vle di ke Miskl, oswa Oracle, oswa kèlkeswa sa baz done w ap itilize, yo ta dwe travay majik li yo epi sèvi ak kèk kalite done anpenpan estrikti tankou yon pyebwa, oswa yon trye, oswa yon hash tab, oswa yon bagay yo garanti ke lè ou rechèch pou done lè l sèvi avèk chwazi sou sa jaden patikilye - tankou montre m tout moun ki ap viv sou Oxford Street. Yon rechèch tankou sa. Si ou te espesifye nan davans ki ou vle yon endèks sou sa jaden, nan rechèch yo pral pi, anpil pi vit. Si ou pa presize yon endèks, pi bon an ou ka fè se yon rechèch lineyè si li pa nan Ranje. Men, si ou presize Main Index, entelijan a moun ki te fè baz done a - moun tankou ou ki kounye a konnen pye bwa ak ap eseye ak tablo yo hash - pral otomatikman bati tankou yon done estrikti nan RAM a asire w ke moun ki fouye yo se anpil pi vit. Tèkst pandan se tan se menm jan an nan lespri, men pèmèt ou fè mask rechèch, tankou montre m tout moun ki ap viv nan lari ki kòmanse ak nan lèt O pou kèlkeswa rezon. Ou kapab fè rechèch mask tankou sa. Oswa, bagay ki pi irezistib tankou montre m 'tout moun ki gen pawòl Bondye a - montre m tout moun ki gen non kòmanse avèk yon lèt an patikilye. Ou kapab fè rechèch pou mo kle nan fason sa a. Tout dwa. Se konsa, opòtinite konsepsyon gen potansyèlman. Gen lòt moun ki mwen pral balanse men m 'nan. Li sanble ke ou ka gen diferan motè depo. Lè sa a se pi plis Esoteric pase nou bezwen sètènman pou pwoblèm mete sèt moun. Pa default, ou nèg yo lè l sèvi avèk yon bagay yo rele InnoDB. Ou pral wè mansyone nan yon kote sa a nan koòdone fpmyadmen a gen plis chans. Men, konnen ke gen lòt konsepsyon desizyon ki nan potansyèl enterè vin pwojè final si ou fè yon bagay ki baze sou wèb. Men, kite a fè sa. Ann al pi devan epi mete sa a sou la ekran kòm yon kol pou yon istwa ki enplike ou, yon kolokasyon, ak yon vè lèt. Ann pran yon minit de oswa konsa kraze isit la. Men, si ou ka bwa alantou li, se pou yo vin tounen, gade yon ti jan pi plis nan SQL, ak Lè sa a, yon ti jan nan JavaScript ak p-mete uit nan tèt li. Tout dwa. Se konsa, kite a fè ou jwenn panse sou yon ka kwen ki ka trè fasil leve nan yon kontèks lè l sèvi avèk yon baz done, oswa franchman, menm lè l sèvi avèk bagay sa yo mond reyèl tankou ATM jwenn lajan. Se konsa, isit la nan yon frijidè. Sipoze ou te gen yon sèl twò nan dòtwa ou a oswa lakay ou. Apre sa, ou te gen yon sèl kolokasyon, ak tou de nan ou reyèlman renmen lèt pou egzanp. Se konsa, ou vin lakay nan klas yon sèl jou. Li oswa li te nan pa ankò tounen. Ou louvri frijidè an. Ou reyèlman vle yon gwo vè lèt. Gen nan pa gen lèt. Se konsa, sa ou fè? Ou fèmen frijidè an. Ou gen tan pwan kle ou. Ou ale deyò nan kare a. Epi ou jwenn nan liy nan CVS nan moun ki kesye pwòp tèt ou bagay sa yo, ki toujou pran plis tan pase aktyèlman li te gen Kesye. Kanmèm. Se konsa, lè sa a, pandan se tan, dot dot dot, ou kolokasyon vini lakay ou epi li oswa li te Menm jan an tou gen yon anvi pou kèk lèt. Se konsa, li oswa li te louvri frijidè a, sanble anndan an, e oh, modi. Pa gen lèt. Se konsa, li oswa li te dirije soti, k ap pase nan ale nan lòt CVS a, ki te sèlman yon bloke lwen pou kèk rezon, epi li oswa li vin nan liy yo achte kèk lèt. Pandan se tan, ou vini lakay li, li oswa li vini nan kay la, epi ki sa fè ou finalman genyen? De fwa lavalè lèt. Men, ou pa vrèman renmen lèt ki anpil. Se konsa, kounye a ou gen anpil lèt ki kounye a youn nan yo se jis pwal ale tounen evantyèlman. Se konsa, sa a se yon pwoblèm reyèlman move. Dwa? Se konsa, sa ki te rive? Se konsa, fondamantalman, sa a se kalite nan yon egzanp ridikil. Men, anba kapo a, ki sa nou te gen rive isit la se tou de nan nou tcheke eta a nan kèk moso nan memwa, frijidè a. Tou de nan nou tcheke eta a nan kèk varyab. Ou tou de trase yon konklizyon ke ou Lè sa a, aji sou. Men, malerezman, pandan y ap kolokasyon ou te nan magazen an, eta a nan ki varyab chanje, li oswa li te tounen vin e kounye a, vle chanje eta a, men li nan te deja chanje sou li. Ak nan kou, li pa ta gen ale nan magazen an si yo te konnen ke ou te deja en wout. Se konsa, nan mond reyèl la, ki jan ou te kapab evite pwoblèm sa a, an konsideran ou gen yon frijidè, ou gen yon kolokasyon, epi ou aktyèlman renmen lèt? ODYANS: Kominikasyon. DAVID Malan: Kominikasyon. OK. Men, ki jan ta ka ou kominike? ODYANS: Kite yon nòt. DAVID Malan: Kite yon nòt, dwa? Toujou kite yon nòt, pou fanatik nan montre la. Tout dwa, kidonk toujou kite yon nòt, oswa mete se vre wi: tankou yon kadna oswa yon bagay sou frijidè a ki kenbe ou kolokasyon fè enspeksyon oubyen eta a nan varyab sa a. Koulye a, poukisa ta ka sa a dwe konvnabl nan pwoblèm pran sèt, oswa yo ATM. Oke, imajine yon mond nan yon ATM kote ou ta ka pral kapab ale jiska yon ATM machin isit la, ak yon lòt ATM isit la. Lè sa a k ap pase byen souvan. Apre sa, sipoze ou te gen de kat ATM, ki se posib jwenn. Epi ou ale nan tou de machin efektivman ansanm, èspere ke pandan y ap pa gen yon sèl nan gade. Lè sa a, ou tape nan nimewo PIN ou an apeprè ansanm. Lè sa a, ou fè yon rechèch balans yo wè ki jan kantite lajan kach ou genyen. Li kite yo di ou gen $ 100 rete nan kont lan. Se konsa, esansyèlman ansanm, ou di yon sèl, zewo, zewo, antre. Epi ou èspere ke jwenn tounen kèk lajan. Men, konbyen lajan ou ta ka jwenn tounen? Koulye a, òdinatè nan fen jounen an, espesyalman si yo ap pale ak serveurs, pa nesesèman fè bagay sa yo yo nan lòd la ki nan espere. Se konsa, si sa k ap pase, paske yo te tou sa rezo vitès pwoblèm gen yo, oswa pwoblèm CPU gen, oswa anyen tankou sa yo, ta kwè se nan premye ATM chèk balans ou ak wè, oh, moun sa a gen $ 100. Men, Lè sa a, vin distrè paske petèt yon backup k ap pase ak se konsa li a ralanti. Oswa petèt pandan y ap tcheke, rezo a ki koneksyon te resevwa yon ti kras pi dousman paske sa a jis k ap pase. Yo ap aparèy fizik. Se konsa, pandan se tan, ATM lan se dezyèm mande kesyon an menm. Ki kantite lajan David genyen? $ 100 a ki repons ki. Men, paske se ATM nan premye gen pa ankò voye mesaj la fè soustraksyon $ 100, tou de ATM yo te enspekte vout bank la a, wè gen nan $ 100 a, e kounye a, tou de machin ki kapab yo ale nan krache yon repons. Koulye a, sa a se gwo pou ou nan kèk sans si sa bank la fè finalman se chanje kantite lajan an mwens 100 pa anviwònman egal a varyab ou bank kont egal a 0, tankou yo te opoze nan fè mwens 100. Koulye a, nan ka ki pi mal pou bank lan - oswa nan pi bon an pou bank la, pandan se tan, yo ba ou $ 200, ak kont labank ou an kounye a montre negatif $ 100, ki reyèlman pa fè sa benefisye ou nan tout. Men, pwen an se ke ras sa a kondisyon pou de kolok ap resevwa lèt, oswa pou de machin ATM ap eseye jwenn lajan kach ak chanje eta a nan yon vout an menm tan an egziste nenpòt ki tan ou gen yon baz done. Koulye a, nan pwoblèm mete sèt, pwoblèm sa a rive nan sans ke si ou achte yon pati nan Facebook stock, ak Lè sa a, pou egzanp ou achte yon dezyèm pati nan Facebook stock, ou bezwen fè yon desizyon kòm pwogramè la. Yo nan lòd dwe deside kijan pou mete nan baz done, chans yo w ap ale nan gen yon sèl ranje pou sa stock, ak sa a se yon fason aplike li. Apre sa, w ap ale nan gen yon sèl pati nan FB, ki se senbòl montr stock yo pou non itilizatè sa a, oswa itilizatè sa a ID, idantifikatè inik. Men, menm istwa a ka rive isit la. Si ou fè sa yon CHWAZI nan SQL, menm jan ou ap wè nan pwoblèm pran sèt lè ou wè la a, oh, David yo gen yon sèl pati nan Facebook machandiz. Kite m 'chanje sa a gen de aksyon, paske li te vle achte yon dezyèm pataje. Men, si David aktyèlman te gen de fenèt navigatè louvri, oswa ta kwè se li nan yon kont konjwen ak de mari oswa madanm, ak tou de peyi yo yo ap eseye fè menm operasyon an, gen, tou, nan potansyèl egziste pou pran yon desizyon yo dwe te fè ki baze sou anvan an eta nan mond la - kont lan gen yon sèl pati - ak tou de moun, oswa toude serveurs, kounye a eseye di enkreman li nan de aksyon. Men, nan ka sa a, ou ta ka genyen chaje m 'pyès lajan pou tou de aksyon, men enkremante sèlman sa yon sèl fwa. Se konsa, nan ti bout tan, pwoblèm nan fondamantal isit la, menm jan ak blag la sou kite yon sonje, oswa mete yon kadna sou li, se si de moun, oswa de fil - panse tounen nan grafouyen - ka enspekte eta a nan kèk varyab ak Lè sa a, eseye chanje varyab sa a, men de bagay sa yo pa rive nan nan menm tan men li kapab jwenn koupe pa lòt bagay k ap pase, done kapab jwenn nan yon eta trè etranj. Apre sa, ou ka benefisye oswa ou ka soufri nan sans nan egzanp lan lajan. Se konsa, nan pwoblèm mete sèt, nou ba ou liy sa a youn nan Kòd, ki long istwa kout, rezoud sa a pwoblèm nan miskl. Enstriksyon sa a ki fè sa ki pa trè long menm anfòm sou yon liy sou la ekran isit la asire ke operasyon ou se sa ki yo rele atomik. Li tout k ap pase nan yon fwa, oswa li pa rive nan tout. Sa a fraz trè long pa kapab jwenn koupe pasyèlman. Apre sa, ki sa li fè se literalman sa li di. Antre nan kèk tab sa ki annapre yo twa jaden valè sa yo espesifik, men sou kopi kle yo, pa fè yon insert. Èske yon ajou. Se konsa, sa a se tankou fè yon chwazi epi yon Antre se konsa yo pale an menm tan an. Ak sa ki se kle a ke sa ka petèt ke yo te refere yo bay isit la? Li sanble, epi ou pral wè sa a nan pwoblèm mete espèk sèt a, paske nou te deklare gen yo dwe yon kle inik sou tab sa a an patikilye sa yo ki ou pa ka gen ranje miltip pou itilizatè a menm ak la menm pyès lajan stock senbòl - nan egzanp sa a isit la, DVN.V se yon estòk jounen travay komik ke nou al gade nan nan espèk a. Paske nou te deklare li nan dwe inik, ki sa sa a vle di se ke si ou eseye mete yon ranje kopi, w ap olye pou ale nan mete li san yo pa nenpòt lòt moun ki gen yon chans chanje eta a nan mond lan swa. Se konsa, nan ti bout tan, sa a asire bagay sa yo yo atomik. Plis jeneralman menm si, baz done tankou miskl - ak ou pa bezwen karakteristik sa a pou p-mete sèt, men kenbe l 'nan tèt ou pou tan kap vini an - sipòte sa yo rele tranzaksyon, kote ou ka di KÒMANSE TRANZAKSYON literalman. Ou ka Lè sa a, egzekite de deklarasyon SQL. Apre sa, yon deklarasyon SQL, menm jan ou ap wè nan P-mete sèt, sanble yon ti kras yon bagay tankou sa a. Mete ajou yon tab rele kont. Mete kolòn nan balans egal a tou sa kolòn nan balans kounye a se mwens 1,000 kote nimewo a, nan nimewo kont, tankou ID a itilizatè, egal 2, ak Lè sa a, aktyalizasyon kont dot dot dot. Se konsa, an tèm pwofàn la, ki de sa yo demann sanble yo dwe ap fè nan la sans mond reyèl nan bank? ODYANS: transfere nan ekonomi. DAVID Malan: Egzakteman. Transfere finansman ki sòti nan yon sèl kont nan lòt la. Lè sa a se yon lòt egzanp kote ou reyèlman vle de bagay sa yo rive oswa ou pa rive. Ou pa vle yon bagay yo jwenn nan nan presegondè nan yo e yo kapab dezòd yo matematik la, oswa dezòd yo konbyen lajan lajan ou genyen, oswa konbyen lajan bank la te genyen an. Se konsa, sa se vrèman bèl sou tranzaksyon nan miskl se ke, ak baz done plis jeneralman, se yo ke yo ak moun ki entelijan ki te aplike karakteristik sa yo figi konnen kouman ou fè asire w ke tou de nan bagay sa yo rive oswa ou pa nan tout. Men, si ou se vrèman aspiran fè yon sit entènèt ki nan itilize pa moun ki nan lakou lekòl la, moun ki nan mond reyèl la, ap fè yon bagay nan sans nan demaraj, sa yo, se kalite ki nan desizyon desen ki vin tout tan tout tan tèlman enpòtan. Otreman, ou kòmanse ap pèdi done, ou ka pèdi itilizatè yo, oswa nan ka ki pi mal la kòm nou te wè isit la, ki kapab pèdi lajan. Se konsa, ankò, plis sou sa nan pwoblèm mete sèt, osi byen ke petèt pou kèk nan ou nan pwojè final la. Se konsa, kite a chanje sa foto nou te gen yon ti moman Anons sa pibliye depi jis nan yon sèl plis fason. Se konsa, kite m 'aktyèlman wè si mwen kapab - Non, ki nan ale. Gen li ye. Se konsa, sa a se kote nou te kite dènye fwa. Apre sa, li vire soti nou pral lanse yon sèl plis bagay nan melanj la isit la - yon lang yo rele JavaScript. Se konsa, JavaScript aktyèlman adapte nan pyès sa a - ak mwen pa t 'byen kite ase espas, Se konsa, sa a se pa kounye a sou yon echèl. OK, sa a se vrèman minables. OK, se konsa sa a, se JavaScript. Tout dwa. Mwen vrèman fè li yon move. Tout dwa. Se konsa, JavaScript se yon lòt pwogram lang, ak dènye nou an, Si ki ede rasire ke gen nan pa vo pi plis bouch vàn dlo yo dife isit la. Se konsa, JavaScript se tou yon entèprete lang, ki vle di ou pa fè sa konpile l 'nan zewo ak moun yo. Ou jis kouri li. Men, sa ki nan fondamantalman diferan ak JavaScript anjeneral se ke ou pa kouri l 'sou sèvè entènèt ou an. Li pa jwenn kouri nan la aparèy se pou chak. Olye de sa, li vin telechaje pa yon itilizatè via HTTP nan navigatè yo - Chrome, Safari, Internet Explorer, Firefox, kèlkeswa sa - epi li navigatè a ki ègzekutra sa a patikilye lang programmation. Se konsa, yo dwe klè, PHP konsa byen lwen te gen egzekite swa nan liy lan bay lòd nan nou fenèt nwa ak blan, sou yon sèvè tankou aparèy la, yon òdinatè renmen aparèy la, oswa li te gen egzekite pa yon sèvè sit entènèt kouri sou yon òdinatè. Men, tèm nan isit la se ke PHP konsa byen lwen ki te egzekite sèvè-bò, Se konsa, itilizatè a ak navigatè itilizatè a pa janm wè yon liy nan Kòd PHP. An reyalite, si ou te janm louvri yon navigatè pou sit entènèt ou an oswa yon lòt, epi ou aktyèlman wè kòd PHP nan fenèt ou, yon moun te vise yo. Paske li pa nan te vle di yo dwe voye l nan yon navigatè dirèkteman. Li sipoze dwe egzekite epi yo tounen vin nan yon bagay tankou HTML. Men, JavaScript se esansyèlman opoze an. Li vle di yo dwe kouri tipikman andedan nan fenèt navigatè yon itilizatè a. Ansanm ak ki kalite sou sit entènèt sèvi ak JavaScript Lè sa a, jou sa yo? Menm jan ak literalman chak sou sit wèb popilè. Chak sit wèb ke ou nèg pwobableman itilize chak jou itilize JavaScript pou la ki pi senp lan e menm nan sèksi karakteristik. Se konsa, yon bagay tankou Facebook Chat si ou itilize sa. Ki jan ki aktyèlman ap travay? Oke konsa byen lwen, nan tout bagay la nou te fè ak HTML ak PHP sipoze ke ou rale moute yon URL, epi ou frape Antre, epi ou wè kèk kontni HTML. Epi ou klike sou lyen an, ke chanjman sa yo URL, chanje paj la, epi rcharj kèk nouvo kontni. Klike sou yon lòt URL oswa soumèt yon fòm, ou jwenn whisked ale nan yon lòt paj ak ou wè kèk kontni nouvo. Men, lè l sèvi avèk yon bagay tankou Facebook Chat, oswa Gchat, oswa Google Maps, raman paj la tout antye rafrechi sa yo ki ou wè yon ekran blan pou yon ti tan ak Lè sa a, nouvo kontni. Olye de sa, paj wèb jodi a se dynamique resevwa mete ajou ankò, li ankò e ankò tout sòt nan dèyè sèn nan. Men, li sanble ke lè ou ale nan yon bagay tankou Facebook, oswa Gchat, oswa Gmail, ak dènye yo paj otomatikman san yo pa rupture la ekran tout antye, sa ki te pase se ke te navigatè ou te fè sòt de kachèt plis HTTP demann - pa pou paj wèb antye, men jis pou fragman ti kras nan done, tankou nan mesaj enstantane ki zanmi ou jis voye ou, oswa pou fè mizajou nan sitiyasyon ki yon moun jis voye nou, oswa tweet la ke yon moun jis te voye yo. Li nan jis fè demann ti kras pou done, ak Lè sa a, lè l sèvi avèk JavaScript, sa a pwogramasyon lang, chanje sa paj wèb la sanble san yo pa la sèvè ede, san yo pa sèvè a génération ki HTML. Se konsa, nan kout, JavaScript ka itilize Lè sa a, pa sèlman chache done nouvo soti nan sèvè a san yo pa rupture yon antye paj oswa soumèt yon fòm. Li kapab tou gen pou itilize chanje Dom la sa yo rele - dokiman objè modèl - ki se jis fason an anpenpan pou li di pyebwa ki fè moun HTML ke nou te wè dènye fwa. Se konsa, rasire, JavaScript se syntactically se konsa menm jan ak C yo tou. Gen nan pa gen fonksyon prensipal. Ou jis kòmanse ekri kòd la epi li pral jwenn egzekite, oswa entèprete plis byen. Kondisyon ap gade tankou sa a. Pa diferan de C oswa PHP pou ki matyè. Ekspresyon Boolean oswa-ed ansanm pral gade tankou sa a. Anded ansanm gade tankou sa a. Switch pral gade tankou sa a. Pou pasan ap gade tankou sa a. Pandan ke pasan ap gade tankou sa a. Èske pandan y ap pasan ap gade tankou sa a. Sa a se nouvo. Se konsa, JavaScript gen pa yon fortch konstwi se pou chak, men sa a konstwi pou mwen varyab nan etalaj, epi m'ap fè sa a ka vin tounen yon valè endèks. Se konsa, li yon ti kras diferan de sa fortch, menm si vèsyon nouvo nan JavaScript ap vini soti tout tan tout tan an, kidonk menm sa yo lang karakteristik yo en. Men, kòm yon sou kote, jou JavaScript sa yo kapab tou itilize sou yon sèvè jis tankou PHP lè l sèvi avèk yon fondasyon ki rele Node.js. Youn nan TFs CS50 a, Kevin, te dirije yon seminè sou Node.js sa a, se disponib nan cs50.net/seminars. Se konsa, si w ap kirye, konnen ke ou ka itilize sa a sou bò sèvè kòm byen, men sa a yon tandans san patipri ki sot pase, men yon yon sèl pwisan nan sa. Sa a se yon ti kras diferan. Sa a se yon etalaj nan JavaScript. Ak sa ki frape ou, menm jan diferan kont C oswa PHP? Gen kèk istwa rapid nou kapab di isit la. Ki sa ki nan manke kont PHP? ODYANS: [fèbl]. DAVID Malan: Wi? Padon, di ankò? ODYANS: Pa deklare kalite a nan varyab. DAVID Malan: Nou pa ap deklare kalite a nan varyab. Se konsa, aktyèlman byen tankou PHP, nou pa ki espesifye ki kalite sa a varyab. Olye de sa, nou ap plis generic li di var pou varyab. Nou pa gen nwuizans PHP a nan la siy dola, ki pandan y ap fatigan yo kalite, fè plis klè ke yon bagay nan yon varyab. Lè nou konsidere ke isit la, nou ap sòt de tounen nan Apwòch C a pa jis rele yon varyab nan non nou vle bay li, tankou chif yo. Epi tou tankou PHP, nou gen parantèz kare pou la valè andedan ki etalaj. Se konsa, varyab nan JavaScript tou ta ka gade tankou sa a. Avi isit la sa a se yon fisèl rele a, men Menm jan an tou yo te nou pa espesifye ke li nan yon kòd. Isit la menm si se yon karakteristik ki fè sa ki pa egziste nan egzakteman menm jan an nan PHP, men yon ti jan Menm jan an tou. Sa a se yon objè nan JavaScript. Men, objè ki sòt de Lame Swis Kouto nan yon estrikti done nan ke ou ka sèvi ak yo pou nenpòt ki nimewo de bagay sa yo. Isit la, pou egzanp, nou ap deklare yon varyab rele quote. Kalite nan varyab sa a se yon objè. Ou ka panse a sa a kòm yon struct C ki gen kle ak valè. Senbòl se yon kle. FB se yon valè, aparamman yon senbòl machandiz. Vigil. Pri a se yon lòt kle yo, ak valè li yo se aparamman yon pwen k ap flote, oswa yon nimewo plis jeneralman nan JavaScript, de $ 49,26. Se konsa, PHP pa gen - nou pa te wè nan PHP objè byen tankou sa a, men nou te fè wè yon analòg, ki te ki sa? ODYANS: [fèbl]. DAVID Malan: ranje asosyativ. Se konsa, Lè nou konsidere ke PHP gen ranje asosyatif ki gen sentaks se tout tan tout tan yon ti kras konsa diferan - nou te wè parantèz yo kare. Nou te wè flèch etranj senbòl yo. JavaScript gen objè, men sa a se sitou yon diferans semantik ak yon diferan synonym pou kounye a. Sepandan, kòm yon sou kote, PHP tou te gen objè ki nan yon fason ki Java ak lòt lang gen objè ki nan objè-oryante pwogram. Men, nou pral sèvi ak sa yo jis pou kalite done pou kounye a. Objè ak ranje asosyatif. Sa a ki ta ka yon fè l ' yon ti kras plis klè. Isit la nan poukisa yon objè se itil. Lè ou vle deklare yon elèv, tankou Zamyla, nou ka aktyèlman ankapsulasyon se konsa yo pale andedan nan ki objè lè l sèvi avèk parantèz Curly jis tankou anvan yon pakèt tout nan kle ak valè nan isit la. Nou gen yon ID, kay yon, ak yon non pou Zamyla, ki te swiv pa yon virgules kòm abityèl nan fen an. Desann isit la tou, sa a se yon ti kras diferan, men tou, trè pwisan jou sa yo. Isit la nan yon etalaj, mwen konnen sa paske gen yon moute bracket kare tèt ak yon bracket kare nan pati anba a. Lè sa a se yon etalaj de sa done tape aparamman nan JavaScript? Sa a se yon etalaj de li sanble tankou twa objè yo. Apre sa, mwen konnen li nan yon objè sèlman paske yo te aparèy òtopedik yo Curly. Apre sa, remake gen nan louvri atèl Curly, kèk bagay, fèmen aparèy Curly, vigil, Lè sa a, kèk plis, vigil, ak Lè sa a, kèk plis. Se konsa, sa a, se twa agiman ki separe pa de vigil. Se konsa, sa a se yon etalaj de twa objè yo. Epitou, chak nan moun ki objè parèt yo dwe yon elèv oswa yon anplwaye nan kèk sòt, yo chak ak yon ID, kay, ak non. Men, mwen te rele sa a yon bagay rele JSON - JavaScript objè Notasyon. Lè sa a se yon fòma done ki aktyèlman se konsa trè popilè ak nan lamòd jou sa yo ke si ou ekri yon aplikasyon ki sèvi ak Facebook a API, API nan Twitter, reyèlman prèske nenpòt ki API yo deyò jou sa yo, ki gen ladan kèk nan pwòp CS50 a, nan done ou jwenn tounen se pa nan fin vye granmoun fòma CSV lekòl la. Paske sonje ke CSV se super senp. Li se jis kolòn separe pa vigil. JSON done ba ou plis Metadata. Li asosye yon kle ak tout valè sa yo pa gen jis asime ke kolòn nan zeroth se youn valè, kolòn se yon sèl yon lòt, kolòn de se yon lòt. Tout bagay nan yon objè JSON isit la se sòt nan pwòp tèt ou-ki dekri, paske chak youn nan non sa a nan dosye a gen literalman non nan devan li kòm yon te site fisèl. Se konsa, kite a pran yon gade nan yon koup la egzanp isit la. Kite m 'ale nan aparèy la. Apre sa, kite m 'ale nan vhost nou anyè nan piblik la. Apre sa, kite m 'ale nan nan JavaScript anyè. Li kite yo ale pi devan epi louvri moute Dom-0.html, kote Dom jis vle di modèl objè dokiman. Li nan bagay la pyebwa yo ki Mwen refere yo bay pi bonè. Apre sa, kite m 'pwopoze sa ki annapre yo. Isit la nan yon paj wèb ki gen kò a se trè senp. Se konsa, desann isit la nan pati anba a, remake mwen gen yon fòm. Nou te wè sa yo anvan. Li te gen de entrain, youn nan ki te gen yon ID nan non, youn nan ki te gen yon di ki kalite soumèt, ak premye a di ki kalite yon sèl la se tèks. Se konsa, sa a aktyèlman son trè senp. Ann al isit la. Se pou yo tounen nan paj sa a isit la. Ann al nan lokalost a, ale nan anyè JavaScript nou an, epi ale nan Dom-0, ak isit la nou gen fòm sa a. Se konsa, sa a, se aparamman tout paj sa a ap fè. Li te gen yon jaden Non ak yon Soumèt bouton. Men, mwen pa pwal yo sèvi ak PHP isit la. Mwen pral fè bò kliyan tout bagay se konsa yo pale nan JavaScript jan sa a. Remake mwen te tout bon bay non an jaden nan opinyon sa a yon inik idantifyan, ki pral aktyèlman delivre m 'kèk tan nan yon moman. Apre sa, remake mwen te prezante yon lòt tag nan tèt la nan paj entènèt m 'yo, nan  tag. Se konsa, li nan sans sa a ki JavaScript se yon kliyan-kòt lang programmation. Nan ka sa a, jis tankou CSS, mwen te mete li dwat andedan nan HTML m 'yo. Men, anons mwen te deklare yon fonksyon ki sanble yon ti kras tankou PHP syntactically, men sa a se aktyèlman JavaScript, paske ankò, li nan kliyan-kòt nan navigatè la. Apre sa, pran yon devine kisa sa a ki pral fè, menm si kèk nan sentaks la isit la se nouvo. ODYANS: Di alo moun ki va. DAVID Malan: Li pral di bonjou Nenpòt moun ki vizite paj sa a. Se konsa, ki jan? Se konsa, avi, li vire soti nan JavaScript gen nan yon alèt () fonksyon. Sa a se yon fonksyon trè sòt de tris ke vrèman jis gen tandans fè anbete itilizatè. Li pa yon sèl ou ta dwe reyèlman itilize tipikman, men li nan yon rapid ak sal fason pou sòt de enprime yon bagay nan yon itilizatè grafik koòdone, tankou yon navigatè. Avi isit la ke mwen te gen yon fisèl nan quotes sèl. Li sanble ke kontrèman ak C, JavaScript ka gen aktyèlman ou itilize yon sèl quotes, ak franchman li nan jis kalite nan konvansyon an stylistic nan mitan JavaScript pwogramasyon yo sèvi ak quotes sèl. PHP, yo gen aktyèlman yon ti kras diferan sans. Men, pou kounye a, jis konnen ke sa a, se rezon ki fè yo sèlman. Konvansyon an nan JavaScript se souvan sèvi ak quotes sèl, men nou te kapab itilize quotes doub nan tou de kote yo tou. Se konsa, sa a se enteresan. Sonje byen, dènye fwa ke nou te ke foto sou ekran an ki te trase yon pye bwa kote ou te gen ne nan HTML, ak nan tèt ne, ak ne nan kò, ak Lè sa a, kèk tèks. Men, te gen yon sèl ne espesyal nan la trè tèt pou m 'rele dokiman an. Oke, li vire soti nan JavaScript, nenpòt tan ou ekri yon pwogram nan JavaScript nan yon navigatè, ou gen aksè nan yon espesyal varyab mondyal la. Menm jan an nan Lespri Bondye a superglobals PHP a, se yon sèl sa a yo rele nan tout dokiman miniskil. Se tankou yon konstri, men konstri sa a tou te gen fonksyon andedan nan li. Se konsa, yon konstri C jis gen done tipikman. Men, yon objè ki JavaScript tankou sa a teknikman se tou te gen fonksyon, otreman li te ye kòm metòd, andedan nan li. Apre sa, ou ka rele yon fonksyon andedan nan sa a objè byen literalman fè li yo Non, dot, ak Lè sa a, non an nan fonksyon an, oswa ankò metòd. Se jis nan yon synonym, vrèman. Ak sa ki fonksyon sa a fè? Ou ka kalite devine soti nan non li. Jwenn eleman pa ID. Se konsa, sa a ki pral fè rechèch paj wèb la, rechèch ki pye bwa, kap chèche tou sa ne, AKA eleman, te gen yon inik ID nan quote Non unquote. Lè sa a, ki sa mwen pral fè? Mwen pral jwenn valè a andedan nan ki ne nan pye bwa a, ak mwen pral yon jan kanmenm di alo ak sa yo ki non. Se konsa, pran yon devine, menm si nou pa te gen wè sa a ankò, sa ki fè plis la senbòl vle di isit la ak isit la pwobableman? ODYANS: anchene. DAVID Malan: anchene. Dwa, ak sa yo yo se jis sòt de konsepsyon desizyon moun te fè ane de sa. Nan PHP, ou anchene bagay sa yo ak pwen. Nan C, ou sote nan plizyè sèrkl ak rele fonksyon tankou strcopy () oswa strka () oswa lòt fonksyon sa yo. Men, nan JavaScript, ou sèvi ak pluses. Se konsa, sa a se jis konkatenan twa strings - hello, yon non, ak Lè sa a, yon pwen esklamasyon. Se konsa, lè ak poukisa se fonksyon sa a rele menm si? Oke, pran yon devine ki soti nan HTML nan pati anba a. Poukisa se voye bonjou pou () rele, oswa lè? Aparamman, pi bon jan mwen kapab di, sou soumèt, lè se soumèt fòm sa a, Mwen pral fè tou sa se andedan nan quotes sa yo. Apre sa, espesyalman, mwen pral rele voye bonjou pou () ak Lè sa a, retounen fo. Oke, kite la wè sa ki nèt la efè isit la se an premye. Se konsa, kite m 'ale pi devan epi tape nan, di, Loren, Soumèt. Bonjou Loren. Ann wè si petèt sa a te jis yon aplikasyon chans. Non. Se konsa, li sezisman soti tou sa non mwen aktyèlman mete ladan l '. Men, remake sa ki pa chanje. URL la se toujou Dom-0.html. Gen nan pa gen register.php. Gen nan pa gen dezyèm dosye-a. Gen nan pa gen atribi aksyon. Se konsa, sa a se sa a fo retounen prezimableman fè la a? Poukisa mwen rele voye bonjou pou () ak Lè sa a, retounen fo pwobableman? Ki sa ki nòmalman k ap pase lè ou klike sou Soumèt sou yon fòm ke menm nou gen wè nan semèn ki sot pase? ODYANS: [fèbl]. DAVID Malan: Li ale yon kote, dwa? Li ale nan kèk URL destinasyon. Men, mwen pa vle sa rive fèt isit la. Mwen vle paj entènèt mwen an pral konplètman dinamik tankou Gmail, kote yon fwa w ap la, ou rete la. URL la pa chanje nan yon fason ki endike paj la tout antye ki rupture. Olye de sa, mwen jis vle chanje yon bagay tankou enprime soti yon bagay isit la sou ekran an. Oke, kite m 'netwaye sa a moute yon ti kras. Kite m 'louvri moute pa Dom-0, men kite m 'louvri moute Dom-2 a. Jis pou w te wè kèk sentaks isit la. Li sanble ke sa nou jis t 'ap itilize ap itilize JavaScript anvan tout koreksyon. Se konsa, sa a se vrèman lang nan JavaScript. Gen kèk nan ou ta ka konnen nan yon bibliyotèk rele jQuery. Se konsa, jQuery se pa menm bagay la tou bagay tankou JavaScript. Se jis nan yon bibliyotèk ke yon vrèman entelijan nèg te ekri ak vulgarize sa yo ki prèske tout moun nan mond lan kounye a sèvi ak jQuery lè w ap itilize JavaScript. Apre sa, nan premye gade, franchman, li sanble yon ti kras plis skre. Men, w ap jwenn, espesyalman si w ale gen pou pwojè final ou a ak sit entènèt devlopman, w ap jwenn ke sa a netwaye bagay leve, li sove ou byen yon liy nan Kòd kèk. Se konsa, kite yo jis gade ki jan fòm sa a ap travay. Wè sa mwen te retire aparamman soti nan HTML mwen an? Gen nan pa gen sou soumèt Handler se konsa yo pale. Gen nan pa gen atribi. Paske ou konnen, ki sa ki Mwen pa t 'reyèlman renmen? Mwen te santi nou te tonbe nan abitid fin vye granmoun la. Jis tankou li te kòmanse santi débordan melanje tou de CSS ak HTML, paske w ap kalite voye menm lang sou la tout kote, menm sa te kòmanse santi tankou yon move wout desann ale kote Mwen mete JavaScript Kòd andedan nan mwen HTML olye ke faktè li soti. Se konsa, sa a, se leson an isit la. Nan Dom-2.html, mwen faktè li soti. Apre sa, mwen ap fè bagay sa yo yon ti kras yon fason diferan. Pou kounye a, mwen pral balanse men m ' nan sa ki sa a vrèman fè anba kapo a. Men, jis pou kounye a asime ke ke premye liy nan Kòd nan bibliyotèk sa a rele jQuery jis vle di lè a dokiman se pare, fè sa ki annapre yo. Paske paj wèb ka pran kèk tan yo chaje. Ou ka sou yon entènèt ralanti koneksyon, epi li ta ka k ap vire ak k ap vire, epi finalman li a chaje. Sa liy nan Kòd jis di rete tann jiskaske paj an antye se pare, dokiman an se pare, anvan egzekite Kòd sa a. Epi, koulye a avi, sa a se pwobableman itil ki pi premye pran lwen jQuery. Liy sa a isit la se trè menm jan an nan lespri sa a liy pi lontan ankò isit la. Lè nou konsidere ke nan anvan tout koreksyon JavaScript Kòd, gen egziste yon dokiman objè mondyal ki gen yon fonksyon rele getElementById (), moun yo ki te ekri jQuery senplifye ke yo jis di siy dola, ak Lè sa a, andedan nan parantèz mete de quotes, ak Lè sa a, mete yon senbòl hash ki te swiv pa la ID inik ou vle gen tan pwan. Se konsa, sa a se ekivalan a document.getElementById. Pandan se tan,. Soumèt jis vle di sou soumèt nan tou sa fòm w ap refere li a sou bò gòch la, ale pi devan epi egzekite sa a. Men, sa a se kounye a kiryozite a tou. Ki sa ki nan etranj sou sa ki Mwen te make isit la? Pa sèlman se li kalite syntactically nouvo, gen nan tou yon bagay ki manke. ODYANS: Li jis rele fonksyon? Li pa nan rele alèt yo ye? DAVID Malan: Yeah. Oke, se konsa alèt () se desann isit la, yo dwe san patipri. Men pa gen okenn tras de yon non, tankou ou konnen, foo oswa yon bagay moute isit la. Ak tout bon, sa a se youn nan karakteristik yo nan JavaScript ki la tou afè pwisan, men tou, byen nouvo. Apre sa, PHP aktyèlman gen sa a tou. Kite m 'ale pi devan epi fè yon bagay reyèl rapid. Kite m 'ale pi devan epi mete sa a soti isit la. Kite m 'fè sa. Fonksyon. Se pou yo rele Handler sa a (). Yon fonksyon Handler se konsa yo pale. Yon bagay ki okipe kèk operasyon. Kite m 'netwaye mark m' yo. Apre sa, mete sa a isit la. Apre sa, mete sa isit la. Oui. OK. Se konsa, koulye a, mwen gen yon fonksyon rele Handler () ke mwen pa vrèman konnen ki sa li fè ankò. Li jis toujou gen ki bagay. Whoops. Pran twòp. Se pou yo fè sa. Tout dwa. M regrèt. Tout dwa. Kite m 'fè sa. OK. Ki sanble bèl ak tou dwat voye kounye a. Kite m 'fè sa. Fè sa. Apre sa, OK. Se konsa, koulye a, se pou yo mete sa a sou isit la. Pa plis pwogram sou vole a. OK. Se konsa, koulye a, se pou yo tounen nan kote istwa a te kòmanse. Précédemment, mwen te di ke liy sa a isit la vle di lè dokiman an se pare, ale pi devan epi fè sa. Ki sa mwen vle fè? Oke espesyalman, mwen vle ale pi devan epi fè sa ki annapre yo. Egzekite liy sa a nan kòd, ak Lè sa a, ki sa mwen vle ou fè se rele sa fonksyone lè se soumèt fòm nan. Koulye a, sa a se sa ki nan enteresan. Sa a se pa tèt li yon fonksyon. Atansyon mwen pa mete parantèz isit la nan wout la nòmal. Mwen literalman pase yon fonksyon rele Handler () nan yon lòt fonksyon rele soumèt () kòm yon diskisyon kòm menm si li nan tankou yon varyab. Lè sa a se youn nan karakteristik yo ki nan JavaScript, se fonksyon tèt yo yo se reyèlman jis objè yo. An reyalite, yo ap vrèman jis varyab nan kèk sòt. Men, si non an nan fonksyon an se Handler (), pa gen okenn rezon mwen pa kapab pase l 'nan kòm yon diskisyon isit la. Lè sa a vle di lè fòm nan ki gen ID a nan Demo se soumèt, rele fonksyon sa a. Men koulye a, si mwen defèt tout bagay sa yo, poukisa Lè sa a, mwen te petèt fè sa a yon ti moman de sa? Oke, sa a se yon fonksyon anonim. Paske franchman, mwen reyalize poukisa m ' trakase yo vin gaspiye tan deklare yon fonksyon rele Handler () sèlman yo rele li nan yon sèl ak sèlman yon sèl kote? Si m 'pa bezwen Non a, epi mwen pa fè sa bezwen rele li pi plis pase yon sèl kote, kite yo jis aplike fonksyon an dwa kote mwen bezwen li. Se konsa, JavaScript ak PHP sipòte sa ki yo rele yo fonksyon anonim ki pèmèt m 'fè egzakteman sa isit la. Men, nou ap jis grate sifas la. Se pou yo toumante ak jis yon koup egzanp final isit la. Si m 'antre nan quote.php. Remake sa a se aktyèlman yon PHP fonksyon, yon pwogram PHP, ke mwen te ekri ki espere yon paramèt HTTP rele senbòl, ak mwen ka pase nan yon valè tankou FB. Men, si nou aktyèlman gade nan sous la Kòd, sa a se rekèt yon sit entènèt gratis rele Yahoo Finans, jis tankou P-seri sèt, epi li retounen nan m ' yon bagay nan aparamman a fòma li te ye se JSON - JavaScript objè Notasyon. Se jis nan yon objè. Avi aparèy òtopedik yo Curly, quotes yo, kolon an, ak vigil yo. Koulye a, pandan se tan, sa a se trè fre. Paske mwen ka pwobableman sèvi ak yon pwogram lang jenere URL ki sanble sa a dynamique, dwa? Mwen ka chanje sa a nan Google epi pou yo jwenn tounen Google la pri stock de $ 1,017.55. Se konsa, kite a wè si nou pa ka itilize sa a kounye a. Kite m 'ale nan Ajax-0 isit la, ki sanble sa ki annapre yo. Se jis nan yon sit entènèt ki gen yon fòm ak yon bouton. Kite m 'isit la ale pi devan epi tape nan YHOO pou senbòl stock Yahoo a, klike sou Jwenn Quote, epi kounye a remake mwen te vinn yon alèt ak 32.86. Kite m 'aktyèlman ale nan yon vèsyon amateur nan paj sa a, vèsyon de, ak tape nan kite a di Microsoft, msf. Jwenn Quote. Epi, koulye a remake, pa gen okenn alèt. Avi kote li di pri yo dwe detèmine? Gen pi senp la nan egzanp ki sijesyon nan sa ki Gchat, ak Facebook Chat, ak Gmail, ak lòt sa yo sou sit entènèt yo ap fè pa aktyèlman chanje paj wèb la. Avi sa a. Kite m 'Reload paj la. Kite m 'louvri moute Enspektè Chrome a. Kite m 'ale nan eleman yo tab desann isit la. Koulye a, remake si mwen rale nan desann isit la ak louvri sa a leve, remake ke sa a se mwen an HTML Dom - modèl objè dokiman mwen. Sa a se HTML m 'yo. Men koulye a, remake, menm si li pral yo dwe yon ti kras difisil yo wè li nan tou de kote a yon fwa, si mwen tape nan FB Moute bò isit, gade anba a nan ekran an sèlman. Li nan aktyèlman chanje HTML m 'sou vole a. Apre sa, li nan fè sa byen tou senpleman pa fè yon bagay tankou sa a. Si m 'louvri moute Ajax-2, avi mete ann aplikasyon yon bagay tankou sexy kòm ki, menm si li a trè lèd, men kòm sofistike kòm ke fonksyonèl, li gen kèk HTML nan pati anba a. Men, remake mwen itilize yo tag. Nou pa te itilize sa a anvan, men sa a se tankou yon, men li pa fòse tout bagay sou yon liy nouvo. Li jis fè yon rejyon rektangilè sou liy lan menm esansyèlman. Remake mwen te bay li yon ID nan pri. Apre sa, li vire soti lè l sèvi avèk menm bagay la tou JavaScript bibliyotèk, mwen gen yon fonksyon rele quote () ki yo rele chak fwa se fòm nan soumèt. Ak sa ki m ap fè a se sa a. Mwen deklare yon varyab nan JavaScript rele url, ekonomize valè a quote.php? senbòl =. Nan lòt mo, Se mwen menm menm kòmanse yo prepare yon demann HTTP, ak Lè sa a, Mwen konkatenan sou sa ak yon plis tou sa eleman an ak ID a nan senbòl se, ki avi se ke jaden tèks dwa desann isit la. Se konsa, jis tankou nou te gen fòm nan tan lontan an. Lè sa a, li vire soti nan jQuery, si ou rele. Val (), ki mande nan yon Val fonksyon, yon fonksyon valè, ki vin tou sa te itilizatè a tape pous Lè sa a, tout nan trafik la rezo sa ki ap pase se sa a. $. GetJSON. Apre sa, kòm yon sou kote, siy dola se jis yon nòt steno. Li nan reyèlman jQuery.getJSON. Jwenn m 'nan JSON soti nan URL sa a, epi lè demann lan tounen, rele sa a fonksyon epi yo pase nan kòm agiman an tou sa te vin tounen soti nan sèvè a. Se konsa, nan lòt mo, si mwen tounen nan la navigatè, epi mwen tounen nan quote.php, sa ki navigatè mwen ap travay se ap resevwa sa a ti moso nan done. Lè m 'ale nan paj entènèt sa a isit la, remake si nou olye pou yo ale nan rezo a tab epi ki klè l ', li Lè sa a, tape nan yon bagay tankou GOOG pou Google epi pou yo jwenn Quote, remake paj la pa t 'chanje. Men, te yon demann HTTP fè a, epi ki sa tounen vin isit la si nou gade nan la repons la se yon pakèt tout JSON ke nou jwenn finalman ak liy sa a ki senp isit la. Done se sa ki te vinn soti nan sèvè a. Pri a se non an nan la kle mwen renmen anpil. Se konsa, data.price ban m 'sa. Koulye a, pandan se tan, ak sa a se dènye egzanp lan. Ou ka fè 'pi plis ak paj la. Youn aktyèlman, byen de. Nou ka fè m 'tounen an tag, si ou sonje sa a. Sa a JavaScript. Nou ka fè sa. Trè enteresan. Nou pral kite ke kòm yon cliffhanger. Men, plis excitingly, ou ka fè bagay sa yo tankou sa a. Si m 'ale nan jeolokalizasyon-1, li vire soti ki Chrome konnen ke nou yo nan latitid lonjitid 42,37. -71,10. Se konsa, gen nan menm plis gen a jete ou. Men, plis sou sa semèn pwochèn. Wè ou Lendi.