1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUSIC nagpe-play] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> David MALAN: Ito ang CS50, at ito ay ang simula ng linggo alas-otso. 5 00:00:13,350 --> 00:00:17,510 At kami ay kaya nasasabik na welcome likod, malaking sorpresa, sariling Ramon CS50 6 00:00:17,510 --> 00:00:22,160 Galvan, isang tumataas na mga senior na ay naging paggastos sa nakalipas na ilang buwan 7 00:00:22,160 --> 00:00:26,190 mula noong Hulyo sa LA, sa Hollywood, literal na nagtatrabaho sa isang bagong tatak ng TV 8 00:00:26,190 --> 00:00:31,930 palabas na tinatawag Colony, taga-gawa ng kung saan ay talagang isang Harvard alum kanyang sarili. 9 00:00:31,930 --> 00:00:36,610 At kaya kami ay napaka nasasabik upang makita ito pasinaya sa USA ang network na ito ng Enero. 10 00:00:36,610 --> 00:00:40,370 Kaya manatiling nakatutok para sa na, at para sa higit Ramon para sa linggo na dumating. 11 00:00:40,370 --> 00:00:42,550 >> Alamin ngayon na ang wakas ay malapit na. 12 00:00:42,550 --> 00:00:47,400 At kung ano ang ibig sabihin nito ay mayroong hindi lahat na marami kaliwa ng CS50, malungkot na sabihin. 13 00:00:47,400 --> 00:00:49,400 May tatlong problema lang namin sets left-- mayroong 14 00:00:49,400 --> 00:00:52,510 itakda ang problema six-- na nasa ang iyong mga kamay ngayon o sa lalong madaling panahon ay magiging, 15 00:00:52,510 --> 00:00:56,080 dahil sa ibang pagkakataon sa week-- ay sinadya upang tulay ang aming mga mundo ng command line, kung saan 16 00:00:56,080 --> 00:00:59,450 na ginugol namin ang karamihan ng aming mga oras ng paggamit C, at sa mundo ng web programming. 17 00:00:59,450 --> 00:01:02,350 Well, makikita mo ang isang pulutong ng mga ideya hiram mula sa command line trabaho, 18 00:01:02,350 --> 00:01:04,560 kundi pati na rin ng maraming bagong at kawili-wiling mga ideya 19 00:01:04,560 --> 00:01:07,929 na din ang pagpunta sa maging dyermeyn para mga mobile application at para sa teknolohiya, 20 00:01:07,929 --> 00:01:10,470 mas pangkalahatang paraan, na kung saan kayo guys ay ang lahat ng mga pamilyar na sa panahong ito 21 00:01:10,470 --> 00:01:12,090 sa mga laptop at phone at ang gusto. 22 00:01:12,090 --> 00:01:15,220 >> Kaya makikita mo ipatupad hindi isang web page, o sa isang website 23 00:01:15,220 --> 00:01:17,620 per se, ngunit isang aktwal na web server. 24 00:01:17,620 --> 00:01:21,590 Makikita mo isulat ang natitirang bahagi ng isang web server nakasulat sa C, na ang layunin sa buhay 25 00:01:21,590 --> 00:01:25,410 ay upang makatanggap ng mga kahilingan ng HTTP, ang mga virtual envelopes panatilihin namin ang pakikipag-usap 26 00:01:25,410 --> 00:01:29,780 tungkol sa, at tunay na tumugon sa alinman sa ilang static content-- tulad ng isang tuldok HTML 27 00:01:29,780 --> 00:01:32,310 file, o isang tuldok JPEG o anumang iba pang mga bilang ng mga file, 28 00:01:32,310 --> 00:01:37,070 o kahit na isang file PHP kung saan ang iyong web server ay pagpunta upang bigyang-kahulugan na PHP 29 00:01:37,070 --> 00:01:38,332 code at sabihin ang lahat ng mga resulta. 30 00:01:38,332 --> 00:01:40,540 Ngayon, nagbigay kami sa iyo sa lubos na piraso ng framework 31 00:01:40,540 --> 00:01:43,100 para it-- katunayan ang distribution code para sa mga problemang 32 00:01:43,100 --> 00:01:47,496 itakda anim ay higit sa 1,000 mga linya ang haba, isang pulutong ng mga na kung saan ay ang mga komento, upang maging fair-- 33 00:01:47,496 --> 00:01:49,370 ngunit ito ay sinadya talagang upang maging isang pagkakataon 34 00:01:49,370 --> 00:01:52,570 upang makuha ang iyong mga kamay marumi diving sa isang medyo malaking proyekto 35 00:01:52,570 --> 00:01:55,570 na kami tunay na partikular na inukit out piraso ng para sa iyo, 36 00:01:55,570 --> 00:01:59,046 kaya na talagang kapag lumabas ka CS50 at ipasok ang mga tunay na mundo ng programming 37 00:01:59,046 --> 00:02:00,920 at gusto sa magwilig sa anumang bilang ng mga proyekto, 38 00:02:00,920 --> 00:02:03,253 ikaw ay magkakaroon ng mas higit na kaginhawaan ng pag-download sa ilang source 39 00:02:03,253 --> 00:02:05,020 code, ang ilang mga open source project sa web, 40 00:02:05,020 --> 00:02:08,174 at diving sa at paggawa ng mga pagbabago na nakikita mong akma. 41 00:02:08,174 --> 00:02:11,340 Problema set pitong ay magiging tungkol sa paggawa ng iyong sariling web-based application 42 00:02:11,340 --> 00:02:14,140 na tumatagal ng dynamic input at gumagawa dynamic output sa anyo 43 00:02:14,140 --> 00:02:16,920 ng isang etrade.com-like website. 44 00:02:16,920 --> 00:02:20,800 At itakda problema walong ay tumutok sa pa ibang wika na kilala bilang JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Samantala, ang huling proyekto ay sa abot-tanaw. 46 00:02:24,170 --> 00:02:26,800 Ang tinatawag na pre-proposal ay dahil sa isang linggo mula ngayon. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- bawat ang mga detalye, na kung saan ay sa website-- CS50 48 00:02:29,930 --> 00:02:33,260 ay isang medyo casual na pagkakataon para sa sa iyo upang magpadala ng isang medyo maikli at malinaw email 49 00:02:33,260 --> 00:02:35,170 sa iyong pagtuturo kapwa lamang upang magbigay-alam sa kanya 50 00:02:35,170 --> 00:02:38,250 o ang kanyang ng kung ano ang iyong iniisip, upang gamitin siya bilang isang importante board. 51 00:02:38,250 --> 00:02:40,980 At magkaroon ng isang katinuan check-- kung pinag-iisipan mo 52 00:02:40,980 --> 00:02:43,210 tungkol masakit off masyadong marami o baka masyadong maliit, 53 00:02:43,210 --> 00:02:46,480 o baka wala kang mga ideya kung ano pa man at nais na umaakit sa isang pag-uusap. 54 00:02:46,480 --> 00:02:48,480 >> Pagkatapos noon ay isang panukala at mag-ulat ng katayuan, 55 00:02:48,480 --> 00:02:51,860 ang tinatawag na CS50 hackathon dito sa Cambridge para sa Harvard at Yale mga mag-aaral 56 00:02:51,860 --> 00:02:52,362 magkamukha. 57 00:02:52,362 --> 00:02:54,320 Ang huling proyekto ni pagpapatupad ay pagkatapos ay dahil. 58 00:02:54,320 --> 00:02:59,290 At pagkatapos ay isang CS50 fair dito, sa Cambridge, pati na rin ang isa pa sa New Haven. 59 00:02:59,290 --> 00:03:02,500 Kaya ang panukala, tingnan ang ang website para sa mga detalye. 60 00:03:02,500 --> 00:03:06,530 >> Ngunit mas excitingly, masyadong, ay isang pagkakataon upang makuha ang iyong mga kamay marumi, 61 00:03:06,530 --> 00:03:09,350 at bukas para sa isang buong iyong isipan grupo ng mga paksa at mga tool 62 00:03:09,350 --> 00:03:12,920 at mga diskarte na nasa mababa sa core syllabus ang kurso na iyon, 63 00:03:12,920 --> 00:03:14,810 ngunit gayunman kaugnayan. 64 00:03:14,810 --> 00:03:18,400 At din kahanga tuntong bato upang ginagawa talagang cool na huling proyekto na 65 00:03:18,400 --> 00:03:22,020 pumunta na rin sa kabila ng materyal na sakop namin pormal sa hanay ng problema o sa panayam. 66 00:03:22,020 --> 00:03:24,446 Kaya pumunta sa website CS50 para ang buong hanay ng mga seminar. 67 00:03:24,446 --> 00:03:26,070 Kung hindi mo pa register, na multa. 68 00:03:26,070 --> 00:03:29,860 Sige at mag-sign up pa rin at kami ay follow up sa isang live streaming link, 69 00:03:29,860 --> 00:03:31,844 ang araw at oras ay nasa website. 70 00:03:31,844 --> 00:03:33,760 At lahat ng bagay ay naitala at ilagay sa online 71 00:03:33,760 --> 00:03:35,800 kung hindi ka maaaring gumawa ng mga partikular na araw at oras. 72 00:03:35,800 --> 00:03:39,380 >> Bilang sa kung ano ang namamalagi maaga thereafter-- rin, siyempre, naroon ang CS50 hackathon. 73 00:03:39,380 --> 00:03:43,560 Ang larawang ito, isipin ang, mula sa linggo zero na kinunan sa paligid ng 04:00 sa isang gabi sa nakaraang taon. 74 00:03:43,560 --> 00:03:46,900 Ang CS50 fair, na muli ay magdadala sa lugar sa parehong lungsod. 75 00:03:46,900 --> 00:03:49,760 At pagkatapos, sa planta lang ang binhi, kahit kami pa rin 76 00:03:49,760 --> 00:03:54,080 magkaroon ng isang buwan plus kaliwa ng semestre, kung Gusto mo bang sumali sa sariling pagtuturo CS50 77 00:03:54,080 --> 00:03:56,770 kawani, at nais mong simulan nag-iisip tungkol sa pagiging isang CA, 78 00:03:56,770 --> 00:03:59,550 o pagtuturo kasama, alam na Kukunin namin simulan ang pakikipag-usap nang higit pa tungkol na 79 00:03:59,550 --> 00:04:00,630 mamaya na ito semestre. 80 00:04:00,630 --> 00:04:03,470 Ngunit nakalarawan dito ay karamihan ng koponan sa taong ito. 81 00:04:03,470 --> 00:04:06,950 >> At ito, PHP-- at ako ay kaya malungkot noong nakaraang linggo na [? Allyse?] Mabait 82 00:04:06,950 --> 00:04:09,370 napunta sa mga pagsisikap ng pagkuha ng sa amin ang mga kahanga-hangang mga props 83 00:04:09,370 --> 00:04:11,720 na hindi ako nag end up gamit, kaya ito talagang lamang tumingin uri ng hangal 84 00:04:11,720 --> 00:04:15,160 na nagkaroon kami ng pala nakaupo dito ang lahat araw noong nakaraang Miyerkules, at isang maliit na kutsara. 85 00:04:15,160 --> 00:04:17,709 Ngunit ito ay ang aking metaphoric paraan ng sinusubukan upang ipinta 86 00:04:17,709 --> 00:04:21,600 mga larawan ng kung bakit kami ay paglipat mula sa C sa isang wika tulad ng PHP. 87 00:04:21,600 --> 00:04:25,480 At ang parehong ay maaaring sinabi ng anumang bilang ng mga languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 o kumpol na others-- ngunit kung saan sa C, halimbawa, pagsulat ng isang programa sa C 89 00:04:31,270 --> 00:04:34,050 Maaaring kadalasang sa tulad ng pagkuha ng isang kutsara nang ganito 90 00:04:34,050 --> 00:04:36,770 at paghuhukay ng isang butas sa lupa, sa buhangin o dumi. 91 00:04:36,770 --> 00:04:39,770 Pinahihintulutan ng PHP sa iyo na kumuha ng marami mas malaking kagat sa labas ng problema, 92 00:04:39,770 --> 00:04:42,842 pagsulat ng higit na mas mababa code gamit ang isang malayo mas maliit na kasangkapan, 93 00:04:42,842 --> 00:04:45,050 dahil mayroong kaya marami pang iba functionality pieced in. 94 00:04:45,050 --> 00:04:47,633 >> Ngayon, kung kami ay talagang dramatic, gusto naming magkaroon ng isang bagay na pala 95 00:04:47,633 --> 00:04:48,760 dito, ngunit kaya ito. 96 00:04:48,760 --> 00:04:51,370 Samantala, ang iba pang mga talinghaga dumating up kami sa 97 00:04:51,370 --> 00:04:53,770 ay, siyempre, maaari mong gamitin ang isang bagay tulad ng isang wrench 98 00:04:53,770 --> 00:04:56,610 martilyo sa isang bagay tulad ng isang kuko. 99 00:04:56,610 --> 00:04:58,980 Ngunit siyempre, ang karapatan kasangkapan upang gamitin ay pagpunta 100 00:04:58,980 --> 00:05:01,360 na hindi kaya marami sa wika na tinatawag C-- 101 00:05:01,360 --> 00:05:03,590 at ngayon lang inis ko [? Sanders,?] Marahil, 102 00:05:03,590 --> 00:05:07,890 kami na ayusin na later-- kaya ang karapatan na kasangkapan na madalas gamitin 103 00:05:07,890 --> 00:05:09,640 ay hindi magiging ito pinakamababang antas ng tool. 104 00:05:09,640 --> 00:05:13,720 At sa katunayan, C ay hindi isang wika na karamihan sa inyo ay kailanman pagpunta sa paggamit, 105 00:05:13,720 --> 00:05:15,590 o dapat palaging gamitin muli. 106 00:05:15,590 --> 00:05:18,350 >> At sa katunayan, sa isang maliit na secret-- ang tanging oras 107 00:05:18,350 --> 00:05:23,160 Ako ay gumagamit ng C ang aking sarili ay medyo marami sa pagitan ng Setyembre at Disyembre ng bawat pagkahulog 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 At iyon ay dahil kami ay gamitin ito bilang isang pagkakataon 110 00:05:25,790 --> 00:05:27,852 upang turuan ang batayan ng mga programa, 111 00:05:27,852 --> 00:05:29,810 at sa mga ito ng computer batayan science, data 112 00:05:29,810 --> 00:05:32,435 kaayusan, algorithm at ang like-- ngunit masyadong mabilis ay mo 113 00:05:32,435 --> 00:05:35,010 makita ngayon na ang syntax at ang mga ideya pinagbabatayan C 114 00:05:35,010 --> 00:05:37,530 ay kaya kamangha-mangha maililipat sa mas modernong 115 00:05:37,530 --> 00:05:41,130 mas mataas na antas ng wika, tulad ng PHP at Python at Perl at Java 116 00:05:41,130 --> 00:05:46,750 at Layunin-C-- talaga, hindi masyado Layunin-C-- ngunit Swift, ang mga mas bagong 117 00:05:46,750 --> 00:05:50,010 wika na marami sa inyo ay pagkatapos wiligan sa iyo huling proyekto. 118 00:05:50,010 --> 00:05:55,070 >> Kaya nang walang karagdagang linggal, sabihin aktwal gamitin ang PHP upang malutas ang ilang mga problema. 119 00:05:55,070 --> 00:06:00,230 Alalahanin na sa maagang bahagi, huling linggo, aming ginamit lang CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 Isinulat namin ang isang maliit na lokomotora maliit na programa na lang sinabi, "Hello mundo." 121 00:06:02,990 --> 00:06:05,680 At pagkatapos ay nai-save ko ito sa isang file na tinatawag hello.php. 122 00:06:05,680 --> 00:06:07,280 At pagkatapos ay nagpatakbo ako ng utos na ito. 123 00:06:07,280 --> 00:06:08,080 >> At bakit? 124 00:06:08,080 --> 00:06:09,900 Sa Ingles, ano ang nangyayari sa dito? 125 00:06:09,900 --> 00:06:12,760 Ano ang ginagawa ko kapag Nagpatakbo ako sa utos na ito? 126 00:06:12,760 --> 00:06:13,405 >> Oo? 127 00:06:13,405 --> 00:06:16,572 >> Madla: May ilang mga function na PHP na bumabasa kung ano ang in-- nauunawaan na. 128 00:06:16,572 --> 00:06:19,696 David MALAN: Good, may ilang mga pag-andar PHP-- at ipaalam sa akin maging mas tiyak, 129 00:06:19,696 --> 00:06:21,810 mayroong isang programa na tinatawag na PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Ang isang interpreter, na nauunawaan ang mga nilalaman ng hello.php, 131 00:06:25,872 --> 00:06:27,830 at sinasalin ito sa itaas hanggang sa ibaba, kaliwa hanggang kanan, 132 00:06:27,830 --> 00:06:29,590 at ginagawa kung ano ang sinasabi ng mga utos. 133 00:06:29,590 --> 00:06:33,320 Ang mga utos sa hello.php, siyempre, ay ang pinagmulan lamang code-- function 134 00:06:33,320 --> 00:06:35,750 at mga variable at ang mga loop at ang gusto, na natin ang ating sarili 135 00:06:35,750 --> 00:06:37,460 Sinimulan ang pagsusulat sa PHP. 136 00:06:37,460 --> 00:06:40,240 >> Ngunit hindi tulad ng C, na kung saan ay isang naipon wika, 137 00:06:40,240 --> 00:06:42,810 PHP isulat mo lang ito, at patakbuhin ito. 138 00:06:42,810 --> 00:06:46,420 Laktawan mo na middleman hakbang ng convert ito sa mga zero at mga, 139 00:06:46,420 --> 00:06:47,790 at pagkatapos ay tumatakbo ito. 140 00:06:47,790 --> 00:06:50,510 At kaya kung ano ang isang bentahe ng ito? 141 00:06:50,510 --> 00:06:52,690 Bakit laktaw namin ang mga hakbang? 142 00:06:52,690 --> 00:06:55,238 Bakit mas modernong mga wika madalas na laktawan ang hakbang na ito? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Ano ang mga benepisyo? 145 00:07:01,220 --> 00:07:02,080 >> O intuitively lamang? 146 00:07:02,080 --> 00:07:04,200 Kahit na hindi kami ay hindi nakasulat magkano PHP bago, 147 00:07:04,200 --> 00:07:07,210 kung ano ang kapaki-pakinabang tungkol sa hindi kino-compile ang iyong code sa palagay mo? 148 00:07:07,210 --> 00:07:08,520 Hindi? 149 00:07:08,520 --> 00:07:09,610 Hindi tanggapin ang alok? 150 00:07:09,610 --> 00:07:11,350 Scratching iyong ulo? 151 00:07:11,350 --> 00:07:12,614 Oo. 152 00:07:12,614 --> 00:07:13,600 >> Madla: pa dynamic. 153 00:07:13,600 --> 00:07:14,683 >> David MALAN: More dynamic? 154 00:07:14,683 --> 00:07:16,032 Ang ibig mong sabihin? 155 00:07:16,032 --> 00:07:17,000 >> Madla: [hindi marinig] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 David MALAN: OK, mabuti, sa gayon depende sa input, 158 00:07:22,390 --> 00:07:23,470 Hindi mo na kailangang itala ito sa bawat oras. 159 00:07:23,470 --> 00:07:24,990 At ito ay tunay na bilang simpleng bilang na- ano 160 00:07:24,990 --> 00:07:26,990 ang punto ng patuloy na upang ipunin ang iyong code? 161 00:07:26,990 --> 00:07:29,480 Ito ay isang hakbang lang na making-- na ito ay nangangailangan ng, 162 00:07:29,480 --> 00:07:31,900 para sa nakaraang ilang linggo, dalawang beses bilang maraming mga hakbang 163 00:07:31,900 --> 00:07:33,820 bilang tumatakbo lamang ang iyong mga program. 164 00:07:33,820 --> 00:07:36,940 Naging kapaki-pakinabang sa nakikita na ikaw makita ang ilang mga mensahe ng error at iba pa, 165 00:07:36,940 --> 00:07:38,720 ngunit ito lamang ay isang nakakainis na hakbang pa rin. 166 00:07:38,720 --> 00:07:41,810 >> At kaya programmers natanto sa paglipas ng panahon, bakit hindi namin 167 00:07:41,810 --> 00:07:45,327 simulan ang pagsusulat ng mga wika na hindi kailangan na medyo mekanikal na hakbang, 168 00:07:45,327 --> 00:07:47,160 gayon na lamang maaaring sumulat ang iyong code at patakbuhin ito. 169 00:07:47,160 --> 00:07:48,920 Ngunit kung ano ang presyo na nakita natin binayaran namin 170 00:07:48,920 --> 00:07:50,910 noong nakaraang linggo, na may isang partikular na halimbawa? 171 00:07:50,910 --> 00:07:51,650 Oo? 172 00:07:51,650 --> 00:07:52,370 >> Bilis. 173 00:07:52,370 --> 00:07:54,690 Kaya [? ano?] interprete ay isang maliit na mas mabagal, 174 00:07:54,690 --> 00:07:57,330 sa na mga zero at iyan ay maganda at mabilis para sa isang computer 175 00:07:57,330 --> 00:08:00,070 upang maunawaan, dahil ang Intel CPU, o anumang ito ay, 176 00:08:00,070 --> 00:08:03,070 lang naiintindihan kung ano ang nangyayari sa may mga pattern ng bits. 177 00:08:03,070 --> 00:08:05,370 Sapagkat ang isang interpreter ay isang programa na talagang 178 00:08:05,370 --> 00:08:07,980 ay may na basahin ang source Ascii code na iyong isinulat, 179 00:08:07,980 --> 00:08:12,700 at i-convert ito, kaya na magsalita, o malaman kung paano ito nag-convert sa huli 180 00:08:12,700 --> 00:08:13,525 sa zero at mga. 181 00:08:13,525 --> 00:08:15,650 Kaya ito ay tatagal lamang ng isang maliit na piraso ng isang hit pagganap. 182 00:08:15,650 --> 00:08:16,858 Kaya ito ay isang piraso ng isang trade-off. 183 00:08:16,858 --> 00:08:21,570 Ngayon kung gagawin namin ito sa paglipas dito, hayaan mo akong sige, at gawin ang isang halimbawa ang mga sumusunod. 184 00:08:21,570 --> 00:08:26,610 Kung pupunta ako sa dito, ang mga bagong file, pupuntahan ko upang i-save muli ito ay hello.php. 185 00:08:26,610 --> 00:08:31,450 At ngayon ako pagpunta sa sige at sabihin, "print hello world" - 186 00:08:31,450 --> 00:08:35,130 at isipin na maaari kong gamitin print, hindi ako kailangang gumamit ng print-F. At ngayon down dito, 187 00:08:35,130 --> 00:08:42,039 kung gagawin ko PHP ng hello.php, huh-- ko ay hindi mukhang upang bigyang-kahulugan ito. 188 00:08:42,039 --> 00:08:43,412 Ano ang nagawa kong mali? 189 00:08:43,412 --> 00:08:44,710 >> Madla: Ang angled bracelets. 190 00:08:44,710 --> 00:08:47,015 >> David MALAN: Oo, kailangan mo na angle bracket up top. 191 00:08:47,015 --> 00:08:49,390 Kaya ito ay uri ng nakakainis na, ngunit ikaw ay makakuha ng mabilis na ginamit dito. 192 00:08:49,390 --> 00:08:53,500 Kung mayroon akong sumulat ng code sa PHP, ako pangkalahatan ay kailangan upang sabihin sa programa, 193 00:08:53,500 --> 00:08:56,950 o sabihin ang interpreter, hey PHP, heto ang ilang mga code na PHP. 194 00:08:56,950 --> 00:09:00,440 At pagkatapos ay para sa mabuting panukala, nais ko isara ito hindi sa mga ito, ngunit sa halip 195 00:09:00,440 --> 00:09:03,740 may tanong lang anggulo mark bracket, kaya na ngayon down dito, 196 00:09:03,740 --> 00:09:06,840 kung nagpatakbo ako ng ito muli, ngayon Nakukuha ko ang ninanais na resulta. 197 00:09:06,840 --> 00:09:09,820 >> Ngayon sabihin gawin ang isang bahagyang optimization ipaalam, kaya lang na iyong nakita ito bago. 198 00:09:09,820 --> 00:09:14,040 Ito ang uri ng mga nakakainis na ako kung tumakbo PHP space hello.php, 199 00:09:14,040 --> 00:09:16,060 dahil sa nakaraan ko maaari lamang isulat ang tuldok slash 200 00:09:16,060 --> 00:09:17,560 pangalan ng programa, na kung saan ay uri ng nice. 201 00:09:17,560 --> 00:09:19,420 Ito ay uri ng isang mas mahusay na karanasan ng user. 202 00:09:19,420 --> 00:09:24,160 >> Kaya ito ay lumiliko out na maaari mong gawin ito sa PHP sa following-- ko 203 00:09:24,160 --> 00:09:28,780 maaaring gamitin ang medyo cryptic bulong sa tuktok dito, 204 00:09:28,780 --> 00:09:31,740 na kung saan ay karaniwang tinatawag na isang shebang, kung saan ito ay isang matalim na simbolo, 205 00:09:31,740 --> 00:09:34,270 wika nga, na ito ay isang putok o isang exclamation point. 206 00:09:34,270 --> 00:09:38,490 At ito ngayon ay ang landas sa isang programa sa isang tipikal na sistema ng Linux na 207 00:09:38,490 --> 00:09:41,500 ay tinatawag na kapaligiran, o env. 208 00:09:41,500 --> 00:09:43,920 At ito line-- mahabang kuwento short-- lamang ng isang linya 209 00:09:43,920 --> 00:09:48,710 sabi, hey computer, hanapin ang PHP interpreter para sa akin sa kapaligiran, 210 00:09:48,710 --> 00:09:50,610 hanapin ito sa iyong memory, kaya na magsalita. 211 00:09:50,610 --> 00:09:54,130 >> At kung ano ang magaling ngayon, ay na kung pumunta ako pababa dito, 212 00:09:54,130 --> 00:09:57,750 Ang maaari kong gawin dot slash kumusta dot php, or-- Hmm. 213 00:09:57,750 --> 00:09:59,000 Tinanggihan ang pahintulot. 214 00:09:59,000 --> 00:10:02,350 Well, makikita mo ang higit pang mga ito sa hanay ng problema pitong, kung ikaw 215 00:10:02,350 --> 00:10:04,060 Mayroon pa nagagawa, na may pahintulot. 216 00:10:04,060 --> 00:10:06,510 Ito ay lumiliko out na kailangan ko upang maipatupad ang utos na ito 217 00:10:06,510 --> 00:10:10,779 tinatawag na [? chamod?] para sa pagbabago mode-- isang plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Kailangan ko [hindi marinig] ang isang ito ng mga karagdagang hakbang na kung saan ay nagsasabi sa aking computer, 219 00:10:13,820 --> 00:10:16,400 gumawa hello.php executable. 220 00:10:16,400 --> 00:10:21,310 At ngayon panoorin kung ano happens-- dot slash hello.php, ito lamang ay tumatakbo. 221 00:10:21,310 --> 00:10:23,310 Hindi ko na kailangan upang tukuyin ang ang tagapagsalin. 222 00:10:23,310 --> 00:10:26,680 At maaari kong gawin itong mas prettier, pa rin, kung palitan ang pangalan ng aking paggawa ng bagay na ito. 223 00:10:26,680 --> 00:10:30,570 Kung ilipat ko hello.php sa makatarungan Kaya mapapansin Hello-- sa kaliwang tuktok, 224 00:10:30,570 --> 00:10:32,860 pangalan ng program ay sa katunayan ngayon lang Hello. 225 00:10:32,860 --> 00:10:37,300 Ngayon ay maaari kong gawin itong parang isang programa C, kahit na ito ay nakasulat sa PHP-- 226 00:10:37,300 --> 00:10:39,210 o lantaran anumang bilang ng iba pang mga wika. 227 00:10:39,210 --> 00:10:41,480 >> Kaya marginal enhancement, walang functional pagkakaiba. 228 00:10:41,480 --> 00:10:44,460 Ngunit ito ay lamang ng isang maliit usisa ngayon, sa gayon ay maaari kang sumulat ng mga programa 229 00:10:44,460 --> 00:10:48,989 sa anumang wika, at ang mga gumagamit ay hindi kung alam o pag-aalaga kung ano ang mga iyon ay. 230 00:10:48,989 --> 00:10:51,030 Well, tingnan natin ang isang mas ipaalam nakakahimok halimbawa ngayon 231 00:10:51,030 --> 00:10:52,850 na ako wip up nang maaga. 232 00:10:52,850 --> 00:10:54,955 At ito ay tinatawag quote.php. 233 00:10:54,955 --> 00:10:56,740 At ito ay magagamit online. 234 00:10:56,740 --> 00:11:00,299 At mapansin na ito ay medyo short-- ngunit ito ay isang command line program na 235 00:11:00,299 --> 00:11:02,840 pagpunta sa maghanap ng mga presyo ng stock para sa akin, na kung saan ay tunay na pagpunta 236 00:11:02,840 --> 00:11:04,230 na dyermeyn sa set problema pitong. 237 00:11:04,230 --> 00:11:05,396 >> Kaya sabihin makita kung ano ang ginagawa ko. 238 00:11:05,396 --> 00:11:08,640 Sa pinakatuktok na nakuha ko ang bukas bracket tandang pananong PHP. 239 00:11:08,640 --> 00:11:13,372 Pagkatapos Mayroon akong linya na ito, kung saan ako na nangangailangan ng isang file na tinatawag na functions.php-- 240 00:11:13,372 --> 00:11:15,080 kami ay pagpunta upang makita ang higit pa sa ito sa isang bit, 241 00:11:15,080 --> 00:11:17,340 ngunit ito ay tulad ng C ni bersyon ng matutulis na isama, 242 00:11:17,340 --> 00:11:19,090 saan mo gustong pumunta isama ng isa pang file. 243 00:11:19,090 --> 00:11:23,720 Tawag PHP ito ay nangangailangan ng, kahit na ito mayroon ding isang isama function. 244 00:11:23,720 --> 00:11:26,861 At ito ay lumiliko out na function.php ay lamang ng isang bagay ako ay nagsulat bago klase. 245 00:11:26,861 --> 00:11:29,860 Ko bang ilagay ito sa parehong directory, dahil Nais kong i-factor ang ibang code 246 00:11:29,860 --> 00:11:31,800 na maaaring gusto naming gamitin sa ibang dako. 247 00:11:31,800 --> 00:11:34,560 >> Samantala, maaari mong malamang ipahiwatig kung ano ang nangyayari sa dito. 248 00:11:34,560 --> 00:11:39,200 Ito ay isang maliit na naiiba mula C-- ngunit kung ano ang ibig sabihin ako sa pamamagitan ng masiguro ang tamang paggamit? 249 00:11:39,200 --> 00:11:41,180 Isalin ang mas technically. 250 00:11:41,180 --> 00:11:45,950 Sa anong mga kalagayan ako iniwan ang programa, o sa paglabas? 251 00:11:45,950 --> 00:11:47,074 Oo? 252 00:11:47,074 --> 00:11:47,990 >> Madla: Kapag hindi mo na kailangang dalawang argumento command line. 253 00:11:47,990 --> 00:11:49,480 >> David MALAN: Kapag hindi ko na kailangang sa command line argumento. 254 00:11:49,480 --> 00:11:52,396 At tandaan na ang isa sa mga argumento ay pangalan ng program mismo. 255 00:11:52,396 --> 00:11:55,340 At ang pangalawang ay magiging isa pang salita nagta-type ako pagkatapos ng prompt. 256 00:11:55,340 --> 00:11:57,460 Kaya lang tulad C, ito ay ang aking paraan ng pag-check, 257 00:11:57,460 --> 00:12:00,022 ay ang gumagamit tumulong at patakbuhin ang programa tulad ng nilayon ko? 258 00:12:00,022 --> 00:12:01,730 Ngayon, may isang bagay isang maliit na naiiba 259 00:12:01,730 --> 00:12:04,020 sa unang C-- ng lahat ng namin na ito ay may dollar sign, 260 00:12:04,020 --> 00:12:07,710 at kung ano ang ginagawa ng isang dolyar mag-sign magpakilala sa PHP? 261 00:12:07,710 --> 00:12:08,440 Isang variable lang. 262 00:12:08,440 --> 00:12:11,731 Iyan ay all-- isang variable lang na sinusundan ng kahit anong gusto mo sa tunay na tawag dito. 263 00:12:11,731 --> 00:12:14,000 Pansinin mayroong isang bagay nawawala mula sa aking program PHP, 264 00:12:14,000 --> 00:12:18,210 tulad lamang ito ay nawawala huling linggo, kumpara sa C, na kung saan ay kung ano? 265 00:12:18,210 --> 00:12:21,620 >> A mga uri, ngunit din sa iba pa. 266 00:12:21,620 --> 00:12:26,409 Walang bagay function-- pangunahing function. 267 00:12:26,409 --> 00:12:27,450 Walang mga pangunahing function. 268 00:12:27,450 --> 00:12:29,680 Magsisimula ka sa pagsusulat lamang iyong code nang hindi 269 00:12:29,680 --> 00:12:32,790 mag-alala tungkol sa isang medyo arbitrary convention ng pagbibigay ng pangalan ng ilang mga default 270 00:12:32,790 --> 00:12:33,880 function na main. 271 00:12:33,880 --> 00:12:36,720 Kaya arg C ay talagang lamang isang pandaigdigang variable 272 00:12:36,720 --> 00:12:39,049 na ang mga interpreter gumagawa ng magagamit na sa akin. 273 00:12:39,049 --> 00:12:40,090 Ngayon, ito ay kawili-wili. 274 00:12:40,090 --> 00:12:41,140 Kaya tumingin up stuff. 275 00:12:41,140 --> 00:12:43,370 Dollar sign stock ay sa kaliwa, na ang aking variable. 276 00:12:43,370 --> 00:12:45,120 Sa kanang bahagi ng kamay, mayroong tila 277 00:12:45,120 --> 00:12:50,270 isang function sa PHP tinatawag lookup na Ako makapasa aking huling linya ng command 278 00:12:50,270 --> 00:12:51,902 argument to-- ano man ang salita ay. 279 00:12:51,902 --> 00:12:53,610 At kami na makita kung paano ito ay gumagana sa isang sandali. 280 00:12:53,610 --> 00:12:55,380 >> At pagkatapos ay sa wakas ako uulat ang presyo. 281 00:12:55,380 --> 00:12:58,650 Ako nagpi-print out ang isa magbahagi ng naturang at tulad. 282 00:12:58,650 --> 00:13:02,082 At tandaan, ito ay ang paraan sa PHP-- isang paraan sa PHP-- 283 00:13:02,082 --> 00:13:04,290 kung saan hindi mo na kailangang gawin ang dollar sign S anymore. 284 00:13:04,290 --> 00:13:06,782 Maaari mo lamang gamitin ang kulot tirante at plug sa ilang mga variable. 285 00:13:06,782 --> 00:13:09,240 Hindi mo na kailangang mag-alala tungkol sa gamit printf sa parehong paraan. 286 00:13:09,240 --> 00:13:13,530 >> At bilang isang bukod, kapag inilagay mo ang isang variable sa loob ng double quotes na tulad nito, 287 00:13:13,530 --> 00:13:17,370 ikaw ay gumagamit ng isang magarbong pamamaraan tinatawag na variable agaw. 288 00:13:17,370 --> 00:13:20,380 Ito lamang ay nangangahulugan plug ang variable in dito. 289 00:13:20,380 --> 00:13:23,760 At bilang isang bukod, ang ilan sa inyo na pumupunta mula sa iba pang mga background programming, 290 00:13:23,760 --> 00:13:26,960 hindi mo maaaring gamitin ang solong quote sa paligid ng mga string upang gawin ito. 291 00:13:26,960 --> 00:13:30,290 Kailangan mong gamitin ang double quotes para variable agaw sa trabaho. 292 00:13:30,290 --> 00:13:32,740 Kung hindi man makikita mo literal makita ang mga kulot tirante. 293 00:13:32,740 --> 00:13:34,500 >> Kaya sa wakas, sige at patakbuhin ito ipaalam. 294 00:13:34,500 --> 00:13:36,690 Hayaan akong gumawa ng aking terminal ng isang maliit na mas malaki. 295 00:13:36,690 --> 00:13:41,940 Hayaan akong magpatuloy at patakbuhin sa loob ng aking direktoryo quote. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? quote] PHP quote dot PHP, 297 00:13:46,950 --> 00:13:50,290 at ako pagpunta sa paghahanap para sa isang bagay tulad GOOG, na kung saan ay ticker symbol nito, 298 00:13:50,290 --> 00:13:55,510 at isa share ng kanyang bagong pangalan, Alphabet Inc, nagkakahalaga ng $ 717, bilang ng mga araw na ito. 299 00:13:55,510 --> 00:13:58,680 Sige, kung gusto naming tumakbo na ito muli, kahit sino 300 00:13:58,680 --> 00:14:02,600 magkaroon ng isa pang stock ticker gusto nilang maghanap? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft sa tingin ko ay ang isang ito, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Sa tingin ko Yahoo ay marahil na. 303 00:14:09,720 --> 00:14:12,130 At Facebook ay na. 304 00:14:12,130 --> 00:14:13,740 >> Kaya kung ano ang program na ito ginagawa? 305 00:14:13,740 --> 00:14:16,306 Mukhang naka-embed magic Ang sa na pag-andar lookup. 306 00:14:16,306 --> 00:14:17,430 Kaya sabihin kumuha ng isang mabilis na pagtingin. 307 00:14:17,430 --> 00:14:21,815 >> Ito ay lumiliko out na hindi dumating may PHP, ito ay nasa functions.php. 308 00:14:21,815 --> 00:14:23,690 At hindi namin ay pumunta sa pamamagitan ito sa mahusay na detalye, 309 00:14:23,690 --> 00:14:28,040 ngunit paunawa ang pinaiiral salita dito ay na sa anim na linya ng functions.php-- 310 00:14:28,040 --> 00:14:29,440 Literal kong sabihin function. 311 00:14:29,440 --> 00:14:31,050 Ako tukuyin ang pangalan ng aking function. 312 00:14:31,050 --> 00:14:34,330 Pagkatapos ay tukuyin ko ang anumang argumento, o parameter, 313 00:14:34,330 --> 00:14:36,480 Gusto ko na pag-andar upang take-- walang uri. 314 00:14:36,480 --> 00:14:37,580 At pagkatapos ay ako ipatupad ito. 315 00:14:37,580 --> 00:14:39,240 >> At makikita ko iwagayway ang aking kamay sa pagpapatupad, 316 00:14:39,240 --> 00:14:42,115 dahil ito ay medyo advanced karapatan ngayon, ngunit kami ay makita ito muli aktwal 317 00:14:42,115 --> 00:14:44,700 sa isang linggo sa hanay ng problema pitong. 318 00:14:44,700 --> 00:14:47,490 Ngunit maaari kong linisin ito up, masyadong. 319 00:14:47,490 --> 00:14:49,590 Isinama ko rin sa code ngayon ang isang bersyon 320 00:14:49,590 --> 00:14:52,340 ng quote, na walang file dot PHP. 321 00:14:52,340 --> 00:14:57,270 Dahil kung ano ay marahil sa itaas ng programa na tinatawag na quote lang? 322 00:14:57,270 --> 00:15:00,140 Na tinatawag shebang-- ang medyo misteryosong bulong 323 00:15:00,140 --> 00:15:04,590 na nagsasabing mahanap PHP at pagkatapos ay tumakbo ito sa aking code dito. 324 00:15:04,590 --> 00:15:07,360 >> Lahat ng mga karapatan, sa gayon ay nagdudulot sa amin na kung saan namin kaliwa off 325 00:15:07,360 --> 00:15:09,560 huling time-- kahit na may ilang mga mas advance na mga halimbawa. 326 00:15:09,560 --> 00:15:13,980 Ang anumang mga katanungan kaya ngayon si PHP o kung anong ginagawa namin? 327 00:15:13,980 --> 00:15:15,570 No-- lahat ng karapatan. 328 00:15:15,570 --> 00:15:16,180 Oo? 329 00:15:16,180 --> 00:15:19,610 >> Madla: Sa loob ng HTML file, gawin you-- 330 00:15:19,610 --> 00:15:22,226 [? gagawin mo?] [? tumawag lamang ito?] isang [hindi marinig] file PHP? 331 00:15:22,226 --> 00:15:23,350 David MALAN: Magandang katanungan. 332 00:15:23,350 --> 00:15:26,070 Sa isang web konteksto, na kung saan hindi namin literal tungkol sa paglipat sa, 333 00:15:26,070 --> 00:15:28,028 hindi mo gamitin ang tinatawag na shebang sa itaas, 334 00:15:28,028 --> 00:15:31,980 dahil ang web server-- madalas na isang programa na tinatawag na Apache o Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, o anumang bilang ng iba pang mga software web server, 336 00:15:37,470 --> 00:15:40,636 alam na kapag ito ay nakikita isang file dot PHP, na ito 337 00:15:40,636 --> 00:15:42,010 dapat tumakbo ang interpreter sa mga ito. 338 00:15:42,010 --> 00:15:43,468 Hindi ito tumingin sa na unang linya. 339 00:15:43,468 --> 00:15:45,580 Kaya ito ang unang linya bilis ng kamay lamang kapag ikaw ay 340 00:15:45,580 --> 00:15:48,330 pagsulat ng command line programs-- na kung saan hindi namin gawin super madalas, 341 00:15:48,330 --> 00:15:52,510 ngunit ito ay ang aming paraan ng bridging aming C halimbawa sa ngayon sa aming PHP. 342 00:15:52,510 --> 00:16:00,680 >> Kaya sabihin sa katunayan tulay mundo mula sa command line mundo sa web 343 00:16:00,680 --> 00:16:02,230 sa pamamagitan ng paggawa ng mga sumusunod. 344 00:16:02,230 --> 00:16:05,090 Hayaan akong magpatuloy at gumuhit sa paglipas dito para sa isang sandali lamang. 345 00:16:05,090 --> 00:16:09,940 Kaya kung kami ay may isang web server, o sa halip kung kami ay may aking laptop sa paglipas dito, 346 00:16:09,940 --> 00:16:11,280 na kung saan ko gumuhit tulad nito. 347 00:16:11,280 --> 00:16:14,250 At dito kami ay may mga internet sa ilang mga form. 348 00:16:14,250 --> 00:16:18,210 At pagkatapos ay sa paglipas dito, kami ay isang server sa isang building-- 349 00:16:18,210 --> 00:16:20,760 ito ay kung paano ang internet works-- at in dito 350 00:16:20,760 --> 00:16:23,120 ay isang server na may ilang ilaw siguro. 351 00:16:23,120 --> 00:16:27,530 Ano ang tunay na nangyayari sa pagitan ng dalawang mga koneksyon? 352 00:16:27,530 --> 00:16:29,240 >> Kaya sa gusaling ito ay isang web server. 353 00:16:29,240 --> 00:16:31,420 Iyan ay isang computer lamang na tumatakbo ang ilang mga operating 354 00:16:31,420 --> 00:16:34,561 system-- siguro ang libreng software na tinatawag na Apache, na kung saan CS50 IDE ay tumatakbo. 355 00:16:34,561 --> 00:16:36,310 Kaya maaari mong aktwal na Sa tingin ng gusaling ito 356 00:16:36,310 --> 00:16:38,579 bilang ang gusali sa saan CSt0 IDE ay naka-imbak. 357 00:16:38,579 --> 00:16:40,870 Iyon ay kung saan mayroon kayong lahat mga account, na kung saan ang lahat ng sa iyo 358 00:16:40,870 --> 00:16:43,130 magkaroon ng iyong sariling web server tumatakbo, kayong lahat 359 00:16:43,130 --> 00:16:45,730 magkaroon ng iyong sariling natatanging mga URL, bilang sinimulan namin ang pag-usapan, 360 00:16:45,730 --> 00:16:47,280 at makikita mo ang higit pa sa P. set anim. 361 00:16:47,280 --> 00:16:49,450 >> Narito ang aking laptop sa tabi-tabi ibang tao sa internet. 362 00:16:49,450 --> 00:16:54,550 At kaya kapag binisita ko ang isang URL na nauukol sa akin, na ang trapiko sa internet ay pagpunta 363 00:16:54,550 --> 00:16:58,360 sa ibabaw ng mga server, ang server nakatatanggap ng isang HTTP request-- 364 00:16:58,360 --> 00:17:02,900 tulad ng isang makakuha ng index.html at ito ay pagtugon sa web page na iyon. 365 00:17:02,900 --> 00:17:04,280 Kaya na ang pangkalahatang tularan. 366 00:17:04,280 --> 00:17:07,089 Sapagkat ang lahat ng bagay up hanggang ngayon araw na ito, lahat ng bagay 367 00:17:07,089 --> 00:17:09,660 nangyayari lamang sa mga paligid ng gusaling ito. 368 00:17:09,660 --> 00:17:12,910 Ako ay gumagamit ng aking laptop, ngunit Ako ay konektado sa CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 kaya ang lahat ng mga programa ako ay tumatakbo ay sa loob ng server na, mismo. 370 00:17:17,369 --> 00:17:22,660 >> Ngunit ngayon, ay magsisimulang muling paggamit ng PHP ipaalam sumulat ng ilang mga aktwal na mga programa na 371 00:17:22,660 --> 00:17:24,230 Hinahain up sa pamamagitan ng isang web server. 372 00:17:24,230 --> 00:17:30,320 At upang gawin ito, ako pagpunta upang pumunta sa isang buong grupo ng mga halimbawa 373 00:17:30,320 --> 00:17:33,710 na ipakilala ang mga ideya na ito dito. 374 00:17:33,710 --> 00:17:38,500 Kaya ito ay uri ng isang magarbong paraan ng naglalarawan ng isang programming tularan. 375 00:17:38,500 --> 00:17:41,540 >> At sa katunayan, bilang lumabas ka CS50 o gumana sa huling proyekto, 376 00:17:41,540 --> 00:17:43,520 o kumuha ng ilang mga sundin sa klase, ikaw ay magsisimulang 377 00:17:43,520 --> 00:17:45,740 upang makita na ang world-- lalo pagkakaroon ng lumago hanggang 378 00:17:45,740 --> 00:17:48,300 may mga wika tulad ng C na sobrang mababa level-- 379 00:17:48,300 --> 00:17:51,290 mapagtanto na mayroong mas mahusay na mga paraan ng pagsulat ng software. 380 00:17:51,290 --> 00:17:53,290 May mga tiyak na pattern na maaari mong sundin, 381 00:17:53,290 --> 00:17:57,640 tiyak na mga paraan ng pag-aayos ng iyong mga file at mga paraan ng pagbibigay ng pangalan sa iyong mga pag-andar, 382 00:17:57,640 --> 00:18:00,300 upang ang mahabang maikling kuwento, mundo ay magkaroon ng 383 00:18:00,300 --> 00:18:04,340 may isang buong grupo ng mga acronym at mga pangalan ng mga paraan ng programming. 384 00:18:04,340 --> 00:18:06,260 Ang mga ito ay lamang ng mga diskarte na maaari mong gamitin. 385 00:18:06,260 --> 00:18:09,660 >> At ang isa sa mga ito ay tinatawag na MVC, para sa Modelo Tingnan Controller. 386 00:18:09,660 --> 00:18:12,270 At ito ay lamang, para sa ngayon, isang labis na kumplikado 387 00:18:12,270 --> 00:18:18,960 paraan ng pagsasabi kung gaano ka dapat mag-ipon out isang PHP-based website, sa aming kaso. 388 00:18:18,960 --> 00:18:22,140 Paano mo ayusin ang iyong mga file, paano mo ayusin ang iyong mga logic, 389 00:18:22,140 --> 00:18:26,220 sa isang paraan na ginagawang mas madali na magsulat ng mas kumplikadong mga website? 390 00:18:26,220 --> 00:18:28,550 At sa katunayan, bibigyan namin ng mabilis makarating doon sa p-set pitong. 391 00:18:28,550 --> 00:18:32,020 >> Kaya sa mundo ng MVC, ikaw ay pagpunta pangkalahatan ay upang makita na ang aming mga code ay maaari 392 00:18:32,020 --> 00:18:38,290 na matatawag na mag-model code, o controller code, o tingnan ang mga code. 393 00:18:38,290 --> 00:18:40,200 At ako pagpunta sa oversimplify ito bilang follows-- 394 00:18:40,200 --> 00:18:42,074 ang controller ay ang talino ng iyong programa, 395 00:18:42,074 --> 00:18:44,100 ito ay kung saan ang lahat ng mga kagiliw-giliw na lohika mangyayari. 396 00:18:44,100 --> 00:18:46,110 Kaya lahat kami nakapunta pagsulat sa gayon ay malayo sa klase, 397 00:18:46,110 --> 00:18:48,210 ay uri ng tulad controller code-- ito ay pagkontrol 398 00:18:48,210 --> 00:18:50,585 iyong programa, ang iyong mga loop, ang iyong kondisyon, ang iyong mga pag-andar 399 00:18:50,585 --> 00:18:52,100 at mga variable at ang lahat na. 400 00:18:52,100 --> 00:18:56,160 >> Views, ngayon, ay magiging isang maliit na mas kitang-kita sa mundo ng web. 401 00:18:56,160 --> 00:18:59,360 Ang isang view ay ang aesthetics ng iyong website. 402 00:18:59,360 --> 00:19:04,080 Ito ay kung ano sees-- user ang mga imahe, ang mga talahanayan HTML, ang mga tag ng HTML, at ang lahat 403 00:19:04,080 --> 00:19:08,220 ng na, ang lahat ng mga fluffy aesthetic bagay-bagay na ay hindi na mahirap na isulat, 404 00:19:08,220 --> 00:19:11,380 ngunit lamang kung ano ang iyong pagbuo, ay ang tinatawag na view, ang mga aesthetics. 405 00:19:11,380 --> 00:19:13,880 At model, sa huli, ay pagpunta na database stuff-- saan 406 00:19:13,880 --> 00:19:16,510 magsisimula kami sa diving sa lahat ang mas maraming mga ito Miyerkules. 407 00:19:16,510 --> 00:19:19,740 Kaya controller ay ang logic, view ay ang aesthetic bagay-bagay, 408 00:19:19,740 --> 00:19:23,500 at modelo ay magiging kung saan iniimbak namin ang aming mga aktwal na data. 409 00:19:23,500 --> 00:19:26,410 >> Kaya tingnan natin ito nang mas concretely ipaalam sa mga sumusunod na halimbawa. 410 00:19:26,410 --> 00:19:34,700 Pupunta ako sa pumunta sa aking directory dito ng pinagmulan ngayon code-- lahat ng na 411 00:19:34,700 --> 00:19:35,770 ay magagamit online. 412 00:19:35,770 --> 00:19:37,800 At ako pagpunta sa pumunta sa bersyon zero. 413 00:19:37,800 --> 00:19:41,500 At dito is-- sabihin tumawag ito ang bersyon zero website CS50 ng. 414 00:19:41,500 --> 00:19:43,010 Mayroong hindi magkano dito sa lahat. 415 00:19:43,010 --> 00:19:46,810 Ito ay isang napaka-simpleng web page na malamang na gumagamit ng kung ano ang HTML tags-- lamang 416 00:19:46,810 --> 00:19:48,970 hulaan mula sa mga nakaraang mga halimbawa? 417 00:19:48,970 --> 00:19:49,890 >> Ano yan? 418 00:19:49,890 --> 00:19:53,920 H1-- marahil para sa malaking bold pamagat, na logo up top, CS50. 419 00:19:53,920 --> 00:19:55,080 At ano ang iba ay sa pag-play? 420 00:19:55,080 --> 00:19:55,799 Oo? 421 00:19:55,799 --> 00:19:56,840 Madla: Unordered listahan. 422 00:19:56,840 --> 00:19:59,990 David MALAN: Unordered list-- kaya ang Ul tag at marahil isang pares ng li tag. 423 00:19:59,990 --> 00:20:01,840 At kung hindi mo matandaan ang mga ito, ito matapat ay hindi mahalaga. 424 00:20:01,840 --> 00:20:04,170 Ang mga ito ay malambot na uri ng detalye sa pagpapatupad ng HTML 425 00:20:04,170 --> 00:20:06,378 na mabilis kang maghanap ng at ikaw ay bumalik sa iyong paraan. 426 00:20:06,378 --> 00:20:10,040 Susubukan naming mas pokus sa programming mga ideya na ang juicier piraso. 427 00:20:10,040 --> 00:20:12,890 >> Kaya sabihin lamang ng isang mabilis tingnan ang HTML-- at sa katunayan 428 00:20:12,890 --> 00:20:16,880 kung buksan up ko ang source view dito, yup, na eksakto kung ano ang nangyayari dito. 429 00:20:16,880 --> 00:20:18,440 Mayroong isang ul tag. 430 00:20:18,440 --> 00:20:20,630 Nested sa loob ng iyon ay upang li tag. 431 00:20:20,630 --> 00:20:24,470 At pagkatapos ay hiniram ang URL ko ng aktwal na syllabus dito. 432 00:20:24,470 --> 00:20:27,570 >> At pagkatapos ay sa lectures.php ay tila 433 00:20:27,570 --> 00:20:31,640 ibang mga dynamic na binuong pahina na pagpunta na magkaroon, ni see-- ah ipaalam, 434 00:20:31,640 --> 00:20:33,170 sa unang dalawang linggo ng panayam. 435 00:20:33,170 --> 00:20:36,600 Kaya week zero at ng isang linggo, sabihin tingnan this-- kung titingnan ang pinagmulan ng pahina, 436 00:20:36,600 --> 00:20:38,120 din sobrang simple. 437 00:20:38,120 --> 00:20:42,430 Ang mga ito ay humahantong sa dalawang pahina tinatawag week0.php, at week1.php. 438 00:20:42,430 --> 00:20:44,040 Kaya isaalang-alang na ngayon kung ano ang nangyayari. 439 00:20:44,040 --> 00:20:50,630 >> Kapag nag-click ako sa week0.php, ang aking laptop ay gumawa ng isang kahilingan para sa week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Ang web server, a.k.a., CS50 IDE, ay tumatanggap na virtual sobre. 442 00:20:58,110 --> 00:21:01,040 Ito ay nakakakita ng mensahe tulad ng, makakuha week0.php. 443 00:21:01,040 --> 00:21:05,060 Pagkatapos Ito ay pagbibigay kahulugan sa mga file, top sa ibaba, kaliwa hanggang right-- ang file 444 00:21:05,060 --> 00:21:07,720 tinatawag week0.php-- at pagdura ng mga resulta. 445 00:21:07,720 --> 00:21:10,510 Kaya sa loob ng file na ito, week0.php, ay dapat na 446 00:21:10,510 --> 00:21:15,410 ang controller logic na ay pagbuo ng ito HTML, at kami sa lalong madaling panahon makita na. 447 00:21:15,410 --> 00:21:19,340 >> Ngunit sa ngayon, hayaan mo akong mag-click sa linggo zero, at ngayon kami ay Miyerkules at Biyernes, 448 00:21:19,340 --> 00:21:25,260 at ngayon kami ng mga slide dahan-dahan mula sa linggo zero. 449 00:21:25,260 --> 00:21:27,400 At maaari mong isipin na ito mula sa paraan likod kapag. 450 00:21:27,400 --> 00:21:29,340 Kaya na ang lahat ng website na ito ay ginagawa. 451 00:21:29,340 --> 00:21:31,120 >> Kaya isaalang-alang ang kung paano ito ginagawa ito hayaan. 452 00:21:31,120 --> 00:21:34,290 Pupunta ako sa bumalik sa source code dito, sa CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 at ako pagpunta upang buksan ang index.php. 454 00:21:36,660 --> 00:21:38,910 Sa tuktok ng file na ito ay isang bungkos ng mga komento. 455 00:21:38,910 --> 00:21:43,000 At pagkatapos ay sa gitna ng ang file na ito, ito lumiliko out, ay walang code PHP ano pa man. 456 00:21:43,000 --> 00:21:47,380 Dahil kung hindi ka magkaroon ng alinman sa mga bukas bracket tags tandang pananong PHP, 457 00:21:47,380 --> 00:21:49,180 ikaw ay libre upang ilagay lamang ang HTML. 458 00:21:49,180 --> 00:21:51,480 >> Dahil kung ano ang PHP interpreter ay dapat na gawin, 459 00:21:51,480 --> 00:21:53,938 ay kapag nagbabasa ng mga ito sa ganitong file-- sa itaas hanggang sa ibaba, kaliwa hanggang right-- 460 00:21:53,938 --> 00:21:59,100 binibigyang-kahulugan lamang ito code na nakikita ito sa pagitan ng mga anggulo bracket tanong mark. 461 00:21:59,100 --> 00:22:02,380 At anumang bagay na ito ay hindi makilala bilang PHP, spits out ito lamang. 462 00:22:02,380 --> 00:22:05,080 At HTML Ay kabilang sa mga bagay-bagay ay ito lamang ang sabihin ang lahat. 463 00:22:05,080 --> 00:22:09,090 >> Kaya maaaring magkaroon ang file na ito tinawag index.html, 464 00:22:09,090 --> 00:22:11,690 ngunit ako sa pagbibigay ng pangalan sa lahat ng bagay dot PHP bilang isang tuntong bato. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- parehas underwhelming, ito ay lamang ng ilang mga HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, katulad lamang ng ilang mga HTML. 467 00:22:19,840 --> 00:22:22,300 >> Ngunit ni ilagay sa ngayon hayaan kilalang-kilala sumbrero engineering, 468 00:22:22,300 --> 00:22:24,400 at isaalang-alang kung paano namin mapapabuti ito. 469 00:22:24,400 --> 00:22:28,541 Ito ay hindi mahirap na gawin ito, ngunit ang uri ko ng devolved sa kopya at i-paste. 470 00:22:28,541 --> 00:22:31,540 At sa katunayan, kapag gumawa ako nang dalawang linggo, ikaw ay malaman kung ano marahil ako pagpunta sa gawin? 471 00:22:31,540 --> 00:22:34,940 Pupunta ako sa pumunta sa week1.php, Ako pagpunta upang i-highlight ang lahat ng bagay. 472 00:22:34,940 --> 00:22:39,110 Pupunta ako sa kopyahin ito, i-paste ito sa isang bagong file na tinatawag na week2.php, 473 00:22:39,110 --> 00:22:42,440 mag-tweak ang ilang mga URL, at maging sa aking paraan. 474 00:22:42,440 --> 00:22:45,240 >> Kaya batay sa kung ano na namin makikita sa C na, 475 00:22:45,240 --> 00:22:46,860 ito ay hindi pakiramdam karapatan, sana. 476 00:22:46,860 --> 00:22:49,610 Kopyahin, i-paste bihira ang tamang solusyon. 477 00:22:49,610 --> 00:22:51,429 Kaya kung ano ang maaari naming simulan gawin upang mapabuti ito? 478 00:22:51,429 --> 00:22:53,345 Nasaan ang mga oportunidad para sa mas mahusay na disenyo? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Sa oras na nakukuha ko na week eight, ito ay pagpunta 481 00:22:58,760 --> 00:23:00,910 upang maging talagang nakakainis kung gusto kong baguhin 482 00:23:00,910 --> 00:23:03,930 ang font ng bawat isa sa ang aking mga pahina, o kung gusto ko 483 00:23:03,930 --> 00:23:06,522 upang baguhin ang istraktura ng layout. 484 00:23:06,522 --> 00:23:08,396 Kaya kung saan ay ang pagkakataon para sa mas mahusay na disenyo? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Well, sabihin isaalang-alang kung ano ang hahanapin ibinahagi sa lahat ng mga file na ito. 487 00:23:15,160 --> 00:23:21,696 >> Narito ang isang linggo, narito ang week zero, narito ang lectures.php, 488 00:23:21,696 --> 00:23:25,790 narito ang index.php-- ano ay pareho at ano ang iba't ibang, halos pagsasalita, 489 00:23:25,790 --> 00:23:26,760 sa bawat isa sa mga file na ito? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Oo? 492 00:23:32,060 --> 00:23:34,560 >> Madla: [hindi marinig] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 David MALAN: OK, mabuti. 495 00:23:42,160 --> 00:23:46,115 Kaya mayroong isang pattern, tiyak, na sukat sa bawat oras na pinili ko ang lecture ko, 496 00:23:46,115 --> 00:23:48,250 Dapat kong maging sa pagbuo ng isang halos katulad na naghahanap ng pahina. 497 00:23:48,250 --> 00:23:50,375 At kaya marahil maaari kong pagkilos ang katotohanan na ang tunay, 498 00:23:50,375 --> 00:23:53,060 kami kusa ayon sa bilang index aming lectures-- 499 00:23:53,060 --> 00:23:55,290 kung ako ay maaaring maglagay ng mas maraming mga salita sa iyong sagot. 500 00:23:55,290 --> 00:23:59,984 At kung ano ay ang tanging bagay, talaga, na ang pagbabago sa pagitan ng linggo one-- 501 00:23:59,984 --> 00:24:02,400 at hayaan mo akong mag-scroll pababa upang ito ay humigit-kumulang sa parehong place-- 502 00:24:02,400 --> 00:24:05,480 kaya dito ay linggo zero, humigit-kumulang sa itaas. 503 00:24:05,480 --> 00:24:12,370 Narito ang isang linggo, linggo zero, isang linggo, linggo zero. 504 00:24:12,370 --> 00:24:14,370 OK, literal kung alam mo walang programa kung ano pa man, 505 00:24:14,370 --> 00:24:16,286 ito ay ngayon tulad ng isang pattern na tumutugma sa laro. 506 00:24:16,286 --> 00:24:17,200 Kaya kung ano ang iba't-ibang? 507 00:24:17,200 --> 00:24:18,765 Oo? 508 00:24:18,765 --> 00:24:19,777 >> Madla: [hindi marinig] 509 00:24:19,777 --> 00:24:22,360 David MALAN: Good, kaya ang pamagat ay nagbabago, napaka bahagyang. 510 00:24:22,360 --> 00:24:24,010 Zero ang nangyayari, siyempre, sa isa. 511 00:24:24,010 --> 00:24:25,570 Parehong bagay ang nangyayari sa H1 tag. 512 00:24:25,570 --> 00:24:28,790 At kami ay hindi lubos na makita ito bilang madali, dahil ang mga URL ay isang maliit na mahaba. 513 00:24:28,790 --> 00:24:30,670 Ngunit ang mga URL ay nagbabago nang bahagya. 514 00:24:30,670 --> 00:24:34,490 >> Ngunit kung ano ang hindi nagbabago ay, maglakas-loob ko sabihin, ang karamihan sa mga nilalaman ng page-- 515 00:24:34,490 --> 00:24:38,530 mga tag na HTML ay ang parehong, ang pinuno ay ang parehong, ang pamagat ay halos pareho, 516 00:24:38,530 --> 00:24:40,659 katawan ay ang parehong, at halos lahat ng iba pa 517 00:24:40,659 --> 00:24:42,450 ay pareho maliban para sa ang mga maliit na mga pag-aayos. 518 00:24:42,450 --> 00:24:45,310 Kaya kung paano namin pumunta tungkol sa factoring ilan sa mga ito sa labas? 519 00:24:45,310 --> 00:24:48,740 >> Well hayaan mo akong magpanukala eksakto na sa susunod na bersyon. 520 00:24:48,740 --> 00:24:53,890 Kaya dito sa bersyon ng isa, kailangan ko ang eksaktong parehong file, kasama ang isang pares ng mga iba. 521 00:24:53,890 --> 00:24:59,730 Narito ang index.php-- at kahit na hindi mo na makikita PHP bago, 522 00:24:59,730 --> 00:25:05,511 kung ano ang am ako malamang ginagawa upang malutas ito problem-- batay sa kung ano ang nakikita mo dito? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Oo, ito ay na ang isang bahagyang pangako? 525 00:25:12,760 --> 00:25:13,450 Hindi? 526 00:25:13,450 --> 00:25:16,020 Oo, pumunta sa. 527 00:25:16,020 --> 00:25:17,380 >> Madla: [hindi marinig] 528 00:25:17,380 --> 00:25:18,380 >> David MALAN: Yep. 529 00:25:18,380 --> 00:25:20,380 >> Madla: [hindi marinig] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> David MALAN: Kailangan ko sa iyo upang nagsasalita lamang ng isang maliit na louder. 532 00:25:28,669 --> 00:25:31,084 >> Madla: [hindi marinig] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 David MALAN: OK, mabuti. 535 00:25:36,660 --> 00:25:38,620 At think-- ko ito ay mahirap na marinig you-- ngunit ako 536 00:25:38,620 --> 00:25:42,690 isipin kung ano ang nakukuha sa ay na ang mga tag na na-karaniwang up itaas, 537 00:25:42,690 --> 00:25:47,710 at ang mga tag na ay karaniwan sa ibaba, na ngayon ay isinasali out, 538 00:25:47,710 --> 00:25:51,140 o relegated ano ang mga file? 539 00:25:51,140 --> 00:25:53,476 Header.php at footer.php-- at kami ay pagpunta 540 00:25:53,476 --> 00:25:55,600 upang gumawa ng ilang mga pag-aayos na harapin ang mga pag-aalala ka na lamang 541 00:25:55,600 --> 00:25:59,370 itataas ang tungkol sa pagbabago ng mga numero, Halimbawa, kung narinig ko kayo ng tama. 542 00:25:59,370 --> 00:26:02,060 >> Ngunit na parang ang diwa ng mga ito. 543 00:26:02,060 --> 00:26:04,820 Kung nagkaroon ng isang malaking halaga ng kalabisan sa tuktok ng pahina, 544 00:26:04,820 --> 00:26:06,736 at ang isang malaking halaga ng kalabisan sa ibaba, 545 00:26:06,736 --> 00:26:09,280 hayaan literal lamang highlight ni at pinutol na nilalaman out, 546 00:26:09,280 --> 00:26:13,270 ilagay ito sa isang hiwalay na file-- tulad lamang ang ideya ng CSS, kung saan isinasali out namin 547 00:26:13,270 --> 00:26:16,710 halos katulad aesthetics, ilagay ito sa isang hiwalay na file dot PHP, 548 00:26:16,710 --> 00:26:20,340 gamitin ang mga nangangailangan mechanism-- saan ay tulad ng C sharp include-- saan 549 00:26:20,340 --> 00:26:23,570 ay mahalagang tulad ng sinasabi ng pumunta grab ang mga nilalaman ng header.php, 550 00:26:23,570 --> 00:26:25,370 at kopyahin at ilagay ito dito. 551 00:26:25,370 --> 00:26:29,490 >> Ngunit ano ang ibig sabihin nito ay na ngayon sa index.php, mayroon akong mga dalawang linya. 552 00:26:29,490 --> 00:26:32,130 Sa lectures.php, ako din may mga dalawang linya. 553 00:26:32,130 --> 00:26:35,230 Sa week0.php, ako din may mga dalawang linya. 554 00:26:35,230 --> 00:26:38,380 >> Kaya ngayon, kung gusto kong baguhin ang pamagat ng lahat ng aking mga pahina, 555 00:26:38,380 --> 00:26:40,530 o gusto ko na baguhin ang pangunahing istraktura, 556 00:26:40,530 --> 00:26:44,380 Maaari ko ba itong baguhin sa isang lugar lamang ngayon, o dalawang places-- header at footer, 557 00:26:44,380 --> 00:26:45,429 ayon sa pagkakabanggit. 558 00:26:45,429 --> 00:26:47,970 Ngayon panimulang ang code upang tumingin ng kaunti pa misteriyoso, right? 559 00:26:47,970 --> 00:26:53,590 Pero kung sa tingin mo tungkol sa kung ano ang pahina ay doing-- kung ako humihiling week0.php, 560 00:26:53,590 --> 00:26:59,880 tulad lamang sa paglipas ng pagguhit here-- kapag week0.php ay hiniling, 561 00:26:59,880 --> 00:27:00,960 kung ano ang ibig sabihin nito? 562 00:27:00,960 --> 00:27:04,410 >> Literal, ang file na ito ay hiniling ng browser. 563 00:27:04,410 --> 00:27:06,240 A.k.a. Ang web server-- 564 00:27:06,240 --> 00:27:09,250 Grabs ito CS50 ID-- file, week0.php, at bumabasa 565 00:27:09,250 --> 00:27:10,780 ito sa itaas hanggang sa ibaba, kaliwa papuntang kanan. 566 00:27:10,780 --> 00:27:15,400 On line isa, agad ito ay nakatagpo ng bukas bracket tandang pananong PHP, nangangailangan 567 00:27:15,400 --> 00:27:17,872 header dot PHP, at iba ano ang interpreter PHP 568 00:27:17,872 --> 00:27:20,580 does-- na ang nakapaloob sa web server, dahil kami preconfigured 569 00:27:20,580 --> 00:27:24,580 ito para you-- awtomatikong napupunta sa header.php, kopya ng mga nilalaman, 570 00:27:24,580 --> 00:27:25,640 pastes ang mga ito dito. 571 00:27:25,640 --> 00:27:28,790 >> Ngunit pagkatapos ay ang pagkikita interpreter question mark malapit bracket, 572 00:27:28,790 --> 00:27:30,320 kaya ang lahat ng ito ay tapos na ang pag-iisip. 573 00:27:30,320 --> 00:27:33,400 Ngayon ay walang taros lamang spits out ng dalawang linya sa pamamagitan ng pitong, 574 00:27:33,400 --> 00:27:35,240 dahil ito lang raw HTML. 575 00:27:35,240 --> 00:27:38,470 Nakakakuha sa line walong, at gumawa parehong magic again-- pagbubukas ng file, 576 00:27:38,470 --> 00:27:41,460 daklot ang mga nilalaman, at nangangailangan ng mga ito o i-paste ito 577 00:27:41,460 --> 00:27:42,480 sa panahon na iyon o doon. 578 00:27:42,480 --> 00:27:44,210 >> Ngunit ko lang tinutukoy ng isang bug. 579 00:27:44,210 --> 00:27:48,610 Ito ay isang bahagyang hakbang pabalik, dahil kung titingnan natin sa header.php, 580 00:27:48,610 --> 00:27:50,850 Uri ng ko na hiwa ng isang sulok. 581 00:27:50,850 --> 00:27:56,250 Ano ang tampok na sumuko ako sa order upang makakuha ng ito tiyak na mas mahusay na disenyo? 582 00:27:56,250 --> 00:27:57,305 Oo? 583 00:27:57,305 --> 00:27:58,180 Madla: [hindi marinig] 584 00:27:58,180 --> 00:28:00,570 David MALAN: Oo, uri ko ng hiwa ng isang nontrivial sulok. 585 00:28:00,570 --> 00:28:04,489 Tulis out mo na kung ano ang pagbabago ng ay ang pamagat, ang bilang sa pamagat, 586 00:28:04,489 --> 00:28:05,530 at ang mga numero sa H1. 587 00:28:05,530 --> 00:28:08,170 Kaya ang aking mga solusyon ay, OK, palitan ang pangalan ni lamang ang pahina ipaalam, 588 00:28:08,170 --> 00:28:10,080 at hindi haharapin ang mga iyon problema kahit ano pa man. 589 00:28:10,080 --> 00:28:12,130 Kaya na ang isang bahagyang hakbang paurong para sigurado. 590 00:28:12,130 --> 00:28:14,300 >> Ngunit ano ang kapansin-pansin dito ay na kung ano ang ginawa ko 591 00:28:14,300 --> 00:28:17,200 sa kabilang banda ay isinasali ang lahat ng mga karaniwang mga bagay-bagay. 592 00:28:17,200 --> 00:28:21,520 At sa footer.php, mapapansin isinasali ko out ang lahat ng iyon, kahit na mas maliit, 593 00:28:21,520 --> 00:28:22,790 karaniwang bagay-bagay. 594 00:28:22,790 --> 00:28:26,070 Kaya kailangan ko upang kahit papaano ay ngayon magagawang kumuha ng isa pang hakbang pasulong, at ayusin 595 00:28:26,070 --> 00:28:27,160 na ang mga isyu na pamagat. 596 00:28:27,160 --> 00:28:28,180 Kaya sabihin gawin iyon. 597 00:28:28,180 --> 00:28:35,060 >> Hayaan akong pumunta sa aking pangalawang bersyon dito, kung saan, muli, ay may parehong file 598 00:28:35,060 --> 00:28:36,825 maliban sa isang bagong karagdagan. 599 00:28:36,825 --> 00:28:38,950 At ito ay isang maliit na mas masyadong masalita, ngunit sabihin makita kung kami ay 600 00:28:38,950 --> 00:28:40,550 Maaari manunudyo bukod kung ano ang nangyayari sa dito. 601 00:28:40,550 --> 00:28:45,370 Kaya sa halip na nangangailangan header.php, at footer.php, 602 00:28:45,370 --> 00:28:50,180 Tila ako ay nangangailangan lamang ng isang file-- tinatawag, siyempre, helpers.php. 603 00:28:50,180 --> 00:28:52,560 At hayaan mo akong magtadhana ngayon, ano ang nasa loob ng helpers.php 604 00:28:52,560 --> 00:28:55,330 lamang ang isang bungkos ng mga function na sinulat ko, tulad ng dati. 605 00:28:55,330 --> 00:28:57,550 Ngunit tinatawag ko ito helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Ngayon tila, sa tatlong linya at 10, ako 607 00:29:00,370 --> 00:29:02,840 pagtawag dalawang functions-- header render, render footer. 608 00:29:02,840 --> 00:29:05,040 Yaong ay hindi nanggagaling sa PHP, isinulat ko ang mga sarili ko. 609 00:29:05,040 --> 00:29:07,880 At nilagyan ko ang mga ito sa helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Ngayon, iyong makikita lamang namin ang syntax na ito isang beses, at ito ay sobrang maikling. 611 00:29:11,210 --> 00:29:15,330 Ngunit ito ay tila isang argument upang mag-render ng header, ang mga function. 612 00:29:15,330 --> 00:29:16,450 Bakit ako malaman na? 613 00:29:16,450 --> 00:29:18,522 Well dito ay isang malapit paren, narito ang isang open paren. 614 00:29:18,522 --> 00:29:21,230 At siyempre, tulad ng sa C, kahit ano sa pagitan ng mga panaklong 615 00:29:21,230 --> 00:29:23,350 ay isang input-- o isang argumento sa function. 616 00:29:23,350 --> 00:29:26,710 >> Ano ang mga uri ng data ng argument na ito, batay sa kung ano nai-highlight ko? 617 00:29:26,710 --> 00:29:30,820 Ano ang gagawin sa mga square bracket ipahiwatig, batay sa nakaraang linggo? 618 00:29:30,820 --> 00:29:33,390 Oo, ito ay isang array-- sadyang isang nag-uugnay array. 619 00:29:33,390 --> 00:29:35,700 At ito syntax tinatanggap ay isang maliit na funky, 620 00:29:35,700 --> 00:29:38,860 ngunit ito ay lamang ang pagpasa sa isa key pares ng halaga. 621 00:29:38,860 --> 00:29:43,530 Ang susi ay, quote magpanipi pamagat, at ang mga halaga ay CS50. 622 00:29:43,530 --> 00:29:46,220 >> Kung kami ay tapos na ito sa C, ito ay maaring halip 623 00:29:46,220 --> 00:29:49,400 Tumingin ng mas maraming tulad nito, lamang quote magpanipi CS50-- 624 00:29:49,400 --> 00:29:52,460 o talagang magiging kulot braces, o isang bagay na tulad nang sa C, 625 00:29:52,460 --> 00:29:55,580 kung saan ang mga key ay zero, at ang halaga ay CS50. 626 00:29:55,580 --> 00:29:59,840 Ngunit muli, sa PHP, kahit na ang syntax ay, muli, ang isang maliit na kakaiba, 627 00:29:59,840 --> 00:30:02,860 ito ay nagpapahintulot sa iyo upang pumasa sa mga salita sa halip ng mga numero 628 00:30:02,860 --> 00:30:05,120 upang iugnay key na may halaga. 629 00:30:05,120 --> 00:30:06,390 >> Kaya kung ano ang ibig sabihin ng lahat? 630 00:30:06,390 --> 00:30:09,750 Kung pumunta ako sa helpers.php, Tingnan natin ang function na ipaalam. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, sa halip renderHeader ay ang aking function, 632 00:30:13,620 --> 00:30:16,220 at alam ko na dahil nakikita ko ang function keyword dito. 633 00:30:16,220 --> 00:30:19,450 Ito ang bagong mula C-- ito tila tumatagal ng isang argument na tinatawag data-- 634 00:30:19,450 --> 00:30:22,400 ngunit ako ay maaaring magkaroon ng tinatawag na ito anumang bagay, ngunit ko na tinatawag na ito ng data, 635 00:30:22,400 --> 00:30:25,090 na lamang ng isang maliit na clean-- at tumagal lamang ng isang hulaan, lalo na 636 00:30:25,090 --> 00:30:28,173 kung na-program sa ilang iba pang mga mas mataas na antas ng wika bago, isang bagay 637 00:30:28,173 --> 00:30:29,820 itaas C, conceptually. 638 00:30:29,820 --> 00:30:33,820 >> Ano ang ibig sabihin ng pantay open bracket malamang na ibig sabihin square bracket? 639 00:30:33,820 --> 00:30:35,540 O kung ano ang maaaring ibig sabihin nito? 640 00:30:35,540 --> 00:30:39,660 Hindi namin nakita ito sa C. Oo? 641 00:30:39,660 --> 00:30:40,480 >> Ang isang walang laman na array. 642 00:30:40,480 --> 00:30:45,440 Partikular, ang ibig sabihin nito na kung ang ang user ay hindi na tawag ay renderHeader 643 00:30:45,440 --> 00:30:49,340 may isang argument, hindi pa rin ako pupunta na magkaroon ng isang argument na tinatawag na data, 644 00:30:49,340 --> 00:30:52,327 ngunit default na halaga ay magiging isang walang laman na array. 645 00:30:52,327 --> 00:30:53,660 Kaya ito ay lamang ng isang magandang kaginhawaan. 646 00:30:53,660 --> 00:30:56,493 Hindi ko na kailangang sumigaw sa gumagamit, o sasabihin mo ginagamit ang aking mga pag-andar na mali. 647 00:30:56,493 --> 00:30:59,849 Ako ay maaaring magbigay lamang ng gumagamit ang isang default halaga, kung hindi ko lalo na pag-aalaga. 648 00:30:59,849 --> 00:31:01,890 Ngayon ang function na ito, ako pagpunta upang iwagayway ang aking mga kamay sa. 649 00:31:01,890 --> 00:31:07,620 Ngunit ito Extract function na nagbibigay-daan sa amin na ipasa ang mga variable sa data 650 00:31:07,620 --> 00:31:10,360 sa header.php sa mga sumusunod na paraan. 651 00:31:10,360 --> 00:31:13,100 At ito ay ang huling piraso, Sa tingin ko, ng funky syntax. 652 00:31:13,100 --> 00:31:15,860 Ito ang aking bagong bersyon ng header.php-- ito 653 00:31:15,860 --> 00:31:20,140 ginagamit upang sabihin, nang literal, bukas title bracket CS50, at na ito. 654 00:31:20,140 --> 00:31:21,766 At parehong bagay para sa H1. 655 00:31:21,766 --> 00:31:24,310 >> Ngayon ay tila sabi isang bagay na medyo funky. 656 00:31:24,310 --> 00:31:28,030 At ipaalam sa akin pasimplehin ito para sa isang sandali ang mga sumusunod. 657 00:31:28,030 --> 00:31:31,020 Ito ay kung ano na ko nagbago ang aking mga pamagat na. 658 00:31:31,020 --> 00:31:35,140 Gayunman, ito ay nakakakuha ng isang maliit na pangit upang patuloy na bukas bracket na may PHP, 659 00:31:35,140 --> 00:31:36,610 at pagkatapos ay gamitin ang function print. 660 00:31:36,610 --> 00:31:40,810 Lumalabas na may isang shorthand PHP notation para sa mga ito, na kung saan ay lamang 661 00:31:40,810 --> 00:31:45,050 equal sign, na kung saan ay technically isang function na tinatawag na echo sa halip na i-print, 662 00:31:45,050 --> 00:31:46,800 ngunit ito ay ang mga parehong bagay, mabisa. 663 00:31:46,800 --> 00:31:48,440 >> Iyon lang mukhang mas mahusay. 664 00:31:48,440 --> 00:31:50,510 Ito lamang ay isang syntactic asukal, kung ikaw ay, 665 00:31:50,510 --> 00:31:52,260 na gumagawa ng hitsura ng isang maliit na mas mahusay ang aking code. 666 00:31:52,260 --> 00:31:54,010 Ngunit ito ay lumiliko out, at kami ay makita ito muli 667 00:31:54,010 --> 00:31:57,420 bago mahaba, kami ay may sa tawag na ito annoyingly pang function na tinatawag na 668 00:31:57,420 --> 00:32:00,582 HTML mga espesyal na karakter sa PHP, dahil ito ay lumiliko out 669 00:32:00,582 --> 00:32:02,790 may mga ilang mga input na maaaring bigyan ang mga gumagamit sa amin, 670 00:32:02,790 --> 00:32:05,160 o na maaaring magbigay sa amin ng mga gumagamit, na pagpunta sa masira ang aming site. 671 00:32:05,160 --> 00:32:07,035 Ngunit kami ay makita na ang susunod na linggo na may JavaScript. 672 00:32:07,035 --> 00:32:10,740 Ngunit sa ngayon, lamang malaman na ang file na ito, headers.php, kailangan lang 673 00:32:10,740 --> 00:32:13,040 tumatagal ang pamagat na Ako ang pumasa sa, ito ay gumawa ng 674 00:32:13,040 --> 00:32:17,380 siguraduhin na ito ay ligtas na iturok sa isang web page, at ito spits ito bilang aking pamagat 675 00:32:17,380 --> 00:32:18,640 at bilang aking H1. 676 00:32:18,640 --> 00:32:24,440 Kaya kung pumunta ako sa bersyon na ito ngayon, mapapansin na ang mga aralin ay bumalik pamagat nito, 677 00:32:24,440 --> 00:32:28,630 week zero ay bumalik pamagat nito, at sa katunayan, ang HTML ako sa pagbuo ng 678 00:32:28,630 --> 00:32:32,110 ay kapareho ng kung ano ang unang bersyon ng aking was-- maliban para sa aking whitespace, 679 00:32:32,110 --> 00:32:35,150 dahil ko na nagsimula sa pag-format ang aking code ng kaunti naiiba. 680 00:32:35,150 --> 00:32:38,082 Ngunit ko na nabuo ko ang lahat ang code sa pag-aalaga tungkol sa. 681 00:32:38,082 --> 00:32:39,790 Kaya hayaan mo akong i-pause para sa lamang ng isang sandali at tingnan 682 00:32:39,790 --> 00:32:42,200 kung mayroong anumang mga katanungan o pagkalito na aking nilikha. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Ni-iba ng kahulugan ang lahat ng karapatan, kaya hayaan isang maliit na mahirap dito 685 00:32:48,150 --> 00:32:51,500 upang makita kung may isang pagkakataon para sa pagpapabuti. 686 00:32:51,500 --> 00:32:56,130 Nagkaroon din helpers.php ito function, na tinatawag renderFooter. 687 00:32:56,130 --> 00:32:59,652 At kung ano ang kapansin-pansin sa renderHeader, at renderFooter? 688 00:32:59,652 --> 00:33:02,610 At muli, para sa mga layunin sa ngayon, alam na ang katas function ay lamang 689 00:33:02,610 --> 00:33:08,280 ang aking paraan ng pagpasa ng argumento sa header.php at footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Paumanhin? 692 00:33:11,780 --> 00:33:13,056 >> Madla: [hindi marinig] 693 00:33:13,056 --> 00:33:15,180 David MALAN: Oo, ako lamang nagbago ang nangangailangan ng linya. 694 00:33:15,180 --> 00:33:19,410 Kaya literal, nakatuon ko na ang kasalanan ng pagkopya at pag-paste, pa muli. 695 00:33:19,410 --> 00:33:21,920 Ito ay hindi isang malaking bilang ng linya, ngunit dumating on-- 696 00:33:21,920 --> 00:33:25,220 kung ako sa pagkopya at pag-paste ng lahat ng bagay lamang upang baguhin ang isang maliit na salita, 697 00:33:25,220 --> 00:33:28,610 at ang isang maliit na salita na ang mga puntos Alan out ay footer dito, kumpara sa header dito. 698 00:33:28,610 --> 00:33:30,670 Kung hindi man, ang lahat ay magkapareho, maliban para sa, 699 00:33:30,670 --> 00:33:32,180 siyempre, mga pangalan ng function ni. 700 00:33:32,180 --> 00:33:33,690 Kaya kung ano ang maaari naming gawin mas mahusay? 701 00:33:33,690 --> 00:33:39,810 >> Well hayaan buksan up ako ang bersyon na ito dito, kung saan sa helpers.php, 702 00:33:39,810 --> 00:33:42,300 bakit hindi ko na lang makakuha ng isang maliit na mas matalinong tungkol sa mga ito? 703 00:33:42,300 --> 00:33:46,410 Sumulat bahagyang mas masalimuot code, ngunit tumawag ito render? 704 00:33:46,410 --> 00:33:48,470 Kaya ano pa ako sa panimula ay nagbago? 705 00:33:48,470 --> 00:33:51,770 >> Ito ay tumatagal ng isang argument now-- dalawang argumento, data pa rin. 706 00:33:51,770 --> 00:33:54,444 At pagkatapos ay kung ano ang unang pangalan marahil ay ginagamit para sa, 707 00:33:54,444 --> 00:33:55,860 batay sa kung ano ang iyong binabasa dito? 708 00:33:55,860 --> 00:33:58,452 Kahit na ang ilan sa mga syntax ay bago pa rin. 709 00:33:58,452 --> 00:33:59,660 Anong sign template dollar? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Paumanhin? 712 00:34:03,016 --> 00:34:03,710 >> Madla: Header o footer. 713 00:34:03,710 --> 00:34:04,510 >> David MALAN: Header o footer. 714 00:34:04,510 --> 00:34:07,134 Kaya tila, ako ay nagpasya na kung ang tanging bagay na pagbabago 715 00:34:07,134 --> 00:34:10,159 ay kung ano ang template ko gusto upang print-- at sa pamamagitan ng template 716 00:34:10,159 --> 00:34:13,100 Ibig kong sabihin na ito ay plano para sa code na gusto kong output, 717 00:34:13,100 --> 00:34:16,350 ngunit nais kong mag-plug ng ilang values-- kaya kung ito ay lamang ng header 718 00:34:16,350 --> 00:34:20,440 o footer, bakit hindi ko parameterize na at tawagan ang argument dollar sign 719 00:34:20,440 --> 00:34:21,409 template? 720 00:34:21,409 --> 00:34:26,250 At pagkatapos ay nagbibigay-daan sa akin ang mga funky syntax upang lumikha ng isang landas sa isang variable dito. 721 00:34:26,250 --> 00:34:28,030 >> Kaya dollar sign landas ay isang variable. 722 00:34:28,030 --> 00:34:31,120 Ano ang syntax na ito gawin, kung hindi ka pamilyar? 723 00:34:31,120 --> 00:34:32,512 Oo? 724 00:34:32,512 --> 00:34:34,065 >> Madla: [hindi marinig] 725 00:34:34,065 --> 00:34:34,940 David MALAN: Eksakto. 726 00:34:34,940 --> 00:34:37,600 Kung template ay, quote magpanipi, header, o kung template ay, 727 00:34:37,600 --> 00:34:41,170 quote magpanipi, footer, na linya doon na nai-highlight ko, walong linya, 728 00:34:41,170 --> 00:34:46,330 ay simpleng pagkuha na pangalan, tulad ng header, at concatenating ito sa tuldok PHP. 729 00:34:46,330 --> 00:34:49,750 Kaya tayo ay hindi na ito operator sa C. Ito dot operator ay 730 00:34:49,750 --> 00:34:54,520 isang kamangha-manghang bagay sa PHP-- kung ikaw ay pamilyar sa JavaScript o Java, 731 00:34:54,520 --> 00:34:56,949 maaari mong gamitin ang plus sign na gawin pagdudugtong. 732 00:34:56,949 --> 00:34:59,974 >> Sa C, ito ay isang sakit sa neck-- at ako kaya paumanhin, sa p-set anim, 733 00:34:59,974 --> 00:35:02,390 ikaw ay pagpunta sa may sa gawin this-- ito ay isang sakit sa ulo 734 00:35:02,390 --> 00:35:03,930 pagdugtungin string. 735 00:35:03,930 --> 00:35:04,670 Bakit? 736 00:35:04,670 --> 00:35:06,580 Well, dahil kung mayroon ka isang string na ito mahaba, 737 00:35:06,580 --> 00:35:09,538 at isa pang string na ito mahaba, hindi mo pwedeng plug ang mga ito nang magkakasama. 738 00:35:09,538 --> 00:35:11,070 Ano ang gagawin mo sa halip ay may sa gawin sa C? 739 00:35:11,070 --> 00:35:11,680 Oo? 740 00:35:11,680 --> 00:35:12,380 >> Madla: [hindi marinig] 741 00:35:12,380 --> 00:35:15,090 >> David MALAN: Kailangan mong malloc memorya, o gumamit ng isang array sa stack. 742 00:35:15,090 --> 00:35:17,214 At tunay na may sa gumawa ng sapat na malaki na array 743 00:35:17,214 --> 00:35:20,940 upang magkasya ang plus na ito, plus ang backslash zero. 744 00:35:20,940 --> 00:35:24,994 Pagkatapos pagdugtungin ang mga ito nang sama-sama gamit pukawin cat o manu-manong na may isang para sa loop, 745 00:35:24,994 --> 00:35:26,160 o anumang bilang ng mga diskarte. 746 00:35:26,160 --> 00:35:27,760 At ipapakita namin sa iyo ng isang pares sa p-set anim. 747 00:35:27,760 --> 00:35:29,080 >> Ito ay isang sakit sa ulo. 748 00:35:29,080 --> 00:35:34,190 At ito ay tunay na kung ano ang ibig sabihin ko tungkol sa ito kumpara this-- tulad ng C kumpara PHP. 749 00:35:34,190 --> 00:35:36,870 Makukuha mo lang kaya marami pang iba pag-andar para sa libre, 750 00:35:36,870 --> 00:35:39,030 sa gayon ay maaari kang tumuon, sa isip, sa masaya 751 00:35:39,030 --> 00:35:41,190 bahagi ng coding, ang proyekto na nais mong malutas, 752 00:35:41,190 --> 00:35:43,190 sa halip na ang mababang antas ng detalye. 753 00:35:43,190 --> 00:35:49,840 >> Kaya ito lang bumubuo header.php o footer.php batay sa kung saan ang isa tawag ko. 754 00:35:49,840 --> 00:35:52,280 At sa katunayan kung pumunta ako sa index.php, notice 755 00:35:52,280 --> 00:35:56,230 lahat na changed-- halip ng pagtawag render header o render footer, 756 00:35:56,230 --> 00:36:00,230 Ako pagtawag render, kasunod ang pangalan ng template na gusto kong gawin. 757 00:36:00,230 --> 00:36:02,370 At makikita mo ito, masyadong, sa hanay ng problema pitong, 758 00:36:02,370 --> 00:36:05,530 kung saan pinapayagan namin sa iyo na gamitin ang parehong function na gumawa bunches 759 00:36:05,530 --> 00:36:07,550 at mga kumpol ng iba't ibang mga pahina ng web. 760 00:36:07,550 --> 00:36:10,570 >> Kaya sa halip na tumira masyadong marami pa sa mga details-- 761 00:36:10,570 --> 00:36:13,210 na kung saan makikita mo ang muli sa Tingnan natin problema set seven-- ipaalam 762 00:36:13,210 --> 00:36:16,850 sa ngayon ang simula ng isang solusyon sa isang mas kawili-wiling mga problema. 763 00:36:16,850 --> 00:36:19,310 Kaya ngayon, wala na namin tapos may naka-save na data. 764 00:36:19,310 --> 00:36:22,920 Sa katunayan, ang tanging oras na namin kailanman na-save isang bagay na nagawa namin sa klase na ito 765 00:36:22,920 --> 00:36:31,030 ay kapag kami ay isang napaka-simpleng demo saglit back, kung saan ginamit namin file IO sa C, 766 00:36:31,030 --> 00:36:34,520 at sa tingin ko ako nag-type sa aking pangalan, at Pangalan Hannah, at pangalan ni Maria, 767 00:36:34,520 --> 00:36:37,610 o marahil name Andy, at pagkatapos namin nai-save ng isang file na CSV 768 00:36:37,610 --> 00:36:39,430 comma separated values ​​file. 769 00:36:39,430 --> 00:36:43,530 >> At ginamit namin fopen-- tingin ko ginamit namin fprintf bilang ko pagpapabalik, 770 00:36:43,530 --> 00:36:44,910 at nai-save namin ang isang file. 771 00:36:44,910 --> 00:36:46,920 Ngayon, iyon ay ang pinakasimpleng anyo ng isang database. 772 00:36:46,920 --> 00:36:50,230 Kung nais mong gumawa ng isang website para sa mga Frosh IMs program, kung saan freshmen 773 00:36:50,230 --> 00:36:53,390 maaaring magrehistro para sa isang sport, ikaw sa isip nais na gawin ang isang bagay na may data. 774 00:36:53,390 --> 00:36:55,370 Noong nakaraang linggo, kami ay wala may data-- namin sinabi lamang, 775 00:36:55,370 --> 00:36:56,661 ikaw ay nakarehistro, hindi talaga. 776 00:36:56,661 --> 00:36:58,950 O baka ako ay nag-email ang proctor, at na ito. 777 00:36:58,950 --> 00:37:02,110 >> Ngunit magiging maganda kung magagawa ko bigyan na proctor isang CSV file, 778 00:37:02,110 --> 00:37:03,340 tulad ng isang Excel file. 779 00:37:03,340 --> 00:37:05,090 O mas mahusay pa, ay ito magiging maganda kung magagawa ko 780 00:37:05,090 --> 00:37:08,830 ilagay ang mga pangalan sa mga gumagamit ng internet at dorm pangalan at lahat ng mga na 781 00:37:08,830 --> 00:37:11,740 sa isang database na nabubuhay lang sa habang panahon, 782 00:37:11,740 --> 00:37:13,530 hanggang sa piliin kong tanggalin ang data. 783 00:37:13,530 --> 00:37:15,645 Ang isang database na nagbibigay-daan ako sa query ng impormasyon. 784 00:37:15,645 --> 00:37:18,070 At sa katunayan, iyon ang isang database ay. 785 00:37:18,070 --> 00:37:20,470 >> Kami kitang ipakilala ngayon, at sa susunod na linggo, masyadong, isang technology 786 00:37:20,470 --> 00:37:25,020 tinatawag SQL-- isang balangkas na Query Wika, na kung saan ay isa pang wika. 787 00:37:25,020 --> 00:37:28,750 Ito ay mahalagang isang programming wika, ngunit para sa mga database. 788 00:37:28,750 --> 00:37:31,760 At isang database para sa ngayon, lamang isipin bilang isang super fancy bersyon 789 00:37:31,760 --> 00:37:35,710 ng Microsoft Excel, o Google Spreadsheets, o Apple Numero. 790 00:37:35,710 --> 00:37:39,950 Ito ay karaniwang isang program na nagbibigay-daan sa iyo na tindahan ng buong bungkos ng data 791 00:37:39,950 --> 00:37:43,960 sa hanay at haligi, lubos tulad ng maaari mo sa Excel. 792 00:37:43,960 --> 00:37:47,100 >> Ngunit kung ano ang magaling, lalo na kung hindi pa kami sobrang pamilyar sa Excel, 793 00:37:47,100 --> 00:37:52,040 kung ano ang nagbibigay-daan sa SQL mong gawin ay ang query na ito impormasyon sa pamamagitan ng pagsulat ng mga linya ng code 794 00:37:52,040 --> 00:37:55,220 kung saan maaari mong, kahit na ang iyong database ay may isang milyong mga hilera sa loob nito, 795 00:37:55,220 --> 00:37:57,190 maaari kang makahanap ng napakabilis na mga bagay. 796 00:37:57,190 --> 00:37:59,950 Sa katunayan, Excel ay partikular na masama sa malaking hanay ng data. 797 00:37:59,950 --> 00:38:02,460 At sa katunayan, hanggang sa ilang taon na ang nakaraan, naka-out 798 00:38:02,460 --> 00:38:08,890 Excel ay tanging daan sa iyo upang mag-imbak hanggang sa 65,535 na mga hilera ng data-- saan 799 00:38:08,890 --> 00:38:12,020 tunog tulad ng maraming, ngunit sa oras na ako ay isang Grad mag-aaral, 800 00:38:12,020 --> 00:38:14,920 at natatandaan ko balakid sa paglipas ng ito dahil ako ay pagbuo ng 801 00:38:14,920 --> 00:38:17,900 CSV file para sa aking research at ako nais na suriin ang mga ito nang mabilis 802 00:38:17,900 --> 00:38:19,530 sa pamamagitan ng pagbubukas up lang sa Excel. 803 00:38:19,530 --> 00:38:23,730 Siyempre, ang aking computer lamang nag-crash, dahil ako ay higit sa 65,000 na mga hilera. 804 00:38:23,730 --> 00:38:27,210 >> Ngunit kung saan ay ang 65,535 nanggaling? 805 00:38:27,210 --> 00:38:29,670 Ano ang Microsoft ginagawa, siguro? 806 00:38:29,670 --> 00:38:32,430 Kung ikaw ay handa na sa iyong kapangyarihan ng dalawa? 807 00:38:32,430 --> 00:38:37,160 Oo, sila ay gumagamit ng isang 16-bit halaga sa kumakatawan sa bilang hilera. 808 00:38:37,160 --> 00:38:41,310 At dalawa hanggang 16 ay 65,536-- minus one, dahil kung ikaw 809 00:38:41,310 --> 00:38:45,414 zero index ay nangangahulugan na ang pinakamaraming bilang ng mga hilera maaari ba akong magkaroon. 810 00:38:45,414 --> 00:38:46,830 At ito ay lamang ng isang desisyon na disenyo. 811 00:38:46,830 --> 00:38:52,760 Sa pamamagitan ng pag-save ng 16 bits, limitado sila sa akin sa 16,000 na mga hilera, sa halip ng 4 na bilyon, 812 00:38:52,760 --> 00:38:54,322 kung saan maaari ko ay may perpektong. 813 00:38:54,322 --> 00:38:57,030 Ngunit sa ngayon, kami ay pagpunta sa ipakilala ito ng higit sa isang web konteksto. 814 00:38:57,030 --> 00:39:00,390 At kung ano ang magaling tungkol sa SQL ay na kahit na kahit na ito ay medyo malakas at medyo 815 00:39:00,390 --> 00:39:04,050 sopistikadong, ito talagang kahulihan down sa apat na key operasyon, apat 816 00:39:04,050 --> 00:39:08,060 pangunahing pag-andar, kung will-- mong piliin, para sa pagkuha ng data, paghahanap 817 00:39:08,060 --> 00:39:12,510 para sa data; tanggalin o pagtanggal ng data; ipasok para sa pagdaragdag ng mga hilera sa database; 818 00:39:12,510 --> 00:39:13,410 at pag-update. 819 00:39:13,410 --> 00:39:17,010 Kaya't kung ikaw ay may kailanman ginamit Google Spreadsheets, Numbers Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, mo magawa, malamang, lahat ng 821 00:39:19,310 --> 00:39:22,530 ng mga operasyon bilang isang tao sa pamamagitan ng lamang gamit ang iyong keyboard at na mouse 822 00:39:22,530 --> 00:39:26,050 pagpasok ng data, gamit ang iyong mga mata upang piliin o paghahanap para sa data, 823 00:39:26,050 --> 00:39:28,360 o data update, o tanggalin ang data. 824 00:39:28,360 --> 00:39:29,870 >> Kaya kung ano ang ibig sabihin nito? 825 00:39:29,870 --> 00:39:34,300 Well, i-pre-install sa CS50 IDE ay isang programa na tinatawag na MySQL. 826 00:39:34,300 --> 00:39:37,050 Ito ay isang libre, open-source database na sobrang popular. 827 00:39:37,050 --> 00:39:40,590 Facebook, halimbawa, ito ay gumagamit na ito araw, bukod sa iba pang mga kasangkapan na ginagamit nila. 828 00:39:40,590 --> 00:39:44,300 At ng maraming mga napaka-tanyag na mga website gamitin ito sa malaking bahagi dahil ito ay mabilis, 829 00:39:44,300 --> 00:39:45,230 at dahil ito ay libre. 830 00:39:45,230 --> 00:39:46,820 Kahit na tiyak na alternatibo na umiiral. 831 00:39:46,820 --> 00:39:49,580 At ang ilan sa inyo ay maaaring magwilig sa alternatibo para sa pangwakas na proyekto. 832 00:39:49,580 --> 00:39:55,330 >> Ito ay isang screenshot, samantala, ng isang web-based tool na tinatawag na phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Ito ay isang pagkakataon na ang ang kasangkapan na ito na batay sa web ay isa ring 834 00:39:58,260 --> 00:40:01,720 nakasulat sa isang wika, PHP, ngunit kung ano ito ay sinadya upang gawin 835 00:40:01,720 --> 00:40:04,620 ay bigyan kami ng isang web-based interface sa isang database. 836 00:40:04,620 --> 00:40:07,180 Dahil kadalasan MySQL ay isang bagay, kasaysayan, ikaw 837 00:40:07,180 --> 00:40:08,770 ay nakikipag-ugnayan na may lamang may isang command line. 838 00:40:08,770 --> 00:40:10,811 At magiging super nakakainis at arcane upang magkaroon 839 00:40:10,811 --> 00:40:14,487 mag-type ng tekstuwal mga utos upang piliin data, ipasok data, at tanggalin ang data. 840 00:40:14,487 --> 00:40:16,820 Kaya ang ilang mga tao sa internet nagsulat ng isang programa batay sa web 841 00:40:16,820 --> 00:40:18,900 na ipaalam lamang sa amin pamahalaan ang data sa aming database. 842 00:40:18,900 --> 00:40:23,040 Ito ay tulad ng pag-double click sa Excel, at pagpapatakbo ng isang bersyon ng web-based na mga iyon. 843 00:40:23,040 --> 00:40:26,370 >> At kung ano ang iyong pagpunta sa gamitin ito para sa huli sa susunod na linggo, hindi sa p-set anim, 844 00:40:26,370 --> 00:40:28,680 ngunit ito ay bumuo ng isang bagay tinatawag CS50 Finance, na 845 00:40:28,680 --> 00:40:32,630 ay pagpunta sa may isang database ng mga gumagamit, na may mga pangalan ng user at password, 846 00:40:32,630 --> 00:40:34,860 halaga dollar na sila may sa kanilang mga account sa bangko. 847 00:40:34,860 --> 00:40:37,280 Ito ay magiging isang bagay na ginagamit mo upang mag-imbak 848 00:40:37,280 --> 00:40:39,910 ng mga simbolo at mga dami ng mga stock na mga gumagamit 849 00:40:39,910 --> 00:40:42,567 may binili gamit virtual dollars mo na ikaw ang magbibigay sa kanila. 850 00:40:42,567 --> 00:40:44,900 At ito ay pagpunta sa payagan ang mga gumagamit upang magrehistro para sa iyong site, 851 00:40:44,900 --> 00:40:47,190 upang ang kahit iyong mga kaibigan maaaring tune in sa iyong website 852 00:40:47,190 --> 00:40:49,360 at ang tunay na magparehistro, mag-log in, at maglaro sa paligid 853 00:40:49,360 --> 00:40:52,807 at subukan upang maghanap ng pula sa iyong code, at subukan upang mahanap ang mga bug sa iyong website. 854 00:40:52,807 --> 00:40:55,390 At ang mga ito ay kailangan lang magparehistro sa pamamagitan ng pagdaragdag ng kanilang mga sarili, mabisa, 855 00:40:55,390 --> 00:40:58,120 sa pamamagitan ng code isulat mo sa iyong database. 856 00:40:58,120 --> 00:41:02,470 >> Halimbawa, ito ay isang mabilis screenshot ng kung ano ang maaaring hitsura ng isang database. 857 00:41:02,470 --> 00:41:05,190 Ito ay mula sa isa sa solutions-- nakaraang taon 858 00:41:05,190 --> 00:41:07,760 ito ay tulad ng isang mini Excel maghain, naka-imbak sa aming database, 859 00:41:07,760 --> 00:41:09,950 naka-imbak sa software na ito na tinatawag MySQL. 860 00:41:09,950 --> 00:41:13,260 Sa kaliwang bahagi, na hindi ko na tila ibinigay sa bawat gumagamit ng isang natatanging numero. 861 00:41:13,260 --> 00:41:16,200 Sa ikalawang hanay, ko na ibinigay lahat ng tao sa isang gumagamit name-- aking sariling 862 00:41:16,200 --> 00:41:16,880 sa kanila. 863 00:41:16,880 --> 00:41:21,430 At sa kanang bahagi ng kamay, Ibinigay ko sa kanila ng isang hash. 864 00:41:21,430 --> 00:41:26,760 >> Ngayon na ito ay talagang isang password, ngunit ito ay hindi isang plain text password. 865 00:41:26,760 --> 00:41:30,160 Ito ay isang naka-encrypt na password, kung ikaw, o ang isang hash password. 866 00:41:30,160 --> 00:41:32,000 Aling kami ay bumalik sa bago ang haba. 867 00:41:32,000 --> 00:41:34,340 >> Ngunit kung sakaling mo na basahin isang artikulo tungkol sa kung paano 868 00:41:34,340 --> 00:41:37,950 ang iyong password sa ilang mga bangko o ilang maaaring nakompromiso website, 869 00:41:37,950 --> 00:41:39,630 Maaari itong mangahulugan ng isa sa dalawang mga bagay-bagay sa pangkalahatan. 870 00:41:39,630 --> 00:41:42,780 Kaya ito ay lamang ng isang sipi ng anim na mga gumagamit. 871 00:41:42,780 --> 00:41:45,460 Lahat ng sa iyo ngayon malaman out sa pamamagitan ng pagha-hack o crack 872 00:41:45,460 --> 00:41:47,690 kung ano ang mga password sa aming anim na tao ay. 873 00:41:47,690 --> 00:41:49,720 Ngunit kung sakaling mo na tapat na paraan isang alerto o isang paghingi ng tawad 874 00:41:49,720 --> 00:41:52,803 mula sa isang kumpanya o kasabihan website, Paumanhin, isang hacker sinira sa aming database, 875 00:41:52,803 --> 00:41:56,360 dapat mong malamang na baguhin ang iyong mga password, kung ano ang maaaring sabihin na? 876 00:41:56,360 --> 00:41:59,670 >> Well, isa, maaaring nangangahulugan na ang Ang kumpanya ay higit moronic, 877 00:41:59,670 --> 00:42:03,630 at ito ay pag-iimbak ng iyong mga password sa isang haligi na ito, hindi naka-encrypt. 878 00:42:03,630 --> 00:42:05,840 Na nangangahulugan na ang kalaban, na balabal ang database, 879 00:42:05,840 --> 00:42:07,440 literal na alam ng iyong username at password. 880 00:42:07,440 --> 00:42:08,960 Iyan ay ang pinakamasama posibleng sitwasyon. 881 00:42:08,960 --> 00:42:11,710 At tulad ng makikita mo sa p-set pitong, kaya madali upang maiwasan. 882 00:42:11,710 --> 00:42:15,624 May ay ganap na walang dahilan para sa na anyo ng katangahan sa internet ngayon. 883 00:42:15,624 --> 00:42:18,540 Two-- at kami na mahanap ang ilang mga artikulo upang magpatotoo sa katotohanan na ito pa rin 884 00:42:18,540 --> 00:42:21,710 mangyayari, nonetheless-- dalawang, marahil ng kalaban 885 00:42:21,710 --> 00:42:23,840 nakaagaw ganitong bersyon ng database. 886 00:42:23,840 --> 00:42:27,110 Alin pa rin ang uri ng mga masama, dahil ngayon alam nila na ako ay may anim na mga customer, 887 00:42:27,110 --> 00:42:29,270 Alam ko ang pangalan ng user ng anim na mga customer sa mga, 888 00:42:29,270 --> 00:42:32,910 at alam ko ang mga naka-encrypt bersyon, o ang na-hash na mga bersyon, 889 00:42:32,910 --> 00:42:34,340 ng mga password ng mga anim na mga customer '. 890 00:42:34,340 --> 00:42:37,010 Ngunit anuman sa iyo na baka nagawa [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 kung saan ka basag password, o kinuha isang tumingin sa na bersyon ng problema 892 00:42:41,150 --> 00:42:46,280 set, kung bakit ito ay pa rin ng isang maliit na nakakaligalig kung alam ng kalaban iyong hash 893 00:42:46,280 --> 00:42:47,435 mga password? 894 00:42:47,435 --> 00:42:49,732 >> Madla: Dahil hindi na nila ipasok ang buong diksyunaryo 895 00:42:49,732 --> 00:42:50,690 sa hash. 896 00:42:50,690 --> 00:42:54,520 At kung ang iyong password ay isang diksyunaryo salita, [? maaari lang nila match--?] 897 00:42:54,520 --> 00:42:57,640 >> David MALAN: Eksakto, ang kalaban maaari lamang isulat ang code, tulad ng ilan sa inyo 898 00:42:57,640 --> 00:43:00,526 ginawa para sa [? Hacker?] 2, kung saan umulit ka sa ibabaw 899 00:43:00,526 --> 00:43:03,400 lahat ng mga salita sa diksyunaryo, o lahat ng posibleng mga kumbinasyon ng A 900 00:43:03,400 --> 00:43:06,610 sa pamamagitan ng Z at isa sa pamamagitan ng nine-- na tunog tulad ng isang pulutong, at ito ay. 901 00:43:06,610 --> 00:43:08,361 Ngunit para sa isang computer, ito ay medyo darn mabilis. 902 00:43:08,361 --> 00:43:10,610 At sa katunayan, iyon ay ang punto ng [? Hacker 2,?] Ay 903 00:43:10,610 --> 00:43:12,540 upang kumuha ng mga bagay-bagay na literal ganito ang hitsura nito, 904 00:43:12,540 --> 00:43:14,900 at reverse engineer kung ano ang aktwal na ito ay. 905 00:43:14,900 --> 00:43:17,270 >> Kaya titingnan namin kung paano namin tindahan na ito nang mas mahusay. 906 00:43:17,270 --> 00:43:20,210 Ino-out, thankfully sa MySQL, doon ay magiging mga uri ng data. 907 00:43:20,210 --> 00:43:22,800 At isa sa mga nakakatuwang bahagi tungkol sa database ng disenyo, upang maging matapat, 908 00:43:22,800 --> 00:43:25,810 ay aktwal na pagpapasya para sa iyong sarili kung paano dapat kumatawan sa iyo ang data? 909 00:43:25,810 --> 00:43:29,630 Dapat ikaw ay kumakatawan sa isang numero ng telepono bilang isang int, tulad ng isang malaking bilang, o ng isang mahabang? 910 00:43:29,630 --> 00:43:31,630 O gawin mo talagang gawin ito bilang isang pagkakasunod-sunod ng mga karakter? 911 00:43:31,630 --> 00:43:33,780 At doon ay maaaring maging lubhang di-mahalaga epekto ng mga ito. 912 00:43:33,780 --> 00:43:36,714 >> Sa katunayan, ang isa sa mga pinakamaagang, masaya dyermeyn mga kuwento 913 00:43:36,714 --> 00:43:39,880 ay kapag gusali Mark Zuckerberg ay Facebook, orihinal na ito ay nakasulat sa, 914 00:43:39,880 --> 00:43:42,300 at pa rin ay higit sa lahat na nakasulat sa PHP. 915 00:43:42,300 --> 00:43:45,400 At ang isa sa mga pinakamalaking hamon nahaharap sila sa maagang bahagi ay scaling. 916 00:43:45,400 --> 00:43:48,820 Kapag itinatago nila ang pagdaragdag ng paaralan pagkatapos ng paaralan pagkatapos ng paaralan, sa aking kaalaman, 917 00:43:48,820 --> 00:43:51,639 ang isa sa mga orihinal na mga solusyon ay mahalagang upang kopyahin at i-paste 918 00:43:51,639 --> 00:43:53,430 ang ilan sa mga database at ang ilan sa mga code, 919 00:43:53,430 --> 00:43:55,346 kaya na Harvard ay tumatakbo sa kanyang sariling server, 920 00:43:55,346 --> 00:43:56,995 at MIT ay tumatakbo sa kanyang sariling server. 921 00:43:56,995 --> 00:43:59,120 At ito ang dahilan kung bakit, para sa ilang sa iyo kung sino ang maaaring isipin ang, 922 00:43:59,120 --> 00:44:01,510 Hindi ka maaaring magkaroon ng mga kaibigan sa ibang mga network. 923 00:44:01,510 --> 00:44:05,050 >> Ikaw ay malamang na hindi magkaroon ng mga kaibigan sa MIT o Harvard 10 o kaya taon na ang nakaraan, 924 00:44:05,050 --> 00:44:07,467 ngunit hindi mo maaaring span networks para sa bahagyang mga na dahilan. 925 00:44:07,467 --> 00:44:10,550 At ang isa sa mga pinakamalaking hamon para sa Mark at para sa mga kumpanya tulad ng Facebook 926 00:44:10,550 --> 00:44:13,460 ay aktwal na paghawak ng mga daan-daang at libo-libo at milyun-milyon 927 00:44:13,460 --> 00:44:14,460 ng mga kahilingan sa bawat segundo. 928 00:44:14,460 --> 00:44:16,501 Kaya ang mga bagay na magsisimula kami pakikipag-usap tungkol sa linggong ito 929 00:44:16,501 --> 00:44:19,860 ay talagang magiging dyermeyn sa pagsulat ng mahusay na software, at sikat 930 00:44:19,860 --> 00:44:23,040 matagumpay na mga tool na maaaring hawakan ng maraming mga gumagamit. 931 00:44:23,040 --> 00:44:25,460 >> Kaya makikita namin makipag-usap tungkol sa mga bagay tulad ng pag-index at paghahanap, 932 00:44:25,460 --> 00:44:26,910 ngunit na ito para sa araw na ito. 933 00:44:26,910 --> 00:44:28,780 Kami ay makita sa iyo para sa higit sa Miyerkules. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUSIC - "SEINFELD" TEMA] 936 00:44:33,902 --> 00:44:35,943 David MALAN: Maaari mong Upang ito, at mag-alis mula sa mga ito. 937 00:44:35,943 --> 00:44:38,859 At hindi mo na kailangang i-stick sa ilang mga pre-natukoy na halaga ng memory. 938 00:44:38,859 --> 00:44:40,580 Well, ano ang na pagpunta sa ay tinatawag na? 939 00:44:40,580 --> 00:44:42,369 >> Tagapagsalita 1: Well, ano kaya ang nangyari? 940 00:44:42,369 --> 00:44:43,535 Tagapagsalita 2: Ano ang ibig mong sabihin? 941 00:44:43,535 --> 00:44:44,451 Siya ang pagbibigay ay isang panayam. 942 00:44:44,451 --> 00:44:47,650 David MALAN: At maaari naming gamitin ang isang function na tinatawag malloc sa na memorya 943 00:44:47,650 --> 00:44:50,050 >> Tagapagsalita 1: Bakit ay hindi gumagalaw ang kanyang mga armas? 944 00:44:50,050 --> 00:44:52,450 >> Tagapagsalita 2: Well that's-- alam mo, iyon ang normal. 945 00:44:52,450 --> 00:44:57,162 Ito lang ang gusto niya ay may lamang big sausages nakabitin doon. 946 00:44:57,162 --> 00:44:59,040 >> Tagapagsalita 1: Iyan ay normal? 947 00:44:59,040 --> 00:45:03,096 >> Tagapagsalita 2: Oo, ako sa tingin namin ipinapalagay lamang niya sinasadyang 948 00:45:03,096 --> 00:45:06,840 pinalitan ang kanyang deodorant na may superglue. 949 00:45:06,840 --> 00:45:07,608