[Musika sa pag-play] David J MALAN: Lahat ng karapatan, maligayang pagdating pabalik. Ito ay CS50. Ito ang katapusan ng linggo pitong. At ito ay ang katapusan ng na hayop na kumakain ng mga bulok na bagay mang-aso mula sa problema magtakda ng apat na maaari mong isipin. Pagkatapos pagbawi lahat ng mga JPEG na ng kawani, ikaw ay hinamon, kung gusto mo, sa Kuhanan ng larawan ang iyong sarili na may marami ng mga tao hangga't maaari. Nakakuha kami ng buong bungkos ng mga pagsusumite sa nakalipas na ilang linggo, sa katunayan, marami-dami bago mismo tanghali ngayon, ang ilan sa kung saan ay ang mga dito, nahuli dito in-- mukhang like-- Annenberg Hall sa oras ng opisina, isa dito sa Lowell House na may Nick. Narito ang Ramon na nahuli sa telepono. Ito ay sa isang CS50 tanghalian. Ito ay Jason Skyping sa isang mas creative kamag-aaral, na phoned sa kanya sa ganitong paraan. Hindi namin alam kung ano ito ay. [Tawa] David J MALAN: Ngunit na nagkakahalaga ng isang gigabyte. Narito ang Chang, na Literal na tumakbo off ang yugto upang maiwasang makunan ng larawan isa araw, ngunit sa huli ay nahuli. Narito ang Nick. Narito ang Nick. Narito ang Nick. At dito ay Alison ayon sa mga patlang. At Zamyla kahit na ang nakita sa isang kumpetisyon ng ballroom. Kaya tayo pupunta sa pamamagitan ng mga larawang ito, malaman nagsumite ng karamihan pinakamaaga, at gantimpala isang kamangha-manghang mga premyo, pati na ipinangako sa spec. At makikita din sundin namin ang tungkol sa ang puwang na iyon ay kasangkot. Ang isang pares ng mga announcements-- kaya tanghalian ay, muli, ito Biyernes sa 13:15. Kung nais mong sumali sa amin, RSVP sa URL na iyon dito. Jason lilitaw muli dito mula sa isa ng mga seksyon ng ilang mga taon bumalik, na nangyari upang mahulog sa Halloween. At sa katunayan, bihis siya bilang isang kalabasa sa partikular na taon. Kung pinapanood mo ang seksyong ito ng kanyang mula 2011 seksyon walong, kung gusto mong malaman, sa CS50.tv, sa palagay ko ito ay ang taon kung saan ang kanyang mga naka magpahitit ay gumagana. Kung pagkatapos ay panoorin mo ang katulad seksyon sa 2012, makikita mo ang Jason magkano impis, dahil ang suit hindi na functioned, na kung saan ay lamang na sabihin ito Biyernes, kung ikaw ay i-paghiwa-hiwain ng kalabasa na may Daven at Gabe at iba pa, RSVP sa ulo sa cs50.harvard.edu address. Ipinapangako ito upang maging mahusay na masaya. Daven, kami ay sinabi, ay inukit pumpkins lahat ng kanyang buhay. Gabriel mula sa Brazil ay hindi kailanman inukit isang kalabasa para sa Halloween. Kaya doon sa kanila bilang siya natututo. Mga Seminar, meanwhile-- kaya makikita mo matuto sa lalong madaling panahon tungkol sa kung ano ang aming mga inaasahan ay para sa ang pangwakas na proyekto, na mahalagang ay pasingawan sa pagdisenyo at pagpapatupad ng mga karamihan ng anumang proyekto ng interes sa sa iyo, kahit na napapailalim sa pag-apruba at patnubay mula sa iyong pagtuturo kapwa. Patungo sa katapusan ng semestre, ipakilala kami ng isang bilang ng mga seminar, na kung saan ay opsyonal klase pinangunahan ng mga Fellows pagtuturo at Harvard mga kawani, mga kaibigan ng mga kurso sa buong campus, sa iba't-ibang mga paksa na ay tanghential sa kalakip syllabus kurso ng ngunit gayunman naaangkop, masaya, at naiiba para sa mga potensyal na huling proyekto. Halimbawa, una, kung nais Upang magparehistro, pumunta sa URL na iyon doon. At ito ay ang lineup para sa seminar mag-isa sa taong ito. Ngunit Napagtanto mayroon kaming dose-dosenang seminar mula sa nakaraang taon, ang lahat ay ay naka-link sa menu ng Mga Seminar pagpipilian ng website ng kurso na. Kaya kung ang iyong iniisip tungkol sa lagpas sa iyong kaginhawahan zone o nakakakuha ng ilang mga bagong kasanayan, halimbawa, mga programa sa iPhone apps na may Swift, isang bagong wika mula sa Apple o Layunin-C o Android apps o programming [? cue?] ilaw na mga bombilya, o anumang sa mga paksa hanggang dito at higit pa, dahil tseke ang pahina ng pagpaparehistro. Kaya nagsimula at Napagpasyahan namin sa Lunes sa pagtingin sa HTTP. Kaya mabilis refresher-- HTTP, HTTP. Ngunit ano ang na talagang ibig sabihin? Ano ba talagang ay na ibig sabihin? Iyan ba ay kamay? Alam ko lang ka scratching ang inyong ulo. Ngunit gusto mong ipanukala kung ano ang HTTP ay? Madla: Paano mga computer makipag-ugnayan sa [hindi marinig]. David J MALAN: Naiwan ako ng huling bahagi. Paano mga computer makipag-ugnayan with-- Madla: Internet server. David J MALAN: Good-- na may internet mga server, at partikular, mga web server. Dahil pagpapabalik, may isang bungkos ng mga serbisyo sa internet, ang ilan ay gamitin mo marahil araw-araw sa pagitan ng chat at mensahe, chat, at web page, at e-mail, at ang mga tulad. At HTTP lamang ang protocol na mga web browser magsalita kapag nakikipag-ugnay sa mga web server, at vice versa. At ang analog sa mundo ng tao ay maaaring maging, Pahabain ko ang aking kamay upang kalugin ang ilang mga iba pang mga tao at siya Kinikilala sa pamamagitan ng pagpapalawig ang kanyang kamay pati na rin. Kaya na ang isang protocol lamang, isang hanay ng mga convention. At kung ano talaga ang mga convention? Well, kahulihan babagsak ito lamang pagpapadala ng mga mensahe nang pabalik-balik, bilang namin itinatanghal dito. At mayroong ilang mga paraan sa kung saan maaari kang magpadala ng mga mensaheng ito. At marahil ang pinaka karaniwan ay kilala bilang get. At makikita natin ang contrast upang ito bago ang haba. Ngunit ang isang hiling get mula sa isang browser sa server hitsura tulad ito. Ito ay isang bungkos ng teksto na ito ay naglalagay sa loob ng isang virtual na sobre. Sa labas ng sobre na pumunta ng ilang mga piraso ng mga detalye. Ano ang kailangang pumunta sa sobre, kaya upang magsalita, upang makakuha ng isang kahilingan tulad ng ito mula sa akin sa isang web server? Oo. Madla: Ang iyong IP address. David J MALAN: Aking IP address sa Mula field, kaya upang magsalita, at siyempre, ang IP address ng recipient. Ngunit sa kaso ng isang web packet, kailangan namin ng kaunti pa sa detalye Ito ay hindi sapat lamang sa magpadala ng isang sobre sa isang server, dahil ang server na maaaring nakikinig para sa iba't ibang mga uri ng ng trapiko sa internet. Kaya ano pa ang kailangan namin bukod sa IP ng pinadadalhan? Oo? Madla: ba ito TCP? David J MALAN: Mahusay. TCP-- Madla: Address. David J MALAN: Address, o port, pati na ang tawag dito. Isara ang, ngunit isang numero ng TCP port. At mayroong isang bungkos ng mga ito. Ngunit tiyak ang pinaka pamilyar na dapat kalaunan maging 80, na kung saan ay ang default na isa na ginagamit para sa trapiko sa web. At isa pang pamilyar isa sa lalong madaling panahon ay magiging 443, na ginagamit para sa mga secure web trapiko, mga URL na nagsisimula sa https. Kaya ito ay kung ano ang napupunta sa loob ng na sobre. At kumuha / lamang ay nangangahulugan, ibigay sa akin ang default na web page. Bigyan mo ako ng root ng matapang magmaneho sa web server na iyon. At sana, ang web server ay tumugon kasama, OK at ang bilang 200, na kung saan ay lamang isang convention sinasabi, oo, ang lahat ng talaga ang OK. Narito ang pahina. Ang uri ng mga web page ay pagpunta sa maging teksto, ngunit higit na partikular, HTML, na kung saan kami ay tungkol sa sumisid pabalik sa. At ang tuldok na tuldok tuldok lang paraan, narito ang HTML. At na kung saan kami pick up ang mga kuwento ngayong araw, aktwal na pagsusulat ng HTML, Hypertext Markup Language, na ay ang wika na kung saan mga web page ay nakasulat. Ito ay hindi isang programming language. Walang mga pag-andar o loop o kundisyon. Ito ay isang markup language, pati na rin ulit makita ngayon, na nagbibigay-daan sa iyo upang tukuyin ang kung paano buuin at stylize aesthetically isang web page. Kaya ito ay ang isa at tanging page namin talaga tumingin sa, kung sa madaling sabi, sa Lunes. At makapansin ng ilang kapansin-pansin na katangian. Marami ng mga bukas na naka-anggulong bracket at malapit naka-anggulong bracket. Sa pagitan ng mga naka-anggulong bracket mga salita. At kami ay pagpunta sa simulan pagtawag sa mga salitang iyon tag. Kaya bukas bracket ulo at closed bracket ulo ang mga bukas at closed tag, o ang mga tag ng pagsisimula at pagtatapos ayon sa pagkakabanggit, ng isang elemento ng HTML, dahil kakailanganin tumawag namin ito, na tinatawag na ulo. At sa parehong nalalapat magulong pag-uusap sa katawan sa HTML at iba pa. At kung ano ang magaling ay HTML-- at sa katunayan, kami ay gastusin lubha maliit na oras sa ito, dahil makikita mo karamihan lang malaman kung ano ang Nagtatampok ito ay may kapag aktwal na magkaroon ng isang kongkreto problema sa solve-- makikita mo na isang browser ay medyo pipi. Lamang ito ng pagpunta sa do-- hindi hindi katulad isang computer-- kung ano ang iyong sasabihin nito. At kaya kapag mayroon kang bukas bracket HTML sa itaas napaka doon, na mahalagang Nangangahulugan lamang, hey, browser, dito ay isang web page na nakasulat sa HTML. Kapag nakikita ito ng bukas na bracket ulo, na nangangahulugan lamang, hey, browser, dito ay ang ulo, o ang pinakamataas na bahagi ng aking web page. Kapag nakikita ito ng isang closed bracket ulo, na nangangahulugan lamang, hey, na ito para sa ulo. Standby para sa ibang bagay. At na ibang bagay ay sa malas pagpunta sa maging sa katawan. At kapag wala kang isang tag, tulad ng ikaw ay halo, kuwit, mundo, na lamang ang magiging mga raw na teksto na sa huli ay ipinapakita sa screen. Ngayon, mapapansin mo masyadong ang indentation dito. Maaari mong marahil magpakilala kung paano namin stylizing ito. Sa bawat oras na buksan ko ng tag, kaya upang makipag-usap, mag-indent ko. At sa bawat oras na isinara ko ang ng tag, ko i-un-indent, katulad sa espiritu sa kulot tirante. At higit pa na, uri ako ng gumagamit ng aking paghatol. Abiso na hindi ako nag-abala sa pagpindot Ipasok sa loob ng na tag na pamagat. Bakit? Well, nagpasya ko lang ang hitsura nito ng maliit na mas malinis sa akin, ang mga tao, upang hindi mag-abala lang ginagawa iyon. Kaya muli, mayroong ilang mga paghatol na tawag lamang tulad ng doon ay nasa C o anumang wika. Ngunit mapansin Masyadong na ito indentation lends mismo sa isang sakit sa modelo, hindi sa paglipas ng makapagpalubha ito. Ngunit isang puno, tama? Kung sa tingin mo ng isang web pahina, tila nakasulat na tulad nito, bilang mabuti naka-indent na paraan, maaari mong halos isipin ang bukas bracket HTML closed bracket tag na ito ay demarcating ang root ng isang node, isang pamilya puno style na node sa istilo ng mga puno tumingin kami sa huling Biyernes. At sa katunayan, mayroon kami sa kanan dito kung ano ang makikita namin tumawag sa isang DOM, D-O-M, dokumento object modelo, isang magarbong paraan ng pagsabi isang puno na kumakatawan na HTML. At mapansin na HTML ay, makikita namin sinasabi, tulad ng isang pamilya tree, dalawang bata. Sa kaliwa ay ang ulo. Sa kanang ay katawan. At tulad ng walang kahulugan pag-iisip ehersisyo, ulo, siyempre, ay kung gaano karaming mga bata ayon sa istraktura na ito? Kaya lang, title-- at iyon ang dahilan kung bakit mayroon kaming ang arrow ng pagpunta mula sa ulo sa pamagat. Kaya kahit na ang taong iyon sa puno ng pamilya ay may lamang isang supling. At pagkatapos ay ang pamagat mismo maaari ay nagsabi na magkaroon ng masyadong bata. Isipin na ang HTML ay may kumusta, kuwit, mundo sa ilalim nito. At lamang ko na iginuhit ito sa loob ng isang hugis-itlog sa halip ng isang parihaba lamang ihatid magkakahulugang na kahit ito ay isang node sa tree, kaya upang magsalita, ito ay isang uri ng sa panimula naiiba. Ito ay hindi isang tag. O higit pang maayos, hindi isang elemento. Ito ay lamang ng isang tekstong node, kung habilin sa iyo. Ngunit ang mga ito ay ganap na di-makatwirang tao balarila. Ito ay ngayon lang ang aking paraan ng na kumakatawan sa kung ano ang idedetalye ko ang isang pinagsamang tawagan ang dokumento. At bilang isang bukod, ang mga bagay sa ang sobrang kaliwang tuktok na sulok, bukas bracket exclamation point doc uri ng HTML, ito kamukha ng tag, ngunit ito ang ugok sulok kaso kung saan na lamang doon, kopyahin at ilagay upang ipahiwatig ang mga browser ito ay HTML bersyon 5. Pinapanatili Ang mundo sa pagbabago ng kung ano ang unang linya ng code sa isang pahina ay dapat. Ito ay nangangahulugan lamang na bersyon 5. Kaya ito ay hindi pa gaanong katulad ng iba. Ang lahat ng mga karapatan, kaya may na sinabi, makikita mo na ngayon Pinahahalagahan ang patas na ito ugok tattoo isang tao Nakakuha. [Tawa] David J MALAN: Lahat ng karapatan, at ngayon sabihin aktwal na dive sa paggawa ng isang bagay na may ito. Makikita mo isipin na huling beses Ako nagbukas ang CS50 Appliance at ginawa ko ng isang bagay bilang simple ng pagbubukas up gedit. At na-save ko ang file kahit na sa aking desktop-- wala kahit saan special-- bilang hello.html. Kaya hayaan mo akong gawin iyon again-- hello.html ang Enter. At ngayon sa file na ito, pupuntahan ko sige at ginagaya kung ano ang namin lamang saw-- doc uri ng html Pagkatapos ay pupuntahan ko gawin bukas bracket html closed bracket. At pagkatapos ay ako pagpunta sa preemptively buksan at isara ang tag. Bakit? Para lang hindi ko makalimutan mamaya. Ito ay mahusay na kasanayan lamang, tulad ng pagbubukas at isara ang kulot brace ang lahat nang sabay-sabay. At pagkatapos ay kung ano ang dumating sa tabi? Maaari mong isipin na ang tattoo. Madla: ulo Ang. David J MALAN: ulo Ang. At pagkatapos in dito, ako Nagkaroon ng pamagat, sa tingin ko. At ang pamagat ay nagkataon, kumusta, mundo malapit pamagat. At pagkatapos ay down na dito, katawan, ng course-- pagkatapos isara namin ang tag katawan. At pagkatapos lamang medyo redundantly, Ako ang nasa parehong bagay down na dito. Kaya inaangkin ko na ito ay isang web page. Ito ay isang bagay na maaaring mabuhay ngayon sa web, kahit na siyempre, ito ay literal na naninirahan sa aking desktop ngayon. Ngunit sa katunayan, kung i-minimize ko gedit, Makikita ko bang makita sa aking desktop icon nito. Kahit na ito ay ang appliance, maaari mong gawin ito sa Mac OS walang TextEdit o Windows sa Notepad kahit. At kung pumunta ako magpatuloy at i-double-click na kahit na, at select-- rin, sabihin Hindi piliin na dahil Hindi pagbubukas ng Chrome ang. Sabihin sige at buksan ang Chrome. At pagkatapos ay gawin Command-O para bukas At mag-navigate sa aking desktop at buksan ang file na iyon. Iyon ay kung paano binibigyang-kahulugan ng isang browser HTML, itaas hanggang sa ibaba, kaliwa papuntang kanan. Uy, browser narito ang HTML. Narito ang ulo. Narito ang pamagat. Narito ang katawan. At sa katunayan, ito ay kung paano ito ay nag-render na web page. Ngunit mapansin ang URL. Wala sa mga na maaari mong makuha ang partikular na ito pahina sa iyong laptop ngayon, kahit na sa loob ng iyong appliance sa pamamagitan ng URL na iyon, dahil ang file: // nagpapahiwatig ito ay talagang sa aking file system, ang aking hard drive, hindi sa iyo. Kaya ito ay hindi lahat na kapaki-pakinabang. Ilipat ngayon papunta sa Hayaan gamit ang isang aktwal na web server. At ito ay lumiliko ang CS50 Appliance ay higit pa sa isang kapaligiran kung saan maaari mong isulat ang C code at sumulat ng libro at patakbuhin ito tulad ng na-paggawa. Ito ay din configure ng kawani na kumakatawan sa isang tipikal na web server na sa internet, isa na maaari mong bayaran para sa o isang bagay na sa tinatawag na ulap. At ito ay tumatakbo karaniwang libreng open source software, halimbawa, ng isang bagay tinatawag na Apache, na marahil pa rin ang pinaka-popular na web server software sa mundo na libu-libong mga website ang gumagamit ngayon. At kahit din itong software tulad ng MySQL, kung saan ay isang server ng database na makikita sa huli namin sa, na kung saan ay lamang na sabihin Maaari ba akong magsimula pagpapagamot aking appliance tulad ng isang ganap na nasimulan server na hindi ako magbabayad para sa ibang lugar. Ito lamang ang nabubuhay sa aking sariling laptop para sa mga layunin ng pag-unlad at kaginhawaan. Kaya sabihin sige at samantalahin na ito. Pupunta ako sa magpatuloy at buksan ang isang terminal na window. At ako pagpunta sa sige at move-- talaga, una ako pagpunta upang mag-navigate sa aking desktop. Kung gagawin ko l, mayroong hello.html. At ako pagpunta sa pumunta Magpatuloy at simulan ang paggamit ng isang bagong direktoryo hindi namin hindi ginagamit bago ngayon. hello.html-- Pupunta ako sa ilipat sa ../vhosts para sa virtual na hosts-- higit pa sa na sa future-- at pagkatapos ay sa isang direktoryo na tinatawag na localhost, kung saan ay ang palayaw na ibinigay sa halos sa anumang computer, kahit na ito ang isang Mac, PC, o Linux na computer, at pagkatapos ay partikular sa isang direktoryo na namin, ang mga kawani ay nilikha para sa iyo kapag -download mo ang appliance na tinatawag na pampubliko. At bilang nagmumungkahi ang pangalan nito, kahit ano Naglagay ako sa folder na ito, sa teorya, ay pagpunta sa ngayon pampubliko, ng hindi bababa sa mga tao na may isang direktang koneksyon sa aking computer. Kaya ngayon hayaan mo akong sige at gawin cd sa na parehong directory kaya ang maaari kong makita kung ano ang nagaganap at uri ng l. At sa katunayan, iyon ang tanging bagay sa doon. Inaangkin ko na ngayon na dahil inilagay ko ito -file hello.html sa loob ng isang direktoryo tinatawag na pampublikong sa loob ng isang direktoryo tinatawag na localhost sa loob ng isang direktoryo tinatawag na vhosts, na salamat sa staff CS50 Na-pre-configure upang maging ang root ng iyong web server, Ko sana ngayon gawin ito. Pupunta ako upang buksan ang isang bagong tab. At ako pagpunta sa pumunta hindi mag-file: //. Pupunta ako upang magamit ang aktwal na http / localhost, na muli, ay ang palayaw para sa aking sariling server. At pagkatapos ay ako pagpunta upang pumunta sa kung ano ang -file pangalan, upang maging malinaw lang? Saan marahil pagpunta ay ang kwentong ito? hello.html. Kaya sa ibang salita, gusto kong ngayon na ito ang aking sariling computer, ang aking sariling appliance, parang ito ay isang aktwal na server. Palayaw nito ay localhost. Ngunit sa tingin ng localhost bilang tulad ng Facebook.com google.com, kahit ano. Ito ay lamang ang aking lokal na pangalan. At pagkatapos ay ang panghuling nais ko ay nasa root ng hard drive, kaya upang magsalita, o sa root ng web server, samakatuwid ang forward slash at pagkatapos ay ang pangalan ng file hello.html. Hayaan akong mag-zoom out at pindutin ang Enter. At sa katunayan, mayroong aking web page sa ngayon. Kaya ito ay bahagyang naiiba. At tulad ng underwhelming. Ito ay ang lumang bersyon. Hayaan akong lumiit ang font pabalik. Ito ang gulang. Ito ang bago. Ngunit ano ang nangyayari sa panimula ngayon ay ang HTTP ay ginagamit. Ay gawin ang isang maliit na mas malinaw o hayaan, kung habilin sa iyo, ang kaunti pa kumplikadong. Hayaan akong pumunta sa kanang ibaba sulok ng aking appliance. At mapansin na ang lahat ng ito oras, mayroong naging isang numero. Iyon ay ang natatanging address ng iyong CS50 Appliance. Ito ay isang pribadong address, bilang ipinahiwatig sa pamamagitan ng 172.16, na nangangahulugan lamang mo lamang pisikal na Maaaring i-access ng web server na ito. Lahat ay firewalled at mabuti protektado mula sa ibang bahagi ng mundo dahil sa pagtugon. At mapansin na ngayon kung pumunta ako sa address na ito, hindi sa aking appliance, ngunit sa Mac OS-- ako pupunta upang bumalik sa paglipas dito. Ito ang aking Mac ngayon. At ngayon pupuntahan ko upang buksan up ang bersyon na ito ng Chrome dito. At ako pagpunta sa pumunta sa http: //172.16.25 / At nakakalimutan ko ang rest-- 133. Kaya ako pupunta upang bisitahin ang mula sa aking Mac na IP address /hello.html ang Enter. At ngayon nakikita ko mula sa aking Mac na ang aking CS50 Appliance, kung sino ang IP address ay na numero, ay sa katunayan gumagana tulad ng isang web server sa internet. Hindi nito ay may magandang madaling tandaan pangalan tulad ng Facebook.com, ngunit ito ay gumagamit ng HTTP sa malas, kahit Chrome ay uri ng Pinasisimple ng mundo para sa atin ngunit sa amin hindi nagpapakita ng HTTP. Ngunit ito ay eksaktong na sa katunayan. Ay sine-save lamang ang Chrome ng ilang keystroke mga araw na ito. At iyon ang nakikita namin ngayon. Kaya na ang lahat ng fine at mabuti. Ngunit ito ay isang medyo underwhelming pahina. Hayaan akong pumunta sa at gawin ang isang bagay isang maliit na iba't ibang ngayon. Kaya hayaan mo akong bumalik sa gedit. At sa halip na si, mundo, maglagay ng isang imahe ipaalam. At na-claim ko mula sa before-- ipaalam sa akin pumunta sa publiko ang aking direktoryo ng localhost. At ipaalam sa akin sige at kopyahin ang isang buong bungkos ng mga file mula ngayon mula sa aking mga folder Dropbox sa dito. Ngayon kung nagta-type ako l, hanapin sa lahat ng mga file na ito na ipinamahagi ko ang ng website kurso sa maaga sa ngayon, isa rito ay hello.html pa rin. Kaya mayroong isa na iyon. At maalala muli ang isang walang isip mula sa huling time-- cat.jpg. Kaya hayaan mo akong subukan na i-embed cat.jpg sa loob ng aking web page. Pupunta ako sa sige at gawin cat.jpg, i-save. Hayaan akong bumalik sa Chrome. At hayaan mo akong mag-zoom in sa Font at ngayon i-reload. Oops, kung saan ko bang ilagay ito? Standby-- Mayroon akong pa rin ang lumang bersyon mula sa aking desktop nakabukas. Kaya hayaan mo akong pumunta sa aking vhost, aking localhost, aking pampublikong, at hello.html. Kaya ngayon hayaan mo akong sige at Sabihin cat.jpg sa loob ng katawan kung saan ako gusto mo itong maging ipinapakita at i-reload. Siyempre, hindi ito tama. Kaya kailangan kong sabihin sa browser ng kaunti higit sadyang kung ano ang gusto ko ito gawin. I-type ang pangalan ay Malinaw na hindi sapat. Kaya isipin na nagkaroon ng isa pang tag, imahe, img para sa maikling. Iyon ay dahil lamang tao hindi gusto ang uri ng buong salita. At pagkatapos ay maaari naming gawin pinagmulan = "cat.jpg". At ngayon ako pagpunta sa gawin iba't ibang isang bagay dito. Kahit na ang lahat ng ang aming mga tag kaya ngayon ay may nagkaroon ito paniwala ng isang simulan tag at isang end tag, na hindi talaga gumawa kahulugan para sa isang larawan, i-right? Isang imahe ay alinman sa may o hindi doon. At upang ang mga tao na dumating up sa isang mas simpleng convention. Kapag mayroon kang isang tag na maaari kapwa magsimula at magtapos sa parehong time-- maaari itong walang laman, kaya upang speak-- lamang ilagay ang forward slash sa loob ng na tag sa dulo. Ngayon hayaan mo akong bumalik sa aking browser. Pindutin ang I-reload ang mapahamak, isang bagay na mali. Marahil ay nakita mo na ito paminsan-minsan sa web, kahit na hindi ito naging iyong kasalanan. Ito ay kasalanan ng server ng web. Ano odes mukhang ito upang ipahiwatig? Ito ay nasira. Iyon ay kung saan ang imahe ay pagmamay-ari. Oo? Madla: Ngunit hindi May access ang mga imahe. David J MALAN: Ito ay hindi May access ang mga imahe. Iyon, o kahit na mas masahol pa, marahil hindi ito kahit na umiiral. Makita kung hindi namin maaaring i-diagnose natin iyon. Isipin mula sa huling panahon na kung sa Chrome, sa appliance, o kahit na sa iyong Mac o PC, pumunta ka sa menu ng Nag-develop at pumunta sa Mga Tool ng Developer pagpipiliang ito, na malamang na ikaw ay hindi gaano karami o kailanman ginamit. At kung pumunta ako sa network at i-reload ang pahina, ang aktwal na tingnan ang HTTP ipaalam mga hiling na ginagawa. Mukhang hello.html ay sa katunayan OK, samakatuwid ay ibinigay ang 200. Ngunit cat.jpg ay isang 403. Kaya ito ay hindi isang 404. Marahil ay umiiral ang file. 403 Ibig sabihin ipinagbabawal. Kaya ito ay isang maliit na nakalilito. Pupunta ako sa bumalik sa aking terminal na window. Hayaan akong mag-zoom in dito. At hayaan mo akong gawin ang isang l. Mayroong mga parehong file. Ngayon ipaalam sa akin gawin ang isang l-l, kung saan ikaw ay malamang na ginamit bago ang upang tingnan ang file laki siguro o timestamp. At nakita namin ang maramihang mga napakatinding impormasyon. Ngunit mapansin ang ilang mga detalye. Narito ang hello.html sa Ang hilera dito at narito ang cat.jpg. At ito ay lamang ng appliance pagiging friendly na sa pamamagitan ng pag-highlight ng JPEG ng user sa mga lilang tulad nito. Ngunit ano pa ang ibang tabi ang laki ng file at ang pangalan ng file? Madla: [hindi marinig]. David J MALAN: Oo, may dalawa pang R sa paglipas dito. Pansinin kung ano ang pagpunta sa hello.html. Kaya ito ay lumiliko out na ang pangalan ng pampublikong direktoryong ito ay mahalaga. Anumang bagay sa direktoryong ito ay sinadya upang maging pampublikong. Pero hindi sapat upang i-drop lamang ang file sa doon. Kailangan mo ring baguhin ang paraan ng mga file, baguhin ang mga pahintulot ng ang file upang maagap na hindi maging default ang setting na ito, na kung saan ay na ako lamang ang makakabasa at isulat ito, ako pagiging may-ari. Gusto ko ng buong mundo ang lahat sa makakabasa aking file, kaya na magsalita. Magbasa nangangahulugan lamang tingnan ito. At sa katunayan, bilang makikita mo sa problema -set pitong, na kung ano ang ibig sabihin ng mga R ni ang. Hayaan masama ni Ang dalawang R lahat tao sa mundo basahin din ito, lalo na ngayon na ito ay nasa direktoryong ito. Kaya ang pinakasimpleng paraan upang ayusin ito ay upang pumunta sa aking prompt at gawin chmod para sa pagbabago mode at pagkatapos ay gawin ang isang + r, sama-sama, lahat, lahat, pati r para nabasa na, at pagkatapos ay cat.jpg ang Enter. Wala mukhang mangyayari, na Karaniwan ay nangangahulugan ng isang magandang bagay. Kaya l-l again-- ngayon Tingnan natin ang cat.jpg ipaalam. At ang pahintulot na ito mukhang ay nagbago. Bilang isang bukod, kung gumawa ka ng pagkakamali at mo, halimbawa, ginawa lamang your-- Hindi ko know-- sanaysay -access ng publiko sa pamamagitan ng aksidente, maaari mong gawin ang tapat, chmod isang-r. Kahit na lantaran, hindi ito dapat nasa pampublikong direktoryo gayon pa man kung iyon ang pag-aalala. Kaya ngayon sabihin bumalik sa ang aking browser at i-reload. At ako pagpunta sa i-click ang ang maliit na Ghostbusters simbolo upang i-clear ang bahaging iyon ng screen upang maaari naming makita ang mga bagong kahilingan. At sa katunayan, narito ang Grump Cat mula sa bago. Ngunit higit sa lahat, technically, mayroong ang numero 200, na ibig sabihin namin nakuha ko ang OK. Ang lahat ng mga karapatan, sa gayon na ang lahat ng fine at mabuti. Ngunit hindi namin ginagawa ang pinakamahusay na mga website, at hindi rin kami makapupunta upang subukan masyadong mahirap gawin ang fanciest ng mga website ngayon. Ngunit sabihin ng hindi bababa sa gawin ang isang bagay sobrang pamilyar bago dumadagundong -off ang ilang iba pang mga tag. Kaya ipagpalagay na hindi ko nais lamang ng pusa dito. Ipagpalagay na talaga ko gusto ito pusa mag-link sa isang bagay. Maaari ko, halimbawa gawin ang isang bagay na katulad nito. isang anchor para sa href para sa hyper reference equals-- at hayaang gawin ni lamang ng isang bagay tulad ng www.google.com malapit Ilagay sa mga sipi malapit bracket. At ngayon maghanap ng mga pusa. Isara ang anchor tag. Kaya ito ay may lamang ng isang pag-uuri sa panimula ng bagong detalye. Ang tag na siyempre, ay naiiba. Ito ang pangalan ng isang anchor para sa href o hyper sanggunian. Ngunit higit sa lahat, mayroong ito syntactical tampok dito. Ito ay kung ano ang makikita namin simulan ang pagtawag Hindi isang tag, ngunit isang katangian. At isang attribute ay isang bagay na Binabago ang pag-uugali ng isang tag. At ito katangian, href, paraan baguhin ang pag-uugali ng anchor upang kapag-click ito, ito pupunta sa URL na ito dito. At syempre, na URL ay Google. Samantala, ano ang na ito -text dito magiging? Well, na magiging kung ano ang aktwal na tao nakikita bilang ang nakasalungguhit link, kasing simple ng iyon. Kaya sabihin subukan ito. Hayaan akong i-save ito. Ako pa rin sa hello.html. Ngunit sa mga bersyong online, makikita mo ang ang aktwal na pangalan ng file kami pre-naghanda. Hayaan akong sige at i-reload. At ngayon ito ay isang napaka pa rin underwhelming pahina. Ngunit kung mag-hover sa ibabaw ko there-- at ito ay isang maliit na maliit, but-- maaari mong makita sa ibaba kaliwang sulok ng iyong screen, sa katunayan ito ang nangyayari sa google.com. At kung iki-click ko na, ay ito sumibad sa akin na paraan upang ang aktwal Google. Ngunit mapansin dito isang pagkakataon para sa pagsasamantala, tulad ng isang-tabi. At kami ay bumalik sa iba pang mga mga isyu ng seguridad bago ang haba. Dahil mayroong ito paghihiwalay sa dalawang bahagi sa pagitan ng kung saan ka pumunta at kung ano ang sinasabi sa iyo, maaari mong gawin ang isang bagay tulad ng this-- http://www.google.com. OK, at ngayon kung i-reload ko pagkatapos i-save ang pahinang iyon, mukhang pupuntahan ko pumunta sa Google. Ngunit walang dahilan ko kailangang pumunta sa Google, i-right? Maaari ko talagang pumunta sa isang bagay tulad ng badguy.com, i-reload ang page sa paglipas dito. At paunawa, tinitingnan nito pa rin tulad ng Google. At lamang kung ako ay matalim sapat na upang mag-hover dito ako nakakakita ng kahit ito ay nangyayari sa pumunta sa ibang lokasyon. Kaya kung sakaling mo na nakuha ng email, lalo na ng isa mula sa Paypal, o para baga mula sa Paypal humihiling sa iyo na mag-log in sa iyong account, ito ang dahilan kung bakit dapat mong hindi kailanman kailanman i-click ang link sa mga email, nang tapat, ang anumang mga link sa mga email. Kung alam mo na mayroon kang aktwal na Kumita ng pera sa Paypal o Bank ng Amerika o Fidelity o anumang website, manu-manong i-type ito. Dahil tingnan kung paano kadali na linlangin ang isang tao sa kung ano ang nagtatanghal kamukha ng isang link. Ngunit ito talaga ng dati pumunta talagang kahit saan. At mayroong malayo na mas malaki banta na ito. Sa katunayan, ito ay isang bit ng isang pasapyaw ngayon, ngunit isa sa mga pinakamahusay na mga kailanman ko nakita na dahil naisara, ay isang tao na humantong ang mga tao to-- kaya ito ay maaaring sabihing, mag-click dito upang mag-log in sa iyong account, isang bank account. At ito ay Bank ng West. Kaya bumili ito ng isang tao. At ito ay isang maliit na mas madali upang makita ang ito sa isang mono pagitan na font na naka-zoom in sa isang 30-foot projector. Ngunit kapag maliit na font sa isang e-mail na iyong natatanggap, ito mukhang bankofthewest.com, Hindi bankofthevvest.com, kung saan ang isang tao ay may bayad ng $ 10 sa bumili. At pagkatapos na ito na humantong sa kanila sa katumbas ng ilang hindi magandang website. At makikita mo ang too-- aktwal na maaari naming gawin this-- kung pumunta ako sa aktwal na website, bankofthewest.com, muli, pagpapabalik mula sa huling beses na kung ito ang kanilang mga web page at gusto mong malaman kung paano ito gumagana, maaari mong tiyak na pumunta sa Tool ng developer ng Chrome. At maaari mong makita ang lahat ng mga HTML na-format ng mabuti doon. Ngunit higit pa sa punto, cam-- mo ng isara ipaalam this-- maaari kang pumunta sa View Nag-develop Tingnan ang Pinagmulan. Bakit hindi kopyahin ko lang lahat ng na At pagkatapos ay ako maaaring pumunta sa aking maliit na gedit window dito at gumawa ng aking sariling web page. I-save ito sa hello.html. At marahil ito ay pagpunta sa masira, dahil ito ay hindi na ito madaling karaniwang. Ngunit ngayon kung i-reload ko ang aking sariling pahina sa ang aking sariling CS50 Appliance at pindutin ang reload, OK, sinira ang ilang mga bagay-bagay. Ngunit ako malapit sa katangian sa pagkakaroon ng ang aking sariling website sa pagbabangko, tama? Ang lahat ng ito HTML-- [Tawa] David J MALAN: --I Hindi actually-- at mo alam mayroong isang tao out doon na Gusto i-click ang aktwal na mga link na ito masyadong. Kaya malinaw, sinira ang ilang mga bagay-bagay. Ngunit na pupuntahan humantong amin sa isang talakayan, hindi kinakailangan sa ngayon, tulad ng sa kung ano ang CSS, cascading style sheet, hindi, at kung paano mo talaga i-download ang iba pang mga file na HTML at JPEG file GIF mga file na Maaaring paggamit ng website. Ngunit lahat ng iyon ay accomplishable. Ngunit ito talagang kahulihan babagsak ito upang mga napakasimpleng heuristic. Kaya magparaan ng basa lamang sa pamamagitan ng ngayon hayaan ilang mga iba pang halimbawa ng HTML lamang upang mabigyan ka ng ideya ng kung ano pa ang maaari mong gawin. Halimbawa, ito ay list.html. Ipagpalagay na Nais kong gumawa ng isang web page may isang listahan ng mga bahay sa patyo sa loob. Maaaring gamitin ko ang ul tag para sa unordered listahan at pagkatapos ay ang bata item sa listahan at pagkatapos ay umulit over-- o listahan, rather-- ang bahay na pinag-uusapan. At kung buksan ko up, na gawin ito ipaalam. Tara na hindi hello.html, ngunit upang list.html. Diyablo. Paano ko ito aayusin? Ito ang parehong isyu tulad ng dati, tama? Kaya ipaalam sa akin gawin chmod-- oops-- chmod isang + r ng list.html. At ngayon kung pumunta ako pabalik sa aking browser at i-click ang I-reload, mayroong ito. Kaya kung sakaling mo na nais na gumawa ng mga isang Naka-bullet na listahan, maaari mong gawin iyon. Kung nais mong maging sobrang fancy at gumawa ng mga isang order na listahan, hindi isang unordered listahan, baguhin ang mga mag-ol, i-reload ang pahina, at ngayon ang browser na bilang ito para sa iyo. Ano pa ang maaari naming gawin? Well, isang pares ng mga others-- kung na kailangan mahaba ang mga talata ng text-- halimbawa, ang ilang mga Latin teksto tulad ng this-- at gusto mo sa hiwalay na mga talata, bukas p malapit p para sa tag na talata. At gawin itong muli at muli. At kung buksan ko ngayon up ang file na ito, paragraphs.html, na rin, ito ay nakakakuha ng nakakainis. Kaya ngayon hayaan pumunta lamang ni pabalik sa aking prompt, chmod isang + r r star .html-- gandang maliit na ligaw card upang magsalita. Dapat itong ayusin ang lahat ng ang mga problemang ito para sa akin. Ni-reload Hayaan. Mayroong tatlong mga talata. At ngayon sabihin sige at buksan ang isang iba pa. Paano tungkol sa talahanayan? Mapapansin mo na tingin talahanayan mas kumplikado nang kaunti. Ngunit ito ang parehong idea-- buksan ang tag, buksan ang tag, bukas, bukas, bukas, isara ang tag na ito, buksan ang tag. At ang mga mangyayari sa panindigan talahanayan, na ang hangganan ay tila pagpunta sa maging isang kapal 1-- anumang na hilera means-- talahanayan, talahanayan data, na nangangahulugan na ang isang cell. At kung pumunta ako pabalik sa aking browser dito at pumunta sa table.html, Maaari mong makita ang isang bagay tulad nito, kakila-kilabot. Ngunit makikita namin sa punto kung saan kami maaaring aktwal gumawa ng mga bagay prettier kaysa doon. Kaya ipaalam sa akin magtadhana sa ngayon. Mayroong bunches ng higit pang mga tag. At HTML ay kahanga-hanga upang kunin ang dahil, lantaran, ang lahat ng kailangan mong gawin ay tumingin sa umiiral na mga web page kung pamilyar ka. At ikaw ay tulad ng, oh, na kung paano ginawa nila ito aesthetically. O maaari mong tingnan ang anumang mga online mapagkukunan bilang sa kung paano gumagana ang HTML, at makikita mo na mayroong isang buong bokabularyo ng iba pang mga tag. Ngunit sa simpleng sakit sa modelo mag-isa na halos anumang tag binuksan mo ang ay na sarado, ito talaga ay makasapat upang turuan ang sarili Pagkatapos maunawaan HTML mga pangunahing ideya ng mga tag at mga katangian at ang well-formedness na-usapan natin ang tungkol sa, isara ang anumang bagay na maaari naming buksan nang sa gayon ay hindi namin lituhin ang isang browser. Kaya sabihin ngayon tumagal ito sa isang mas kawili-wiling mga antas sa pamamagitan ng pagpunta sa aktwal na. At ng pumunta sa aking Mac ipaalam dito, sa google.com. Ni gawin ito at ngayon notice-- ipaalam. Ako agong upang pumunta sa Mga Setting, Mga Setting ng Paghahanap. Gusto kong i-off ang nakakainis na instant bagay na mga resulta kung saan agad itong Nagsisimula tumutugon sa iyong pagta-type. Ni gawin ito ng mas lumang paaralan upang ipaalam sa talaga namin makita kung ano ang nangyayari sa. Kaya ako pagpunta sa i-save ang aking Mga setting ng Google dito. At ngayon notice-- pupuntahan ko maghanap para sa isang bagay tulad ng pusa. At ito ang paggawa auto ay pa rin Kumpleto dito, ngunit batay sa mga bagay mga tao na-type sa nakaraan. Ngunit mapansin kung ano ang nangyayari sa mangyari. Sa URL sa sandaling ito ay ito, sa google.com lamang. At technically, ito ay slash. Ang pagse-save lamang ng Google ang isang character at hindi nagpapakita sa amin na iyon. Ang mga ito ay nagpapakita sa amin https, lamang upang maging napaka-reassuring na kami ay sa isang secure na naka-encrypt o pahina. Kaya ipaalam sa akin sige at maghanap para sa mga pusa. Ngayon ang nakuha ko talaga napakalaki mabilis. Tumingin sa haba ng URL na ito. Ngunit ito ay lumiliko out na ang karamihan ng mga bagay-bagay na ito sa URL ay talagang kaakit-akit na walang silbi. Pupunta ako upang simulan ang pagtanggal bagay na hindi ko maintindihan. Nakakakita ako ng pusa. Nauunawaan ko ang mga pusa. Hindi ko alam kung bakit pusa ang naroon muli. Ko talagang hindi alam kung ano ang bagay na walang kapararakan ay. Kaya ako lamang ang pagpunta sa panatilihin -highlight at pagtatanggal ng mga bagay-bagay na hindi ko maintindihan, panlinis ang URL sa lamang ito. Ngayon hayaan mo akong makakuha ng muling ipasok. Mukhang gumagana pa rin ang Google. Kaya para sa ilang mga dahilan, sila ay nagdaragdag ng isang maraming mga bagay-bagay na sa pamamagitan ng default ang kanilang mga URL. Ngunit ito ay hindi mahigpit na kinakailangan. Kaya kung ano ang maganda tungkol dito? Well, hayaan mo akong sige at buksan ang Inspektor ng Chrome. Mayroong isang maliit na shortcut ng mouse para dito. Pumunta sa tab na Network. At ngayon hayaan mo akong i-reload pahinang ito nang isa pang beses. At ako na may hawak na Shift. Bilang isang bukod, browser malamang na-cache o i-save impormasyon lamang alang-alang sa kahusayan ng. Ngunit kadalasan, may hawak na Shift at -reload ay pipilit lahat upang magsimulang muli mula sa simula. At iyon ang gusto kong gawin dito. At mapansin ang lahat ng mga hilera na lamang lumitaw. Ito ay lumiliko out na sa anumang ibinigay na web pahina, doon ay maaaring maging lamang ang isang file involved-- hello.html-- o may ay maaaring maging 52, tulad ng sa kasong ito. Kapag binisita ko ang google.com, sa malas, ang aking browser kicks off ang 52 hiwalay na mga kahilingan ng HTTP. Bakit iyon? Well, tingnan kung ano ang nasa loob ng ng pahinang ito ang mga web tuktok. Mayroong hindi lamang ng teksto, ngunit mayroong mga aktwal na larawan ng mga pusa sa ibabaw sa kanan. May mga makukulay na logo dito sa kaliwa. Mayroong ang lahat ng mga icon na ito para sa isang mikropono at iba pa. Marami ng mga piraso, pagbuo bloke, scratch piraso, kung habilin sa iyo, sa web page na ito. At kung ano ang ginagawa sa mga browser pagkuha ng pinakaunang file, na ay ang hilera dito, ito ay mahalagang iterating sa tuktok ng HTML hanggang sa ibaba, kaliwa papuntang kanan, naghahanap mga bagay tulad ng mga tag na imahe o iba pang mga tag na pagbanggit iba pang mga file at kapag nakikita ang mga ito, napupunta at kinukuha ang mga ito sa pamamagitan ng HTTP, praktikal buong sobre talinghaga, at pagkatapos ay ipinapakita ang mga ito sa naaangkop na lokasyon sa web page. Ngunit mapansin dito kung tumuon ko sa ang unang hagis, paghahanap pusa, mapansin na, sa katunayan ito gamit ang HTTP 1.1. At sa kasamaang-palad, ang Google Chrome ngayon sa bersyon 39 ay uri ng dumbing bagay down at Hindi lumalabas sa amin ang aktwal na header. Ngunit kung ano ang talagang ipinadala ay isang kahilingan para hindi mabawasan nang malaki, ngunit / search? q = pusa. Ngayon, kung bakit ay na mahalaga? Well, pupunta ako sa magpakilala mula sa na kung ang Google Sinusuportahan ng mga query ng form na ito, bakit hindi ako ipatupad ang aking sariling paghahanap engine para sa CS50, ngunit lamang ang front pagtatapos, lamang ang graphical interface ng gumagamit. At kami outsource dulo pabalik, Mga resulta ng aktwal na paghahanap sa Google. Kaya kung paano ang maaari kong gawin? Well, hayaan mo akong pumunta sa gedit sa paglipas dito. At ipaalam sa akin sige at buksan up, sabihin nating, isang bagong file. At ako pagpunta sa i-save ang Pansamantalang bilang search-0.html. At pagkatapos ay i-kalaunan, kami ay mabilis inaabangan ang panahon na ang isa ko pre-naghanda. At pupuntahan ko mabilis na gumawa ng uri ng doc html bukas bracket html malapit bracket html. Pagkatapos ako pagpunta sa gawin ulo malapit head CS50 bukas pamagat Maghanap sa halip ng paghahanap sa Google. Down dito ako pagpunta sa may ng katawan, pababa dito malapit katawan. At ngayon ay kailangan ko CS50 Paghahanap. At talagang, sabihin bumuo ito nang paunti-unti. Pupunta ako sa magpatuloy at isara ito at talagang ilagay ito sa aking pampublikong direktoryo. Kaya ninyo akong bigyan lamang ng isang sandali. search-0.html-- pupuntahan ko temporally tawagan ito search.html. Pupunta ako sa chmod ito ng + r search.html. At ngayon ako pupunta upang buksan ito. Ang lahat ng mga karapatan, sa gayon ay mabilis. Ngunit ang layunin lamang ay upang makakuha ng sa amin sa punto ng pagkakaroon ang text na ito -file na tinatawag na search.html. Kaya hindi magkano upang tumingin sa pa. Sa katunayan, kung pumunta ako sa aking browser, at pumunta sa search.html, na ang lahat ng ito ay. Ngunit alam mo kung ano? Maaari ko bang maging isang maliit na may interes. Nabasa ko sa isang libro na may isang heading na tag na tinatawag na h1. At ako pagpunta sa sige at gamitin na bukas h1 at malapit h1. I-reload ang pahina. At ngayon ito ay mas malaki at mas agresibong, hindi lahat na kawili-wili, ngunit hindi bababa sa ito structurally mas kawili-wiling. Ngunit ngayon hayaan mo akong ipakilala ang isa pang tag. Ito ay lumiliko out mayroong isang form na tag. At hayaan mo akong isara ang tag na iyon. At ito ay lumiliko out doon ni isang input tag na May isang katangian na tinatawag na uri, na ang uri ng data ng patlang, kung habilin sa iyo. At ay magiging ng uri ng teksto. At ang halaga nito ay pagpunta maging CS50 Paghahanap. Isara ang tag. At doon ay magiging walang mga kuru-kuro ng pagbukas at pagsara na may hiwalay na mga tag. Hayaan akong bumalik sa paglipas dito at tingnan kung ano ang nangyayari sa, i-reload. Pagkuha ng mga kagiliw-giliw. Mukhang ito ay isang patlang ng teksto. At talagang, hindi ko gusto maglagay ng halaga doon pa. Hayaan akong bumalik dito at talagang makakuha ng mapupuksa ang halagang ito upang panatilihin itong simple. Sa halip na isang halaga, ano ang Nais kong upang bigyan ang bagay na ito ay isang pangalan. At hindi ko alam kung ano ito ay, kaya ako bumalik sa iyon. Ngunit sa ibaba na, gusto ko gawin uri ng input = isumite. At ang halaga na ito ay magiging CS50 Paghahanap. At kami makita kung bakit ako Inilipat ang halaga na ito. Kapag i-reload ako, tila kong ngayon ay may ang Beginnings ng aking sariling paghahanap engine, sobrang kahindik-hindik, kahit na lantaran, ito ay hindi malayo hagis mula sa kung ano Mukhang default na pahina ng Google tulad ng. Kung pumunta ako dito ngayon, maaari ba akong mag-type sa pusa at sana ay i-click ang Search. Ngunit ako hindi pa pa tapos, dahil hindi ko na ipinatupad, malinaw naman, isang database. Hindi ko pa na-crawl ang web para sa mga resulta ng paghahanap. Kaya kailangan kong outsource na sa Google. Kaya kung paano ang gagawin ko ito? Well, una sa lahat ako Kailangan mong idagdag at pagkilos ipatungkol sa aking form na tag na ay http://www.google.com/search. At alam ko na lamang mula sa pagkakaroon ng natukoy na sa pamamagitan ng pagtingin malapit sa kanilang mga URL. At ngayon kumuha ng isang hula. Ano ang dapat na malamang na patlang ng teksto na ito tawagin, batay sa kung saan kami ay dumating mula sa dati? Madla:? Q. David J MALAN:? Q. At hindi namin talaga kailangan tanong markahan ito lumiliko out, ngunit q nga ito, q para sa query marahil sa pamamagitan ng default, lamang dahil iyon kung ano ang Larry at Sergey dumating up sa taon na ang nakakaraan. Kaya ngayon hayaan mo akong i-reload ang pahinang ito. Hindi ito tumingin lahat ng iba't ibang iyon. Ngunit ngayon panoorin kung ano ang mangyayari. Kung nagta-type ako sa pusa at pag-click CS50 Paghahanap at palayain, napansin ko whisked layo sa aktwal na Google. Ngayon, ang Google ay pagiging isang maliit na nakakainis sa na ang mga ito ay appending isang karagdagang parameter, kung habilin sa iyo, sa URL. Iyon lang ang nangyayari Awtomatikong sa Google panig. Ang mahalagang bahagi ay na mukhang ako nag-nabuo dito ang kahilingang ito. At sa katunayan, iyon ang mangyayari. Kapag mayroon kang HTML na Mukhang ganito, ito ay isang uri ng pagtatanda ng mga web developer para sa sinasabi, sige at lumikha ng isang form na kapag ito ay isinumite, ito ay pagpunta sa pumunta sa URL na ito. At kapag ang mga URL na ibinigay halaga para sa mga bagay tulad ng q, huwag pumunta lamang sa URL na ito. Sa totoo lang, pumunta sa tanong mark at pagkatapos q = pusa. Ikabit ang parameter, ang HTTP parameter tulad na. At upang maging napaka-tumpak na lang, kung ano ang natukoy na here-- ngunit makikita ko maging mas explicit-- ay na ang paraan na gusto kong gamitin ang ay makakuha ng, sa halip ng isang bagay tulad ng post, na magpapadala kami ay makakita. Kaya sa maikling, sa pamamagitan lamang ng pag-unawa HTML at paggamit ng ilang mga medyo simpleng tag, maaari naming ngayon umpisahan ang paggawa ng ating sariling front end user interface ng paghahanap engine likod nito. Ngunit ito siyempre, ay medyo kahindik-hindik. Kaya ipaalam sa akin aktwal na buksan ang isang bahagyang mas mahusay na bersyon. Ito ang isa ihanda in ako -advance na may ilang mga komento. Ngunit makikita mo na ako halos recreated ito. Kaya ito ay magagamit online. At ako nag mangyayari sa preemptively pumunta sa https lamang upang panatilihin itong simple. At ni buksan up ng isang ngayon hayaan susunod na pag-ulit ng mga ito. Ay bersyon 1 sa halip na 0. Ano jumps out sa iyo bilang bahagyang iba't ibang sa halimbawang ito? Madla: [hindi marinig]. Oo, mayroon ang tekstong ito Ihanay center. Ito ay isang maliit na kakaiba dito. Ngunit ito ay talagang bago. At marahil hulaan kung ano ang nangyayari sa mangyari. Kung pumunta ako sa aking browser ngayon at bisitahin ang paghahanap 1.html, ito ay halos ang parehong bagay. Ngunit ito ay mas malapit sa isang hakbang upang pagiging isang kaunti pa kaakit-akit. Ito ay pa rin mainit ang ulo, ngunit prettier sa na hindi bababa sa lahat ng bagay ay nakasentro ngayon. Kaya ito ay lumiliko out na kung ano ang ginagamit ko ay isa pang wika nang sama-sama na tinatawag na CSS, cascading style sheet. At CSS, lantaran, ay uri ng, sa aking personal na opinyon, isang atrociously idinisenyo wika. Ito ay napaka-nakakainis na tandaan lahat ng mga iba't-ibang detalye. Ngunit ito ay kung ano ang stylizes buong web sa buong mundo ngayon. Nasaktan ako ng isang tao. Lahat ng karapatan. Kaya sabihin bumalik dito at tingnan kung paano talaga namin ginagamit ito. At ito ay lumiliko out, hindi bababa sa ito ay talagang isang medyo simpleng wika. Ito ay lamang ang mga pangunahing mga pares ng halaga, mga katangian ng at halaga, mga katangian at halaga. Sa katunayan, dito ay isa tulad ng ari-arian at halaga. Sa pamamagitan lamang ng paggamit ng estilo ipatungkol sa aking katawan tag at pagbibigay ito ng isang halaga ng isang tutuldok salita at ng isa pang salita, o isang ari-arian at ng isang halaga, Maaari ko bang makakaapekto sa Estetika ng web page, hindi ang kinakailangang pang istraktura, ngunit ang Estetika nito. At sa pamamagitan lamang ng Googling sa paligid, Napag-alaman kong na CSS, cascading style sheet, ay sumusuporta sa isang ari-arian na tinatawag na text-align, na ang halaga maaari ay kaliwa, kanan, o center, halimbawa. Kaya ngayon kapag i-reload ko pahinang ito, ano ang nakuha ko ay isang nakasentro pahina, ngunit pa rin medyo mainit ang ulo. Sabihin sige at buksan up na bersyon 2 ng Paghahanap. At mapansin ngayon gumawa ako ng kaunti pa. Pansinin na dito sa loob ng ulo tag, mayroong maaaring maging mas mababa sa pamagat. Sa katunayan, may isang tag ng estilo. At ito ay kung saan nakakakuha ito lamang maliit na walang kaayusan nakikita CSS minsan. Abiso na mukhang kong magkaroon ng isang bagay na structurally mukhang ibang-iba. Ngunit dito ay ang pangalan ng ang tag Gusto kong inilarawan sa pangkinaugalian. Narito ang aming lumang kaibigan kulot brace at closed kulot suhay. At pagkatapos dito ay ari-arian at ang halaga nito. Kung load ko ang file na ito, search2.html, ang resulta ay magkapareho. Ngunit ito ay isang hakbang patungo sa mas mahusay na disenyo. Sa pamamagitan ng factoring out ito CSS, na hindi ko na Hindi commingled ito sa aking HTML. At sa katunayan, bilang namin makita ang, maaari ko muling gamitin ang mga katangian at halaga. Kung Nais kong gumawa bunches ng mga bahagi ng aking web page sa gitna, Hindi ko na kailangang mag-type style = text-align center sa buong lugar. Maaari ko bang ilagay sa isang lugar marahil, gusto hanggang sa tuktok. Ngunit kahit na ito ay hindi ang pinakamahusay na disenyo. Sa katunayan, ang isa sa mga bagay na matutunan mo bilang gumastos ka ng higit pa at mas maraming oras sa web programming ay ang mas maraming maaari mong modularize bagay at salik bagay out tulad ng .h file ipaalam sa amin factor bagay-bagay out, i helpers.c ipaalam sa amin factor bagay out ilang psets ang nakalipas. Katulad nito, maaari naming Gusto upang makamit ito. Kaya mapapansin sa bersyon tatlong ng search.html na hindi ko na Nalinis ang pinuno ng ang pahina at ilagay lamang sa ito, ang isang link na tag, na nasasalungat sa mga pangalan, ay hindi nagbibigay sa iyo ng isang hyperlink. Ito ay nagli-link sa isa pang file sa pamamagitan ng paraan ng isang href na halaga sa kasong ito, ay search-3.css Kaya Napag-alaman kong kami ng pagpunta mabilis. Ngunit lahat ako ginagawa uri ng paglipat ng mga bagay sa paligid. Hayaan akong bukas sa paghahanap 3.css. May ito ay, walang talagang ito. Lamang makopya ko at ilagay ito papunta sa isang bagong -file, tulad ng isinasali namin mga bagay-bagay out sa iba pang mga file bago. At ang result-- ganap underwhelming-- ay magiging eksaktong pareho. Ngunit kami ay gumagalaw toward-- hindi, hindi. Oh, alam ko kung bakit. Kaya tila na maging isang bug. At ito ay sa ilang mga kahulugan. Ngunit hayaan mo akong magbukas ng aking tab na Network. Hayaan akong i-reload ang pahina. Ah, kung bakit ninyo ay hindi inilapat sa CSS? Well, ang CSS file, katulad, ay upang maging mundo nababasa, kaya upang makipag-usap. At masyadong ay kasalukuyang ipinagbabawal. Kaya ipaalam sa akin gawin ang isang chmod isang + r ng pagbuo ng tuldok CSS-- whoops-- Ikinalulungkot namin na tuldok CSS lamang ang extension ng file para sa CSS file. Ngayon hayaan mo akong bumalik sa ang aking browser at i-reload. OK, medyo mas mahusay. Ngayon ipaalam sa akin gawin ang isa huling bagay. Sa paghahanap-4.html. Mayroon akong bersyon na naisip ko lang ay paraan mas malamig-lamig, kahit na paraan higit pa kumplikadong. Tingnan natin ang resulta ng unang Hayaan. Isara ang upang bigyan kami ng higit pang mga kuwarto. Baguhin ito upang maghanap-4, ang Enter. At ngayon ng grupo ng mga bagay ay sira. Pupunta ako sa bumalik sa aking direktoryo dito. At ngayon lang ako pagpunta sa gawin isang chmod ng + r sa isang file-- dahil alam ko ito exists-- tinatawag na logo.gif, na isang larawan. At ngayon i-reload. At wow-- kaya ngayon ako malapit sa katangian, tapat, upang gustuhin ang 1999 bersyon ng Google, at nang tapat, ang 2014 bersyon ng Google, tama? Kaya ngayon ng pagpunta sa kanilang website, sa huli, kung hahanapin ko ang mga pusa. At talagang ito ay. Ngunit ano ang gagawin ko sa ibang paraan sa bersyong ito ng 4? Kaya hindi namin panahanan ng masyadong maraming dito dito. Makikita mo ang problema sa itakda ang pitong kalaunan. Ngunit mapansin ginawa ko ang ilang mga bagay. Ipinakilala ako ng isang div tag, na kung saan ay dibisyon, katulad sa espiritu sa isang tag na talata. Ngunit isang sangay ay tulad lamang, narito ang isang hugis-parihaba invisible rehiyon ng screen. Bigyan natin ito ng isang natatanging Hayaan identifier, isang footer, lamang upang maaari naming makipag-usap tungkol sa ito sa aming HTML sa ibang lugar. Narito ang isa pang div ng pahina na kung saan ang ID ay magiging nilalaman. Ito ang nilalaman ng pahina. At dito ay ang header ng pahina. Sa ibang salita, na hindi ko na lubos sa HTML Kasama sa pag-iisip tumitingin ng web page na ito bilang tatlong bahagi, isang header up dito gamit ang invisible na parihaba, ang nilalaman sa gitna, at pagkatapos ay footer pababa sa ibaba, kahit kahit na hindi namin makita ang mga bagay. Dahil gusto kong sa aking ulo ng pahina dito, o sa isang .css file, Maaari ko bang gamitin ang syntax na ito. Header ay hindi isang tag. Ito ay isang ID kaya lumiliko out na sa pamamagitan ng paggawa #header, Maaari ko ngayon ilapat ang isa o higit pang mga mga katangian ng header. Ang maaari kong gawin ang parehong nilalaman, ang pareho sa mga nilalaman dito. Kaya halimbawa, sa footer, abiso lahat ng mga pag-aari Magdaragdag ako. At alam ko umiiral ang mga ito sa pamamagitan lamang ng pagbabasa hanggang sa dokumentasyon para sa CSS. Laki ng font ay magiging smaller-- kaya ang ilang mga kamag-anak na laki ng font. Ang timbang ay magiging bold. Margin-- kung gaano karaming mga pixels sa paligid it-- 20 pixels. At ito ang nangyayari na nakasentro. Ngunit ngayon, ganito ang hitsura ng pahina. Kung hindi ako nasisiyahan sa ang aking kopya doon, Maaari kong gawin ang isang bagay tulad ng kulay pula. At pagkatapos ay ang maaari kong i-save ito, i-reload, at ngayon inilarawan sa pangkinaugalian ko na ang footer. Kaya ito ay lamang hinting sa kapangyarihan ng kung ano ang maaari mong gawin sa isang web page upang baguhin ang mga bagay sa paligid. At kahit na mas cool na kaysa ito, kung nais mong upang sundutin sa paligid sa aktwal na mga website, hindi mo maaaring permanenteng palitan ang mga ito. Ngunit kung buksan ko up Inspektor ng Chrome muli at hindi pumunta ako sa kaliwang bahagi dito, na nagpapakita ng HTML Facebook ni, ngunit nagpapakita sa kanang bahagi ang lahat ng CSS nito, maaari mong at baguhin ang mga bagay sa mabilisang. Kaya ipaalam sa akin sige at gawin ito. Hayaan akong sige at kontrol mag-click sa mga random na salita dito, -sign, at i-click ang Siyasatin ang Elemento. Chrome napaka-maginhawang jumps sa ang tag h1 na Facebook ay gumagamit. At mapansin dito Facebook May uri ng lazily -hard code laki ng font bilang isang ari-arian dito. Kaya ang mga cool na bagay na ay na kung talagang pumunta ako sa dito at sabihin, oh, Facebook, hindi ko gusto na 64 pixel, maaari na ngayong naming baguhin ang Facebook. Siyempre, lamang namin ang pagbabago nito para sa akin personal na sa sandaling ito. Ngunit ito lamang ang isa pang tool sa aming tool kit na pupuntahan-daan sa amin upang mag-tweak at malaman at din-diagnose Mga isyu sa aming sariling mga pahina ng web. At maaari kaming katulad pumunta sa paglipas ng dito, kung saan ay ang parehong bagay. Kung talagang gusto upang makakuha ng magarbong, ako ibig sabihin, ngayon, maaari mo ba talagang mutate pahina at gawin nakatutuwang bagay. Kaya bakit ay ang lahat ng kapaki-pakinabang? Well, sa huli, kami ay pagpunta sa nais na magagawang lumikha ng mga web page na ay hinimok sa pamamagitan ng aming sariling mga dulo pabalik, hindi sa pamamagitan lamang ng Google at Outsourcing dulo pabalik doon. Talaga namin nais sa halaga, halimbawa, ng pagkilos sa aming mga search engine ipatungkol upang pumunta hindi sa ibang tao, ngunit sa isang bagay tulad ng search.php, kung saan search.php ay sa aming sariling server, hindi sa ibang tao. At kaya upang makarating doon, kami talaga kailangan upang maipakilala ang isang bagong wika. Kaya kami na tumingin sa isang bagong wika dito, o dalawang talaga ito, HTML at CSS. Ngunit talaga sila lamang estruktural at Aesthetic wika. Hindi sila naka-programa wika per se. At iyon ang tungkol sa mas maraming mga pormal na panahon bilang namin gastusin sa kanila. Dahil sisimulan namin ngayon upang lumipat sa PHP. Kaya PHP ay isang aktwal na programming language. Ito ay isang wika scripting sa kamalayan na ito sinadya upang maging magaan ang timbang kaysa sa isang bagay tulad ng C. At ito ay isang kahulugan ng wika, na nangangahulugan na hindi ito pinagsama-sama. Kaya sa maikling sabi, kung ano ang ibig sabihin ng kapag ginagamit namin ang isang wika tulad ng c at nagkaroon kami upang ipunin ito? Ano ang ibig sabihin ng mag-compile C source code? Madla: [hindi marinig]. David J MALAN: Sabihin itong muli? Madla: [hindi marinig]. David J MALAN: Perpekto. Lumiliko ito ito sa binary. Lumiliko ito ito sa zeroes at mga mula sa aktwal na Ingles-tulad ng source code. At pagkatapos ay aming makakaya aktwal magpatakbo ng mga zeroes at mga sa pamamagitan ng pagpasa ito sa pamamagitan ng CPU sa pamamagitan ng pag-click double isang icon o pagpapatakbo ng isang command. PHP at Python at Ruby at Perl at JavaScript at bunches ng iba pang mga wika ay binigyang-kahulugan wika, na kung saan ay upang sabihin hindi mo ipunin ang mga ito. Sa halip, feed mo ang mga ito bilang input sa isang programa na tinatawag na isang interpreter. At interpreter na iyon, na may ibang nagsulat, bumabasa ng iyong source code sa itaas hanggang sa ibaba, ang natitira upang karapatan at binibigyang-kahulugan lamang mga linya at ginagawa kung ano ang sinasabi sa iyo. Kaya kung nakatagpo ka ng linya na nagsasabing naka-print, ito ay hindi kinakailangang i-convert ang naka-print ng kaugnay na mga zero at mga bago. Ito lamang ay may ito interpreter tulad ng isang malaking kung kondisyon na nagsasabing, kung pagtuturo programmer ay -print, pagkatapos ay gawin ang sumusunod. Kaya binibigyang-kahulugan ito lamang sa pamamagitan ng uri ng pagdadahilan sa pamamagitan ng kung ano ang sinasabi mo itong gawin. At PHP ay isa sa mga wikang ito. At PHP taon na ang nakalipas ay idinisenyo tumpak para sa mga web programming. At ito ay una ng isang napaka nanggigitata gulung-gulo wika. At sa katunayan, mayroong isang malaking halaga ng masamang code na PHP out doon. Ngunit ang wika mismo ay matured sa paglipas ng mga taon, kaya magkano kaya na ito ngayon ang tunay na isang kamangha-manghang mga susunod na hakbang pedagogically mula sa C dahil ito ay kaya darned pamilyar sa lahat ng bagay lamang na iyong nakita sa iyo sa nakaraan ilang linggo. Ang isang paunang pagkakaiba namin makita ay walang pangunahing pag-andar na ngayon. Kapag sinimulan mo ang pagsusulat ng code, ito lamang pagpunta upang isagawa kahit na ano, bilang namin makita ang ilang mga sandali. Samantala, narito ang isang variable na kamukha sa PHP. Ito ay isang maliit na naiiba, ngunit lamang bahagya. Sa PHP, mayroong hindi malakas pagta-type. Mayroong linggo pagta-type, na lamang nangangahulugan na may ang mga uri ng data tulad ng mga string at mga numero at iba pang mga bagay. Ngunit hindi mo abala sa pagtukoy ano ang mga ito ngayon. Mga figure na ito PHP out para sa iyo. Ang dollar sign ay isang desisyon lamang na ang PHP tao ginawa taon nakaraan tulad na ang anumang variable sa PHP Nagsisimula lamang sa isang dolyar sign. Ito ay talagang uri ng kapaki-pakinabang sa na ito jumps out sa iyo ng kaunti pa. Ngunit pagkatapos na, ito ay isang kalagayan sa PHP. Ano ang naiiba kumpara sa C? Linlangin question-- wala, na kung saan ay talagang talagang maganda. Boolean expression sa PHP-- pareho. Boolean expression sa at laban sa o, switch, loop, loop, loops-- OK, ang isang ito ay naiiba. Kaya ito ay lumiliko out mayroong isang ilang iba pang mga tampok sa PHP. Ang isa sa mga ito ay aktwal na ito, na kung saan ay kamangha-mangha maginhawang. Kung $ numero ay isang array na iyong ipinahayag dati sa isang programa, mayroon ka na ng magarbong para sa bawat bumuo na sa halip ng paggawa ng lahat ng na nakakainis na ako ay katumbas ng 0, ako ay Mababa sa ito, [? ++ Ko?], para sa bawat numero ng numero, kung saan ang bawat ng mga halaga ng pag-sign dolyar lamang isang variable, at sa huli maaari mong isipin bilang I. Maaari kang tumawag ito anumang nais mo. Tumawag ako ito number. Ito ay pagpunta upang umulit sa ibabaw ang array na tinatawag na numero. At sa bawat pag-ulit, ito ay pagpunta sa awtomatikong i-update para sa iyo ang dollar sign bilang variable sa gayon ay patuloy May access ang mga variable na gusto mo nang hindi na kinakailangang gawin ang anumang mga square bracket pagtatanda o pag-index sa isang array. Higit pa iyon, kahit na mayroon kaming mga bagay tulad ng array, na hitsura halos pareho, maliban ito ay napakakaraniwan, pati na kami ay makita, parehong sa PHP at JavaScript na paunang simulan ang isang array paggamit ng mga square bracket. C ay gumagamit ng kulot tirante. Kaya ito ay bahagyang naiiba, kahit na Hindi talaga namin ang ginamit na nanlilinlang magkano. Ngunit kahit na higit pa powerfully, May nag-uugnay array PHP, kung saan ay isang magarbong paraan ng sinasabi ng hash talahanayan. Sa katunayan, kung nais mong ipinapahayag ng hash talahanayan sa PHP, hindi tulad ng sa C-- kung gaano karaming mga linya ng code ay tumagal sa aktwal na ipatupad ng hash talahanayan sa C? O kung gaano karaming mga linya ng code ito pagkuha ipatupad ng hash talahanayan sa C? Kaya ito ay marahil ng maraming, tama? Ito ay ilang dosena, siguro 100 o 200. Ito ay nontrivial. O ito ay tungkol sa upang maging, bilang makikita mo sa lalong madaling panahon makita, nontrivial upang ipatupad ng hash talahanayan [Hindi marinig] at ding try. Ngunit sa PHP-- at lantaran, ako marahil ay hindi dapat sabihin sa iyo na ito hanggang Monday-- sa PHP, kung gusto mo ng talahanayan, tapos na. Iyon ang isang hash table-- kaya na may isang linya ng code. At Marami ng mga wika gawin iyon. Magpakasaya sa pset lima. Kaya ng maraming mga wika na ito. Bigyan sila mo ang mga abstractions na ang ibang mga tao, ibang mga programmer, nilikha para sa iyo upang ang maaari mong tumayo sa kanilang mga balikat at simulang gamitin ang mga ideya na ito ay sukdulang nakapanghihimok, tulad ng hash table at mga puno at sinusubukang. Ngunit hindi mo kinakailangang magkaroon upang ipatupad ang mga bagay sa iyong sarili. At kaya sa huli, kung ano ang kami ay pagpunta sa gumamit ng PHP para sa ay potensyal na pagsusulat ng mga programa ng tinatawag na linya ng command. Maaari naming muling likhain ang bawat programa na aming sinulat na ito semestre kaya sa ngayon, maliban siguro Breakout na gumagamit ng SPL, na partikular sa C sa sandaling ito. Ngunit nakatakda sa bawat iba pang mga problema, tiyak Mario at Caesar at Vigenere at [? Crack?] At pasulong, namin maaaring muling ipatupad sa PHP, at marahil ng isang maliit na mas madali. Ngunit kung ano ang sa huli kami ng pagpunta gamitin ang PHP para ay web programming. At kami ay pagpunta upang ipakilala ang susunod na linggo isang sakit sa modelo, isang tularan tinatawag na MVC, tingnan modelo controller, na kung nagawa mo na ang mga programa bago sa Python o Ruby o sa ibang lugar, mo maaaring kilala ng koponan gamit ang Daang-bakal at Django at iba. Ngunit kung ikaw ay bago sa iyo ito masyadong, makikita mo ang na ito ay talagang isang napaka-natural extension ng paktorisasyon at ang uri ng disenyo ng code na hindi namin na ginagawa sa C. Kami ay pagpunta sa ngayon ilapat ang ilan sa mga aralin sa PHP kaya na sa huli, kami ay pagpapatupad ng aming sariling mga website. At kung ikaw ay isang uri ng mesmerized o nagtaka nang labis na namin ang pagpunta sa gawin lahat ng kaya mabilis, Napag-alaman na halos araw semestre, halos 90% ng CS50 mga mag-aaral, kabilang ang mga na hindi kailanman-program bago, napupunta sa paggawa ng pangwakas na mga proyekto na ay batay sa web programming. At kaya makikita mo na ang pagbalik ay mataas sa darating na mga linggo. Kaya kami ay nakikita mo pagkatapos ay sa Lunes. Tagapagsalita 1: At ngayon, Deep Mga iniisip sa pamamagitan ng Daven Farnham. Hash talahanayan. [Tawa]