[Muzika] DAVID Malan: Të gjithë të drejtë, kjo është CS50. Ky është fundi i javës së tetë. Dhe sot, ne fillim për të mbushur në disa pjesë kur është fjala për ndërtimin e gjëra në web. Pra, kujtojmë se të hënën ne kemi shpenzuar një kohë shumë më tepër në PHP, cila është kjo dinamikë gjuhë programimi që na lejon të prodhimit, ndër të tjera gjëra, HTML dhe përmbajtje të tjera të tilla që ne do të duan të shohin. Por ne nuk kemi dukej me të vërtetë se si ne jemi duke shkuar për të ruajtur çdo informacion. Në të vërtetë, pothuajse asnjë nga se super faqet e internetit interesante që ju vizitoni sot kanë disa lloj të dhënave në anën e pasme, e drejtë? Facebook me siguri ruan shumë të dhëna për të gjithë ne dhe dyqane Gmail gjithë e-mail tuaj. Dhe kështu, shumë vende të tjera nuk janë vetëm Static Content kjo është informative. Është në fakt dinamik në një farë mënyre. Ju japin të dhëna, ajo përditësime Faqet e njerëzve të tjerë. Ju merrni mesazhe, ju dërgoni mesazhe, dhe kështu me radhë. Pra sot, ne shikojmë më nga afër mbështetjet e një projekti që ju do të zhyten në tjetër javë, CS50 Financave, e cila është në të vërtetë do të keni ndërtuar diçka jo në C, por në PHP. Një faqe interneti që duket një pak diçka si kjo që lejon për të blerë dhe shitur rezervat që janë në fakt do të nxjerrë në kohë reale të dhënat e aksioneve nga Yahoo Finance. Dhe kështu në fund të fundit, ju do të keni iluzion për veten tuaj dhe për përdoruesit se ju jeni në të vërtetë blerjen dhe shitjen e rezervat dhe duke marrë kohë gati reale përditësime, menaxhimin e një portofol, të cilat do të kërkojë të pasur, në fund të fundit, një bazë të dhënash të përdoruesve. Pra, me fjalët tuaja, veçanërisht në qoftë se ju nuk jeni super njohur me kompjuter shkencë ose bazat e të dhënave, çfarë ju e dini një bazë të dhënash të tani, në terma jo-teknike? Çfarë është ajo? Si do ta përshkruanit atë me një shok dhome apo një mik? Audienca: [padëgjueshme] informacion [e padëgjueshme] DAVID Malan: Pra, një listë e informacionit, ose një store-- një listë të informacionit që ju mund të dëshironi për të ruajtur për diçka, si një përdorues. Dhe çfarë bëjnë përdoruesit kanë lidhur me ta? Nëse ju jeni një përdorues në Facebook ose Gmail, cilat janë karakteristikat se të gjithë ne përdoruesve kanë? Si, çfarë mund të jetë disa nga kolona në spreadsheet për të cilat ne aludoi herën e fundit? Sepse përsëri, ju mund të të mendojnë për një bazë të dhënash me të vërtetë si një dashuroj Excel file apo Google Spreadsheet ose Apple Numrat skedar. Pra, çfarë mendoni kur ju mendoni për një përdorues? Çfarë ata kanë? Cfare eshte kjo? Audienca: Një emër. DAVID Malan: Një emër. Pra, nëse emri, si, DAVID Malan do të jetë emri i një përdoruesi. Çfarë tjetër bën një përdorues të ketë? Audienca: Një ID. DAVID Malan: Një ID. Pra, si një numër identifikimi, si Harvard tuaj ID ose Yale ID tuaj neto ose të ngjashme. Çfarë tjetër mund të ketë një përdorues? Audienca: Fjalëkalimi. DAVID Malan: Një fjalëkalim, ndoshta një adresa, ndoshta një numër telefoni, ndoshta një adresë e-mail. Pra, nuk ka bunches e fusha dhe kjo mund të lloj të dalë jashtë kontrollit shpejt sa më shpejt që ju të filloni kuptuar, oh, le të ruajë këtë dhe le të ruajë këtë dhe atë. Por si do të vërtetë të bëjë atë? Pra, përsëri, modeli mendor të ketë për sot si ne zhyten në SQL aktuale, Structured Query Language, është një bazë të dhënash që duket si kjo. Është vetëm rreshtave dhe kolonave. Dhe ju mund të imagjinoni Google Spreadsheets ose ndonjë numër të programeve të tjera. Por ajo që është çelësi për të MySQL, e cila është software database ne jemi duke shkuar për të përdorur, lirisht hapur available-- përdor Facebook ajo dhe çdo numër të websites-- tjera bazës së të dhënave ruan gjërat relationally. Dhe bazës së të dhënave relacionale një thjesht do të thotë atë që fjalë për fjalë ruan të dhënat e saj në rreshta dhe kolona. Është aq e thjeshtë sa se. Pra, edhe diçka si Oracle që ju mund të keni dëgjuar përgjithësisht i është një bazë të dhënash relacionale. Dhe nën kapuç, atë dyqane të dhënave në rreshta dhe kolona. Dhe Oracle ju një akuza shumë e parave për të bërë këtë, ndërsa akuza MySQL ju asgjë për të njëjtën gjë. Pra, SQL do të na japë të paktën katër operacionet. Aftësia për të zgjedhur e të dhënave, si lexoni të dhënave, insert, fshini, dhe të dhënat përditësimin. Me fjalë të tjera, ato janë të vërtetë të katër operacionet kryesore që do të na lejojë të ndryshojë gjëra në ato rreshta dhe kolona. Mjet që ne do të përdorim sot veçanërisht për të mësuar SQL dhe për të luajtur me të është quajtur përsëri PHP MyAdmin. Është mjet i bazuar web. Rastësi totale që është e shkruar në PHP. Por kjo do të na japë një grafik user interface në mënyrë që ne mund të vërtetë krijuar këto rreshtave dhe kolonave dhe pastaj flisni me ta nëpërmjet kodit. Pra, tani le të fillojnë të ajo që unë mendoj se është sinqerisht lloj i procesit të fun ndërtimin fundin e pasme të faqeve, pjesët që përdoruesit nuk shohin, por me siguri të bëjë kujdes në lidhje me, sepse kjo është më tepër të dhëna po ndodh. Pra, të ngjashme me C dhe A pak si PHP, SQL, apo një bazë të dhënash që mbështet SQL, ka lloje të paktën këto të dhëna dhe bunches e të tjerëve. CHAR, VARCHAR, INT, BIGINT, Decimal, dhe datetime. Dhe ka një të tërë bandë e karakteristika të tjera, por le ta bëjmë këtë duke për shembull aktual. Unë jam duke shkuar për të shkuar në CS50 IDE ku, paraprakisht, unë kam hyrë në dhe unë e kam vizituar edhe një URL për Ky mjet i quajtur PHP MyAdmin. Dhe në problem i vuri mënjanë shtatë, ne do të tregoj ju saktësisht se si për të marrë në këtë ndërfaqe gjithashtu. Në këndin e sipërm të majtë, vini re ajo thotë leksion. Dhe kjo vetëm do të thotë se paraprakisht, kam krijuar një bazë të dhënash të quajtur leksion bosh që ka spreadsheets në atë ende. Nuk ka rreshta dhe kolona. Sepse i pari gjë që ne jemi duke shkuar për të bërë është të fillojë për të krijuar një tabelë që do të ruajtur përdoruesit tanë. Pra, fjalë për fjalë mbi këtu në të djathtë, unë jam do të tregojë bazën e të dhënave Unë dua një tabelë të quajtur Përdoruesit. Pra, kjo është si dosje që unë dëshironi të ruani të gjitha të dhënat e mia në. Dhe sa kolona? E pra, le të mbajtur atë të thjeshtë për tani. Unë vetëm dua të ruajtur si një emrin e përdoruesit dhe një emër për një përdorues. Ne do të fillojë të vogla. Pra, unë dua dy kolona gjithsej. Dhe unë jam duke shkuar për të shkuar përpara dhe klikoni Go. Dhe pastaj, për këto kolona, ​​çfarë unë jam duke shkuar për do-- nëse këtë internetit cooperates-- gjithë të drejtë, kështu që ne jemi duke shkuar për të provoni atë përsëri. Unë jam duke shkuar për të krijuar një tabelë të quajtur Përdoruesit me dy kolona, ​​kliko të shkojnë, OK. Tani ne kemi marrë atë të vërtetë të shpejtë. Faleminderit, shumë mirë bërë. Të gjithë të drejtë, kështu që ajo që duam këto kolona që do të quhet? Pra, një do të quhet Identifikimi. Pra, të gjitha unë shoh here-- dhe interface sinqerisht merr pak shëmtuar përfundimisht, Pasi ju filloni të shtypni në të gjitha këto të dhëna. Por ajo që është e bukur është se lloj i Paradoksalisht, unë jam duke krijuar kolona, por mjet ka pa mend e vendosën në radhë kështu që unë mund të konfigurosh këto kolona. Pra, ka dy boshllëqet aty nën emrin. Dhe një nga këto fusha unë duan të quajtur Emri, dhe fusha të tjera që unë dua të vesh emrin. Dhe tani unë kam për të zgjedhur Llojet e të dhënave për këto gjëra. Pra, ndërsa në Excel dhe Google Spreadsheets, në qoftë se ju doni një kolonë, ju fjalë për fjalë vetëm lloji Emri përdorues ose, hit Enter. Ndoshta ju bëni atë fytyrë të guximshme vetëm për qartësi, por kjo është ajo. Ju nuk specifikojë Llojet e shtyllave. Tani në Google Spreadsheets apo Excel, ju mund të specifikojnë se si të dhënave është dhënë. Ju mund të shkoni në menynë Format, dhe ju mund të specifikoni tregojnë këtë shenjë si dollarësh, tregojnë këtë si një vlerë lundrues pikë. Pra, kjo është e ngjashme në frymë të se ajo që ne jemi gati për të bërë, por kjo është në të vërtetë do të detyrojë të dhënat të jetë një lloj të caktuar. Tani, edhe pse një moment më parë unë tha se ka vetëm disa lloje të të dhënave, ka në fakt një shumë e tërë, dhe ata janë në shkallë të specifikat ndryshme. Dhe si një mënjanë, ju mund të bëjë edhe gjëra të dashuroj si geometries magazinimit brenda një bazë të dhënash. Ju mund të ruajë gjëra si Koordinatat GPS dhe në fakt të gjeni, matematikisht, pika që janë të afërt me të tjerët. Por ne jemi duke shkuar për mbajmë këtë super të thjeshtë dhe të shkojnë deri këtu, të gjithë të ashtuquajturat tipet string. Pra, këtu është një listë e një tërë bandë e opsioneve. CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. Dhe kjo është lloj i madhe. Dhe për fat të keq, disi në mënyrë paradoksale në C, një CHAR nuk është me të vërtetë një CHAR. Nëse ju specifikoni në një bazë të dhënash se lloj të dhënat tuaja është CHAR, kjo do të thotë se po, kjo është një CHAR, por kjo është një ose më shumë karaktere. Dhe ju duhet të specifikoni Sa gërma ju dëshironi. Pra, çfarë është një tipik Gjatësia për një username? A ka një limit tipike? Audienca: [padëgjueshme] DAVID Malan: 16 ndoshta? Diçka e tillë. Ju e dini, përsëri në ditë, ajo përdoret për të tetë. Ndonjëherë kjo është 16, nganjëherë kjo është edhe më shumë se kaq. Dhe kështu, kjo nuk ka do të thotë më jepni një CHAR. Kjo do të thotë unë duhet të specifikojë gjatësia e fushës, dhe tani unë mund të them diçka si 16. Dhe ka një tregti off këtu. Pra, ne do të shohim në një moment se kjo do të thotë një, çdo emrin duhet të jetë 16 karaktere. Por prisni një minutë, M-A-L-A-N. Nëse kjo është emrin tim dhe unë jam vetëm duke përdorur pesë, çfarë do të propozojë që baza e të dhënave për të bërë për 11 karaktere të tjera që Unë e kam rezervuar hapësirë ​​për? Çfarë do të bëni? Audienca: [padëgjueshme] DAVID Malan: Yeah, vetëm t'i bëjë ata të gjithë null. Bëni ato hapësira. Por ndoshta null, kështu që një Shumë zero backslash. Pra, nga njëra anë, ne kemi tani e bëri të sigurt se emri im mund të jetë jo më shumë se 16 karaktere. Dhe në anën rrokullisje e kjo është se në qoftë se kam pasur një emër të vërtetë të gjatë ose kërkuar një të vërtetë të gjatë emri përdorues si disa prej jush djema mund të ketë në atë kolegj apo në Yale.edu, ju nuk mund të ketë një të tillë. Dhe kështu në fakt, në qoftë se ju keni i regjistruar ndonjëherë për një faqe interneti dhe ju merrni yelled at thënë Fjalëkalimi juaj është shumë e gjatë ose emrin e përdoruesit është shumë i gjatë, është e thjesht sepse një programues, kur konfigurimin e bazës së të dhënave të tij ose të saj, vendosi që kjo fushë do të të jetë jo më shumë se këtij gjatësi. Të gjithë të drejtë, kështu që çfarë nëse ne të vazhdojë për të përmendur? Sa kohë duhet një Emri tipike e njeriut të jetë? Sa karaktere, 16? Unë jam guessing ne mund gjeni dikë në këtë dhomë ku nga PLUS tij ose të saj të parë fundit Emri është më shumë se 16 karaktere. Pra, çfarë është më e mirë se ajo, 17? 18? 25? Bigger? 30? Audienca: [padëgjueshme] DAVID Malan: 5.000, oh Perëndia im. Pra, kjo është ndoshta një të mirë sipërme të lidhur, të themi. Dhe këtu ne lloj i kemi për të bërë një telefonatë gjykim. Si, nuk ka përgjigje të drejtë këtu. Infinite nuk është mjaft e mundshme, sepse ne jemi përfundimisht do të have-- ne jemi duke shkuar për të dalë jashtë kujtesës. Pra, ne duhet të bëjmë një Gjykimi thirrje në disa pika. Shumë të zakonshme do të jetë, për shembull, për use-- dhe më lejoni të specifikojë CHAR këtu si më herët, 255 ishte fjalë për fjalë kufiri i sipërm në këtë softuer bazës së të dhënave vite më parë. Dhe kështu, një shumë e njerëzve do të them vetëm, gjobë. 255 është kufiri. Le të përdorim vetëm maksimumin. Dhe kjo është shumë qesharake. Si, në qoftë se ju jeni të shtypni dikujt përmendur për 200 karaktere plus, se pak qesharake. Por, mos harroni se ASCII nuk është sistemi i vetëm për karaktere. Dhe kështu, sidomos në një shumë gjuhëve aziatike ku ka karaktere që ne nuk mund të shprehur në tastierë si SHBA e mia tastierë, disa karaktere në të vërtetë marrë 16 copa në vend të tetë bit. Dhe kështu, kjo në fakt nuk është e gjitha që paarsyeshme se ne kemi nevojë më shumë Hapësira në qoftë se ne duam të përshtaten Karakteret më të madhe se shumë SHBA ato centric ne kemi qenë të prirur për të diskutuar. Pra, ne kemi nevojë për disa kufi i sipërm. Unë nuk e di se çfarë ai është i mirë, por 255 është në përgjithësi një njeri i zakonshëm. 25 ndihet i ulët. 16, 32 të ndjehen të ulët. Unë do të gaboj në anën për diçka më të lartë. Por ka një tregti off, si gjithmonë. Çfarë është, ndoshta, i dukshëm tregtisë off i rezervohet 255 karaktere për emrin e të gjithëve në bazën e të dhënave e mia? Audienca: [padëgjueshme] DAVID Malan: Çfarë është ajo? Audienca: [padëgjueshme] DAVID Malan: Kjo është një shumë e kujtesës, e drejtë? M-A-L-A-N. Kam shpenzuar vetëm 250 karaktere vetëm për të ruajtur emrin tim në mbrojtje, vetëm në rast se dikush në klasë ka një emër shumë të gjatë. Kjo duket si një tradeoff panevojshme. Pra, ajo rezulton se SQL, kjo gjuhë bazës së të dhënave, në fakt mbështet diçka quajtur VARCHAR, apo ndryshueshme CHAR. Dhe kjo është lloj i bukur në se kjo ju lejon të specifikoni jo një fikse gjerësi, por më tepër, një gjerësi variabël. Dhe më konkretisht, një Gjerësia maksimale e fushës. Pra, kjo do të thotë se një emër mund të të jetë jo më shumë se 250 karaktere, por ajo duhet të jetë më pak. Dhe baza e të dhënave do të jetë i zgjuar. Nëse ju do të vënë në M-A-L-A-N, ajo është vetëm do të përdorin pesë, ndoshta gjashtë bytes për si një karakter zvarritës null, dhe jo të shpenzojnë një shtesë 249 ose 250 bytes panevojshme. Pra, kjo duket si unë duhet kanë filluar me këtë histori. Por ka gjithmonë një kompromis. Pra, nga njëra anë, një emër përdoruesi unë kam specifikuar për t'u koduar fort në 16, dhe ndoshta kjo nuk ishte thirrja e drejtë, ndoshta atë është, por pse nuk e përdorin VARCHARs për çdo gjë? Ajo ekziston për një arsye. Pse të mos i përdorin VARCHARs për çdo fushë gjatësia e të cilit ju nuk e dini që më parë në qoftë se ajo duket të jetë një gjë e madhe, apo jo? Përdorni vetëm sa më shumë hapësirë ​​si ju duhet deri në këtë kufi? Audienca: ngadaltë. DAVID Malan: Speller? Audienca: e bën të ngadaltë? DAVID Malan: Oh, është e ngadalshme. Mirë, kjo është pothuajse gjithmonë përgjigja, sinqerisht. Si, çfarë është kompromis? Ajo ose kushton më shumë hapësirë ose ajo kushton më shumë kohë. Pra, në këtë rast, mund të jetë i ngadalshëm. Përse? Audienca: [padëgjueshme] përcaktimin [e padëgjueshme]. DAVID Malan: Mirë. Pra, ju mund të kujtojnë nga edhe PSED5, duke luajtur me qasjen tuaj në fjalor, në qoftë se ju keni për të kujtesës dinamike apo mbajtur rritet një tampon, që në fakt mund të jetë i ngadalshëm. Nëse keni për të thirrur malloc nën kapuç dhe ndoshta kjo është ajo që MySQL është duke bërë, kështu me siguri se mund të jetë rasti. Dhe në qoftë se ju mendoni se mënyra Mbrapsht në PSet-- apo edhe dy javë, kur ne e bëmë gjëra të tilla si Kërkimi binar apo edhe kërkimi lineare, një nga gjërat e bukur për çdo fjalë në një bazë të dhënash apo çdo fjalë në një kolonë duke qenë saktësisht të njëjtën gjatësi, madje në qoftë se një bandë e tërë e këtyre karaktereve janë bosh, është se ju mund të përdorni qasje të rastësishme në të dhënat tuaja, e drejtë? Nëse ju e dini se çdo Fjala është 16 karaktere larg, ju mund të përdorni akrep aritmetike, në mënyrë që të flasin, dhe të shkojnë në ne 16, 32, 48, 64, dhe ju mund vetëm të kërcejnë në çast duke përdorur aritmetike me ndonjë nga fjalët në regjistrin tuaj. Ndërsa në qoftë se kjo është një VARCHAR, çfarë ju në vend të kësaj duhet të bëni? [Telefon telefononi] Në qoftë se kjo është një VARCHAR, ju nuk mund të përdorë qasje të rastit. Çfarë ju duhet të shikoni për ose të bëjë? Po? Audienca: [padëgjueshme] DAVID Malan: Shikoni përmes gjurmë whole-- nëpër tërë listën duke kërkuar për atë, ka shumë të ngjarë? Çfarë lloj me vlera të veçanta? Audienca: [padëgjueshme] DAVID Malan: Looking për terminators null që caktoj kufijtë ndarjen e fjalëve. Pra, përsëri, një kompromis, dhe nuk ka përgjigje të drejtë. Por, ky është vendi ku, veçanërisht kur përdoruesit tuaj të merrni të jetë shumë dhe ngarkesës tuaj në serverat tu, Numri i njerëzve që përdorin ajo merr të lartë, këto janë në fakt vendime nontrivial. Pra, ne mund të lënë këto si kjo, por le të lëvizni poshtë mbi të drejtën këtu. Tani, ka një çift i shtyllave ku ne kemi për të bërë një telefonatë gjykim. A ka kuptim për të lejuar një përdorues-së emrin, emrin e një përdorues ose një përdorues të emri, të jetë null? Kjo është, vetëm bosh. Ndihet pak absurd, kështu që unë jam mos shkuar për të kontrolluar ato kuti. Por kjo rezulton në një bazës së të dhënave, ju mund të thoni, dikush mund të opsionale të ketë këtë vlerë. Kjo kolonë nuk ka të vërtetë të jetë atje. Tani, nuk ka kjo drop down menu. Dhe vini re unë jam ende në rreshtin e parë atje, kështu që unë jam duke folur për emrin tani. Dhe kjo rezulton se një bazë të dhënash, ndryshe nga një spreadsheet të thjeshtë të thjeshtë, ka karakteristika të fuqishme quajtur indekseve. Dhe një indeks është një mënyrë për të thënë bazës së të dhënave përpara se unë, e njeriut jam zgjuar se ju. Unë e di se çfarë lloj pyetje, përzgjidhni ose futur apo fshij apo update, që kodi im do të marrë fund duke bërë në këtë bazë të dhënash. Unë dua të lexoj një shumë të të dhënave. Unë dua të futur një shumë të të dhënave. Unë dua të vazhdimisht fshij një shumë të të dhënave. Nëse unë e di se unë jam do të jetë hyrë në një fushë si Username shumë, Unë preemptively mund të them të bazës së të dhënave, unë di më shumë se ju, dhe unë dua të dekretit që ju duhet Indeksi këtë fushë. Ku indeksimin një arë ose një kolonë do të thotë se baza e të dhënave më parë duhet të marrë hua disa ide nga, si, Javën e katër dhe pesë dhe gjashtë nga CS50 dhe në fakt të ndërtuar diçka si një kërkim binar pemë apo diçka përgjithësisht quhet një pemë B që ju do të mësojnë në një klasë si CS124 në Harvard, një klasë algoritme, ose ndonjë numër të vendeve të tjera. Baza e të dhënave dhe i zgjuar njerëz të cilët zbatuar atë do të kuptoj se si për të ruajtur Tryeza e informacionit në kujtesën mënyrë që kërkimet dhe operacionet e tjera janë të super të shpejtë. Ju nuk keni për të bërë atë. Ju nuk keni për të zbatuar Kërkimi linear ose kërko binar ose bashkojë lloj ose përzgjedhje lloj, asnjë nga kjo. Baza e të dhënave e bën këtë për ju, nëse ju tregoni ajo preemptively të indeksit këtë fushë. Dhe ju mund të shihni shumë, ka disa karakteristika të tjera ne mund të them baza e të dhënave për të zbatuar. Çfarë mund të thotë në qoftë se unë zgjedh Unique nga kjo menu, vetëm intuitive? Po? Audienca: [padëgjueshme] DAVID Malan: Yeah, Emri i përdoruesit duhet të jetë unike. A është kjo një gjë e mirë apo një gjë e keqe për një bazë të dhënash, për një faqe interneti me përdoruesit? Duhet të përdoruesve të jetë unike? Po, ndoshta. Nëse kjo është ajo që fushë ne i përdorim për të hyni në, ju vërtetë nuk duan të njerëzve të pasur njëjtë ndjehen ose emrin e njëjtë. Pra, ne mund të kemi bazës së të dhënave të zbatuar se kaq që tani në kodin tim PHP ose çdo gjuhë, Unë nuk kam për të, për shembull, kontrolloni domosdoshmërisht e bën këtë emrin e përdoruesit ekzistojnë para se unë të lënë dikë të regjistrohem? Baza e të dhënave nuk do të lë dy njerëz me emrin David ose Malans regjistrohen në këtë rast. Dhe si një mënjanë, edhe pse kjo Menuja vetëm ju lejon të zgjidhni një, një indeks unik është ai që është indeksuar për performancën super të shpejtë, por ajo gjithashtu zbaton unike. Dhe ne do të kthehen në atë që dy të tjerët do të thotë në një moment të vetëm. Ndërkohë, në qoftë se unë shkoj në rresht ime e dytë, e cila është emri i përdoruesit, duhet të specifikojë se emri duhet të jetë unike? Jo, sepse ju mund të patjetër have-- nuk ka dy David Malans në këtë dhomë, më shumë gjasa. Por nëse ne zgjedhin një emër tjetër, ne me siguri mund të ketë goditjet. Mendoni përsëri për hash tavolina dhe si. Pra, ne me siguri nuk duan për të bërë fusha emrin unik. Pra, ne jemi vetëm duke shkuar për të lënë se si dash, dash, dash, asgjë. Dhe unë jam duke shkuar për të lënë çdo gjë tjetër vetëm. Në të vërtetë, shumica e këtyre fushave ne nuk do të duhet të kujdeset për. Dhe kur unë jam i gatshëm për të shpëtuar këtë, në qoftë se në internet bashkëpunon, Unë klikoni Ruaj dhe shumë, shumë, shumë ngadalë ka bazën e të dhënave të ruhen. Dhe tani unë jam përsëri në këtë interface, i cili pa dyshim, është e madhe në shikim të parë. Por të gjitha unë jam duke shkuar për të bëni është të klikoni në fjalën Përdoruesit në krye të majtë. Unë jam duke shkuar për të shkuar deri këtu, klikoni Përdoruesit, dhe by default, ajo ka ekzekutuar disa SQL, por më shumë se në një moment. Këtu është vetëm një përmbledhje e asaj që kam bërë. Dhe jo për t'u shqetësuar që ju shihni përmend e latine dhe suedeze këtu. Ata janë vetëm default settings, sepse MySQL fillimisht, ose PHP MyAdmin, një nga dy ndodhi të shkruar nga disa njerëz suedeze. Por kjo është e parëndësishme në rastin tonë këtu. Të gjithë të drejtë, kështu që pse është e këtë të gjithë interesant? Ajo rezulton, unë mund të futni të dhënat e në një bazë të dhënash duke shkruar kodin. Dhe unë jam duke shkuar përpara dhe në dosjen time këtu, unë jam do të shkojnë përpara dhe të pretendojë si kjo është Wired në atë bazë të dhënash, e cila kjo nuk është në këtë moment, por ajo do të të jetë kur ne të merrni për problemin e vuri mënjanë shtatë. Dhe unë jam duke shkuar për të shkuar përpara dhe ekzekutuar një funksion të quajtur pyetje, të cilat ne do të ju jap në problemin vendosur kodin SHTATË së shpërndarjes, që merr të paktën një parametër, e cila është vetëm një varg. Një varg i kodit SQL. Pra, ju jeni gati për të mësuar se si të shkruaj strukturuar Query Language. Nëse unë dua të futur një rresht të ri në tim bazës së të dhënave për shkak se dikush e ka paraqitur një formë për kodin tim, unë do të fjalë për fjalë shkruaj INSERT INTO përdoruesve në vijim fusha: emrin, presje, emri, vlerat, dhe tani kam nevojë për të futur diçka si Malan, dhe kuotë, mbyll thonjëzat 'DAVID Malan. " Dhe tani madje edhe për ata të panjohur me SQL, pse jam unë duke përdorur kuotat e vetme brenda këtij vargut të gjelbër? Çfarë mund të jetë arsyeja këtu? Njoftim unë jam bashkë-duke sjellë bashkë dy gjuhë. Query është një funksion PHP, por ajo merr një argument. Dhe ky argument duhet të jetë vetë i shkruar në një gjuhë tjetër të quajtur SQL, strukturuar Query Language. Pra, çdo gjë që unë kanë nxjerrë në pah vetëm këtu është kjo gjuhë quhet SQL. Pra, çfarë është me kuotat e vetme, vetëm si një kontroll të shpejtë mendje e shëndoshë? Shkoni përpara. Ata janë strings. Pra, të japin kuotën, mbyll thonjëzat Malan dhe të japin kuotën, mbyll thonjëzat DAVID Malan janë vargjet. Dhe vetëm duke menduar intuitive tani, ditur atë që ju e dini në lidhje me C dhe PHP, pse nuk e kam bërë këtë, që unë zakonisht kuotat përdorur të dyfishtë për vargjet? Pse nuk dua të bëj atë? Po? Audienca: [padëgjueshme] DAVID Malan: Pikërisht. Sepse unë jam tashmë duke përdorur Kuotat e dyfishtë në rrugën jashtë të argumentit me funksionin PHP, Unë vetëm do të ngatërruar përkthyes. Kjo nuk do të dinë, e këta të shkojnë së bashku? A këta të shkojnë së bashku? A këta të shkojnë së bashku? Pra, unë alternativ në vend. Ose unë mund të bëjë diçka si kjo, quote backslash ose backslash citim. Sinqerisht, që vetëm fillon të merrni shumë të paqartë dhe të shëmtuar. Por kjo do të arrihet i njëjti rezultat si. Pra, nëse unë do të kryej këtë query tani, le të shohim se çfarë ndodh. Unë jam duke shkuar për të shkuar përpara dhe tani në vend sesa të ekzekutuar kodin PHP, e cila është ajo ku ju do të luajnë në problemin vendosur shtatë, Unë jam duke shkuar për të shkuar në vend për PHP MyAdmin. Dhe unë jam duke shkuar dorë për të shkuar në SQL tab, dhe më lejoni të zoom në në interface. Dhe unë jam duke shkuar për të ngjitur në gjë unë vetëm shtypur. Dhe coding ngjyra ka ndryshuar pak tani, vetëm për shkak se formatet e programit gjërat pak ndryshe. Por vini re se të gjitha unë kam bërë është e kam thënë, futur në Përdoruesit. Unë e kam përcaktuar, atëherë, në një presje Lista e ndara parenthesized dy Fushat që unë dua të futur, dhe atëherë unë kam thënë fjalë për fjalë vlerat pasuar nga një tjetër Paren, dhe pastaj të dy vlerat Unë dua të plug-in, dhe tani për masë të mirë, Unë do të vënë një pikëpresje në fund. Pra, kjo nuk është C. Kjo nuk është e PHP. Kjo është tani SQL, dhe unë jam duke pasting atë në këtë ndërfaqe web bazuar që është vetëm do të më lejoni, sa më shpejt që unë kliko të shkojnë, ekzekutuar këtë pyetje në bazën e të dhënave drejtimin brenda CS50 IDE. Pra, kjo është e mirë. Vini re se tha një rresht futur, shkoi super të shpejtë, 0.0054 sekonda për të futur këto të dhëna. Pra, kjo tingëllon mjaft e shëndetshme. Ajo riformatuar query tim për mua këtu vetëm për të parë atë në lloj ngjyra koduar versionit. Por tani, nëse unë klikoni Shfletoni, vini re se, edhe edhe pse ka shumë rrëmujë në ekran, tryezën time tani ka dy rreshta. Pra, më lejoni të shkoj përpara dhe të bëjë tjetër. Në vend të kësaj, le të më shkoni në SQL tab përsëri. Dhe këtë herë unë do të futur diçka si Rob dhe emri i tij do të jetë Rob Bowden. Bowden. Le të klikoni Ruaj. Oops, në vend të shkojnë. Kliko Shfleto përsëri, dhe tani vini re unë kam dy rreshta. Pra, kjo është vetëm një kompleks mënyrë më Mënyra e hapjes Google Spreadsheets dhe vetëm të shtypni një rresht në një kolonë. Por ajo që është kryesore është se ne tani kemi sintaksë me të cilën të shkruani kodin në mënyrë që në fund të fundit, ne mund të vërtetë të bëjë disa dhe kjo. Kujtojnë që suporton PHP ndryshoret super globale. Çfarë është brenda e dollarit nënshkruajë underscore GET në PHP? Ne patëm marrë një vështrim në një apo dy shembuj të thjeshtë. Dhe në PSet6, kujtoj se ju keni përshëndetje dot PHP që përdor këtë variabël. Çfarë shkon në atje? Apo çfarë është ajo? Një louder pak. Audienca: [padëgjueshme] DAVID Malan: Kjo është një dëborë farë e array, e cila është vetëm një mënyrë e sofistikuar për të thënë një array që ka palë kryesore me vlerë. Dhe çelësat nuk janë numerike. Ata janë fjalë apo vargjet. Dhe konkretisht, çfarë janë ato çifte të rëndësishme me vlerë? Ku ata vijnë nga? Na vjen keq? Audienca: [padëgjueshme] DAVID Malan: Jo? Ku bëjnë ato kyçe çift ​​vlerash vijnë nga? Thuaj përsëri? Përsëri? A jam unë i vetmi diçka dëgjimi? [Qeshura] Kjo është e drejtë, po? Audienca: [padëgjueshme] DAVID Malan: Po, ata vijnë nga varg pyetje. Pra, nëse ju Rewind në kohë për kur ne kemi luajtur me Google dhe ne kemi shkuar në google.com slash pikëpyetje Kërkimi q barabartë macet, në qoftë se unë do të hit Enter dhe nëse Google janë zbatuar në PHP, Kodi PHP që Google ka shkruar do të kenë qasje në shenjën e dollarit nënvizojnë marrë brenda së cilës është çelësi i quajtur Pyetje dhe një vlerë quajtur macet që ajo pastaj mund të përdorin përdorur për të bërë një kërkim aktuale me. Pra, në fakt, ajo që unë jam duke shkuar për të bëni tani është të kthehemi në kodin tim PHP që ju do të shihni përsëri më shumë e në PSet7. Dhe në vend të mbylljen në vlerat e vështirë të koduara që nuk duket si një shumë website dinamike, Unë do të ju jap një ngacmues të çfarë kodi juaj aktual do të bëjë. Ju do të vënë në dy Pyetja e shënon si kjo. Unë nuk e di se çfarë emri i përdoruesit është. Unë nuk e di se çfarë Emri do të jetë, por unë e di unë mund të marrë ato dinamike. Pra, në qoftë se kodi ne jemi me shkrim tani është kodin kandidon për serverat e Google-it, ose në qoftë se kjo është përshëndetje dot PHP, i cili vjen me PSet6, Unë jam duke shkuar për të kaluar në funksioni query ashtu si printf, dy argumente të tjera. GET, të japin kuotën, emrin mbyll thonjëzat, Dhe për të marrë, të japin kuotën, emri i mbyll thonjëzat. Dhe tani, vini re çfarë Struktura e përgjithshme është këtu. Unë kam marrë në të majtë anën e thirrjes, ky funksion i quajtur pyetje në PHP. Unë ende kam si një i parë Argumenti, vetëm një varg të tekstit. Por kjo varg i tekstit është i shkruar në një gjuhë që quhet SQL. Dhe sinqerisht, kjo nuk është një gjuhë e madhe. Ne jemi vetëm do të flasim për ajo formalisht sot, me të vërtetë. Dhe pastaj në problemin vendosur shtatë, ka relativisht disa karakteristika që ne jemi do të levave. Në pikëpyetje, edhe pse, thotë vihet në prizë një vlerë këtu dhe plug në një tjetër vlerë këtu. Dhe vini re, unë e kam harruar atë nga e gjithë mallkim quote-- it-- rreth kuotimit shënon këtë herë. Unë e kam lënë jashtë kuotimit shënon rreth pikëpyetje, keq, këtë herë. Pra, çfarë është e bukur në lidhje me këtë pikëpyetje tipar që PHP ka tendencë për të mbështetur, Ruby dhe Python dhe gjuhë të tjera, kjo thjesht do të thotë plug në disa vlerësojmë këtu dhe ju e dini se çfarë? Ju kuptoj se nëse do të përdorim Kuotat e vetme apo të dyfishtë kuotat. Mos u mërzit mua me ato Detajet e intelektualisht jointeresant. Por, sigurohuni që është e saktë në mënyrë që kodi im është në fund të fundit operative dhe të sigurt, e cila do të kenë një kuptim para se të gjatë. Tani, sa argumente gjithsej, vetëm për të të jetë e qartë, është funksioni marrja pyetje? Çdokush duan të votojnë për më shumë se dy? Tre? I sigurt, pse? Pse tre? Audienca: [padëgjueshme] DAVID Malan: Pikërisht. Pjesa e parë është string. Argumenti i dytë është shenjë dollar nënvizojnë Teklif kllapa emrin. Dhe argumenti i tretë është njëjta gjë, por vetëm emri. Pra, me fjalë të tjera, tani në qoftë se kam pasur një formë web që kishte për fushat e tekstit, një për emrin e përdoruesit, një për tij apo emri i saj, vetëm si ju do të shihni në një faqe interneti kur ju regjistroheni për disa website, kjo mund të jetë kodin në fund e pasme që në fakt nuk futje tani në bazën e të dhënave. Tani nga ana tjetër, le të shpejtë përpara. Supozoni se një përdorues është tani prerjet në dhe ju doni të shkruani kodin PHP që kontrollon nëse personi i cili është regjistruar vetëm në është në fakt një përdorues, ju mund të përdorni sintaksë mjaft e thjeshtë. Ju mund të thoni SELECT, le të themi yll, ku yll do të thotë çdo gjë. Unë nuk e di se çfarë kam doni, kështu që vetëm të më jepni të gjitha shtyllat nga tabela quajtur përdoruesit ku, dhe kjo është e bukur. Zgjidh mbështet çfarë është quajtur predikati, i cili është si një mënyrë për të kualifikuar atë që ju dëshironi. Ku emri i përdoruesit është e barabartë me të japin kuotën, mbyll thonjëzat Malan. Pra edhe këtu, unë kam të ngulitura brenda argumentit në një funksion PHP, një linjë e kodit SQL. Dhe se kodi SQL kjo Ora është fjalë për fjalë do për të kërkuar për kuotë, mbyll thonjëzat Malan. Tani që nuk është e gjitha që e dobishme, kështu që unë jam duke shkuar për të kaloni atë dhe unë jam duke shkuar për të vënë larg ky tip nga Brady, dhe shko dhe plug-in në vend një pikëpyetje këtu. Pra, vetëm të jetë i qartë, çfarë duhet Argumenti im i dytë të në qoftë se dikush ka hyrë vetëm në dhe unë dëshironi të kontrolloni nëse ai ose ajo është në fakt një përdorues? Audienca: [padëgjueshme] DAVID Malan: Po. Kam dëgjuar dollar shenjë nënvizojnë Dërgo kërkesën, emrin e përdoruesit siç janë quajtur ato. Dhe kjo duhet të kthehet tek unë ndonjë prej rreshtave në bazën e të dhënave e mia që kanë një emër përdoruesi të Malan. Tani shpresoj, unë jam duke shkuar për të marrë përsëri zero nëse nuk Malan ka qenë këtu, ose një në qoftë se ai ka. Unë nuk duhet të kthehet dy ose tre ose katër. Përse? Audienca: [padëgjueshme] DAVID Malan: Unë thashë unik, e drejtë? Arsyeja e thjeshtë. Sepse unë tha se e mori për të jetë unik, vetëm logjikisht, ju mund të keni vetëm zero ose një Malans në këtë tabelë të veçantë bazës së të dhënave. Tani si një mënjanë, vetëm kështu që ju kam parë ajo, edhe pse unë mbaj duke përdorur GET dhe edhe pse PSet6 përdoret vetëm GET, ju me siguri mund të ketë Post. Dhe kujtojnë se Post është një tjetër Teknika për dorëzimin e informatave nga një formë, por nuk shfaqen në URL. Kjo është pak më të sigurt sigurisht për gjëra të tilla si përdoruesve dhe fjalëkalimet, i cili PSet7 do të, në fakt, të përfshijë. Pra, le ta bëjmë këtë në PHP MyAdmin dhe shikoni se çfarë ndodh. Unë jam duke shkuar për të shkuar në MySQL tab. Dhe vini re se vlera e paracaktuar për PHP MyAdmin, vetëm që të përpiqet të jetë e dobishme, është që të zgjidhni yll nga përdoruesit ku. E pra, një është gjithmonë e vërtetë, kështu që Kjo ka kuptim efektiv i thjesht zgjidhni gjithçka. Por unë jam do të jetë pak më shumë pedant dhe me dorë lloji nga yll Zgjidh nga përdoruesit. Tani teknikisht, ju mund të citojnë emrin e tabelave. Është e rrallë që ju keni për të, por vini re këto nuk janë kuotat tuaj normale në tastierë SHBA. Kjo është e ashtuquajtura backtick, e cila në përgjithësi është në anën e sipërm të majtë cep të tastierën tuaj. Por është e rrallë që ju do të në fakt duhet të shqetësojë me atë, kështu që unë vetëm do të harroj ato gjithsesi. Deri tani, më lejoni të shkoj përpara dhe e goditi të shkojnë. Dhe sa rreshtave duhet të shkoj përsëri kur unë zgjedh yllin nga përdoruesit? Audienca: [padëgjueshme] DAVID Malan: Numri i rreshtave, i sigurt. Por, sa shumë njerëz në këtë Historia konkrete tani? Dy, sepse nuk kishte mua dhe nuk kishte Rob. Pra, në qoftë se unë kliko të shkojnë, unë shoh vizualisht se Unë kam marrë përsëri, në të vërtetë, dy rreshta. Ka shumë rrëmujë mbi ekran, por unë shoh vetëm dy rreshta. Në të kundërt, në qoftë se unë bëj këtë përsëri dhe të bëjë Ylli SELECT nga përdoruesit, ku është emri i përdoruesit barabartë Quote, mbyll thonjëzat Malan, tani në qoftë se unë kliko të shkojnë, Unë jam vetëm duke shkuar për të marrë përsëri një rresht. Dhe së fundi, në qoftë se unë bëj diçka si kjo, mendoj që unë nuk e kujdesit për duke marrë çdo gjë, që është lloj i pakuptimtë tani, sepse ka vetëm dy kolona. Ajo nuk është si unë jam zgjedhur një sasi të madhe të të dhënave. Mendoj të shkoj përpara dhe mos Zgjidh Emri i NGA përdoruesit, ku emrin barabartë me Malan, çfarë është e bukur për SQL sinqerisht, është se me të vërtetë vetëm e bën çfarë ju them se për të bërë. Është mjaft i ngjeshur, por ju fjalë për fjalë vetëm tregoni se çfarë ju doni të bëni. Zgjidhni Emri nga përdoruesit ku username barabartë Malan. Dhe me të vërtetë është se i qartë. Pra, tani, nëse unë goditi Shko, sa rreshtave jam duke shkuar për të marrë përsëri? Një, sepse kjo është vetëm Malan, me shpresë. Ose zero në qoftë se ai nuk është atje, por një maksimalisht. Dhe sa kolona do të kthehem përsëri? Sa kolona? Këtë herë, unë jam vetëm duke shkuar për të marrë një të tillë, sepse nuk e kam zgjidhni yll, i cili është gjithçka. Tani unë jam zgjedhur vetëm emrin, kështu që unë vetëm të marrë përsëri një kolonë dhe një rresht. Dhe kjo duket lloj i në mënyrë të përshtatshme qesharake, vetëm në kërkim super e vogël si kjo. Pra, çfarë është me të vërtetë ndodh? Kur ju të ekzekutuar një SQL query përdorur zgjedhur, çfarë ju jeni duke marrë prapa nga të preferuarat është si një tryezë e përkohshme me rreshta dhe kolona, ​​ndoshta, por që heq çdo gjë që nuk është përzgjedhur në fakt nga ju. Pra, kjo është si në qoftë se dikush kishte një i madh spreadsheet të gjithë studentët i regjistruar për disa Grupi i studentëve, dhe ju thoni: më jepni të gjithë studente të cilët kanë i regjistruar për grupin tonë studentor, çfarë kolegu juaj në Grupi nxënës mund të bëjë është se ata vetëm mund të dorëzojë ju të gjithë spreadsheet. Kjo është si të thuash zgjidhni yll. Dhe kjo është pak i bezdisshëm, nëse ju vetëm donte studente. Dhe kështu, në qoftë se ju në vend të kësaj ka thënë: Zgjidh yll nga tabela bazës së të dhënave ku vit është e barabartë me të japin kuotën, studente mbyll thonjëzat, kjo është sikur shoku në grupin e studentëve theksuar fjalë për fjalë dhe kopjuar vetëm rreshtat studente, ngjit ato në një Google të ri Spreadsheet ose një file Excel, dhe ju dorëzoi mbrapa duke rezultuar fotografi vetëm. Kjo është e gjitha që po ndodh në konceptualisht këtu. Pra, në fund, ne mund të bëjmë disa gjëra mjaft të dashuroj me ruajtjen gjëra të tilla si përdoruesve dhe fjalëkalimet dhe të ngjashme. Por, ajo rezulton, ne duhet të bëjmë pak më ndryshe se sa kjo. Kjo nuk është se i zgjuar për të vetëm ruajtur një username dhe një fjalëkalim. Dikush më herët, unë mendoj këtu poshtë, sugjeroi një ID. Tani një ID mund të jetë si një Harvard ID ose ID Net Yale, por ajo mund të jetë edhe më të thjeshta në rastin tonë bazës së të dhënave. Dhe me të vërtetë, rasti i përbashkët është që të ketë një tjetër kolonë. Dhe unë jam duke shkuar për të shkuar përpara dhe redaktoni tryezën time. Dhe në qoftë se ju të luajnë rreth me kjo ndërfaqe për PSet7, ju do të shihni se ju mund të kontrolloni ky buton këtu dhe shtoni një fushë në fillim të tabelës. Dhe tani, nëse unë kliko të shkojnë, ajo do për të më jepni një nga ato forma të nga më herët. Unë jam duke shkuar për të shtuar një fushë të quajtur ID. Dhe unë jam duke shkuar për të bërë atë një lloj numerike. Unë kam një bandë e tërë e vlerave për numeriken. Unë jam vetëm duke shkuar për të zgjedhur një int dhe mos u shqetësoni për të madhësive të ndryshëm. Unë nuk duhet të specifikojë një gjatësi ose një vlerë, sepse kjo do të jetë 32 bit pa marrë parasysh çfarë. Atributet, ne nuk shohim më parë. Çdo interes në ndonjë nga këto menu options këtë kohë? Për një INT? Çfarë keni propozuar? Nuk ka? A ndonjë nga këto kuptim? Po. Po, panënshkruar, e drejtë? Në përgjithësi, në qoftë se ne jemi duke shkuar për të dhënë të gjithë një numër unik, i cili është vendi ku kjo histori është po, unë me të vërtetë duan vetëm një person të ketë numrin si zero dhe një dhe dy dhe tre dhe katër. Unë nuk duhet të merren me numra negative. Ajo thjesht duket si kompleksitet të panevojshëm. Unë dua katër miliardë vlerat e mundshme, jo katër miliardë të vlerave të mundshme, kështu që unë vetëm dyfishuar Kapaciteti i INT tim. Si një mënjanë, në qoftë se ju doni të lidhen kjo për diçka si Facebook, përsëri në lloj të ditës sime kur është Facebook parë doli jashtë, Unë besoj se atë që ata ishin përdorur në database e tyre MySQL për të ruajtur një përdorues-së identifikues, ishte vetëm një INT. Por sigurisht, nuk është një shumë e njerëz të vërtetë në botë. Nuk është një shumë e rreme Facebook llogaritë në botë. Dhe kështu në fund, Facebook vërshuan madhësia e një INT, një katër miliardë të Vlera. Cila është arsyeja pse, në qoftë se ju shikoni përreth dhe ka faqet e internetit që mund të ju tregojnë se çfarë ID juaj unik është. Dhe në qoftë se ju nuk zgjodhi një emër përdoruesi në Facebook, ju do të shihni ID tuaj unik. Unë mendoj se është profili dot PHP ID pikëpyetje është e barabartë me diçka. Kjo është tani diçka si një i madh INT, ose një kohë të gjatë në qoftë se ju do, i cili është një vlerë 64-bit ose diçka të krahasueshme. Pra, edhe në botën e vërtetë të bëjë këto Çështjet në fund të fundit ndonjëherë rëndësi. Dhe kjo rezulton këtu, në qoftë se unë jam i duke i dhënë të gjithë përdoruesit e mia një ID unike, Unë dua të jem super të qartë dhe minimalisht bëjnë këtë fushë të veçantë. Por kjo rezulton atje është një pjesë e nomenklaturës sot shumë kjo është një kyç primar. Nëse ju jeni të hartonin një bazë të dhënash tavolinë dhe ju e dini që më parë që njërit prej kolonave në atë tabelën duhet dhe do të identifikojë në mënyrë unike rreshtave në tryezë, ju doni të specifikojë atë dhe të them të bazës së të dhënave, ky është çelësi im kryesor. Nuk mund të jetë kopje identike në fusha të tjera, por unë jam i thënë bazën e të dhënave që ky është primar im, fusha ime më e rëndësishme, që është e garantuar të jetë unike. Tani, kjo duket e tepërt. Unë tani jam duke propozuar që ne shtoni, duke klikuar Save këtu, një called-- fushë dhe unë jam duke shkuar për të shkuar përpara dhe klikoni UA, ne do të kthehen në se në një moment, Save. Unë jam duke propozuar tani që tryezën time, duket si kjo. Unë kam një fushë INT quajtur ID, një fushë CHAR quajtur Emri i përdoruesit: një fushë VARCHAR quajtur Emri, por ID, nëse është kryesor dhe për këtë arsye unike, pse nuk kam vetëm të humbur Ora futjen çfarë në mënyrë efektive është një i dytë unik fushë quajtur ID që është një int? Emrin, kujtojnë, ishte tashmë unik, kemi thënë. Pra, vetëm logjikisht, ju nuk keni nevojë ndonjë përvojë bazës së të dhënave për të arsyes përmes kësaj, pse mund të Unë kam prezantuar një INT si identifikues unik time si? Çfarë është this-- them përsëri? Audienca: [padëgjueshme] DAVID Malan: rastësishme qasje është më e lehtë, pse? Audienca: [padëgjueshme] DAVID Malan: Po, kjo është vetëm qasjen numra. Pra, në qoftë se ju mendoni se për këtë të vërtetë është një tavolinë, si një grup, tani unë kam identifikues unik që unë mund të kërcejnë rreth. Dhe më mirë se që ende është se Sa i madh është një INT do të jetë përsëri? 32 bit ose katër bytes. Sa i madh është emri im do të jetë? Maksimalisht? 16 bytes. Pra, nëse ju jeni me të vërtetë kujdeseni për performanca e kodit tuaj, mendoj se mbrapa për PSet5, do të ju preferoni për të kërkuar për një vlerë katër byte ose 16 Vlera e byte, e drejtë? Me të vërtetë është aq e thjeshtë sa se. Ju duhet të bëni katër herë më shumë punë për të kërkuar për shkak se ata përdoruesve 16 bytes. Pra, ju duhet të vërtetë krahasuar të gjitha 16 bytes në jetë sigurt po, ky është emri i përdoruesit unë dua. Kurse për një int, ju mund të të bëjë atë me vetëm katër bytes. Dhe si një mënjanë për ata interesuar në të pajisjeve kompjuterike, kjo rezulton nga ju mund të përshtatet diçka si një INT ose një vlerë të 32-bit në diçka quhet një regjistër në një kompjuter CPU, që do të thotë se është super, super të shpejtë, madje edhe në më të ulët Niveli i hardware e kompjuterit. Pra, nuk është vetëm avantazhe të gjithë rreth. Pra, çfarë do të thotë kjo? Në fakt, kur ju jeni të hartonin një Tabela e bazës së të dhënave, pothuajse të gjithë kohës po ju do të nuk kanë vetëm të dhënat që ju intereson, por edhe diçka si një identifikues unik sepse kjo do të le të bëjë gjëra të tjera. Dhe le të udhëtim mbi një problem këtu. Supozoni që përdoruesit nuk kanë vetëm përdoruesve dhe emrat, por ata gjithashtu kanë gjëra të tilla si qytetet dhe shtetet dhe kodet zip, të paktën këtu në SHBA. Pra, unë jam duke shkuar për të shkuar përpara dhe vetëm thonë shpejt, më jep tri kolona më shumë në fund të tabelës. Dhe kjo do të jetë qytetit, kjo do të jetë e shtetit, dhe kjo do të jetë Kodi postar. Tani lloje City, çfarë të dhënave duhet të jetë kjo, ndoshta? VARCHAR? Unë nuk e di se çfarë Qyteti më i gjatë emri është. Diku në Amerikë, nuk ka ndoshta disa fjalë qesharake të gjatë, kështu që le të shkojë vetëm me 255, disi historikisht ose arbitrare. Shtet, ajo që ju doni të bëni? Thirrje gjykim, e drejtë? Çfarë është ndoshta më efikas? Sa karaktere? Ndoshta vetëm dy, në qoftë se ne mund të ik me bërë vetëm, si, MA për Massachusetts e kështu me radhë. Pra, unë jam duke shkuar për të shkuar një vlerë char të dy. Kodi zip është një e interesante. Ne jemi këtu në 02138, në mënyrë që sugjeron ne duhet të përdorin atë? Kjo është një int, e drejtë? INT, INT, të shkurtër? Shkurtër do të punojë. Nuk ka? CHAR ose pesë, por unë dua një int. Pse të shtyjë përsëri në një int? Më të bindur nga kjo. Çfarë është budalla në lidhje me një int, idenë time? Po. Audienca: Merrni më shumë memorie. DAVID Malan: Merrni më shumë memorie. Katër bytes, por ju jeni duke propozuar një kod postar si pesë bytes ose dikush ishte si një char, i cili ndjehet si eh, kjo nuk është e vërtetë rasti. E pra, histori fun. Vite më parë, kur kam përdorur për të përdorur Microsoft Outlook për email tim, Unë përfundimisht të kërkuar për të kaluar në Gmail. Dhe kështu, unë eksportuar të gjithë tim kontakte nga Outlook si skedar CSV. Presje ndarë vlerat, që vetëm do të thotë unë kishte të gjithë miqtë e mi dhe emrat e kaluar emrat dhe numrat e telefonit dhe kodet zip dhe të gjithë se. Dhe pastaj kam bërë gabim e për ta hapur në Excel, i cili është program spreadsheet që e kupton fotografi CSV siç e kemi parë. Por atëherë, unë duhet të ketë goditur, si, Komanda apo Kontrolli S në një pikë. Dhe Excel me sa duket në kohën kishte një funksion të cilin çdo kohë pa një numër, ajo u përpoq të jetë e dobishme. Dhe në qoftë se numri i filluar me zero, ai vetëm do të të shpëtoj prej tyre. Pse keni nevojë për udhëheqës zero në integers? Ata janë të pakuptimta, matematikisht. Ata nuk janë të pakuptimtë në sistemin US Postal. Pra, unë kam pasur për vite me rradhë, në këtë ditë, unë ende ke miq që kur rast i rrallë që kam nevojë për dikë është adresuar këto ditë, Unë ende do të shihni që unë kanë një mik në Kembrixh, Massachusetts, 2138. Dhe është i bezdisshëm, nëse ju jeni duke u përpjekur për të zgjidhur të programmatically gjenerojë zarfat apo thjesht shkruaj atë. Dhe kjo është për shkak të këtë arsye, Unë zgjodha gabuar llojin e të dhënave. Pra, unë dua idenë tuaj. Le të përdorim një fushë Char. Pesë personazhet, përveç ka një rast qoshe. Nëse ju ende dërgoni mail, ndonjëherë zip kodet këto ditë, ata janë, si, plus katër. Pra, ne kemi nevojë për një vizë ndarëse dhe pastaj ne kemi nevojë për katër numra më shumë. Pra, të jetë i sinqertë, ajo mund të shkojnë shumë mënyra të ndryshme. Tani për tani, unë jam duke shkuar për të mbajtur atë të thjeshtë dhe unë jam vetëm do të thonë se kjo është një pesë vlera CHAR dhe ne jemi do të kaloni të gjithë dash plus katër. Por këto janë llojet e tradeoffs. Dhe ju mund të mendoni e problemet e njëjta që dalin me numrat e telefonit apo fusha të tjera. Dhe tani, kjo është në fakt një rrugë qesharake për të shkuar poshtë. Supozoni se si Rob dhe unë dhe Anën dhe Maria dhe [? Davon?] Dhe Andy dhe të tjerët në staf të gjithë të jetojnë në Cambridge, Massachusetts, 02138. Kjo në fakt të ndjehen budalla se unë jam duke shtuar në tryezën përdoruesit time, Qyteti, Shteti, dhe zip. Përse? Audienca: [padëgjueshme] DAVID Malan: Thuaj përsëri? Audienca: [padëgjueshme] DAVID Malan: Ata janë gjithmonë do të shkojnë së bashku, apo jo? Kur ajo rezulton, kemi përdorur për të menduar ky ishte rasti deri ne shteruese Fjalët e të gjithë SHBA, dhe rezulton se nuk disa mospërputhje ku qytete të shumta kanë njëjtë postar, e cila është anormal. Por, në qoftë se ne të parashikojë për tani se 02138 është gjithmonë e Cambridge, Massachusetts, pse në botë do të keni ruajtur në bazës së të dhënave tuaj të Cambridge dhe MA dhe 02138 për mua dhe për Hannah dhe për Rob dhe për [? Davon?] Dhe për të tjerët që jetojnë këtu në Kembrixh, është të përkryer të tepërta. Ne duhet të merrni larg me vetëm ruajtjen çfarë? Vetëm kodin zip. Por atëherë, në qoftë se ne dyqan vetëm kodi zip, unë dua, ndoshta, për web faqen time të dinë se ku është 02138. Kështu që, kam nevojë për një tjetër tryezë. Dhe kjo është në rregull. Dhe në fakt, kjo është një nga proceset e projektimit të projektimit tabelave që ju do të bëni në PSet7 si dhe ku ju doni të faktor nga të dhënat e përbashkëta. Ashtu si ne kemi qenë factoring jashtë Kodi i zakonshëm dhe factoring jashtë të përbashkët stilet nga CSS, këtu edhe në bazën e të dhënave, në qoftë se unë duhet vetëm 02138 në mënyrë unike të identifikuar qytetin e dikujt, mos ruani Kembrixh, Mass për çdo përdorues i mallkuar në tryezën tuaj. Në vend të kësaj, kanë një tabelë të veçantë të quajtur Zips që duhet të kenë çfarë kolona? Ndoshta një fushë ID, vetëm për shkak se, për parimet që ne jemi duke folur për tani. Ndoshta një fushë ZIP për 02138. Dhe pastaj ndoshta ajo kolona të tjera? Qytet dhe shtet, por vetëm të ketë një rresht për 02138, një rresht për 02139, një rresht për 90.210. Dhe kjo është fjalë për fjalë të gjitha kodet zip unë e di. Deri tani, çfarë mund të bëni? Kjo është problematike, sepse tani unë kam marrë dy tavolina. Pra, përdoruesit e mia janë kryesisht gjatë këtu, por tyre Informativ Shtetëror Bashkiak ketu. Pra, ajo rezulton me SQL, nuk ka në fakt një mënyrë për t'u bashkuar me informacione, dhe ju do të shihni këtë në pset. Por kjo rezulton nga ju mund të të bëjë diçka si kjo. Ylli SELECT nga përdoruesit, JOIN ose arkivë zip ON Përdoruesit dot zip barabartë zips dot zip. E cila është një fjalëshumë pak, pa dyshim, por kjo vetëm nënkupton zgjidhni çdo gjë nga Procesi i marrjes së tabela e përdoruesve e mia dhe tabela zips ime. Bashkohen me ta në një të fushë ata kanë në kolonën. Pra, fjalë për fjalë duke bërë diçka si kjo, dhe më jepni mbrapa një tabelë të re të përkohshme kjo është më e gjerë, kjo është më e madhe, që ka të gjitha kolona nga dy prej tyre. Dhe kjo, thjesht, do të jetë Sintaksa për të bërë diçka si kjo. Pra, nuk është kjo përpara, por nuk do të jenë vendime të tjera të projektimit ju do të duhet të bëjë, jo vetëm me indekset por edhe drejtimin në sfidat. Në fakt, ka një sfidë në çdo dizajn bazës së të dhënave ku nganjëherë dy njerëz mund të dëshironi për të hyrë në të njëjtat rreshtat e të dhënave tryezë. Pra, kjo është diçka që ne do të hasni në PSet7 si. Por unë mendova se do të shikojmë në një Sulmi kjo është e mundur në SQL. Cilat janë disa nga Problemet që mund të lindin? Pra, ju do të hasni këtë në PSet7. Dhe ne po ju them të drejtpërdrejtë se çfarë Zgjidhje kodim për këtë problem është. Por nëse ju merrni një klasë të nivelit të lartë, veçanërisht në sistemet operative, ju jeni do të ndeshen një çështje e atomicity, problemi i duke u përpjekur për të bërë gjëra të shumta të gjitha përnjëherë pa ndërprerje. Dhe unë mendova se do të prezantoj këtë Ideja për PSet7 me një metaforë që kam mësuar veten në Margo Sistemet operative CS164 ujë mineral-së klasës vjet më parë. Supozoni se ju keni një nga këto konvikt frigoriferë në dhomën tuaj fjetore apo shtëpisë, dhe ju keni një dëshirë të vërtetë për qumësht. Dhe kështu, ju vijnë në shtëpi nga klasa një ditë, ju hapni frigoriferin. Oh, mallkuar atë. Nuk ka qumësht në frigorifer. Pra, ju mbyllni frigorifer, bllokoj derën, bllokohet konvikt tuaj, ecin rreth qoshe për të CVS, të marrë në përputhje, dhe të fillojnë kontrolluar nga për disa qumësht. Dhe ajo do të marrë një kohë, sepse ato arkë mallkuar vetë kundërvihet marrë përgjithmonë për të përdorur gjithsesi. Pra ndërkohë, shokun juaj vjen në shtëpi. Ai ose ajo me të vërtetë i pëlqen qumësht si. Ata vijnë në dhomë konvikt, hapur frigoriferin, oh, mallkuar atë. Nuk ka më shumë qumësht. Pra, ai ose ajo gjithashtu shkon rreth qoshe. Por tani, pasi nuk ka si dy ose tre ose katër CVSes afër, ato ndodhin për të shkuar në një nga ato të ndryshme në shesh. Dhe kështu tani, disa minuta më vonë, të dy prej jush vijnë në shtëpi dhe ohu, problemi më i keq ndonjëherë. Tani ju keni qumësht shumë sepse ajo do të shkojë kosi. Dhe ju pëlqen qumësht, por ju të vërtetë nuk pëlqen qumësht. Deri tani, kjo ishte një e shtrenjtë gabim për shkak të dy prej jush bërë një vendim të bazuar mbi Gjendja e disa ndryshore që ishte në procesin e duke u ndryshuar nga ju, iniciator i shkuar për të marrë qumësht. Pra, ajo që është ndoshta një njeri zgjidhje për këtë problem? Audienca: [padëgjueshme] DAVID Malan: Lini një shënim, e drejtë? Gjithmonë të lënë një shënim, në qoftë se ju jeni njohur me atë shfaqje. Po, ka dy prej nesh. Pra, gjithmonë të lënë një shënim, ose fjalë për fjalë bllokohet frigorifer me disa lloj dry ose diçka mbi krye si kjo. Por kjo është në të vërtetë do të jetë Problemi kryesor me dizajn të bazës së të dhënave, sidomos kur ju mund të keni shfletues të shumta, laptopë të shumta, përdoruesit të shumta të gjithë duke u përpjekur për përditësimin e informacionit në të njëjtën kohë. Informacion veçanërisht i ndjeshëm si informacion financiar, ku me një tregtimin e aksioneve Faqja e internetit si ju do të jetë ndërtimi, çfarë nëse ju doni të shikoni se sa para ju keni dhe pastaj në qoftë se ju keni mjaft, blerë disa aksioneve? Por, çfarë nëse dikush tjetër që ka një llogari të përbashkët me ju është njëkohësisht duke u përpjekur për të blerë disa aksioneve? Pra, ai ose ajo është kontrolluar Bilanci i llogarisë, të dy prej jush marrë përsëri të njëjtën gjë përgjigje, nuk ka qumësht. Ose të dy prej jush të marrë përsëri përgjigjen, ju keni 100 $ në llogari. Dy prej jush të përpiqet për të marrë vendimin për të blerë një pjesë të disa aksioneve të kompanisë. Dhe tani, çfarë ndodh? Ju keni dy aksione? Ju nuk keni aksione? Problemet si që mund të lindin. Pra, ne do të hasni se. Sulmet SQL injeksion, fatmirësisht, janë diçka që ne do të ju ndihmojë me të, por këto janë atrociously të zakonshme këto ditë ende. Pra, kjo është vetëm një shembull. Unë bëj nuk ka pretendime që Sistemi i Harvardit PIN është të prekshme për këtë sulm të veçantë. Ne e kemi provuar. Por, ju e dini se ne kanë një fushë si kjo. Dhe ID Net Yale ka një të ngjashme kërkim ekran këto ditë. Dhe kjo rezulton, se ndoshta Sistemi PIN është zbatuar në PHP. Dhe në qoftë se kjo were-- është not-- ata mund të ketë kodin që duket si kjo. Ata kanë dy variablave. Më jep emrin e përdoruesit dhe fjalë-kalimin nga ndryshore pas super globale që kemi biseduar rreth më parë. Ndoshta Harvardit ka një pyetje si yll Zgjidh nga përdoruesit ku emri i përdoruesit është e barabartë me atë dhe fjalëkalimin e barabartë me atë. Dhe vini re se unë jam vetëm mbylljen e saj në përdorimin e shënimi kaçurrel shtrëngoj nga tjetra ditë, që do të thotë vetëm të vihet në prizë një vlerë këtu. Unë nuk jam duke përdorur Pyetja teknikë Mark. Unë nuk kam asnjë sekondë ose argumentet tretë. Unë jam vetëm fjalë për fjalë ndërtimin string veten time. Problemi, megjithatë, është se në qoftë se dikush pëlqen një scroob, i cili është një referencë për një film, shkrimet në me diçka si kjo, dhe unë kam hequr dots që zakonisht mbuluar fjalëkalime, çka nëse ai është i veçanërisht me qëllim të keq dhe fjalëkalimin e tij ndoshta është 12345, për filmin e quajtur "Spaceballs" por ai kritike Llojet një të japin kuotën e vetme pas pesë, pastaj fjalë për fjalë fjalë ose në hapësirën, dhe pastaj quote, një mbyll thonjëzat e barabartë me një kuotë, por ai është lënë jashtë njoftim çfarë? Ai ka harruar të japin kuotën e në të djathtë dhe ai është lënë pas dore të japin kuotën e në të majtë. Sepse në qoftë se ky sulmues supozim scroob-së është se njerëzit që ka shkruar ky kod PHP nuk ishin aq të ndritshme, ndoshta ata vetëm kanë një të vetme citon rreth interpolation e një ndryshore në formatimin e teksteve kaçurrel? Dhe kështu që ndoshta, ai mund të lloj e përfunduar mendimin e tyre për ta, por në një mënyrë që do për të le të hacked në sistemin e PIN. Me fjalë të tjera, mendoj se ky është kodi dhe ne tani plug në atë scroob shtypur. Dhe kjo është e kuqe, sepse kjo është e keqe. Dhe teksti themelor është ajo që ai shtypur në, scroob mund trick server Harvardit në ndërtimin e një query SQL varg që duket si kjo. Fjalëkalimi është e barabartë me 12345 ose një është e barabartë një të tillë. Rezultati i cili, logjikisht, është se kjo do të hyni scroob në qoftë fjalëkalimin e tij është 12345 ose në qoftë se një është e barabartë një, e cila është sigurisht gjithmonë e vërtetë, që do të thotë scroob gjithmonë merr në. Dhe kështu, mënyra për të rregulluar këtë, si në shumë raste, do të jenë të shkruar në mbrojtje. Për të përdorur diçka si tonë Funksioni aktual pyetje, e cila ju do të shihni në PSet7, ku ne plug në diçka si fjalë shënon këtu. Dhe bukuria e Funksioni pyetje që ne ju jap është ajo mbron kundër këtyre të ashtuquajturat sulme SQL injeksion, ku dikush është tricking kodin tuaj në injektuar vetë kodin e tij ose të saj SQL. Sepse ajo që funksion query ne japim ju të vërtetë do të bëjë, qoftë se ju përdorni sintaksë pikëpyetje dhe një të dytë dhe një Argumenti i tretë këtu, është ajo që e bëri atë të shtoni në të dhëna që përdoruesi dhënë? Ata backslash citon. Pra, ajo i shpëton ndonjë potencialisht karaktere të rrezikshme. Kjo duket e çuditshme tani, por kjo nuk është e prekshme sepse ajo nuk ndryshojë logjikën më sepse kjo e tërë fjalëkalimi është tani një citim i vetëm që nuk është, në fakt, fjalëkalimi scroob së. Pra, ka pasur disa shaka në lidhje me këtë gjatë viteve. Pra, kjo ishte një foto të marra e disa geek në një parking ku ju mund të dini se disa qytete dhe shteteve të përpiqemi për të scan patentën tuaj pjatë të faturojë ju ose për biletë ju në qoftë se ju shkoni nëpër pa, si, gjëja E-Z Pass. Pra, ky person supozohet se ndoshta njerëzit shkrim sistemin e E-Z Pass nuk ishin aq të ndritshme, dhe ndoshta ata concatenated vetëm së bashku një varg, në mënyrë që ai ose ajo nuk mund keqdashje jo vetëm të plotë mendimin e tyre, por në të vërtetë ekzekutojë një urdhër të keq, të cilat ne nuk kemi përmendur ende, por ju mund ndoshta me mend. Se përveç për të fshirë dhe futur dhe përditësimin dhe zgjidhni, ka gjithashtu një fjalen i quajtur rënie, e cila fjalë për fjalë fshin gjithçka në bazën e të dhënave, e cila është veçanërisht e keqe. Ne mund të zoom në këtë rast kjo është pak e vështirë për të parë. Kjo, tashmë, është një karikaturë e famshme kjo është mrekullisht i zgjuar tani dhe e kuptueshme. [Qeshura] Po, i ftohtë. Lloji i geeking jashtë. Pra këto, pra, janë Sulmet SQL injeksion. Dhe ata janë aq të lehtë për të shmangur duke përdorur kodi i drejtë apo bibliotekat e duhura. Dhe ju do të shihni në PSet7, kjo është arsyeja pse ne ju jap funksionin pyetje. Pra, një çift i lojëra që ne menduam se do ju jap këtu në tonë minuta mbetur së bashku. Pra, si ju mbani mend që nga java e zero, ne paraqiti këto dy llamba të lehta që janë të bukur, jo vetëm për shkak ata janë mjaft dhe janë të gjallë, por për shkak se ata mbështesin diçka quajtur një API, një Aplikimi Ndërfaqja për programimin dhe në CS50 deri më tani, ne kemi kryesisht u përqëndrua në të merrni dhe POST, por rezulton ka HTTP foljet tjera si UPT. Dhe në fakt, kjo ishte një rrëshqitje nga javë zero ku në qoftë se ju shkruani kodin që dërgon a la PSet6 një kërkesë HTTP që duket si ky me këtë copë të tekstit në pjesën e poshtme, e cila është e quajtur JSON, ose JavaScript Object simbol që ne do të flasim për javën e ardhshme, ju mund të kthehet në ose fikur ose ndryshim ngjyra e dritave si ato. Pra, nëse CS50 ka edhe përveç disa e këtyre poqat këtu në New Haven në qoftë se ju dëshironi për të marrë hua ato për projekte finale, edhe disa Microsoft Bands, të cilat janë si shikon që ju të veshin rreth dore tuaj që në mënyrë të ngjashme kanë një API në mënyrë që ju mund të shkruani software tuaj për ta. Ne kemi një llogari me Kodi Apple iOS kështu se në qoftë se ju keni një Apple Rights Watch apo një iPhone ose një iPad apo një iPod, ju mund të shkruani kodin që në fakt shkon në ato. Ne kemi një bandë e tërë e Arduinos, të cilat janë kompjutera vogël pak pa raste, në thelb, që ju mund të lidheni përmes USB, në mënyrë tipike në Mac tuaj apo PC, shkruani kodin që shkon në këto fizik pajisjet që shpesh kanë sensorë mbi ta kështu që ju mund të ndërveprojnë me botën reale. Ne kemi një bandë e tërë e pajisjeve Leap Motion, të cilat janë pajisje USB për Macs dhe PC, këtu dhe përsëri, në New Haven. Dhe në qoftë se ju lidhë atë në Mac tuaj, ju në fakt mund të kontrollojë kompjuterin tuaj duke shkruar software që nëpërmjet trarëve infra të kuqe, kupton ku duart tuaja njerëzore janë, edhe pa e prekur tastierën tuaj. Ne menduam se do të ndajnë një të shpejtë paraqitje e shkurtër në këtë, për shembull. [Muzika] Pra, ne kemi një tërësi bandë e këtyre gjërave, gjithashtu, i quajtur Myo bandat krah që ju të vënë mbi parakrah tuaj dhe pastaj ju mund të kontrollojë e vërtetë bota, bota virtuale si kjo. [Muzika] Ose, ne gjithashtu kemi disa Google Kartoni, e cila është fjalë për fjalë, si, një kuti kartoni ju mund të vënë në tuaj fytyrë, por rrëshqitje në telefonin tuaj në të kështu që ju vënë gotë tuaj telefon me të vërtetë afër sytë tuaj. Dhe Google karton është mjaft të lirë në $ 10 ose $ 20. Dhe ajo ka lente pak që pak jashtë ndryshim imazhi në ekran për të njeriut tuaj sy për të ju jap një ndjenjë të thellë kështu që ju në të vërtetë keni një 3D Mjedisi në para jush. Ne gjithashtu kemi disa Samsung Gear, e cila është versioni më të shtrenjtë të kësaj, por që në mënyrë të ngjashme mund të rrëshqas në një Telefon Android dhe t'ju japë iluzionin of-- ose të japë përvojë e realitetit virtual. Dhe në dy minuta tonë përfundimtar, ne menduam se do të përpiqemi për të bërë këtë. Në qoftë se unë mund të projektit çfarë Colton ka këtu vetëm për të ngjall oreksin tuaj, më lejoni të shkoj përpara dhe të hedhin up në ekranin e madh këtu. Më lejoni të vrasin dritat. Colton, ju doni të shkoni përpara dhe vënë në qelinë tuaj për një moment dhe eja mbi të mes të fazës së? Dhe nuk ju duan të project-- kjo është ajo që sheh Colton. Tani, Wi-Fi në këtu është jo aq i fortë për këtë pajisje se kjo është super bindëse, por Colton është fjalë për fjalë në këtë vend magjik futuristic. Ai e sheh vetëm një imazh. Ju jeni duke parë syrin e tij të majtë dhe të djathtë se truri i tij janë qepur së bashku në një tre dimensionale Mjedisi në fytyrën e tij. Ai është zgjedhur vetëm një opsion menu këtu. Dhe kështu përsëri, ai është i veshur me këtë kufje me një telefon Samsung në atë që është valë projektuar për të sipërm tonë. Tani ju jeni në Mars, unë mendoj se? COLTON: Unë mendoj kështu. Unë nuk jam i sigurt [e padëgjueshme]. [Qeshura] DAVID Malan: Rezulton Marsi ka këto menutë. COLTON: [padëgjueshme] disa cool Vendet në qoftë se ne duam të shkojnë to-- DAVID Malan: Ku duam të shkojmë? COLTON: [padëgjueshme] DAVID Malan: Dhe le të shohim ku Colton të marrë na tani. COLTON: [padëgjueshme] DAVID Malan: Pra, nuk ka aq shumë vende të ndryshme ju mund të merrni veten. Ka FAPIs nëpërmjet të cilës ju mund të shkruaj lojra apo bashkëveprimet që drejtuar, në fund të fundit, në telefon. Pra, ju me të vërtetë vetëm të shkruarit e një app të telefonisë mobile. Por në sajë të softuerit dhe aftësitë grafike, tani Colton është në këtë vilë vogël pak. Dhe në rrezikun e mbingarkuar veten, Colton dhe unë do të rrinë rreth e rrotull për ndërsa në fund të klasës sot këtu në qoftë se ju dëshironi të dalë dhe të luajnë. Dhe ne do të sjellë ato përsëri javën e ardhshme, si dhe. Pa më tej, ado kjo është ajo për sot. Ne do të shihemi javën e ardhshme. [MUSIC - RAGGA TWINS "MAN KEQ"]