1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUSIC PLAYING] 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 awal minggu delapan. 5 00:00:13,350 --> 00:00:17,510 Dan kami sangat bersemangat untuk menyambut kembali, kejutan besar, Ramon CS50 sendiri 6 00:00:17,510 --> 00:00:22,160 Galvan, seorang senior yang telah meningkat menghabiskan beberapa bulan terakhir 7 00:00:22,160 --> 00:00:26,190 sejak Juli di LA, di Hollywood, harfiah bekerja pada sebuah TV baru 8 00:00:26,190 --> 00:00:31,930 acara yang disebut Colony, pencipta yang sebenarnya Harvard tawas sendiri. 9 00:00:31,930 --> 00:00:36,610 Dan jadi kami sangat bersemangat untuk melihat ini Debut di jaringan USA Januari ini. 10 00:00:36,610 --> 00:00:40,370 Sehingga menantikan untuk itu, dan untuk lebih Ramon untuk minggu yang akan datang. 11 00:00:40,370 --> 00:00:42,550 >> Tahu sekarang bahwa akhir sudah dekat. 12 00:00:42,550 --> 00:00:47,400 Dan apa ini berarti bahwa tidak ada semua yang banyak tersisa dari CS50, sedih untuk mengatakan. 13 00:00:47,400 --> 00:00:49,400 Kami memiliki hanya tiga masalah set left-- ada 14 00:00:49,400 --> 00:00:52,510 Masalah mengatur six-- yang di tangan Anda sekarang atau akan segera, 15 00:00:52,510 --> 00:00:56,080 karena nanti ini week-- dimaksudkan untuk menjembatani dunia kita dari baris perintah, di mana 16 00:00:56,080 --> 00:00:59,450 kita telah menghabiskan sebagian besar waktu kita menggunakan C, dan dunia pemrograman web. 17 00:00:59,450 --> 00:01:02,350 Nah, Anda akan melihat banyak ide dipinjam dari pekerjaan baris perintah, 18 00:01:02,350 --> 00:01:04,560 tetapi juga banyak yang baru dan ide-ide menarik 19 00:01:04,560 --> 00:01:07,929 yang juga akan menjadi erat untuk aplikasi mobile dan teknologi, 20 00:01:07,929 --> 00:01:10,470 lebih umum, dengan mana Anda orang semua kenal saat ini 21 00:01:10,470 --> 00:01:12,090 pada laptop dan ponsel dan sejenisnya. 22 00:01:12,090 --> 00:01:15,220 >> Jadi, Anda akan menerapkan tidak halaman web, atau situs web 23 00:01:15,220 --> 00:01:17,620 per se, tetapi server web yang sebenarnya. 24 00:01:17,620 --> 00:01:21,590 Anda akan menulis sisa server web ditulis dalam C, yang tujuan dalam hidup 25 00:01:21,590 --> 00:01:25,410 adalah untuk menerima permintaan HTTP, yang amplop maya kita terus bicara 26 00:01:25,410 --> 00:01:29,780 tentang, dan benar-benar merespon baik dengan beberapa content-- statis seperti titik HTML 27 00:01:29,780 --> 00:01:32,310 file, atau titik JPEG atau nomor lain dari file, 28 00:01:32,310 --> 00:01:37,070 atau bahkan file PHP dimana web Anda server akan menginterpretasikan PHP yang 29 00:01:37,070 --> 00:01:38,332 kode dan meludahkan hasil. 30 00:01:38,332 --> 00:01:40,540 Sekarang, kami telah menyediakan Anda dengan sedikit kerangka 31 00:01:40,540 --> 00:01:43,100 untuk itu-- memang kode distribusi untuk masalah 32 00:01:43,100 --> 00:01:47,496 set enam adalah lebih dari 1.000 baris panjang, banyak yang komentar, menjadi fair-- 33 00:01:47,496 --> 00:01:49,370 tapi ini benar-benar dimaksudkan menjadi kesempatan 34 00:01:49,370 --> 00:01:52,570 untuk mendapatkan tangan Anda kotor menyelam menjadi proyek yang cukup besar 35 00:01:52,570 --> 00:01:55,570 bahwa kita sudah sangat khusus mengukir potongan untuk Anda, 36 00:01:55,570 --> 00:01:59,046 sehingga benar-benar ketika Anda keluar CS50 dan memasuki dunia nyata pemrograman 37 00:01:59,046 --> 00:02:00,920 dan ingin mencoba-coba di sejumlah proyek, 38 00:02:00,920 --> 00:02:03,253 Anda akan memiliki lebih besar kenyamanan men-download beberapa sumber 39 00:02:03,253 --> 00:02:05,020 kode, beberapa sumber terbuka proyek di web, 40 00:02:05,020 --> 00:02:08,174 dan menyelam di dan membuat perubahan yang Anda inginkan. 41 00:02:08,174 --> 00:02:11,340 Masalah mengatur tujuh akan menjadi sekitar pembuatan aplikasi berbasis web Anda sendiri 42 00:02:11,340 --> 00:02:14,140 yang mengambil masukan dinamis dan menghasilkan output yang dinamis dalam bentuk 43 00:02:14,140 --> 00:02:16,920 dari situs etrade.com-seperti. 44 00:02:16,920 --> 00:02:20,800 Dan masalah mengatur delapan akan fokus pada belum bahasa lain dikenal sebagai JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Sementara itu, final proyek di cakrawala. 46 00:02:24,170 --> 00:02:26,800 Yang disebut pra-proposal adalah karena seminggu dari hari ini. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- per spesifikasi, yang pada website-- CS50 ini 48 00:02:29,930 --> 00:02:33,260 adalah kesempatan sangat kasual untuk Anda mengirim email cukup ringkas 49 00:02:33,260 --> 00:02:35,170 untuk mengajar sesama Anda hanya untuk memberi kabar kepadanya 50 00:02:35,170 --> 00:02:38,250 atau dia dari apa yang Anda pikirkan, untuk menggunakan dia sebagai papan terdengar. 51 00:02:38,250 --> 00:02:40,980 Dan memiliki kewarasan check-- apakah Anda berpikir 52 00:02:40,980 --> 00:02:43,210 tentang menggigit terlalu banyak atau mungkin terlalu sedikit, 53 00:02:43,210 --> 00:02:46,480 atau mungkin Anda tidak tahu apapun dan ingin terlibat dalam percakapan. 54 00:02:46,480 --> 00:02:48,480 >> Setelah itu adalah proposal dan laporan status, 55 00:02:48,480 --> 00:02:51,860 yang disebut CS50 hackathon di sini di Cambridge untuk Harvard dan Yale siswa 56 00:02:51,860 --> 00:02:52,362 sama. 57 00:02:52,362 --> 00:02:54,320 Proyek akhir ini implementasi kemudian karena. 58 00:02:54,320 --> 00:02:59,290 Dan kemudian adil CS50 sini, di Cambridge, serta lain di New Haven. 59 00:02:59,290 --> 00:03:02,500 Jadi proposal, lihatlah situs bagi mereka khusus. 60 00:03:02,500 --> 00:03:06,530 >> Tapi yang lebih menggairahkan, juga, adalah kesempatan untuk mendapatkan tangan Anda kotor, 61 00:03:06,530 --> 00:03:09,350 dan pikiran Anda terbuka untuk keseluruhan sekelompok topik dan alat-alat 62 00:03:09,350 --> 00:03:12,920 dan teknik yang tambahan untuk kursus ini inti silabus, 63 00:03:12,920 --> 00:03:14,810 tapi tetap berhubungan. 64 00:03:14,810 --> 00:03:18,400 Dan juga batu loncatan yang indah untuk melakukan proyek-proyek akhir yang benar-benar keren 65 00:03:18,400 --> 00:03:22,020 melampaui materi yang kita sudah dibahas secara resmi di masalah set atau kuliah. 66 00:03:22,020 --> 00:03:24,446 Jadi pergi ke situs web CS50 untuk seluruh daftar seminar. 67 00:03:24,446 --> 00:03:26,070 Jika Anda tidak mendaftar lagi, itu bagus. 68 00:03:26,070 --> 00:03:29,860 Silakan mendaftar masih dan kami akan menindaklanjuti dengan link live streaming, 69 00:03:29,860 --> 00:03:31,844 hari dan waktu di website. 70 00:03:31,844 --> 00:03:33,760 Dan semuanya akan dicatat dan dimasukkan online 71 00:03:33,760 --> 00:03:35,800 jika Anda tidak dapat membuat hari tertentu dan waktu. 72 00:03:35,800 --> 00:03:39,380 >> Seperti apa yang ada di depan thereafter-- baik, tentu saja, ada hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Ini foto, ingat, dari minggu nol diambil sekitar 04:00 satu malam di tahun terakhir. 74 00:03:43,560 --> 00:03:46,900 The CS50 adil, yang lagi-lagi akan berlangsung di kedua kota. 75 00:03:46,900 --> 00:03:49,760 Dan kemudian, hanya untuk menanam benih, meskipun kita masih 76 00:03:49,760 --> 00:03:54,080 memiliki satu bulan ditambah kiri semester, jika Anda ingin bergabung ajaran CS50 sendiri 77 00:03:54,080 --> 00:03:56,770 staf, dan Anda ingin memulai berpikir tentang menjadi seorang CA, 78 00:03:56,770 --> 00:03:59,550 atau mengajar sesama, tahu bahwa kita akan mulai berbicara lebih lanjut tentang itu 79 00:03:59,550 --> 00:04:00,630 kemudian semester ini. 80 00:04:00,630 --> 00:04:03,470 Tapi digambarkan di sini adalah sebagian besar tim tahun ini. 81 00:04:03,470 --> 00:04:06,950 >> Dan, PHP-- dan saya sangat sedih pekan lalu bahwa [? Allyse?] Silakan 82 00:04:06,950 --> 00:04:09,370 pergi ke upaya mendapatkan kita ini alat peraga indah 83 00:04:09,370 --> 00:04:11,720 bahwa saya tidak berakhir menggunakan, sehingga benar-benar hanya tampak agak bodoh 84 00:04:11,720 --> 00:04:15,160 bahwa kita memiliki sekop duduk di sini semua hari Rabu lalu, dan sendok kecil. 85 00:04:15,160 --> 00:04:17,709 Tapi ini adalah metafora saya cara mencoba untuk melukis 86 00:04:17,709 --> 00:04:21,600 gambar mengapa kita transisi dari C ke bahasa seperti PHP. 87 00:04:21,600 --> 00:04:25,480 Dan hal yang sama bisa dikatakan dari setiap jumlah languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 atau tandan others-- tetapi sedangkan di C, misalnya, menulis sebuah program dalam C 89 00:04:31,270 --> 00:04:34,050 mungkin biasanya seperti mengambil sendok 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 memungkinkan Anda untuk mengambil banyak gigitan besar keluar dari masalah, 92 00:04:39,770 --> 00:04:42,842 menulis kode jauh lebih sedikit menggunakan alat yang jauh lebih kecil, 93 00:04:42,842 --> 00:04:45,050 karena ada begitu banyak lagi fungsi potongan di. 94 00:04:45,050 --> 00:04:47,633 >> Sekarang, jika kita benar-benar dramatis, kita akan memiliki sesuatu untuk sekop 95 00:04:47,633 --> 00:04:48,760 di sini, tapi biarlah. 96 00:04:48,760 --> 00:04:51,370 Sementara itu, yang lain metafora kami datang dengan 97 00:04:51,370 --> 00:04:53,770 adalah, tentu saja, Anda bisa menggunakan sesuatu seperti kunci inggris 98 00:04:53,770 --> 00:04:56,610 palu dalam sesuatu seperti paku. 99 00:04:56,610 --> 00:04:58,980 Tapi tentu saja, kanan alat untuk digunakan akan 100 00:04:58,980 --> 00:05:01,360 menjadi tidak begitu banyak bahasa yang disebut C-- 101 00:05:01,360 --> 00:05:03,590 dan sekarang saya hanya kesal [? Sanders,?] Mungkin, 102 00:05:03,590 --> 00:05:07,890 kami akan memperbaikinya sehingga later-- alat yang tepat untuk digunakan sering 103 00:05:07,890 --> 00:05:09,640 tidak akan menjadi ini alat tingkat terendah. 104 00:05:09,640 --> 00:05:13,720 Dan memang, C bukan bahasa yang sebagian besar dari Anda pernah akan digunakan, 105 00:05:13,720 --> 00:05:15,590 atau harus selalu menggunakan lagi. 106 00:05:15,590 --> 00:05:18,350 >> Dan pada kenyataannya, sedikit secret-- satu-satunya waktu 107 00:05:18,350 --> 00:05:23,160 Saya menggunakan C sendiri cukup banyak antara September dan Desember setiap musim gugur 108 00:05:23,160 --> 00:05:23,870 semester. 109 00:05:23,870 --> 00:05:25,790 Dan itu karena kita menggunakannya sebagai kesempatan 110 00:05:25,790 --> 00:05:27,852 untuk mengajarkan dasar-dasar pemrograman, 111 00:05:27,852 --> 00:05:29,810 dan dengan itu komputer fundamental ilmu, data 112 00:05:29,810 --> 00:05:32,435 struktur, algoritma dan like-- tapi sangat cepat akan Anda 113 00:05:32,435 --> 00:05:35,010 melihat sekarang bahwa sintaks dan ide-ide yang mendasari C 114 00:05:35,010 --> 00:05:37,530 begitu mengagumkan dipindahtangankan ke yang lebih modern 115 00:05:37,530 --> 00:05:41,130 bahasa tingkat tinggi, seperti PHP dan Python dan Perl dan Jawa 116 00:05:41,130 --> 00:05:46,750 dan Objective-C-- sebenarnya, tidak begitu banyak Tujuan-C-- tapi Swift, rute baru 117 00:05:46,750 --> 00:05:50,010 bahasa bahwa banyak dari Anda akan kemudian mencoba-coba dengan Anda proyek akhir. 118 00:05:50,010 --> 00:05:55,070 >> Jadi tanpa basa-basi lagi, mari kita sebenarnya menggunakan PHP untuk memecahkan beberapa masalah. 119 00:05:55,070 --> 00:06:00,230 Ingat bahwa sejak awal, lalu Minggu, kami hanya menggunakan CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 kita menulis sebuah program kecil mungil yang hanya berkata, "Halo dunia." 121 00:06:02,990 --> 00:06:05,680 Dan kemudian aku menyimpannya di file disebut hello.php. 122 00:06:05,680 --> 00:06:07,280 Dan kemudian aku berlari perintah ini. 123 00:06:07,280 --> 00:06:08,080 >> Dan mengapa? 124 00:06:08,080 --> 00:06:09,900 Dalam bahasa Inggris, apa yang terjadi di sini? 125 00:06:09,900 --> 00:06:12,760 Apa yang saya lakukan ketika Aku berlari perintah ini? 126 00:06:12,760 --> 00:06:13,405 >> Ya? 127 00:06:13,405 --> 00:06:16,572 >> AUDIENCE: Ada beberapa fungsi PHP yang berbunyi apa in-- memahami bahwa. 128 00:06:16,572 --> 00:06:19,696 DAVID Malan: Baik, ada beberapa fungsi PHP-- dan biarkan aku menjadi lebih spesifik, 129 00:06:19,696 --> 00:06:21,810 ada sebuah program yang disebut PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Penerjemah, yang memahami isi hello.php, 131 00:06:25,872 --> 00:06:27,830 dan menafsirkannya atas ke bawah, kiri ke kanan, 132 00:06:27,830 --> 00:06:29,590 dan melakukan apa yang mereka katakan perintah. 133 00:06:29,590 --> 00:06:33,320 Perintah dalam hello.php, tentu saja, hanya sumber fungsi code-- 134 00:06:33,320 --> 00:06:35,750 dan variabel dan loop dan sejenisnya, yang kita sendiri 135 00:06:35,750 --> 00:06:37,460 telah mulai menulis di PHP. 136 00:06:37,460 --> 00:06:40,240 >> Tapi tidak seperti C, yang merupakan bahasa yang dikompilasi, 137 00:06:40,240 --> 00:06:42,810 PHP Anda hanya menulis, dan menjalankannya. 138 00:06:42,810 --> 00:06:46,420 Anda melewatkan langkah perantara dari mengubahnya menjadi nol dan satu, 139 00:06:46,420 --> 00:06:47,790 dan kemudian menjalankannya. 140 00:06:47,790 --> 00:06:50,510 Dan jadi apa terbalik ini? 141 00:06:50,510 --> 00:06:52,690 Mengapa kita melewatkan langkah? 142 00:06:52,690 --> 00:06:55,238 Mengapa bahasa yang lebih modern cenderung mengabaikan langkah ini? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Apa manfaatnya? 145 00:07:01,220 --> 00:07:02,080 >> Atau hanya intuitif? 146 00:07:02,080 --> 00:07:04,200 Bahkan jika kita sudah tidak ditulis banyak PHP sebelumnya, 147 00:07:04,200 --> 00:07:07,210 apa yang bermanfaat tentang tidak kompilasi kode Anda menurut Anda? 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 Menggaruk-garuk kepala Anda? 151 00:07:11,350 --> 00:07:12,614 Ya. 152 00:07:12,614 --> 00:07:13,600 >> AUDIENCE: Lebih dinamis. 153 00:07:13,600 --> 00:07:14,683 >> DAVID Malan: Lebih dinamis? 154 00:07:14,683 --> 00:07:16,032 Apa maksudmu? 155 00:07:16,032 --> 00:07:17,000 >> AUDIENCE: [tidak terdengar] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID Malan: OK, baik, sehingga tergantung pada input, 158 00:07:22,390 --> 00:07:23,470 Anda tidak perlu melakukan kompilasi setiap kali. 159 00:07:23,470 --> 00:07:24,990 Dan itu benar-benar sebagai sederhana seperti itu-- apa 160 00:07:24,990 --> 00:07:26,990 adalah titik terus untuk mengkompilasi kode Anda? 161 00:07:26,990 --> 00:07:29,480 Ini hanya langkah yang making-- ini membutuhkan, 162 00:07:29,480 --> 00:07:31,900 untuk beberapa masa lalu minggu, dua kali lebih banyak langkah 163 00:07:31,900 --> 00:07:33,820 hanya sebagai menjalankan program Anda. 164 00:07:33,820 --> 00:07:36,940 Sudah berguna dalam melihat bahwa Anda melihat beberapa pesan kesalahan dan sebagainya, 165 00:07:36,940 --> 00:07:38,720 tapi masih hanya sebuah langkah menjengkelkan. 166 00:07:38,720 --> 00:07:41,810 >> Dan jadi programmer menyadari dari waktu ke waktu, kenapa tidak kita 167 00:07:41,810 --> 00:07:45,327 mulai menulis bahasa yang tidak membutuhkan langkah yang cukup mekanik, 168 00:07:45,327 --> 00:07:47,160 sehingga hanya bisa menulis kode Anda dan menjalankannya. 169 00:07:47,160 --> 00:07:48,920 Tapi apa adalah harga bahwa kita melihat kita dibayar 170 00:07:48,920 --> 00:07:50,910 pekan lalu, dengan satu contoh tertentu? 171 00:07:50,910 --> 00:07:51,650 Iya nih? 172 00:07:51,650 --> 00:07:52,370 >> Kecepatan. 173 00:07:52,370 --> 00:07:54,690 Jadi [? apa?] interpreter sedikit lebih lambat, 174 00:07:54,690 --> 00:07:57,330 dalam nol dan satu yang bagus dan cepat untuk komputer 175 00:07:57,330 --> 00:08:00,070 untuk memahami, karena Intel CPU, atau apapun itu, 176 00:08:00,070 --> 00:08:03,070 hanya mengerti apa yang terjadi pada dengan pola-pola bit. 177 00:08:03,070 --> 00:08:05,370 Sedangkan juru adalah sebuah program yang benar-benar 178 00:08:05,370 --> 00:08:07,980 harus membaca sumber Ascii kode yang telah Anda tulis, 179 00:08:07,980 --> 00:08:12,700 dan mengubahnya, sehingga untuk berbicara, atau mencari tahu bagaimana mengkonversi akhirnya 180 00:08:12,700 --> 00:08:13,525 untuk nol dan satu. 181 00:08:13,525 --> 00:08:15,650 Jadi itu hanya membutuhkan sedikit sedikit hit kinerja. 182 00:08:15,650 --> 00:08:16,858 Jadi sedikit trade-off. 183 00:08:16,858 --> 00:08:21,570 Sekarang jika kita melakukan ini di sini, biarkan aku pergi ke depan dan melakukan contoh sebagai berikut. 184 00:08:21,570 --> 00:08:26,610 Jika aku pergi di sini, file baru, aku akan untuk menyimpan ini lagi adalah hello.php. 185 00:08:26,610 --> 00:08:31,450 Dan sekarang aku akan pergi ke depan dan berkata, "cetak halo dunia" - 186 00:08:31,450 --> 00:08:35,130 dan ingat bahwa aku bisa menggunakan print, saya tidak harus menggunakan print-F. Dan sekarang di sini, 187 00:08:35,130 --> 00:08:42,039 jika saya melakukan PHP dari hello.php, huh-- saya tidak tampaknya telah ditafsirkan itu. 188 00:08:42,039 --> 00:08:43,412 Apa kesalahan yang telah aku perbuat? 189 00:08:43,412 --> 00:08:44,710 >> AUDIENCE: Gelang miring. 190 00:08:44,710 --> 00:08:47,015 >> DAVID Malan: Ya, Anda perlu bahwa atas sudut braket up. 191 00:08:47,015 --> 00:08:49,390 Jadi itu semacam menjengkelkan, tapi Anda bisa digunakan untuk itu dengan cepat. 192 00:08:49,390 --> 00:08:53,500 Jika saya harus menulis kode PHP, saya umumnya perlu memberitahu program, 193 00:08:53,500 --> 00:08:56,950 atau memberitahu penerjemah, hey PHP, di sini datang beberapa kode PHP. 194 00:08:56,950 --> 00:09:00,440 Dan kemudian untuk mengukur baik, saya akan menutup ini tidak dengan ini, melainkan 195 00:09:00,440 --> 00:09:03,740 hanya dengan tanda tanya angle braket, sehingga sekarang di sini, 196 00:09:03,740 --> 00:09:06,840 jika saya menjalankan ini lagi, sekarang Saya mendapatkan hasil yang diinginkan. 197 00:09:06,840 --> 00:09:09,820 >> Sekarang mari kita melakukan optimasi sedikit, hanya agar Anda pernah melihat itu sebelumnya. 198 00:09:09,820 --> 00:09:14,040 Ini adalah jenis mengganggu bahwa saya harus menjalankan PHP ruang hello.php, 199 00:09:14,040 --> 00:09:16,060 karena di masa lalu saya hanya bisa menulis dot slash 200 00:09:16,060 --> 00:09:17,560 nama program, yang merupakan jenis yang baik. 201 00:09:17,560 --> 00:09:19,420 Ini semacam pengalaman pengguna yang lebih baik. 202 00:09:19,420 --> 00:09:24,160 >> Jadi ternyata Anda dapat melakukan ini PHP dengan following-- saya 203 00:09:24,160 --> 00:09:28,780 dapat menggunakan ini cukup samar mantra di atas sini, 204 00:09:28,780 --> 00:09:31,740 yang umumnya disebut peristiwa yang, dimana ini adalah simbol yang tajam, 205 00:09:31,740 --> 00:09:34,270 sehingga untuk berbicara, ini bang atau tanda seru. 206 00:09:34,270 --> 00:09:38,490 Dan sekarang ini adalah jalan untuk program pada sistem Linux khas yang 207 00:09:38,490 --> 00:09:41,500 disebut lingkungan, atau env. 208 00:09:41,500 --> 00:09:43,920 Dan ini line-- cerita panjang short-- satu baris saja 209 00:09:43,920 --> 00:09:48,710 mengatakan, hey komputer, menemukan PHP interpreter bagi saya di lingkungan, 210 00:09:48,710 --> 00:09:50,610 menemukannya dalam memori Anda, sehingga untuk berbicara. 211 00:09:50,610 --> 00:09:54,130 >> Dan apa yang bagus sekarang, bahwa jika aku pergi ke sini, 212 00:09:54,130 --> 00:09:57,750 Aku bisa melakukan dot slash halo dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Izin ditolak. 214 00:09:59,000 --> 00:10:02,350 Nah, Anda akan melihat lebih dari ini dengan masalah mengatur tujuh, jika Anda 215 00:10:02,350 --> 00:10:04,060 belum, dengan izin. 216 00:10:04,060 --> 00:10:06,510 Ternyata yang saya butuhkan untuk mengeksekusi perintah ini 217 00:10:06,510 --> 00:10:10,779 disebut [? chamod?] untuk perubahan mode-- plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Saya perlu [tidak terdengar] ini satu tambahan Langkah yang memberitahu komputer saya, 219 00:10:13,820 --> 00:10:16,400 membuat hello.php executable. 220 00:10:16,400 --> 00:10:21,310 Dan sekarang menonton apa happens-- dot slash hello.php, itu hanya berjalan. 221 00:10:21,310 --> 00:10:23,310 Saya tidak perlu menentukan penafsir lagi. 222 00:10:23,310 --> 00:10:26,680 Dan aku bisa membuatnya bahkan lebih cantik, masih, jika saya mengubah nama hal ini. 223 00:10:26,680 --> 00:10:30,570 Jika saya pindah hello.php hanya Hello-- sehingga melihat di kiri atas, 224 00:10:30,570 --> 00:10:32,860 Nama program ini adalah memang sekarang hanya Hello. 225 00:10:32,860 --> 00:10:37,300 Sekarang aku dapat membuatnya terlihat seperti sebuah program C, meskipun itu ditulis dalam PHP-- 226 00:10:37,300 --> 00:10:39,210 atau terus terang sejumlah dari bahasa lain. 227 00:10:39,210 --> 00:10:41,480 >> Jadi peningkatan marjinal, tidak ada perbedaan fungsional. 228 00:10:41,480 --> 00:10:44,460 Tapi itu hanya rasa ingin tahu sedikit sekarang, sehingga Anda dapat menulis program 229 00:10:44,460 --> 00:10:48,989 dalam bahasa apapun, dan pengguna tidak harus tahu atau peduli apa yang berada. 230 00:10:48,989 --> 00:10:51,030 Nah, mari kita lihat lebih Contoh menarik sekarang 231 00:10:51,030 --> 00:10:52,850 bahwa saya melecut di muka. 232 00:10:52,850 --> 00:10:54,955 Dan ini disebut quote.php. 233 00:10:54,955 --> 00:10:56,740 Dan itu tersedia secara online. 234 00:10:56,740 --> 00:11:00,299 Dan melihat bahwa itu cukup short-- tapi itu program baris perintah yang 235 00:11:00,299 --> 00:11:02,840 akan mencari harga saham bagi saya, yang benar-benar akan 236 00:11:02,840 --> 00:11:04,230 menjadi erat dengan masalah mengatur 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 bagian paling atas aku punya braket terbuka tanda tanya PHP. 239 00:11:08,640 --> 00:11:13,372 Kemudian saya punya baris ini, dimana saya membutuhkan file bernama functions.php-- 240 00:11:13,372 --> 00:11:15,080 kita akan melihat lebih lanjut tentang ini dalam sedikit, 241 00:11:15,080 --> 00:11:17,340 tapi ini adalah seperti C versi tajam termasuk, 242 00:11:17,340 --> 00:11:19,090 Kemana kau ingin pergi termasuk file lain. 243 00:11:19,090 --> 00:11:23,720 PHP menyebutnya membutuhkan, meskipun juga memiliki meliputi fungsi. 244 00:11:23,720 --> 00:11:26,861 Dan ternyata function.php adalah hanya sesuatu yang saya tulis sebelum kelas. 245 00:11:26,861 --> 00:11:29,860 Aku meletakkannya di direktori yang sama, karena Saya ingin faktor luar beberapa kode 246 00:11:29,860 --> 00:11:31,800 bahwa kita mungkin ingin menggunakan tempat lain. 247 00:11:31,800 --> 00:11:34,560 >> Sementara itu, Anda mungkin bisa menyimpulkan apa yang terjadi di sini. 248 00:11:34,560 --> 00:11:39,200 Ini sedikit berbeda dari C-- tapi apa yang saya maksud dengan memastikan penggunaan yang tepat? 249 00:11:39,200 --> 00:11:41,180 Menerjemahkan ini lebih teknis. 250 00:11:41,180 --> 00:11:45,950 Dalam keadaan apa aku berhenti program, atau keluar? 251 00:11:45,950 --> 00:11:47,074 Ya? 252 00:11:47,074 --> 00:11:47,990 >> AUDIENCE: Bila Anda tidak memiliki dua argumen baris perintah. 253 00:11:47,990 --> 00:11:49,480 >> DAVID Malan: Ketika saya tidak memiliki perintah argumen baris. 254 00:11:49,480 --> 00:11:52,396 Dan ingat bahwa salah satu dari mereka argumen adalah nama program itu sendiri. 255 00:11:52,396 --> 00:11:55,340 Dan yang kedua akan menjadi kata lain saya ketik setelah prompt. 256 00:11:55,340 --> 00:11:57,460 Jadi seperti C, ini adalah cara saya memeriksa, 257 00:11:57,460 --> 00:12:00,022 apakah pengguna bekerja sama dan menjalankan program seperti yang saya dimaksudkan? 258 00:12:00,022 --> 00:12:01,730 Sekarang, ada sesuatu beda tipis 259 00:12:01,730 --> 00:12:04,020 dengan C-- pertama-tama kita memiliki tanda dolar ini, 260 00:12:04,020 --> 00:12:07,710 dan apa yang satu dolar menandatangani menunjukkan di PHP? 261 00:12:07,710 --> 00:12:08,440 Hanya variabel. 262 00:12:08,440 --> 00:12:11,731 Itu all-- hanya variabel diikuti oleh apa pun yang Anda ingin benar-benar menyebutnya. 263 00:12:11,731 --> 00:12:14,000 Melihat ada sesuatu yang hilang dari program PHP saya, 264 00:12:14,000 --> 00:12:18,210 seperti itu hilang lalu Minggu, dibandingkan C, yang adalah apa? 265 00:12:18,210 --> 00:12:21,620 >> Sebuah 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 mulai menulis kode Anda tanpa harus 269 00:12:29,680 --> 00:12:32,790 khawatir tentang cukup sewenang-wenang konvensi penamaan beberapa standar 270 00:12:32,790 --> 00:12:33,880 Fungsi utama. 271 00:12:33,880 --> 00:12:36,720 Jadi arg C hanya benar-benar variabel global 272 00:12:36,720 --> 00:12:39,049 bahwa penafsir membuat tersedia untuk saya. 273 00:12:39,049 --> 00:12:40,090 Sekarang, ini menarik. 274 00:12:40,090 --> 00:12:41,140 Jadi mencari barang-barang. 275 00:12:41,140 --> 00:12:43,370 Saham dolar tanda adalah pada kiri, itu variabel saya. 276 00:12:43,370 --> 00:12:45,120 Di sisi kanan, ada tampaknya 277 00:12:45,120 --> 00:12:50,270 fungsi di PHP yang disebut lookup yang Aku melewati baris perintah terakhir saya 278 00:12:50,270 --> 00:12:51,902 Argumen to-- apapun kata tersebut. 279 00:12:51,902 --> 00:12:53,610 Dan kita akan melihat bagaimana ini bekerja dalam sekejap. 280 00:12:53,610 --> 00:12:55,380 >> Dan kemudian terakhir saya melaporkan harga. 281 00:12:55,380 --> 00:12:58,650 Saya mencetak satu saham ini dan itu. 282 00:12:58,650 --> 00:13:02,082 Dan ingat, ini adalah cara PHP-- cara di PHP-- 283 00:13:02,082 --> 00:13:04,290 di mana Anda tidak perlu melakukan tanda dolar S lagi. 284 00:13:04,290 --> 00:13:06,782 Anda hanya dapat menggunakan kurung kurawal dan pasang di beberapa variabel. 285 00:13:06,782 --> 00:13:09,240 Anda tidak perlu khawatir tentang menggunakan printf dengan cara yang sama. 286 00:13:09,240 --> 00:13:13,530 >> Dan sebagai samping, ketika Anda meletakkan variabel dalam tanda kutip ganda seperti ini, 287 00:13:13,530 --> 00:13:17,370 Anda menggunakan teknik mewah disebut interpolasi variabel. 288 00:13:17,370 --> 00:13:20,380 Ini hanya berarti pasang variabel dalam sini. 289 00:13:20,380 --> 00:13:23,760 Dan sebagai samping, beberapa dari Anda yang datang dari latar belakang pemrograman lain, 290 00:13:23,760 --> 00:13:26,960 Anda mungkin tidak menggunakan tanda kutip tunggal sekitar string untuk melakukan hal ini. 291 00:13:26,960 --> 00:13:30,290 Anda harus menggunakan tanda kutip ganda untuk interpolasi variabel untuk bekerja. 292 00:13:30,290 --> 00:13:32,740 Jika tidak Anda akan benar-benar melihat orang-kurung kurawal. 293 00:13:32,740 --> 00:13:34,500 >> Jadi terakhir, mari kita pergi ke depan dan menjalankan ini. 294 00:13:34,500 --> 00:13:36,690 Biarkan saya membuat terminal saya sedikit lebih besar. 295 00:13:36,690 --> 00:13:41,940 Biarkan aku pergi ke depan dan menjalankan dalam direktori kutipan saya. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? quote?] PHP kutipan dot PHP, 297 00:13:46,950 --> 00:13:50,290 dan aku akan mencari sesuatu seperti GOOG, yang merupakan simbol ticker nya, 298 00:13:50,290 --> 00:13:55,510 dan satu saham dari nama baru, Alphabet Inc, biaya $ 717, untuk hari ini. 299 00:13:55,510 --> 00:13:58,680 Baiklah, jika kita ingin menjalankan ini lagi, siapa pun 300 00:13:58,680 --> 00:14:02,600 memiliki ticker saham lain mereka ingin mencari? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft saya pikir satu ini, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Saya pikir Yahoo adalah mungkin itu. 303 00:14:09,720 --> 00:14:12,130 Dan Facebook adalah bahwa. 304 00:14:12,130 --> 00:14:13,740 >> Jadi apa program ini lakukan? 305 00:14:13,740 --> 00:14:16,306 Sihir tampaknya tertanam dalam fungsi lookup. 306 00:14:16,306 --> 00:14:17,430 Jadi mari kita lihat. 307 00:14:17,430 --> 00:14:21,815 >> Ternyata tidak datang dengan PHP, itu di functions.php. 308 00:14:21,815 --> 00:14:23,690 Dan kami tidak akan pergi melalui ini dengan sangat rinci, 309 00:14:23,690 --> 00:14:28,040 tapi melihat kata operasi di sini adalah yang on line enam functions.php-- 310 00:14:28,040 --> 00:14:29,440 Aku benar-benar mengatakan fungsi. 311 00:14:29,440 --> 00:14:31,050 Aku menentukan nama fungsi saya. 312 00:14:31,050 --> 00:14:34,330 Saya kemudian menentukan apapun argumen, atau parameter, 313 00:14:34,330 --> 00:14:36,480 Saya ingin fungsi yang ke take-- ada jenis. 314 00:14:36,480 --> 00:14:37,580 Dan kemudian saya menerapkannya. 315 00:14:37,580 --> 00:14:39,240 >> Dan aku akan melambaikan tangan saya di pelaksanaannya, 316 00:14:39,240 --> 00:14:42,115 karena tepat cukup canggih sekarang, tapi kita lihat lagi sebenarnya 317 00:14:42,115 --> 00:14:44,700 dalam seminggu di masalah ditetapkan tujuh. 318 00:14:44,700 --> 00:14:47,490 Tapi aku bisa membersihkan ini, juga. 319 00:14:47,490 --> 00:14:49,590 Saya juga termasuk dalam kode versi saat ini 320 00:14:49,590 --> 00:14:52,340 kutipan, yang tidak memiliki berkas dot PHP. 321 00:14:52,340 --> 00:14:57,270 Karena apa yang mungkin di atas program yang disebut hanya mengutip? 322 00:14:57,270 --> 00:15:00,140 Yang disebut-shebang-- yang mantra cukup samar 323 00:15:00,140 --> 00:15:04,590 yang mengatakan menemukan PHP dan kemudian menjalankannya pada kode saya di sini. 324 00:15:04,590 --> 00:15:07,360 >> Baiklah, sehingga membawa kita ke mana kita tinggalkan 325 00:15:07,360 --> 00:15:09,560 time-- terakhir meskipun dengan beberapa contoh yang lebih maju. 326 00:15:09,560 --> 00:15:13,980 Pertanyaan sejauh sekitar PHP atau apa yang kita lakukan? 327 00:15:13,980 --> 00:15:15,570 No---baik saja. 328 00:15:15,570 --> 00:15:16,180 Ya? 329 00:15:16,180 --> 00:15:19,610 >> AUDIENCE: Di dalam File HTML, lakukan you-- 330 00:15:19,610 --> 00:15:22,226 [? Apakah kamu ?] [? sebut saja?] a [tidak terdengar] PHP berkas? 331 00:15:22,226 --> 00:15:23,350 DAVID Malan: Pertanyaan yang bagus. 332 00:15:23,350 --> 00:15:26,070 Dalam konteks web, yang kami harfiah sekitar untuk transisi ke, 333 00:15:26,070 --> 00:15:28,028 Anda tidak menggunakan apa yang disebut shebang di atas, 334 00:15:28,028 --> 00:15:31,980 karena server-- web sering program yang disebut Apache atau Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, atau sejumlah perangkat lunak web server lain, 336 00:15:37,470 --> 00:15:40,636 tahu bahwa ketika melihat file dot PHP, bahwa itu 337 00:15:40,636 --> 00:15:42,010 harus menjalankan interpreter di atasnya. 338 00:15:42,010 --> 00:15:43,468 Itu tidak melihat bahwa baris pertama. 339 00:15:43,468 --> 00:15:45,580 Jadi trik baris pertama ini hanya ketika Anda 340 00:15:45,580 --> 00:15:48,330 menulis baris perintah programs-- yang kita tidak akan melakukan yang super sering, 341 00:15:48,330 --> 00:15:52,510 tapi itu cara kita menjembatani contoh C untuk sekarang PHP kami. 342 00:15:52,510 --> 00:16:00,680 >> Jadi mari kita memang menjembatani dunia ini dari dunia baris perintah ke web 343 00:16:00,680 --> 00:16:02,230 dengan melakukan hal berikut. 344 00:16:02,230 --> 00:16:05,090 Biarkan aku pergi ke depan dan menarik di sini untuk sesaat. 345 00:16:05,090 --> 00:16:09,940 Jadi jika kita memiliki sebuah server web, atau lebih tepatnya jika kita memiliki laptop saya di sini, 346 00:16:09,940 --> 00:16:11,280 yang saya akan menggambar seperti ini. 347 00:16:11,280 --> 00:16:14,250 Dan di sini kita memiliki internet dalam beberapa bentuk. 348 00:16:14,250 --> 00:16:18,210 Dan kemudian di sini, kita memiliki server di building-- sebuah 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 server dengan beberapa lampu mungkin. 351 00:16:23,120 --> 00:16:27,530 Apa yang sebenarnya terjadi antara dua koneksi ini? 352 00:16:27,530 --> 00:16:29,240 >> Jadi di gedung ini adalah server web. 353 00:16:29,240 --> 00:16:31,420 Itu hanya sebuah komputer yang menjalankan beberapa operasi 354 00:16:31,420 --> 00:16:34,561 system-- mungkin perangkat lunak gratis yang disebut Apache, yang CS50 IDE sedang berjalan. 355 00:16:34,561 --> 00:16:36,310 Jadi Anda benar-benar dapat memikirkan 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 Di situlah semua yang Anda miliki account, di mana kalian semua 358 00:16:40,870 --> 00:16:43,130 memiliki server web Anda sendiri berjalan, kalian semua 359 00:16:43,130 --> 00:16:45,730 memiliki URL unik Anda sendiri, seperti yang kita mulai membahas, 360 00:16:45,730 --> 00:16:47,280 dan Anda akan melihat lebih banyak di P. mengatur enam. 361 00:16:47,280 --> 00:16:49,450 >> Berikut laptop saya di suatu tempat lain di internet. 362 00:16:49,450 --> 00:16:54,550 Dan jadi ketika saya mengunjungi URL yang dimiliki bagi saya, bahwa lalu lintas internet akan 363 00:16:54,550 --> 00:16:58,360 ke server, server menerima HTTP request-- 364 00:16:58,360 --> 00:17:02,900 seperti mendapatkan index.html dan itu membalas halaman web. 365 00:17:02,900 --> 00:17:04,280 Jadi itulah paradigma umum. 366 00:17:04,280 --> 00:17:07,089 Sedangkan semuanya hingga saat ini sekarang, semuanya 367 00:17:07,089 --> 00:17:09,660 yang terjadi hanya dalam batas-batas bangunan ini. 368 00:17:09,660 --> 00:17:12,910 Saya menggunakan laptop saya, tapi Saya terhubung ke CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 sehingga semua program-program saya berjalan berada di dalam server itu, sendiri. 370 00:17:17,369 --> 00:17:22,660 >> Tapi sekarang, mari kita mulai menggunakan kembali PHP untuk menulis beberapa program yang sebenarnya yang 371 00:17:22,660 --> 00:17:24,230 dilayani oleh server web. 372 00:17:24,230 --> 00:17:30,320 Dan untuk melakukan hal ini, aku akan pergi ke sejumlah besar contoh 373 00:17:30,320 --> 00:17:33,710 yang memperkenalkan ide ini di sini. 374 00:17:33,710 --> 00:17:38,500 Jadi ini adalah jenis cara mewah menggambarkan paradigma pemrograman. 375 00:17:38,500 --> 00:17:41,540 >> Dan pada kenyataannya, saat Anda keluar CS50 atau bekerja pada proyek-proyek akhir, 376 00:17:41,540 --> 00:17:43,520 atau mengambil beberapa ikuti pada kelas, Anda akan mulai 377 00:17:43,520 --> 00:17:45,740 untuk melihat bahwa dunia-- yang terutama setelah dewasa 378 00:17:45,740 --> 00:17:48,300 dengan bahasa seperti C yang level-- rendah super 379 00:17:48,300 --> 00:17:51,290 menyadari bahwa ada yang lebih baik cara penulisan software. 380 00:17:51,290 --> 00:17:53,290 Ada tertentu pola Anda dapat mengikuti, 381 00:17:53,290 --> 00:17:57,640 cara-cara tertentu untuk mengatur file Anda dan cara penamaan fungsi Anda, 382 00:17:57,640 --> 00:18:00,300 sehingga cerita panjang pendek, dunia telah datang 383 00:18:00,300 --> 00:18:04,340 dengan sejumlah besar akronim dan nama cara pemrograman. 384 00:18:04,340 --> 00:18:06,260 Ini hanya teknik yang mungkin Anda gunakan. 385 00:18:06,260 --> 00:18:09,660 >> Dan salah satunya disebut MVC, untuk Model View Controller. 386 00:18:09,660 --> 00:18:12,270 Dan ini hanya, untuk sekarang, yang terlalu rumit 387 00:18:12,270 --> 00:18:18,960 cara untuk mengatakan bagaimana Anda harus lay out website berbasis PHP, dalam kasus kami. 388 00:18:18,960 --> 00:18:22,140 Bagaimana Anda mengatur file Anda, bagaimana Anda mengatur logika Anda, 389 00:18:22,140 --> 00:18:26,220 dengan cara yang membuatnya lebih mudah untuk menulis website lebih rumit? 390 00:18:26,220 --> 00:18:28,550 Dan memang, kita akan cepat sampai di sana dengan p-set tujuh. 391 00:18:28,550 --> 00:18:32,020 >> Jadi dalam dunia MVC, Anda akan untuk melihat bahwa kode kita dapat umumnya 392 00:18:32,020 --> 00:18:38,290 dicirikan sebagai baik kode model, atau kode controller, atau melihat kode. 393 00:18:38,290 --> 00:18:40,200 Dan aku akan menyederhanakan sebagai follows-- 394 00:18:40,200 --> 00:18:42,074 controller adalah otak dari program Anda, 395 00:18:42,074 --> 00:18:44,100 itu di mana semua logika yang menarik terjadi. 396 00:18:44,100 --> 00:18:46,110 Jadi segala sesuatu yang kita sudah menulis sejauh ini di kelas, 397 00:18:46,110 --> 00:18:48,210 adalah jenis seperti kontroler code-- itu mengendalikan 398 00:18:48,210 --> 00:18:50,585 program Anda, loop Anda, Anda kondisi, fungsi Anda 399 00:18:50,585 --> 00:18:52,100 dan variabel dan semua itu. 400 00:18:52,100 --> 00:18:56,160 >> Dilihat, sekarang, akan menjadi sedikit lebih jelas dalam dunia web. 401 00:18:56,160 --> 00:18:59,360 Lihat A adalah estetika dari website Anda. 402 00:18:59,360 --> 00:19:04,080 Itu yang pengguna sees-- gambar, tabel HTML, tag HTML, dan semua 403 00:19:04,080 --> 00:19:08,220 itu, semua estetika berbulu hal-hal yang tidak sulit untuk menulis, 404 00:19:08,220 --> 00:19:11,380 tapi hanya apa yang Anda menghasilkan, adalah apa yang disebut pandangan, estetika. 405 00:19:11,380 --> 00:19:13,880 Dan model, akhirnya, akan menjadi basis data yang stuff-- 406 00:19:13,880 --> 00:19:16,510 kita akan mulai menyelam ke dalam semua semakin Rabu ini. 407 00:19:16,510 --> 00:19:19,740 Jadi controller logika, pandangan adalah hal estetika, 408 00:19:19,740 --> 00:19:23,500 dan model akan menjadi tempat kami menyimpan data kami yang sebenarnya. 409 00:19:23,500 --> 00:19:26,410 >> Jadi mari kita lihat ini lebih konkret dengan contoh berikut. 410 00:19:26,410 --> 00:19:34,700 Aku akan pergi ke direktori saya di sini sumber hari ini code-- semua yang 411 00:19:34,700 --> 00:19:35,770 tersedia secara online. 412 00:19:35,770 --> 00:19:37,800 Dan aku akan pergi ke versi nol. 413 00:19:37,800 --> 00:19:41,500 Dan di sini is-- mari kita menyebutnya Versi nol dari situs CS50 ini. 414 00:19:41,500 --> 00:19:43,010 Tidak ada banyak di sini sama sekali. 415 00:19:43,010 --> 00:19:46,810 Ini adalah halaman web yang sangat sederhana itu mungkin menggunakan apa HTML tags-- hanya 416 00:19:46,810 --> 00:19:48,970 menebak dari contoh-contoh masa lalu? 417 00:19:48,970 --> 00:19:49,890 >> Apa itu? 418 00:19:49,890 --> 00:19:53,920 H1-- mungkin untuk itu tebal besar judul, bahwa logo di bagian atas, CS50. 419 00:19:53,920 --> 00:19:55,080 Dan apa lagi yang bermain? 420 00:19:55,080 --> 00:19:55,799 Ya? 421 00:19:55,799 --> 00:19:56,840 AUDIENCE: Daftar Unordered. 422 00:19:56,840 --> 00:19:59,990 DAVID Malan: list-- Unordered sehingga UL tag dan mungkin beberapa tag LI. 423 00:19:59,990 --> 00:20:01,840 Dan jika Anda tidak ingat ini, jujur ​​tidak masalah. 424 00:20:01,840 --> 00:20:04,170 Ini adalah semacam berbulu dari Rincian pelaksanaan HTML 425 00:20:04,170 --> 00:20:06,378 Anda cepat mencari dan Anda kembali di jalan. 426 00:20:06,378 --> 00:20:10,040 Kami akan lebih fokus pada pemrograman ide-ide yang potongan juicier. 427 00:20:10,040 --> 00:20:12,890 >> Jadi mari kita mengambil cepat melihat HTML-- dan memang 428 00:20:12,890 --> 00:20:16,880 jika saya membuka sumber pandangan di sini, yup, yang persis apa yang terjadi di sini. 429 00:20:16,880 --> 00:20:18,440 Ada 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 silabus yang sebenarnya di sini. 432 00:20:24,470 --> 00:20:27,570 >> Dan kemudian di lectures.php tampaknya 433 00:20:27,570 --> 00:20:31,640 halaman lain yang dihasilkan secara dinamis yang akan memiliki, 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 nol dan satu minggu, mari kita melihat this-- jika saya melihat sumber halaman, 436 00:20:36,600 --> 00:20:38,120 juga super sederhana. 437 00:20:38,120 --> 00:20:42,430 Ini mengarah ke dua halaman disebut week0.php, dan week1.php. 438 00:20:42,430 --> 00:20:44,040 Jadi pertimbangkan sekarang apa yang terjadi. 439 00:20:44,040 --> 00:20:50,630 >> Ketika saya klik pada week0.php, laptop saya membuat permintaan untuk week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Web server, a.k.a., CS50 IDE, menerima amplop virtual. 442 00:20:58,110 --> 00:21:01,040 Ini melihat pesan seperti, dapatkan week0.php. 443 00:21:01,040 --> 00:21:05,060 Hal ini kemudian menafsirkan file, atas ke bawah, kiri ke right-- file 444 00:21:05,060 --> 00:21:07,720 disebut week0.php-- dan menyemburkan hasil. 445 00:21:07,720 --> 00:21:10,510 Jadi dalam file ini, week0.php, harus 446 00:21:10,510 --> 00:21:15,410 logika controller yang menghasilkan HTML ini, dan kami akan segera melihat bahwa. 447 00:21:15,410 --> 00:21:19,340 >> Tapi untuk saat ini, biarkan aku klik pada minggu nol, dan sekarang kami memiliki hari Rabu dan Jumat, 448 00:21:19,340 --> 00:21:25,260 dan sekarang kami memiliki slide perlahan dari seminggu nol. 449 00:21:25,260 --> 00:21:27,400 Dan Anda mungkin ingat ini dari jalan kembali ketika. 450 00:21:27,400 --> 00:21:29,340 Jadi itu semua website ini lakukan. 451 00:21:29,340 --> 00:21:31,120 >> Jadi mari kita mempertimbangkan bagaimana hal itu melakukan hal ini. 452 00:21:31,120 --> 00:21:34,290 Aku akan kembali ke kode sumber di sini, di CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 dan aku akan membuka index.php. 454 00:21:36,660 --> 00:21:38,910 Di bagian atas file ini adalah sekelompok komentar. 455 00:21:38,910 --> 00:21:43,000 Dan kemudian di tengah-tengah file ini, itu Ternyata, ada kode PHP apapun. 456 00:21:43,000 --> 00:21:47,380 Karena jika Anda tidak memiliki salah satu braket terbuka tag tanda tanya PHP, 457 00:21:47,380 --> 00:21:49,180 Anda bebas untuk hanya menempatkan HTML. 458 00:21:49,180 --> 00:21:51,480 >> Karena apa PHP interpreter yang seharusnya dilakukan, 459 00:21:51,480 --> 00:21:53,938 adalah ketika ia membaca file-- ini atas ke bawah, kiri ke right-- 460 00:21:53,938 --> 00:21:59,100 hanya menafsirkan kode yang dilihatnya antara mereka kurung sudut mempertanyakan tanda. 461 00:21:59,100 --> 00:22:02,380 Dan hal lain yang tidak mengakui sebagai PHP, itu hanya meludah keluar. 462 00:22:02,380 --> 00:22:05,080 Dan HTML Apakah di antara barang-barang itu hanya akan meludahkan. 463 00:22:05,080 --> 00:22:09,090 >> Jadi file ini bisa memiliki disebut index.html, 464 00:22:09,090 --> 00:22:11,690 tapi aku penamaan segalanya dot PHP sebagai batu loncatan. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- sama underwhelming, itu hanya beberapa HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, sama saja beberapa HTML. 467 00:22:19,840 --> 00:22:22,300 >> Tapi sekarang mari kita menempatkan pada topi rekayasa pepatah, 468 00:22:22,300 --> 00:22:24,400 dan mempertimbangkan bagaimana kita bisa memperbaiki ini. 469 00:22:24,400 --> 00:22:28,541 Ini tidak sulit untuk melakukan hal ini, tapi aku agak dari dilimpahkan ke copy dan paste. 470 00:22:28,541 --> 00:22:31,540 Dan pada kenyataannya, jika saya melakukan seminggu dua, Anda tahu apa yang saya mungkin akan lakukan? 471 00:22:31,540 --> 00:22:34,940 Aku akan pergi ke week1.php, aku akan menyoroti semua. 472 00:22:34,940 --> 00:22:39,110 Aku akan menyalinnya, paste ke file baru yang disebut week2.php, 473 00:22:39,110 --> 00:22:42,440 tweak beberapa URL, dan berada di jalan saya. 474 00:22:42,440 --> 00:22:45,240 >> Jadi berdasarkan apa yang kita sudah terlihat di C sudah, 475 00:22:45,240 --> 00:22:46,860 ini tidak merasa benar, mudah-mudahan. 476 00:22:46,860 --> 00:22:49,610 Copy, paste jarang solusi yang tepat. 477 00:22:49,610 --> 00:22:51,429 Jadi apa yang bisa kita mulai lakukan untuk memperbaiki ini? 478 00:22:51,429 --> 00:22:53,345 Di mana peluang untuk desain yang lebih baik? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Pada saat saya sampai ke minggu delapan, itu akan 481 00:22:58,760 --> 00:23:00,910 menjadi benar-benar menjengkelkan jika saya ingin mengubah 482 00:23:00,910 --> 00:23:03,930 font setiap satu dari halaman saya, atau jika saya ingin 483 00:23:03,930 --> 00:23:06,522 untuk mengubah struktur tata letak. 484 00:23:06,522 --> 00:23:08,396 Jadi di mana kesempatan untuk desain 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 dibagi di semua file tersebut. 487 00:23:15,160 --> 00:23:21,696 >> Berikut ini satu minggu, inilah minggu nol, inilah lectures.php, 488 00:23:21,696 --> 00:23:25,790 inilah index.php-- apa sama dan apa yang berbeda, berbicara kasar, 489 00:23:25,790 --> 00:23:26,760 di masing-masing file? 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 >> AUDIENCE: [tidak terdengar] 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 pola, pasti, dimana setiap kali saya memilih kuliah saya, 496 00:23:46,115 --> 00:23:48,250 Saya harus menghasilkan sangat mirip halaman mencari. 497 00:23:48,250 --> 00:23:50,375 Dan jadi mungkin aku bisa memanfaatkan fakta yang benar-benar, 498 00:23:50,375 --> 00:23:53,060 kami sengaja numerik diindeks lectures-- kami 499 00:23:53,060 --> 00:23:55,290 jika saya dapat menempatkan lebih kata-kata dalam jawaban Anda. 500 00:23:55,290 --> 00:23:59,984 Dan apa adalah satu-satunya hal, benar-benar, yang berubah antara minggu satu-- 501 00:23:59,984 --> 00:24:02,400 dan biarkan aku gulir ke bawah sehingga kira-kira di place-- yang sama 502 00:24:02,400 --> 00:24:05,480 jadi di sini adalah minggu nol, kira-kira di atas. 503 00:24:05,480 --> 00:24:12,370 Berikut ini adalah satu minggu, minggu nol, satu minggu, minggu nol. 504 00:24:12,370 --> 00:24:14,370 OK, secara harfiah jika Anda tahu tidak ada program apapun, 505 00:24:14,370 --> 00:24:16,286 ini sekarang hanya seperti pencocokan pola permainan. 506 00:24:16,286 --> 00:24:17,200 Jadi apa yang berbeda? 507 00:24:17,200 --> 00:24:18,765 Ya? 508 00:24:18,765 --> 00:24:19,777 >> AUDIENCE: [tidak terdengar] 509 00:24:19,777 --> 00:24:22,360 DAVID Malan: Baik, jadi judul berubah, yang sedikit. 510 00:24:22,360 --> 00:24:24,010 Nol akan, tentu saja, untuk satu. 511 00:24:24,010 --> 00:24:25,570 Hal yang sama terjadi di H1 tag. 512 00:24:25,570 --> 00:24:28,790 Dan kita tidak cukup melihatnya sebagai mudah, karena URL yang sedikit panjang. 513 00:24:28,790 --> 00:24:30,670 Tapi URL mereka berubah sedikit. 514 00:24:30,670 --> 00:24:34,490 >> Tapi apa yang tidak berubah adalah, saya berani mengatakan, sebagian besar isi page-- yang 515 00:24:34,490 --> 00:24:38,530 tag HTML yang sama, kepala adalah sama, judul hampir sama, 516 00:24:38,530 --> 00:24:40,659 tubuh adalah sama, dan hampir segala sesuatu yang lain 517 00:24:40,659 --> 00:24:42,450 adalah sama kecuali untuk mereka tweak sedikit. 518 00:24:42,450 --> 00:24:45,310 Jadi bagaimana kita bisa pergi tentang anjak beberapa hal ini? 519 00:24:45,310 --> 00:24:48,740 >> Nah biar mengusulkan persis bahwa dalam versi berikutnya. 520 00:24:48,740 --> 00:24:53,890 Jadi di sini dalam versi satu, saya memiliki tepat file yang sama, ditambah beberapa orang lain. 521 00:24:53,890 --> 00:24:59,730 Berikut index.php-- dan bahkan jika Anda belum pernah melihat PHP sebelumnya, 522 00:24:59,730 --> 00:25:05,511 apa yang saya mungkin melakukan untuk memecahkan ini problem-- berdasarkan pada apa yang Anda lihat di sini? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Ya, adalah bahwa komitmen sedikit? 525 00:25:12,760 --> 00:25:13,450 Tidak? 526 00:25:13,450 --> 00:25:16,020 Ya, pergi. 527 00:25:16,020 --> 00:25:17,380 >> AUDIENCE: [tidak terdengar] 528 00:25:17,380 --> 00:25:18,380 >> DAVID Malan: Yep. 529 00:25:18,380 --> 00:25:20,380 >> AUDIENCE: [tidak terdengar] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID Malan: Aku ingin kau berbicara hanya sedikit lebih keras. 532 00:25:28,669 --> 00:25:31,084 >> AUDIENCE: [tidak terdengar] 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-- itu sulit untuk mendengar you-- tapi aku 536 00:25:38,620 --> 00:25:42,690 pikir apa yang Anda maksud adalah bahwa tag yang umum di bagian atas, 537 00:25:42,690 --> 00:25:47,710 dan tag yang umum di bawah, kini telah keluar diperhitungkan, 538 00:25:47,710 --> 00:25:51,140 atau diturunkan ke file apa? 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 mengatasi kekhawatiran Anda hanya 541 00:25:55,600 --> 00:25:59,370 mengangkat tentang nomor berubah, untuk Misalnya, jika saya mendengar Anda benar. 542 00:25:59,370 --> 00:26:02,060 >> Tapi yang tampaknya menjadi inti dari itu. 543 00:26:02,060 --> 00:26:04,820 Jika ada sejumlah besar redundansi di bagian atas halaman, 544 00:26:04,820 --> 00:26:06,736 dan sejumlah besar redundansi di bagian bawah, 545 00:26:06,736 --> 00:26:09,280 mari kita benar-benar hanya sorot dan memotong konten yang keluar, 546 00:26:09,280 --> 00:26:13,270 memasukkannya ke dalam file-- terpisah seperti ide CSS, di mana kita diperhitungkan keluar 547 00:26:13,270 --> 00:26:16,710 estetika sangat mirip, menempatkan dalam file dot PHP terpisah, 548 00:26:16,710 --> 00:26:20,340 menggunakan membutuhkan mechanism-- yang seperti C include-- tajam yang 549 00:26:20,340 --> 00:26:23,570 pada dasarnya seperti mengatakan pergi ambil isi header.php, 550 00:26:23,570 --> 00:26:25,370 dan copy dan paste mereka di sini. 551 00:26:25,370 --> 00:26:29,490 >> Tapi apa artinya ini adalah bahwa sekarang di index.php, saya memiliki dua baris. 552 00:26:29,490 --> 00:26:32,130 Dalam lectures.php, saya juga memiliki dua baris. 553 00:26:32,130 --> 00:26:35,230 Dalam week0.php, saya juga memiliki dua baris. 554 00:26:35,230 --> 00:26:38,380 >> Jadi sekarang, jika saya ingin mengubah judul semua halaman saya, 555 00:26:38,380 --> 00:26:40,530 atau saya ingin mengubah struktur dasar, 556 00:26:40,530 --> 00:26:44,380 Aku bisa mengubahnya sekarang hanya dalam satu tempat, atau dua sundulan places-- dan footer, 557 00:26:44,380 --> 00:26:45,429 masing-masing. 558 00:26:45,429 --> 00:26:47,970 Sekarang kode itu awal untuk melihat sedikit lebih samar, kan? 559 00:26:47,970 --> 00:26:53,590 Tapi jika Anda berpikir tentang apa halaman adalah doing-- jika saya meminta week0.php, 560 00:26:53,590 --> 00:26:59,880 seperti pada gambar di atas sini-saat week0.php diminta, 561 00:26:59,880 --> 00:27:00,960 apa artinya? 562 00:27:00,960 --> 00:27:04,410 >> Secara harfiah, file ini adalah diminta oleh browser. 563 00:27:04,410 --> 00:27:06,240 Web server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- meraih ini File, week0.php, dan membaca 565 00:27:09,250 --> 00:27:10,780 itu atas ke bawah, kiri ke kanan. 566 00:27:10,780 --> 00:27:15,400 Di saluran satu, segera bertemu braket terbuka tanda tanya PHP, memerlukan 567 00:27:15,400 --> 00:27:17,872 sundulan dot PHP, dan sebagainya apa interpreter PHP 568 00:27:17,872 --> 00:27:20,580 does-- yang dibangun ke web Server, karena kita telah dikonfigurasi 569 00:27:20,580 --> 00:27:24,580 untuk you-- secara otomatis masuk ke header.php, salinan isi, 570 00:27:24,580 --> 00:27:25,640 pasta mereka di sini. 571 00:27:25,640 --> 00:27:28,790 >> Tapi kemudian pertemuan juru tanda tanya bracket dekat, 572 00:27:28,790 --> 00:27:30,320 sehingga itu semua dilakukan berpikir. 573 00:27:30,320 --> 00:27:33,400 Sekarang hanya membabi buta meludah keluar jalur dua melalui tujuh, 574 00:27:33,400 --> 00:27:35,240 karena itu hanya mentah HTML. 575 00:27:35,240 --> 00:27:38,470 Sampai ke garis delapan, dan apakah itu sihir yang sama again-- membuka file, 576 00:27:38,470 --> 00:27:41,460 meraih isi, dan mengharuskan mereka atau menyisipkan mereka 577 00:27:41,460 --> 00:27:42,480 saat itu atau ada. 578 00:27:42,480 --> 00:27:44,210 >> Tapi aku hanya disinggung bug. 579 00:27:44,210 --> 00:27:48,610 Ini adalah langkah mundur parsial, karena jika kita melihat di header.php, 580 00:27:48,610 --> 00:27:50,850 Aku sudah jenis memotong sudut. 581 00:27:50,850 --> 00:27:56,250 Fitur apa yang saya menyerah dalam rangka untuk mendapatkan desain ini diperdebatkan lebih baik? 582 00:27:56,250 --> 00:27:57,305 Ya? 583 00:27:57,305 --> 00:27:58,180 AUDIENCE: [tidak terdengar] 584 00:27:58,180 --> 00:28:00,570 DAVID Malan: Yeah, aku agak dari memotong sudut trivial. 585 00:28:00,570 --> 00:28:04,489 Anda menunjukkan bahwa apa yang berubah adalah judul, nomor dalam judul, 586 00:28:04,489 --> 00:28:05,530 dan jumlah di H1. 587 00:28:05,530 --> 00:28:08,170 Jadi solusi saya adalah, OK, mari kita mengubah nama halaman, 588 00:28:08,170 --> 00:28:10,080 dan tidak berurusan dengan itu masalah apa pun. 589 00:28:10,080 --> 00:28:12,130 Jadi itu parsial langkah mundur pasti. 590 00:28:12,130 --> 00:28:14,300 >> Tapi apa yang penting di sini adalah bahwa apa yang saya lakukan 591 00:28:14,300 --> 00:28:17,200 jika tidak diperhitungkan semua hal-hal yang umum. 592 00:28:17,200 --> 00:28:21,520 Dan di footer.php, melihat saya diperhitungkan semua itu, meskipun lebih rendah, 593 00:28:21,520 --> 00:28:22,790 hal umum. 594 00:28:22,790 --> 00:28:26,070 Jadi saya perlu entah bagaimana sekarang dapat mengambil langkah maju, dan memperbaiki 595 00:28:26,070 --> 00:28:27,160 bahwa isu-isu judul. 596 00:28:27,160 --> 00:28:28,180 Jadi mari kita lakukan itu. 597 00:28:28,180 --> 00:28:35,060 >> Biarkan aku masuk ke versi kedua saya di sini, yang, sekali lagi, memiliki file 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 itu sedikit lebih verbose, tapi mari kita lihat apakah kita 600 00:28:38,950 --> 00:28:40,550 dapat menggoda selain apa yang terjadi di sini. 601 00:28:40,550 --> 00:28:45,370 Jadi bukan membutuhkan header.php, footer.php dan, 602 00:28:45,370 --> 00:28:50,180 Saya tampaknya hanya membutuhkan satu file-- disebut, tentu saja, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Dan biarkan aku menetapkan sekarang, apa dalam helpers.php 604 00:28:52,560 --> 00:28:55,330 adalah hanya sekelompok fungsi yang saya tulis, seperti sebelumnya. 605 00:28:55,330 --> 00:28:57,550 Tapi saya menyebutnya helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Sekarang tampaknya, di garis tiga dan 10, saya 607 00:29:00,370 --> 00:29:02,840 memanggil dua functions-- membuat header, membuat 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 menempatkan mereka di helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Sekarang, kita hanya melihat sintaks ini sekali, dan itu super singkat. 611 00:29:11,210 --> 00:29:15,330 Tapi ini tampaknya argumen untuk membuat header, fungsi. 612 00:29:15,330 --> 00:29:16,450 Mengapa saya tahu itu? 613 00:29:16,450 --> 00:29:18,522 Nah inilah paren dekat, inilah paren terbuka. 614 00:29:18,522 --> 00:29:21,230 Dan tentu saja, seperti di C, sesuatu di antara mereka kurung 615 00:29:21,230 --> 00:29:23,350 adalah input-- atau argumen ke fungsi. 616 00:29:23,350 --> 00:29:26,710 >> Apa jenis data argumen ini, berdasarkan apa yang saya disorot? 617 00:29:26,710 --> 00:29:30,820 Apa mereka kurung menunjukkan, berdasarkan minggu lalu? 618 00:29:30,820 --> 00:29:33,390 Ya, itu adalah array-- khusus array asosiatif. 619 00:29:33,390 --> 00:29:35,700 Dan sintaks ini diakui adalah sedikit funky, 620 00:29:35,700 --> 00:29:38,860 tapi ini hanya lewat di salah satu kunci nilai pasangan. 621 00:29:38,860 --> 00:29:43,530 Kuncinya adalah, kutipan tanda kutip judul, dan nilai CS50. 622 00:29:43,530 --> 00:29:46,220 >> Jika kita telah melakukan ini di C, itu mungkin bukan 623 00:29:46,220 --> 00:29:49,400 terlihat lebih seperti ini, hanya kutipan tanda kutip CS50-- 624 00:29:49,400 --> 00:29:52,460 atau benar-benar akan keriting kawat gigi, atau sesuatu seperti itu di C, 625 00:29:52,460 --> 00:29:55,580 di mana kuncinya adalah nol, dan nilai CS50. 626 00:29:55,580 --> 00:29:59,840 Tapi sekali lagi, di PHP, meskipun sintaks adalah, sekali lagi, sedikit aneh, 627 00:29:59,840 --> 00:30:02,860 memungkinkan Anda untuk lulus dalam kata bukan nomor 628 00:30:02,860 --> 00:30:05,120 mengasosiasikan kunci dengan nilai-nilai. 629 00:30:05,120 --> 00:30:06,390 >> Jadi apa arti dari semua ini? 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, bukan renderHeader adalah fungsi saya, 632 00:30:13,620 --> 00:30:16,220 dan aku tahu bahwa karena saya melihat fungsi kata kunci di sini. 633 00:30:16,220 --> 00:30:19,450 Ini baru dari C-- itu tampaknya membawa argumen yang disebut data-- 634 00:30:19,450 --> 00:30:22,400 tapi aku bisa menyebut ini apa-apa, tapi saya menyebutnya data, 635 00:30:22,400 --> 00:30:25,090 hanya untuk menjadi clean-- sedikit dan hanya mengambil menebak, terutama 636 00:30:25,090 --> 00:30:28,173 jika Anda telah diprogram dalam beberapa lainnya bahasa tingkat tinggi sebelumnya, sesuatu 637 00:30:28,173 --> 00:30:29,820 di atas C, konseptual. 638 00:30:29,820 --> 00:30:33,820 >> Apa braket terbuka sama braket persegi mungkin berarti? 639 00:30:33,820 --> 00:30:35,540 Atau apa yang mungkin artinya? 640 00:30:35,540 --> 00:30:39,660 Kami sudah tidak melihat ini di C. Ya? 641 00:30:39,660 --> 00:30:40,480 >> Array kosong. 642 00:30:40,480 --> 00:30:45,440 Secara khusus, ini berarti bahwa jika pengguna tidak memanggil renderHeader 643 00:30:45,440 --> 00:30:49,340 dengan argumen, aku masih akan memiliki argumen yang disebut data, 644 00:30:49,340 --> 00:30:52,327 namun nilai default adalah akan menjadi array kosong. 645 00:30:52,327 --> 00:30:53,660 Jadi itu hanya suatu kenyamanan yang baik. 646 00:30:53,660 --> 00:30:56,493 Saya tidak harus berteriak pada pengguna, atau mengatakan Anda menggunakan fungsi saya salah. 647 00:30:56,493 --> 00:30:59,849 Aku hanya bisa memberikan pengguna default nilai, jika saya tidak terlalu peduli. 648 00:30:59,849 --> 00:31:01,890 Sekarang fungsi ini, aku akan melambaikan tangan saya di. 649 00:31:01,890 --> 00:31:07,620 Tetapi fungsi ekstrak ini memungkinkan kita untuk lulus variabel tersebut dalam data 650 00:31:07,620 --> 00:31:10,360 ke header.php dengan cara berikut. 651 00:31:10,360 --> 00:31:13,100 Dan ini adalah bagian terakhir, Saya pikir, sintaks funky. 652 00:31:13,100 --> 00:31:15,860 Berikut ini adalah versi baru saya dari header.php-- itu 653 00:31:15,860 --> 00:31:20,140 digunakan untuk mengatakan, secara harfiah, terbuka braket judul CS50, dan itu saja. 654 00:31:20,140 --> 00:31:21,766 Dan hal yang sama untuk H1. 655 00:31:21,766 --> 00:31:24,310 >> Sekarang tampaknya kata sesuatu yang sangat funky. 656 00:31:24,310 --> 00:31:28,030 Dan biarkan aku menyederhanakan ini sejenak sebagai berikut. 657 00:31:28,030 --> 00:31:31,020 Ini adalah apa yang telah saya berubah judul saya menjadi. 658 00:31:31,020 --> 00:31:35,140 Namun, itu semakin sedikit jelek untuk kurung terus 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 Ternyata PHP memiliki singkatan yang notasi untuk ini, yang hanya 661 00:31:40,810 --> 00:31:45,050 tanda sama, yang secara teknis fungsi yang disebut gema bukan cetak, 662 00:31:45,050 --> 00:31:46,800 tapi itu hal yang sama, secara efektif. 663 00:31:46,800 --> 00:31:48,440 >> Yang hanya terlihat lebih baik. 664 00:31:48,440 --> 00:31:50,510 Ini hanya sintaksis gula, jika Anda mau, 665 00:31:50,510 --> 00:31:52,260 yang membuat kode saya terlihat sedikit lebih baik. 666 00:31:52,260 --> 00:31:54,010 Tapi ternyata, dan kita akan melihat ini lagi 667 00:31:54,010 --> 00:31:57,420 sebelum lama, kita harus memanggil ini mengganggu fungsi panjang yang disebut 668 00:31:57,420 --> 00:32:00,582 HTML karakter khusus di PHP, karena ternyata 669 00:32:00,582 --> 00:32:02,790 ada masukan tertentu bahwa pengguna mungkin memberi kita, 670 00:32:02,790 --> 00:32:05,160 atau yang pengguna mungkin memberi kita, yang akan merusak situs kami. 671 00:32:05,160 --> 00:32:07,035 Tapi kita akan melihat bahwa selanjutnya minggu dengan JavaScript. 672 00:32:07,035 --> 00:32:10,740 Tapi untuk saat ini, hanya tahu bahwa file ini, headers.php, hanya 673 00:32:10,740 --> 00:32:13,040 mengambil judul yang Aku berlalu dalam, itu membuat 674 00:32:13,040 --> 00:32:17,380 yakin itu aman untuk disuntikkan ke web Halaman, dan meludah keluar sebagai judul 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 versi ini sekarang, melihat bahwa kuliah memiliki judul kembali, 677 00:32:24,440 --> 00:32:28,630 Minggu nol memiliki judul kembali, dan memang, HTML Aku menghasilkan 678 00:32:28,630 --> 00:32:32,110 identik dengan versi pertama saya was-- kecuali spasi saya, 679 00:32:32,110 --> 00:32:35,150 karena saya sudah mulai memformat kode saya sedikit berbeda. 680 00:32:35,150 --> 00:32:38,082 Tapi aku sudah dihasilkan semua kode saya peduli. 681 00:32:38,082 --> 00:32:39,790 Jadi biarkan aku berhenti sejenak untuk hanya sesaat dan melihat 682 00:32:39,790 --> 00:32:42,200 jika ada pertanyaan atau kebingungan saya buat. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Baiklah, jadi mari kita memutar sedikit lebih keras di sini 685 00:32:48,150 --> 00:32:51,500 untuk melihat apakah ada sebuah kesempatan untuk perbaikan. 686 00:32:51,500 --> 00:32:56,130 Helpers.php juga punya ini fungsi, disebut renderFooter. 687 00:32:56,130 --> 00:32:59,652 Dan apa yang penting tentang renderHeader, dan renderFooter? 688 00:32:59,652 --> 00:33:02,610 Dan lagi, untuk tujuan hari ini, tahu bahwa fungsi ekstrak hanya 689 00:33:02,610 --> 00:33:08,280 cara saya argumen lewat ke 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 >> AUDIENCE: [tidak terdengar] 693 00:33:13,056 --> 00:33:15,180 DAVID Malan: Ya, saya hanya mengubah memerlukan line. 694 00:33:15,180 --> 00:33:19,410 Jadi secara harfiah, saya sudah melakukan dosa menyalin dan paste, lagi. 695 00:33:19,410 --> 00:33:21,920 Ini bukan jumlah yang besar garis, tapi datang on-- 696 00:33:21,920 --> 00:33:25,220 jika saya mengcopy paste semua hanya untuk mengubah satu kata kecil, 697 00:33:25,220 --> 00:33:28,610 dan satu kata kecil yang menunjuk Alan keluar adalah footer di sini, dibandingkan header di sini. 698 00:33:28,610 --> 00:33:30,670 Jika tidak, semuanya identik, kecuali untuk, 699 00:33:30,670 --> 00:33:32,180 tentu saja, nama-nama fungsi ini. 700 00:33:32,180 --> 00:33:33,690 Jadi apa yang bisa kita lakukan lebih baik? 701 00:33:33,690 --> 00:33:39,810 >> Nah biar membuka versi ini di sini, dimana di helpers.php, 702 00:33:39,810 --> 00:33:42,300 kenapa tidak saya hanya mendapatkan sedikit lebih pintar tentang hal ini? 703 00:33:42,300 --> 00:33:46,410 Menulis sedikit lebih rumit kode, tetapi menyebutnya membuat? 704 00:33:46,410 --> 00:33:48,470 Jadi apa yang saya fundamental berubah? 705 00:33:48,470 --> 00:33:51,770 >> Dibutuhkan argumen sekarang-- dua argumen, 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 pada apa yang Anda baca di sini? 708 00:33:55,860 --> 00:33:58,452 Bahkan jika beberapa sintaks masih baru. 709 00:33:58,452 --> 00:33:59,660 Apa dolar Template tanda? 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 >> AUDIENCE: Header atau footer. 713 00:34:03,710 --> 00:34:04,510 >> DAVID Malan: Header atau footer. 714 00:34:04,510 --> 00:34:07,134 Jadi tampaknya, saya memutuskan bahwa jika satu-satunya hal yang berubah 715 00:34:07,134 --> 00:34:10,159 adalah apa template yang saya inginkan untuk print-- dan oleh Template 716 00:34:10,159 --> 00:34:13,100 Maksud saya ini adalah cetak biru untuk kode yang saya ingin output, 717 00:34:13,100 --> 00:34:16,350 tapi saya ingin pasang di beberapa values-- jadi jika itu hanya sundulan 718 00:34:16,350 --> 00:34:20,440 atau footer, kenapa tidak saya parameterisasi itu dan menyebutnya tanda argumen dolar 719 00:34:20,440 --> 00:34:21,409 Template? 720 00:34:21,409 --> 00:34:26,250 Dan kemudian sintaks yang funky ini memungkinkan saya untuk membuat jalan dalam variabel sini. 721 00:34:26,250 --> 00:34:28,030 >> Jadi path tanda dolar adalah variabel. 722 00:34:28,030 --> 00:34:31,120 Apa sintaks ini lakukan, jika Anda terbiasa? 723 00:34:31,120 --> 00:34:32,512 Ya? 724 00:34:32,512 --> 00:34:34,065 >> AUDIENCE: [tidak terdengar] 725 00:34:34,065 --> 00:34:34,940 DAVID Malan: Tepat. 726 00:34:34,940 --> 00:34:37,600 Jika template, kutipan tanda kutip, header, atau jika template, 727 00:34:37,600 --> 00:34:41,170 kutipan tanda kutip, footer, bahwa garis ada bahwa saya telah disorot, baris delapan, 728 00:34:41,170 --> 00:34:46,330 hanya mengambil nama itu, seperti header, dan concatenating dengan dot PHP. 729 00:34:46,330 --> 00:34:49,750 Jadi kita tidak memiliki operator yang ini di C. dot operator ini 730 00:34:49,750 --> 00:34:54,520 hal yang menakjubkan di PHP-- jika Anda akrab dengan JavaScript atau Java, 731 00:34:54,520 --> 00:34:56,949 Anda dapat menggunakan ditambah menandatangani untuk melakukan Rangkaian. 732 00:34:56,949 --> 00:34:59,974 >> Dalam C, itu adalah rasa sakit di neck-- yang dan saya minta maaf, di p-set enam, 733 00:34:59,974 --> 00:35:02,390 Anda akan harus melakukan this-- itu adalah rasa sakit di leher 734 00:35:02,390 --> 00:35:03,930 untuk menggabungkan string. 735 00:35:03,930 --> 00:35:04,670 Mengapa? 736 00:35:04,670 --> 00:35:06,580 Nah, karena jika Anda punya string yang panjang ini, 737 00:35:06,580 --> 00:35:09,538 dan string lain yang selama ini, Anda tidak bisa hanya plug mereka bersama-sama. 738 00:35:09,538 --> 00:35:11,070 Apa yang Anda malah harus dilakukan di C? 739 00:35:11,070 --> 00:35:11,680 Ya? 740 00:35:11,680 --> 00:35:12,380 >> AUDIENCE: [tidak terdengar] 741 00:35:12,380 --> 00:35:15,090 >> DAVID Malan: Anda harus malloc memori, atau menggunakan sebuah array di stack. 742 00:35:15,090 --> 00:35:17,214 Dan Anda benar-benar harus membuat array cukup besar 743 00:35:17,214 --> 00:35:20,940 untuk menyesuaikan ini ditambah ini, ditambah backslash nol. 744 00:35:20,940 --> 00:35:24,994 Kemudian menyatukan mereka bersama-sama menggunakan aduk kucing atau secara manual dengan untuk loop, 745 00:35:24,994 --> 00:35:26,160 atau sejumlah teknik. 746 00:35:26,160 --> 00:35:27,760 Dan kami tunjukkan beberapa di p-set enam. 747 00:35:27,760 --> 00:35:29,080 >> Ini adalah rasa sakit di leher. 748 00:35:29,080 --> 00:35:34,190 Dan ini benar-benar apa yang saya maksud tentang ini dibandingkan this-- seperti C vs PHP. 749 00:35:34,190 --> 00:35:36,870 Anda hanya mendapatkan lebih banyak fungsi secara gratis, 750 00:35:36,870 --> 00:35:39,030 sehingga Anda dapat fokus, idealnya, pada menyenangkan 751 00:35:39,030 --> 00:35:41,190 bagian dari coding, Proyek Anda ingin memecahkan, 752 00:35:41,190 --> 00:35:43,190 daripada tingkat hal kecil yang rendah. 753 00:35:43,190 --> 00:35:49,840 >> Jadi ini hanya menghasilkan header.php atau footer.php berdasarkan mana yang saya sebut. 754 00:35:49,840 --> 00:35:52,280 Dan memang jika aku pergi ke index.php, pemberitahuan 755 00:35:52,280 --> 00:35:56,230 semua yang changed-- Daripada menelepon membuat header atau footer membuat, 756 00:35:56,230 --> 00:36:00,230 Saya menelepon membuat, diikuti oleh nama dari template yang ingin saya lakukan. 757 00:36:00,230 --> 00:36:02,370 Dan Anda akan melihat ini, juga, di masalah set tujuh, 758 00:36:02,370 --> 00:36:05,530 dimana kita memungkinkan Anda untuk menggunakan fungsi yang sama untuk membuat tandan 759 00:36:05,530 --> 00:36:07,550 dan tandan halaman web yang berbeda. 760 00:36:07,550 --> 00:36:10,570 >> Jadi, daripada tinggal terlalu lebih pada mereka details-- 761 00:36:10,570 --> 00:36:13,210 yang akan Anda lihat lagi di masalah set seven-- mari kita lihat 762 00:36:13,210 --> 00:36:16,850 pada saat awal solusi untuk masalah yang lebih menarik. 763 00:36:16,850 --> 00:36:19,310 Sejauh ini, tidak ada yang kami telah dilakukan memiliki data yang disimpan. 764 00:36:19,310 --> 00:36:22,920 Bahkan, satu-satunya waktu yang pernah kita diselamatkan sesuatu yang kita lakukan di kelas ini 765 00:36:22,920 --> 00:36:31,030 adalah ketika kami memiliki demo yang sangat sederhana sementara kembali, dimana kami menggunakan berkas IO di C, 766 00:36:31,030 --> 00:36:34,520 dan saya pikir saya mengetik dalam nama-Ku, 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 koma nilai berkas. 769 00:36:39,430 --> 00:36:43,530 >> Dan kami menggunakan fopen-- saya pikir kami menggunakan fprintf seperti yang saya ingat, 770 00:36:43,530 --> 00:36:44,910 dan kita diselamatkan file. 771 00:36:44,910 --> 00:36:46,920 Sekarang, yang paling sederhana yang bentuk database. 772 00:36:46,920 --> 00:36:50,230 Jika Anda ingin membuat website untuk Program Frosh IM, dimana mahasiswa baru 773 00:36:50,230 --> 00:36:53,390 dapat mendaftar untuk olahraga, Anda idealnya ingin melakukan sesuatu dengan data itu. 774 00:36:53,390 --> 00:36:55,370 Pekan lalu, kami tidak melakukan apa pun dengan data-- kita hanya berkata, 775 00:36:55,370 --> 00:36:56,661 Anda terdaftar, tidak benar-benar. 776 00:36:56,661 --> 00:36:58,950 Atau mungkin aku diemail pengawas, dan itu saja. 777 00:36:58,950 --> 00:37:02,110 >> Tetapi akan menyenangkan jika aku bisa memberikan pengawas bahwa file CSV, 778 00:37:02,110 --> 00:37:03,340 seperti file Excel. 779 00:37:03,340 --> 00:37:05,090 Atau lebih baik lagi, itu akan lebih baik jika aku bisa 780 00:37:05,090 --> 00:37:08,830 menempatkan nama para pengguna 'dan asrama nama dan semua itu 781 00:37:08,830 --> 00:37:11,740 ke dalam database yang hanya hidup selamanya, 782 00:37:11,740 --> 00:37:13,530 sampai aku memilih untuk menghapus data. 783 00:37:13,530 --> 00:37:15,645 Sebuah database yang memungkinkan saya untuk query informasi. 784 00:37:15,645 --> 00:37:18,070 Dan memang, itulah yang database 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 disebut SQL-- Query Terstruktur Bahasa, yang merupakan bahasa lain. 787 00:37:25,020 --> 00:37:28,750 Ini pada dasarnya pemrograman bahasa, tapi untuk database. 788 00:37:28,750 --> 00:37:31,760 Dan database untuk saat ini, hanya anggap sebagai versi super mewah 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel, atau Google Spreadsheet, atau Nomor Apple. 790 00:37:35,710 --> 00:37:39,950 Ini umumnya sebuah program yang memungkinkan Anda untuk menyimpan sejumlah besar data 791 00:37:39,950 --> 00:37:43,960 dalam baris dan kolom, cukup seperti Anda mungkin di Excel. 792 00:37:43,960 --> 00:37:47,100 >> Tapi apa yang bagus, terutama jika kami tidak super akrab dengan Excel, 793 00:37:47,100 --> 00:37:52,040 apa SQL memungkinkan Anda lakukan adalah query ini informasi dengan menulis baris kode 794 00:37:52,040 --> 00:37:55,220 di mana Anda bisa, bahkan jika Anda database memiliki juta baris di dalamnya, 795 00:37:55,220 --> 00:37:57,190 Anda dapat menemukan hal-hal super cepat. 796 00:37:57,190 --> 00:37:59,950 Bahkan, Excel sangat buruk di set data yang besar. 797 00:37:59,950 --> 00:38:02,460 Dan pada kenyataannya, sampai beberapa tahun lalu, ternyata 798 00:38:02,460 --> 00:38:08,890 Excel hanya akan memungkinkan Anda untuk menyimpan sampai dengan 65.535 baris data-- yang 799 00:38:08,890 --> 00:38:12,020 terdengar seperti banyak, tetapi pada waktu saya adalah seorang mahasiswa pascasarjana, 800 00:38:12,020 --> 00:38:14,920 dan saya ingat tersandung ini karena saya menghasilkan 801 00:38:14,920 --> 00:38:17,900 File CSV untuk penelitian saya dan saya ingin 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 Tentu saja, komputer saya hanya jatuh, karena saya memiliki lebih dari 65.000 baris. 804 00:38:23,730 --> 00:38:27,210 >> Tapi dari mana yang 65.535 berasal? 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 kekuatan Anda dari dua? 807 00:38:32,430 --> 00:38:37,160 Ya, mereka menggunakan 16-bit Nilai untuk mewakili nomor baris. 808 00:38:37,160 --> 00:38:41,310 Dan dua untuk 16 adalah 65,536-- minus satu, karena jika Anda 809 00:38:41,310 --> 00:38:45,414 Indeks nol berarti bahwa adalah paling banyak baris saya bisa memiliki. 810 00:38:45,414 --> 00:38:46,830 Dan itu hanya keputusan desain. 811 00:38:46,830 --> 00:38:52,760 Dengan menyimpan 16 bit, mereka terbatas saya untuk 16.000 baris, bukannya 4 miliar, 812 00:38:52,760 --> 00:38:54,322 yang saya bisa memiliki idealnya. 813 00:38:54,322 --> 00:38:57,030 Tapi untuk saat ini, kita akan memperkenalkan ini lebih dalam konteks web. 814 00:38:57,030 --> 00:39:00,390 Dan apa yang baik tentang SQL adalah bahwa bahkan meskipun itu cukup kuat dan cukup 815 00:39:00,390 --> 00:39:04,050 canggih, itu benar-benar mendidih ke empat operasi utama, empat 816 00:39:04,050 --> 00:39:08,060 fungsi tombol, jika Anda will-- pilih, untuk mengambil data, pencarian 817 00:39:08,060 --> 00:39:12,510 untuk data; menghapus atau menghapus data; menyisipkan untuk menambahkan baris ke database; 818 00:39:12,510 --> 00:39:13,410 dan memperbarui. 819 00:39:13,410 --> 00:39:17,010 Jadi jika Anda pernah menggunakan Google Spreadsheet, Bilangan Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, Anda telah dieksekusi, kemungkinan besar, semua 821 00:39:19,310 --> 00:39:22,530 operasi ini sebagai manusia dengan hanya menggunakan keyboard Anda dan mouse-- 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 update data, atau menghapus data. 824 00:39:28,360 --> 00:39:29,870 >> Jadi apa artinya ini? 825 00:39:29,870 --> 00:39:34,300 Nah, pra-instal di CS50 IDE adalah sebuah program yang disebut MySQL. 826 00:39:34,300 --> 00:39:37,050 Ini adalah gratis, open-source database yang super populer. 827 00:39:37,050 --> 00:39:40,590 Facebook, misalnya, menggunakannya untuk ini hari, antara alat-alat lain yang mereka gunakan. 828 00:39:40,590 --> 00:39:44,300 Dan banyak situs yang sangat populer digunakan itu sebagian besar karena itu cepat, 829 00:39:44,300 --> 00:39:45,230 dan karena gratis. 830 00:39:45,230 --> 00:39:46,820 Meskipun tentu ada alternatif. 831 00:39:46,820 --> 00:39:49,580 Dan beberapa dari Anda mungkin mencoba-coba dengan alternatif untuk proyek-proyek akhir. 832 00:39:49,580 --> 00:39:55,330 >> Ini adalah screenshot, sementara itu, dari alat berbasis web yang disebut phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Ini adalah kebetulan yang alat berbasis web ini juga 834 00:39:58,260 --> 00:40:01,720 ditulis dalam bahasa, PHP, tapi apa itu dimaksudkan untuk melakukan 835 00:40:01,720 --> 00:40:04,620 adalah memberi kita berbasis web- antarmuka ke database. 836 00:40:04,620 --> 00:40:07,180 Karena MySQL biasanya adalah sesuatu, secara historis, 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 itu akan menjadi super mengganggu dan misterius untuk memiliki 839 00:40:10,811 --> 00:40:14,487 mengetikkan perintah tekstual untuk memilih data, memasukkan data, dan menghapus data. 840 00:40:14,487 --> 00:40:16,820 Sehingga beberapa orang di internet menulis sebuah program berbasis web 841 00:40:16,820 --> 00:40:18,900 yang hanya marilah kita mengelola data dalam database kami. 842 00:40:18,900 --> 00:40:23,040 Ini seperti mengklik ganda pada Excel, dan menjalankan versi berbasis web tersebut. 843 00:40:23,040 --> 00:40:26,370 >> Dan apa yang Anda akan menggunakan ini untuk akhirnya minggu depan, tidak di p-set enam, 844 00:40:26,370 --> 00:40:28,680 tetapi untuk membangun sesuatu disebut CS50 Keuangan, yang 845 00:40:28,680 --> 00:40:32,630 akan memiliki database pengguna, dengan nama pengguna dan password, 846 00:40:32,630 --> 00:40:34,860 Dolar jumlah yang mereka miliki di rekening bank mereka. 847 00:40:34,860 --> 00:40:37,280 Ini akan menjadi sesuatu yang Anda gunakan untuk menyimpan 848 00:40:37,280 --> 00:40:39,910 simbol dan jumlah saham pengguna yang 849 00:40:39,910 --> 00:40:42,567 telah membeli menggunakan virtual dolar yang akan Anda berikan kepada mereka. 850 00:40:42,567 --> 00:40:44,900 Dan itu akan memungkinkan pengguna untuk mendaftar untuk situs Anda, 851 00:40:44,900 --> 00:40:47,190 sehingga bahkan teman dapat menyetel ke website 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 mencoba untuk menemukan kesalahan dalam kode Anda, dan mencoba untuk menemukan bug di website Anda. 854 00:40:52,807 --> 00:40:55,390 Dan mereka hanya akan mendaftar dengan menambahkan sendiri, efektif, 855 00:40:55,390 --> 00:40:58,120 melalui kode Anda menulis ke database Anda. 856 00:40:58,120 --> 00:41:02,470 >> Misalnya, ini adalah screenshot cepat apa database mungkin terlihat seperti. 857 00:41:02,470 --> 00:41:05,190 Ini adalah salah satu dari solutions-- tahun lalu 858 00:41:05,190 --> 00:41:07,760 ini seperti mini Excel mengajukan, disimpan dalam database kami, 859 00:41:07,760 --> 00:41:09,950 disimpan dalam software ini disebut MySQL. 860 00:41:09,950 --> 00:41:13,260 Di sisi kiri, saya sudah rupanya diberikan setiap pengguna nomor unik. 861 00:41:13,260 --> 00:41:16,200 Dalam kolom kedua, saya berikan semua orang pengguna name-- saya sendiri 862 00:41:16,200 --> 00:41:16,880 diantara mereka. 863 00:41:16,880 --> 00:41:21,430 Dan di sisi kanan, Saya telah memberi mereka hash. 864 00:41:21,430 --> 00:41:26,760 >> Sekarang ini sebenarnya password, tapi itu bukan password teks biasa. 865 00:41:26,760 --> 00:41:30,160 Ini adalah password terenkripsi, jika Anda akan, atau password hash. 866 00:41:30,160 --> 00:41:32,000 Yang kita akan kembali ke sebelum lama. 867 00:41:32,000 --> 00:41:34,340 >> Tetapi jika Anda pernah membaca sebuah artikel tentang bagaimana 868 00:41:34,340 --> 00:41:37,950 sandi Anda di beberapa bank atau beberapa situs mungkin telah dikompromikan, 869 00:41:37,950 --> 00:41:39,630 umumnya dapat berarti salah satu dari dua hal. 870 00:41:39,630 --> 00:41:42,780 Jadi ini hanya kutipan dari pengguna enam. 871 00:41:42,780 --> 00:41:45,460 Semua Anda sekarang dapat mencari keluar melalui hacking atau retak 872 00:41:45,460 --> 00:41:47,690 apa password enam orang kami yang. 873 00:41:47,690 --> 00:41:49,720 Tetapi jika Anda pernah mendapatkan peringatan atau permintaan maaf 874 00:41:49,720 --> 00:41:52,803 dari sebuah perusahaan atau situs web mengatakan, Maaf, hacker masuk ke database kami, 875 00:41:52,803 --> 00:41:56,360 Anda mungkin harus mengubah Anda password, apa yang mungkin artinya? 876 00:41:56,360 --> 00:41:59,670 >> Nah, salah satu, bisa berarti Perusahaan telah lebih tolol, 877 00:41:59,670 --> 00:42:03,630 dan telah menyimpan kata sandi Anda dalam kolom seperti ini, tidak terenkripsi. 878 00:42:03,630 --> 00:42:05,840 Yang berarti musuh, yang mencuri database, 879 00:42:05,840 --> 00:42:07,440 harfiah tahu Anda nama pengguna dan password. 880 00:42:07,440 --> 00:42:08,960 Itu skenario terburuk. 881 00:42:08,960 --> 00:42:11,710 Dan seperti yang Anda akan melihat di p-set tujuh, sehingga mudah untuk menghindari. 882 00:42:11,710 --> 00:42:15,624 Sama sekali tidak ada alasan untuk itu bentuk kebodohan di internet hari ini. 883 00:42:15,624 --> 00:42:18,540 Two-- dan kami akan menemukan beberapa artikel untuk bersaksi fakta bahwa ini masih 884 00:42:18,540 --> 00:42:21,710 terjadi, nonetheless-- dua, mungkin musuh 885 00:42:21,710 --> 00:42:23,840 mencuri versi database. 886 00:42:23,840 --> 00:42:27,110 Yang masih jenis yang buruk, karena sekarang mereka tahu bahwa saya memiliki enam pelanggan, 887 00:42:27,110 --> 00:42:29,270 Aku tahu nama-nama pengguna dari enam pelanggan, 888 00:42:29,270 --> 00:42:32,910 dan aku tahu terenkripsi versi, atau versi hash, 889 00:42:32,910 --> 00:42:34,340 password enam pelanggan. 890 00:42:34,340 --> 00:42:37,010 Tapi salah satu dari Anda yang mungkin telah melakukan [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 di mana Anda retak password, atau mengambil a melihat bahwa versi dari masalah 892 00:42:41,150 --> 00:42:46,280 set, mengapa masih mengkhawatirkan sedikit jika musuh tahu hash Anda 893 00:42:46,280 --> 00:42:47,435 password? 894 00:42:47,435 --> 00:42:49,732 >> AUDIENCE: Karena mereka bisa 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 password Anda adalah kamus kata, [? mereka hanya bisa match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID Malan: Tepat, musuh hanya bisa menulis kode, seperti beberapa dari Anda 898 00:42:57,640 --> 00:43:00,526 lakukan untuk [? Hacker?] 2, dimana Anda iterate atas 899 00:43:00,526 --> 00:43:03,400 semua kata-kata dalam kamus, atau semua kemungkinan kombinasi dari A 900 00:43:03,400 --> 00:43:06,610 melalui Z dan satu melalui nine-- yang terdengar seperti banyak, dan itu adalah. 901 00:43:06,610 --> 00:43:08,361 Tapi untuk komputer, itu pretty darn cepat. 902 00:43:08,361 --> 00:43:10,610 Dan pada kenyataannya, itu adalah titik [? Hacker 2,?] Adalah 903 00:43:10,610 --> 00:43:12,540 untuk mengambil hal-hal yang harfiah tampak seperti ini, 904 00:43:12,540 --> 00:43:14,900 dan balik apa sebenarnya itu. 905 00:43:14,900 --> 00:43:17,270 >> Jadi kita akan melihat bagaimana kita bisa menyimpan ini lebih efisien. 906 00:43:17,270 --> 00:43:20,210 Ternyata, untungnya di MySQL, ada akan menjadi tipe data. 907 00:43:20,210 --> 00:43:22,800 Dan salah satu bagian menyenangkan tentang desain database, jujur, 908 00:43:22,800 --> 00:43:25,810 sebenarnya memutuskan untuk diri sendiri bagaimana seharusnya Anda mewakili data? 909 00:43:25,810 --> 00:43:29,630 Jika Anda merupakan nomor telepon sebagai int, seperti nomor besar, atau panjang? 910 00:43:29,630 --> 00:43:31,630 Atau apakah Anda benar-benar melakukannya sebagai urutan karakter? 911 00:43:31,630 --> 00:43:33,780 Dan ada bisa sangat dampak non-sepele ini. 912 00:43:33,780 --> 00:43:36,714 >> Bahkan, salah satu awal, cerita erat menyenangkan 913 00:43:36,714 --> 00:43:39,880 adalah ketika Mark Zuckerberg sedang membangun Facebook, awalnya ditulis dalam, 914 00:43:39,880 --> 00:43:42,300 dan masih sebagian besar ditulis dalam PHP. 915 00:43:42,300 --> 00:43:45,400 Dan salah satu tantangan terbesar mereka menghadapi awal yang skala. 916 00:43:45,400 --> 00:43:48,820 Ketika mereka terus menambahkan sekolah setelah sekolah setelah sekolah, untuk pengetahuan saya, 917 00:43:48,820 --> 00:43:51,639 salah satu solusi asli pada dasarnya untuk copy dan paste 918 00:43:51,639 --> 00:43:53,430 beberapa database dan beberapa kode, 919 00:43:53,430 --> 00:43:55,346 sehingga Harvard adalah berjalan di server sendiri, 920 00:43:55,346 --> 00:43:56,995 dan MIT berjalan di server sendiri. 921 00:43:56,995 --> 00:43:59,120 Dan ini adalah mengapa, untuk beberapa Anda yang mungkin ingat, 922 00:43:59,120 --> 00:44:01,510 Anda tidak bisa memiliki teman di jaringan lain. 923 00:44:01,510 --> 00:44:05,050 >> Anda mungkin tidak memiliki teman-teman di MIT atau Harvard 10 atau lebih tahun yang lalu, 924 00:44:05,050 --> 00:44:07,467 tetapi Anda tidak bisa menjangkau jaringan untuk sebagian alasan itu. 925 00:44:07,467 --> 00:44:10,550 Dan salah satu tantangan terbesar bagi Mark dan untuk perusahaan seperti Facebook 926 00:44:10,550 --> 00:44:13,460 sebenarnya penanganan ratusan dan ribuan dan jutaan 927 00:44:13,460 --> 00:44:14,460 permintaan per detik. 928 00:44:14,460 --> 00:44:16,501 Jadi hal-hal yang kita akan mulai berbicara tentang minggu ini 929 00:44:16,501 --> 00:44:19,860 benar-benar akan menjadi erat dengan menulis perangkat lunak yang baik, dan populer 930 00:44:19,860 --> 00:44:23,040 alat sukses yang dapat menangani banyak pengguna. 931 00:44:23,040 --> 00:44:25,460 >> Jadi kita akan berbicara tentang hal-hal seperti pengindeksan dan pencarian, 932 00:44:25,460 --> 00:44:26,910 tapi itu saja untuk hari ini. 933 00:44:26,910 --> 00:44:28,780 Kita 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 >> [MUSIK - "Seinfeld" THEME] 936 00:44:33,902 --> 00:44:35,943 DAVID Malan: Anda bisa untuk itu, dan kurangi dari itu. 937 00:44:35,943 --> 00:44:38,859 Dan Anda tidak harus tetap dengan beberapa jumlah yang telah ditentukan dari 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 terjadi? 940 00:44:42,369 --> 00:44:43,535 SPEAKER 2: Apa maksudmu? 941 00:44:43,535 --> 00:44:44,451 Dia memberikan kuliah. 942 00:44:44,451 --> 00:44:47,650 DAVID Malan: Dan kita bisa menggunakan fungsi yang disebut malloc untuk memory-- 943 00:44:47,650 --> 00:44:50,050 >> SPEAKER 1: Mengapa tidak lengannya bergerak? 944 00:44:50,050 --> 00:44:52,450 >> SPEAKER 2: Yah that's-- Anda tahu, itu normal. 945 00:44:52,450 --> 00:44:57,162 Ini seperti dia baru saja sosis besar 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 pikir kami 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