DAVID Malan: Kull dritt. Dan huwa CS50, u dan huwa l-aħħar ta 'disa' ġimgħa. Huwa kien whirlwind fuq l-aħħar ftit jiem. U l-problema stabbilita seba ', jekk int irkoppa fond fis dan, realizzata hemm pjuttost bit ġdida li fil hemmhekk. Imma ejja ara jekk aħna ma tistax biċċa kollox flimkien hawnhekk fil-qosor qabel dakinhar veering off fil għadhom Stat direzzjoni u tara fejn inkella nistgħu mmorru. Allura s'issa, konna tkellimna dwar HTML. Imxejna tkellem dwar CSS. Imxejna tkellem dwar PHP. You ħadthom bdew iġarrbu SQL. Illum, aħna ser nitkellmu daqsxejn dwar JavaScript. Imma kif do kollha ta 'dawn dispari lingwi joqogħdu flimkien? Allura aħna tkellimna aħħar ġimgħa dwar il- kunċett ta jkollhom server. Mela ejja biss jiġbed dan ir-rettangolu bħala web server hawn. U web server jservi żgur files. U xi wħud minn dawk il-fajls jista 'jkun fajls HTML. Allura waħda mill-affarijiet li web server jistgħu bżiq out jista 'jkun fajl li aħna ser biss jiġbed bħal dan fihom xi HTML. Allura f'termini laymans, dak ma HTML let you do? UDJENZA: Page tfittex sbieħ. DAVID Malan: OK, tagħmel paġna ħarsa sbieħ, għalkemm I think stajt ippruvati li mod ieħor. Allura HTML ma tavżak jistabbilixxu paġni strutturalment, u li jippermettilek li tip ta 'estetikament mark up paġna, mark up kontenut statiku, sabiex inti jistgħu mbagħad tarah ma 'web browser. Iżda li l-ċavetta. Huwa kontenut statiku. Tikteb, inti isalvawh, u allura inti vapur. U l-web server imbagħad jservi it up għall-viżitaturi tiegħek. Iżda aħna stylize affarijiet jużaw differenti lingwa għal kollox. Bdejna biex tuża attribut stil dwar ċerti tags. U l-attribut istil let us stabbiliti affarijiet simili daqs tat-tipa u kulur. U inti probabilment ħadthom bdew jiskopru, jew inti hekk se għal finali proġetti potenzjalment, iżda oħrajn proprjetajiet li tista 'tuża fil-CSS. U hekk f'termini laymans, dak verament allura ma CSS tagħmel? Dawk huma biss eżempji tiegħu. X'tikkontrolla tavżak tagħmel dan HTML ma jidhirx li minn dak Rajna s'issa? UDJENZA: Iddefinixxi stili mill yourself. DAVID Malan: Iddefinixxi stili mill yourself. Allura jiddefinixxu affarijiet simili klassijiet kif inti jistgħu ikunu ltaqgħu magħhom, jew unikament jidentifikaw nodes 'dokument sabiex li inti tista stylize lilhom. Iżda aktar speċifiku, I d ngħid li CSS verament ihallik jieħdu l-affarijiet l- aħħar mil u tippermetti li inti tispeċifika ħafna b'mod aktar preċiż l-estetika, billi HTML għall-aktar parti tikri inti istruttura paġni tiegħek. U anki jekk hemm xi nuqqasijiet, bħall rajna l-tikketta għall- intestatura tag, li madwar jitkellem magħmula affarijiet kbir u ambizzjuz. Li definizzjoni pretty ġeneriku tal-lametta - kbir u ambizzjuz. X'inhu d-daqs tat-tipa huwa li? Liema kulur huwa li? Kif kuraġġużi huwa li? U CSS ihallik aktar fin affarijiet intunazzjoni bħal dik. Kif ukoll tqassim, kif xi wħud minnkom raw. U franchement, CSS huwa daqsxejn ta 'lingwa messy. Huwa qawwija ħafna li inti tista 'tagħmel litteralment kwalunkwe websajt li inti ħadthom jidhru fuq il-web illum magħha, iżda huwa tip ta 'uġigħ fl-għonq. U xi wħud minnkom banged ras tiegħek kontra l-ħitan diġà biss biex jagħmlu xi ħaġa stupid bħal ċentru menu fuq problema sett seba jekk inti ħadthom gotten dak il-punt diġà. Iżda realizzata, dawk l-affarijiet tikseb aktar faċli maż-żmien. Tibda l-avviż mudelli. U għal darb'oħra, Google se tkun ħabib tiegħek għad-diversi modi li bihom tista ' issolvi dawn it-tipi ta 'problemi. U jien DARE ngħid CSS, HTML u aktar ġeneralment, inti tista 'ssolvi l-problemi fil- ħafna aktar modi, li kollha jistgħu ħafna ukoll tkun korretta, milli inti tista ' fil xi ħaġa simili C, anki issa PHP, JavaScript jew. Hemm biss differenti ħafna modi biex jistabbilixxu affarijiet out. Iżda dan bdiet tikseb messy, għidna. Just tip ta 'taħlit HTML tiegħek u CSS tiegħek mal-attribut istil kien a sloppy ftit. U hekk aħna minflok qal, tip ta ' astratt jitkellem, li inti għandek inqas tibda fattur out CSS tiegħek probabbilment. Mhux attributi stil tiegħek, iżda mill-inqas użu l-tikketta istil ġewwa dak parti tal-paġna web? UDJENZA: Kap. DAVID Malan: Fir-ras. Sa issa, aħna biss kellhom it-titolu up hemm, imma int tista 'wkoll żżid stil tag, u inti tista 'tpoġġi CSS tiegħek bejn wieħed u ieħor jitkellem lejn il-quċċata tal-paġna. Iżda mbagħad aħna ħa l-affarijiet pass ulterjuri u aħna f'fatturi li taf aktar fis-fajl separat. U hekk dawn iż-żewġ fajls kienu b'xi issa marbuta. U fil-fatt kien il- tag li ma li. U dak kien wieħed mill-ġenerali motivazzjonijiet għall factoring barra CSS tagħna l-aktar? UDJENZA: Użu mill-ġdid. DAVID Malan: Użu mill-ġdid. Dritt? Inti tista raw fil-p-set seba diġà li ħafna tal-paġni, il- jixtru paġna, il-paġna tal-bejgħ, il- paġna portafoll, huma probabbilment strutturati kemmxejn simili. Hemm logo finanzi CS50 fil-quċċata sakemm inti iddeċidejt li jibdlu. Hemm footer fil- qiegħ tal-paġni. U CSS jippermettilek mbagħad għall-fattur out hija fis fajl separat b'tali mod li jekk inti trid tibdel xi ħaġa globalment madwar is-sit kollu tiegħek, inti tista 'verament biss bidla fil-post wieħed. Iżda hemm prezz li inti tħallas potenzjalment billi fatturati l- CSS minn file HTML tiegħi ġo separata fajl referenzar ma 'l- tag, li rajna nhar it-Tnejn. Liema jista 'l-tnaqqis ikun ta' dan? Ħsieb lura ġimgħa ilu li meta nkunu jitkellem dwar HTTP u TCP / IP u kif l-internet xogħlijiet. Xi ħaġa fuq hawn? UDJENZA: Huwa jieħu aktar ħin. DAVID Malan: Huwa jieħu aktar ħin. Għaliex? UDJENZA: [inaudible]. DAVID Malan: Yeah. Għalhekk forsi jieħu ftit aktar ħin. Għaliex wieħed, il-CSS huwa ovvjament mhux fl-istess fajl. Allura issa inti għandek tagħmel ma wieħed, iżda żewġ talbiet. U kull wieħed minn dawk it-talbiet kif rajna fil- Chrome fl-hekk imsejħa Ispettur, u ħarisna lejn il-tab netwerk, kull ta 'dawn il-fajls jeħtieġ HTTP wieħed talba, li rajna jieħu xi ammont ta 'ħin. Issa, forsi mhuwiex ħafna. Forsi huwa biss 20 millisekondi. Forsi huwa 200 millisekondi. Imma naħseb dwar page bħal Facebook, jew CNN, jew Google, li huma ħafna akbar mill-eżempji konna ħares lejn s'issa. Dawk il-paġni jista 'jkollhom għexieren ta' fajls, kull wieħed minnhom jistgħu jeħtieġu download ta 'fajl. Sabiex l-affarijiet jistgħu potenzjalment tibda jmajna. U speċjalment f'dawn il-jiem meta aħna kollha mowbajls fil-bwiet tagħna u konnessjonijiet internet bil-mod, li biex stenna ftit millisekondi aktar, ftit aktar millisekondi għall addizzjonali fajls jista 'attwalment jiġi bil-mod. Latency hija l-kelma li tiddeskrivi l- tip ta 'stennija li inti għandek li inti esperjenza meta stennija għal xi biċċa informazzjoni. Iżda hemm rasu. Għalhekk mhuwiex kull tip ta 'a - fatt huwa daqsxejn ta 'seesaw hawn. Negattivi issa, imma dak browsers tista 'tagħmel jekk dawn qed intelliġenti sabiex jevitaw jkollhom bżonn jitolbuha-istess styles.css fajl mill-ġdid jista 'jkun li jagħmel xiex? Cache dan. Allura caching - C-A-C-H-E - ġeneralment ifisser hawn biss biex isalva l- fajl inti mitlub-ewwel darba, u mbagħad tiċċekkja cache tiegħek għaliha. Iċċekkja int tip ta 'kontenitur tal-ħażna, u jekk diġà għandek kopja ta 'styles.css, anke jekk xi oħra paġna fil-p-set, jew kwalunkwe websajt, jitlob mill-ġdid, biss biex jagħtu l- utent li kopja istess Cached. Ma jolqot li jitolbuha. Negattivi hemmhekk, għalkemm, kif xi wħud minnkom jkunu tripped fuq fil-p-set. Jekk inti tagħmel bidla fuq is-server u tmur lura għall-browser u int rikarigu, xi kultant il-browser ma inti a favor u ma jolqot mill-ġdid tniżżil fajl styles.css tiegħek għaliex, jaqgħu fuq, liema huma l-odds li dawn l-istili li Facebook użi huma se jibdlu siegħa sa siegħa jew jum għal jum? Huwa pjuttost baxx. Huma jistgħu jinbidlu maż-żmien, iżda mhux mill-minuta jew mill-siegħa. Allura trick, biss FYI web meta tagħmel iżvilupp, huwa spiss żomm il- bidla ewlenija għall-eżempju u mbagħad ikklikkja rikarigu fil-browser tiegħek, u li se tipikament tgħid il-rikarigu browser kollox, anki jekk diġà għandek fil-cache. Għalhekk għal darb'oħra, upsides u negattivi, iżda kollha kemm huma finalment disinn deċiżjonijiet. Allura issa, aħna ma biss tispiċċa l-istorja hawn. Jekk I issa jmorru lura u lura u lura u lura, bdejna biex jintroduċu mhux biss HTML, imma PHP. Allura f'termini laymans, dak ma PHP jgħidilna jagħmlu? UDJENZA: [inaudible]. DAVID Malan: X'hemm li? UDJENZA: Introduċi loġika fil-kodiċi. DAVID Malan: Yeah, jintroduċu loġika fid-kodiċi tiegħek. Allura huwa lingwa ta 'programmar vera ma loops, u varjabbli, u funzjonijiet, u kondizzjonijiet, u kollha ta ' l-affarijiet aħna kont qed tuża mod lura meta sa mill-bidu. U PHP, Rajna, jistgħu jintużaw jew fil-linja tal-kmand - huwa ma għandhomx għalfejn ikollhom xejn x'jaqsmu ma mal-web, anki jekk dan huwa verament oriġini tagħha u dak li hemm tendenza tkun tajba fuq u li jwasslu għal - iżda tista 'tuża PHP sempliċement min-natura tal-fatt li hija għandha print () funzjoni, u printf () funzjoni, jew eku () funzjoni. Hemm għenieqed ta 'modi kif inti jistgħu jistampaw test ma PHP. Għalhekk, inti tista 'tuża din il-programmazzjoni lingwa output eżattament dak li konna nitkellmu qabel. Tista dinamikament jiġġeneraw HTML tiegħek. Forsi mhux kollha ta 'dan. Forsi inti affarijiet kodiċi iebes, bħall- header, u l-footer, u l-logo, u folji stil tiegħek, u kollha ta 'dak. Iżda għal xi ħaġa bħal-p stabbiliti sebgħa, fejn int manipulazzjoni ħażniet u turi portafoll tal-utent, li huwa se jibdlu dinamiku, inti tista ' żgur jużaw PHP u l-loġika tagħti inti bħala lingwa ta 'programmar li output dinamiku sottogruppi tal-paġna. Allura meta tkellem dwar websajts dinamiku, jew programmar web, li dak li int verament jitkellem dwar. Bl-użu ta 'lingwa bħal PHP, jew affarijiet imsejħa Python, jew Ruby, jew Java, jew għadhom lingwi oħra, għall-mistoqsija database spiss, jew server ieħor, u imbagħad dinamikament bżiq out HTML. Issa r-riżultat aħħari, bħala twarrib, huwa li l-HTML tal-websites l-iktar, inkluż p sett seba tiegħek, huwa probabbilment se jkun mess enormi jekk inti tħares lejn is-sors kodiċi fil-browser. Li mhux big deal. F'dan il-punt, meta aħna kura dwar stil, aħna kura dwar il- Jittieħed li tikteb. Aħna mhux se kura dwar l-għalf li dak outputs kodiċi tiegħek. Allura ma joqogħdu jinkwetaw dwar indentazzjoni hawn jekk huwa PHP li l- attwalment outputting Jittieħed. Wara kollox, il-browser mhux se kura, u l-bniedem mhux se tkun qed tfittex fis-sors xorta waħda. Aħna l-istaff, per eżempju, kieku tkun tħares lejn PHP tiegħek. So let me jagħtu eżempju ta 'malajr issa ta 'għaliex inkella dan jista' jkun utli. So franchement, I ma tistax tiftakar l-aħħar ħin I użati C biex isolvu problema fl -dinja reali. Kien probabbilment fl-iskola graduate meta I meħtieġa biex jużaw lingwa li kien livell pjuttost baxx u tatni l- opportunità li jagħmel xi ħaġa għolja ħafna jwettqu biex verament isalva CPU kemm ċikli I kif jista ', fil-parti kbira minħabba I kienet qed tuża settijiet ta 'data kbar, u kull ċiklu CPU magħduda. U franchement, anke fl-affarijiet bħal telefowns dawn il-jiem u tagħmir ieħor fejn inti ma pjuttost jkollhom kemm memorja u inti ma pjuttost jkollhom bħala CPU ħafna, jużaw lingwi aktar mgħaġġel għadu attraenti. Imma fid-dinja reali, meta inti biss tixtieq li tarmi xi programm flimkien biex janalizzaw xi data, jew inti ħadthom miġbura mazz sħiħ ta 'reġistrazzjonijiet għall- xi grupp student u inti tixtieq li ħafna malajr awtomat jibgħat emails wieħed wieħed għal kull wieħed minn dawk reġistranti, int ser jilħqu għall- lingwa f'livell ogħla minn C biex ngħidu hekk. Xi ħaġa bħal PHP jew Python, jew Ruby, jew xi oħrajn nofs tuzzana li jeżistu dawn il-jiem. Iżda dawk tlieta huma probabbilment l-aktar trendy dritt issa. U dak li dan ifisser huwa li inti tista 'tiftaħ up editur test bħal gedit jew xejn aktar ieħor u mbagħad biss tibda miktub kodiċi mingħajr ma joqogħdu jinkwetaw dwar kompilazzjoni, mingħajr ma jkollhom verament tinkwieta dwar ġestjoni tal-memorja, jżomm f'moħħu li għalkemm ftit sloppiness eventwalment se terga 'lura li gidma inti jekk is-sett tad-dejta gets akbar jew l-problema gets big. Imma din xi tfisser għan us hija s-segwenti. Let me imorru quddiem u run speller minn problema stabbiliti sitt. Allura dan huwa l-implimentazzjoni bbażata fuq trie tiegħi I li jintużaw fuq il-big board fejn I titwettaq mhux hekk ukoll. Aħna ser terga 'lura fi żmien ġimgħa u tirrevedi dawk li ma jispiċċaw atop- board big fl-aħħar lecture tagħna. Iżda għal issa, let me imorru quddiem u biss run tiegħi soluzzjoni fit-test, u aħna ser nagħmlu il-Bibbja James King, u here we go. Għalhekk dawn huma kollha ta 'l-allegatament kliem misspelled minn il-Bibbja James King. U l-implimentazzjoni tiegħi ħa nofs sekonda b'kollox. Allura mhux wisq ħżiena fuq dan partikolari kompjuter. Imma naħseb ta 'kemm kodiċi I kellu jikteb. Aħseb kemm kodiċi kellek jiktbu. Aħseb kemm sigħat inti jintefqu fil- D-sala jew dorm tiegħek jew fejn attwalment kodifikazzjoni up din is-soluzzjoni. Ukoll, jekk I attwalment ikollhom livell ogħla lingwa bħal PHP, jieħdu nota ta ' dak I tista 'tagħmel hawn. L-ewwel, ejja ngħidu li dan huwa minflok kodiċi ta 'distribuzzjoni tiegħek. Dan huwa fajl imsejjaħ speller. Huwa disponibbli bħala parti mill-lum kodiċi ta 'distribuzzjoni. U jien ser mewġa naħa tiegħi l-aktar tad-dettalji, iżda dan huwa attwalment eżempju interessanti ta 'kif inti tista port lingwa bħal C quddiem għall PHP. I litteralment fetħet żewġ twieqi test, waħda mal-verżjoni C tiegħi ta 'speller.c, u I biss beda jagħmel traduzzjoni tagħha fil tiegħi ras għal PHP u tajping bl-użu -funzjonijiet ekwivalenti eqreb. Allura xi wħud minn dawn l-affarijiet huma differenti. Rajna aħħar darba li PHP ma jużax jinkludu fil pjuttost l-istess mod. Hija tuża jeħtieġu tipikament, għalkemm jinkludu ma jeżistu. Iddefinixxi hija ftit differenti minn # Jiddefinixxu C, iżda li kif nagħmlu kostanti. $ Argc jirriżulta teżisti fil-PHP, hekk aħna stajt tidher li qabel. Dawn huma biss varjabbli, kollha ta ' li tibda bil sinjali dollaru. Recall dawn huma biss mazz tal-punti varjabbli. Allura storja twila fil-qosor, inti qed jilqgħu biex flip permezz ta 'dan jekk kurjuż, dan huwa kważi konverżjoni linja-għal-linja tal- Verżjoni C tal speller.c fis PHP. U inti tista 'tagħmel dan mill-ġdid għal nofs tużżana lingwi oħra. Imma x'hemm interessanti hija din. Jew x'hemm franchement diżappuntanti hija din. Let me imorru quddiem u tip dwar dictionary.php, u t-talba li jien se jmorru 'l quddiem u jimplimenta mill-ġdid problema stabbiliti sitt hawn. Mela ejja tipproponi ewwel li f'dan il- fajl, li ser jiġi implimentat PHP, so let me tiftaħ tags tiegħi bħal dik. Ħalli nagħtikom myself globali varjabbli, $ daqs gets żero. U jien ser jagħti myself tabella hash. I ser tuża tabella hash għal dan il-ħaġa. Kif nista 'niddikjara tabella hash fil-PHP? Magħmul. OK. Bracket hekk miftuħa parentesi magħluqa jirrappreżenta dak fil-PHP, kif aħna stajt tidher? Firxa, iżda firxa li jistgħu jkun firxa assoċjattiva. Firxa assoċjattiva hija struttura data li jassoċja keys b'valuri. Issa fl-aktar sempliċi numerikament indiċjati array, dawk ċwievet huma dak? Żero, wieħed, tnejn, tlieta, id-dritt? Iskola antika Jittieħed lura minn C. Iżda tista ' wkoll tkun kordi bħal foo, u bar, jew Maxwell, jew kwalunkwe string tali. So I tista 'lieva li fi ftit mument. Let me imorru quddiem u jiddikjaraw funzjoni simili - ejja do tagħbija () l-ewwel. Allura tagħbija funzjoni (). U PHP huwa xi ftit differenti f'dik inti litteralment tip funzjoni, imma int ma tip għal tip ta 'ritorn. Jien ser imorru quddiem u jgħidu li l- tagħbija () funzjoni għandha tieħu fil argument dizzjunarju $, just bħal verżjoni C għamlet. Jien tagħmel dan mill-memorja. U nipproponi li jien se tagħmel dan. Jien sempliċiment se jagħmlu foreach. Jien ser sejħa funzjoni msejħa fajl (), li jgħaddi fl-isem ta 'dik fajl, li hija l-varjabbli $ Dizzjunarju bħala $ kelma. U mbagħad ġewwa ta 'tiegħi għal loop hawn, jien se jmorru quddiem u jaħżen fil tiegħi $ Tabella li $ kelma gets veru. Magħmul. Oh, stenna. Magħmul. OK. Li hija t-tagħbija () funzjoni jiġifieri fil PHP. Issa, għaliex ma li jaħdmu? U jien tip ta 'qerq hawn. Għalhekk, wieħed, foreach rajna qosor aħħar darba. Dan ifisser biss li inti tista 'jtenni fuq firxa mingħajr bothering ma 'i u n u plus plus, u kollha ta 'dak. Dizzjunarju huwa naturalment l-isem fajl, xi ħaġa simili kbar jew żgħar, it-tnejn dizzjunarji aħna użati aħħar darba. File hija funzjoni li jiftaħ test file, jaqraha fid linja b'linja, u idejn inti back firxa enormi, kull wieħed mill-elementi li hija linja minn dan il-fajl. Allura dak hu l-kombinazzjoni ta 'fopen, u fread, u filwaqt li loop, u fclose, u kollha ta 'dak. Finalment, kif kelma ifisser biss dak l- varjabbli jien ser ikollhom aċċess għal fuq kull iterazzjoni f'dan loop. Għalhekk fil-qosor, dan liner waħda hawnhekk tfisser tiftaħ il-fajl li ismu huwa dizzjunarju, il-varjabbli, iterazzjoni fuq huwa linja b'linja, u kull darba ikollok linja, aħżen fi varjabbli imsejjaħ kelma, u mbagħad tagħmel xi ħaġa ma kelma. What do I trid tagħmel? I tixtieq li tqiegħed kelma fis tabella hash tiegħi. Well, I tista 'tpoġġi xi ħaġa fil tiegħi hash tabella bħal fil C jużaw parentesi kwadri. Dan huwa l-isem għall-mejda hash tiegħi. Jien ser indiċi f'dak hash tabella li tinsab fil dan il-post. Allura mhux parentesi żero, ma parentesi wieħed. Quote Bracket xi ħaġa unquote, tkun xi tkun din il-kelma hija. U bħad jista 'jkollok tiegħek trie xogħol tabella hash, inti biss taħżen effettivament Boolean, impliċitament jew espliċitament. Magħmul. Jien ħażna tal-valur veru. Issa hemm koppja ta 'affarijiet Jien qtugħ kantunieri hawn fuq. Teknikament, hemm għaddej li jkun linja l-ġdida annoying, / n, fl-aħħar ta ' kull wieħed minn dawn il-kliem. So I għandhom probabbilment sejħa funzjoni PHP imsejħa CHOP (), li se pjuttost litteralment CHOP li off. And I attwalment ħtieġa li jagħmlu ħaġa waħda oħra. I għandhom probabbilment inkrement daqs fuq kull iterazzjoni, hekk jien iżżomm rekord globalment ta 'dak li hu. U franchement, u dan huwa wieħed mill- aspetti stupider ta 'PHP, jekk int użu ta 'varjabbli globali, għandek bżonn jiġifieri b'mod espliċitu li int. Hekk jien ser fil-fatt it-tip fil globali $ Daqs, $ tabella globali, u issa funzjoni tiegħi hija kompluta. Allura mhux daqshekk sempliċi bħal qabel, iżda probabbilment ħa inqas ħin mill-C verżjoni, forsi? OK. Allura issa ejja tagħmel il-verifika () funzjoni. Ejja naraw jekk dan l-inqas ħa l- siegħa fuq il-għan li hija ħadet us C. So let me imorru quddiem u jiddikjaraw check bħala funzjoni. Jieħu fil argument kelma, li hija ser jiġu minn speller. U jien biss se tivverifika jekk il- isset varjabbli li ġej, tabella strtolower bracket tal-kelma - ejja bilanċ kollha ta 'parentesi tiegħi - mbagħad jirritornaw veru. Else - li kien verament l-hard parti ta 'dan il-programm. Else, ritorn foloz. Magħmul. C'est verifika (). Issa, għaliex ma dan ix-xogħol? Well, waħda I għadda fil-kelma, li hija sekwenza. Tnejn, jien iċċekkjar ġewwa tal-hash tabella, li sejjaħ $ tabella. Jien tisfurzah biex zghar billi ċċempel funzjoni pjuttost simili tolower () fil- C, iżda din ma l-kelma sħiħa, mhux karattru wieħed. U jekk dan huwa stabbilit, fi kliem ieħor hemm hija valur stabbilit, fi kliem ieħor, jekk huwa minnu, allura iva, din hija kelma. Minħabba I poġġih hemmhekk b'tagħbija (). U jekk le, jien ser jirritorna falza. Issa l-oħrajn huma faċli. Daqs funzjoni (), kif nista 'nagħmlu dan? I essenzjalment tagħmel ritorn $ daqs. Imma I teknikament bżonn tagħmel dan ħaġa annoying. U fil-fatt up tisma, I kien qtugħ kantuniera wieħed wisq. I really bżonn tagħmel $ tabella globali. Imma dak li qal, jħottu). Jħottu () hija aqwa. Jħottu funzjoni (). Kif nista jridu jimplimentaw jħottu ()? Magħmul. OK. Allura jħottu (), il-ġestjoni tal-memorja huwa kompletament tittieħed kura ta 'għalik fil- xi ħaġa bħal PHP u ħafna ta 'lingwi ta' livell ogħla. Allura dan huwa aqwa. Bħall għaliex l-infern ma moħli-passat tmien ġimgħat flimkien dwar il-kitba C apparentement verament bil-mod, tassew ħin problemi jikkunsmaw bil għexieren ta 'sigħat xogħol taħt ċinturini tagħna? Ukoll, għal ħaġa waħda, dan jista 'xogħol multa għall-programmi żgħar. Huwa ċertament titħaffef tiegħi iżvilupp ta 'żmien. Imma ejja naraw x'jiġri fid-dinja reali. Let me jmorru fis dan id-direttorju fil-tieqa terminal. Hemm speller. U tinnota bħala twarrib, u inti tista ' ltaqgħu ma 'dan il-problema stabbiliti sitta jew problema stabbiliti seba. Inti ma jkunux strettament għandekx jispiċċaw fajls PHP ma. PHP. Jekk inti tpoġġi linja bħal dik l-ewwel wieħed fuq nett, li l-linja speċjali ta 'sintassi li essenzjalment ifisser jsibu il-programm imsejjaħ PHP u jużaha biex jinterpretaw dan il-fajl. Allura issa l-ebda waħda verament jaf li Niġri programm PHP. I tista 'taħdem biss daqslikieku kienu xi ħaġa kkumpilati C. Iżda hawn l-ħaġa. Attwalment, ejja tagħmel dan mill-ġdid. Dropbox/pset6 /. Hemm speller. OK, 0.44 sekondi. Hija marret aktar mgħaġġla f'dan il-ħin. Issa ejja jmorru fil-verżjoni PHP. Touch sbieħ. Iżda biss jaħsbu kif ħafna ħin I ffrankati fuq ħinijiet tal-uffiċċju. OK. Allura 3.59 sekondi, li attwalment ma ħoss preċiża jew. Iżda dan għaliex storja twila fil-qosor, meta int stampar ammont kbir ta 'għalf għall-iskrin, li innifsu inaqqas affarijiet isfel. Dak li verament ħa l-CPU fil- appliance kien 3.59 sekondi, b'mod B'kuntrast ma 'C, li ħa 0.44 sekondi aktar reċentement. Li verament ordni ta ' kobor differenti. Għalhekk, fejn huwa dak il-prezz li ġejjin minn? Għaliex huwa tant kajman? Għaliex ma PHP twettaq tant fqir? Danielle? UDJENZA: Inti ma verament jużaw tabella hash. DAVID Malan: I ma verament jużaw tabella hash. So I tip ta 'ma. Allura huwa firxa assoċjattiva. Ħafna probabbli jekk il-poplu fil PHP huma verament smart, huma użati minn taħt il- hood tabella hash attwali implimentata fil xi ħaġa bħal C jew C + +. Imma. Yeah. UDJENZA: [inaudible]. DAVID Malan: Yeah. Allura kull wieħed mill-funzjonijiet I kiteb issa - attwalment, tista 'tgħid li għal darba oħra ftit louder? UDJENZA: Kull wieħed mill-funzjonijiet li Inkludejt għandha ħafna aktar sħiħa kapaċità minn - DAVID Malan: Allura li ħafna minnu. Hemm ħafna aktar overhead li aħna qed mhux verament jaraw billi tiffoka biss fuq dictionary.php, li I biss kiteb. B'kuntrast, hemm interpretu kollu għaddejjin fl-isfond. Tabilħaqq, meta I dam dan il-programm, huwa ma kien għaddej żerijiet kkumpilata u dawk maħsuba għall-CPU Intel tiegħi. Pjuttost, huwa kien għaddej linja b'linja Kodiċi PHP li jistenna eżattament simili aħna ittajpjat. U hekk meta tuża lingwa interpretat, inti fatt iħallsu dan il-prezz. Huwa ser tieħu ftit ħin biex taqra fajl tiegħek top għal isfel, xellug għal dritt, u mbagħad tesegwixxi kull line u għal darb'oħra. Issa fir-realtà, speċjalment fuq il-web, inti tista 'attwalment iħaffu dan il-proċess billi caching-riżultati tal- Kodiċi PHP tkun interpretata. U li jagħmel sens fuq il-web, għaliex jekk inti ma jkunux utent wieħed bħal me hawn, iżda 1,000 jew 10,000 utenti, allura forsi l-ewwel darba li l-fajl huwa aċċessata huwa bil-mod, iżda wara huwa ħafna aktar mgħaġġla. Iżda dan ukoll, għal darb'oħra, huwa off kummerċ. U għal xi ħaġa bħal dejta tar-riċerka stabbiliti, jew saħansitra xi ħaġa kbira bħal dan, l-utenti tiegħek eventwalment se tibda tħossok li tnaqqis. Għalhekk fil-qosor, interpretat il-lingwi huma ħafna fil Vogue, popolari ħafna, u franchement huma probabbilment l-lingwi li għandhom jilħqu għal meta jissolvew problemi sussegwenti CS50. Imma tirrealizza kemm int verament tieħu għall mogħtija taħt il-barnuża verament dawk li għaddew diversi ġimgħat hash imwejjed, u siġar, u tentattivi, li jintużaw finalment li attwalment jimplimentaw affarijiet simili parentesi miftuħa, parentesi kwadri, li nistgħu issa gratefully jieħdu għal mogħtija. Mela ejja tagħti ħarsa issa f'dan il-kuntest web. U semmejt aħħar darba li hemm mazz ta 'superglobals fil-PHP li ma humiex verament rilevanti fil-linja tal-kmand. Huma qed aktar rilevanti fil-kuntest ta 'użu PHP f'kuntest web. Allura running PHP fuq server web sabiex biex jiġġeneraw għalf bħal HTML. U aħna glanced fil $ _GET u $ _POST, u li fejn awtomatikament utenti " input jispiċċa sempliċiment jekk inti tissottometti jiffurmaw għal fajl li jispiċċa fil. PHP fuq web server bħall-appliance. Imma ejja nħarsu ftit lejn $ _COOKIE U $ _SESSION. F'termini layman, dak li huwa cookie bħala inti tifhem li fil-kuntest ta ' jużaw il-web? UDJENZA: File fuq il-kompjuter. DAVID Malan: Yeah. Huwa fajl fuq il-kompjuter l-utent mħawla bi kwalunkwe website inti jiġri li jżuru. Allura meta inti tmur għall Facebook, meta tmur li bankofamerica.com, meta tmur li google.com, meta inti tmur għal kważi kull websajt fid-dinja f'dawn il-jiem, inkluż cs50.net, cookie hija mħawla fuq il-kompjuter tiegħek, li huwa jew valur maħżuna fil RAM fil tiegħek kompjuter fil-memorja tal-browser tiegħek, jew kultant tabilħaqq maħżuna fajl fuq hard drive tiegħek. U x'hemm tipikament maħżuna f'dak il-fajl mhuwiex isem l-utent tiegħek, mhux tiegħek password, tipikament mhux xi ħaġa sensittivi ħlief jekk il-websajt ma tkunx hekk tajba mas-sigurtà tagħhom, iżda pjuttost huwa identifikatur uniku big fost affarijiet oħra. Huwa numru bl-addoċċ big mħawla fuq tiegħek kompjuter iżda inti tista 'taħseb kif tip ta 'timbru virtwali idejn simili minn klabb jew xi park tad-divertiment li jippermetti l-persunal, is-sidien ta 'dak servizz, li tiftakar min int. Allura jekk in-numru bl-addoċċ kbira hija simili 12345678, għalkemm dan huwa ovvjament mhux wisq każwali, think ta 'dak il- timbru idejn li meta inti żżur facebook.com għall-ewwel darba, huma timbru dak in-numru fuq naħa tiegħek. U allura għaliex inti titkellem HTTP, inti tkun browser, u minħabba Facebook ovvjament jitkellem l-istess bħala web server, il-protokoll HTTP jgħid li ghaċ sussegwentement żżur facebook.com, kemm jekk huwa t-tieni aktar tard, siegħa wara, anke l-jum li jmiss, sakemm int ma espliċitament logged out, li effettivament huwa simili taħsel idejk. HTTP jgħid inti għandek tippreżenta tiegħek timbru idejn kull darba li inti ritorn lejn dak website. What Facebook allura ma huma huma tħares lejn dak timbru idejn u jgħidu, oh, 123456789. I do not know-ewwel daqqa t'għajn li dan huwa David Malan fil Cambridge, Massachusetts, iżda huma jistgħu jikkontrollaw tagħhom database u jgħidu, oh, il-persuna li fuq il-kompjuter aħna mħawla 123456789 huwa David Malan minn Cambridge, Massachusetts. Ejja juru li l-utent mbagħad profil tiegħu paġna jew Feed News tiegħu. Imma hemm problema hawn jekk dan hija kif il-web tabilħaqq xogħlijiet. Ejja tagħti ħarsa lejn eżempju malajr. Ejja fatt imorru jgħidu facebook.com. Iżda qabel ma nistgħu jmorru hemm, let me imorru quddiem u tiftaħ Chrome Spettur stabbiliti hawn. Let me ħarsa lejn il-tab netwerk. U issa ejja imorru quddiem u tip fil https://facebook.com. U jien tagħmel dan hekk li aħna ma tara kollha ta 'dawk redirects u skart żmien tfittex permezz dawk. Let me hit jidħol. Kull dritt. Naraw mazz sħiħ ta 'talbiet. Hemm jaqa Facebook. Hemm mazz sħiħ ta 'fajls. U hawn, per aċċenn tiegħi ta ' aħħar darba latency, li ħafna ta 'talbiet HTTP. Iżda l-ewwel wieħed huwa probabbilment l-aktar interessanti. Mela ejja iscroll down hawn, u I ser zoom fit-tieni. Dan se jkun it-tip ta ' mess, imma ejja ara. Facebook huwa tibgħatilna mazz sħiħ ta 'għalf. Iżda Whoa, interessanti. Huma qed tħawwil mhux wieħed, iżda erba ' timbri idejn għal fuq naħa tiegħi hawnhekk. Set-cookie, Set-cookie, set-cookie, set cookie. U hemm ftit karatteristiċi hawn. Kollha kemm huma jsemmu xi tip ta 'skadenza. U jidher qisu Facebook qed jittama tiftakar lili sal-2015. Allura dak preżumibbilment sa meta I trid login jew dawn ser biss awtomatikament jassumu jien mhux ġejjin lura. Allura li attwalment deċenti ammont ta 'ħin. U hemm xi oħra affarijiet għaddejjin hawn. Dan cookie jidher li bil-forza imħassra billi qal li skada fl-1970 qabel kienu jeżistu cookies. Allura l-browser huwa biss se li wieħed jassumi OK, dan huwa simili ħasil tal-idejn timbru. Imma issa meta browser tiegħi jagħmel talba sussegwenti - let me imorru quddiem u tagħmel dan ġdid u rikarigu. Issa let me iscroll lura lill- talba fuq u jinżlu hawn, titlob headers. Avviż dan. Allura issa jien taħt mhux headers rispons, iżda tinnota li jgħid talba headers. U tinnota li browser tiegħi bħala parti mill- talba tagħha wara laqtu rikarigu għandha mibgħut mill-inqas dan li ġej informazzjoni. Mhux stabbiliti-cookie, iżda cookie. Allura dan huwa l-linja, l-header HTTP hekk biex jitkellmu, fejn browser tiegħi huwa tip mingħajr ma jkunu jafu tiegħi jippreżentaw naħa tiegħi għall-ispezzjoni Facebook. Allura dawn il-cookies jistgħu jkunu użata imbagħad għal liema? Li tiftakar min int, jew tiftakar kif ħafna drabi inti ħadthom kien hemm, jew verament xejn. Allura hawnhekk huwa counter.php. U let me zoom fl fuq il-font. U kull darba I rikarigu din il-paġna, l-avviż huwa ftakar kif ħafna drabi Stajt ilhom hemm. Ukoll, li mhux kollha li impressjonanti. Ejja biss tagħlaq dik tab, u issa ejja mmorru lura għall http://localhost/counter.php. Oh, li interessanti. Hija xorta mfakkar, anki għalkemm I għalqet il-tab. U franchement, jekk I qrib il-browser, jekk ikun implimentat bl-aħjar mod, I xorta tista 'ftakar li dan l-utent huwa li hu jew hi kien l-ewwel darba, u darba biss mmur menu Chrome, li hawn fuq hija hawnhekk, u mur Istorja, u kklikkja Clear Browsing Data, kif xi wħud minnkom jista 'jkollhom fil- passat, biss mbagħad cookies tiegħek attwalment jitħassru matul web iżvilupp. Għalhekk, jekk immorru - ejja tagħlaq gedit here. U jekk immorru issa li dan il-fajl. Let me jmorru fil tagħna vhosts / localhost / pubbliku, u let me do counter.php. Avviż li dan huwa pretty programm sempliċi. Huwa website pjuttost sempliċi. Allura l-quċċata tal-fajl huwa biss kummenti. Imma hawn xi linja ġdida li inti tista ' raw diġà fis-p sett sebgħa, session_start (). Din hija linja tal-kodiċi PHP li essenzjalment jirrakkonta l-web server, jagħmlu żgur li timbru idejn u jagħmlu żgur li tivverifika timbri idejn. Li kollox dik il-linja ma, u ma kollha ta 'dak il-proċess għalina. Imbagħad avviż Stajt biss ltqajna żewġ fergħat hawn. Jekk il-kjavi counter ġewwa ta 'dan varjabbli globali speċjali msejħa $ _SESSION Huwa stabbilit - fi kliem ieħor, jekk hemm xi valur hemmhekk - ejja nikseb dan u jaħżnu lokali varjabbli imsejħa $ counter. Else, ejja tassenja $ counter il-valur ta 'default ta '0. Issa hawn aspett wieħed ta 'PHP li l- kemm barka u curse. PHP huwa ftit sloppy. Allura billi fis-C, dak li l- ambitu tal-counter kienu jew hawn jew hawn? Kienet tkun limitata għal dawk braces kaboċċi. Raden liema? Fil PHP, dan jeżisti anke barra minn dawk braces kaboċċi, hawn, u hawn, u hawn, u hawn, u anke down hawn taħt. So I ngħid dan huwa barka fis-sens li inti ma għandekx biex jaħsbu bħala hard kif għamilna ġimgħat ilu. Imma hija wkoll daqsxejn ta 'curse f'dak ebda kwistjoni fejn inti tuża varjabbli PHP, għall-inqas fi programm bħal dan, huwa globalment aċċessibbli għall- aħjar jew għall-agħar. Allura inti għandek iżomm f'moħħu issa li varjabbli tiegħek ma jistgħux jiġu undefined. Inti jista 'jkollok definiti minnhom x'imkien ieħor. Imma dak li jien ser tagħmel finalment? Jien ser jaħżnu ġewwa ta 'dik globali varjabbli bħala valur tal- counter ewlieni r-riżultat ta ' tagħmel counter plus 1. Allura dan huwa biss l-aritmetika li ma l- incrementation 'dak counter. U l-fatt li jien ħażna li valur lura fil hawn ifisser huwa li essenzjalment taġġorna d-database għall- ftakar li 123456789 utent ilu hawn darbtejn. U meta I jagħmlu mill-ġdid il-ħin li jmiss I rikarigu-paġna, li għaddej biex jiċċekkjaw timbru naħa tiegħi u jgħidu, oh, 123456789 utent għandu issa kien hawn tliet darbiet. U iva, liema lingwi PHP u simili qed jagħmlu għalina hija li huma jidhru kif u fejn u għal kemm żmien li żżomm il-valuri f'din speċjali superglobal. U dan superglobal-ħin li jmiss I żur il-paġna huwa tip ta magically pre-popolati, mimlija bil-valuri li kien hemm l-aħħar darba li tkun żaret, jekk dan kien it-tieni ilu, ġimgħa ilu, jew fl-2013 u aħna qed issa jitkellem dwar 2015. PHP u l-web server jieħdu ħsieb kollha ta 'dan għalik. UDJENZA: [inaudible]. DAVID Malan: elementi varjabbli fil PHP huma essenzjalment dejjem globali sakemm inti jiddikjaraw lilhom ġewwa ta 'funzjoni, u allura dawn huma lokali biex il-funzjoni biss. Imma għaliex stajt jkunux miktuba xi funzjonijiet, huma issa effettivament globali matul fajl sħiħ tiegħi hawn. UDJENZA: Hemm mod jagħmluhom lokali? DAVID Malan: Hemm xi mod biex jagħmluhom lokali? Huwa biss billi tgeżwir minnhom fil-funzjonijiet. Li fl-aħħar verżjoni tad- PHP, inti tista 'tagħmel dan ma' funzjoni anonimu. Iżda aktar fuq li fil- kuntest ta 'JavaScript. Iżda l-risposta qasira hija le. A tweġiba hija iva itwal. Nizza. Mistoqsija tajba kwizz. Kull dritt. Allura fl-aħħarnett, il-paġna nnifisha hija attwalment pjuttost sempliċi. Avviż li ladarba I ħruġ modalità PHP, recall li dan kollu Jittieħed isfel hawn taħt huwa biss se tikseb bżiq out prima għall-browser. Liema hija multa, minħabba I do jridu jibagħtu l-utent xi HTML, imma jien ma jridux li dinamikament jaġġornaw dik HTML. U mod wieħed I tista 'tagħmel dan huwa li sort ta 'malajr ħafna jinżel lura fis PHP modalità, jużaw open kwistjoni mark bracket sinjal ugwali, u mbagħad output l-valur ta counter. Jew jekk dan jistenna ftit cryptic, dan sinjal ugwali huwa attwalment biss ftit zokkor sintattika għal dan printf ($ counter). Iżda franchement, li jinsab biss ftit ikrah u ftit annoying għat-tip. Allura PHP ħafna nicely toffri din il-karatteristika fejn inti tista 'biss jgħidu li aktar qosor fl-istess mod. Allura x'inhu għaddej taħt il-barnuża? Ejja malajr nħarsu lejn in-netwerk tab hawn għal counter.php. U let me imorru quddiem u l-ewwel ejja ċar cookies tiegħek. Data browsing ċari Ejja peress il-bidu ta 'żmien. Issa ejja mmorru lura minn hawn. Issa ejja rikarigu-paġna. U jien lura għal żero. Minħabba timbru naħa tiegħi kien maħsul, I issa jiksbu cookie ġdid. Tabilħaqq jekk I tħares lejn il-tab netwerk u tħares lejn headers rispons, avviż li l-appliance hija li jibgħat me cookie li ismu huwa kemmxejn arbitrarju, iżda tip ta ' raġonevolment, PHPSESSID. U huwa jibghatni dan verament numru bl-addoċċ big. Mhuwiex pjuttost numru. Huwa pjuttost mhux hexadecimal. Huwa xi tip ta 'spag alfanumeriku, iżda preżumibbilment huwa każwali. U li huwa l-timbru idejn hekk biex jitkellmu li jien jirreferu għall. Sadanittant jekk I ikklikkja rikarigu u mbagħad ħarsa lejn din it-tieni linja għat-tieni tiegħi talba, avviż issa li t-talba tiegħi headers jinkludu PHPSESSID ugwali dan, ma set-cookie, iżda biss cookie. U li l-preżentazzjoni browser tiegħi ta 'timbru naħa tiegħi. Allura issa bħala teaser, u aħna ser nitkellmu aktar dwar dan fil-ġimgħa jew hekk, imma b'liema mod il dan tagħmel inti vulnerabbli, kont tiegħek Facebook vulnerabbli, u oħrajn bħal kontijiet vulnerabbli? UDJENZA: Jekk xi ħadd ikollu cookie tiegħek. DAVID Malan: Yeah, jekk xi ħadd għandha cookie tiegħek. I mean tassew, simili ħafna xi wħud minnkom tista ippruvaw fil bħal klabb jew park ta 'divertiment, jekk inti tipprova xi ħaġa bħal dan li kopja tal-boll, għalkemm lura fuq naħa ta 'persuna oħra, u allura hu jew hi tippreżenta bħala tagħhom stess, jekk fil-fatt ma tfittex identiċi, 123456789, allura l-web server li apparentament huwa biss se fiduċja li dak l-utent huwa inti. U dan huwa tabilħaqq fundamentali theddida kwalunkwe ħin li inti tuża cookies għaliex jekk xi ħadd biss spoofs hekk li jitkellmu cookie tiegħek, figuri barra dak li hija, jew billi verament ikkupjar billi tħares lejn il-kompjuter tiegħek u li jkunu simili, OK. Cookie David huwa JJ3JIK u oħrajn, u mbagħad dawn qed intelliġenti biżżejjed biex tkun taf kif issolvi manwalment jibgħat dik cookie minn browser jew minn programm huma jiktbu, dawn jistgħu totalment log fis websajt kif inti. Mhuwiex li diffiċli li jippretendu li jkunu xi ħadd ieħor sakemm aħna tirrevedi p-set tnejn, li introduċiet liema? UDJENZA: Kriptografika. DAVID Malan: A ftit daqsxejn ta 'kriptografija. Kriptografija sempliċi, inqas fil- standard edizzjoni, iżda kripto xorta. inqas. Għalhekk jirriżulta li jekk inti kriptaġġ kollha dawn headers jużaw xi ħaġa li inti issa tista 'tkun taf aktar familjari bħala SSL, socket layer, jew URLs https:/, allura kollha ta 'dawn affarijiet aħna kont qed glancing fil huma attwalment encrypted, li jfisser li huwa simili inti ma tistax taqra l timbru idejn. Biss facebook.com jista ', jew google.com, jew f'dan il-każ, l-appliance jista ' taqra li timbru idejn. Traġikament għalkemm, u għal darb'oħra, dan huwa kollha wisq xierqa mal-għalf NSA l-aħħar, anki SSL huwa breakable. U huwa attwalment mhux li diffiċli biex saħansitra xquq li encryption. Mhux tant mill-ikkrekkjar ta 'l-encryption, iżda mill tricking l- browser fis decrypting id-dejta qabel iż-żmien. Iżda għal darb'oħra, aħna ser inti tease ma 'dik qabel twil. Għal issa, biss ikunu jibżgħu. Huwa traġikament tip ta 'veru. Kull dritt. Għalhekk, fejn ma dan issa leave us? Well, ejja tagħmel dan. Ejja jimxi 'l quddiem u tieħu quick teaser qabel we jieħu pawża. U naħseb aħna ser linger ftit itwal illum, imma aħna qed tmur biex adsa fis marka xi ħaġa ġdida u sexy, li se iqabbduk l-aptit tiegħek għal saħansitra aktar. Allura dak hu l-teaser. Allura SQL, bdejna nitkellmu dwar dejjem hekk qosor aħħar darba. Int ser verament tikseb idejk maħmuġin ma 'xi ta' dan fil-p sett sebgħa. U f'termini laymans, dak ma SQL - S-Q-L - jagħmel għalik? X'inhu dan? Yeah. UDJENZA: Ejja inti aċċess għad-data. DAVID Malan: Yeah. Hija ejja inti aċċess għad-data fid-database. Strutturat Mistoqsija Lingwa. U dan huwa essenzjalment lingwa ta 'programmar. Hemm karatteristiċi ta 'dan li aħna mhux se anki tuża fil-klassi. Imma int tista 'effettivament jiddefinixxu l-funzjonijiet. Huma qed jissejjaħ maħżuna proċeduri fl SQL. Iżda aħna ser jżommha pjuttost sempliċi u biss użu minnha għal xi operazzjonijiet bażiċi bħall-għażla tad-data, li jdaħħal data, aġġornament tad-data, u t-tħassir tad-data. U inti tista 'verament think ta' database, bħal database SQL, biss bħala qed Microsoft Excel. Minħabba SQL tirreferi għal relazzjonali database, fejn rigward ifisser biss tabelli. Ringieli u kolonni. Allura xi ħaġa li tista tpoġġi fil-spreadsheet bħal dan jew Google Docs, inti tista 'tpoġġi fis-database SQL billi jiddikjara tabella. Issa, kif taħseb li attwalment aċċess dik l-informazzjoni? Ukoll, jikkmanda jew mistoqsijiet bħal dan. TAGĦŻEL, DAĦĦAL, AĠĠORNAMENT, u ħassar. U għall-parti l-kbira, dawn huma l- erba uniċi ingredjenti li ghandek bzonn biex tagħmel xi ħaġa pjuttost qawwi fil-problema stabbiliti seba. Issa lura fil-ġurnata, inti fil-fatt jinteraġixxu ma 'database fil- tieqa terminal iswed u abjad fil- pront Teptip bħal dan. U d-database aħna qed taħdem fuq l- apparat huwa msejjaħ MySQL, li hija magna database liberu u open source. Jekk inti Google u aqra l-Wikipedija artikolu, inti ser tkun taf li l-isem huwa daqsxejn ta 'transizzjoni għal xi verżjonijiet ta 'Linux. Database Maria huwa attwalment furketta biex ngħidu hekk ta 'MySQL. Qasir Long storja, Oracle mixtrija MySQL. Oracle huwa kumpanija kbira. Nies ġew inkwetat li dan iwassal m'għadhomx jibqgħu sors pjuttost miftuħ, għalhekk dan huwa biss kopja ta 'MySQL li l- xorta b'xejn, għadu sors miftuħ, u installati fil Fedora Linux kontumaċja. Iżda din hija tip ta 'uġigħ fl- għonq li jiffamiljarizzaw ma ' database b'dan il-mod. Allura aħna jinkludu fl-appliance CS50 għodda sors miftuħ libera msejħa phpMyAdmin. Biss koinċidenza li Huwa bil-miktub fil-PHP. M'hemm l-ebda fundamentali bżonn għall PHP hawn. Iżda din hija biss għodda fuq l-internet li aħna titniżżel b'xejn, installat fil- l-apparat, li jippermetti li jkollhom grafika user interface li magħhom biex tesplora l-p sett seba database ma li biex joħolqu databases ġodda, ngħid għal proġett finali tiegħek jekk youd simili, u finalment joħolqu websajts dinamika bħal CS50 Finanzi li jippermettu li inti mistoqsija data u jaġġornaw data dinamiku. Int mhux se jkollhom jużaw biss fajl test sempliċi jew CSV. Inti tista 'attwalment jużaw database smart programm sabiex inti tista 'twettaq b'mod aktar mistoqsijiet sofistikati milli sempliċiment qari permezz kollox lineari. Allura per eżempju, dan huwa dak li aħna nagħtu inti out tal-kaxxa għall-p sett sebgħa. Dan huwa tabella bi apparentament inqas tliet kolonni, waħda minnhom hija username, li waħda minnhom hija hash, u l-ieħor tagħhom huwa ID. Imma l-ħaġa interessanti, u biss biex tease ħsieb wieħed hawn, username x'aktarx li huwa diġà unika, right? I mean, aktar xi website, jekk għandek username, hemm ma jistax ikun f'żewġ Caesars. Ma jistax ikun hemm żewġ malans. Ma jistax ikun hemm żewġ jharvards. Unika tagħha. Inkella, dawn ma jkunux jafu liema jharvard fatt hu. Allura x'jista 'jkun l-motivazzjoni għall wkoll jkollhom tielet kolonna fuq ix-xellug hemm imsejħa ID, li qisu numru li huwa simili unique? Iħoss żejda ftit lili ewwel daqqa t'għajn. Għaliex jista 'jkun konvinċenti li jkollhom mhux biss usernames uniku, iżda wkoll numri uniċi? UDJENZA: Huma jista 'jkollhom l-istess password. DAVID Malan: Nies jista 'jkollhom l-istess password, żgur. Dan jista 'assolutament jiġri. Iżda jekk dawn ikollhom din username uniku, I jargumentaw li dan ma verament kwistjoni, għaliex jekk dawn it-tip fl tagħhom username, I biss bżonn li jiċċekkja tagħhom password, hash tagħhom tiegħu. Għaliex inkella? UDJENZA: Faster tiftix. DAVID Malan: Faster tiftix. Għaliex? UDJENZA: ID hija waħda biss. DAVID Malan: ID huwa biss karattru wieħed, jew biex ikunu aktar preċiżi, huwa numru, dan huwa probabbilment 32 bits jew xi ħaġa bħal dik. Billi l-username, apparentement Jason Hirschhorn sad hemm tip ta ' ridiculously twil, u li għaddej biex jieħdu me ħafna aktar ħin biex string iqabblu H-I-R-S-C-H-H-O-R-N, u forsi a / 0 jew xi ħaġa bħal dik, sabiex tfittex up Jason, għall-kuntrarju biss qal tagħti me numru utent tnejn. C'est 32 bits. Huwa INT waħda li għandek biex titqabbel. U fil-fatt, dan huwa eżattament għaliex databases tendenza li tassenja IDs uniċi li ringieli fihom. Issa liema tipi oħra tad-data hemm minbarra INT u apparentement kordi bħal dan? Well, biex ikunu aktar xierqa, Databases SQL, bħall- MySQL, għandhom kampijiet Char. U CHAR ftit misleadingly mhuwiex CHAR wieħed. A qasam CHAR f 'database MySQL huwa karattri wieħed jew aktar, imma hija numru fiss ta 'karattri. Għalhekk per eżempju, jekk I jmorru fuq biex phpMyAdmin kif inti tista 'diġà, jew dalwaqt se problema stabbiliti seba ', u mmur għad-database tiegħi, u biss għall-gost, ejja tinħoloq tabella ġdida msejħa test bil biss żewġ kolonni. I ser mbagħad ikklikkja Mur. U dan se jsir pjuttost familjari, speċjalment kif inti tinker madwar fuq tiegħek. Hawnhekk I tista 'tip ID joħolqu tabella ġdida ta INT tip. Imma hawn I jista tip username li jirrikreaw dik it-tabella preċedenti. U l-avviż I jkollhom mazz sħiħ ta 'tipi li jagħżlu minn. U dan ukoll huwa għaliex phpMyAdmin huwa tip ta 'sbieħ. Huwa tip ta 'awto-tagħlim fl-li inti tista 'sempliċement tip ta' punt u kklikkja, u tħares lejn menus dropdown, u jiddeduċi minn li dak poteri SQL jagħtik. U fil-fatt, jekk I jagħżlu CHAR, I imbagħad għandek tispeċifika t-tul, jew kif Valuri ħafna, kemm Chars. Valuri hekk komuni ħafna huma affarijiet simili 255, iżda li ftit twil. Komunement huwa tmienja għal username. Imma dak li ftit żgħar dawn il-jiem. Allura din hija deċiżjoni disinn. Huwa 8 karattri max, 32, 255, 1,000? Huwa verament sa inti. Iżda qasam CHAR huwa numru fiss. Hekk jagħżlu ftit wisq u int tip ta ' invitat jekk inti tixtieq a username itwal. Agħżel wisq u x'hemm l-isfel? UDJENZA: [inaudible]. DAVID Malan: Huwa ħela. Eżatt bħal fil C, jekk għandek akbar blokki ta 'memorja milli għandek bżonn, int biss ħela ta 'ħin u ħela ispazju. Allura bħala alternattiva, teżisti Varchar, li jsolvi din il-problema billi trattament tul mhux bħala tul fiss, iżda bħala tul massimu, u billi jintuża numru varjabbli ta 'Chars, li mbagħad tendenza li jużaw biss bħala ħafna kif inti Chars attwalment ħtieġa. Ħsejjes li perfetta. Għaliex ma we jeħles mill- Data CHAR tip allura? Liema jista 'jkun l-tnaqqis ta' użu VARCHARs, li ħsejjes bħal din hija rebħa sbieħ? Yeah? UDJENZA: [inaudible]. DAVID Malan: OK, tajba. Mela jekk kollha tad-data tiegħek huwa l-istess tul, x'inhu l-interess? UDJENZA: Minħabba int wasting data billi tgħidilhom kollha. DAVID Malan: Mela jekk kollha tad-data tiegħek huwa l-istess tul, għalkemm, nixtieq jargumentaw li tispeċifika t-tul massimu fuq varchar mhi xejn differenti minn tispeċifika tul fiss fuq CHAR jekk inti taf li hemm numru bil-quddiem. Iżda hemm tabilħaqq, u jien ser sort ta ' estratt mill din ir-risposta l-realtà li għad hemm max, li jista ' jkun annoying, speċjalment jekk inti jiltaqgħu isem ta 'persuna li l- eċċezzjonalment twil li inti ma tantiċipa. U huwa wkoll ftit inqas effiċjenti li attwalment tfittex fuq VARCHARs bħala kuntrarju Chars tiftix, speċjalment għat-tabelli twil li jkunu lottijiet u lottijiet ta 'data. Allura hawnhekk ukoll, tematiku huwa għal darb'oħra ebda għażla ovvja. Hekk biss li jtik sens ta 'l-oħra tipi ta 'data li jistgħu jkunu ta' interess jew għal p-sett seba 'jew fil- il-futur, hemm INT. Hemm BIGINT, li huwa simili twil twil. Hemm tendenza li jkun 64 bits. Hemm deċimali, li tkun taf tara fil il-problema sett, li huwa ferm cleaner tweġiba għall-problemi li għandna ltaqgħu mal float u galleġġjanti punt impreċiżjoni. U allura hemm DateTime. Hemm litteralment a tip ta 'data li għandha lill-dehra sena, xahar, jum, u siegħa, minuta, u t-tieni. Iżda databases SQL għandhom ukoll affarijiet aħna ser sejħa indiċijiet. U indiċi hija xi ħaġa li inti jispeċifika meta jinħoloq il-mejda li jagħmlu tfittxijiet u operazzjonijiet oħra aktar effiċjenti. Speċifikament, hemm xi ħaġa imsejħa l-indiċi PRIMARY li inti tista ' tiddikjara kif ġej. Għamilna dan għalik ma 'l- utenti tabella aħna nagħtuk. Imma avviż jekk jien kienu manwalment jerġgħu jinħolqu -tabella hawn utenti tagħti dan l-isem ta 'l-utenti. I diġà speċifikat ID. I speċifikat INT. I speċifikat username ma massimu 32 karattru. Imma jekk inżommu scrolling f'dan pjuttost tieqa wiesgħa, avviż hemm mazz ta 'affarijiet oħra I jistgħu jispeċifikaw. Waħda, I tista 'tispeċifika l-attributi simili, inti taf liema, dan INT għandhom ikunu iffirmati. Ma rridx numri negattivi, hekk ejja jagħmluha mhux iffirmat. Null mhijiex rilevanti hawnhekk għaliex I do jridu kull utent li jkollha numru uniku. Ma rridx li din tkun nulla. Iżda dan huwa interessanti. I tista 'tispeċifika li ID huwa jew il- kodiċi primarju ta 'din id-database, jew huwa uniku, jew huwa indiċjati, jew full test. Allura għal skopijiet tal-lum, l-istorja twila , mezzi PRIMARJI qosra li dan għandu jkun kemm kunċettwalment kif ukoll teknikament il-qasam li nużaw biex unikament jidentifikaw l-utenti. Allura meta nħarsu up utenti, dan huwa tip ta 'wegħda li tfittex lilhom aktar minn li identifikatur uniku. U d-database se tiżgura li jekk inti jkollhom numru user 3, inti ma tistax fiżikament daħħal utent ieħor bl-istess numru 3. Id-database se biss tirrifjuta biex isalva bidliet tiegħek. Liema hija ħaġa tajba, għaliex inti tista ' tipproteġi ruħek mill yourself. awto Alternattivament, għal username. Allura l-tieni ringiela, recall, huwa l-qasam username. Allura l-tieni ringiela hawnhekk huwa username, kif għamilna fuq ix-xellug hemm. Allura x'iktar jista nixtieq li tispeċifika? Jien mhux permess, skond SQL, li tispeċifika żewġ ċwievet primarja. inti tista 'tispeċifika ewlieni konġunta fejn inti tħares lejn żewġ oqsma, iżda dawn ma jistgħux individwalment jkun ċwievet primarja. Allura dak hu barra mill-kwistjoni. So li jista nixtieq li jagħżlu? Well, UNIĊI huwa simili fl-ispirtu għal kodiċi primarju fejn inti tispeċifika dan kamp għandha tkun unika, imma hija mhux se jkun il-wieħed I użu l-ħin kollu. U aħna qed mhux se jużaw dan wieħed kull il-ħin għal liema raġuni mill-ġdid? Huwa bil-mod potenzjalment jekk huwa username twil. Huwa biss ħela ta 'ħin. INDIĊI, sadanittant, tispeċifika li huwa mhux se tkun unika, imma nixtieq li taħdem magic tiegħek taħt il- barnuża sabiex ikun aktar mgħaġġel għalija li tfittxija fuq il-qasam. Allura dan probabbilment mhuwiex rilevanti hawnhekk. Għal username, I d jargumentaw li UNIQUE hija risposta tajba. Imma ejja ngħidu li għamilna utenti aktar interessanti minn sempliċiment usernames, hashes, u numri tal-ID. X'jiġri jekk aħna taw nies ismijiet sħaħ? X'jiġri jekk aħna taw lilhom indirizzi u data oħra dwar minnhom? Ukoll, jekk inti tispeċifika li kolonna a database hija indiċjata, dan ifisser li MySQL, jew Oracle, jew kwalunkwe database inti qed tuża, għandhom jaħdmu magic tagħha u l-użu xi tip ta 'data fancy struttura bħal siġra, jew trie, jew tabella hash, jew xi ħaġa li jiggarantixxu li meta inti tfittex għal data bl-użu jagħżlu fuq dak il-qasam partikolari - bħal urini kulħadd li ħajjiet fuq Oxford Street. A mistoqsija bħal dik. Jekk għandek speċifikati minn qabel li inti tixtieq indiċi fuq il-qasam, l- tfittxijiet se jkun ħafna, ħafna aktar mgħaġġla. Jekk inti ma jispeċifikawx indiċi, l-aħjar inti tista 'tagħmel huwa tfittxija lineari jekk mhuwiex magħżula. Imma jekk inti tispeċifika INDIĊI, il-smart persuni li għamlu l-database - nies bħalek li issa jafu siġar u tipprova u tabelli hash - awtomatikament se jibni data bħal istruttura RAM biex tiżgura li dawk tfittxijiet huma ħafna aktar mgħaġġla. Fulltext sadanittant huwa simili fl-ispirtu, iżda tippermetti li tagħmel wildcard tfittxijiet, bħal urini kulħadd li jgħix fil-toroq li jibdew bil- ittra O għal kwalunkwe raġuni. Tista 'tagħmel tfittxijiet wildcard bħal dik. Or, affarijiet aktar konvinċenti simili juru me kulħadd li għandu l-kelma - urini kulħadd li isimha jibda ma 'ittra partikolari. Tista 'tfittex għal keywords b'dan il-mod. Kull dritt. Allura, l-opportunitajiet ta 'disinn hemm potenzjalment. Hemm oħrajn li jien ser mewġa idejn tiegħi fuq. Jirriżulta li inti jista 'jkollhom magni ta 'ħażna differenti. U dan huwa aktar arcane minn għandna bżonn ċertament għal problema stabbiliti seba. Permezz ta 'default, inti guys qed jużaw xi ħaġa imsejħa InnoDB. Int ser ikollok tara referenza ta 'din x'imkien interface phpMyAdmin-aktar probabbli. Imma jafu li hemm disinn oħra deċiżjonijiet li huma ta 'potenzjal interess jidħlu proġetti finali jekk inti tagħmel fuq l-internet xi ħaġa. Imma ejja tagħmel dan. Ejja jimxi 'l quddiem u jdaħħlu dan fuq il- screen bħala teaser għal storja jinvolvi inti, roommate, u ħġieġ tal-ħalib. Ejja tagħti żewġ minuti jew hekk break hawn. U jekk inti tista 'twaħħal madwar, ejja come lura, tfittex ftit aktar fil SQL, u allura daqsxejn ta 'JavaScript ma -p stabbiliti tmienja fil-moħħ. Kull dritt. Allura, ejja nikseb inti taħseb dwar każ kantuniera li jistgħu faċilment jinqalgħu fil-kuntest ta 'użu ta' database, jew franchement, anki bl-użu l-affarijiet dinjija reali bħal ATMs sabiex jiksbu flus. Allura hawnhekk friġġ. Ejja ngħidu li inti stajt ltqajna waħda wisq dorm tiegħek jew dar tiegħek. U inti stajt ltqajna roommate waħda, u tnejn int verament tixtieq ħalib per eżempju. Allura inti ġejjin dar mill-klassi jum wieħed. Hu jew hi għadu mhux lura. Inti tiftaħ il-fridge. Int verament tixtieq ħġieġ kbir ta 'ħalib. M'hemm l-ebda ħalib. Allura dak do you do? Inti qrib il-fridge. Inti grab ċwievet tiegħek. Inti tmur għall-kwadru. U ikollok fil-linja fil CVS lejn dawk affarijiet checkout awto, li dejjem tieħu aktar milli fil-fatt jkollhom kaxxiera. Xorta. Mela allura, sadanittant, dot dot dot, tiegħek roommate jiġi dar u hu jew hi bl-istess mod għandha hankering għal xi ħalib. Hekk hu jew hi tiftaħ il-fridge, jistenna ġewwa, u oh, kkritikat. Nru ħalib. Hekk hu jew hi irjus, jiġri li jmorru għall-CVS oħra, li kien biss blokk bogħod għal xi raġuni, u hu jew hi gets fil-linja li jixtru xi ħalib. Sadanittant, inti ġejjin dar, hu jew hi jiġi dar, u liema do inti finalment ikollhom? Ħalib darbtejn daqs. Imma inti ma verament simili ħalib li ħafna. Allura issa għandek ħalib tant li issa wieħed minnhom huwa biss se jmorru qarsa eventwalment. Allura din hija problema tassew ħżiena. Dritt? Allura dak li ġara? Allura fundamentalment, dan huwa tip ta 'eżempju redikoli. Iżda taħt il-barnuża, dak li aħna kellna jiġri hawnhekk huwa tnejn inti ċċekkjati l-istat ta 'xi biċċa ta' memorja, il-friġġ. Tnejn inti ċċekkjati l-istat ta 'xi varjabbli. Inti kemm ġibdet konklużjoni li inti mbagħad aġixxa fuq. Iżda sfortunatament, filwaqt li roommate tiegħek kien fil-maħżen, l-istat ta 'dik varjabbli nbidlu, hu jew hi daħlet lura u issa irid jibdel l-istat, iżda huwa diġà ġie mibdul fuq lilu jew lilha. U ovvjament, hu jew hi ma jkollhom marret għall-maħżen jekk dawn kienu jafu li inti kienu diġà en route. Allura fid-dinja reali, kif tista 'inti jevitaw din il-problema, jekk wieħed jassumi għandek fridge, għandek roommate, u inti fil-fatt tixtieq ħalib? UDJENZA: Nikkomunikaw. DAVID Malan: Nikkomunikaw. OK. Imma kif tista 'inti tikkomunika? UDJENZA: Ħalli nota. DAVID Malan: Ħalli nota, right? Dejjem iħallu nota, għall- fannijiet ta 'l-ispettaklu. Kull dritt, hekk dejjem iħallu nota, jew tpoġġi verament bħal katnazz jew xi ħaġa fuq il-friġġ li jżomm tiegħek roommate milli jispezzjonaw l-istat ta ' dak il-varjabbli. Issa, għaliex jista 'dan jiġi germane biex problema stabbiliti seba ', jew biex ATMs. Well, timmaġina dinja fi ATM fejn inti tista 'tkun kapaċi li jmorru sa ATM magna hawnhekk, u ATM ieħor hawnhekk. U dan jiġri spiss. U jissoponi kellek żewġ karti ATM, li huwa possibbli li tinkiseb. U inti log fis-żewġ magni effettivemnt simultanjament, nisperaw filwaqt li qed ifittxu l-ebda waħda. U allura inti tip PIN tiegħek bejn wieħed u ieħor fl-istess ħin. U mbagħad inti tagħmel mistoqsija bilanċ biex tara kemm flus ikollok. U ejja ngħidu li għandek $ 100 jitħalla fil-kont tiegħek. Allura essenzjalment simultanjament, inti jgħidu wieħed, żero, żero, jidħol. U inti nisperaw tikseb lura xi flus. Imma kemm flus tista 'tikseb lura? Issa kompjuters fl-aħħar tal-ġurnata, speċjalment jekk dawn qed nitkellmu servers, mhux bilfors tagħmel affarijiet fl-ordni li mistenni. Allura jissoponi x'jiġri, minħabba kwalunkwe netwerk kwistjonijiet veloċità hemmhekk huma, jew kwistjonijiet CPU hemm, jew xi ħaġa bħal dik, jissoponi li l- ewwel ATM kontrolli bilanċ u tiegħek jara, oh, din il-persuna għandha $ 100. Iżda mbagħad gets distratt għaliex forsi backup qed jiġri u għalhekk huwa tmajna. Jew forsi waqt verifika, in-netwerk konnessjoni ltqajna ftit aktar bil-mod minħabba dan jiġri biss. Huma qed mezzi fiżiċi. Allura sadanittant, it-tieni ATM huwa tistaqsi l-istess kwistjoni. Kemm flus ma David jkollhom? $ 100 huwa l-risposta. Iżda minħabba l-ewwel ATM għadha ma bagħat il-messaġġ naqqas $ 100, kemm ATMs kienu spezzjonati kaxxa-forti tal-bank, jaraw hemm $ 100 hemm, u issa kemm magni potenzjalment huma se bżiq risposta. Issa, dan huwa kbir għalik f'xi sens jekk dak il-bank ma finalment qed jibdlu l-ammont għal nieqes 100 minn iffissar tal-varjabbli daqs tiegħek Kont tal-Bank ugwali għal 0, kuntrarju biex tagħmel minus 100. Issa fl-agħar każ għall-bank - jew fl-aħjar għall-bank, sadanittant, dawn jagħtu inti $ 200, u kont bankarju tiegħek issa turi negattiv $ 100, li verament ma jibbenefikaw inti fil-livelli kollha. Imma l-punt hu li din ir-razza kundizzjoni għal żewġ roommates jkollna ħalib, jew għal żewġ ATMs jippruvaw jiksbu l-flus u jibdlu l-istat tal-kaxxa-forti fl-istess ħin teżisti ebda darba li inti għandek database. Issa fil-problema stabbiliti seba ', din il-kwistjoni tqum fis-sens li jekk tixtri sehem ta 'Facebook istokk, u mbagħad għal eżempju inti tixtri tieni sehem ta ' Facebook istokk, inti għandek bżonn tagħmel deċiżjoni bħala l-programmer. Sabiex tiddeċiedi kif biex jaġġornaw il- database, odds huma inti qed tmur għall- jkollhom ringiela waħda għal dak l-istokk, u dan huwa mod wieħed biex jimplimentawha. U int se jkollhom sehem wieħed ta ' FB, li hija simbolu ticker istokk tagħhom għal dan username, jew dan l-utent ID, l-identifikatur uniku. Iżda l-istess storja jista 'jiġri hawn. Jekk inti tagħmel TAGĦŻEL fil SQL, kif tkun taf tara fil-problema sett seba meta tara, oh, David għandu sehem wieħed ta 'Facebook istokk. Let me issa tbiddel dan li hemm żewġ ishma, minħabba li huwa jixtieq jixtri tieni sehem. Iżda jissoponi David attwalment kellu żewġ twieqi browser miftuħa, jew jissoponi li huwa kont konġunt ma 'żewġ konjuġi, u tnejn minnhom qed jippruvaw biex iwettqu l-istess operazzjoni, hemm, wisq, il- jeżisti potenzjal għal deċiżjoni biex tkun imsejsa fuq il-preċedenti istat tad-dinja - il-kont għandu sehem wieħed - u kemm nies, jew it-tnejn servers, issa jippruvaw jgħidu inkrement li żewġ ishma. Iżda f'dan il-każ, inti jista 'jkollok mitluba me flus kemm għall-ishma, iżda jiżdied biss dak iż-żmien wieħed. Għalhekk fil-qosor, il-problema fundamentali hawnhekk, kif ma 'l-Joke dwar jħallu jinnota, jew it-tqegħid katnazz fuqha, huwa jekk żewġ persuni, jew żewġ ħjut - Think lura għall-bidu - tista 'tispezzjona l-istat ta' xi varjabbli u mbagħad jipprova jbiddel dak il-varjabbli, iżda dawn iż-żewġ affarijiet ma jiġri fil- istess ħin, iżda jistgħu jiksbu interrotta minn affarijiet oħra jiġri, data tista ' jsibu rwieħhom stat ħafna stramb. U inti tista 'tibbenefika jew inti jista' jbati fis-sens ta 'l-eżempju flus. Għalhekk fl problema stabbiliti seba ', aħna nagħtuk din il-linja waħda tal-kodiċi, li fit- storja qasira, issolvi din problema MySQL. Din l-istruzzjoni twil ħafna li ma anki tajbin fuq linja waħda fuq l- iskrin hawn jiżgura li operazzjoni tiegħek huwa dak li sejjaħ atomika. Dan kollu jiġri f'daqqa, jew ma jiġri fil-livelli kollha. Din il-frażi twil ħafna ma tistax nikseb interrott parzjalment. U dak li ma huwa litteralment dak li jgħid. Daħħal fis xi tabella li ġej tliet oqsma dawk il-valuri speċifiċi, iżda fuq duplikat ewlenin, ma tagħmel daħħal. Do aġġornament. Allura dan huwa simili tagħmel TAGĦŻEL u DAĦĦAL biex ngħidu hekk fl-istess ħin. U dak huwa l-muftieħ li probabbilment tkun riferita hawn? Jirriżulta, u tkun taf tara dan fil- problema stabbiliti spec Seba, għaliex konna dikjarat li jkun hemm ċavetta unika fuq din it-tabella partikolari b'mod li ma jistax ikollok ringieli multipli għall-istess utent ma 'l- istess Penny istokk simbolu - f'dan l-eżempju hawn, DVN.V hija stokk Penny iblah li aħna jirreferu fit-spec. Għaliex aħna ħadthom ddikjarat li hu uniku, dak li dan ifisser huwa li jekk inti jippruvaw daħħal ringiela duplikat, int minflok ser taġġorna mingħajr ħaddieħor jkollhom iċ-ċans għall-bidla l-istat tad-dinja jew. Għalhekk fil-qosor, dan jiżgura affarijiet huma atomika. B'mod aktar ġenerali għalkemm, databases bħal MySQL - u inti m'għandekx bżonn din il-karatteristika għall- p-sett seba ', iżda żżomm f'moħħha għal il-futur - appoġġ liema huma msejħa tranżazzjonijiet, fejn inti tista 'tgħid START transazzjoni litteralment. Tista 'mbagħad tesegwixxi żewġ dikjarazzjonijiet SQL. U dikjarazzjoni SQL, kif tkun taf tara fil-p stabbiliti seba ', jistenna ftit xi ħaġa bħal din. Taġġorna imsejħa kont tabella. Issettja l-kolonna bilanċ ugwali għal dak kollu li il-kolonna bilanċ bħalissa huwa nieqes 1,000 fejn l-għadd, il- numru tal-kont, bħall-user ID, ugwali 2, u mbagħad taġġorna kont dot dot dot. Allura f'termini laymans, liema do dawn iż-żewġ mistoqsijiet jidhru li huma jagħmlu fil- sens dinja reali tal-banek? UDJENZA: trasferiment għal iffrankar. DAVID Malan: Eżattament. Trasferiment ta 'fondi minn kont għall-ieħor. U dan huwa eżempju ieħor fejn int verament irridu dawn iż-żewġ affarijiet li jiġri jew le jiġri. Inti ma tridx xi ħaġa li jiksbu fil- nofs minnhom u potenzjalment mess up l-matematika, jew mess up kemm flus għandek, jew kemm flus il-bank ikollu. Allura x'hemm verament sbieħ dwar transazzjonijiet fil MySQL hija li, u databases b'mod aktar ġenerali, huwa li dawn u nies intelliġenti li ħadthom implimentati dawn il-karatteristiċi figura kif jagħmlu żgur li kemm ta 'dawk l-affarijiet jiġri jew xejn. U jekk int verament jaspiraw li jagħmlu websajt li użaw minn nies fuq kampus, nies fid-dinja reali, tagħmel xi ħaġa fis-sens istartjar, dawn huma t-tipi ta ' deċiżjonijiet tad-disinn li isiru dejjem hekk importanti. Inkella, inti jibdew jitilfu data, jitilfu utenti, jew fl-agħar każ bħala Rajna hawn, potenzjalment jitilfu l-flus. Għalhekk għal darb'oħra, aktar fuq li fil-problema stabbiliti seba ', kif ukoll forsi għal xi wħud inti fil-proġetti finali. Mela ejja bidla li stampa kellna mument ilu biss f'waħda aktar mod. So let me attwalment tara jekk I jistgħu - Nope, li marret. Hemm hu. Allura dan huwa fejn aħna jitħalla aħħar darba. U jirriżulta aħna qed tmur biex toss ħaġ'oħra fis-taħlita hawn - lingwa imsejħa JavaScript. Allura JavaScript fatt jaqbilx effettivament fil din il-biċċa - u jien ma pjuttost jħallu spazju biżżejjed, għalhekk dan mhux issa li l-iskala. OK, dan huwa verament pathetic. OK, b'tali mod li JavaScript. Kull dritt. Ninsab verament tagħmel dan disservice. Kull dritt. Allura JavaScript huwa programmar ieħor lingwa, u l-aħħar tagħna, Jekk dan jgħin jassigurhom li hemm Ma tantx aktar mill-idranti tan-nirien hawn. Allura JavaScript huwa wkoll interpretat lingwa, li jfisser li inti ma josservawha fis żerijiet u dawk. Inti biss run. Imma x'hemm fundamentalment differenti ma JavaScript normalment huwa li inti ma run fuq web server tiegħek. Hija ma jiksbu run fil- appliance per se. Pjuttost, jiġrilha jitniżżel minn utent permezz HTTP fil-browser tagħhom - Chrome, Safari, Internet Explorer, Firefox, ikun x'ikun - u huwa l-browser li tesegwixxi dan partikolari lingwa ta 'programmar. Allura biex tkun ċara, PHP s'issa kien esegwiti jew fil-linja tal-kmand fl iswed u abjad tieqa tagħna, fuq server bħall-appliance, kompjuter bħall-appliance, jew huwa kien eżegwiti minn web server taħdem fuq il-kompjuter. Iżda l-tema hawnhekk hija li PHP s'issa tkun ġiet eżegwita server-ġenb, hekk l-utent u browser l-utent qatt ma jara linja tal-kodiċi PHP. Fil-fatt, jekk inti qatt tiftaħ browser għall- website tiegħek jew ieħor u int attwalment ara kodiċi PHP fil tieqa tiegħek, xi ħadd invitat up. Għaliex mhuwiex maħsub li jkun mibgħuta lil browser direttament. Huwa suppost li jiġi eżegwit u mdawwar fis xi ħaġa bħal HTML. Iżda JavaScript huwa essenzjalment l-oppost. Huwa maħsub biex jitmexxew tipikament ġewwa tal-browser window ta 'utent. U liema tipi ta 'websajts użu JavaScript allura dawn il-jiem? Bħal litteralment kull website popolari. Kull websajt li inti guys probabbilment użu ta 'kuljum jużaw JavaScript għall- sempliċi u anke l- karatteristiċi sexiest. Allura xi ħaġa bħal Facebook Chat jekk tuża dan. Kif ma li attwalment jaħdmu? Well s'issa, kollha ta 'l-għalf konna isir bl HTML u PHP jassumi li inti pull up a URL, u inti hit Ikteb, u tara xi kontenut HTML. U inti ikklikkja l-link, li tbiddel il- URL, bidliet il-paġna, u rikarigi xi kontenut ġdid. Ikklikkja URL ieħor jew jissottomettu formola, inti nikseb whisked għal paġna oħra u tara xi kontenut ġdid. Iżda bl-użu xi ħaġa bħal Facebook Chat, jew Gchat, jew Google Maps, rarament ma l-paġna kollha jġedded tali li inti tara l-iskrin abjad mumentarjament u imbagħad kontenut ġdid. Pjuttost, paġni tal-web llum huma dinamikament jkollna aġġornati mill-ġdid u ġdid u għal darb'oħra kull tip tal wara l-kwinti. U jirriżulta li meta inti tagħmel tmur xi ħaġa bħal Facebook, jew Gchat, jew Gmail, u l-aġġornamenti paġna awtomatikament mingħajr tagħbija mill-ġdid il- iskrin kollu, dak li ġara huwa li browser tiegħek għamel tip ta segretament talbiet addizzjonali HTTP - mhux għall-paġni web kollu, imma biss għall- biċċiet ftit ta 'data, bħall- messaġġ instant li l-ħabib tiegħek biss bagħtitlek, jew l-istatus aġġornament li xi ħadd biss bagħtitlek, jew l-tweet li xi ħadd biss mibgħuta. Huwa biss tagħmel talbiet ftit għal data, u mbagħad jużaw JavaScript, dan programmazzjoni lingwa, li jibdlu dak il-paġna web qisu mingħajr il- server tgħin, mingħajr il-server tiġġenera dak HTML. Għalhekk fil-qosor, JavaScript jistgħu jintużaw mbagħad li mhux biss jġibu data ġodda minn l-server mingħajr tagħbija mill-ġdid kollu kemm hu paġna jew sottomissjoni ta 'formola. Hija tista 'tintuża wkoll għall-bidla l-hekk imsejħa DOM - mudell tad-dokument oġġett - li huwa biss il-mod fancy għall qal il-siġra tal-HTML li rajna aħħar darba. Allura biex iserraħ ras, JavaScript huwa sintattikament daqshekk simili li C kif ukoll. M'hemm l-ebda funzjoni prinċipali. Inti biss tibda bil-miktub il-kodiċi u se jiksbu eżegwit, jew interpretat b'mod aktar xieraq. Kondizzjonijiet se teżamina bħal dan. Differenti minn C jew PHP għal dik il-kwistjoni. Espressjonijiet Boolean jew 'ed flimkien se teżamina bħal dan. Anded flimkien teżamina bħal dan. Swiċċijiet se teżamina bħal dan. Għal loops se teżamina bħal dan. Filwaqt loops se teżamina bħal dan. Tagħmel filwaqt loops se teżamina bħal dan. Dan huwa ġdid. Allura JavaScript ma jkollux foreach tibni per se, iżda dan jinbena għall i varjabbli array, ui f'dan każ isir valur indiċi. Allura huwa xi ftit differenti minn dik foreach, għalkemm verżjonijiet ġodda ta ' JavaScript huma joħorġu l-ħin kollu, hekk anke dawn lingwa karatteristiċi qed jevolvu. U Bħala twarrib, JavaScript dawn il-jiem jista 'jintuża wkoll fuq server bħad PHP billi jużaw qafas imsejjaħ Node.js. Waħda mill-TFS CS50, il Kevin, wassal a seminar fuq Node.js li ikunu disponibbli fuq cs50.net/seminars. Mela jekk int kurjuż, taf li inti jistgħu jużaw dan fuq in-naħa server bħala ukoll, iżda li l-xejra pjuttost reċenti, iżda waħda qawwija f'dak. Dan huwa xi ftit differenti. Dan huwa firxa fl JavaScript. U dak strajkijiet inti bħala differenti versus C jew PHP? Hemm stejjer malajr ftit nistgħu tell hawn. X'hemm nieqes versus PHP? UDJENZA: [inaudible]. DAVID Malan: Iva? Jiddispjacini, ngħid? UDJENZA: Mhux tiddikjara it-tip ta 'varjabbli. DAVID Malan: Aħna ma tiddikjara it-tip ta 'varjabbli. Allura fil-fatt pjuttost simili PHP, aħna mhux qed tispeċifika t-tipi ta 'dan il-varjabbli. Pjuttost, aħna qed aktar ġeneriku qal var għall varjabbli. Aħna ma jkollhom inkonvenjent PHP tal- sinjal dollaru, li filwaqt li tedious biex tip, ma tagħmel aktar ċara li xi ħaġa l-varjabbli. Billi hawnhekk, aħna qed tip ta 'lura għall- Approċċ C billi sempliċiment ssejjaħ varjabbli bl-isem irridu biex jagħtuh, bħal numri. U wkoll bħal PHP, għandna parentesi kwadri għall- Valuri ġewwa li array. Allura varjabbli fil JavaScript wkoll tista 'tidher bħal dan. Avviż hawn dan huwa string imsejħa s, iżda bl-istess mod li aħna mhux speċifikat li huwa string. Hawnhekk għalkemm hija karatteristika li ma jeżistu eżattament fl-istess mod fil-PHP, iżda ftit simili. Dan huwa oġġett fil JavaScript. U l-oġġetti huma tip ta 'l-Armata Svizzera Sikkina ta 'struttura data li inti tista 'tużahom għal kull numru ta' affarijiet. Hawnhekk, per eżempju, aħna qed tiddikjara kwotazzjoni varjabbli imsejħa. It-tip ta 'dak il-varjabbli huwa oġġett. Inti tista 'taħseb dan bħala Struct C li għandha keys u l-valuri. Simbolu huwa ċentrali. FB hija valur, apparentement simbolu istokk. Virgola. Prezz ieħor huwa importanti, u l-valur tagħha huwa apparentement punt floating, jew numru iktar ġenerali fir- JavaScript, ta '$ 49.26. Allura PHP ma jkollhom - ma rajniex fil PHP oġġetti pjuttost bħal dan, imma aħna ma tara Analog, li kien dak? UDJENZA: [inaudible]. DAVID Malan: arrays assoċjattiva. Allura billi PHP arrays assoċjattiva li sintassi hija qatt ftit hekk differenti - rajna il-parentesi kwadri. Rajna l-simboli vleġeġ stramb. JavaScript għandha oġġetti, iżda dan huwa aktar differenza semantika u sinonimu differenti għal issa. Madankollu, bħala twarrib, PHP għandha wkoll oġġetti b'mod li Java u oħrajn lingwi jkollhom oġġetti fl ipprogrammar oġġett orjentati lejn. Iżda aħna ser tuża dawn biss għal tipi ta 'data għal issa. Oġġetti u matriċi assoċjattiva. Dan wieħed jista 'jagħmilha ftit aktar ċara. Hawn għaliex l-oġġett huwa utli. Meta inti tixtieq li tiddikjara student, bħal Zamyla, nistgħu attwalment jirrappreżentaw biex ngħidu hekk ġewwa ta 'dan oġġett li jużaw parentesi kaboċċi bħad qabel mazz sħiħ ta 'ċwievet u valuri fil hawn. Għandna ID, dar, u l-isem għall- Zamyla, segwit b'waqfa u virgola bħala soltu fl-aħħar. Down hawnhekk ukoll, dan huwa kemmxejn differenti, iżda wkoll qawwija ħafna dawn il-jiem. Hawn firxa, u naf li minħabba hemm bracket up kwadru top u bracket kwadru fil-qiegħ. U dan huwa firxa ta 'dak data tip apparentament JavaScript? Dan huwa firxa ta 'jidher bħal tliet oġġetti. U naf huwa oġġett biss minħabba l-ċingi kaboċċi. U avviż hemm Brace kaboċċi miftuħa, xi għalf, Brace kaboċċi qrib, comma, mbagħad ftit aktar, comma, u mbagħad ftit aktar. Allura dak tliet argumenti separati minn żewġ virgoli. Allura dan huwa firxa ta 'tliet oġġetti. U kull wieħed minn dawk l-oġġetti tidher li membru student jew persunal ta 'xi sort, kull ma 'ID, house, u l-isem. Imma stajt sejjaħ din xi ħaġa imsejħa JSON - JavaScript Għan Notazzjoni. U dan huwa format data li attwalment huwa tant popolari ħafna u Vogue dawn il-jiem li jekk inti tikteb applikazzjoni li juża l-Facebook API, l-API Twitter, verament kważi kwalunkwe API hemmhekk f'dawn il-jiem, inklużi xi wħud CS50 stess, il- data ikollok lura ma jkunx qodma format CSV iskola. Minħabba jfakkru li CSV huwa sempliċi super. Huwa biss kolonni separati b'virgoli. JSON data jagħtik aktar metadata. Hija assoċjati buttuna ma 'kull valur hekk dawn ma jkollhom biss wieħed jassumi li il-kolonna 0 hija valur wieħed, kolonna waħda hija ieħor, kolonna tnejn huwa ieħor. Kollox fil oġġett JSON hawnhekk huwa tip ta 'awto-deskrizzjoni, għaliex kull wieħed mill-ismijiet fil dan il-fajl għandu litteralment isem fil-quddiem ta 'dan bħala string ikkwotat. Mela ejja tagħti ħarsa lejn ftit eżempji hawn. Let me jmorru fil-appliance. U let me go fis vhost tagħna direttorju fis pubbliku. U let me jmorru fil- JavaScript direttorju. U ejja imorru quddiem u tiftaħ dom-0.html, fejn DOM ifisser biss mudell tad-dokument oġġett. Hu l-għalf siġra li I imsemmi qabel. U let me nipproponi dan li ġej. Hawn paġna web li korp huwa pjuttost sempliċi. Allura stabbiliti hawn fil-qiegħ, Avviż I jkollhom forma. Rajna dawk ta 'qabel. Din għandha żewġ inputs, li waħda minnhom għandha ID tal-isem, li waħda minnhom għandha tip ta ' jissottomettu, u l-ewwel tip wieħed huwa test. Allura dan fil-fatt ħsejjes pretty sempliċi. Ejja mur hawn. Ejja ħa mmorru lura għall din il-paġna hawn. Ejja jmorru fil localhost, u jmorru fil direttorju JavaScript tagħna, u mur dom-0, u hawnhekk għandna din il-formola. Allura dak apparentement kollha din il-paġna ma. Hija għandha kamp isem ma a Issottometti buttuna. Imma jien mhux ser tuża PHP hawn. Jien ser tagħmel naħa tal-klijent kollox biex ngħidu hekk fil JavaScript kif ġej. Avviż li stajt tabilħaqq jingħata l-isem qasam ta 'dan il-kontribut uniku identifier, li fil-fatt se ħlief lili xi żmien fil-mument. U avviż stajt introdotti tag ieħor fir-ras tal-paġna web tiegħi, l-  tag. Allura huwa f'dan is-sens li JavaScript huwa lingwa ta 'programmar client-side. F'dan il-każ, bħal CSS, stajt jitqiegħdu hija dritta ġewwa ta HTML tiegħi. Imma avviż stajt ddikjarat funzjoni li jistenna ftit bħal PHP sintattiku, iżda dan huwa attwalment JavaScript, għaliex għal darb'oħra, huwa client-side fil-browser. U tieħu raden dak li din se tagħmel, anki jekk uħud mill-sintassi hawnhekk huwa ġdid. UDJENZA: Say bonjour min. DAVID Malan: Huwa ser jgħidu bonjour lil min żjarat din il-paġna. Iva, kif? Għalhekk avviż, jirriżulta fl JavaScript hemm twissija () funzjoni. Dan huwa tip ħafna ta 'funzjoni diqa li verament ftit tendenza li idejqu utenti. Mhuwiex waħda għandek verament użu tipikament, imma hija malajr u maħmuġin mod ta 'tip ta' stampar xi ħaġa lil utent grafika interface, bħal browser. Avviż hawnhekk li stajt ltqajna string fil kwotazzjonijiet uniku. Jirriżulta li b'differenza C, JavaScript jista 'effettivament tuża wieħed kwotazzjonijiet, u franchement huwa biss tip tal-konvenzjoni stilistiċi fost Programmaturi JavaScript għall-użu kwotazzjonijiet uniku. PHP, dawn għandhom attwalment ftit tifsira differenti. Iżda għal issa, biss jafu li dak l-uniku raġuni. Il-konvenzjoni fl JavaScript huwa spiss biex jużaw kwotazzjonijiet uniku, imma aħna jistgħu jużaw kwotazzjonijiet doppja fiż-żewġ postijiet ukoll. Allura dan huwa interessanti. Ifakkar aħħar darba li kellna li istampa fuq l-iskrin li ġibdet siġra fejn kellek l-HTML node, u l- node ras, u l-node ġisem, u mbagħad xi test. Imma kien hemm node wieħed speċjali fil- top ħafna li I imsejħa id-dokument. Ukoll, jirriżulta b'mod JavaScript, kull ħin tikteb programm JavaScript fil-browser, ikollok aċċess għal varjabbli globali speċjali. Simili fl-ispirtu li superglobals PHP, dan wieħed huwa msejjaħ fl kollha dokument zghar. Huwa simili Struct, iżda dan Struct għandha wkoll funzjonijiet ġewwa ta 'dan. Allura Struct C biss għandu data tipikament. Iżda oġġett JavaScript kif dan teknikament huwa wkoll il-funzjonijiet, inkella magħruf bħala metodi, ġewwa ta 'dan. U inti tista 'sejħa funzjoni ġewwa ta' dan l-oġġett pjuttost litteralment tagħmel tagħha isem, dot, u allura l-isem ta ' il-funzjoni, jew għal darb'oħra metodu. Huwa biss sinonimu, verament. U dak ma din il-funzjoni do? Tista 'tip ta' raden mill-isem tagħha. Get element mill ID. Allura dan se tfittex il-paġna web, tfittxija li siġra, tfittex kwalunkwe node, element AKA, għandha ID unika ta 'isem unquote kwotazzjoni. U allura dak li jien se jagħmlu? Jien ser tikseb l-valur ġewwa ta ' li node fil-siġra, u jien ser li b'xi mod jgħidu bonjour dak l-isem. Allura tieħu raden, anke jekk aħna ħadthom ma rajt dan għadu, liema jagħmlu l-plus simboli jfissirx hawn u hawn probabbilment? UDJENZA: concatenate. DAVID Malan: concatenate. Dritt, u dawn huma biss tip ta 'disinn deċiżjonijiet nies għamlu snin ilu. Fil PHP, inti concatenate affarijiet ma tikek. Fl C, inti jaqbżu permezz ta 'diversi ċrieki u sejħa funzjonijiet simili strcopy () jew strcat () jew funzjonijiet oħra bħal dawn. Iżda fl JavaScript, tuża pluses. Allura dan huwa biss concatenating tliet kordi - hello, isem, u mbagħad punt exclamation. Allura meta u għaliex din il-funzjoni imsejħa għalkemm? Well, tieħu raden mill- HTML fil-qiegħ. Għaliex huwa insellem () imsejħa, jew meta? Apparentement, bħala l-aħjar I tista 'tgħid, fuq iressaq, meta tiġi ppreżentata din il-formola, Jien ser nagħmel kull ma huwa ġewwa ta 'dawn il-kwotazzjonijiet. U speċifikament, jien ser sejħa insellem () u mbagħad jirritornaw falza. Well, ejja ara dak ix-xibka effett hawnhekk huwa l-ewwel. So let me jimxi 'l quddiem u t-tip fi, ngħidu aħna, Loren, Submit. Hello Loren. Ejja ara jekk forsi dan kien biss implimentazzjoni xxurtjati. Nope. Allura huwa ittajpjar kwalunkwe isem I attwalment stabbiliti hemmhekk. Imma avviż dak li ma nbidilx. Il-URL għadu dom-0.html. M'hemm l-ebda register.php. M'hemm l-ebda tieni fajl. M'hemm l-ebda attribut azzjoni. Allura x'inhi din falz ritorn preżumibbilment tagħmel? Why am I ssejjaħ insellem () u mbagħad jirritornaw falza probabbilment? Liema normalment jiġri meta tikklikkja Issottometti fuq formola li anke għandna raw fil-passat ġimgħa? UDJENZA: [inaudible]. DAVID Malan: Hija tmur x'imkien, right? Hija tmur għal xi URL destinazzjoni. Imma ma rridx li jiġri hawn. Irrid paġna web tiegħi li tkun kompletament dinamika bħal Gmail, fejn darba int hemm, inti toqgħod hemm. Il-URL ma jinbidilx b'mod li jindika l-paġna kollha hija tagħbija mill-ġdid. Pjuttost, I biss trid tibdel xi ħaġa bħal stampar ħaġa hawn fuq l-iskrin. Well let me jitnaddfu dan up ftit. Let me jiftħu mhux dom-0, iżda let me jiftħu dom-2. Just sabiex inti stajt tidher xi sintassi hawn. Jirriżulta li dak li aħna biss ma qed tuża JavaScript prima. Allura dan huwa verament il-lingwa JavaScript. Xi wħud inti tista 'taf librerija imsejjaħ jQuery. Allura jQuery mhijiex l-istess Ħaġa bħala JavaScript. Huwa biss librerija li verament smart Guy kiteb u popularized bħal li kważi kulħadd fid-dinja issa użi jQuery meta jużaw JavaScript. U fl-ewwel daqqa t'għajn, onestament, huwa jistenna ftit aktar cryptic. Imma inti ser issib, speċjalment jekk inti tmur hemm għall-proġett finali tiegħek ma 'web żvilupp, inti ser issib li dan cleans affarijiet up u jiffranka pjuttost ftit linji tal-kodiċi. Mela ejja biss t'għajn lejn kif din il-forma qed taħdem. Avviż dak li għamlet I neħħi apparentement minn HTML tiegħi? M'hemm l-ebda fuq jissottometti handler biex ngħidu hekk. M'hemm l-ebda attribut. Għaliex inti taf, liema I ma verament simili? Ħassejtni qisni konna jaqgħu fis drawwiet qodma hemmhekk. Biss bhalu kienet tibda jħossu sloppy intermingle kemm CSS ma HTML, għax int tip ta 'jitfg lingwi differenti kollha fuq il- post, bl-istess mod ma din tibda tħossok bħal triq ħażina li jonqsu fejn Jien tqegħid kodiċi JavaScript ġewwa tal tiegħi HTML minflok factoring out. Allura dak hu l-lezzjoni hawn. Fil dom-2.html, jien factoring out. U jien tagħmel affarijiet ftit differenti. Għal issa, jien ser mewġa idejn tiegħi lejn dak li dan verament ma taħt il-barnuża. Iżda biss għal issa jassumi li l-ewwel linja tal-kodiċi fil din il-librerija imsejħa jQuery ifisser biss meta l- dokument huwa lest, jagħmel dan li ġej. Minħabba paġni tal-web tista 'tieħu xi żmien biex tagħbija. Inti tista 'tkun fuq l-internet bil-mod konnessjoni, u jista 'jiġi għażil u għażil, u finalment huwa mgħobbija. Dan l-kodiċi biss jgħid stenna sakemm il-paġna kollha hija lesta, id-dokument hija lesta, qabel ma teżegwixxi dan il-kodiċi. U issa avviż, dan huwa probabbilment l-aktar utli ewwel jieħdu l bogħod mill jQuery. Din il-linja hawnhekk huwa simili ħafna fl-ispirtu għal din il-linja ħafna itwal hawn. Billi fil-kodiċi JavaScript prima, hemm jeżisti dokument oġġett globali li għandha funzjoni msejħa getElementById (), l-persuni li kiteb jQuery simplifikata li biss jgħidu sinjal dollaru, u mbagħad ġewwa ta ' parentesi tpoġġi żewġ kwotazzjonijiet, u mbagħad tpoġġi simbolu hash segwita mill- ID unika inti tixtieq li grab. Allura dan huwa ekwivalenti għal document.getElementById. Sadanittant,. Tissottometti ifisser biss fuq sottomissjoni ta 'kwalunkwe forma int jirreferu għall fuq ix-xellug, mur quddiem u tesegwixxi dan. Imma issa dan huwa l-kurżità wisq. X'hemm stramb dwar dak Stajt enfasizzat hawn? Mhux biss huwa tip ta 'sintattiku ġdid, hemm ukoll xi ħaġa nieqsa. UDJENZA: Huwa biss imsejħa funzjoni? Mhuwiex sejjaħ allert? DAVID Malan: Yeah. Ukoll, sabiex twissija () huwa jistabbilixxi hawn, li tkun ġusta. Imma m'hemm l-ebda referenza ta ' isem, bħal inti taf, foo jew xi ħaġa up here. U fil-fatt, din hija waħda mill-karatteristiċi ta 'JavaScript li pjuttost qawwija, iżda wkoll pjuttost ġdida. U PHP attwalment għandha dan ukoll. Let me imorru quddiem u tagħmel ħaġa reali malajr. Let me imorru quddiem u jdaħħlu dan hawn. Let me jagħmlu dan. Funzjoni. Ejja sejħa dan handler (). A funzjoni handler biex ngħidu hekk. Xi ħaġa li mankijiet xi operazzjoni. Let me tnaddaf indentazzjoni tiegħi. U jdaħħlu dan hawn. U mqiegħda dak hawn. Yep. OK. Allura issa I jkollhom funzjoni msejħa handler () li jien ma verament jafu x'tagħmel s'issa. Hija biss għad għandha li Jittieħed. Whoops. Ħa wisq. Ejja nagħmlu dan. Kull dritt. Jiddispjacini. Kull dritt. Let me jagħmlu dan. OK. Li jistenna sbieħ u straight jgħaddi issa. Let me jagħmlu dan. Jagħmlu dan. U OK. Allura issa, ejja tpoġġi dan hawn fuq. Nru aktar ipprogrammar fuq il-fly. OK. Allura issa, ejja mur lura għall- fejn l-istorja bdiet. Preċedentement, I qal li din il-linja hawn ifisser li meta d-dokument huwa lest, mur quddiem u tagħmel dan. What do I trid tagħmel? Well speċifikament, Irrid immur quddiem u tagħmel dan li ġej. Jesegwixxi din il-linja tal-kodiċi, u mbagħad dak li nixtieq li inti tagħmel huwa sejħa dan tiffunzjonax meta tiġi ppreżentata l-formola. Issa dan huwa dak interessanti. Din mhix fiha nnifisha funzjoni. Avviż I am not tqegħid parentesi hawn fil-mod normali. Jien litteralment jgħaddi funzjoni msejħa handler () funzjoni oħra imsejħa jissottomettu () bħala argument bħala għalkemm huwa simili varjabbli. U dan huwa wieħed mill-karatteristiċi ta ' JavaScript, hija funzjonijiet infushom huma verament ftit oġġetti. Fil-fatt, dawn qed verament ftit varjabbli ta 'xi tip. U jekk l-isem tal-funzjoni hija handler (), m'hemm l-ebda raġuni ma nistax jgħaddi bi bħala argument hawn. U dan ifisser li meta l-formola bl-ID tal demo huwa sottomessa, sejħa din il-funzjoni. Imma issa jekk I jneħħu kollha ta 'dan, għaliex imbagħad ma I forsi do dan mument ilu? Ukoll, din hija funzjoni anonimu. Minħabba franchement, I realizzati għaliex jien bothering iskart ħin tiddikjara funzjoni msejħa handler () biss sabiex jikkonfutaw fil-wieħed u biss f'post wieħed? Jekk I m'għandhomx bżonn l-isem, u jien ma jeħtieġ li hija sejħa f'aktar minn post wieħed, ejja biss jimplimenta l-funzjoni dritt fejn I bżonnha. U hekk JavaScript u PHP appoġġ liema huma msejħa funzjonijiet anonimi li ippermettuli biex tagħmel eżattament dan hawnhekk. Iżda aħna qed biss grif tal-wiċċ. Ejja tease biss bi ftit eżempji finali hawn. Jekk immur fis quote.php. Avviż li dan huwa attwalment PHP funzjoni, programm PHP, li I kiteb li jistenna parametru HTTP imsejħa simbolu, u I jistgħu jgħaddu fil- valur bħal FB. U jekk aħna verament tħares lejn is-sors kodiċi, dan huwa juri dubji free website imsejħa Yahoo Finanzi, bħal p-set seba ', u huwa jirritorna għall me xi ħaġa fil apparentement l- format magħruf huwa JSON - JavaScript Notazzjoni Għan. Huwa biss oġġett. Avviż tal-braces kaboċċi, l-kwotazzjonijiet, -kolon, u l-virgoli. Issa sadanittant, dan huwa pretty jibred. Minħabba I tista 'probabbilment tuża programmar lingwa li jiġġeneraw URLs li look like dan dinamiku, dritt? I jistgħu jbiddlu dan Google u terġa 'lura Google prezz tat-titoli ta '$ 1,017.55. Mela ejja ara jekk aħna ma tistax tuża dan issa. Let me go għal ajax-0 hawn, li qisu li ġej. Huwa biss website li tkun forma ma 'buttuna. Let me here jimxi 'l quddiem u tip YHOO għall-istokk simbolu Yahoo, ikklikkja Get Quote, u issa avviż stajt gotten twissija ma 32.86. Let me fatt imorru għal verżjoni fancier ta 'din il-paġna, verżjoni tnejn, u tip fil ejja ngħidu Microsoft, MSFT. Get Quote. U issa avviż, l-ebda twissija. Avviż fejn jgħid prezz li għandu jiġi stabbilit? Hemm l-aktar sempliċi ta 'eżempji li ħjiel fuq dak Gchat, u Facebook Chat, u Gmail, u oħrajn bħal websites qed jagħmlu mill-fatt jinbidlu l-web page. Avviż dan. Let me rikarigu-paġna. Let me tiftaħ Ispettur Chrome. Let me mur l-elementi tab stabbiliti hawn. Issa avviż jekk I zoom isfel hawn u jinfetaħ dan up, avviż li dan huwa tiegħi HTML DOM - dokument mudell oġġett tiegħi. Dan huwa HTML tiegħi. Imma issa avviż, anki jekk li għaddej li jkun ftit diffiċli biex tara kemm postijiet f'daqqa, jekk I tip fil FB up hawn, tara l-qiegħ ta 'l-iskrin biss. Huwa fil-fatt jinbidlu HTML tiegħi fuq il-fly. U huwa jagħmel dan sempliċement billi tagħmel xi ħaġa bħal din. Jekk I jiftħu ajax-2, avviż implimentazzjoni xi ħaġa sexy bħala li, għalkemm huwa pjuttost ikrah, iżda bħala sofistikata hekk kif dak funzjonalment, għandha xi HTML fil-qiegħ. Imma avviż I użati biex tag. Imxejna ma użawx din qabel, iżda dan huwa bħal, iżda ma seħħ kollox fuq linja ġdida. Hija biss jagħmel reġjun rettangolari fuq l-istess linja essenzjalment. Avviż li I tatu ID ta 'prezz. U jirriżulta billi tuża l-istess JavaScript librerija, I għandhom funzjoni imsejħa kwotazzjoni () li sejjaħ kull meta il-formola tiġi sottomessa. U dak li qed nagħmel huwa dan. Jien tiddikjara varjabbli JavaScript imsejħa url, iffrankar l-valur quote.php? simbolu =. Fi kliem ieħor, I myself am bidu jħejju talba HTTP, u mbagħad Jien concatenating fuq li bil-plus ikun x'ikun l-element bl-ID ta 'simbolu huwa, li l-avviż huwa li qasam tat-test dritt isfel hawn. Allura bħad kellna forom fil-passat. U mbagħad jirriżulta fil jQuery, jekk inti sejħa. val (), li s-sejħiet ta 'val funzjoni, funzjoni valur, li gets x'ikun l-utent ikun ittajpjat pulzieri U mbagħad kollha ta 'l-netwerk tat-traffiku li jiġri huwa dan. $. GetJSON. U bħala twarrib, sinjal dollaru huwa biss notazzjoni shorthand. Huwa tassew jQuery.getJSON. Get lili biex JSON minn dan il-URL, u meta it-talba taqa 'lura, sejħa dan funzjoni u jgħaddu l-argument kwalunkwe daħlu lura mill-server. Allura fi kliem ieħor, jekk immur lura għall- browser, u mmur lura għall quote.php, dak browser tiegħi qed tagħmel huwa jkollna din blokki ta 'data. U meta mmur din il-paġna web hawn, avviż jekk aħna minflok tmur għall-network tab u ċar, u mbagħad it-tip fil- xi ħaġa bħal GOOG għall-Google u Get Quote, avviż il-paġna ma nbidilx. Iżda talba HTTP saret, u liema daħal lura hawn jekk inħarsu lejn il- rispons huwa mazz sħiħ ta 'JSON li aħna aċċessati finalment ma din il-linja sempliċi hawn. Data huwa dak li kien gotten mis-server. Prezz huwa l-isem tal- ewlieni I jimpurtahom. Allura data.price tagħti me dak. Issa sadanittant, u dan hija l-aħħar eżempju. Tista 'tagħmel iżda aktar bil-paġna. Wieħed fatt, ukoll tnejn. Aħna jista 'jġib lura l- tag, jekk tiftakar dan. Li JavaScript. Nistgħu nagħmlu dan. Ferm eċċitanti. Aħna ser tħalli li bħala cliffhanger. Iżda aktar excitingly, inti tista ' tagħmel affarijiet bħal dan. Jekk immur għall-ġeolokalizzazzjoni-1, jirriżulta li Chrome jaf li aħna fil lonġitudni latitudni 42.37. -71.10. Allura hemm saħansitra aktar hemm għad-dispożizzjoni tiegħek. Iżda aktar fuq dik il-ġimgħa d-dieħla. Ara inti Tnejn.