[Iritzia: Quiz 1] [Ali Nahm, Oreoluwa Barbarinsa, Lucas Freitas, Rob Bowden] [Harvardeko Unibertsitateko] [Hau CS50.] [CS50.TV] [Lucas Freitas] denek Ongi. Hau galdetegi 1 berrikuspena da. Just ezespen bat bezala, hau da, - esan nahi dut, ez gabiltza estaltzeko saiatu joan materiala ahalik, baina ez du horrek esan nahi, duten daiteke galdetegi 1 izan gauza guztiak estaltzeko goaz. Beraz, ziurtatu ere hitzaldia begirada bat, atal, ahal duzun guztia hartu duzu. Galdetegi 1 da asteazkenean, hurrengo asteazkenean izango da. Beraz, ziurtatu ikastera. Honez, izan nahiko askoz, lehen galdetegi bezala joan bere formatua dagokienez, baina, seguruenik, askoz ere zailagoa izango da. Gutxienez, iaz 50 hartu nuen, askoz zailagoa izan zen pentsatu nuen. Beraz, asko ikasi. Naiz datuen egitura estaltzeko joan eta Huffman kodeketa. Hau jende asko uste da konplexua zerbait da, baina naiz ahalik eta erraza izan dadin saiatuko da. Lehenik eta behin, zer you guys galdetegi 1 jakin nahi dugu, nahi Datu-egitura hori ez dut gaur egingo bakoitzaren deskribapen kontzeptuala ulertzen. Horrek esan nahi du ez duzula izatea benetan hash taula bat ezartzea zure quiz 1. Ez dugu nahi hash taula oso bat martxan jarri ahal duzu; agian saiatuko gara funtzio batzuk martxan jarri ahal duzu egiteko, eragiketa ohikoena, baina ez gabiltza, dena martxan jarri ahal duzu egin behar. Beraz, garrantzitsua da datu-egitura bakoitzaren atzean kontzeptua ulertzen duzu eta, gainera zarela C kode gai, besterik ez da datu-egitura bakoitzeko dute eragiketak ohikoena. Eta, gainera, erakusleak eta structs berrikusi ahal izatea, asko agertzen direlako datuen egitura hauetan. Lehenik, lotuta zerrendak. Lotuta zerrendak, egia esan, oso arrayak antzekoa, baina lotuta zerrenda eta array baten arteko aldea, lehenik eta behin, da lotutako zerrenda bat duten tamaina oso malgu bat du, bitartean matrizeren bai aukeratu array tamaina oso handi bat behar duzu, beraz ari zarela zure datu guztiak gordetzeko array horretan gai izango badakizu, edo malloc erabiltzeko array luzera malgua izan behar duzu. Lotuta zerrendak oso erraza da elementu gehiago besterik ez, elementu gehiago jarri lotuta zerrendan edo elementuak kendu. Eta egia esan, ez baduzu nahi lotutako zerrenda ordenatuko, bilatu eta etengabeko denbora elementuak kendu ahal izango duzu, beraz, O (1) Denbora, beraz, oso komenigarria da. Besterik ez duzu zaindua beti gogoratu malloc eta dohainik izango da nodo, ez baduzu, memoria filtrazioak izan duzu besterik ez delako. Hain lotuta zerrendak - nodo baten definizioa, zer dugu bertan bezalakoa da. Jarri dut int n, baina nahi duzun edozein datuak gorde ahal izango duzu. Beraz, kate bat gorde nahi baduzu, fina da. Egitura gisa gorde nahi baduzu, fina da, bikoitza izango dute, nahi duzuna. Jarri besterik ez dut int n adibide hemen. Eta hurrengo nodo erakuslea izan duzu. Beraz, funtsean, lotuta zerrenda datu batzuk ditu, eta, ondoren, adierazi du hurrengo nodo da. Lotuta zerrendan azken elementua bada, NULL seinalatu egingo. Beraz, hau lotuta zerrenda adibide bat da. Ados, beraz, gaur egun ikus dezagun zer egin behar dugu lotutako zerrenda bateko elementu bat txertatu nahi badut. Lehenik, funtzio txertatze egingo mota void izango ez dudalako nahi ezer itzultzeko. Eta ez dut int bat argumentu gisa hartu behar da, zer sartu nahi dut jakin nahi dudalako. Beraz, zer egin behar dut lehenengo gauza? Beno, newnode on malloc beharko nuke, beraz, lehenengo lerroa da. Besterik ez dut nodo berri bat sortzeko naiz lotuta zerrenda batean jarri. Beraz, zer egin dezaket? Beno, badakigu gure zerrendak lotuta inplementazioak in klasean, beti jartzen dugu burua aldagai global bat bezala. Beraz, zer egin dezakegu buruan aldatzeko. Nuen egin ahal nodo berri honen buru berria izango da, eta nik aurreko burua seinalatu. Nola egin dezaket hori egin dugu? Lehenengo gauza egin behar dut da 'n' balioari nodo berri batean aldatzea, zein izan zen funtzioa ari ematean. Ondoren newnode hurrengoa da burua izango da. Burua newnode egingo da. Beraz nahiko erraza da. Nodo bat ezabatzeko, egin dezakegun bezala - Hori egin izan dugun modu batean esateko, ados, ezabatu nahi badut, adibidez, 3, zer egin izan dut besterik ez da aurreko nodo seinalatu 3 hurrengo nodoari. Beraz, besterik ez dut egingo lukeen horrelako zerbait. Baina zer gertatzen da hori egiten arazoa? Memoria leak behar dut, beraz ez dut 3 zenbakia sarbidea dute jada. Duten arazoa da, ez naiz duten nodo askatzeko gai izango. Memoria leak eta (ulertezina) me gorroto joan izan naiz. Beraz ordez hori egiteko, ziurrenik izan behar dut aldi baterako erakuslea. Beraz temp jarri dut. Da hori ezabatu nahi dut nodo seinalatu. Eta, ondoren, aurreko nodes mugitu ahal izango dut puntu hurrengo nodo duten ezabatu nahi dut nodoaren. Eta, azkenik, erakuslea askatzeko ahal izango dut. Ez erakuslea duten bertan sortu dut libratzeko behar dut? Nik ez dut nahi, besterik ez delako - diferentzia da nodo hori malloc erabiliz sortu zen, beraz, zeure da, hau besterik NULL pila switch gisa izendatu zuten bitartean. Beraz, ez dut hura libratzeko. Ados. Beraz, gaur egungo eztabaida pilak buruz utzi. Pilak nahiko erraza. Pilak eta ilarak egin genuen klasean besterik array erabiliz, baina ezaguna izan behar duzu - kontuan izan halaber, pilak egin dezakezu duten lotutako zerrendak erabiliz, baita ilarak ere. Beraz, array bat duzunean, zer pila bat izango litzateke? Pila bat, lehenik, tamaina izan beharko dute. Zer pila oraintxe duzu duten tamaina da gordetzeko aukera izango duzu. Eta, gainera, array bat izango litzateke, zenbaki-kasu honetan, baina nahi izanez gero, array bat izan daiteke kateak, eta egitura array bat, gorde nahi duzun ezer. Pila buruz: pila bat eta lotutako zerrenda baten arteko aldea dela pila zela pila jarri azken elementu sarbidea besterik ez duzu. Deitzen da azkena, lehena inprimatu. Just like erretiluak pila bat behar duzu, pila gainean erretilu bat jarri bada, erretilu lehen kendu behar duzu, beste erretilu eskuratu ahal izateko. Pilak gauza bera da. Beraz, adibidez, gehitu elementu bat pila bat nahi badut, zer egin behar dut? Honez Push izenekoa, eta nahiko erraza da. Lehenengo gauza egin behar duzun txeke bada pila tamaina ez da handiagoa edo pila ahalmen berdina. Duzu dagoeneko gaitasun osoa izanez gero, ezin duzu beste ezer gehitu delako. Eta orduan ez bada, besterik ez duzu elementu gehitzeko pila egiteko. Eta, azkenik, Kontatzailea tamaina. Beraz nahiko erraza da. Beraz, 2 zenbakia gehitu besterik ez dut. Eta pop nahi badut, horrek esan nahi du kendu nahi duten I gehitu zen eta elementu balioa itzuliko azken elementua, lehenik eta behin egiaztatu behar dut dela pila ez dago hutsik. Delako hutsa bada, ezin dut ezer itzultzeko. Kasu horretan, -1 bueltatzen naiz. Bestela, nik zehaztutako tamaina decrement joan nintzen, eta zenbakiak (s.size) itzultzeko. Zergatik tamaina decrement dut eta gero itzuli s.size? Ez da kasu honetan, zehaztutako tamaina 4 ditu, izan ere, eta laugarren elementua itzuli nahi dut, ezta? Baina zer laugarren elementua indizea da? Hiru. Geroztik ez dut neurria - 3 izango da, besterik ez dut s.numbers itzul daiteke (s.size) 3 delako. Beraz indizea besterik ez da. Orain ilarak. Ilarak nahiko askoz gauza bera dira. Alde bakarra da hori ere azken batean izatea, lehen izarrekin, erregistratu egin behar duzu, lehena inprimatu. Duzu kontzertu bat joan zain ari seguruenik bada, ez duzu zoriontsu izan ordez ilara batean pila bat izan baduzu. Etorri azken pertsona izatea kontzertu sartzeko lehen pertsona izango litzateke. Seguruenik ez zoriontsu izan. Ilaran, lortu zuen lehen pertsona ateratzeko lehen pertsona ere bada. Beraz ilara baten definizioan, array tamaina izateaz gain, izan ere burua, eta horrek pila buru den indizea da izan. Beraz, lehen elementu oraintxe. Enqueue pilak bultzada gauza bera da. Oso inozoa balitz, litzateke, besterik gabe, esan duzu, ondo, besterik egin ezin dut zehatz-mehatz gauza bera bultza egin izan dudan bezala. Dut besterik check ezin da ahalmena haratago bada. Bada, faltsua itzuliko dut, bestela besterik ez dut esportatu balio berria eta ondoren Kontatzailea tamaina. Baina zergatik da hau gaizki? Ikus dezagun adibide hau utzi. Stuff sorta bat Enqueue saiatzen ari naiz, eta ondoren, naiz adierazten du eta Enqueue joan. Han komandoak asko da, baina oso erraza da. Enqueue 5, beraz, gehitu 5 noa, eta, ondoren, 7, 1, 4, 6, eta gero zerbait adierazten nahi dut, horrek esan nahi naiz duten I lehen elementu kendu egingo. Naiz, beraz 3 zenbakia kendu egingo da, ezta? Lehenengo elementua. Ados. Orain beste zerbait Enqueue saiatzen naiz, bada, zer gertatuko da? Nire ezarpenaren arabera, I zen hurrengo zenbakia jarri indizea q.size batean joan. Kasu honetan, tamaina 8 da, beraz indizea 8 azken posizioan hementxe izango da. 1 Enqueue hementxe saiatzen naiz bada, azken posizioa gainidatziz nuke 1 zenbakia, hau da, erabat okerra da. Zer egin nahi dut inguruan biltzea eta lehenengo postua joan. Agian besterik ez litzateke esan duzu, bai, besterik ez dut berriro egiaztatu dut benetan jarri daiteke zerbait bada ez. Ez bada, esan nion, besterik gabe, oh, gaitasun osoa berria da, benetan ahalmena - 1, eta ezin jarri elementu bat han. Baina zer da arazoa? Arazoa da I adierazten dena besterik ez bada hementxe eta, ondoren, beste zerbait gehitzen saiatzen naiz, besterik ez litzateke esango, bai, izan ziren gaitasun osoa, eta 0 da at duzu. Beraz, zure ilaran desagertuko da. Inguruan biltzeko behar duzu, eta inguruan biltzeko modu bat duzula psets ameslari eta beste ikasitako mutil mod erabiltzen zen. Probatu dezakezu etxean ulertzen zergatik q.size + q.head egin nahi duzun mod edukiera, baina hementxe begiratu ezkero, lan egiten dela ikusi ahal izango dugu. Beraz, azken adibidean, q.size 8 zen eta buru 1 izan zen, jarrera hori array-hemen zelako. Beraz, 8 + 1, 9 izango da. Mod edukiera 9 0 izango litzateke. Indizea, eta 0 irtengo litzateke. Egingo eskuineko posizioa izango dugu. Eta ondoren saiatu ilaran etxean. Gauza garrantzitsu batzuk: saiatu pila bat eta ilara arteko desberdintasuna ulertzeko. Etxean, saiatu oso enqueue, adierazten du, bultza eta pop ezartzeko ohitzeko. Eta, gainera, ulertzen horietako bakoitzean denean erabili nahi duzun. Hargatik erlaxatu Pokemons mordo bat 10 segundo. Eta orain, goazen datuen egitura itzuli. Hash taulak. Jende asko hash taulak beldur ziren. arazo ezarri 6a Spell Checker. Mahaiak eta saiatzen hash, jende asko lortu horietako beldur. Beraz, ulertzen gogor ari dira uste dute. Bai? [Rob Bowden] Arazoa multzo 5. Arazoa ezarri 5, bai. Rob esker. Bai. Sei Huff n 'Puff, bai zen. Arazo multzo 5 zen Spell Checker, eta bai hash taula bat edo saiatu bat erabili behar izan duzu. Jende asko pentsatu super ulertzen gogor zirela, baina nahiko erraza benetan dute. Zer hash taula bat da, funtsean? Hash taula bat lotuta zerrendak array bat da. Array eta hash taula bat arteko desberdintasun bakarra dela hash taula hash funtzio bat, zerbait behar duzu. Zer da hash funtzio bat? Ez dakit asko guys hemen irakurri ahal izango bada. Honek hash taula baten adibidea da. Beraz, 31 elementu array bat duzula ikusi ahal izango duzu. Eta zer egiten du hash taula batean hash funtzio bat izan da hori gako bat itzuli behar du, bakoitzaren indizea izanik int. Bada, adibidez, B. Harrison aukeratu nahi badut, B. Harrison jarri nuke nire hash funtzioetan, eta hash funtzioa 24 itzuliko litzateke. Beraz jakin B. Harrison gordetzeko 24 nahi duten I dut. Beraz, hori besterik array bat edukitzea eta hash taula bat izatea arteko aldea. Hash taula hori esango funtzio bat izango duzu non gorde nahi dituzun datuak gordetzeko. Hash funtzioa, hash funtzio bat bilatu nahi baduzu duten deterministak eta ondo banatzen da. Hemen ikusten duzun bezala, datu hori nahi denda nuen asko zela benetan 19 ikusten duzu ordez 31 eta 30 eta 29, eta bertan ziren guztiak doan erabiliz. Beraz, hori erabiltzen dut hash funtzioa ez zen oso ondo banatuak. Noiz ondo banatu esaten dugu, izan nahi dugula esan nahi du, gutxi gorabehera, gutxienez, 1 edo 2 bakoitzeko - bezala, 1 edo 2 aldea arrayetako indize bakoitzerako. , Izan da gutxi gorabehera, lotutako zerrenda bakoitzeko elementu kopurua berdina array nahi duzun. Eta erraza da baliogarria da hash taulan badago, hash taulak gisa ikusteko egiaztatzeko. Ondoren zuhaitzak. Hau zuhaitza da. Informatikako zuhaitzak hankaz gora jarri dira arrazoi batzuk. Beraz hementxe zuhaitzaren erroa eta ondoren hostoak duzu. Besterik gabe, jakin behar duzu, guraso eta seme-alabak nomenklatura. Nodo bakoitzak bere seme-alabek, diren guraso azpitik dauden nodoak ditu. Beraz, adibidez, 2 da guraso izateko 3 eta beste seme-alaba izateko eskubidea Hara joan, 3 ari denean 1 guraso eta hor daude beste haur izango. Eta 1, 3 seme-alaba izan nahi du hala gertatzen, eta. Zerbait askoz interesgarriagoa, binary bilaketa zuhaitz bat deitzen dugu, bertan, nodo bat eskuinaldean balio guztiak eskuinaldetik, - ari-eskubidea izango eskuinera hemen, daude erro elementu baino handiagoa izango. Beraz, 5 zenbakia badut hemen, eskuinera egiten duen elementu guztiak dira 5 baino handiagoa izango da, eta ezker aldean elementu guztiak dira 5 baino txikiagoa izango. Zergatik da erabilgarria? Beno, 7 zenbakia hemen badago begiratu nahi badut, adibidez, 5 eta I joan besterik ez lehen eta ikustera noa, 5 baino 7 handiagoa edo gutxiago? Handiagoa da, beraz, zuhaitz eskuinean egon behar joan ezagutzen dut. Beraz, gauzak askoz gutxiago begiratzen ditut. Bitar bilaketa zuhaitza, nodoan ezartzeko, besterik ez dut datuak izan behar du, beraz int n; dituzu izan ere kate bat izan edo ezer egin nahi duzu. Nahikoa duzu kontuz ibili zer den definitzeko on handiagoa izan behar du, zer gutxiago. Beraz, kateak izan duzu, adibidez, zehaztu ahal izango duzu eskubideari buruz gauza horiek guztiak dira, luzera handiagoa izan da, ezkerrean dira luzerak txikiagoa izan du, beraz, benetan sortu behar duzu. Nola egin dezaket udako ordutegian aurkituko ezartzeko dut? Egin behar dugu lehen gauza da check erro NULL bada. NULL izanez gero, hori gauza ez da hor esan nahi du duzulako ez ere zuhaitz bat, eskubidea dute? Beraz, faltsua itzuliko dut. Bestela, naiz kopurua handiagoa bada egiaztatu dut joan erroan balioa baino. Elementu aurkitzeko eskuinetik saiatu noa Zuhaitzaren. Duten errekurtsibitate naiz Hemen ikusten duzun. Eta gero, gutxiago izanez gero, naiz ezkerrera begiratu egingo dut. Eta, azkenik, bestela, ez da gutxiago edo handiagoa ez bada, esan nahi du balioa bera dela. Beraz itzuliko dut egia. Hemen ikusi ahal izango duzu erabili duten, bada, badut. Eta gogoratu, galdetegi 0, arazo bat zuela, bada, bada izan genuen, eta ziren ustezko eraginkortasunik eza aurkitzeko, eta eraginkortasunik eza zen erabili dituzula. Zuk erabili behar dute, bada ez bada, bestela bada, eta bestela. Beraz, behar beste erabiltzen dut bada eta, bestela, gero eta bestela hemen? Norbaitek - bai? [Ikaslea mintzo, inaudible] Hori da perfektua. Beraz, berak esaten du ez duela axola, besterik ez delako eraginkortasunik eza izan dugu aurretik zela, zeren baldintza batzuk pozik zen agian, bada, beraz, ekintza bat egin duzu, baina gero zuk ziren, beste baldintza guztiak ikusteko. Baina kasu honetan, berehala itzuliko da, beraz, ez du axola. Beraz, ez duzu, bestela, erabili nahi izanez gero. Eta azkenik, Hitz egin dezagun saiatzen buruz, Horrek guztion gogokoena da. Saiatu bat array zuhaitza da. Oso azkarra da balioak aurkitu, baina memoria asko erabiltzen du. Eta ohi da hitz iragazteko, beraz duzunean , martxan jarri ahal izateko, adibidez, ez dakit, telefono zerbitzua telefonoan liburu bat bezala nahi eta B idazteko gai izan nahi duzu eta besterik ez duten B. pertsonen izenak Oso erraza da hori ezartzeko saiatu bat erabiliz, adibidez. Nola ez nodo bat definitzen duzunean saiatu batean? Besterik ez duzu hori is_word egingo bool bat izan. Duten adierazten nodo horren aurretik pertsonaia guztiek erabiltzen duten, Hitz bat osatzeko gai zinen, eta gero erakusleak array bat nodo duzu. Daiteke guraso nodo array bat, beraz nodo * array dugula ikusiko duzu? Bai? Beraz, ikus dezagun nola egingo duten lan. Spell check baterako, 27 elementu array bat daukagu, letra guztiak gehi apostrofeari dugulako. Hemen aurretik besterik ez naiz 2 erabili joan taula gainean idazteko gai izan nahi dudalako. Ados. Beraz, hau saiatu bat adibide bat da. Nuen lehen nodo definitu besterik ez bada, 2 elementu array bat izan dut duten 2 NULL erakusleak dira, beraz jarri besterik ez dut 'a' eta 'b'. Eta ez dut bool bat is_word dioen izan. Honez lehenengoa faltsua izango, besterik gabe, delako hori baino lehen ez duzu edozein karaktere izan. Beraz, hitz bat hutsik ez da hitz bat. Beraz, faltsua da. 'A' gehitzeko hiztegi hau nahi badut, zer egingo zenuke egin behar dut? Besterik ez dut izango litzateke, 'a' nodo berria malloc, eta, ondoren, bere hitza gehitu egia izateko. Beraz, adierazten du besterik ez duela izana 'a' da egia izango. Zentzurik? Ondoren, 'ba' gehitu nahi badut, egingo daukat malloc 1era 'b' egiteko, eta ondoren, naiz konfiguratzeko boolearra faltsua da joan, delako 'b', berez, ez da hitz bat. Ondoren, naiz beste 'a' para 'ba' bat, beraz malloc joan, eta ondoren, naiz konfiguratzeko egia den hitz bat da joan. Delako 'ba' hitza da. Eta gero, kontsultatu nahi badut bada 'b' hiztegi honetan, Besterik ez dut lehena, 'b' joan daiteke. Behera joan nintzen, eta begiratu hitza da egiten dut, eta gezurra esaten du. Beraz, ez da hitz bakar bat ere. 'Ba' begiratu nahi badut, Joaten naiz lehena, 'b', eta orduan 'a' joan, eta egia ikusten dut, beraz, hitz bat da. Zentzurik? Jende asko ezagutu saiatzen nahastu. Ez? Azkenik, Huffman kodeketa. Huffman kodeketa oso erabilgarria da memoria aurrezteko eta testu fitxategiak konprimitu, 'a' eta 'e' erabiliz gero, adibidez asko aldiz besterik ez delako, Zure dokumentuak, baina ez dakit zuk guys askoz gisa erabiltzen bada 'q' edo 'z'. Pertsonaia bakoitza byte 1 besterik ez izatea, bakoitza - ASCII taulan dugu 256 karaktere ez da oso optimoa, askoz gehiago erabiltzen duzun karaktere batzuk ez dira besterik ez delako, beraz, ziurrenik memoria gutxiago erabili behar duzu dutenentzat. Nola ez Huffman kodeketa erabiltzen dut? Huffman zuhaitz bat egin behar dugu.  Huffman zuhaitz batek nodoak ditu duen hori, adibidez, 'a', 'b', 'c', letra izango da sinbolo bat dute, edozein dela ere, gutuna behar duzu, hitza testuan agertzen den maiztasuna da maiztasuna, Huffman zuhaitza sortzeko zinen, eta, ondoren, hori Huffman zuhaitz ezkerraldean seinalatu nodo eta hori izateko eskubidea seinalatu beste nodo. Beraz ekin bezala, zuhaitz bat. Nola ez Huffman zuhaitz bat eraikitzeko duzu? Duten maiztasun txikiena izan du 2 nodoak hautatzeko ari zara. Gorbata bat baduzu zauden 2 nodoak hautatzeko joan duten ASCII balioak txikiena baita. Orduan goazen zuhaitz berria sortzeko 2 nodo horiek irten hori guraso nodo batean frekuentzia batera izan dute joan. Eta orduan goazen baso batetik 2 haur kentzeko joan eta horien ordez guraso batekin. Eta ari zaren errepikatu besterik ez duzu 1 zuhaitz arte basoan joan. Beraz, ikus dezagun Huffman zuhaitz bat nola egin nahi duzun ZAMYLA da. Hemen ikusi ahal izango duzu letrak guztiek dutela maiztasun 1 'A' izan ezik, hau maiztasuna 2 ditu. Beraz, letra guztiak jarri dut ASCII balioa eta maiztasun-ordenaren arabera nodo sortu dut. Beraz, lehen zuhaitza sortu nahi badut, egingo 'L' eta 'M' izan da. Beraz, hemen da. Bikotea maiztasuna 2 izango da da 1 + 1 delako, gero hurrengo 2 maiztasun txikiena duen 'Y' eta 'Z' dira. Eta, ondoren, horiek guztiak izan dut izatea - of 2 maiztasun bat. Beraz, zeintzuk dira duten txikiena ASCII hurrengo bat balio izan direnak? 'A' eta 'L'. Beraz nodo berria sortu dut, eta, azkenik, 4 eta 2, beraz, 2 da, ezker aldean izango da. Eta hau Huffman zuhaitza da. Testua idatzi nahi dut, ondoren, bada, bezalako bitarra testu bihurtzeko, Huffman zuhaitza erabiliz oso erraza da. Adibidez, ezkerretara mugitzen ari dela 0 eta eskuinera mugitzen da esaten badut da 1 bat, Zer da hori irudikatu joan? Hain atsegin 1, 1, beraz, eskubidea, right, eta 0, beraz, utzi ondoren, L izango litzateke, eta, ondoren, 1, 0, 0. Beraz, 1, 0, beraz, besterik gabe, 1, 0, 'A'. Eta, ondoren, 0, 1, beraz, 'Z'. Eta, ondoren, 1, 0, 0 - no. 0, 0 'Y' beraz Lazy izango da,. Beraz, hori da dena niretzat, Rob baino gehiago hartu du. [Rob Bowden] Beraz, aste 7 stuff. Asko lortu dugu baino gehiago benetan azkar joan. Operadore bitekin, bufferraren gainezkatzea, CS50 liburutegia, ondoren, HTML, HTTP, CSS. Guztietan 15 eta 20 minutu bezalakoa. Operadore bitekin. Badira 6 horietako jakin behar duzula dira. Bitekin eta, bitekin edo, XOR, ezker shift, eskuineko txanda, eta ez. Eskuinera mugitzeko, eta ez duzu apenas hitzaldia ikusi batere. Pasatuko dugu azkar hemen joan, baina oso ona da horiek 6 existitzen direla jakin. Gogoratu bitekin operadore noiz egin nahi duzu 3 + 4 bezalakoak dira. Ez zara 3 eta 4 bitarraren aurre. Bitekin operadore honekin benetan banakako 3 eta 4 zenbakien bit aurre. Beraz, lehena dela esango dugu bitekin ez da, eta guztiak du bit guztiak irauli. Beraz, hemen, zuk C hau idazten ari bazara, ez zenuke idatziko da ~ 11011 edo dena delakoa bezala, idatzi nahi duzun ~ 4 gustatzen, eta ondoren, 4 errepresentazio bitarra irauliko luke. Beraz, hemen, ~ zenbaki bitar batzuk 1101101 da zehazki irauli guztiak 1 en 0-ren eta 1-ren joan 0 guztiak en. Hor esan dudan bezala, maiz hori erabiltzea, eta bertan ikusiko dugu pixka batean, da etorri zenbaki batzuekin nahi dugun bezala non bit guztiak dira 1, horietako bat izan ezik. Beraz, errazagoa izan ohi da zenbaki adierazteko non bit bakar hori besterik ezartzen da, eta, ondoren, ~ da, beraz, beste bit guztietan dago ezarrita bat izan ezik har. Beraz, zer ari gara gehiago erabili pixka bat joan. Bit mailako edo. Hona hemen 2 Zenbaki bitarra, eta 2 zenbaki horiek nahiko ordezkari, posible guztiak adierazten baitute operatu behar izan duzu bit konbinazio. Hemen, denean bit bakoitzean or'd dut, besterik ez gabiltza zuzen behera konparatu egingo. Beraz, ezkerreko aldean dugu 1 eta 1 da. When I bitekin | dutenek, zer naiz iritsi naiz? Bat. Ondoren bitekin | 0 eta 1 da niri emateko? Bat. Bitekin 1 eta 0 da gauza bera, bat izango da. Bitekin 0 | 0 da eman zidan 0 joatea. 0 kasua | beraz, kasu bakarra non lortu dut 0 0 dago. Eta hori dezakezu uste besterik ez zure ors logikoa bezala. Beraz, 1 egia gisa eta 0 faltsua gisa uste baduzu, gauza bera aplikatzen da hemen. Beraz, egia edo egia egia da, egia edo gezurra da egia. Faltsua edo egiazko egia da; faltsua edo gezurra dela benetan faltsua gauza bakarra da. Hona hemen adibide dela jakin behar duzu denean operadore bitekin erabiltzen dira adibide nahiko ona gisa. Hemen dugu edo capital 'A' Ox20 bada, eta horiek bilatuko dugu bigarren bat, zerbait lortuko dugu. Eta badugu edo minuskula 'a' Ox20 batera, zerbait lortuko dugu. Hargatik tira ASCII taula. Ados. Hemen ikusten dugu 'A' dela - hemen dugu 'A' hamartar 65 da. Baina hamaseitar, hau da Ox41 ekin dut joan. Nahiko ziur ikusi genuen klasean. Uste dut ikusi genuen klasean nahiko erraza izango dela gehitu hamaseitar etatik bitar bihurtzea. Beraz, hemen, 4 jarri bitar sartu nahi badut, hori besterik ez 0100 izango da. Honek 1-ren lekua, 2-ren lekua, 4 lekua dago, beraz, hau da, 4. Ondoren zatitu ahal dut 1 bitarra, hau da, 0001 izango da sartu. Eta, beraz, hau 'A' binary ordezkaritza izango da. Minuskula 'a', nik orain Ox61 izango da hartu, Bertan, hauek splitting bere bitar sartu, beraz 6 bat - Egin izan da benetan utzi - dago borragoma no? Borragoma. Ox61. Beraz splitting 6 bitar sartu da 0 + 4 + 2 + 0 izango da. Eta zatiketa, 1 da 0001 izango da. 2 hauen arteko aldea begira, ikusiko dugu minuskulaz eta a capital 'A' arteko alde bakarra da bit bakar hau da. Beraz, hemen itzultzea - ​​ados. Itzultzea hemen, begiratzen dugu bit Ox20 zer da bada, beraz splitting Ox20 bere bitar sartu, 0010, 0000 da. Ox20, hori ezartzen duen bit bakarrik pixka honekin ari garela arduratzen da, kapitala eta minuskulaz 'a' artean aldatzeko ere. Badut edo 'A', ko hau, 'A' da, I edo 'A' Ox20 bada, zer naiz iritsi naiz? [Ikaslea, inaudible] minuskula 'a' du, pixka hau irauli 1 bat egingo delako. Eta badut edo 'a' Ox20 batera, zer naiz iritsi naiz? Minuskula bat, delako besterik oring 'a' Ox20 batera, Besterik ez naiz egon oring pixka bakar hau 1 bat joan; dagoeneko 1 bat, beraz, ez du axola. Beraz, 'a' eta 'a' lortzen dugu. Bit mailako eta. Berriz ere, pentsa dezakegu gure zeuden logikoa eta gisa. Ezkerreko aldean egia eta egia dugu. Honez egia izango da, eta, kasu guztietan, faltsuak eta egia edo egia eta faltsua, edo gezurra eta gezurra, Gauza horiek ez dira egia. Beraz, 1000 zer amaituko dugu lortzean da. Beraz, orain, hemen, hemen non trusty bitekin erabili dut ez, non Ox20 izan genuen. Beraz, hau Ox20 da. Orain zer egin nahi nuen, bitekin Ox20 of ~. Hori bit guztiak irauli egingo. Beraz daukat 1101, 1111. Eta beraz 'A' ~ Ox20 da niri emateko zer going anded? Benetan behar dugu pentsatu soilik pixka bat hau da, geroztik, bit horiek guztiak dira 1 izanez gero, orduan ari gara lortzeko zehazki zer 'A' izan zen joan, izan ezik, ziurrenik, zer bit hau da. Delako 1 bat izanez gero, gaur egun 0 bat ezarri du, edozein dela ere, hau da, hau da, 0 izango da batera anded delako. Beraz, zer 'A' da eta ~ Ox20 niri emateko? [Ikasleak erantzun, inaudible] Eta zer 'a' eta da - 'A' da. Eta zer da eta ~ Ox20 'a' me emateko joan? 'A.' Hau da gaur egun delako 1 a. 0 honekin Anding dago egiteko 0 bat da joan, eta orain ari gara 'A' bat lortzeko joan. Biak dira 'A' eta mota honetako azken baina ez gutxienez, XOR dugu. Da oso bezala edo, ezik esklusiboki esan nahi du, edo. Honek zer pentsatu ohi duzun bezala edo mundu errealean bezala. Horretarako bai 'x' edo 'y', baina ez biak. Hemen 1 ^ 1 da 0 izango da. Egia delako, hau da - ez du lan eta baita logikoa egia eta faltsua bitekin & eta edo egiten duten bezala, baina egia ^ egia faltsua da. Bakarra egia itzuli nahi dugu, bada, horietako bat bakarrik da egia delako. Beraz, 1 ^ 1 0 da. Zer 0 ^ 1 buruz? Da 1. 1 ^ 0 1 da, 0 ^ 0 da 0. Beraz, edozein egoeratan, 0 bitekin zerbait 0 da 0 izango da. 1 bitekin zerbait 0 edo 0 bitekin 1, da bada | edo ^, izango da izango 1 bat, eta da eta bada 0 izango da. Eta kasu bakarra non 1 bitekin 1 ez da 1 edo esklusiboa da. Hori da 0110. Beraz, hemen, orain, XOR erabiliz - beraz 20 ean itzuli gara. 'A' ^ Ox20 2 bit horiek alderatzen ari gara. Beraz, a 1 ^ 0 da niri emateko zer gertatzen da? Bakar batek. 'A' ^ Ox20 niri emateko? Minuskula bat. 'A' ^ Ox20 niri emateko? Kapitala A. Delako edozein dela hori egiten, Ox20 batera XORing honetan eraginkortasunez edozein dela bit hau da biratu. Hau da 0 bat bada, orain, 1 bat bihurtu da. Hau da 1 bat geroztik, 1 ^ 1 0 da. Beraz, gure 'a' 'A' bihurtu da, eta gure 'A' du 'a' bihurtu. Beraz XOR badaezpada biratu modu benetan erosoa da. Baino gehiago batetik bestera joateko hizki multzo bat besterik nahi ez duzun eta Ordezko pertsonaia bakarra behin kasuan, duzu besterik XOR Ox20 dena. Orain shift utzi dugu. Utzi txanda besterik ez da egingo, funtsean, bultza zenbakiak guztiak, sartu edo ezkerretara, eta sartu 0 en horien atzean. Beraz, hemen 00001101 dugu. 3 0 hamarkadaren bultza eskuinetik egindako goaz, eta 01101000 lortuko dugu. Nonbinary dagokionez, duten hori benetan 13 ezker-desplaza 3 rekin, eta horrek ematen digu 104 aurre ikusiko dugu. Beraz ezker aldatzearen, hemen ikusten dugu, x << y da, funtsean, x * 2 ^ y. 13 * 2 ^ 3, 2 ^ 3 8 da, beraz 13 * 8 104 da. Orokorrean bitarra, nola digitu bakoitzak, besterik ez duzu uste hasten bada, eskuinetik egindako dugu, 1 lekua, ondoren, 2 en lekua, orduan 4 en tokia da. Beraz eskuinetik egindako 0 hamarkadaren bultzaka, besterik ez duten 4 en bildu diren euren 8 en place gauzak ari gara bultzaka, eta 8 en bildu diren euren 16 en place gauzak. Txanda bakoitzean besterik 2 eta biderkatzen. Bai? [Student] Zer gertatzen desplazatzen bada 5 egin duzu? [Bowden] desplazatzen baduzu 5 gehitu besterik ez duzu galduko digituak litzateke. Ezinbestean, gauza bera da. Bezala, zenbaki oso bit 32 besterik ez dira, beraz, 2 zenbaki benetan big gehitu baduzu, ez bakarrik ez da zenbaki oso bat sartzen. Beraz, gauza bera hemen da. Desplazatzen baduzu 5, bat besterik ez dugu galduko luke. Eta horrek zer esan nahi dut mota da ", gutxi gorabehera," non urrunegi filmea baduzu, bit galtzen duzu. Eskuin shift kontrakoa izango da, non ari gara 0-ren shove amaieran off joan, eta gure helburuetarako, 0-ren ezker hegaletik bete. Beraz, hau egiten, ari, funtsean, zer dagoeneko egin genuen alderantzizkoa dugu. Eta hiru 0 en eskubideari buruzko besterik erori off duten ikusiko dugu, eta 1101 eskuinera modu guztiak bultzatu ditugu. Hau da, 104 3, hau da, modu eraginkorrean, x / 2 ^ y. Beraz, orain, hemen, antzeko ideia bat da. Zergatik ari da gutxi gorabehera x / 2 ^ y, eta ez benetan x / 2 ^ y? Ez nuen 4 desplazatzen bada, I galdu zukeen 1 bat delako. Funtsean, zer uste duzu, besterik gabe, zatiketa osoa uste oro har. Beraz, atsegin 5/2 2 da. Ez da 2.5. Ideia bera hemen da. Denean 2 eta zatitzen dugu, bit bakoitiak gal dezakegu bidean. Beraz, gaur egun - hori da bitekin da. Hori da jakin behar duzun guztia. Gogoratu erabilera kasuetan ikusi dugu klasean, bezala pixka maskara bitekin operadore erabilgarria da, edo horiek erabili duzun bit maskarak. Letra larriak eta minuskulak, bihurketa adibide nahiko prototypical bat da. Ados, beraz buffer gainezkatzea erasoak. Edozeinek gogoratzen funtzio honekin zer zen oker? Ohartu 12 byte array bat, 12 karakteretan, deklaratu dugu eta, ondoren, gure 12 chars kate bar osoa buffer sartu kopiatu dugu. Beraz, zein da arazoa? Zenbaki magiko 12 nahiko askoz berehala pop behar bezala - zergatik 12? Bar gertatzen 12 karaktere baino gehiago izan behar du zer bada? Zer bar pertsonaiak milioika bada? Hemen arazoa memcpy da. Bar nahikoa luzea bada, aski izango da erabat - 'c', 'c' ez du axola pertsonaiak 12 bakarrik izan zela; 'C' ez du axola ez dela egokitzen byte duten askok. Izango da, besterik gabe, erabat gainidatzi char, 12 byte da dugun esleitu, eta memoria iragan guztia ez duela benetan buffer horretan sartzen edozein dela kate-barra da. Beraz, hau izan da irudian ikusi klasean dugu non gure pila hazi behar dugu. Irudiok erabili behar duzu edo lortu haiekin ezagutzen berriro. Dute gure pila hazi dugu, memoria helbideak 0 hasi goialdean eta hazten behera 4 mila milioi gustatzen behealdean. Gure array 'c' dugu nonbait memoria, ondoren, gure erakuslea eskubidea, azpian taberna dugu, eta ondoren gordetako hau marko gure itzulera helbidea erakuslea eta gure guraso errutina en pila ditugu. Gogoratu zer bueltan helbidea da? Da nagusia funtzioa foo bat deitzen denean, funtzio barra bat deitzen da, ezinbestean, barra itzultzen. Beraz, barra itzulerak, dela atzera egingo foo duten deitzen jakin behar dute. Beraz, itzulera helbidea izan du ez duela funtzioaren helbidera, funtzioak itzuliko da. Arrazoia hori da bufferraren gainezkatzea hegaletatik garrantzitsua, zeren erosoan, da hacker gustatzen bueltan helbide hori aldatzeko. Ordez foo atzera egingo du, naiz hacker nahi lekuan itzuli dit itzuli egingo naiz. Eta, era erosoan, hacker maiz nahi non atzera joan nahi Buffer hori, hasieran izan genuen hasiera da. Oharra Beraz, berriro ere, Little Indian. Aparatuaren Indian sistema Little baten adibidea da, beraz, zenbaki oso bat edo erakuslea alderantziz byte batera gordetzen da. Beraz, hemen ikusten dugu - da hau? Bai. Ox80, OxC0, Ox35, OxO8 ikusiko dugu. Gogoratu zifra hamaseitarrak soilik? Ez dugu alderantzizko Little Indian zenbakien hamaseitarra 2 digitu hamaseitar egin duelako gora byte bakar bat, eta byte buelta dugu. Horregatik ez dugu gordetzeko, nahi, 80530CO8. , Gorde dugu horren ordez, 2 digitu bikote bakoitzaren, eskuinetik hasita. Helbide hori Irteeran helbidea aipatzen gure buffer benetan nahi izan dugu sartu kopiatu Lehenik eta behin neurtzen. Arrazoia hori erabilgarria da, izan ere, zer bada erasotzaile gertatu ordez, hori besterik kate bat izatea bezalako kate Kalterik bat, bere izena edo horrelako zerbait, zer bada, horren ordez, kate zirela kode arbitrarioa batzuk besterik duten edozein dela ere egin nahi izan zuten? Beraz, ezin izan - Ezin dut edozein cool kodea uste. Ezer izan zitekeen, baina. Edozein negargarria kodea. Nahi badute, izan besterik ez dute seg matxurak at zerbait, baina hori pointless litzateke. Normalean ez dute zure sistema aldatu egin. Ados. CS50 liburutegia. Hau da, funtsean, GetInt, getString, funtzio horiek guztiak zuk ematen dugu. Beraz, char * katea dugu, eta hori abstrakzioa dela kanpoan nintzen dugu seihilekoan uneren batean. Gogoratu kate bat besterik karaktere array bat da. Hortaz, hona hemen labur getString bertsio bat ikusiko dugu. Atzera begiratu behar duzu it at nola benetan da inplementatu gogoratzeko. Giltza xehetasunak dira, konturatu pertsonaia bakar batean lortuko dugu aldi berean , hau da, besterik gabe idazten teklatua gu bezala estandarretik. Beraz, denbora batean pertsonaia bakar bat, eta pertsonaiak gehiegi lortuko badugu, beraz, n + 1-ahalmena baino handiagoa bada, ondoren, gure buffer ahalmena handitu behar dugu. Hortaz, hona hemen gure buffer tamaina bikoiztu ari gara. Eta hori mantentzen joan; pertsonaia sartu dugu gure buffer sartu line edo fitxategiaren edo dena amaiera berri bat jasotzen dugun arte, eta kasu horretan, katea eta ondoren benetako getString egiten ari gara memoria hori estutu, bezalako memoria gehiegi esleitu badugu itzuliko da eta txikitu pixka bat. Beraz, ez dugu erakusten duten, baina ideia nagusia da den pertsonaia bakar batean irakurtzeko denbora bat dauka. Ezin da besterik gauza oso bat irakurri aldi berean, bere buffer tamaina jakin bat baino ez delako. Beraz, katea da buffer txertatzeko saiatuko dela handiegia bada, orduan gainezkatzea litzateke. Beraz, hemen gerta ez dugu hori bakarrik pertsonaia bakar batean irakurriz denbora batean eta gero eta betiere behar dugu. Beraz GetInt eta beste CS50 liburutegi funtzioen joera getString erabiltzeko beren inplementazioak ere. Beraz, azpimarratu du gauza garrantzitsu dut hemen. GetString deiak kate bat lortzeko. GetString huts bada memoria itzultzeko, gogoratu getString duten zerbait mallocs, beraz, betiere getString deitu behar ez (ulertezina) katea duzula got askatzea duzu. Beraz, hemen, zerbait malloc huts egin bada, INT_MAX itzultzeko besterik ez dugu bandera bat bezala, hey, zenbaki oso bat lortzeko gai ez ginen benetan. Edozein dela ere itzuliko dizut ez ikusi behar duzu, edo ez behar duzu tratatzeko honek baliozko sarrera gisa. Azkenik, ez dela arrakasta suposatuz, sscanf erabiltzen dugu bandera berezi batekin, horrek esan nahi du, lehen zenbaki oso bat dator, ondoren, edozein karaktere dator osoko zenbaki hori ondoren. Beraz nabarituko 1 berdintasuna nahi dugu. Beraz sscanf itzultzen zenbat partidatan arrakastaz egin bada? 1 itzuliko da zenbaki oso bat arrakastaz parekatzen bada, 0 itzuliko da, ez da zenbaki oso bat badatoz, eta 2 itzuliko da hura parekatzen bada osoko zenbakia pertsonaia batzuk jarraian. Beraz nabarituko baina 1 ezer etortzeko badugu berriz saiatu gara. Beraz sartu badugu 1, 2, 3, C, edo 1, 2, 3, X, ondoren, 1, 2, 3 litzateke osokoa gordetzen ezagutu, X litzateke pertsonaiaren gordetzen ezagutu, 2 itzuli sscanf litzateke, eta berriz saiatu genuke, zenbaki oso bat bakarrik dugu nahi duelako. Azkar HTML, HTTP, CSS bidez putz. Hipertestua Markatzeko Lengoaia egitura eta semantika web da. Hemen hitzaldia adibidea non XHTML etiketa behar dugu. Burua tags, tags gorputza, dugu tags hutsik non dugu benetan ez hasteko eta ixteko etiketa dute adibide dugu, besterik ez dugu esteka eta irudi. Ez ixtea irudia etiketa da, ez dago etiketa bakar bat besterik etiketarekin egin behar dena accomplishes hori da. Lotura adibide bat da; ikusiko dugu nola lotzen CSS behar duzu, gidoia nola lotzen kanpoko JavaScript bat nahi duzu adibide bat da. Nahiko erraza da, eta gogoratu, HTML ez da programazio-lengoaia bat. Hemen, gogoratu formulario bat nola definituko zenuke edo gutxienez hau zer egingo zenuke? Formulario bat horrelako ekintza bat eta metodo bat dauka. Metodo bertan soilik inoiz ikusi duzu GET eta POST dira. Beraz GET bertsio non gauza erabat URL jarri da. POST da, non ez da URL jarri. Horren ordez, formularioan edozein datu gehiago HTTP eskaeran ezkutuko dago sartuta. Beraz, hemen, ekintza definitzen non HTTP eskaera doa. Non egingo da google.com / bilatu da. Metodoa. Gogoratu GET eta POST arteko desberdintasunak, eta, besterik gabe, esan adibide gisa, laster marka zerbait nahi izanez gero. Inoiz izango duzu POST URL baten laster-marka egiteko Datu hori ez delako URL sartuta. HTTP, orain, Hipertestua transferitzeko protokoloa da. The Hipertestua transferitzeko protokoloa, transferitu da espero zenuke Hipertestua Markatzeko Lengoaia, eta gertatzen. Baina webean aurkituko duzu edozein irudiak helarazi ere, Egiten duzun edozein deskarga HTTP eskaera bat bezala hasi. Beraz HTTP World Wide Web hizkuntzan besterik ez da. Eta hemen HTTP eskaera bat mota hau aitortu behar dituzu. Hemen HTTP/1.1 aldean besterik esaten duen bertsioa da protokoloa erabiltzen dut. Honez nahiko askoz beti HTTP/1.1 izan nahi duzu ikusiko gisa joan,. Ondoren ikusiko dugu hori GET zen, alternatiba POST izanik, zuk ikusi. Eta hori bisitatzeko nintzen saiatzen URL zen www.google.com/search?q = blah, blah, blah. Beraz, gogoratu hau, galdera-marka q = blah blah blah, stuff hori inprimaki bat aurkeztu moduko da. Erantzun zidan agian itzultzeko, hau izango litzateke. Berriz ere, protokoloa, eta hori dela izango hasita, Estatus kodearen jarraian. Hemen 200 OK da. Eta, azkenik, web orri hori benetan galdetu nion jarraitu egingo da. Ahalik eta egoera kode agian ikusten, eta horietako zenbait, jakin behar duzu. 200 Ados ziurrenik lehenago ikusi duzu. 403 Forbidden, 404 ez da aurkitu, 500 Zerbitzariaren barne errorea ohi da joan zaren web orri bat bada, eta zerbait hautsi edo beren PHP kodea kraskatzen, aparatuaren berriz dugula handi laranja kaxa datorren eta dio, bezala, zerbait gaizki dago, kode honek ez du funtzionatzen edo funtzio hau en txarra. Normalean webgune ez nahi zer funtzio dira benetan txarra jakitea duzu, beraz, horren ordez egingo dute, besterik gabe emango dizu 500 Barneko zerbitzari Akatsak. TCP / IP 1 geruza HTTP pean. Gogoratu ez dagoela World Wide Web kanpo Internet da. Bezalako bat online joko ez duen HTTP bidez joan play izanez gero, nik ezberdin baten bidez joan - eta oraindik ere, Internet erabiliz, baina ez du erabili HTTP. HTTP protokoloaren adibide bat besterik ez TCP / IP gainean eraiki da. Literalki IP Internet Protokoloa esan nahi du. Ordenagailu bakoitzean IP helbide bat dauka; 4 digituko gauza horiek dira 192.168.2.1, edo dena delakoa bezala, hau lokal bat izan ohi da. Baina hori IP helbide baten eredua da. Beraz, DNS, Domain Name Zerbitzua, zer google.com bezalako gauzak itzultzen benetako IP helbide bat hori da. Beraz, idazten duzun IP helbide hori bada URL bat sartu, duzula ekarriko luke Googlek, baina gauza horiek ez gogoratzeko joera duzu. Gogoratzeko google.com ordez ohi duzu. Azken gauza ditugun portu, non honek TCP IP zati da. TCP gehiago ez. Pentsatu, bezala, zure web nabigatzailea exekutatzen duzu. Agian email aplikazioa martxan batzuk duzu? agian interneteko korrika erabiltzen duen beste programa batzuk duzu. Interneterako sarbidea behar duten guztiak, baina zure ordenagailua bakarrik 1 WiFi txartela edo dena delakoa du. Beraz portuak modu horretan sortu zatitu gai gara dira nola aplikazio horiek Interneten erabiltzeko gai dira. Aplikazio bakoitzeko 1 ataka zehatz dela entzun ahal nau, eta lehenetsita, HTTP 80 ataka erabiltzen du. Email Zerbitzu batzuk erabili 25. Behe-zenbakituta direnak joera gordeak zailak. Duzu goi-zenbakituta daudenak lortzeko zeuk gai izan ohi dira. CSS, Kaskadako Estilo Orriak. Dugu estilo web CSS orriak, HTML batera. 3 leku zure CSS jarri ahal izango duzu. Inline izan daiteke, estiloa tags artean, edo erabat aparteko fitxategi batean eta orduan lotuta sartu Eta hemen besterik CSS adibidea da. Patroi hau aitortu behar duzu, non lehenengo adibidea gorputza etiketa da betetzen ari gara, eta hemen gorputza etiketa zentrotzat ari gara. Bigarren adibidea, zera betetzen ari gara izena Oina, eta estilo batzuk aplikatuz ari gara horretan. Nabarituko ID Oina ezkerrera testua lerrokatzen du, gorputza testua lerrokatzen zentro berriz. Oina gorputz barruan dago. Izango da, horren ordez, testu-lerrokatu ezkerrera, gorputza dio Testu-lerrokatzea zentro nahiz. Honek kaskada zati osoa da. Izan dezakezu - estilo zehatz dezakezu eta gorputzaz eta ondoren gorputzean gauzak estilo zehatzagoak zehaztu dezakezu, eta gauzak lan espero duzun bezala. CSS bereziak zehatzagoa hartzeko lehentasuna. Nik uste dut, hori da. [Ali Nahm] Kaixo guztioi. Besterik ezin izan dut zure arreta bada. Ali naiz, eta oso azkar PHP eta SQL bidez joan naiz. Beraz, hasiko dugu. PHP laburra da PHP: Hypertext Preprocessor. Eta duzun guztia jakin behar du, zerbitzariaren aldeko scripting hizkuntza bat da, eta erabili dugu atzera webgune amaieran, eta kalkuluak, eta atzean-eszenak zatian asko nola egiten du. Sintaxia. Ez da C, harridura, ezustekoa gustatzen. Ezin dut aurretik mugitu - beti hemen, zuk ikusi ahal izan bada ere, hasi behar du egiten. Giltza mota berriak behar duzun ikusi ahal izango duzu eta, ondoren, aldi berean,? Php behar duzu. Hori da beti nola zure PHP testua, zure PHP kodea enkoadratzearekin duzu. Beraz, ezin besterik C, non motatako jarri duzu lehen bezala izango. Beti inguratu behar duzu. Eta orain, sintaxia garrantzitsua da aldagai guztiak horretara $ pertsonaiaren batekin hasi behar. Egin behar denean horiek definitzeko zaren behar duzu; egin behar duzun denean duzu haiei geroago aipatuz ari. Beti behar duzu $ duten. Zure lagunik onena da, nahiko askoz. Ez duzu - C ez bezala, ez duzu zer nolako motako aldagaia da jarri. Beraz $ behar egiten duzun bitartean, ez duzu jarri, nahi, int x edo kate y, etcétera, etcétera. Beraz, aldea txikia izan da. Honen ondorioz, PHP duten ahulki mota bat da esan nahi du. PHP ahulki mota hizkuntza bat da, eta da ha ahula idatzi aldagaiak. Bestela esanda, horrek esan nahi du mota aldagai mota desberdinak artean alda dezakezu. Int bat bezala zure zenbakia 1 gorde ahal izango duzu, gorde dezakezu Kate gisa, eta gorde ahal izango duzu mugikor bat bezala, eta guztiek zenbaki hori 1 izango da. Duzu gorde ari nahiz eta modu desberdinetan, oraindik da - mota aldakorreko oraindik ere, azken batean eusten dira. Beraz, hemen begiratuz gero, gogoratzen duzu pset 7tik bada, zuetako askok honekin gaiak ziurrenik izan zuen. Bi berdin ikurrekin, 3 zeinu berdina, 4 zeinuak berdinak. Ongi da, ez dago 4 zeinuak berdinak, baina badaude 2 eta 3. 2 zeinuak berdinak erabiltzen dituzun balioak ikusteko. Mota guztietan ez egiaztatu ahal. Beraz duzun lehen adibidea ikusi ahal izango balitz, Num_int == num_string daukat. Beraz, zure int eta zure kate dira, bai, teknikoki, 1, baina mota ezberdinak daudela. Baina bikoitza berdinak, oraindik pasatzen dugu. Hala ere, berdinen hirukoitza, balio baita Mota ezberdinen egiaztatzen du. Horrek esan nahi du, ez da hori bigarren kasu horretan pasatzen hemen, non 3 zeinuak berdinak erabiltzen ari zaren ordez. Beraz, diferentzia handi bat hori guztia duzu orain erakutsi dute behar da. String lotuz beste gauza indartsua daiteke PHP erabili nahi duzun. Funtsean da erabilgarri dot idazkera hori besterik ez, eta hori elkarrekin kateak nola lotu dezakezu. Beraz Cat badaukazu eta Dog duzu, eta 2 kateak elkarrekin jarri nahi baduzu, aldian erabili ahal izango duzu, eta hori, nola funtzionatzen duen mota. Besterik ere jarri ahal izango duzu horiek bata bestearen ondoan, Hemen ikusi dezakezu bezala, beheko adibidean, non katea 1, espazio katea 2 echo dut. PHP horiek esaterako ordezkatzeko jakingo. Arrayak. Orain, PHP, han 2 array mota desberdinak daude. Arrayak erregularra izan dezakezu, eta, gainera, elkartze-array izan dezakezu, eta ari gara oraintxe horien bitartez joango gara. Arrayak erregularra besterik hau C daude, eta, beraz, hori zenbatuta daude indizeek duzu. Oraintxe ari gara bat sortzen joatea eta jar - beraz, hau da array huts bat nola sortu genuen, gero goazela indize 0 zenbakia jarri. Zenbakiaren 6, 6 balioa jarri goaz. Ikusi ahal izango duzu, behealdean hemen. Where's - 1 zenbakia indizea at gabiltza balioa zenbaki 4 jarri nahi dut, eta beraz, ikusi ahal izango dituzu, ez da 6 bat, ez da 4 bat, eta ondoren dugu gauzak inprimatzeko ari baita, denean saiatzen gara eta indize 0 zenbakian gordetako balioa inprimatu, Orduz balioa ikusiko dugu ari inprimatutako 6. Cool? Beraz, zuretzat arrayak erregularra da. Beste modu duzun gauza ere gehi ditzakezu arrayak erregularra orain da besterik erantsi dituzu amaieran. Horrek esan nahi du ez duzula izan indize espezifikoak zehazteko. Zenbakia ikusi ahal izango dituzu, eta ondoren, kortxete artean ez dago indizea zehaztu. Eta ezagutzeko aukera izango da - PHP besterik gehitu zerrendari, hurrengo free Leku amaierara arte jakingo. Beraz, ikusi ahal izango duzu 1 eskuineko han 0 Leku hartan, 2 bertan joan zen lehen spot at. 3 doa - han gehitzen da, baita. Beraz, mota horretako zentzua. Zu besterik etengabe gehituz, eta orduan, zenbaki 1 indizea echoing ari gara, 2 balioa inprimatu egingo du. Ondoren duten elkartze-array dira array dugu. Elkartze-array ordez, zenbaki-indizeak izatea, zer egiten da, hau da kate dira indizeek dute. , Ikusten duzun ordez - I-zenbakia indize horiek guztiak kendu egin, eta orain gakoa1, gakoa2, key3 da, eta Oraindik komatxo dute kate guztiak Oraindik dutela adierazteko. Beraz, hau adibide bat izan dezakegu. Horren adibide da tf dugula, eta hori indizearen izena da. Jarri "Ali" izen gisa, indizearen aldean, kaloria jan goaz, int une honetan jarri ahal izango dugu ordez kate baten, eta orduan indizea gustuko at, array oso bat jarri ahal izango dugu barruan. Beraz, hau da, mota horretako - antzeko nola izan genuen kontzeptu bat da Zenbaki indizeak, baina orain indizeek inguruan aldatzeko aukera izango dugu horiek kate gisa ordez. Zuk ere egin dezakezu, besterik ez da indibidualki egiten, gainera, hori guztia egin dezakezu pusketa batean. Beraz, array horren tf duten ikusi ahal izango duzu, eta, ondoren, horiek guztiak ezarri dugu erraldoi kortxetea multzo batean. Beraz, gauzak azkartzeko. Aukera estilistiko bat gehiago ez baino da. Horrez gain, begiztak. C honen antzeko lan egiten duten begiztak dugu. Gure array izan genuen, eta zerrendaren amaieran joan zen indizea 0tik dugu, eta dena inprimatu dugu, ezta? Arazoa da, elkartze-array ezik, ez dugu zertan zenbaki-indize horiek ezagutzen orain katea indizeak dugulako. Orain foreach begiztak, eta horrek, berriz ere, zuk espero pset 7 erabiltzen erabili dugu. Foreach begiztak besterik jakingo zerrendako zati bakoitzean bakarra. Eta ez du zehazki zenbakizko indizea duzula jakitea. Beraz foreach sintaxia duzu, beraz foreach da, array jarri duzu. Beraz, nire array pset deitzen da, eta, ondoren, bezain hitza, eta ondoren, tokiko tenporala aldagai hau erabili zarela jarri duzu besterik ez da hori zehatz eutsi egingo gauza zehatz baterako - instantzia bat edo array-atal bat. Pset num 1 ospatuko da, eta gero, agian, zenbakia 6 antolatzen ditu, eta ondoren, 2 zenbakia mantendu egingo da. Baina bermatuta behar balio bakar bakoitza array da bidez joan. Funtzio erabilgarria duten PHP ezagutu behar dira eska- beraz, ziurtatu egiten duten zenbait fitxategiak barne zaren, echo, irteera, hutsik. Gomendatzen dut begiratuz pset 7 eta funtzio horiek begiratu. Agian horiek jakin behar duzu, beraz, behin betiko jakingo nuke zer, zehazki, horiek guztiak egiten ari. Eta orain ari gara benetan azkar esparrua bidez joango gara. Esparrua, PHP funky gauza baten antzeko zerbait da, C ez bezala, eta beraz ari gara azkar horren bidez joango gara. Beraz, demagun hasteko gezi han daukagu ​​hartan dugu. Eta ari gara $ i batekin hasiko dugu. Beraz, aldagai 'i' da 0 izango da, eta ari gara inprimatzeko kutxa zuri handi horretan mantentzeko han pasa. Ra i0 batekin hasiko dugu, eta gero ari gara da echo joan. Beraz, 0 ez dago. Eta gero ari gara Kontatzailea begizta egiteko by going, eta ondoren, balioa 1 izango da. Bat 3 baino txikiagoa da, beraz, pasatzen duten bidez loop joan, eta, ondoren, ari gara berriro inprimatuta ikusteko. Berriro handitzeko 2 goaz, eta 2 3 baino gutxiago da, beraz, gainditu egingo loop, eta inprimatu egingo da 2. Orduan ohartu dituzu duten 3 ez da 3 baino gutxiago, beraz dugu apurtzen kanpo begizta. Beraz, gaur egun irten dugu, eta gero ari gara aFunction sartu joango gara. Ados. Beraz, aldagai hau sortu dugu, kontuan izan behar duzu, 'i' aldagaia, ez da lokalean scoped. Horrek esan nahi du ez dela begizta tokiko, eta aldagai hori ezin dugu oraindik ere, sartzeko eta aldatu ondoren, eta oraindik ere izango da eraginkorra izan. Beraz, gaur egun joan behar funtzioa sartu bada, ikusiko duzu, baita ere 'i' aldagaia erabiltzen dugula, eta ari gara handitzeko 'i' + + joan. Uste duzu litzateke, hasiera batean, oinarritutako C on, hori 'i' aldagaia kopia bat da. Erabat ezberdinak gauza bat da, hau da zuzena. Beraz, noiz, inprimatzen dizugu gabiltza inprimatu 'i' + +, hau da inprimatu joan 4 dela, Sentitzen - eta orduan ari gara joan. Ondoren gaude funtzio hori amaitzeko, eta ari gara non gezi hori da oraintxe bertan izango. Horrek esan nahi du, ondoren, ordea, funtzioaren 'i' balioa aldatu arren, ez zuen funtzioa kanpo aldatu, funtzioa aparteko esparrua duelako. Horrek esan nahi dugunean echo 'i', ez du funtzioa esparrua aldatu, eta, beraz, ondoren ari gara 3 inprimatu berriro egingo. PHP esparrua buruzko gauza ezberdinak C. baino Orain PHP eta HTML. PHP web orriak dinamikoak egiteko erabiltzen da. Mota da gauza desberdinak egiten. Ezberdinak HTML bertatik dugu. HTML, beti besterik ez dugu gauza bera estatikoan, Rob nola erakutsi bezala, PHP, berriz, gauzak aldatu ahal izango duzu oinarritutako nor erabiltzailea da on. Beraz daukat hau bada, dut, "Ez zaude gisa saioa hasita -" eta, ondoren, izena, eta izena aldatu ahal izango dut. Beraz, oraintxe izenaren Joseph da, eta "niri buruz," ditu baina gero nik ere izena aldatu daiteke Tommy izan. Eta hori beste gauza bat izango litzateke. Beraz, orduan ere dugu berari buruz gauza desberdinak alda dezake, eta eduki ezberdinak erakusteko oinarritutako izenaren gainean egingo da. Beraz PHP motatako alda dezake zer gertatzen ari den webgunean. Bera hemen. Oraindik ere, kontuan eduki desberdina dutela, zaren teknikoki oraindik ere web orri bera sartzean nahiz eta azalean. HTML sortuz. Badira hau egin ahal izango duzu 2 modu ezberdinetan. Beraz dugu orain eskuineko bidez egingo joan. Lehen bidea da, izan al duzu - Bai, barkatu. Beraz, besterik ez duzu zure erregularra loop PHP, eta ondoren PHP echo duzu eta ateratzen echo duzu HTML. Rob zer erakutsi duzu HTML script erabiliz eta ondoren erabiliz PHP inprimatu besterik inprimatu web orrira. Modu alternatiboa da egin balitz bezala bereizteko duzun PHP eta HTML. Beraz, loop hasten PHP-lerro bat izan dezakezu, Orduz HTML lerroa izan dezakezu aparteko gauza bat, eta, ondoren, begizta amaitzen duzunean, berriro ere, PHP batekin. Beraz, mota horretako banantzen it out. Ezkerreko aldean, dezakezu duzula guztiak - PHP zatia 1 besterik ez da. Eskuinean dagoen ikusi ahal izango duzu PHP-lerro bat duzula, HTML lerro bat behar duzu, eta PHP-lerro bat behar duzu berriro. Beraz banantzen zer egiten ari dira sartu. Eta kontutan izan dituzu bai modu horretan, horietako bai, oraindik ere kanpo irudia inprimatu, irudia, irudia, beraz HTML hori oraindik den modu berean inprimatutako. Eta gero, oraindik duzu ikusteko 3 irudiak erakutsi zure web orrian. Beraz 2 gauza bera egiteko modu desberdina da. Orain inprimakiak eta eskaerak behar dugu. Rob erakutsi duzuen bezala, daude HTML forma, eta besterik egingo dugu honen bidez brisa. Ekintza bat daukazula eta metodo bat behar duzu, eta zure ekintza motatako erakusten dizu non zauden bidal joan, eta metodoa da ala Da GET edo POST bat izango da joan. Eta GET eskaera bat, Rob esan bezala, esan nahi du zarela jarri formulario bat joan eta URL gisa ikusiko duzu, berriz POST eskaera bat ez duzu URL bat ikusten. Beraz, aldea txikia izan da. Hala ere, gauza bat, antzeko gauza bat da da POST eta GET dira berdin ziurra. Baietz uste dezakezu hori besterik ez delako ez duzu ikusteko URL batean, horrek esan nahi du POST da seguruagoa, baina oraindik dezakezu ikusten cookieak hori bidaltzen ari zaren informazioa hemen. Beraz, ez duela uste bat edo beste inguru. Kontutan Beste gauza bat ere ere sekzio aldagai duzu. Erabiltzen Zaudete hau pset 7 zure erabiltzaile IDa informazioa lortzeko. Zer gertatu zen hori array elkartze hau erabil dezakezu, the $ _saioa, eta ondoren Oraindik gauza desberdinak sartzeko gai eta orrietan zehar hainbat gauza gordetzeko. Azken gauza da SQL kontsulta-lengoaia egituratu, dugula, eta honen programazio hizkuntza bat datu-baseak kudeatzeko. Zer, zehazki, datu baseak dira? Taulen bilduma ari dira, eta mahai bakoitzean objektu mota antzekoa izan daiteke. Beraz erabiltzaile taula bat izan dugu zure finantzak pset batean. Eta zertarako balio zuten? Betirako informazio gordetzeko modu bat delako. Gauzak segimendua eta gauzak kudeatzeko modu bat da eta benetan ikusten orriak desberdinak eta mantenduz pistan. Berriz, besterik ez duzu gordetzen bada une berehalako bat hartan eta, ondoren, geroago erabili, ezingo duzu gorde duzun ezer erabili. SQL komandoak erabiltzen dugun 4 gauza handiak ditugu. Hautatu, sartu, ezabatu eta eguneratu dugu. Horiek benetan garrantzitsua zuretzat mutil zure galdetegi ezagutzen dira. Egingo azkar joan gara gainetik oraintxe aukeratu. Funtsean, errenkada hautatzen ari zaren datu-base batetik. Beraz, baduzu hementxe - 2 gauza desberdin hauek ditugu, eta klaseak taulako hautatu nahi dugu non awesome - non awesome zutabean balioa 1 da. Beraz, hemen ikusi ahal izango duzu, 2 klasearen izen gauza horiek ditugu, CS50 eta Stat110, eta klase identifikazioak eta leloa dugu. Beraz, informazio hori guztia hautatu nahi dugu. Gero, hemen ikusi ahal izango duzu nik motatako awesome zutabe hori biltzen duten, non gauza guztiak 1 dira, eta, ondoren, klase izena, klase izena eta lelo hori jaso ahal izango ditu. Zer egin nahi duzu hau kodean? PHP erabili ahal izango duzu. Beraz, mota horretako nola PHP eta SQL elkarren artean erlazionatuta daude da. Orain gure kodea behar dugu, eta gure kontsulta funtzioa erabili goaz egin dugu pset 7 bezala, eta SQL kontsulta exekutatu goaz. Ondoren gaude behar du - beti izan dugu ilara en hirukoitza berdina faltsua izanez gero begiratu. Beraz, berriro ere, mota eta balioa egiaztatu nahi baduzu, eta, ondoren, lan egiten ez badu, orduan, barkatu, ohikoa den bezala, pset 7 urtean egin genuen bezala nahi duzu. Bestela, begizta handy horiekin guztia bidez nahi duzun foreach begiztak joan besterik ez dugu gainetik. Bidez begizta ari gara orain, eta nik iraganean egin dugun, Demagun gure kontsulta hori igaro, orain gure foreach begizta dugu. Eta lehenengo lerroan du, beraz, hemen errenkadan da, hementxe; Boxed da. Honez dela ahaztuak informazio guztia inprimatzeko. Beraz, inprimatu behealdean joan "Wanna Argibide HTML?" Ondoren, hurrengo errenkadan joan eta bukatu loop lehenengoa delako,, eta beraz, ondoren, da bigarren lerroan inprimatu egingo, hau da STAT110 izango, Momentos guztian bilatu. One azken gauza SQL urrakortasu da. Badakit David honetan ukitu hitzaldia pixka bat. Hau geroago irakurri ahal izango duzu. Benetan dibertigarria da. SQL Injection delikatua gauza mota bat da. Demagun makila besterik ez duzu duten aldagai horiek eskuineko zure kontsulta sartu, lehen lerroan ikus dezakezun bezala. Hain fina dirudi, ezta? Zu besterik erabiltzaile izena jarriz eta zure SQL kontsulta pasahitza, eta ontziratu off eta edozein dela zure datuak taulan da nahi duzun. Hori nahiko erraza dela dirudi. Beraz, aukera ematen esan norbait jartzen da, pasahitza, edo honen testua hementxe - benetan behar koadro gorri egon. Beraz, demagun pasahitza jarri dutela sartu - zer dute sartu. Beraz jarriz ari dira OR "1" = 1. Pasahitza silly bat behar-mota. Orain utzi ordezkatu Besterik ez, eta kontutan izan beharko duzu SQL kontsulta horretan, gaur egun, ebaluatzen beti egia da, zuk kontuan izan duelako izango dela SQL kontsulta dezakezu informazio hori guztia hautatu edo, besterik izan dezakezu 1 = 1. Beraz, beti egia ebaluatzeko. Hori ez da benetan lanera joan, horrek esan nahi du hacker zure sistema apurtu daitekeelako. Honen konponbidea da JDB Sistema erabiltzen duzula, horrek esan nahi du galdera ikurrak erabili behar duzula, hau da, zer duzu pset 7 erabilitako mutilak, non zauden, galdera-marka bat erabiltzea non zerbait jarri nahi duzun tokira joan, eta orduan goazen koma bat izan da, eta, ondoren, gero duzu, Zure katea ondoren, nahi duzun ezberdinak aldagai zure galdera marka sartu ordezkatu. Beraz, kontuan izan duzu hemen, orain galdera marka gorri horiek daukat. Orduan, nire kateak ondoren aldagai jarri dut haiek ordezkatzeko ordena horretan gero ezagutzen dut, beraz. Hori izango da ziur norbait ez bada hau atsegin, eta egoera edo 1 = 1 dute, hori ziurtatu egingo du, atzeko muturrean, ziurtatu ez da benetan SQL kontsulta apurtzen duten. Ados, beraz, hori da nahiko asko, PHP eta SQL zurrunbilo handi bat. Zuetako guztiei zorte onena, eta orain arte Ore [Oreoluwatomiwa Babarinsa] Ongi guztiontzat. Denbora baino gehiago joan JavaScript batzuk eta beste gauza batzuk oso azkar beraz, ez dugu eduki duzu gaur gauean. Ikusteko Javascript-a. Bai. Ikusteko Javascript-a cool gauza baten antzeko zerbait da, purportedly. Gauzak benetan behar duzu Javascript buruz jakin, Sort bezala Bezeroaren aldeko zer da zure web app joan behar egiten bukaeran. Gauza batzuk duzu besterik nahi ez zaintzeko denbora guztian zerbitzari aldean ez dago. Apur interakzio guztiak, gauza bat nabarmenduz, zerbait desagertu egiten. Benetan nahi ez zure zerbitzari hitz egin duten denbora guztian izan. Eta hori batzuk ez da ere posible zerbitzari aldean egin. Horregatik JavaScript antzeko zerbait behar dugu. JavaScript buruz cool gauza: dinamikoki dago idatzitako. Horrek esan nahi du zure programa horrek ez du jakin behar zer, zehazki, aldagai noiz idatzi duzula. Hura besterik ez da sort irudikatu da exekutatzen ari den bezala. Hori buruz cool dira beste gauza: da kizkur giltza hizkuntza bat da, horrek esan nahi du sintaxia C eta PHP antzekoa da. Ez duzu askoz rework egin denean JavaScript ikasten ari zaren. Hemen JavaScripten apur bat behar dugu. Hementxe gauza interesgarria da, begiratzen baduzu ere, Ikusteko Javascript-a apur bat izan genuen bertan burua etiketa batean. Zer da ez da, funtsean, besterik gabe, besteak JavaScript fitxategi bat. Hau modu batean Javascript sar ditzakezu zure programan sartu da. Ondoren, bigarren pixka da, benetan inline JavaScript batzuk, Oso inline estilo bat CSSrekin antzekoa, eta zu besterik kodea batzuk idazten duzunean oso azkar han. JavaScript arrayak ditu. Besterik gabe, beste modu datuak inguruan mantentzeko, oso erabilgarria. Oso polita eta erraza sintaxia. Kortxete erabili duzun guztia sartzeko eta dena mantentzeko elkarrekin. Ezer ez da gehiegi konplexua. JavaScript eta script hizkuntzak orokorrean buruz cool gauza da ez duzula izan array tamainak kezkatu. Besterik array.length erabili dezakezu eta segimendua, eta, gainera, array hazten edo txikitu behar duzun bezala dezake. Beraz, ez duzu ere edozein moduko kezkatu behar duzun, oh ez, gauza gehiago, edo horrelako ezer esleitu behar dut. Cool gauza Hemen da JavaScript objektuak izeneko zerbait du. Objektuetara bideratutako hizkuntza bat da, beraz zer du da, funtsean, zuretzat modu bat talde datuen elkarrekin, zertxobait egiturari baten antzekoa, baina egitura bat bezala edo elkartze-array sintaxia batean sartu ahal izango duzu. Nahiko erraza da eta zer egin dezakezu taldearen datuak bildu da hori da gaiaren inguruko informazio mordo bat bada. Auto bat azaldu behar duzu gauza guztiak delako, ez duzu behar du izan leku desberdinetan sorta batean. Duzu besterik itsasten daiteke 1 JavaScript objektu sartu. Seguruenik ezagutzen duzun bezala, errepikatzean aspergarriak egiten horietakoa da. Egin besterik ez duzu gainetik bat baino gehiago berriro. Objektu guztietan hitz autoan behar duzu, edo elementu guztietan zehar joan-zerrenda bat edo horrelako zerbait behar duzu. Beraz JavaScript ditu, PHP, foreach sintaxia antzekoa. Kasu honetan, bat da begizta batean. Hau erabili ahal izateko objektuak bakarrik nahi duzun. Hau erabiltzen baduzu arrayak gertatzen diren arazo batzuk daude. Oro har, gauza horietako bat da, ordea, eta hori oso baliagarria, gardenki asko desagerrarazi duzulako ez duzulako izan tira guztia zure objektu batean, zuk zeuk. Ez duzu gako-izen guztiak gogoratzeko. Sort besterik lortuko duzu berriro sintaxia honetan. Honetan, batera, besterik gogoratu nahi duzun duten gakoak guztiak atzera ari zaren lortzean, taula hash oso antzeko modu batean. Gogoratu baduzu horretatik aurrera, duzunean kate batean jartzea litzateke zerbait lor ditzaketen duzu duten elkartuak berarekin balioa izango du. Zer honekin egin dezakezu esan dezakezu, eskubidea, Jarri auto batean dut, eta Ferrari bat deitu nuen. Beraz, katea Ferrari jarri dezakezu beranduago, eta hori lortu ahal izango duzu. Eta hori egin dezakezu begizta batean, begizta batean ari. Beraz, besterik gabe objektuak buruz. Gogoratu behar duzu honetatik funtsezko gauza dela sintaxia bezalako objektu eta egitura erabili ahal izango dituzu, betiere, nahi hauekin duzu, zer kate gisa erabili zure joatea ez da baliozko izena aldakorra bada izan ezik. Beraz begiratzen baduzu ez dagoela at, espazio gako dugu. Beno, object.key jarri zinen, espazioa, batera, espazioa, espazio, hori besterik ez luke zentzurik sintaktikoki. Beraz, zuk bakarrik egin dezakezu parentesi sintaxia moduko honekin. Gainera, Javascript Oso esparrua-jakintsua PHP da. 2 esparrua aurre egiteko bitarteko duzu. Ezin duzu var dute aldagai baten aurrean, eta bakarrik esan nahi du, hau da, globala. Duen edozein lekutatik ikusi ahal izango duzu. Hau jarri adierazpen bat izanez gero izan ziren, nahiz eta, edonon zure kodea, bestela, puntu horretatik aurrera aldagai hori ikusi du. Beste gauza bat, nahiz eta, var duena da, edozein funtzio sartu Oraindik duzun mugatzen da Oraindik ez bazara funtzio batean, ondo, globala da. Baina zuri funtzio bat bada funtzio horren barruan bakarrik ikusten da. Ez dut adibide bat, baina, bai. Ez da gauza horiek bat non kudeatu ahal izango duzu zer aldagai global izan nahi duzun, zer tokiko izan nahi duzun, baina agian ez duzu hau kontuz aldagaiak, ez duzulako alea kontrol fina C egin duzun mota izan, non zerbait da batean izendatu bada loop, nik nahi duten egonaldia loop joan. Gauza benetan JavaScript erabiliz arduratzen gara Web orrietan manipulatuz, ezta? Esan nahi dut, horregatik egiten ari gara. >>, Hori DOM izeneko zerbait erabili dugu egiteko. Dokumentutik Objektu Modelo. Funtsean, zer egiten da zure HTML guztiak hartzen du eta eredu da, bata bestearen barruan habiaratuta objektu sorta bat sartu. Hasten zara, honen antzeko zerbait dirudi. Duzu, eskubidea dute on niretzat, kodea mordo bat dago out Sort - Oso zaila da manipulatu behar genuke uste duzu, duzu behar analizatzean litzaidake delako testu-sorta baten bidez eta gain pieza gauza izatea. Eta zer ez dute behar bezala formateatua izan zen bada? Txarra gauzak gertatuko litzateke. Beraz JavaScript atenditzen honen zuretzat, eta datu-egitura polit bat lortuko duzu, nire ezkerretara, non dokumentu bat besterik ez duzu bat bezala, eta hori barrutik HTML, zerbait behar duzu, eta hori barruan buru bat eta gorputz bat behar duzu, eta burua barruan titulu bat behar duzu, etcétera, etcétera, etcétera. Hau web orri bat manipulatuz, beraz, besterik ez da errazten du, oh, besterik gabe, objektu hau hitz egin nahi dut. Sort zeuk egin duzu beste objektu zurekin hitz egingo litzateke oso antzeko modu bat. Esan dudan bezala, DOM guztian dokumentuaren objektu da. Edo, besterik gabe, leku bat da eta, ondoren, bere baitan joan daiteke gauzak aurkitzea, eta egin dezakezu - hori egiten, han estilo zaharra da, non egiten duzu document.getElementById, eta, ondoren, izena, eta seguruenik esan ahal bezala, hau oso unwieldy lortzen pixka bat ondoren. Beraz, ziurrenik zuk ez nahi horretarako. Horregatik behar dugu hurrengo gauza buruz hitz egiteko, honen ondoren goaz. Hemen funtsezko gauza da, hori guztia, elementu horiek guztiak duzu, ezta? Beraz, agian nuen zerbait denean orriaren karga kolorea alda daiteke. Beraz, zer? Zer gertatuko da erabiltzaileari zerbait klik egiten bada? Zerbait interesgarria egin behar da zerbait egin klik nahi dut. Horregatik ekitaldiak dugu. Dezakezu, funtsean, aurkitu zure DOM edozein elementu, eta gero esan, beno. Hau kargatzen denean edo norbait clicks da, edo direnean sagua haren gainean, egin ezazu zerbait. Eta zer behar duzun, duzu kudeatzeko hau zuretzat funtzioak. Funtzio horiek gertaera kudeatzaileen dira. Zer they're - esaten modu fancy bat besterik ez da, funtzio honetan bakarrik exekutatzen da gertaera hau gertatzen da. Beraz, hori gertatzen da gertaera heldulekuak. Hau da, nola arautuko zenuke gertaera kudeatzailea bat. Botoi batzuk izan nuen, eta bertan sakatzen duzunean, lehertzen. Beraz, ez sakatu botoia. Hau da hurbiltzeko modu bat da, ezta? Button etiketa bat behar duzu, eta klik on katea dioen duzu, oh, bide batez, eztanda gauza hau egiten dut niretzat. Bestela, besterik gabe botoi erregular bat egin besterik ez duzu bezala. Zuk ere egin dezakezu beste modu bat, DOM elementu grabbing, baina gorde egingo dugu duten jQuery buruz hitz egin dugu ondoren. JQuery: liburutegi bat duten gurutze-nabigatzailea da. Erabili ahal izango duzu nahiko askoz ezer in. Eta lan tresna asko ematen besterik ez duzu. JavaScript delako, indartsua, berriz, ez dauka behar duzun tresna guztiak koadroan web app bat benetan aurre daudelarik baliteke egin nahi duzun. Beraz, gauza asko sinplifikatzen da, funtzio asko ematen dizu duzula normalean zeuk berriro idazteko, eta gehiago baino gehiago eta gehiagoko izan koadroan. Eta besterik egiten gauza oso erraza. Izan ere selectors, eta azkenean hartu duzu elementu horiek guztiak Zure DOM askoz ere, besterik gabe, horren ordez funtzio deialdi oso luze hauetan erabili beharrik. Selectors hauetan gehiago. Duzu, izan han dute, dizute esan Elementu bat lortu du izena nahi dut "rock". Beno, jQuery in, da bakarrik $ eta ondoren duten libera bat du kate bat, eta ondoren da "rock". Oso erraza eta JavaScript arazo horri aurre egiteko modu tradizionalak baino askoz azkarragoa da. Eta klaseak eta elementu motak antzeko gauzak egin behar duzu. jQuery da - cool ezaugarri bat da ordenatzeko konprimitu duzu Zure DOM buruzko zure zalantzak behera oso, oso azkar. Orain i abiadura itzuli gara, eta hau da, jQuery gertaera bat nola kudeatu nahi duzun. Beraz, zer hemen goaz, esaten ari gara guztiak ondo. Script etiketa bat dut, ezta? Beraz inline honek JavaScript behar dut. Zer egin behar dugu, ari gara guztiak ondo esan du,. Noiz dokumentua prest, eta horrek esan nahi dokumentua da kargatu, da joateko funtzio hori ditugu, eta, esateko eskubidea guztiak goaz, funtzio hori benetan beste zerbait egiten. Funtsean esaten, eskubidea, get me IDarekin elementua "myid." Eta ondoren ematen dioten bertan sakatzen duzunean exekutatzen funtzioa handler hau. Funtsean, hau ez da, dio, eskubidea. Orria berriz kargatzen da, beraz, aurkituko elementu honen noa, eman gertaera kudeatzaile hau, eta, batez ere ezartzen du gora zure orrian zuretzat. Eta hau da, nola i abiadura pentsatu nahi duzu. Pentsatu nahi besterik ez duzu, eskubidea, zerbait gertatzen denean, zer gertatuko nahi dut? Ez duzu pentsatu nahi, ados, ziur gauza honen hitzaldiak egiteko gauza hau behar dut, gauza hau blah blah blah, gauza hitz egiteko ekitaldiak dagokionez besterik nahi ez duelako. Hau gertatzen denean, hau gertatzen. Hau gertatzen denean, hori gertatzen. Eta gauzak beste gauza batzuk eragin bada, handia da. Baina ez duzu nahi, eta saiatu egin konplikatuak kodea non gauza anitz eragiteko ari zaren aldi berean, besterik ez zaren zeure burua emateko buruhauste bat joan delako. Guztiak eskubidea. Orain lor dezakegu gure orri ekitaldiak kudeatzeko, baina demagun nire erabiltzaileari botoi bat sakatzen. Zer eskaera bidaltzeko zerbitzaria itzuli nahi badut, baina ez dut nahi orria berriz kargatzea eragingo du, orri berri bat birkargatu delako beharrik aldi bakoitzean bakarra lortzen nafarrera mota, eta zergatik behar dut berriro behera tira goiburua eta orri-oina, berriro ere, eta orriaren elementu guztiak berriro besterik agurra edo denbora freskatzeko? Beraz, horregatik Ajax antzeko zerbait daukagu. Hemen zer egin dezakegun Ajax duena esan dezake, dugun eskubidea, Datu batzuk bidaltzeko zerbitzariari nahi dut, eta erantzun bat lortzeko back beraz dut nire orrialdera egunera dezake nahi dut, edo agian soilik zenbait kalkulu algoritmikoak ez duela zertan ezer erakutsi erabiltzaileari egin. Zer egin behar duzu? Beno, hitz egin behar duzu URL bat behar duzu. Zure zerbitzariak ezin besterik magikoki entzuteko in ezerezetik. Toki jakin batean datu hau bidaltzen ari zaren izan behar duzu. Eta, gainera, bidaltzeko datu batzuk behar duzu, edo agian dataless kontsultaren bat da. Zerbitzariari ping atzera eta esan nahi besterik ez duzu, beno, bizirik, edo horrelako zerbait naiz. Eta, ondoren, funtsean arrakasta maneiatzen funtzio bat nahi duzun. Demagun informazio batzuk atzera zure zerbitzaritik duzu, eta euren orrialdean erabiltzailearen izenburua aldatu nahi duzu. Beraz, informazioa lortzeko itzuli nahi duzun, eta hori bultza nahi duzun pantailara. Zer gertatzen da, orrialde bat prest dago, batean klik funtzioa sortzen duzunean botoi hau da ongietorri deitzen da. Zer hau ondoren egiten da, botoi horrek bultzatu denean, ra greetings.php hitz egin duzu, POST eskaera bat egin duzu, eta, esaten duzu beno, get me zure orritik zerbait. Ez duzu benetan behar duguna deskribatzeko, baina greetings.php, dezagun, besterik gabe esan, espalda "kaixo mundua". Beraz, atzera lortuko dugu "kaixo mundua", honetan eta honen arrakasta on, suposatuz ezer ez doa oker, gero joan besterik ez dugu xede leku honetara zehaztu dugu eta hori makila besterik ez dugu erantzuna bertan. Eta hau Ajax kontsulta bat ezartzeko oso modu sinple bat da. Oso azkar, Rob Sort aipatu hau dagoeneko, gauzak gaizki joan daiteke, gauza txarrak gerta daiteke, beraz, zeure burua ezagut HTTP erantzun kodeak hauekin nahi duzun. Zer horiek ez dira besterik ez dira, hala nola, 200, dena ongi joan zen. Beste zerbait, gauza txarrak gertatu. Da, oro har, hura gogoratu nahi duzun gauza. Baina polita da horiek guztiak ezagutzeko. Eta, azkenik, behin hori guztia bidez joan gara, oso azkar hitz egiteko diseinu buruz behar dugu, eta, ondoren, utzi duzun guztia utzi ahal izango dugu. Diseinua. Gogoratu nahi duzun gauza. Galdetu zeure buruari galdera hauek: Nor egon hau erabiltzen dituzu? Zer egingo dute batez erabiliko duzu? Zer nire erabiltzaile buruzko zaintzeko? Zer ez arduratu dira? Duzu besterik nahi ez aplikazio bat egiteko eta utzi hazten, besterik ez da eta erraldoi honek, kontsumitzen gauza ezin duzula nahiz eta amaitzeko bihurtu. Helburuak eta planak eta gauza diskretuak Helbidera nahi duzu nahi duzun. Egin ezazu effortless. Horrek guztiak ez dio, funtsean, erabiltzaileari hura erabiltzeko erraza da egiten: ez egin ezazu testuaren blob erraldoi bat da diapositiba honetan bezala, egia esan. Nahi duzun zerbait non oso erraza da norbait joateko izango da eta egin, zer egin nahi dute. Ez duzu nahi 5 orrialdeetan nabigatzen behar horiek zure zure webgunean funtzioa prime lortzeko. Google 5 orriak izan bada aurretik nahiz zezakeen zerbait bilatu, inork ez du erabiliko luke. Eta azkenik, paper prototipoa, foku talde. Diseinu ona eta azterketa praktika. Zuretzat lan egiten dela uste duzu besterik ez delako, ez du esan nahi inork pentsatzen funtzionatzen duen. Baina bai, hori da. [CS50.TV]