1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [Bermain muzik] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Ini adalah CS50, dan ini adalah permulaan minggu lapan. 5 00:00:13,350 --> 00:00:17,510 Dan kami begitu teruja untuk mengalu-alukan kembali, kejutan besar, Ramon CS50 sendiri 6 00:00:17,510 --> 00:00:22,160 Galvan, kanan semakin meningkat yang telah menghabiskan beberapa bulan yang lalu 7 00:00:22,160 --> 00:00:26,190 sejak Julai di LA, di Hollywood, benar-benar bekerja pada TV jenama baru 8 00:00:26,190 --> 00:00:31,930 Persembahan dipanggil Colony, pencipta yang sebenarnya adalah alum Harvard sendiri. 9 00:00:31,930 --> 00:00:36,610 Dan supaya kami sangat teruja untuk melihat ini debut di rangkaian Amerika Syarikat Januari ini. 10 00:00:36,610 --> 00:00:40,370 Jadi harap sabar menunggu untuk itu, dan untuk lebih Ramon untuk minggu-minggu akan datang. 11 00:00:40,370 --> 00:00:42,550 >> Tahu sekarang bahawa akhir sudah dekat. 12 00:00:42,550 --> 00:00:47,400 Dan apa ini bermakna bahawa tidak ada semua yang banyak meninggalkan CS50, sedih untuk mengatakan. 13 00:00:47,400 --> 00:00:49,400 Kami mempunyai hanya tiga masalah set left-- ada 14 00:00:49,400 --> 00:00:52,510 masalah set six-- yang di tangan anda sekarang atau akan menjadi, 15 00:00:52,510 --> 00:00:56,080 dijadualkan lewat ini week-- bertujuan untuk merapatkan dunia kami baris arahan, di mana 16 00:00:56,080 --> 00:00:59,450 kami telah menghabiskan sebahagian besar masa kita menggunakan C, dan dunia pengaturcaraan web. 17 00:00:59,450 --> 00:01:02,350 Well, anda akan melihat banyak idea-idea dipinjam dari kerja baris arahan, 18 00:01:02,350 --> 00:01:04,560 tetapi juga banyak baru dan idea yang menarik 19 00:01:04,560 --> 00:01:07,929 yang juga akan menjadi germane untuk aplikasi mudah alih dan teknologi, 20 00:01:07,929 --> 00:01:10,470 lebih umum, yang anda lelaki yang biasa pada masa kini semua 21 00:01:10,470 --> 00:01:12,090 pada komputer riba dan telefon dan sebagainya. 22 00:01:12,090 --> 00:01:15,220 >> Jadi, anda tidak akan melaksanakan laman web, atau laman web yang 23 00:01:15,220 --> 00:01:17,620 per se, tetapi pelayan web sebenar. 24 00:01:17,620 --> 00:01:21,590 Anda akan menulis seluruh pelayan web ditulis dalam C, yang tujuan dalam hidup 25 00:01:21,590 --> 00:01:25,410 adalah untuk menerima permintaan HTTP, orang-orang sampul surat maya kita terus bercakap 26 00:01:25,410 --> 00:01:29,780 kira-kira, dan benar-benar bertindak balas sama ada dengan beberapa content-- statik seperti dot HTML 27 00:01:29,780 --> 00:01:32,310 fail, atau titik JPEG atau mana-mana nombor lain fail, 28 00:01:32,310 --> 00:01:37,070 atau fail PHP mana web anda pelayan akan mentafsir bahawa PHP 29 00:01:37,070 --> 00:01:38,332 kod dan meludah keluar keputusan. 30 00:01:38,332 --> 00:01:40,540 Sekarang, kita telah menyediakan anda dengan agak sedikit rangka kerja 31 00:01:40,540 --> 00:01:43,100 untuk kitab itu memang kod pengedaran bagi masalah 32 00:01:43,100 --> 00:01:47,496 menetapkan enam adalah lebih 1,000 garisan panjang, banyak yang komen, menjadi fair-- 33 00:01:47,496 --> 00:01:49,370 tetapi ini benar-benar bermakna menjadi peluang 34 00:01:49,370 --> 00:01:52,570 untuk mendapatkan tangan anda kotor menyelam ke dalam projek yang agak besar 35 00:01:52,570 --> 00:01:55,570 yang kami telah secara khusus mengukir keping untuk anda, 36 00:01:55,570 --> 00:01:59,046 supaya benar-benar apabila anda keluar CS50 dan memasuki dunia sebenar pengaturcaraan 37 00:01:59,046 --> 00:02:00,920 dan mahu melibatkan diri dalam apa-apa bilangan projek, 38 00:02:00,920 --> 00:02:03,253 anda akan mempunyai lebih besar keselesaan memuat turun beberapa sumber 39 00:02:03,253 --> 00:02:05,020 kod, beberapa sumber terbuka projek di web, 40 00:02:05,020 --> 00:02:08,174 dan menyelam dalam dan membuat perubahan yang anda lihat patut. 41 00:02:08,174 --> 00:02:11,340 Masalah menetapkan tujuh akan menjadi kira-kira membuat aplikasi berasaskan web anda sendiri 42 00:02:11,340 --> 00:02:14,140 yang mengambil input dinamik dan menghasilkan output dinamik dalam bentuk 43 00:02:14,140 --> 00:02:16,920 sebuah laman web etrade.com seperti. 44 00:02:16,920 --> 00:02:20,800 Dan masalah menetapkan lapan akan memberi tumpuan kepada penilaian bahasa lain yang dikenali sebagai JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Sementara itu, akhir projek adalah di kaki langit. 46 00:02:24,170 --> 00:02:26,800 Apa yang dipanggil pra-cadangan adalah kerana seminggu dari hari ini. 47 00:02:26,800 --> 00:02:29,930 Pra-proposal-- setiap spesifikasi, yang pada website-- CS50 48 00:02:29,930 --> 00:02:33,260 adalah satu peluang yang cukup santai untuk anda menghantar e-mel yang cukup ringkas 49 00:02:33,260 --> 00:02:35,170 kepada rakan-rakan pengajaran anda hanya untuk memaklumkan dia 50 00:02:35,170 --> 00:02:38,250 atau beliau apa yang anda fikirkan, untuk menggunakan dia atau dia sebagai lembaga yang berbunyi. 51 00:02:38,250 --> 00:02:40,980 Dan mempunyai kewarasan yang check-- sama ada yang anda fikirkan 52 00:02:40,980 --> 00:02:43,210 tentang menggigit luar terlalu banyak atau mungkin terlalu sedikit, 53 00:02:43,210 --> 00:02:46,480 atau mungkin anda tidak tahu apa dan ingin melibatkan diri dalam perbualan. 54 00:02:46,480 --> 00:02:48,480 >> Selepas itu adalah satu cadangan yang dan laporan status, 55 00:02:48,480 --> 00:02:51,860 hackathon CS50 yang dipanggil di sini di Cambridge untuk Harvard dan Yale pelajar 56 00:02:51,860 --> 00:02:52,362 sama-sama. 57 00:02:52,362 --> 00:02:54,320 Projek akhir ini pelaksanaan adalah kena dibayar. 58 00:02:54,320 --> 00:02:59,290 Dan kemudian yang adil CS50 sini, di Cambridge, dan juga satu lagi di New Haven. 59 00:02:59,290 --> 00:03:02,500 Jadi cadangan itu, kita lihat pada laman web untuk butir-butir itu. 60 00:03:02,500 --> 00:03:06,530 >> Tetapi yang lebih excitingly, juga, adalah peluang untuk mendapatkan tangan anda kotor, 61 00:03:06,530 --> 00:03:09,350 dan minda anda terbuka untuk keseluruhan sekumpulan topik dan alat 62 00:03:09,350 --> 00:03:12,920 dan teknik yang sampingan sukatan pelajaran teras kursus ini, 63 00:03:12,920 --> 00:03:14,810 tetapi masih berkaitan. 64 00:03:14,810 --> 00:03:18,400 Dan juga batu loncatan yang baik untuk melakukan projek akhir benar-benar sejuk yang 65 00:03:18,400 --> 00:03:22,020 pergi baik di luar bahan yang kami telah dilindungi secara rasmi dalam masalah menetapkan atau dalam kuliah. 66 00:03:22,020 --> 00:03:24,446 Oleh itu, pergilah ke laman web CS50 untuk seluruh jadual seminar. 67 00:03:24,446 --> 00:03:26,070 Jika anda tidak mendaftar lagi, itulah denda. 68 00:03:26,070 --> 00:03:29,860 Teruskan dan mendaftar diri dan kita akan susulan dengan link live streaming, 69 00:03:29,860 --> 00:03:31,844 hari dan masa adalah di laman web. 70 00:03:31,844 --> 00:03:33,760 Dan semua akan direkodkan dan meletakkan talian 71 00:03:33,760 --> 00:03:35,800 jika anda tidak boleh membuat hari dan masa tertentu. 72 00:03:35,800 --> 00:03:39,380 >> Apa yang akan berlaku thereafter-- baik, sudah tentu, ada hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Gambar ini, ingat, dari minggu sifar diambil sekitar 04:00 suatu petang dalam tahun-tahun yang lalu. 74 00:03:43,560 --> 00:03:46,900 Pameran CS50, yang sekali lagi akan berlangsung di kedua-dua bandar. 75 00:03:46,900 --> 00:03:49,760 Dan kemudian, hanya untuk menanam benih, walaupun kita masih 76 00:03:49,760 --> 00:03:54,080 mempunyai satu bulan plus kiri semester, jika anda ingin untuk menyertai ajaran CS50 sendiri 77 00:03:54,080 --> 00:03:56,770 kakitangan, dan anda ingin memulakan berfikir tentang menjadi CA, 78 00:03:56,770 --> 00:03:59,550 atau rakan-rakan pengajaran, tahu bahawa kami akan mula bercakap lebih lanjut mengenai itu 79 00:03:59,550 --> 00:04:00,630 kemudian semester ini. 80 00:04:00,630 --> 00:04:03,470 Tetapi digambarkan di sini adalah sebahagian besar daripada pasukan tahun ini. 81 00:04:03,470 --> 00:04:06,950 >> Dan sebagainya, PHP-- dan saya begitu sedih minggu lepas bahawa [? Allyse?] Sila 82 00:04:06,950 --> 00:04:09,370 pergi kepada usaha untuk mendapatkan kita ini prop yang indah 83 00:04:09,370 --> 00:04:11,720 bahawa saya tidak akhirnya menggunakan, jadi ia benar-benar hanya melihat jenis bodoh 84 00:04:11,720 --> 00:04:15,160 bahawa kita mempunyai spade duduk di sini semua hari rabu lepas, dan sudu kecil. 85 00:04:15,160 --> 00:04:17,709 Tetapi ini adalah metafora saya cara cuba untuk cat 86 00:04:17,709 --> 00:04:21,600 gambar sebabnya kita beralih dari C ke bahasa seperti PHP. 87 00:04:21,600 --> 00:04:25,480 Dan yang sama boleh dikatakan apa-apa beberapa languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 atau tandan others-- tetapi sedangkan di C, misalnya, menulis program dalam C 89 00:04:31,270 --> 00:04:34,050 mungkin biasanya menjadi seperti mengambil sudu seperti ini 90 00:04:34,050 --> 00:04:36,770 dan menggali lubang di tanah, di pasir atau kotoran. 91 00:04:36,770 --> 00:04:39,770 PHP membolehkan anda mengambil banyak gigitan lebih besar daripada masalah ini, 92 00:04:39,770 --> 00:04:42,842 menulis kod yang jauh lebih rendah menggunakan alat yang jauh lebih kecil, 93 00:04:42,842 --> 00:04:45,050 kerana ada banyak lagi fungsi menyambung masuk. 94 00:04:45,050 --> 00:04:47,633 >> Sekarang, jika kita benar-benar dramatik, kita akan mempunyai sesuatu untuk spade 95 00:04:47,633 --> 00:04:48,760 di sini, tetapi jadi ia. 96 00:04:48,760 --> 00:04:51,370 Sementara itu, yang lain metafora kami menetapkan 97 00:04:51,370 --> 00:04:53,770 adalah, sudah tentu, anda boleh menggunakan sesuatu seperti sepana 98 00:04:53,770 --> 00:04:56,610 tukul dalam sesuatu seperti paku. 99 00:04:56,610 --> 00:04:58,980 Tetapi sudah tentu, hak alat untuk penggunaan akan 100 00:04:58,980 --> 00:05:01,360 menjadi tidak begitu banyak bahasa dipanggil C-- 101 00:05:01,360 --> 00:05:03,590 dan sekarang saya hanya marah [? Sanders,?] Mungkin, 102 00:05:03,590 --> 00:05:07,890 kami akan menetapkan bahawa later-- supaya alat hak untuk menggunakan kerap 103 00:05:07,890 --> 00:05:09,640 tidak akan menjadi ini alat tahap paling rendah. 104 00:05:09,640 --> 00:05:13,720 Dan sesungguhnya, C bukan bahasa yang sebahagian besar daripada anda pernah akan digunakan, 105 00:05:13,720 --> 00:05:15,590 atau semestinya harus menggunakan lagi. 106 00:05:15,590 --> 00:05:18,350 >> Dan sebenarnya, sedikit secret-- masa sahaja 107 00:05:18,350 --> 00:05:23,160 Saya menggunakan C diri saya adalah cukup banyak antara September dan Disember setiap jatuh 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 Dan itu kerana kita menggunakannya sebagai satu peluang 110 00:05:25,790 --> 00:05:27,852 untuk mengajar asas-asas pengaturcaraan, 111 00:05:27,852 --> 00:05:29,810 dan dengan itu komputer asas-asas sains, data 112 00:05:29,810 --> 00:05:32,435 struktur, algoritma dan like-- tetapi dengan cepat akan anda 113 00:05:32,435 --> 00:05:35,010 lihat sekarang bahawa sintaks dan idea-idea yang mendasari C 114 00:05:35,010 --> 00:05:37,530 begitu hebat dipindah milik kepada yang lebih moden 115 00:05:37,530 --> 00:05:41,130 bahasa tahap yang lebih tinggi, seperti PHP dan Python dan Perl dan Jawa 116 00:05:41,130 --> 00:05:46,750 dan Objektif-C-- sebenarnya, tidak begitu banyak Objektif-C-- tetapi Swift, ini yang lebih baru 117 00:05:46,750 --> 00:05:50,010 bahasa yang ramai di antara anda akan kemudian cuba-cuba dengan anda projek akhir. 118 00:05:50,010 --> 00:05:55,070 >> Jadi tanpa berlengah-lengah lagi, mari kita sebenarnya menggunakan PHP untuk menyelesaikan beberapa masalah. 119 00:05:55,070 --> 00:06:00,230 Ingat bahawa sejak awal lagi, lepas CS50 IDE minggu, kami hanya digunakan, 120 00:06:00,230 --> 00:06:02,990 kita menulis program kecil imut yang hanya berkata, "Hello dunia." 121 00:06:02,990 --> 00:06:05,680 Dan kemudian saya disimpan dalam fail yang dipanggil hello.php. 122 00:06:05,680 --> 00:06:07,280 Dan kemudian saya berlari arahan ini. 123 00:06:07,280 --> 00:06:08,080 >> Dan mengapa? 124 00:06:08,080 --> 00:06:09,900 Dalam bahasa Inggeris, apa yang berlaku di sini? 125 00:06:09,900 --> 00:06:12,760 Apa yang saya lakukan apabila Saya berlari arahan ini? 126 00:06:12,760 --> 00:06:13,405 >> Ya? 127 00:06:13,405 --> 00:06:16,572 >> PENONTON: Ada beberapa fungsi PHP yang berbunyi apa yang dalam- memahami bahawa. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Baik, ada beberapa fungsi PHP-- dan biarlah saya menjadi lebih khusus, 129 00:06:19,696 --> 00:06:21,810 ada program yang dikenali sebagai PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Jurubahasa, yang memahami kandungan hello.php, 131 00:06:25,872 --> 00:06:27,830 dan mentakwilkannya atas ke bawah, kiri ke kanan, 132 00:06:27,830 --> 00:06:29,590 dan melakukan apa yang mereka perintah katakan. 133 00:06:29,590 --> 00:06:33,320 Perintah dalam hello.php, sudah tentu, hanya sumber code-- fungsi 134 00:06:33,320 --> 00:06:35,750 dan pembolehubah dan gelung dan sebagainya, yang kita sendiri 135 00:06:35,750 --> 00:06:37,460 telah mula menulis dalam PHP. 136 00:06:37,460 --> 00:06:40,240 >> Tetapi tidak seperti C, yang bahasa yang disusun, 137 00:06:40,240 --> 00:06:42,810 PHP anda hanya menulisnya, dan menjalankannya. 138 00:06:42,810 --> 00:06:46,420 Anda melangkau langkah orang tengah daripada ditukarkan kepada sifar dan satu, 139 00:06:46,420 --> 00:06:47,790 dan kemudian menguruskannya. 140 00:06:47,790 --> 00:06:50,510 Dan supaya apa yang terbalik ini? 141 00:06:50,510 --> 00:06:52,690 Mengapa kita ponteng langkah? 142 00:06:52,690 --> 00:06:55,238 Mengapa bahasa yang lebih moden cenderung untuk melangkau langkah ini? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Apakah faedah? 145 00:07:01,220 --> 00:07:02,080 >> Atau hanya intuitif? 146 00:07:02,080 --> 00:07:04,200 Walaupun kita tidak ada bertulis banyak PHP sebelum ini, 147 00:07:04,200 --> 00:07:07,210 apa yang bermanfaat tentang tidak menyusun kod anda yang anda fikir? 148 00:07:07,210 --> 00:07:08,520 Tidak? 149 00:07:08,520 --> 00:07:09,610 Tidak melakukan? 150 00:07:09,610 --> 00:07:11,350 Menggaru kepala anda? 151 00:07:11,350 --> 00:07:12,614 Yeah. 152 00:07:12,614 --> 00:07:13,600 >> PENONTON: Lebih dinamik. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Lebih dinamik? 154 00:07:14,683 --> 00:07:16,032 Apa yang awak maksudkan? 155 00:07:16,032 --> 00:07:17,000 >> PENONTON: [didengar] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, baik, sehingga bergantung kepada input, 158 00:07:22,390 --> 00:07:23,470 anda tidak perlu untuk menyusun setiap kali. 159 00:07:23,470 --> 00:07:24,990 Dan ia benar-benar adalah semudah bahawa- apa 160 00:07:24,990 --> 00:07:26,990 gunanya meneruskan untuk menyusun kod anda? 161 00:07:26,990 --> 00:07:29,480 Ini adalah hanya satu langkah itu making-- ini memerlukan, 162 00:07:29,480 --> 00:07:31,900 sejak beberapa lalu minggu, dua kali ganda lebih banyak langkah-langkah 163 00:07:31,900 --> 00:07:33,820 sebagai hanya menjalankan program anda. 164 00:07:33,820 --> 00:07:36,940 Ia adalah berguna dalam melihat bahawa anda melihat beberapa mesej ralat dan sebagainya, 165 00:07:36,940 --> 00:07:38,720 tetapi ia masih hanya satu langkah yang menjengkelkan. 166 00:07:38,720 --> 00:07:41,810 >> Dan sebagainya pengaturcara sedar dari masa ke masa, mengapa tidak kita 167 00:07:41,810 --> 00:07:45,327 mula menulis bahasa yang tidak memerlukan langkah agak mekanikal, 168 00:07:45,327 --> 00:07:47,160 supaya hanya boleh menulis kod anda dan menjalankannya. 169 00:07:47,160 --> 00:07:48,920 Tetapi apa yang harga yang kita lihat kita dibayar 170 00:07:48,920 --> 00:07:50,910 minggu lepas, dengan satu contoh tertentu? 171 00:07:50,910 --> 00:07:51,650 Ya? 172 00:07:51,650 --> 00:07:52,370 >> Kelajuan. 173 00:07:52,370 --> 00:07:54,690 Jadi [? apa yang?] jurubahasa sedikit perlahan, 174 00:07:54,690 --> 00:07:57,330 kerana sifar dan satu adalah bagus dan pantas untuk komputer 175 00:07:57,330 --> 00:08:00,070 untuk memahami, kerana Intel CPU, atau apa sahaja, 176 00:08:00,070 --> 00:08:03,070 hanya memahami apa yang berlaku pada dengan orang-orang corak bit. 177 00:08:03,070 --> 00:08:05,370 Manakala seorang jurubahasa merupakan program yang benar-benar 178 00:08:05,370 --> 00:08:07,980 mempunyai untuk membaca sumber Ascii yang kod yang anda telah menulis, 179 00:08:07,980 --> 00:08:12,700 dan menukarkannya, jadi untuk bercakap, atau memikirkan bagaimana ia bertukar akhirnya 180 00:08:12,700 --> 00:08:13,525 kepada sifar dan satu. 181 00:08:13,525 --> 00:08:15,650 Oleh itu, ia hanya mengambil masa sedikit sedikit hit prestasi. 182 00:08:15,650 --> 00:08:16,858 Jadi ia sedikit keseimbangan. 183 00:08:16,858 --> 00:08:21,570 Sekarang jika kita melakukan ini di sini, biarlah saya teruskan niat contoh seperti berikut. 184 00:08:21,570 --> 00:08:26,610 Jika saya pergi di sini, fail baru, saya akan untuk menyelamatkan hal ini lagi hello.php. 185 00:08:26,610 --> 00:08:31,450 Dan sekarang saya akan pergi ke hadapan dan berkata, "print hello dunia" - 186 00:08:31,450 --> 00:08:35,130 dan ingat bahawa saya boleh menggunakan cetak, saya tidak perlu menggunakan cetak-F. Dan kini turun di sini, 187 00:08:35,130 --> 00:08:42,039 jika saya lakukan PHP daripada hello.php, saya huh-- seolah-olah tidak telah mentafsirkan ia. 188 00:08:42,039 --> 00:08:43,412 Apa yang saya buat salah? 189 00:08:43,412 --> 00:08:44,710 >> PENONTON: Gelang bersudut. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Ya, anda perlu bahawa atas kurung sudut atas. 191 00:08:47,015 --> 00:08:49,390 Jadi ia adalah jenis menjengkelkan, tetapi anda mendapat digunakan untuk dengan cepat. 192 00:08:49,390 --> 00:08:53,500 Jika saya perlu menulis kod PHP, saya umumnya perlu memberitahu program ini, 193 00:08:53,500 --> 00:08:56,950 atau memberitahu jurubahasa, hey PHP, di sini datang beberapa kod PHP. 194 00:08:56,950 --> 00:09:00,440 Dan kemudian untuk menjadikannya lebih menarik, saya akan ini tidak menutup dengan ini, tetapi 195 00:09:00,440 --> 00:09:03,740 dengan tanda sudut hanya soalan kurungan, supaya sekarang turun di sini, 196 00:09:03,740 --> 00:09:06,840 sekiranya saya ini lagi, sekarang Saya mendapat hasil yang dikehendaki. 197 00:09:06,840 --> 00:09:09,820 >> Sekarang mari kita melakukan pengoptimuman sedikit, hanya supaya anda lihat sebelum ini. 198 00:09:09,820 --> 00:09:14,040 Ini adalah jenis menjengkelkan bahawa saya perlu menjalankan PHP ruang hello.php, 199 00:09:14,040 --> 00:09:16,060 kerana pada saya lalu hanya boleh menulis slash dot 200 00:09:16,060 --> 00:09:17,560 nama program, yang merupakan jenis yang bagus. 201 00:09:17,560 --> 00:09:19,420 Ia adalah jenis pengalaman pengguna yang lebih baik. 202 00:09:19,420 --> 00:09:24,160 >> Jadi, ternyata anda boleh melakukan ini dalam PHP dengan i following-- 203 00:09:24,160 --> 00:09:28,780 boleh menggunakan ini agak samar mantera di atas di sini, 204 00:09:28,780 --> 00:09:31,740 yang biasanya dipanggil shebang yang, di mana ini adalah simbol tajam, 205 00:09:31,740 --> 00:09:34,270 boleh dikatakan, ini adalah bang a atau tanda seru. 206 00:09:34,270 --> 00:09:38,490 Dan ini sekarang adalah jalan untuk program pada sistem Linux biasa yang 207 00:09:38,490 --> 00:09:41,500 dipanggil alam sekitar, atau plates. 208 00:09:41,500 --> 00:09:43,920 Dan ini garis ini-- cerita panjang garis short-- satu hanya 209 00:09:43,920 --> 00:09:48,710 berkata, hey komputer, mencari PHP jurubahasa bagi saya dalam alam sekitar, 210 00:09:48,710 --> 00:09:50,610 merasa dalam memori anda, jadi untuk bercakap. 211 00:09:50,610 --> 00:09:54,130 >> Dan apa yang baik sekarang, bahawa jika saya pergi ke sini, 212 00:09:54,130 --> 00:09:57,750 Yang boleh saya lakukan dot slash hello dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Tiada kebenaran. 214 00:09:59,000 --> 00:10:02,350 Well, anda akan melihat lebih banyak daripada ini dengan masalah menetapkan tujuh, jika anda 215 00:10:02,350 --> 00:10:04,060 belum, dengan kebenaran. 216 00:10:04,060 --> 00:10:06,510 Ia ternyata bahawa saya perlu untuk melaksanakan arahan ini 217 00:10:06,510 --> 00:10:10,779 dipanggil [? chamod?] untuk perubahan mode-- tambah x hello.php. 218 00:10:10,779 --> 00:10:13,820 Saya perlu [didengar] ini satu tambahan langkah yang memberitahu komputer saya, 219 00:10:13,820 --> 00:10:16,400 membuat laku hello.php. 220 00:10:16,400 --> 00:10:21,310 Dan sekarang menonton apa happens-- dot mengurangkan hello.php, ia hanya berjalan. 221 00:10:21,310 --> 00:10:23,310 Saya tidak perlu untuk menentukan jurubahasa lagi. 222 00:10:23,310 --> 00:10:26,680 Dan saya boleh membuat ia lebih cantik, lagi, jika saya menamakan semula perkara ini. 223 00:10:26,680 --> 00:10:30,570 Jika saya bergerak hello.php hanya Hello-- supaya notis di atas sebelah kiri, 224 00:10:30,570 --> 00:10:32,860 nama program ini adalah sesungguhnya kini hanya Hello. 225 00:10:32,860 --> 00:10:37,300 Sekarang saya boleh membuat ia kelihatan seperti program C, walaupun ia ditulis dalam PHP-- 226 00:10:37,300 --> 00:10:39,210 atau terus-terang apa-apa bilangan bahasa lain. 227 00:10:39,210 --> 00:10:41,480 >> Jadi peningkatan marginal, ada perbezaan fungsi. 228 00:10:41,480 --> 00:10:44,460 Tetapi ia hanya rasa ingin tahu sedikit sekarang, supaya anda boleh menulis program 229 00:10:44,460 --> 00:10:48,989 dalam mana-mana bahasa, dan pengguna tidak perlu tahu atau peduli apa yang mereka berada. 230 00:10:48,989 --> 00:10:51,030 Nah, mari kita lihat yang lebih contoh menarik sekarang 231 00:10:51,030 --> 00:10:52,850 bahawa saya melecut terlebih dahulu. 232 00:10:52,850 --> 00:10:54,955 Dan ini dipanggil quote.php. 233 00:10:54,955 --> 00:10:56,740 Dan ia boleh didapati dalam talian. 234 00:10:56,740 --> 00:11:00,299 Dan melihat bahawa ia cukup short-- tetapi ia adalah satu program baris arahan itu 235 00:11:00,299 --> 00:11:02,840 akan melihat kenaikan harga saham bagi saya, yang benar-benar akan 236 00:11:02,840 --> 00:11:04,230 menjadi germane untuk masalah menetapkan tujuh. 237 00:11:04,230 --> 00:11:05,396 >> Jadi mari kita lihat apa yang saya lakukan. 238 00:11:05,396 --> 00:11:08,640 Di bahagian paling atas saya telah mendapat kurungan terbuka tanda tanya PHP. 239 00:11:08,640 --> 00:11:13,372 Kemudian saya telah mendapat baris ini, di mana saya yang memerlukan fail yang dipanggil functions.php-- 240 00:11:13,372 --> 00:11:15,080 kita akan melihat lanjut mengenai ini dalam sedikit, 241 00:11:15,080 --> 00:11:17,340 tetapi ini seolah C versi tajam termasuk, 242 00:11:17,340 --> 00:11:19,090 di mana anda mahu pergi termasuk fail lain. 243 00:11:19,090 --> 00:11:23,720 PHP panggilan itu memerlukan, walaupun ia juga mempunyai termasuk fungsi. 244 00:11:23,720 --> 00:11:26,861 Dan ternyata bahawa function.php adalah hanya sesuatu yang saya tulis sebelum kelas. 245 00:11:26,861 --> 00:11:29,860 Saya memasukkannya ke dalam direktori yang sama, kerana Saya mahu mengambil kira beberapa kod 246 00:11:29,860 --> 00:11:31,800 yang kita mungkin mahu menggunakan di tempat lain. 247 00:11:31,800 --> 00:11:34,560 >> Sementara itu, anda boleh mungkin membuat kesimpulan apa yang berlaku di sini. 248 00:11:34,560 --> 00:11:39,200 Ini adalah sedikit berbeza dari C-- tetapi apa yang saya maksudkan dengan memastikan penggunaan yang betul? 249 00:11:39,200 --> 00:11:41,180 Terjemahan ini lebih dari segi teknikal. 250 00:11:41,180 --> 00:11:45,950 Apakah keadaan aku berhenti program ini, atau keluar? 251 00:11:45,950 --> 00:11:47,074 Ya? 252 00:11:47,074 --> 00:11:47,990 >> PENONTON: Apabila anda tidak mempunyai dua hujah baris arahan. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Apabila saya tidak mempunyai menguasai hujah baris. 254 00:11:49,480 --> 00:11:52,396 Dan ingat bahawa salah seorang daripada mereka hujah-hujah adalah nama program itu sendiri. 255 00:11:52,396 --> 00:11:55,340 Dan yang kedua akan menjadi perkataan lain saya menaip selepas prom. 256 00:11:55,340 --> 00:11:57,460 Jadi hanya seperti C, ini adalah cara saya memeriksa, 257 00:11:57,460 --> 00:12:00,022 adakah pengguna bekerjasama dan menjalankan program ini seperti yang saya dimaksudkan? 258 00:12:00,022 --> 00:12:01,730 Sekarang, ada sesuatu sedikit berbeza 259 00:12:01,730 --> 00:12:04,020 dengan C-- pertama sekali kita mempunyai tanda dolar ini, 260 00:12:04,020 --> 00:12:07,710 dan apa yang dolar log menandakan dalam PHP? 261 00:12:07,710 --> 00:12:08,440 Hanya berubah-ubah. 262 00:12:08,440 --> 00:12:11,731 Itulah all-- hanya pembolehubah diikuti oleh apa sahaja yang anda mahu sebenarnya memanggilnya. 263 00:12:11,731 --> 00:12:14,000 Perhatikan ada sesuatu hilang dari program PHP saya, 264 00:12:14,000 --> 00:12:18,210 sama seperti ia telah hilang lepas minggu, berbanding C, yang adalah apa? 265 00:12:18,210 --> 00:12:21,620 >> Satu jenis, tetapi juga sesuatu yang lain. 266 00:12:21,620 --> 00:12:26,409 Tidak ada sesuatu yang function-- fungsi utama. 267 00:12:26,409 --> 00:12:27,450 Tidak ada fungsi utama. 268 00:12:27,450 --> 00:12:29,680 Anda hanya mula menulis kod anda tanpa 269 00:12:29,680 --> 00:12:32,790 bimbang tentang yang agak sewenang-wenangnya konvensyen menamakan beberapa lalai 270 00:12:32,790 --> 00:12:33,880 fungsi utama. 271 00:12:33,880 --> 00:12:36,720 Jadi arg C adalah hanya benar-benar pembolehubah global 272 00:12:36,720 --> 00:12:39,049 yang jurubahasa menyediakan kepada saya. 273 00:12:39,049 --> 00:12:40,090 Sekarang, ini adalah menarik. 274 00:12:40,090 --> 00:12:41,140 Oleh itu, mencari sehingga barangan. 275 00:12:41,140 --> 00:12:43,370 Saham tanda dolar adalah di meninggalkan, itu berubah-ubah saya. 276 00:12:43,370 --> 00:12:45,120 Di sebelah kanan, ada nampaknya 277 00:12:45,120 --> 00:12:50,270 fungsi dalam PHP dipanggil pencarian yang Saya lulus baris arahan terakhir saya 278 00:12:50,270 --> 00:12:51,902 hujah supaya- apa sahaja perkataan itu. 279 00:12:51,902 --> 00:12:53,610 Dan kita akan melihat bagaimana ini berfungsi dalam seketika. 280 00:12:53,610 --> 00:12:55,380 >> Dan kemudian akhir sekali saya melaporkan harga. 281 00:12:55,380 --> 00:12:58,650 Saya mencetak satu bahagian ini dan itu. 282 00:12:58,650 --> 00:13:02,082 Dan ingat, ini adalah cara di PHP-- cara di PHP-- 283 00:13:02,082 --> 00:13:04,290 di mana anda tidak perlu lakukan tanda dolar S lagi. 284 00:13:04,290 --> 00:13:06,782 Anda hanya boleh menggunakan pendakap kerinting dan pasangkan beberapa pembolehubah. 285 00:13:06,782 --> 00:13:09,240 Anda tidak perlu bimbang tentang menggunakan printf dengan cara yang sama. 286 00:13:09,240 --> 00:13:13,530 >> Dan sebagai diketepikan, apabila anda meletakkan pembolehubah di dalam tanda petik seperti ini, 287 00:13:13,530 --> 00:13:17,370 anda menggunakan teknik mewah dipanggil interpolasi berubah-ubah. 288 00:13:17,370 --> 00:13:20,380 Ia hanya bermakna plug pembolehubah di sini. 289 00:13:20,380 --> 00:13:23,760 Dan sebagai diketepikan, sebahagian dari kamu yang datang dari latar belakang pengaturcaraan yang lain, 290 00:13:23,760 --> 00:13:26,960 anda tidak boleh menggunakan tanda petikan tunggal sekitar tali untuk melakukan ini. 291 00:13:26,960 --> 00:13:30,290 Anda mesti menggunakan tanda petik untuk interpolasi berubah untuk bekerja. 292 00:13:30,290 --> 00:13:32,740 Jika tidak anda akan benar-benar melihat orang-orang pendakap kerinting. 293 00:13:32,740 --> 00:13:34,500 >> Jadi akhir sekali, mari kita pergi ke hadapan dan menjalankan ini. 294 00:13:34,500 --> 00:13:36,690 Izinkan saya membuat terminal saya sedikit lebih besar. 295 00:13:36,690 --> 00:13:41,940 Biar saya pergi ke hadapan dan menjalankan di dalam direktori quote saya. 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 dan saya akan mencari sesuatu seperti GOOG, yang merupakan simbol ticker, yang 298 00:13:50,290 --> 00:13:55,510 dan satu bahagian nama barunya, Alphabet Inc, kos $ 717, pada hari ini. 299 00:13:55,510 --> 00:13:58,680 Baiklah, jika kita mahu menjalankan ini lagi, sesiapa sahaja 300 00:13:58,680 --> 00:14:02,600 mempunyai satu lagi ticker saham mereka mahu melihat ke atas? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft saya fikir adalah satu ini, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Saya rasa Yahoo adalah mungkin itu. 303 00:14:09,720 --> 00:14:12,130 Dan Facebook adalah bahawa. 304 00:14:12,130 --> 00:14:13,740 >> Jadi apa yang program ini buat? 305 00:14:13,740 --> 00:14:16,306 Sihir seolah-olah terbenam dalam fungsi carian. 306 00:14:16,306 --> 00:14:17,430 Jadi mari kita lihat yang cepat. 307 00:14:17,430 --> 00:14:21,815 >> Ternyata tidak datang dengan PHP, ia dalam functions.php. 308 00:14:21,815 --> 00:14:23,690 Dan kita tidak akan melalui ini dengan terperinci, 309 00:14:23,690 --> 00:14:28,040 tetapi notis perkataan pembedahan sini yang pada baris enam daripada functions.php-- 310 00:14:28,040 --> 00:14:29,440 Saya benar-benar mengatakan fungsi. 311 00:14:29,440 --> 00:14:31,050 Saya nyatakan nama fungsi saya. 312 00:14:31,050 --> 00:14:34,330 Saya kemudian menyatakan apa-apa hujah, atau parameter, 313 00:14:34,330 --> 00:14:36,480 Saya hendak fungsi yang ke take-- ada jenis. 314 00:14:36,480 --> 00:14:37,580 Dan kemudian saya melaksanakannya. 315 00:14:37,580 --> 00:14:39,240 >> Dan saya akan melambai tangan saya pada pelaksanaan, 316 00:14:39,240 --> 00:14:42,115 sejak ia betul agak maju sekarang, tetapi kami akan melihatnya lagi sebenarnya 317 00:14:42,115 --> 00:14:44,700 dalam seminggu dalam masalah menetapkan tujuh. 318 00:14:44,700 --> 00:14:47,490 Tetapi saya boleh membersihkan sehingga ini juga. 319 00:14:47,490 --> 00:14:49,590 Saya juga termasuk dalam Kod hari ini versi yang 320 00:14:49,590 --> 00:14:52,340 petikan, yang tidak mempunyai fail dot PHP. 321 00:14:52,340 --> 00:14:57,270 Kerana apa yang mungkin di atas program yang dipanggil hanya memetik? 322 00:14:57,270 --> 00:15:00,140 Bahawa apa yang dipanggil shebang-- yang mantera agak samar 323 00:15:00,140 --> 00:15:04,590 yang mengatakan mencari PHP dan kemudian berjalan pada kod saya di sini. 324 00:15:04,590 --> 00:15:07,360 >> Baiklah, jadi yang membawa kita di mana kita berhenti 325 00:15:07,360 --> 00:15:09,560 time-- lepas walaupun dengan beberapa contoh yang lebih maju. 326 00:15:09,560 --> 00:15:13,980 Sebarang pertanyaan setakat ini kira-kira PHP atau apa yang kita lakukan? 327 00:15:13,980 --> 00:15:15,570 No-- hak semua. 328 00:15:15,570 --> 00:15:16,180 Ya? 329 00:15:16,180 --> 00:15:19,610 >> PENONTON: Di dalam Fail HTML, melakukan atasmu, 330 00:15:19,610 --> 00:15:22,226 [? Adakah awak ?] [? hanya memanggilnya?] a [didengar] PHP fail? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Soalan yang baik. 332 00:15:23,350 --> 00:15:26,070 Dalam konteks web, yang kami benar-benar akan beralih kepada, 333 00:15:26,070 --> 00:15:28,028 anda tidak menggunakan apa yang dikenali sebagai shebang di bahagian atas, 334 00:15:28,028 --> 00:15:31,980 kerana server-- web sering program dipanggil Apache atau Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Maklumat Internet Server, atau apa-apa bilangan lain-lain perisian pelayan web, 336 00:15:37,470 --> 00:15:40,636 tahu bahawa apabila ia melihat fail dot PHP, bahawa ia 337 00:15:40,636 --> 00:15:42,010 perlu dijalankan jurubahasa di atasnya. 338 00:15:42,010 --> 00:15:43,468 Ia tidak melihat bahawa baris pertama. 339 00:15:43,468 --> 00:15:45,580 Jadi ini helah baris pertama hanya apabila anda berada 340 00:15:45,580 --> 00:15:48,330 menulis baris arahan programs-- yang kami tidak akan melakukan super kerap, 341 00:15:48,330 --> 00:15:52,510 tetapi ia adalah cara kita untuk merapatkan contoh C kami kini PHP kami. 342 00:15:52,510 --> 00:16:00,680 >> Jadi mari kita memang merapatkan dunia ini dari dunia baris arahan ke web 343 00:16:00,680 --> 00:16:02,230 dengan melakukan yang berikut. 344 00:16:02,230 --> 00:16:05,090 Biar saya pergi ke hadapan dan menarik di sini hanya untuk seketika. 345 00:16:05,090 --> 00:16:09,940 Jadi, jika kita mempunyai pelayan web, atau sebaliknya jika kita mempunyai komputer riba saya di sini, 346 00:16:09,940 --> 00:16:11,280 yang saya akan menarik seperti ini. 347 00:16:11,280 --> 00:16:14,250 Dan di sini kita mempunyai internet dalam bentuk tertentu. 348 00:16:14,250 --> 00:16:18,210 Dan kemudian di sini, kami mempunyai pelayan di building-- yang 349 00:16:18,210 --> 00:16:20,760 ini adalah bagaimana internet works-- dan di sini 350 00:16:20,760 --> 00:16:23,120 adalah pelayan dengan beberapa lampu mungkin. 351 00:16:23,120 --> 00:16:27,530 Apa yang sebenarnya berlaku antara kedua-dua sambungan? 352 00:16:27,530 --> 00:16:29,240 >> Jadi, dalam bangunan ini adalah pelayan web. 353 00:16:29,240 --> 00:16:31,420 Itu hanya komputer yang sedang berjalan beberapa operasi 354 00:16:31,420 --> 00:16:34,561 system-- mungkin perisian percuma yang dipanggil Apache, yang CS50 IDE sedang berjalan. 355 00:16:34,561 --> 00:16:36,310 Jadi, anda boleh sebenarnya berfikir bangunan ini 356 00:16:36,310 --> 00:16:38,579 sebagai bangunan di yang CSt0 IDE disimpan. 357 00:16:38,579 --> 00:16:40,870 Itulah di mana anda semua mempunyai akaun, di mana kamu semua 358 00:16:40,870 --> 00:16:43,130 mempunyai pelayan web anda sendiri berjalan, kamu semua 359 00:16:43,130 --> 00:16:45,730 mempunyai URL anda sendiri yang unik, seperti yang kita mula berbincang, 360 00:16:45,730 --> 00:16:47,280 dan anda akan melihat lebih dalam P. menetapkan enam. 361 00:16:47,280 --> 00:16:49,450 >> Berikut adalah komputer riba saya di suatu tempat lagi di internet. 362 00:16:49,450 --> 00:16:54,550 Dan apabila saya melawat URL yang tergolong kepada saya, bahawa trafik internet akan 363 00:16:54,550 --> 00:16:58,360 kepada pelayan, pelayan ini menerima HTTP request-- 364 00:16:58,360 --> 00:17:02,900 seperti mendapatkan index.html dan ia menjawab bahawa laman web. 365 00:17:02,900 --> 00:17:04,280 Jadi itulah paradigma umum. 366 00:17:04,280 --> 00:17:07,089 Sedangkan segala-galanya sehingga kini hari ini, segala-galanya 367 00:17:07,089 --> 00:17:09,660 yang berlaku hanya dalam batasan bangunan ini. 368 00:17:09,660 --> 00:17:12,910 Saya menggunakan komputer riba saya, tetapi Saya telah disambungkan ke CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 jadi semua program-program saya berlari berada di dalam pelayan itu, sendiri. 370 00:17:17,369 --> 00:17:22,660 >> Tetapi sekarang, mari kita mulakan menggunakan semula PHP untuk menulis beberapa program sebenar yang 371 00:17:22,660 --> 00:17:24,230 dihidangkan oleh pelayan web. 372 00:17:24,230 --> 00:17:30,320 Dan untuk melakukan ini, saya akan pergi ke ke dalam sejumlah besar contoh 373 00:17:30,320 --> 00:17:33,710 yang memperkenalkan idea ini di sini. 374 00:17:33,710 --> 00:17:38,500 Jadi ini adalah jenis cara yang mewah menerangkan paradigma pengaturcaraan. 375 00:17:38,500 --> 00:17:41,540 >> Dan sebenarnya, kerana anda keluar CS50 atau bekerja dalam projek akhir, 376 00:17:41,540 --> 00:17:43,520 atau mengambil beberapa mengikuti di kelas, anda akan mula 377 00:17:43,520 --> 00:17:45,740 untuk melihat bahawa world-- yang terutama setelah membesar 378 00:17:45,740 --> 00:17:48,300 dengan bahasa seperti C yang level-- rendah 379 00:17:48,300 --> 00:17:51,290 sedar bahawa ada yang lebih baik cara penulisan perisian. 380 00:17:51,290 --> 00:17:53,290 Terdapat tertentu corak anda boleh mengikuti, 381 00:17:53,290 --> 00:17:57,640 cara-cara tertentu untuk mengatur fail anda dan cara-cara untuk menamakan fungsi anda, 382 00:17:57,640 --> 00:18:00,300 jadi cerita yang panjang pendek, dunia telah datang 383 00:18:00,300 --> 00:18:04,340 dengan sejumlah besar akronim dan nama-nama jalan pengaturcaraan. 384 00:18:04,340 --> 00:18:06,260 Ini hanya teknik yang anda mungkin menggunakan. 385 00:18:06,260 --> 00:18:09,660 >> Dan salah seorang daripada mereka yang dikenali sebagai MVC, untuk Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Dan ini adalah hanya untuk sekarang, yang terlalu rumit 387 00:18:12,270 --> 00:18:18,960 cara untuk mengatakan bagaimana anda perlu meletakkan sebuah laman web berasaskan PHP-, dalam kes kami. 388 00:18:18,960 --> 00:18:22,140 Bagaimana anda mengatur fail anda, bagaimana anda menyusun logik anda, 389 00:18:22,140 --> 00:18:26,220 dengan cara yang menjadikannya lebih mudah untuk menulis laman web yang lebih rumit? 390 00:18:26,220 --> 00:18:28,550 Dan sesungguhnya kami akan cepat sampai ke sana dengan p-set tujuh. 391 00:18:28,550 --> 00:18:32,020 >> Jadi dalam dunia MVC, anda akan untuk melihat bahawa kod kami boleh umumnya 392 00:18:32,020 --> 00:18:38,290 disifatkan sebagai sama ada kod model, atau kod pengawal, atau kod pandangan. 393 00:18:38,290 --> 00:18:40,200 Dan saya akan menggampangkan sebagai follows-- 394 00:18:40,200 --> 00:18:42,074 pengawal adalah otak program anda, 395 00:18:42,074 --> 00:18:44,100 ia adalah di mana semua logik yang menarik berlaku. 396 00:18:44,100 --> 00:18:46,110 Jadi segala yang kita telah menulis setakat ini di dalam kelas, 397 00:18:46,110 --> 00:18:48,210 jenis seperti pengawal code-- ia mengawal 398 00:18:48,210 --> 00:18:50,585 program anda, gelung anda, anda syarat, fungsi anda 399 00:18:50,585 --> 00:18:52,100 dan pembolehubah dan semua itu. 400 00:18:52,100 --> 00:18:56,160 >> Views, sekarang, akan menjadi sedikit lebih jelas dalam dunia web. 401 00:18:56,160 --> 00:18:59,360 Pandangan adalah estetika laman web anda. 402 00:18:59,360 --> 00:19:04,080 Ia adalah apa yang pengguna sees-- imej, jadual HTML, tag HTML, dan semua 403 00:19:04,080 --> 00:19:08,220 Selain itu, semua estetik gebu barangan yang tidak begitu sukar untuk menulis, 404 00:19:08,220 --> 00:19:11,380 tetapi hanya apa yang anda menjana, adalah pandangan yang dipanggil, estetika. 405 00:19:11,380 --> 00:19:13,880 Dan model, akhirnya, akan menjadi pangkalan data stuff-- yang 406 00:19:13,880 --> 00:19:16,510 kami akan mula menyelam ke dalam semua lebih Rabu ini. 407 00:19:16,510 --> 00:19:19,740 Jadi pengawal logik, pandangan adalah barangan estetik, 408 00:19:19,740 --> 00:19:23,500 dan model akan berada di tempat kami menyimpan data sebenar kami. 409 00:19:23,500 --> 00:19:26,410 >> Jadi mari kita lihat ini lebih kukuh dengan contoh berikut. 410 00:19:26,410 --> 00:19:34,700 Saya akan pergi ke dalam direktori saya di sini sumber hari ini code-- semua yang 411 00:19:34,700 --> 00:19:35,770 boleh didapati dalam talian. 412 00:19:35,770 --> 00:19:37,800 Dan saya akan pergi ke dalam versi sifar. 413 00:19:37,800 --> 00:19:41,500 Dan di sini is-- mari kita memanggilnya versi sifar laman web CS50. 414 00:19:41,500 --> 00:19:43,010 Tidak banyak di sini sama sekali. 415 00:19:43,010 --> 00:19:46,810 Ia adalah satu laman web yang sangat mudah yang yang mungkin menggunakan apa HTML tags-- hanya 416 00:19:46,810 --> 00:19:48,970 meneka dari contoh yang lalu? 417 00:19:48,970 --> 00:19:49,890 >> Apa itu? 418 00:19:49,890 --> 00:19:53,920 H1-- mungkin untuk berani besar tajuk, bahawa logo sehingga atas, CS50. 419 00:19:53,920 --> 00:19:55,080 Dan apa lagi yang bermain-main? 420 00:19:55,080 --> 00:19:55,799 Ya? 421 00:19:55,799 --> 00:19:56,840 PENONTON: Senarai Tertib. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: list-- Tertib jadi Tag UL dan mungkin beberapa tag LI. 423 00:19:59,990 --> 00:20:01,840 Dan jika anda tidak ingat ini, dengan jujur ​​tidak mengapa. 424 00:20:01,840 --> 00:20:04,170 Ini adalah jenis berbulu butiran pelaksanaan HTML 425 00:20:04,170 --> 00:20:06,378 bahawa anda boleh dengan cepat melihat ke atas dan anda kembali dalam perjalanan anda. 426 00:20:06,378 --> 00:20:10,040 Kami akan memberi tumpuan lebih kepada pengaturcaraan idea-idea yang adalah kepingan Semakin banyak jus. 427 00:20:10,040 --> 00:20:12,890 >> Jadi mari kita hanya mengambil yang cepat melihat HTML-- dan sesungguhnya 428 00:20:12,890 --> 00:20:16,880 jika saya membuka sumber pandangan di sini, yup, yang yang betul-betul apa yang berlaku di sini. 429 00:20:16,880 --> 00:20:18,440 Ada satu tag UL. 430 00:20:18,440 --> 00:20:20,630 Bersarang di dalam itu adalah untuk tag LI. 431 00:20:20,630 --> 00:20:24,470 Dan kemudian saya meminjam URL yang sukatan pelajaran sebenar di sini. 432 00:20:24,470 --> 00:20:27,570 >> Dan kemudian di lectures.php nampaknya 433 00:20:27,570 --> 00:20:31,640 laman lain yang dihasilkan secara dinamik yang akan mempunyai, mari kita see-- ah, 434 00:20:31,640 --> 00:20:33,170 dua minggu pertama kuliah. 435 00:20:33,170 --> 00:20:36,600 Jadi minggu sifar dan satu minggu, mari kita melihat this-- jika saya melihat sumber halaman, 436 00:20:36,600 --> 00:20:38,120 juga sangat mudah. 437 00:20:38,120 --> 00:20:42,430 Ini membawa kepada dua muka surat dipanggil week0.php dan week1.php. 438 00:20:42,430 --> 00:20:44,040 Oleh itu fikirkanlah sekarang apa yang berlaku. 439 00:20:44,040 --> 00:20:50,630 >> Apabila saya klik pada week0.php, komputer riba saya membuat permintaan untuk week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Pelayan web, a.k.a., CS50 IDE, menerima bahawa sampul surat maya. 442 00:20:58,110 --> 00:21:01,040 Ia melihat mesej seperti, dapatkan week0.php. 443 00:21:01,040 --> 00:21:05,060 Ia kemudian mentafsirkan fail, bahagian ke bawah, kiri ke right-- fail 444 00:21:05,060 --> 00:21:07,720 dipanggil week0.php-- dan meludah keluar keputusan. 445 00:21:07,720 --> 00:21:10,510 Jadi di dalam fail ini, week0.php, mesti 446 00:21:10,510 --> 00:21:15,410 logik pengawal yang menjana HTML ini, dan kita tidak lama lagi akan melihat bahawa. 447 00:21:15,410 --> 00:21:19,340 >> Tetapi buat masa ini, biarlah saya klik pada minggu sifar, dan sekarang kami mempunyai Rabu dan Jumaat, 448 00:21:19,340 --> 00:21:25,260 dan sekarang kami mempunyai slaid perlahan-lahan dari minggu sifar. 449 00:21:25,260 --> 00:21:27,400 Dan anda mungkin ingat ini dari perjalanan pulang apabila. 450 00:21:27,400 --> 00:21:29,340 Jadi itu sahaja laman web ini lakukan. 451 00:21:29,340 --> 00:21:31,120 >> Jadi mari kita memikirkan bagaimana ia melakukan ini. 452 00:21:31,120 --> 00:21:34,290 Saya akan kembali ke dalam kod sumber di sini, di CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 dan saya akan membuka index.php. 454 00:21:36,660 --> 00:21:38,910 Di bahagian atas fail ini adalah sekumpulan komen. 455 00:21:38,910 --> 00:21:43,000 Dan kemudian di pertengahan fail ini, ia Rupa-rupanya, ada kod PHP sekalipun. 456 00:21:43,000 --> 00:21:47,380 Kerana jika anda tidak mempunyai mana-mana daripada kurungan terbuka tag tanda tanya PHP, 457 00:21:47,380 --> 00:21:49,180 anda bebas untuk hanya meletakkan HTML. 458 00:21:49,180 --> 00:21:51,480 >> Kerana apa PHP jurubahasa sepatutnya lakukan, 459 00:21:51,480 --> 00:21:53,938 adalah apabila ia membaca file-- ini atas ke bawah, kiri ke right-- 460 00:21:53,938 --> 00:21:59,100 ia hanya menafsirkan kod ia melihat di antara mereka kurung sudut tanda soal. 461 00:21:59,100 --> 00:22:02,380 Dan apa-apa yang ia tidak mengiktiraf sebagai PHP, ia hanya memuntahkannya keluar. 462 00:22:02,380 --> 00:22:05,080 Dan HTML Adakah antara barang-barang ia hanya akan meludah keluar. 463 00:22:05,080 --> 00:22:09,090 >> Jadi fail ini boleh mempunyai telah dipanggil index.html, 464 00:22:09,090 --> 00:22:11,690 tetapi saya menamakan segala-galanya dot PHP sebagai batu loncatan. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- sama underwhelming, ia hanya beberapa HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, begitu juga hanya sebahagian HTML. 467 00:22:19,840 --> 00:22:22,300 >> Tetapi sekarang mari kita meletakkan di topi kejuruteraan pepatah, 468 00:22:22,300 --> 00:22:24,400 dan mempertimbangkan bagaimana kita boleh meningkatkan ini. 469 00:22:24,400 --> 00:22:28,541 Ia tidak sukar untuk melakukan ini, tetapi saya jenis daripada diturunkan ke dalam salinan dan tampal. 470 00:22:28,541 --> 00:22:31,540 Dan sebenarnya, jika saya membuat dua minggu, anda tahu apa yang saya mungkin saya akan lakukan? 471 00:22:31,540 --> 00:22:34,940 Saya akan pergi ke week1.php, Saya akan menyerlahkan segala-galanya. 472 00:22:34,940 --> 00:22:39,110 Saya akan menyalin, tampalkannya ke dalam fail baru yang dikenali sebagai week2.php, 473 00:22:39,110 --> 00:22:42,440 tweak beberapa URL, dan dalam perjalanan saya. 474 00:22:42,440 --> 00:22:45,240 >> Jadi berdasarkan apa yang kita ada lihat dalam C sudah, 475 00:22:45,240 --> 00:22:46,860 ini tidak merasa seperti, mudah-mudahan. 476 00:22:46,860 --> 00:22:49,610 Copy, paste jarang penyelesaian yang betul. 477 00:22:49,610 --> 00:22:51,429 Jadi apa yang kita boleh mula yang perlu dilakukan untuk memperbaiki ini? 478 00:22:51,429 --> 00:22:53,345 Di manakah peluang untuk reka bentuk yang lebih baik? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Apabila saya dapat minggu lapan, ia akan 481 00:22:58,760 --> 00:23:00,910 menjadi benar-benar menjengkelkan jika saya ingin menukar 482 00:23:00,910 --> 00:23:03,930 fon setiap satu daripada halaman saya, atau jika saya mahu 483 00:23:03,930 --> 00:23:06,522 untuk mengubah struktur susun atur. 484 00:23:06,522 --> 00:23:08,396 Jadi di mana peluang untuk reka bentuk yang lebih baik? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Nah, mari kita mempertimbangkan apa yang dikongsi di semua fail-fail ini. 487 00:23:15,160 --> 00:23:21,696 >> Berikut adalah satu minggu, di sini minggu sifar, di sini adalah lectures.php, 488 00:23:21,696 --> 00:23:25,790 inilah index.php-- apa yang yang sama dan apa yang berbeza, kira-kira bercakap, 489 00:23:25,790 --> 00:23:26,760 Setiap fail ini? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Ya? 492 00:23:32,060 --> 00:23:34,560 >> PENONTON: [didengar] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, baik. 495 00:23:42,160 --> 00:23:46,115 Jadi ada corak, pasti, di mana setiap kali saya memilih kuliah I, 496 00:23:46,115 --> 00:23:48,250 Saya perlu menjana halaman yang kelihatan hampir sama. 497 00:23:48,250 --> 00:23:50,375 Dan jadi mungkin saya boleh memanfaatkan fakta yang benar-benar, 498 00:23:50,375 --> 00:23:53,060 kita sengaja berangka diindeks lectures-- kami 499 00:23:53,060 --> 00:23:55,290 jika saya boleh meletakkan lebih perkataan dalam jawapan anda. 500 00:23:55,290 --> 00:23:59,984 Dan apakah perkara sahaja, benar-benar, yang mengubah antara minggu one-- 501 00:23:59,984 --> 00:24:02,400 dan biarlah saya tatal ke bawah supaya ia kira-kira dalam place-- yang sama 502 00:24:02,400 --> 00:24:05,480 jadi di sini adalah minggu kosong, secara kasar di bahagian atas. 503 00:24:05,480 --> 00:24:12,370 Berikut adalah satu minggu, minggu sifar, satu minggu, minggu sifar. 504 00:24:12,370 --> 00:24:14,370 OK, secara literal jika anda tahu tiada program sekalipun, 505 00:24:14,370 --> 00:24:16,286 ini kini hanya seperti corak permainan yang hampir sama. 506 00:24:16,286 --> 00:24:17,200 Jadi apa yang berbeza? 507 00:24:17,200 --> 00:24:18,765 Ya? 508 00:24:18,765 --> 00:24:19,777 >> PENONTON: [didengar] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Baik, jadi tajuk berubah, pernah jadi sedikit. 510 00:24:22,360 --> 00:24:24,010 Zero akan, sudah tentu, kepada satu. 511 00:24:24,010 --> 00:24:25,570 Perkara yang sama berlaku dalam tag H1. 512 00:24:25,570 --> 00:24:28,790 Dan kami tidak nampak ia sebagai mudah, kerana URL yang sedikit panjang. 513 00:24:28,790 --> 00:24:30,670 Dan orang-orang URL berubah sedikit. 514 00:24:30,670 --> 00:24:34,490 >> Tetapi apa yang tidak berubah iaitu, berani saya berkata, sebahagian besar daripada kandungan page-- yang 515 00:24:34,490 --> 00:24:38,530 tag HTML adalah sama, kepala adalah sama, tajuk yang hampir sama, 516 00:24:38,530 --> 00:24:40,659 tubuh adalah sama, dan hampir segala-galanya 517 00:24:40,659 --> 00:24:42,450 adalah sama kecuali mereka tweak sedikit. 518 00:24:42,450 --> 00:24:45,310 Jadi bagaimana kita boleh pergi tentang berdasarkan beberapa ini keluar? 519 00:24:45,310 --> 00:24:48,740 >> Nah biar saya mencadangkan tepat bahawa dalam versi akan datang. 520 00:24:48,740 --> 00:24:53,890 Jadi di sini dalam versi satu, saya mempunyai yang tepat fail yang sama, ditambah dengan beberapa orang lain. 521 00:24:53,890 --> 00:24:59,730 Berikut adalah index.php-- dan walaupun anda tidak pernah dilihat PHP sebelum ini, 522 00:24:59,730 --> 00:25:05,511 apa yang saya mungkin melakukan untuk menyelesaikan masalah ini problem-- berdasarkan apa yang anda lihat di sini? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Yeah, adalah bahawa komitmen sedikit? 525 00:25:12,760 --> 00:25:13,450 Tidak? 526 00:25:13,450 --> 00:25:16,020 Ya, teruskan. 527 00:25:16,020 --> 00:25:17,380 >> PENONTON: [didengar] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Ya. 529 00:25:18,380 --> 00:25:20,380 >> PENONTON: [didengar] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Saya memerlukan anda untuk bercakap hanya kuat sedikit. 532 00:25:28,669 --> 00:25:31,084 >> PENONTON: [didengar] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, baik. 535 00:25:36,660 --> 00:25:38,620 Dan saya think-- ia sukar untuk mendengar atasmu, tetapi saya 536 00:25:38,620 --> 00:25:42,690 berfikir apa yang anda mendapat di ialah tag yang adalah biasa sehingga atas, 537 00:25:42,690 --> 00:25:47,710 dan tag yang adalah biasa pada bawah, kini telah diambil kira, 538 00:25:47,710 --> 00:25:51,140 atau diturunkan kepada apa fail? 539 00:25:51,140 --> 00:25:53,476 Header.php dan footer.php-- dan kita akan 540 00:25:53,476 --> 00:25:55,600 untuk membuat beberapa tweak untuk menangani kebimbangan yang anda hanya 541 00:25:55,600 --> 00:25:59,370 dibangkitkan mengenai perubahan nombor, untuk Contohnya, jika saya mendengar anda dengan betul. 542 00:25:59,370 --> 00:26:02,060 >> Tetapi itu seolah-olah menjadi intipati daripadanya. 543 00:26:02,060 --> 00:26:04,820 Jika terdapat jumlah yang besar lebihan di bahagian atas halaman, 544 00:26:04,820 --> 00:26:06,736 dan sejumlah besar lebihan di bahagian bawah, 545 00:26:06,736 --> 00:26:09,280 mari kita benar-benar hanya menyerlahkan dan memotong kandungan yang keluar, 546 00:26:09,280 --> 00:26:13,270 memasukkannya ke dalam file-- yang berasingan seperti idea CSS, di mana kita kira daripada 547 00:26:13,270 --> 00:26:16,710 estetika hampir sama, meletakkan dalam fail berasingan titik PHP, 548 00:26:16,710 --> 00:26:20,340 menggunakan memerlukan mechanism-- yang adalah seperti C termasuk- tajam yang 549 00:26:20,340 --> 00:26:23,570 pada dasarnya seperti mengatakan pergi merebut kandungan header.php, 550 00:26:23,570 --> 00:26:25,370 dan copy dan paste di sini. 551 00:26:25,370 --> 00:26:29,490 >> Tetapi apa yang ini bermakna adalah bahawa sekarang di index.php, saya mempunyai kedua-dua baris. 552 00:26:29,490 --> 00:26:32,130 Dalam lectures.php, saya juga mempunyai kedua-dua baris. 553 00:26:32,130 --> 00:26:35,230 Dalam week0.php, saya juga mempunyai kedua-dua baris. 554 00:26:35,230 --> 00:26:38,380 >> Jadi sekarang, jika saya ingin menukar tajuk semua halaman saya, 555 00:26:38,380 --> 00:26:40,530 atau saya hendak menukar struktur asas, 556 00:26:40,530 --> 00:26:44,380 Saya boleh menukar ia kini hanya dalam satu tempat, atau dua tandukan places-- dan kaki, 557 00:26:44,380 --> 00:26:45,429 masing-masing. 558 00:26:45,429 --> 00:26:47,970 Sekarang kod mula kelihatan sedikit lebih samar, bukan? 559 00:26:47,970 --> 00:26:53,590 Tetapi jika anda berfikir tentang apa halaman adalah doing-- jika saya meminta week0.php, 560 00:26:53,590 --> 00:26:59,880 sama seperti di atas lukisan sini-- apabila week0.php diminta, 561 00:26:59,880 --> 00:27:00,960 apa maksudnya? 562 00:27:00,960 --> 00:27:04,410 >> Secara harfiah, fail ini diminta oleh penyemak imbas. 563 00:27:04,410 --> 00:27:06,240 A.k.a. web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- menangkap ini fail, week0.php, dan membaca 565 00:27:09,250 --> 00:27:10,780 ia atas ke bawah, kiri ke kanan. 566 00:27:10,780 --> 00:27:15,400 Free satu, ia segera menemui kurungan terbuka tanda tanya PHP, memerlukan 567 00:27:15,400 --> 00:27:17,872 header dot PHP, dan sebagainya apa jurubahasa PHP 568 00:27:17,872 --> 00:27:20,580 does-- yang dibina ke dalam web pelayan, kerana kita dipratatarajahkan 569 00:27:20,580 --> 00:27:24,580 selama atasmu, ia secara automatik pergi ke dalam header.php, salinan kandungan, 570 00:27:24,580 --> 00:27:25,640 menampal di sini. 571 00:27:25,640 --> 00:27:28,790 >> Tetapi pertemuan jurubahasa tanda soal kurungan rapat, 572 00:27:28,790 --> 00:27:30,320 supaya itu semua dilakukan berfikir. 573 00:27:30,320 --> 00:27:33,400 Kini ia hanya membuta tuli memuntahkannya garis-garis dua melalui tujuh, 574 00:27:33,400 --> 00:27:35,240 kerana ia hanya HTML mentah. 575 00:27:35,240 --> 00:27:38,470 Dapat beratur lapan, dan adakah itu sihir sama again-- membuka fail, 576 00:27:38,470 --> 00:27:41,460 merebut kandungan, dan memerlukan mereka atau menampalkannya 577 00:27:41,460 --> 00:27:42,480 Nah atau di sana. 578 00:27:42,480 --> 00:27:44,210 >> Tetapi saya hanya dirujuk kepada pepijat. 579 00:27:44,210 --> 00:27:48,610 Ini adalah satu langkah separa ke belakang, kerana jika kita melihat di header.php, 580 00:27:48,610 --> 00:27:50,850 Saya telah jenis memotong sudut. 581 00:27:50,850 --> 00:27:56,250 Apakah ciri-ciri yang saya berputus asa dalam usaha untuk mendapatkan reka bentuk diperdebatkan ini lebih baik? 582 00:27:56,250 --> 00:27:57,305 Ya? 583 00:27:57,305 --> 00:27:58,180 PENONTON: [didengar] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Ya, saya jenis daripada memotong sudut nontrivial. 585 00:28:00,570 --> 00:28:04,489 Anda menunjukkan bahawa apa yang telah merubah adalah tajuk, bilangan dalam tajuk, 586 00:28:04,489 --> 00:28:05,530 dan bilangan dalam H1. 587 00:28:05,530 --> 00:28:08,170 Jadi penyelesaian saya, OK, mari kita hanya menamakan semula halaman, 588 00:28:08,170 --> 00:28:10,080 dan tidak berurusan dengan yang masalah sekalipun. 589 00:28:10,080 --> 00:28:12,130 Jadi itulah separa melangkah ke belakang untuk memastikan. 590 00:28:12,130 --> 00:28:14,300 >> Tetapi apa yang perlu diberi perhatian di sini adalah bahawa apa yang saya lakukan 591 00:28:14,300 --> 00:28:17,200 sebaliknya kira semua barangan biasa. 592 00:28:17,200 --> 00:28:21,520 Dan dalam footer.php, notis saya kira daripada semua itu, walaupun lebih kecil, 593 00:28:21,520 --> 00:28:22,790 barangan yang sama. 594 00:28:22,790 --> 00:28:26,070 Jadi saya perlu entah bagaimana sekarang dapat mengambil satu lagi langkah ke hadapan, dan menetapkan 595 00:28:26,070 --> 00:28:27,160 bahawa isu-isu tajuk. 596 00:28:27,160 --> 00:28:28,180 Jadi mari kita buat itu. 597 00:28:28,180 --> 00:28:35,060 >> Biar saya pergi ke dalam versi kedua saya di sini, yang, sekali lagi, mempunyai fail yang sama 598 00:28:35,060 --> 00:28:36,825 kecuali satu tambahan baru. 599 00:28:36,825 --> 00:28:38,950 Dan ia lebih sedikit banyak cakap, tetapi mari kita lihat jika kita 600 00:28:38,950 --> 00:28:40,550 boleh mengusik selain apa yang sedang berlaku di sini. 601 00:28:40,550 --> 00:28:45,370 Jadi, daripada yang memerlukan header.php dan footer.php, 602 00:28:45,370 --> 00:28:50,180 Saya seolah-olah hanya memerlukan satu file-- dipanggil, sudah tentu, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Dan biarlah saya menetapkan sekarang, apa yang di dalam helpers.php 604 00:28:52,560 --> 00:28:55,330 hanya sekumpulan fungsi yang saya tulis, sama seperti sebelum ini. 605 00:28:55,330 --> 00:28:57,550 Tetapi saya memanggilnya helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Sekarang nampaknya, dalam garis tiga dan 10, Saya 607 00:29:00,370 --> 00:29:02,840 memanggil dua functions-- menyebabkan kepala, menyebabkan footer. 608 00:29:02,840 --> 00:29:05,040 Mereka tidak datang dengan PHP, saya menulis mereka sendiri. 609 00:29:05,040 --> 00:29:07,880 Dan saya memasukkannya ke dalam helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Sekarang, kami telah hanya dilihat sintaks ini sekali, dan ia adalah super ringkas. 611 00:29:11,210 --> 00:29:15,330 Tetapi ini nampaknya hujah untuk memberi header, majlis itu. 612 00:29:15,330 --> 00:29:16,450 Mengapa saya tahu bahawa? 613 00:29:16,450 --> 00:29:18,522 Nah di sini adalah satu paren rapat, di sini adalah satu paren terbuka. 614 00:29:18,522 --> 00:29:21,230 Dan sudah tentu, seperti dalam C, apa-apa yang di antara orang-orang kurungan 615 00:29:21,230 --> 00:29:23,350 adalah input-- atau hujah untuk majlis itu. 616 00:29:23,350 --> 00:29:26,710 >> Apakah jenis data bagi hujah ini, berdasarkan apa yang saya telah diketengahkan? 617 00:29:26,710 --> 00:29:30,820 Apa yang mereka tanda kurung siku menunjukkan, berdasarkan minggu lepas? 618 00:29:30,820 --> 00:29:33,390 Ya, ia array-- yang khusus pelbagai bersekutu. 619 00:29:33,390 --> 00:29:35,700 Dan sintaks ini diakui adalah funky sedikit, 620 00:29:35,700 --> 00:29:38,860 tetapi ini hanya lulus dalam satu pasangan nilai utama. 621 00:29:38,860 --> 00:29:43,530 Yang penting adalah, quote unquote tajuk, dan nilai adalah CS50. 622 00:29:43,530 --> 00:29:46,220 >> Jika kita telah melakukan ini dalam C, ia mungkin sebaliknya 623 00:29:46,220 --> 00:29:49,400 kelihatan lebih seperti ini, hanya quote unquote CS50-- 624 00:29:49,400 --> 00:29:52,460 atau sebenarnya ia akan menjadi kerinting pendakap, atau sesuatu seperti itu dalam C, 625 00:29:52,460 --> 00:29:55,580 di mana yang penting adalah sifar, dan nilai adalah CS50. 626 00:29:55,580 --> 00:29:59,840 Tetapi sekali lagi, dalam PHP, walaupun sintaks, sekali lagi, sedikit pelik, 627 00:29:59,840 --> 00:30:02,860 ia membolehkan anda untuk lulus dalam kata-kata bukan nombor 628 00:30:02,860 --> 00:30:05,120 untuk mengaitkan kunci dengan nilai-nilai. 629 00:30:05,120 --> 00:30:06,390 >> Jadi apakah ini semua bermakna? 630 00:30:06,390 --> 00:30:09,750 Jika saya pergi ke helpers.php, mari kita lihat fungsi ini. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, dan bukan renderHeader adalah fungsi saya, 632 00:30:13,620 --> 00:30:16,220 dan saya tahu bahawa kerana saya melihat kata kunci majlis itu di sini. 633 00:30:16,220 --> 00:30:19,450 Ini baru dari C-- ia nampaknya mengambil hujah dipanggil data-- 634 00:30:19,450 --> 00:30:22,400 tetapi saya boleh dipanggil ini apa-apa, tetapi saya memanggilnya data, 635 00:30:22,400 --> 00:30:25,090 hanya untuk menjadi clean-- sedikit dan hanya mengambil tekaan, terutamanya 636 00:30:25,090 --> 00:30:28,173 jika anda telah diprogramkan dalam beberapa lain bahasa peringkat tinggi sebelum, sesuatu 637 00:30:28,173 --> 00:30:29,820 atas C dari segi konsep. 638 00:30:29,820 --> 00:30:33,820 >> Apakah kurungan terbuka sama Tanda kurung siku mungkin bermakna? 639 00:30:33,820 --> 00:30:35,540 Atau ia mungkin bermakna? 640 00:30:35,540 --> 00:30:39,660 Kami tidak melihat ini dalam C. Ya? 641 00:30:39,660 --> 00:30:40,480 >> Pelbagai kosong. 642 00:30:40,480 --> 00:30:45,440 Secara khusus, ini bermakna bahawa jika pengguna tidak memanggil renderHeader 643 00:30:45,440 --> 00:30:49,340 dengan hujah, saya masih akan untuk mempunyai hujah dipanggil data, 644 00:30:49,340 --> 00:30:52,327 tetapi nilai lalai adalah akan menjadi pelbagai kosong. 645 00:30:52,327 --> 00:30:53,660 Jadi ia hanya satu kemudahan yang bagus. 646 00:30:53,660 --> 00:30:56,493 Saya tidak perlu menjerit pada pengguna, atau mengatakan anda menggunakan fungsi saya salah. 647 00:30:56,493 --> 00:30:59,849 Saya hanya boleh memberi pengguna lalai nilai, jika saya tidak terutamanya mengambil berat. 648 00:30:59,849 --> 00:31:01,890 Sekarang fungsi ini, saya akan melambai tangan saya. 649 00:31:01,890 --> 00:31:07,620 Tetapi fungsi ekstrak ini membolehkan kami berjalan pembolehubah dalam data 650 00:31:07,620 --> 00:31:10,360 ke dalam header.php dengan cara yang berikut. 651 00:31:10,360 --> 00:31:13,100 Dan ini adalah bahagian yang lepas, Saya fikir, sintaksis funky. 652 00:31:13,100 --> 00:31:15,860 Berikut adalah versi baru saya daripada header.php-- ia 653 00:31:15,860 --> 00:31:20,140 pernah berkata, secara literal, terbuka kurungan tajuk CS50, dan bahawa adalah ia. 654 00:31:20,140 --> 00:31:21,766 Dan perkara yang sama untuk H1. 655 00:31:21,766 --> 00:31:24,310 >> Kini ia nampaknya kata sesuatu yang cukup funky. 656 00:31:24,310 --> 00:31:28,030 Dan biarlah saya memudahkan ini seketika seperti berikut. 657 00:31:28,030 --> 00:31:31,020 Ini adalah apa yang saya telah menukar jawatan saya untuk menjadi. 658 00:31:31,020 --> 00:31:35,140 Walau bagaimanapun, ia semakin sedikit hodoh untuk kurungan sentiasa terbuka dengan PHP, 659 00:31:35,140 --> 00:31:36,610 dan kemudian menggunakan fungsi cetak. 660 00:31:36,610 --> 00:31:40,810 Ia ternyata bahawa PHP mempunyai trengkas yang notasi untuk ini, yang hanya 661 00:31:40,810 --> 00:31:45,050 tanda sama, yang secara teknikal fungsi dipanggil echo dan bukan cetak, 662 00:31:45,050 --> 00:31:46,800 tetapi ia adalah perkara yang sama, dengan berkesan. 663 00:31:46,800 --> 00:31:48,440 >> Yang hanya kelihatan lebih baik. 664 00:31:48,440 --> 00:31:50,510 Ia hanya sintaksis gula, jika anda akan, 665 00:31:50,510 --> 00:31:52,260 yang membuat kod saya kelihatan sedikit lebih baik. 666 00:31:52,260 --> 00:31:54,010 Tetapi ternyata, dan kita akan melihat ini sekali lagi 667 00:31:54,010 --> 00:31:57,420 tidak lama, kita perlu memanggil ini annoyingly fungsi lama dipanggil 668 00:31:57,420 --> 00:32:00,582 HTML aksara khas PHP, kerana ia ternyata 669 00:32:00,582 --> 00:32:02,790 ada input tertentu bahawa pengguna mungkin memberikan kita, 670 00:32:02,790 --> 00:32:05,160 atau bahawa pengguna mungkin memberikan kita, yang akan memecahkan laman web kami. 671 00:32:05,160 --> 00:32:07,035 Tetapi kita akan melihat bahawa akan datang minggu dengan JavaScript. 672 00:32:07,035 --> 00:32:10,740 Tetapi buat masa ini, hanya tahu bahawa fail ini, headers.php, semata-mata 673 00:32:10,740 --> 00:32:13,040 mengambil tajuk yang Saya lulus dalam, ia membuat 674 00:32:13,040 --> 00:32:17,380 memastikan ia selamat untuk disuntik ke dalam web yang halaman, dan ia memuntahkannya keluar sebagai tajuk saya 675 00:32:17,380 --> 00:32:18,640 dan sebagai H1 saya. 676 00:32:18,640 --> 00:32:24,440 Jadi, jika saya pergi ke dalam versi ini sekarang, melihat bahawa kuliah mempunyai tajuk kembali, 677 00:32:24,440 --> 00:32:28,630 minggu sifar mempunyai tajuk kembali, dan sesungguhnya HTML saya menjana 678 00:32:28,630 --> 00:32:32,110 adalah sama dengan apa yang versi pertama saya was-- kecuali ruang kosong saya, 679 00:32:32,110 --> 00:32:35,150 kerana saya telah memulakan pemformatan kod saya sedikit berbeza. 680 00:32:35,150 --> 00:32:38,082 Tetapi saya telah dijana semua kod yang saya hargai. 681 00:32:38,082 --> 00:32:39,790 Jadi biarlah saya berhenti seketika untuk hanya seketika dan melihat 682 00:32:39,790 --> 00:32:42,200 jika ada sebarang pertanyaan atau kekeliruan yang saya buat. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Baiklah, jadi mari kita twist agak sukar di sini 685 00:32:48,150 --> 00:32:51,500 untuk melihat sama ada terdapat satu peluang untuk penambahbaikan. 686 00:32:51,500 --> 00:32:56,130 Helpers.php juga mempunyai ini fungsi, yang dipanggil renderFooter. 687 00:32:56,130 --> 00:32:59,652 Dan apa yang perlu diberi perhatian mengenai renderHeader dan renderFooter? 688 00:32:59,652 --> 00:33:02,610 Dan sekali lagi, untuk tujuan hari ini, tahu bahawa fungsi ekstrak sahaja 689 00:33:02,610 --> 00:33:08,280 cara saya hujah-hujah yang berlalu ke dalam header.php dan footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Maaf? 692 00:33:11,780 --> 00:33:13,056 >> PENONTON: [didengar] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Ya, saya hanya mengubah memerlukan garis. 694 00:33:15,180 --> 00:33:19,410 Jadi benar-benar, saya telah berbuat dosa menyalin dan menampal, sekali lagi. 695 00:33:19,410 --> 00:33:21,920 Ia bukan jumlah yang besar garis-garis, tetapi datang pada-- 696 00:33:21,920 --> 00:33:25,220 jika saya menyalin dan menampal segala-galanya hanya untuk menukar satu perkataan kecil, 697 00:33:25,220 --> 00:33:28,610 dan satu perkataan kecil yang menunjukkan Alan keluar adalah footer di sini, berbanding header di sini. 698 00:33:28,610 --> 00:33:30,670 Jika tidak, segala-galanya adalah sama, kecuali, 699 00:33:30,670 --> 00:33:32,180 sudah tentu, nama fungsi ini. 700 00:33:32,180 --> 00:33:33,690 Jadi apa yang kita boleh melakukan lebih baik? 701 00:33:33,690 --> 00:33:39,810 >> Nah biar saya membuka versi ini di sini, di mana pada helpers.php, 702 00:33:39,810 --> 00:33:42,300 mengapa tidak saya hanya mendapat sedikit lebih bijak tentang perkara ini? 703 00:33:42,300 --> 00:33:46,410 Tulis lebih rumit kod, tetapi memanggilnya menyebabkan? 704 00:33:46,410 --> 00:33:48,470 Jadi apa yang saya asasnya berubah? 705 00:33:48,470 --> 00:33:51,770 >> Ia mengambil hujah sekarang-- dua hujah, data masih. 706 00:33:51,770 --> 00:33:54,444 Dan kemudian apa yang pertama nama mungkin digunakan untuk, 707 00:33:54,444 --> 00:33:55,860 berdasarkan apa yang anda baca di sini? 708 00:33:55,860 --> 00:33:58,452 Walaupun sebahagian daripada sintaks yang masih baru. 709 00:33:58,452 --> 00:33:59,660 Apakah tanda template dolar? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Maaf? 712 00:34:03,016 --> 00:34:03,710 >> PENONTON: Tandukan atau nota kaki. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: Tandukan atau nota kaki. 714 00:34:04,510 --> 00:34:07,134 Jadi nampaknya, saya memutuskan bahawa jika satu-satunya perkara yang mengubah 715 00:34:07,134 --> 00:34:10,159 adalah apa template Saya hendak untuk print-- dan dengan template 716 00:34:10,159 --> 00:34:13,100 Yang saya maksudkan ini adalah pelan tindakan untuk kod yang saya mahu output, 717 00:34:13,100 --> 00:34:16,350 tetapi saya ingin pasangkan beberapa values-- jadi jika ia hanya header 718 00:34:16,350 --> 00:34:20,440 atau kaki, mengapa tidak saya parameterize itu dan memanggil tanda dolar hujah 719 00:34:20,440 --> 00:34:21,409 template? 720 00:34:21,409 --> 00:34:26,250 Dan kemudian sintaks funky ini membolehkan saya untuk membuat jalan yang dalam pembolehubah di sini. 721 00:34:26,250 --> 00:34:28,030 >> Jadi jalan tanda dolar adalah pembolehubah. 722 00:34:28,030 --> 00:34:31,120 Apakah sintaks ini lakukan, jika anda biasa? 723 00:34:31,120 --> 00:34:32,512 Ya? 724 00:34:32,512 --> 00:34:34,065 >> PENONTON: [didengar] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Tepat sekali. 726 00:34:34,940 --> 00:34:37,600 Jika template, quote unquote, header, atau jika template, 727 00:34:37,600 --> 00:34:41,170 quote unquote, kaki, garis yang terdapat bahawa saya telah menekankan, barisan lapan, 728 00:34:41,170 --> 00:34:46,330 adalah semata-mata mengambil nama itu, seperti header, dan concatenating dengan dot PHP. 729 00:34:46,330 --> 00:34:49,750 Oleh itu, kita tidak mempunyai operator ini dalam C. Ini pengendali dot 730 00:34:49,750 --> 00:34:54,520 satu perkara yang menakjubkan dalam PHP-- jika anda biasa dengan JavaScript atau Jawa, 731 00:34:54,520 --> 00:34:56,949 anda boleh menggunakan campur log lakukan dinamika. 732 00:34:56,949 --> 00:34:59,974 >> Dalam C, ia adalah sakit di neck-- yang dan saya minta maaf, dalam p-set enam, 733 00:34:59,974 --> 00:35:02,390 anda akan perlu lakukan this-- ia adalah sakit di leher 734 00:35:02,390 --> 00:35:03,930 untuk merangkaikan tali. 735 00:35:03,930 --> 00:35:04,670 Mengapa? 736 00:35:04,670 --> 00:35:06,580 Nah, kerana jika anda telah mendapat rentetan yang ini panjang, 737 00:35:06,580 --> 00:35:09,538 dan satu lagi rentetan yang ini panjang, anda tidak boleh hanya plug mereka bersama-sama. 738 00:35:09,538 --> 00:35:11,070 Apa yang anda dan bukannya perlu lakukan dalam C? 739 00:35:11,070 --> 00:35:11,680 Ya? 740 00:35:11,680 --> 00:35:12,380 >> PENONTON: [didengar] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Anda perlu malloc memori, atau menggunakan array pada timbunan. 742 00:35:15,090 --> 00:35:17,214 Dan anda sebenarnya perlu membuat pelbagai yang cukup besar 743 00:35:17,214 --> 00:35:20,940 untuk muat ini ditambah ini, tambah garis sendeng terbalik sifar. 744 00:35:20,940 --> 00:35:24,994 Kemudian menyatukan mereka bersama-sama menggunakan kacau kucing atau secara manual dengan untuk gelung, 745 00:35:24,994 --> 00:35:26,160 atau apa-apa bilangan teknik. 746 00:35:26,160 --> 00:35:27,760 Dan kita menunjukkan pasangan di dalam p-set enam. 747 00:35:27,760 --> 00:35:29,080 >> Ia adalah satu kesakitan di leher. 748 00:35:29,080 --> 00:35:34,190 Dan ini adalah benar-benar apa yang saya maksudkan tentang ini berbanding this-- seperti C berbanding PHP. 749 00:35:34,190 --> 00:35:36,870 Anda hanya mendapat lebih banyak lagi fungsi secara percuma, 750 00:35:36,870 --> 00:35:39,030 supaya anda boleh memberi tumpuan, ideal, pada keseronokan 751 00:35:39,030 --> 00:35:41,190 sebahagian daripada pengekodan, yang projek yang anda mahu untuk menyelesaikan, 752 00:35:41,190 --> 00:35:43,190 bukannya detel tahap yang rendah. 753 00:35:43,190 --> 00:35:49,840 >> Jadi ini hanya menjana header.php atau footer.php berdasarkan yang mana satu saya memanggil. 754 00:35:49,840 --> 00:35:52,280 Dan sesungguhnya jika saya pergi ke dalam index.php, notis 755 00:35:52,280 --> 00:35:56,230 semua itu changed-- Daripada memanggil menyebabkan header atau menjadikan kaki, 756 00:35:56,230 --> 00:36:00,230 Saya memanggil memberi, diikuti dengan menamakan template yang saya mahu lakukan. 757 00:36:00,230 --> 00:36:02,370 Dan anda akan melihat ini, juga, dalam masalah menetapkan tujuh, 758 00:36:02,370 --> 00:36:05,530 di mana kami membolehkan anda untuk menggunakan fungsi sama untuk membuat tandan 759 00:36:05,530 --> 00:36:07,550 dan tandan laman web yang berbeza. 760 00:36:07,550 --> 00:36:10,570 >> Jadi, daripada tinggal terlalu yang lebih kepada details-- 761 00:36:10,570 --> 00:36:13,210 yang anda akan melihat sekali lagi pada set masalah seven-- mari kita lihat 762 00:36:13,210 --> 00:36:16,850 di tempah awal penyelesaian kepada masalah yang lebih menarik. 763 00:36:16,850 --> 00:36:19,310 Setakat ini, tiada apa yang kita ada dilakukan mempunyai data disimpan. 764 00:36:19,310 --> 00:36:22,920 Malah, satu-satunya masa kita pernah disimpan sesuatu yang kita lakukan di dalam kelas ini 765 00:36:22,920 --> 00:36:31,030 adalah apabila kita mempunyai demo sangat mudah seketika kembali, di mana kita menggunakan fail IO dalam C, 766 00:36:31,030 --> 00:36:34,520 dan saya rasa saya tulis nama saya, dan Nama Hannah, dan nama Maria, 767 00:36:34,520 --> 00:36:37,610 atau mungkin nama Andy, dan maka kita menyelamatkan file-- CSV 768 00:36:37,610 --> 00:36:39,430 dipisahkan oleh koma fail nilai. 769 00:36:39,430 --> 00:36:43,530 >> Dan kami sentiasa fopen-- saya fikir kami menggunakan fprintf seperti yang saya ingat, 770 00:36:43,530 --> 00:36:44,910 dan Kami selamatkan fail. 771 00:36:44,910 --> 00:36:46,920 Sekarang, yang paling mudah yang bentuk pangkalan data. 772 00:36:46,920 --> 00:36:50,230 Jika anda ingin membuat laman web untuk Program Frosh IM, di mana mahasiswa 773 00:36:50,230 --> 00:36:53,390 boleh mendaftar untuk sukan, anda ideal mahu melakukan sesuatu dengan data tersebut. 774 00:36:53,390 --> 00:36:55,370 Minggu lepas, kami tidak apa-apa dengan data-- kita hanya berkata, 775 00:36:55,370 --> 00:36:56,661 anda berdaftar, tidak benar-benar. 776 00:36:56,661 --> 00:36:58,950 Atau mungkin saya melalui e-mel yang proctor, dan bahawa adalah ia. 777 00:36:58,950 --> 00:37:02,110 >> Tetapi ia akan lebih baik jika saya boleh memberi proctor bahawa fail CSV, 778 00:37:02,110 --> 00:37:03,340 seperti fail Excel. 779 00:37:03,340 --> 00:37:05,090 Atau lebih baik lagi, ia akan lebih baik jika saya boleh 780 00:37:05,090 --> 00:37:08,830 meletakkan nama orang-orang pengguna dan asrama nama-nama dan semua itu 781 00:37:08,830 --> 00:37:11,740 ke dalam pangkalan data yang hanya tinggal selama-lamanya, 782 00:37:11,740 --> 00:37:13,530 sehingga saya memilih untuk memadamkan data. 783 00:37:13,530 --> 00:37:15,645 Satu pangkalan data yang membolehkan saya membuat carian maklumat. 784 00:37:15,645 --> 00:37:18,070 Dan sesungguhnya, itulah yang pangkalan data adalah. 785 00:37:18,070 --> 00:37:20,470 >> Kami memperkenalkan hari ini, dan minggu depan, juga, teknologi 786 00:37:20,470 --> 00:37:25,020 dipanggil SQL-- yang Pertanyaan Berstruktur Bahasa, iaitu bahasa lain. 787 00:37:25,020 --> 00:37:28,750 Ia pada asasnya pengaturcaraan bahasa, tetapi untuk pangkalan data. 788 00:37:28,750 --> 00:37:31,760 Dan pangkalan data untuk sekarang, hanya fikirkan sebagai versi super mewah 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel, atau Google Spreadsheet, atau Nombor Apple. 790 00:37:35,710 --> 00:37:39,950 Ia biasanya satu program yang membolehkan anda menyimpan sejumlah besar data 791 00:37:39,950 --> 00:37:43,960 dalam baris dan lajur, agak seperti anda mungkin dalam Excel. 792 00:37:43,960 --> 00:37:47,100 >> Tetapi apa yang baik, terutamanya jika kita tidak biasa dengan super Excel, 793 00:37:47,100 --> 00:37:52,040 apa SQL membolehkan anda lakukan adalah pertanyaan ini maklumat dengan menulis baris kod 794 00:37:52,040 --> 00:37:55,220 di mana anda boleh, walaupun anda pangkalan data mempunyai juta baris di dalamnya, 795 00:37:55,220 --> 00:37:57,190 anda boleh mencari sesuatu super cepat. 796 00:37:57,190 --> 00:37:59,950 Malah, Excel amat tidak baik pada set data yang besar. 797 00:37:59,950 --> 00:38:02,460 Dan sebenarnya, sehingga beberapa tahun yang lalu, ternyata 798 00:38:02,460 --> 00:38:08,890 Excel hanya membenarkan anda untuk menyimpan sehingga 65,535 baris yang data-- 799 00:38:08,890 --> 00:38:12,020 bunyi seperti banyak, tetapi pada kali saya adalah seorang pelajar grad, 800 00:38:12,020 --> 00:38:14,920 dan saya masih ingat tersandung ini kerana saya telah menjana 801 00:38:14,920 --> 00:38:17,900 Fail CSV untuk penyelidikan dan saya saya mahu menganalisis mereka dengan cepat 802 00:38:17,900 --> 00:38:19,530 dengan hanya membuka di Excel. 803 00:38:19,530 --> 00:38:23,730 Sudah tentu, komputer saya hanya terhempas, kerana saya mempunyai lebih 65,000 baris. 804 00:38:23,730 --> 00:38:27,210 >> Tetapi di mana yang dilakukan oleh 65.535 datang? 805 00:38:27,210 --> 00:38:29,670 Apa yang Microsoft lakukan, mungkin? 806 00:38:29,670 --> 00:38:32,430 Jika anda baik dengan kuasa anda dua? 807 00:38:32,430 --> 00:38:37,160 Ya, mereka telah menggunakan 16-bit Nilai untuk mewakili nombor baris. 808 00:38:37,160 --> 00:38:41,310 Dan dua hingga 16 adalah 65,536-- tolak satu, kerana jika anda 809 00:38:41,310 --> 00:38:45,414 indeks sifar bermakna itu adalah paling banyak baris saya boleh mempunyai. 810 00:38:45,414 --> 00:38:46,830 Dan ia adalah satu keputusan reka bentuk. 811 00:38:46,830 --> 00:38:52,760 Dengan menyimpan 16 bit, mereka terhad saya 16,000 baris, bukan 4 bilion, 812 00:38:52,760 --> 00:38:54,322 yang saya boleh mempunyai ideal. 813 00:38:54,322 --> 00:38:57,030 Tetapi untuk sekarang, kita akan memperkenalkan ini lebih dalam konteks web. 814 00:38:57,030 --> 00:39:00,390 Dan apa yang baik tentang SQL ialah walaupun walaupun ia cukup kuat dan cantik 815 00:39:00,390 --> 00:39:04,050 canggih, ia benar-benar bisul turun kepada empat operasi utama, empat 816 00:39:04,050 --> 00:39:08,060 fungsi utama, jika anda will-- memilih, untuk mendapatkan semula data, mencari 817 00:39:08,060 --> 00:39:12,510 untuk data; memadam atau memadam data; memasukkan untuk menambah baris untuk pangkalan data; 818 00:39:12,510 --> 00:39:13,410 dan dipertingkatkan. 819 00:39:13,410 --> 00:39:17,010 Jadi, jika anda pernah menggunakan Google Hamparan, Nombor Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, anda telah dilaksanakan, kemungkinan besar, semua 821 00:39:19,310 --> 00:39:22,530 operasi ini sebagai manusia oleh hanya menggunakan papan kekunci dan mouse-- anda 822 00:39:22,530 --> 00:39:26,050 memasukkan data, menggunakan mata anda untuk memilih atau mencari data, 823 00:39:26,050 --> 00:39:28,360 atau data yang kemas kini, atau memadam data. 824 00:39:28,360 --> 00:39:29,870 >> Jadi apa maknanya? 825 00:39:29,870 --> 00:39:34,300 Well, sebelum dipasang dalam CS50 IDE adalah program yang dikenali sebagai MySQL. 826 00:39:34,300 --> 00:39:37,050 Ia adalah satu, sumber terbuka bebas pangkalan data yang yang super hebat. 827 00:39:37,050 --> 00:39:40,590 Facebook, misalnya, menggunakan ia untuk ini hari, antara peralatan yang mereka gunakan. 828 00:39:40,590 --> 00:39:44,300 Dan banyak laman web yang sangat popular digunakan dalam sebahagian besar kerana ia cepat, 829 00:39:44,300 --> 00:39:45,230 dan kerana ia adalah percuma. 830 00:39:45,230 --> 00:39:46,820 Walaupun pasti alternatif yang wujud. 831 00:39:46,820 --> 00:39:49,580 Dan sebahagian daripada anda mungkin cuba-cuba dengan alternatif untuk projek akhir. 832 00:39:49,580 --> 00:39:55,330 >> Ini adalah tangkapan skrin, sementara itu, sudah alat berasaskan web yang dikenali sebagai phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Ia adalah kebetulan bahawa alat berasaskan web ini juga 834 00:39:58,260 --> 00:40:01,720 ditulis dalam bahasa, PHP, tetapi apa yang ia bertujuan untuk melakukan 835 00:40:01,720 --> 00:40:04,620 yang memberikan kita berasaskan web antara muka kepada pangkalan data. 836 00:40:04,620 --> 00:40:07,180 Kerana MySQL biasanya adalah sesuatu, dari segi sejarah, anda 837 00:40:07,180 --> 00:40:08,770 akan berinteraksi dengan hanya dengan baris perintah. 838 00:40:08,770 --> 00:40:10,811 Dan ia akan menjadi super menjengkelkan dan sukar difahami untuk mempunyai 839 00:40:10,811 --> 00:40:14,487 menaip arahan teks untuk memilih data, memasukkan data, dan memadam data. 840 00:40:14,487 --> 00:40:16,820 Jadi beberapa orang di internet menulis sebuah program berasaskan web 841 00:40:16,820 --> 00:40:18,900 yang hanya membiarkan kita menguruskan data dalam pangkalan data kami. 842 00:40:18,900 --> 00:40:23,040 Ia seperti double klik pada Excel dan menjalankan versi berasaskan web itu. 843 00:40:23,040 --> 00:40:26,370 >> Dan apa yang anda akan menggunakan ini untuk akhirnya minggu depan, bukan dalam p-set enam, 844 00:40:26,370 --> 00:40:28,680 tetapi adalah untuk membina sesuatu dipanggil CS50 Kewangan, yang 845 00:40:28,680 --> 00:40:32,630 akan mempunyai pangkalan data pengguna, dengan nama pengguna dan kata laluan, 846 00:40:32,630 --> 00:40:34,860 jumlah dolar yang mereka ada dalam akaun bank mereka. 847 00:40:34,860 --> 00:40:37,280 Ia akan menjadi sesuatu yang anda gunakan untuk menyimpan 848 00:40:37,280 --> 00:40:39,910 simbol-simbol dan kuantiti saham yang pengguna 849 00:40:39,910 --> 00:40:42,567 telah membeli menggunakan maya dolar yang anda akan memberikan kepada mereka. 850 00:40:42,567 --> 00:40:44,900 Dan ia akan membolehkan pengguna mendaftar untuk laman web anda, 851 00:40:44,900 --> 00:40:47,190 supaya walaupun rakan-rakan anda boleh menala ke laman web anda 852 00:40:47,190 --> 00:40:49,360 dan benar-benar mendaftar, login, dan bermain-main 853 00:40:49,360 --> 00:40:52,807 dan cuba untuk mencari kesalahan dalam kod anda, dan cuba untuk mencari bug dalam laman web anda. 854 00:40:52,807 --> 00:40:55,390 Dan mereka hanya akan mendaftar dengan menambah diri mereka sendiri, berkesan, 855 00:40:55,390 --> 00:40:58,120 melalui kod anda menulis kepada pangkalan data anda. 856 00:40:58,120 --> 00:41:02,470 >> Sebagai contoh, ini adalah screenshot cepat apa pangkalan data yang mungkin kelihatan seperti. 857 00:41:02,470 --> 00:41:05,190 Ini adalah dari salah satu solutions-- tahun lepas 858 00:41:05,190 --> 00:41:07,760 ini adalah seperti mini Excel fail, disimpan dalam pangkalan data kami, 859 00:41:07,760 --> 00:41:09,950 disimpan di dalam perisian ini dipanggil MySQL. 860 00:41:09,950 --> 00:41:13,260 Di sebelah kiri, saya telah nampaknya diberikan setiap pengguna nombor yang unik. 861 00:41:13,260 --> 00:41:16,200 Dalam ruang kedua, saya telah diberi semua orang pengguna name-- saya sendiri 862 00:41:16,200 --> 00:41:16,880 di antara mereka. 863 00:41:16,880 --> 00:41:21,430 Dan di sebelah kanan, Saya telah memberikan mereka hash. 864 00:41:21,430 --> 00:41:26,760 >> Sekarang ini adalah benar-benar kata laluan, tetapi ia bukan satu kata laluan teks biasa. 865 00:41:26,760 --> 00:41:30,160 Ia adalah satu kata laluan disulitkan, jika anda akan, atau kata laluan hash. 866 00:41:30,160 --> 00:41:32,000 Yang kita akan kembali kepada tidak lama lagi. 867 00:41:32,000 --> 00:41:34,340 >> Tetapi jika anda pernah membaca artikel mengenai bagaimana 868 00:41:34,340 --> 00:41:37,950 kata laluan anda di beberapa bank atau beberapa laman web mungkin telah terjejas, 869 00:41:37,950 --> 00:41:39,630 ia secara amnya boleh bermaksud satu daripada dua perkara. 870 00:41:39,630 --> 00:41:42,780 Jadi ini adalah hanya petikan dari pengguna enam. 871 00:41:42,780 --> 00:41:45,460 Anda semua kini boleh memikirkan keluar melalui penggodaman atau keretakan 872 00:41:45,460 --> 00:41:47,690 apa kata laluan enam orang kita berada. 873 00:41:47,690 --> 00:41:49,720 Tetapi jika anda telah pernah mendapat amaran atau meminta maaf 874 00:41:49,720 --> 00:41:52,803 daripada sebuah syarikat atau laman web pepatah, maaf, penggodam memecah masuk ke pangkalan data kami, 875 00:41:52,803 --> 00:41:56,360 anda mungkin perlu menukar anda kata laluan, apa yang mungkin maksudnya? 876 00:41:56,360 --> 00:41:59,670 >> Well, satu, boleh bermakna syarikat telah lebih bodoh, 877 00:41:59,670 --> 00:42:03,630 dan telah menyimpan kata laluan anda dalam lajur seperti ini, tanpa enkrip. 878 00:42:03,630 --> 00:42:05,840 Yang bermaksud lawan, yang mencuri pangkalan data, 879 00:42:05,840 --> 00:42:07,440 benar-benar tahu anda nama pengguna dan kata laluan. 880 00:42:07,440 --> 00:42:08,960 Itulah senario yang paling buruk. 881 00:42:08,960 --> 00:42:11,710 Dan seperti yang anda akan lihat dalam p-set tujuh, begitu mudah untuk mengelakkan. 882 00:42:11,710 --> 00:42:15,624 Sama sekali tidak ada alasan untuk bentuk kebodohan di internet hari ini. 883 00:42:15,624 --> 00:42:18,540 Two-- dan kami akan mencari beberapa artikel untuk memberi keterangan fakta bahawa ini masih 884 00:42:18,540 --> 00:42:21,710 berlaku, nonetheless-- dua, mungkin musuh 885 00:42:21,710 --> 00:42:23,840 mencuri versi pangkalan data. 886 00:42:23,840 --> 00:42:27,110 Yang masih sejenis yang tidak baik, kerana sekarang mereka tahu bahawa saya mempunyai enam pelanggan, 887 00:42:27,110 --> 00:42:29,270 Saya tahu nama-nama pengguna dari orang-orang enam pelanggan, 888 00:42:29,270 --> 00:42:32,910 dan saya tahu yang disulitkan versi, atau versi dicincang, 889 00:42:32,910 --> 00:42:34,340 kata laluan mereka enam pelanggan. 890 00:42:34,340 --> 00:42:37,010 Dan sesiapa di antara kamu yang mungkin sudah siap [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 di mana anda retak kata laluan, atau mengambil yang melihat bahawa versi masalah 892 00:42:41,150 --> 00:42:46,280 set, mengapa ia masih membimbangkan sedikit jika musuh mengetahui hash anda 893 00:42:46,280 --> 00:42:47,435 kata laluan? 894 00:42:47,435 --> 00:42:49,732 >> PENONTON: Kerana mereka boleh masukkan seluruh kamus 895 00:42:49,732 --> 00:42:50,690 ke dalam fungsi hash. 896 00:42:50,690 --> 00:42:54,520 Dan jika kata laluan anda adalah kamus yang perkataan, [? mereka hanya boleh match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Tepat sekali, musuh hanya boleh menulis kod, seperti sebahagian dari kamu 898 00:42:57,640 --> 00:43:00,526 lakukan untuk [? Hacker?] 2, di mana anda melelar 899 00:43:00,526 --> 00:43:03,400 semua perkataan di dalam kamus, atau semua kemungkinan kombinasi A 900 00:43:03,400 --> 00:43:06,610 hingga Z dan satu melalui nine-- yang berbunyi seperti banyak, dan ia adalah. 901 00:43:06,610 --> 00:43:08,361 Tetapi bagi komputer, ia cukup darn cepat. 902 00:43:08,361 --> 00:43:10,610 Dan sebenarnya, yang merupakan titik [? Hacker 2,?] Adalah 903 00:43:10,610 --> 00:43:12,540 untuk mengambil barang-barang yang benar-benar kelihatan seperti ini, 904 00:43:12,540 --> 00:43:14,900 dan kejuruteraan balik apa yang ia sebenarnya adalah. 905 00:43:14,900 --> 00:43:17,270 >> Oleh itu, kita akan melihat bagaimana kita boleh menyimpan ini dengan lebih cekap. 906 00:43:17,270 --> 00:43:20,210 Rupa-rupanya, bersyukur dalam MySQL, ada akan menjadi jenis data. 907 00:43:20,210 --> 00:43:22,800 Dan salah satu daripada bahagian-bahagian yang menyeronokkan tentang rekabentuk pangkalan data, untuk bersikap jujur, 908 00:43:22,800 --> 00:43:25,810 sebenarnya membuat keputusan untuk diri sendiri bagaimana anda perlu mewakili data? 909 00:43:25,810 --> 00:43:29,630 Sekiranya anda mewakili nombor telefon sebagai int, seperti satu jumlah yang besar, atau yang lama? 910 00:43:29,630 --> 00:43:31,630 Atau adakah anda benar-benar melakukannya sebagai urutan aksara? 911 00:43:31,630 --> 00:43:33,780 Dan tidak boleh menjadi sangat kesan bukan remeh ini. 912 00:43:33,780 --> 00:43:36,714 >> Malah, salah satu daripada awal, cerita germane menyeronokkan 913 00:43:36,714 --> 00:43:39,880 adalah apabila Mark Zuckerberg membina Facebook, ia pada asalnya ditulis dalam, 914 00:43:39,880 --> 00:43:42,300 dan masih sebahagian besarnya ditulis dalam PHP. 915 00:43:42,300 --> 00:43:45,400 Dan salah satu cabaran terbesar mereka hadapi awal telah mendaki. 916 00:43:45,400 --> 00:43:48,820 Apabila mereka terus menambah sekolah selepas sekolah selepas sekolah, untuk pengetahuan saya, 917 00:43:48,820 --> 00:43:51,639 salah satu penyelesaian asal pada dasarnya untuk copy dan paste 918 00:43:51,639 --> 00:43:53,430 sebahagian daripada pangkalan data dan beberapa kod, 919 00:43:53,430 --> 00:43:55,346 supaya Harvard adalah berjalan pada pelayan sendiri, 920 00:43:55,346 --> 00:43:56,995 dan MIT telah berjalan pada pelayan sendiri. 921 00:43:56,995 --> 00:43:59,120 Dan ini adalah mengapa, bagi sesetengah anda yang mungkin masih ingat, 922 00:43:59,120 --> 00:44:01,510 anda tidak boleh mempunyai rakan-rakan dalam rangkaian lain. 923 00:44:01,510 --> 00:44:05,050 >> Anda mungkin tidak mempunyai rakan-rakan di MIT atau Harvard 10 atau lebih tahun yang lalu, 924 00:44:05,050 --> 00:44:07,467 tetapi anda tidak dapat meliputi rangkaian untuk sebahagiannya sebab itu. 925 00:44:07,467 --> 00:44:10,550 Dan salah satu cabaran terbesar bagi Mark dan untuk syarikat-syarikat seperti Facebook 926 00:44:10,550 --> 00:44:13,460 sebenarnya mengendalikan beratus-ratus dan beribu-ribu dan berjuta-juta 927 00:44:13,460 --> 00:44:14,460 permintaan sesaat. 928 00:44:14,460 --> 00:44:16,501 Jadi perkara yang kita akan mula bercakap kira-kira seminggu ini 929 00:44:16,501 --> 00:44:19,860 benar-benar akan menjadi germane untuk menulis perisian yang baik, dan popular 930 00:44:19,860 --> 00:44:23,040 Alat berjaya yang boleh mengendalikan ramai pengguna. 931 00:44:23,040 --> 00:44:25,460 >> Oleh itu, kita akan bercakap tentang perkara-perkara seperti pengindeksan dan mencari, 932 00:44:25,460 --> 00:44:26,910 tetapi itu adalah ia pada hari ini. 933 00:44:26,910 --> 00:44:28,780 Kami akan melihat anda lebih pada hari Rabu. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUZIK - "Seinfeld" TEMA] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: Anda boleh ke , dan menguranginya. 937 00:44:35,943 --> 00:44:38,859 Dan anda tidak perlu berpegang dengan beberapa jumlah yang telah ditetapkan memori. 938 00:44:38,859 --> 00:44:40,580 Nah, apa yang yang akan dipanggil? 939 00:44:40,580 --> 00:44:42,369 >> SPEAKER 1: Nah, apa yang berlaku? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Apa yang kamu maksudkan? 941 00:44:43,535 --> 00:44:44,451 Dia memberi syarahan. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Dan kita boleh menggunakan fungsi dipanggil malloc untuk memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Mengapa tidak tangannya bergerak? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Sebenarnya that's-- anda tahu, itu normal. 945 00:44:52,450 --> 00:44:57,162 Ia sama seperti dia mempunyai hanya sosej besar yang tergantung di sana. 946 00:44:57,162 --> 00:44:59,040 >> SPEAKER 1: Itu normal? 947 00:44:59,040 --> 00:45:03,096 >> SPEAKER 2: Ya, saya rasa kita hanya menganggap dia sengaja 948 00:45:03,096 --> 00:45:06,840 digantikan deodoran dengan superglue. 949 00:45:06,840 --> 00:45:07,608